Commit graph

45 commits

Author SHA1 Message Date
4524a6abc8 feat: finalize matrix platform audit and docs 2026-04-21 15:35:03 +03:00
6422c7db58 feat: support shared-workspace file flow for matrix 2026-04-21 00:26:21 +03:00
323a6d3144 feat: commit staged matrix attachments on next message 2026-04-20 21:39:37 +03:00
f111ed3348 feat: add matrix staging list and remove flow 2026-04-20 21:37:12 +03:00
83c9a1513b feat: parse matrix staged attachment commands 2026-04-20 16:26:37 +03:00
0eaf124e21 feat: add matrix staged attachment state 2026-04-20 16:21:00 +03:00
73c472ecc4 feat(matrix): implement !reset via new platform_chat_id
Instead of calling a /reset endpoint on platform-agent, !reset now
generates a new thread_id (platform_chat_id) for the room. The old
WebSocket connection is closed and the next message creates a fresh
context automatically. No platform changes required.
2026-04-19 21:20:31 +03:00
fbcf44980e fix(sdk): correct WebSocket URL pattern for platform-agent
AgentApiWrapper._build_ws_url was building /v1/agent_ws/{chat_id}/
which does not exist in platform-agent. Fixed to /agent_ws/?thread_id={chat_id}
to match the actual endpoint and query-param isolation scheme.

Also simplify Matrix MVP settings handlers to MVP_UNAVAILABLE stubs
and add handle_unknown_command for unregistered !commands.
2026-04-19 21:05:02 +03:00
07c5078934 feat(task-7): verify matrix per-room context routing 2026-04-19 17:43:18 +03:00
c11c8ecfbf feat(task-5): scope matrix context state per room 2026-04-19 17:41:04 +03:00
03160a3b37 fix: preserve invite workspace bootstrap semantics 2026-04-19 17:34:47 +03:00
8270e5821e Assign matrix platform chat ids on creation 2026-04-19 17:31:21 +03:00
0cdee532c4 fix: ensure lazy platform chat ids before load selection 2026-04-19 17:29:36 +03:00
9cb1657d21 Add lazy platform chat IDs for Matrix rooms 2026-04-19 17:25:25 +03:00
c666d908da fix: make matrix entry-room bootstrap idempotent 2026-04-19 17:23:07 +03:00
17d580096b Serialize Matrix chat sends 2026-04-19 17:18:32 +03:00
5782001d3d fix: preserve matrix room metadata when setting platform chat id 2026-04-19 16:52:43 +03:00
f3f9b10d6b feat: add platform chat id room metadata helpers 2026-04-19 16:50:12 +03:00
b52fdc4670 feat(04-02): add matrix context management commands
- add save/load/reset/context handlers and matrix interception flows
- persist current session and last token usage in prototype state
2026-04-17 16:12:03 +03:00
2720ee2d6e feat(04-02): extend prototype and matrix pending state
- add saved session and last token tracking in prototype state
- add matrix load/reset pending store helpers
2026-04-17 16:07:35 +03:00
8efc91b02b fix(matrix): accept repeat invites before provisioning 2026-04-08 02:18:11 +03:00
94bdb44b93 feat: wire matrix runtime to real backend 2026-04-08 01:40:38 +03:00
6ced154124 feat(matrix): land QA follow-ups and refresh docs
- harden Matrix onboarding/chat lifecycle after manual QA
- refresh README and Matrix docs to match current behavior
- add local ignores for runtime artifacts and include current planning/report docs

