Commit graph

59 commits

Author SHA1 Message Date
85e2fda6bc feat(05-02): ship room-local clear semantics
- register clear as the room-context reset entrypoint when supported
- keep save and context bound to room platform chat ids and clear old upstream state
2026-04-28 01:15:39 +03:00
8a80d004fd feat(05-01): reconcile matrix rooms before live sync
- rebuild room and user metadata from synced space topology at startup
- run reconciliation before sync_forever and persist legacy platform_chat_id backfills
2026-04-28 01:08:15 +03:00
e733119d1e feat: enforce agent routing and persist restart state
Task 4: stale room blocking + agent_id binding
- MatrixBot._check_agent_routing: blocks normal messages when user has no
  selected agent or room is bound to a different agent
- agent_routing_enabled flag on MatrixRuntime activates the check only
  in real multi-agent mode (RoutedPlatformClient)
- make_handle_new_chat now writes agent_id into new room metadata when
  user already has a selected agent

Task 5: durable restart state tests
- test_restart_persistence.py proves selected_agent_id, room agent_id,
  platform_chat_id, and the sequence counter all survive SQLiteStore
  close/reopen; also covers clean startup with no prior state
2026-04-24 14:01:49 +03:00
74cf028e8f feat: add !agent command and durable user agent selection
Users can now list available agents with !agent and select one by
number. Selection persists in user metadata (selected_agent_id). If the
current room has no agent binding yet, selecting an agent binds it
immediately so the user can start messaging without !new.

Also updates the dispatcher test to reflect that real-mode platform is
now RoutedPlatformClient, not a bare RealPlatformClient.
2026-04-24 13:54:25 +03:00
9ccba161a2 fix: require matrix agent registry in real mode 2026-04-24 13:24:56 +03:00
242f4aadd3 feat: add matrix routed platform facade 2026-04-24 13:22:05 +03:00
3b0401fb7c Require string agent registry fields 2026-04-24 13:11:02 +03:00
25aa5d9313 Make Matrix agent registry immutable 2026-04-24 13:08:25 +03:00
2fb6c10a5a Reject null agent registry fields 2026-04-24 13:05:26 +03:00
e801225220 Tighten Matrix agent registry validation 2026-04-24 13:02:19 +03:00
b53523ad6c Reject non-mapping agent registry entries 2026-04-24 12:57:00 +03:00
37f7ce27a2 Add Matrix agent registry loader 2026-04-24 12:54:30 +03:00
7d58dd1caf fix: use direct agent api per request 2026-04-22 15:31:28 +03:00
0c2884c2b1 refactor: use thin upstream transport adapter 2026-04-22 01:25:11 +03:00
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