Commit graph

71 commits

Author SHA1 Message Date
0f79494fbe feat(deploy): finalize MVP deployment and file transfer approach 2026-05-02 23:45:52 +03:00
5b537880ae docs(deploy): finalize multi-agent surface image handoff 2026-04-28 20:11:27 +03:00
b1aaa210a1 feat(deploy): platform handoff — agent routing, persistence, docs cleanup
Agent routing:
- Remove !agent command and manual agent selection flow
- Registry auto-assigns agent from user_agents mapping (fallback: agents[0])
- provision_workspace_chat and !new both write agent_id to room_meta
- Reconciliation backfills agent_id from registry on cold start
- Fix duplicate agent_id block in auth.py

Deployment stability:
- Add bot-state named volume to persist lambda_matrix.db and matrix_store
- Fix docker-compose.prod.yml duplicate environment: key (was silently losing all Matrix credentials)
- Fix MATRIX_AGENT_REGISTRY_PATH to use absolute container path /app/config/...
- Add bot-state volume declaration to docker-compose.fullstack.yml

Docs and config:
- Rewrite README.md for platform handoff (deploy table, working commands only)
- Rewrite docs/matrix-prototype.md (remove stale commands and mock descriptions)
- Remove !save/!load/!context/!agent from help text and welcome message
- Add !clear, !list, !remove, !yes/!no to help text
- Clean up .env.example (remove Telegram token, internal vars, real URLs)
- Update config/matrix-agents.example.yaml with user_agents section and comments
- Add explanatory comment to Dockerfile for --ignore-requires-python
- Remove silent uv sync fallbacks in Dockerfile
2026-04-28 03:05:11 +03:00
ae37476ddf test(05-02): add failing regressions for clear routing
- cover room-local clear rotation and upstream disconnect behavior
- assert strict routed-platform failures on incomplete room bindings
2026-04-28 01:13:54 +03:00
a75b26a1cb test(05-01): add restart reconciliation regression coverage
- add startup reconciliation tests for recovery, idempotence, and startup ordering
- extend restart persistence coverage for legacy platform_chat_id backfill
2026-04-28 01:05:59 +03:00
cafb0ec9e4 test(05-03): add failing shared-volume attachment contract tests
- cover room-safe Matrix inbox paths under /agents workspaces
- assert /workspace and /agents file paths normalize to relative workspace paths
2026-04-28 01:04:31 +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
a65227e490 test: align matrix dispatch chat id contract 2026-04-24 13:29:49 +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
842117900a test: cover agent api base url suffix handling 2026-04-24 12:39:50 +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
569824ead1 refactor: shrink agent api wrapper to thin adapter 2026-04-22 00:22:20 +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
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
4533118b68 Fix agent API wrapper constructor compatibility 2026-04-19 17:11:49 +03:00
730ea70f78 Fix real client chat cache compatibility 2026-04-19 17:07:52 +03:00
414a8645bd Add per-chat real client routing 2026-04-19 17:03:48 +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
430c82dba1 feat(04-01): finalize AgentApi migration 2026-04-17 16:31:48 +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
37643a9695 fix prototype backend review issues 2026-04-08 01:43:44 +03:00
94bdb44b93 feat: wire matrix runtime to real backend 2026-04-08 01:40:38 +03:00
9784ca6783 feat: add real platform compatibility layer 2026-04-08 01:38:28 +03:00
fabedb105b Fix prototype state user isolation 2026-04-08 01:30:37 +03:00
19c85db89a Persist canonical prototype user state 2026-04-08 01:29:02 +03:00