Closes #7
Closes #9
Closes #14
2026-04-05 19:08:58 +03:00
3e06a67e24 feat(01-06): remove matrix reaction-era adapter UX
- Drop reaction-based skill and confirmation helpers from Matrix conversion
- Render !settings as a strict read-only dashboard snapshot
- Align Matrix adapter regressions with command-only helper text
2026-04-03 12:33:15 +03:00
35695e043f fix(01-05): align matrix confirmation scope with user and room
- carry Matrix room_id through command callbacks
- persist pending confirmations by user_id and room_id
2026-04-03 12:26:32 +03:00
01610ef768 feat(01-03): switch Matrix confirmations to text commands
- replace reaction-based helper text with !yes/!no and !skill commands
- resolve confirm and cancel through pending confirmation state
- render !settings as a read-only status dashboard
2026-04-02 22:56:16 +03:00
8a6a33a2ce feat(01-03): remove Matrix reaction confirmation flow
- drop reaction event handling from Matrix bot
- render OutgoingUI as text with !yes/!no instructions
- persist pending confirmations when UI buttons are sent
2026-04-02 22:55:24 +03:00
b7a04b6cf1 feat(01-02): convert matrix archive and rename handlers to factories
- register archive and rename as client-aware closure handlers
- rename matrix rooms via stored surface_ref when a client is available
- keep archive scoped to core chat state for phase 1
2026-04-02 22:51:01 +03:00
c8770da345 fix(01-01): stop auto-registering unknown matrix rooms
- resolve known room chat ids from stored metadata only
- return an explicit unregistered fallback and warn in logs
2026-04-02 22:50:28 +03:00
84111ca524 feat(01-02): rewrite matrix new chat handler for spaces
- create new chat rooms inside the user's space
- store space-aware room metadata with next_chat_id
- handle room creation failures with user-facing messages
2026-04-02 22:50:26 +03:00
c2e29ccd1f feat(01-01): rewrite matrix invite flow for spaces
- create a private space and first chat room on first invite
- store space metadata and dynamic chat ids for new users
2026-04-02 22:49:59 +03:00
9123401556 feat(01-01): add matrix pending confirm store helpers
- add pending confirm prefix and storage helpers
- preserve existing matrix store behavior and tests
2026-04-02 22:49:25 +03:00
9e7787f859 fix(tg): /new replies in current context instead of sending to new topic — prevents client crash on fast topic open 2026-04-02 15:21:48 +03:00
8a00d5ac54 fix(tg): /archive tries delete_forum_topic, falls back with explanation if API rejects 2026-04-02 15:16:39 +03:00
dd5745bf51 fix(tg): archive message — add hint to delete topic via Telegram UI 2026-04-02 15:11:03 +03:00
fcf5be7efa fix(tg): remove close_forum_topic from /archive — unsupported in Threaded Mode 2026-04-02 14:21:03 +03:00
d5ab527f5d fix(tg): QA fixes — stream_message, topic_created, archive reply
- sdk/mock.py: stream_message was async def (coroutine), must be async
  generator with yield — caused TypeError on every user message
- topic_events.py: on_topic_created now skips bot-created topics
  (from_user.id == bot.id); cmd_new already registers them under the
  correct human user_id
- commands.py: cmd_archive now sends "Чат архивирован." confirmation
- test_topic_events.py: add bot=SimpleNamespace(id=BOT_ID) to fixture
2026-04-02 14:14:19 +03:00
8901e60f6a fix(tg): reviewer fixes — error handling, timeouts, db index
- commands.py: try/except TelegramBadRequest around all Bot API calls (#2);
  /new handles "topics limit" with user-friendly message (#4)
- start.py: isolate _check_and_prune_stale_topics with try/except Exception (#3)
- message.py: asyncio.timeout(30) around stream_message; handle TimeoutError (#6)
- db.py: add idx_chats_user_id index in init_db() (#7)
- settings.py: remove dead active_chat_id variable (#8)
- tests: add test_message.py (stream error/success); add 2 tests in test_commands.py
  (topics limit, /archive in General topic)
2026-04-02 13:44:59 +03:00
c95360ce1f wip: reviewer fixes in progress — pause point 2026-04-02 13:39:44 +03:00
24c61468d7 feat(tg): forum-first adapter complete — handlers, bot.py, 46 tests pass 2026-04-02 13:23:40 +03:00
82dc840544 feat(tg): db schema (user_id,thread_id) PK + converter context_key 2026-04-02 13:21:15 +03:00
5def360f8d chore: init feat/telegram-forum, cherry-pick keyboards 2026-04-02 00:50:14 +03:00
6a843e8036 fix(matrix): tune sync transport timeouts 2026-04-01 01:49:16 +03:00
14c091b5f5 feat(matrix): create real rooms for new chats 2026-04-01 01:12:56 +03:00
82eb711844 feat(matrix): add adapter baseline and platform-aware command hints 2026-04-01 01:04:54 +03:00