macro-agent 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +3 -0
- package/.opentasks/config.json +9 -0
- package/.sudocode/issues.jsonl +28 -0
- package/.sudocode/specs.jsonl +4 -0
- package/CLAUDE.md +433 -201
- package/README.md +129 -371
- package/dist/acp/index.d.ts +9 -51
- package/dist/acp/index.d.ts.map +1 -1
- package/dist/acp/index.js +5 -46
- package/dist/acp/index.js.map +1 -1
- package/dist/acp/macro-agent.d.ts +28 -255
- package/dist/acp/macro-agent.d.ts.map +1 -1
- package/dist/acp/macro-agent.js +593 -1231
- package/dist/acp/macro-agent.js.map +1 -1
- package/dist/acp/map-bridge.d.ts +62 -0
- package/dist/acp/map-bridge.d.ts.map +1 -0
- package/dist/acp/map-bridge.js +123 -0
- package/dist/acp/map-bridge.js.map +1 -0
- package/dist/acp/session-mapper.d.ts +29 -126
- package/dist/acp/session-mapper.d.ts.map +1 -1
- package/dist/acp/session-mapper.js +36 -234
- package/dist/acp/session-mapper.js.map +1 -1
- package/dist/acp/types.d.ts +24 -535
- package/dist/acp/types.d.ts.map +1 -1
- package/dist/acp/types.js +7 -7
- package/dist/acp/types.js.map +1 -1
- package/dist/acp/websocket-server.d.ts +16 -136
- package/dist/acp/websocket-server.d.ts.map +1 -1
- package/dist/acp/websocket-server.js +131 -371
- package/dist/acp/websocket-server.js.map +1 -1
- package/dist/adapters/federation.d.ts +76 -0
- package/dist/adapters/federation.d.ts.map +1 -0
- package/dist/adapters/federation.js +120 -0
- package/dist/adapters/federation.js.map +1 -0
- package/dist/adapters/inbox-adapter.d.ts +72 -0
- package/dist/adapters/inbox-adapter.d.ts.map +1 -0
- package/dist/adapters/inbox-adapter.js +196 -0
- package/dist/adapters/inbox-adapter.js.map +1 -0
- package/dist/adapters/inbox-client-adapter.d.ts +40 -0
- package/dist/adapters/inbox-client-adapter.d.ts.map +1 -0
- package/dist/adapters/inbox-client-adapter.js +135 -0
- package/dist/adapters/inbox-client-adapter.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +10 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/opentasks-daemon.d.ts +32 -0
- package/dist/adapters/opentasks-daemon.d.ts.map +1 -0
- package/dist/adapters/opentasks-daemon.js +190 -0
- package/dist/adapters/opentasks-daemon.js.map +1 -0
- package/dist/adapters/tasks-adapter.d.ts +49 -0
- package/dist/adapters/tasks-adapter.d.ts.map +1 -0
- package/dist/adapters/tasks-adapter.js +209 -0
- package/dist/adapters/tasks-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +198 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +13 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/agent/agent-manager-v2.d.ts +38 -0
- package/dist/agent/agent-manager-v2.d.ts.map +1 -0
- package/dist/agent/agent-manager-v2.js +1097 -0
- package/dist/agent/agent-manager-v2.js.map +1 -0
- package/dist/agent/agent-manager.d.ts +52 -42
- package/dist/agent/agent-manager.d.ts.map +1 -1
- package/dist/agent/agent-manager.js +11 -1255
- package/dist/agent/agent-manager.js.map +1 -1
- package/dist/agent/agent-store.d.ts +89 -0
- package/dist/agent/agent-store.d.ts.map +1 -0
- package/dist/agent/agent-store.js +279 -0
- package/dist/agent/agent-store.js.map +1 -0
- package/dist/agent/types.d.ts +7 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/index.d.ts +5 -3
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +4 -3
- package/dist/api/index.js.map +1 -1
- package/dist/api/server.d.ts +6 -123
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +247 -1489
- package/dist/api/server.js.map +1 -1
- package/dist/api/types.d.ts +20 -248
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js +3 -1
- package/dist/api/types.js.map +1 -1
- package/dist/boot-v2.d.ts +165 -0
- package/dist/boot-v2.d.ts.map +1 -0
- package/dist/boot-v2.js +315 -0
- package/dist/boot-v2.js.map +1 -0
- package/dist/cli/acp.d.ts +6 -28
- package/dist/cli/acp.d.ts.map +1 -1
- package/dist/cli/acp.js +39 -373
- package/dist/cli/acp.js.map +1 -1
- package/dist/cli/index.d.ts +1 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +65 -449
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts +18 -8
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +231 -282
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cognitive/analyst-role.d.ts +13 -0
- package/dist/cognitive/analyst-role.d.ts.map +1 -0
- package/dist/cognitive/analyst-role.js +48 -0
- package/dist/cognitive/analyst-role.js.map +1 -0
- package/dist/cognitive/index.d.ts +18 -0
- package/dist/cognitive/index.d.ts.map +1 -0
- package/dist/cognitive/index.js +21 -0
- package/dist/cognitive/index.js.map +1 -0
- package/dist/cognitive/macro-agent-backend.d.ts +40 -0
- package/dist/cognitive/macro-agent-backend.d.ts.map +1 -0
- package/dist/cognitive/macro-agent-backend.js +290 -0
- package/dist/cognitive/macro-agent-backend.js.map +1 -0
- package/dist/cognitive/session-converter.d.ts +30 -0
- package/dist/cognitive/session-converter.d.ts.map +1 -0
- package/dist/cognitive/session-converter.js +119 -0
- package/dist/cognitive/session-converter.js.map +1 -0
- package/dist/cognitive/types.d.ts +129 -0
- package/dist/cognitive/types.d.ts.map +1 -0
- package/dist/cognitive/types.js +12 -0
- package/dist/cognitive/types.js.map +1 -0
- package/dist/cognitive/workspace-handler.d.ts +46 -0
- package/dist/cognitive/workspace-handler.d.ts.map +1 -0
- package/dist/cognitive/workspace-handler.js +135 -0
- package/dist/cognitive/workspace-handler.js.map +1 -0
- package/dist/config/project-config.d.ts +13 -2
- package/dist/config/project-config.d.ts.map +1 -1
- package/dist/config/project-config.js +12 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/control/control-client.d.ts +63 -0
- package/dist/control/control-client.d.ts.map +1 -0
- package/dist/control/control-client.js +276 -0
- package/dist/control/control-client.js.map +1 -0
- package/dist/control/control-server.d.ts +46 -0
- package/dist/control/control-server.d.ts.map +1 -0
- package/dist/control/control-server.js +237 -0
- package/dist/control/control-server.js.map +1 -0
- package/dist/control/index.d.ts +9 -0
- package/dist/control/index.d.ts.map +1 -0
- package/dist/control/index.js +8 -0
- package/dist/control/index.js.map +1 -0
- package/dist/control/types.d.ts +64 -0
- package/dist/control/types.d.ts.map +1 -0
- package/dist/control/types.js +10 -0
- package/dist/control/types.js.map +1 -0
- package/dist/index.d.ts +15 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -34
- package/dist/index.js.map +1 -1
- package/dist/integrations/context-builder.d.ts +49 -0
- package/dist/integrations/context-builder.d.ts.map +1 -0
- package/dist/integrations/context-builder.js +160 -0
- package/dist/integrations/context-builder.js.map +1 -0
- package/dist/integrations/sessionlog.d.ts +58 -0
- package/dist/integrations/sessionlog.d.ts.map +1 -0
- package/dist/integrations/sessionlog.js +152 -0
- package/dist/integrations/sessionlog.js.map +1 -0
- package/dist/integrations/skilltree.d.ts +53 -0
- package/dist/integrations/skilltree.d.ts.map +1 -0
- package/dist/integrations/skilltree.js +140 -0
- package/dist/integrations/skilltree.js.map +1 -0
- package/dist/lifecycle/cleanup.d.ts +5 -14
- package/dist/lifecycle/cleanup.d.ts.map +1 -1
- package/dist/lifecycle/cleanup.js +4 -34
- package/dist/lifecycle/cleanup.js.map +1 -1
- package/dist/lifecycle/handlers-v2.d.ts +33 -0
- package/dist/lifecycle/handlers-v2.d.ts.map +1 -0
- package/dist/lifecycle/handlers-v2.js +319 -0
- package/dist/lifecycle/handlers-v2.js.map +1 -0
- package/dist/lifecycle/index.d.ts +3 -5
- package/dist/lifecycle/index.d.ts.map +1 -1
- package/dist/lifecycle/index.js +3 -12
- package/dist/lifecycle/index.js.map +1 -1
- package/dist/lifecycle/types.d.ts +2 -0
- package/dist/lifecycle/types.d.ts.map +1 -1
- package/dist/lifecycle/types.js.map +1 -1
- package/dist/map/acp-bridge.d.ts +39 -0
- package/dist/map/acp-bridge.d.ts.map +1 -0
- package/dist/map/acp-bridge.js +180 -0
- package/dist/map/acp-bridge.js.map +1 -0
- package/dist/map/cc-swarm-hooks.d.ts +36 -0
- package/dist/map/cc-swarm-hooks.d.ts.map +1 -0
- package/dist/map/cc-swarm-hooks.js +218 -0
- package/dist/map/cc-swarm-hooks.js.map +1 -0
- package/dist/map/coordination-handler.d.ts +36 -0
- package/dist/map/coordination-handler.d.ts.map +1 -0
- package/dist/map/coordination-handler.js +166 -0
- package/dist/map/coordination-handler.js.map +1 -0
- package/dist/map/index.d.ts +5 -10
- package/dist/map/index.d.ts.map +1 -1
- package/dist/map/index.js +4 -13
- package/dist/map/index.js.map +1 -1
- package/dist/map/lifecycle-bridge.d.ts +34 -0
- package/dist/map/lifecycle-bridge.d.ts.map +1 -0
- package/dist/map/lifecycle-bridge.js +96 -0
- package/dist/map/lifecycle-bridge.js.map +1 -0
- package/dist/map/server.d.ts +38 -0
- package/dist/map/server.d.ts.map +1 -0
- package/dist/map/server.js +461 -0
- package/dist/map/server.js.map +1 -0
- package/dist/map/sidecar.d.ts +24 -0
- package/dist/map/sidecar.d.ts.map +1 -0
- package/dist/map/sidecar.js +263 -0
- package/dist/map/sidecar.js.map +1 -0
- package/dist/map/task-bridge.d.ts +22 -0
- package/dist/map/task-bridge.d.ts.map +1 -0
- package/dist/map/task-bridge.js +67 -0
- package/dist/map/task-bridge.js.map +1 -0
- package/dist/map/trajectory-reporter.d.ts +24 -0
- package/dist/map/trajectory-reporter.d.ts.map +1 -0
- package/dist/map/trajectory-reporter.js +86 -0
- package/dist/map/trajectory-reporter.js.map +1 -0
- package/dist/map/types.d.ts +162 -226
- package/dist/map/types.d.ts.map +1 -1
- package/dist/map/types.js +6 -165
- package/dist/map/types.js.map +1 -1
- package/dist/mcp/index.d.ts +2 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mcp-server-v2.d.ts +44 -0
- package/dist/mcp/mcp-server-v2.d.ts.map +1 -0
- package/dist/mcp/mcp-server-v2.js +376 -0
- package/dist/mcp/mcp-server-v2.js.map +1 -0
- package/dist/mcp/tools/done-v2.d.ts +57 -0
- package/dist/mcp/tools/done-v2.d.ts.map +1 -0
- package/dist/mcp/tools/done-v2.js +129 -0
- package/dist/mcp/tools/done-v2.js.map +1 -0
- package/dist/metrics/index.d.ts +7 -1
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +6 -1
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/metrics.d.ts +9 -70
- package/dist/metrics/metrics.d.ts.map +1 -1
- package/dist/metrics/metrics.js +89 -145
- package/dist/metrics/metrics.js.map +1 -1
- package/dist/metrics/types.d.ts +44 -0
- package/dist/metrics/types.d.ts.map +1 -0
- package/dist/metrics/types.js +7 -0
- package/dist/metrics/types.js.map +1 -0
- package/dist/roles/builtin/coordinator.d.ts.map +1 -1
- package/dist/roles/builtin/coordinator.js +2 -1
- package/dist/roles/builtin/coordinator.js.map +1 -1
- package/dist/roles/builtin/integrator.d.ts.map +1 -1
- package/dist/roles/builtin/integrator.js +2 -1
- package/dist/roles/builtin/integrator.js.map +1 -1
- package/dist/roles/builtin/worker.d.ts.map +1 -1
- package/dist/roles/builtin/worker.js +3 -1
- package/dist/roles/builtin/worker.js.map +1 -1
- package/dist/roles/capabilities.d.ts +6 -0
- package/dist/roles/capabilities.d.ts.map +1 -1
- package/dist/roles/capabilities.js +10 -0
- package/dist/roles/capabilities.js.map +1 -1
- package/dist/roles/config-loader.d.ts +1 -1
- package/dist/roles/config-loader.d.ts.map +1 -1
- package/dist/roles/config-loader.js +3 -2
- package/dist/roles/config-loader.js.map +1 -1
- package/dist/roles/types.d.ts +3 -1
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/store/index.d.ts +3 -6
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +3 -21
- package/dist/store/index.js.map +1 -1
- package/dist/store/types/agents.d.ts +5 -0
- package/dist/store/types/agents.d.ts.map +1 -1
- package/dist/store/types/events.d.ts +3 -60
- package/dist/store/types/events.d.ts.map +1 -1
- package/dist/store/types/events.js +3 -46
- package/dist/store/types/events.js.map +1 -1
- package/dist/store/types/index.d.ts +0 -3
- package/dist/store/types/index.d.ts.map +1 -1
- package/dist/store/types/index.js +0 -3
- package/dist/store/types/index.js.map +1 -1
- package/dist/teams/index.d.ts +2 -2
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.js +1 -1
- package/dist/teams/index.js.map +1 -1
- package/dist/teams/seed-defaults.d.ts +20 -0
- package/dist/teams/seed-defaults.d.ts.map +1 -0
- package/dist/teams/seed-defaults.js +71 -0
- package/dist/teams/seed-defaults.js.map +1 -0
- package/dist/teams/team-loader.d.ts +6 -2
- package/dist/teams/team-loader.d.ts.map +1 -1
- package/dist/teams/team-loader.js +154 -162
- package/dist/teams/team-loader.js.map +1 -1
- package/dist/teams/team-manager-v2.d.ts +87 -0
- package/dist/teams/team-manager-v2.d.ts.map +1 -0
- package/dist/teams/team-manager-v2.js +203 -0
- package/dist/teams/team-manager-v2.js.map +1 -0
- package/dist/teams/team-runtime-v2.d.ts +149 -0
- package/dist/teams/team-runtime-v2.d.ts.map +1 -0
- package/dist/teams/team-runtime-v2.js +741 -0
- package/dist/teams/team-runtime-v2.js.map +1 -0
- package/dist/teams/types.d.ts +41 -151
- package/dist/teams/types.d.ts.map +1 -1
- package/dist/teams/types.js +2 -3
- package/dist/teams/types.js.map +1 -1
- package/dist/trigger/index.d.ts +2 -2
- package/dist/trigger/index.d.ts.map +1 -1
- package/dist/trigger/index.js +4 -4
- package/dist/trigger/index.js.map +1 -1
- package/dist/trigger/sources/cron/cron-service.d.ts +1 -1
- package/dist/trigger/sources/cron/cron-service.d.ts.map +1 -1
- package/dist/trigger/sources/webhook/webhook-handler.d.ts +1 -1
- package/dist/trigger/sources/webhook/webhook-handler.d.ts.map +1 -1
- package/dist/trigger/strategies/ai-router.d.ts +31 -0
- package/dist/trigger/strategies/ai-router.d.ts.map +1 -0
- package/dist/trigger/strategies/ai-router.js +132 -0
- package/dist/trigger/strategies/ai-router.js.map +1 -0
- package/dist/trigger/trigger-system-v2.d.ts +106 -0
- package/dist/trigger/trigger-system-v2.d.ts.map +1 -0
- package/dist/trigger/trigger-system-v2.js +347 -0
- package/dist/trigger/trigger-system-v2.js.map +1 -0
- package/dist/trigger/types.d.ts +8 -0
- package/dist/trigger/types.d.ts.map +1 -1
- package/dist/trigger/types.js.map +1 -1
- package/dist/workspace/strategies/optimistic.d.ts +13 -3
- package/dist/workspace/strategies/optimistic.d.ts.map +1 -1
- package/dist/workspace/strategies/optimistic.js +4 -4
- package/dist/workspace/strategies/optimistic.js.map +1 -1
- package/docs/design-subsystem-extraction.md +627 -0
- package/docs/lifecycle-events-design.md +111 -0
- package/docs/openhive-capability-summary.md +415 -0
- package/docs/openhive-integration.md +415 -0
- package/docs/roadmap-v2-gaps.md +216 -0
- package/docs/teams.md +73 -0
- package/package.json +26 -6
- package/src/__tests__/boot-v2.test.ts +196 -0
- package/src/__tests__/e2e/acp-over-map-live.e2e.test.ts +496 -0
- package/src/__tests__/e2e/acp-over-map.e2e.test.ts +365 -0
- package/src/__tests__/e2e/agent-lifecycle.e2e.test.ts +770 -0
- package/src/__tests__/e2e/cc-swarm-bridge.e2e.test.ts +253 -0
- package/src/__tests__/e2e/cognitive-workspace.e2e.test.ts +282 -0
- package/src/__tests__/e2e/done-scenarios.e2e.test.ts +322 -0
- package/src/__tests__/e2e/live-agent.e2e.test.ts +1330 -0
- package/src/__tests__/e2e/map-server.e2e.test.ts +128 -0
- package/src/__tests__/e2e/map-sidecar.e2e.test.ts +139 -0
- package/src/__tests__/e2e/opentasks-integration.e2e.test.ts +280 -0
- package/src/__tests__/e2e/pull-mode.e2e.test.ts +632 -0
- package/src/__tests__/e2e/resume-continue.e2e.test.ts +312 -0
- package/src/__tests__/e2e/swarmkit-integration.e2e.test.ts +562 -0
- package/src/__tests__/e2e/swarmkit-live.e2e.test.ts +1049 -0
- package/src/__tests__/e2e/trajectory-tracking.e2e.test.ts +258 -0
- package/src/__tests__/e2e/trigger-wake.e2e.test.ts +257 -0
- package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +375 -0
- package/src/acp/__tests__/macro-agent.test.ts +234 -945
- package/src/acp/__tests__/session-mapper.test.ts +82 -155
- package/src/acp/__tests__/websocket-server.test.ts +121 -270
- package/src/acp/index.ts +18 -118
- package/src/acp/macro-agent.ts +692 -1752
- package/src/acp/map-bridge.ts +193 -0
- package/src/acp/session-mapper.ts +43 -276
- package/src/acp/types.ts +39 -767
- package/src/acp/websocket-server.ts +152 -588
- package/src/adapters/__tests__/federation.test.ts +256 -0
- package/src/adapters/__tests__/inbox-adapter.test.ts +316 -0
- package/src/adapters/__tests__/tasks-adapter.test.ts +269 -0
- package/src/adapters/federation.ts +185 -0
- package/src/adapters/inbox-adapter.ts +292 -0
- package/src/adapters/inbox-client-adapter.ts +173 -0
- package/src/adapters/index.ts +44 -0
- package/src/adapters/opentasks-daemon.ts +252 -0
- package/src/adapters/tasks-adapter.ts +327 -0
- package/src/adapters/types.ts +285 -0
- package/src/agent/__tests__/agent-manager-v2.test.ts +554 -0
- package/src/agent/__tests__/agent-store.test.ts +413 -0
- package/src/agent/agent-manager-v2.ts +1476 -0
- package/src/agent/agent-manager.ts +41 -1723
- package/src/agent/agent-store.ts +385 -0
- package/src/agent/types.ts +9 -0
- package/src/api/__tests__/server.test.ts +238 -961
- package/src/api/index.ts +5 -3
- package/src/api/server.ts +276 -1870
- package/src/api/types.ts +25 -337
- package/src/boot-v2.ts +527 -0
- package/src/cli/acp.ts +40 -435
- package/src/cli/index.ts +68 -466
- package/src/cli/mcp.ts +260 -326
- package/src/cognitive/__tests__/macro-agent-backend.test.ts +478 -0
- package/src/cognitive/__tests__/session-converter.test.ts +423 -0
- package/src/cognitive/__tests__/workspace-handler.test.ts +221 -0
- package/src/cognitive/analyst-role.ts +59 -0
- package/src/cognitive/index.ts +49 -0
- package/src/cognitive/macro-agent-backend.ts +354 -0
- package/src/cognitive/session-converter.ts +151 -0
- package/src/cognitive/types.ts +163 -0
- package/src/cognitive/workspace-handler.ts +163 -0
- package/src/config/project-config.ts +27 -3
- package/src/control/__tests__/control-resilience.test.ts +251 -0
- package/src/control/__tests__/control-socket.test.ts +240 -0
- package/src/control/control-client.ts +337 -0
- package/src/control/control-server.ts +298 -0
- package/src/control/index.ts +17 -0
- package/src/control/types.ts +95 -0
- package/src/index.ts +43 -222
- package/src/integrations/__tests__/context-builder.test.ts +218 -0
- package/src/integrations/__tests__/sessionlog.test.ts +498 -0
- package/src/integrations/__tests__/skilltree.test.ts +136 -0
- package/src/integrations/context-builder.ts +280 -0
- package/src/integrations/sessionlog.ts +194 -0
- package/src/integrations/skilltree.ts +183 -0
- package/src/lifecycle/__tests__/handlers-v2.test.ts +565 -0
- package/src/lifecycle/cleanup.ts +6 -46
- package/src/lifecycle/handlers-v2.ts +437 -0
- package/src/lifecycle/index.ts +2 -28
- package/src/lifecycle/types.ts +3 -0
- package/src/map/__tests__/lifecycle-bridge.test.ts +223 -0
- package/src/map/__tests__/permission-forwarding.test.ts +143 -0
- package/src/map/__tests__/sidecar-integration.test.ts +190 -0
- package/src/map/__tests__/task-bridge.test.ts +153 -0
- package/src/map/__tests__/trajectory-reporter.test.ts +173 -0
- package/src/map/acp-bridge.ts +270 -0
- package/src/map/cc-swarm-hooks.ts +242 -0
- package/src/map/coordination-handler.ts +220 -0
- package/src/map/index.ts +13 -14
- package/src/map/lifecycle-bridge.ts +140 -0
- package/src/map/server.ts +527 -0
- package/src/map/sidecar.ts +312 -0
- package/src/map/task-bridge.ts +89 -0
- package/src/map/trajectory-reporter.ts +124 -0
- package/src/map/types.ts +195 -367
- package/src/mcp/__tests__/mcp-server-v2.test.ts +236 -0
- package/src/mcp/index.ts +2 -2
- package/src/mcp/mcp-server-v2.ts +485 -0
- package/src/mcp/tools/done-v2.ts +203 -0
- package/src/metrics/__tests__/metrics.test.ts +205 -0
- package/src/metrics/index.ts +13 -9
- package/src/metrics/metrics.ts +110 -239
- package/src/metrics/types.ts +63 -0
- package/src/roles/builtin/coordinator.ts +2 -0
- package/src/roles/builtin/integrator.ts +2 -0
- package/src/roles/builtin/worker.ts +3 -0
- package/src/roles/capabilities.ts +11 -0
- package/src/roles/config-loader.ts +3 -2
- package/src/roles/types.ts +7 -0
- package/src/store/index.ts +3 -64
- package/src/store/types/agents.ts +5 -0
- package/src/store/types/events.ts +5 -100
- package/src/store/types/index.ts +0 -3
- package/src/teams/__tests__/team-manager-v2.test.ts +425 -0
- package/src/teams/__tests__/team-runtime-v2.test.ts +402 -0
- package/src/teams/index.ts +20 -4
- package/src/teams/seed-defaults.ts +79 -0
- package/src/teams/team-loader.ts +200 -234
- package/src/teams/team-manager-v2.ts +268 -0
- package/src/teams/team-runtime-v2.ts +898 -0
- package/src/teams/types.ts +99 -200
- package/src/trigger/__tests__/trigger-system-v2.test.ts +257 -0
- package/src/trigger/index.ts +16 -31
- package/src/trigger/sources/cron/cron-service.ts +1 -1
- package/src/trigger/sources/webhook/webhook-handler.ts +1 -1
- package/src/trigger/strategies/ai-router.ts +170 -0
- package/src/trigger/trigger-system-v2.ts +536 -0
- package/src/trigger/types.ts +13 -0
- package/src/workspace/strategies/optimistic.ts +9 -6
- package/.claude/settings.local.json +0 -61
- package/dist/acp/websocket-stream.d.ts +0 -30
- package/dist/acp/websocket-stream.d.ts.map +0 -1
- package/dist/acp/websocket-stream.js +0 -118
- package/dist/acp/websocket-stream.js.map +0 -1
- package/dist/activity/deduplication.d.ts +0 -85
- package/dist/activity/deduplication.d.ts.map +0 -1
- package/dist/activity/deduplication.js +0 -149
- package/dist/activity/deduplication.js.map +0 -1
- package/dist/activity/index.d.ts +0 -16
- package/dist/activity/index.d.ts.map +0 -1
- package/dist/activity/index.js +0 -17
- package/dist/activity/index.js.map +0 -1
- package/dist/activity/relevance.d.ts +0 -81
- package/dist/activity/relevance.d.ts.map +0 -1
- package/dist/activity/relevance.js +0 -161
- package/dist/activity/relevance.js.map +0 -1
- package/dist/activity/types.d.ts +0 -169
- package/dist/activity/types.d.ts.map +0 -1
- package/dist/activity/types.js +0 -33
- package/dist/activity/types.js.map +0 -1
- package/dist/activity/watcher.d.ts +0 -64
- package/dist/activity/watcher.d.ts.map +0 -1
- package/dist/activity/watcher.js +0 -212
- package/dist/activity/watcher.js.map +0 -1
- package/dist/agent/wake.d.ts +0 -85
- package/dist/agent/wake.d.ts.map +0 -1
- package/dist/agent/wake.js +0 -278
- package/dist/agent/wake.js.map +0 -1
- package/dist/lifecycle/handlers/generic.d.ts +0 -27
- package/dist/lifecycle/handlers/generic.d.ts.map +0 -1
- package/dist/lifecycle/handlers/generic.js +0 -56
- package/dist/lifecycle/handlers/generic.js.map +0 -1
- package/dist/lifecycle/handlers/index.d.ts +0 -47
- package/dist/lifecycle/handlers/index.d.ts.map +0 -1
- package/dist/lifecycle/handlers/index.js +0 -93
- package/dist/lifecycle/handlers/index.js.map +0 -1
- package/dist/lifecycle/handlers/integrator.d.ts +0 -81
- package/dist/lifecycle/handlers/integrator.d.ts.map +0 -1
- package/dist/lifecycle/handlers/integrator.js +0 -451
- package/dist/lifecycle/handlers/integrator.js.map +0 -1
- package/dist/lifecycle/handlers/monitor.d.ts +0 -29
- package/dist/lifecycle/handlers/monitor.d.ts.map +0 -1
- package/dist/lifecycle/handlers/monitor.js +0 -79
- package/dist/lifecycle/handlers/monitor.js.map +0 -1
- package/dist/lifecycle/handlers/worker.d.ts +0 -56
- package/dist/lifecycle/handlers/worker.d.ts.map +0 -1
- package/dist/lifecycle/handlers/worker.js +0 -381
- package/dist/lifecycle/handlers/worker.js.map +0 -1
- package/dist/mail/conversation-map.d.ts +0 -33
- package/dist/mail/conversation-map.d.ts.map +0 -1
- package/dist/mail/conversation-map.js +0 -61
- package/dist/mail/conversation-map.js.map +0 -1
- package/dist/mail/index.d.ts +0 -11
- package/dist/mail/index.d.ts.map +0 -1
- package/dist/mail/index.js +0 -11
- package/dist/mail/index.js.map +0 -1
- package/dist/mail/mail-service.d.ts +0 -85
- package/dist/mail/mail-service.d.ts.map +0 -1
- package/dist/mail/mail-service.js +0 -121
- package/dist/mail/mail-service.js.map +0 -1
- package/dist/mail/stores/eventstore-conversation-store.d.ts +0 -40
- package/dist/mail/stores/eventstore-conversation-store.d.ts.map +0 -1
- package/dist/mail/stores/eventstore-conversation-store.js +0 -131
- package/dist/mail/stores/eventstore-conversation-store.js.map +0 -1
- package/dist/mail/stores/eventstore-participant-store.d.ts +0 -43
- package/dist/mail/stores/eventstore-participant-store.d.ts.map +0 -1
- package/dist/mail/stores/eventstore-participant-store.js +0 -145
- package/dist/mail/stores/eventstore-participant-store.js.map +0 -1
- package/dist/mail/stores/eventstore-thread-store.d.ts +0 -46
- package/dist/mail/stores/eventstore-thread-store.d.ts.map +0 -1
- package/dist/mail/stores/eventstore-thread-store.js +0 -118
- package/dist/mail/stores/eventstore-thread-store.js.map +0 -1
- package/dist/mail/stores/eventstore-turn-store.d.ts +0 -47
- package/dist/mail/stores/eventstore-turn-store.d.ts.map +0 -1
- package/dist/mail/stores/eventstore-turn-store.js +0 -153
- package/dist/mail/stores/eventstore-turn-store.js.map +0 -1
- package/dist/mail/stores/index.d.ts +0 -12
- package/dist/mail/stores/index.d.ts.map +0 -1
- package/dist/mail/stores/index.js +0 -12
- package/dist/mail/stores/index.js.map +0 -1
- package/dist/mail/stores/types.d.ts +0 -146
- package/dist/mail/stores/types.d.ts.map +0 -1
- package/dist/mail/stores/types.js +0 -13
- package/dist/mail/stores/types.js.map +0 -1
- package/dist/mail/turn-recorder.d.ts +0 -30
- package/dist/mail/turn-recorder.d.ts.map +0 -1
- package/dist/mail/turn-recorder.js +0 -98
- package/dist/mail/turn-recorder.js.map +0 -1
- package/dist/map/adapter/acp-over-map.d.ts +0 -115
- package/dist/map/adapter/acp-over-map.d.ts.map +0 -1
- package/dist/map/adapter/acp-over-map.js +0 -1024
- package/dist/map/adapter/acp-over-map.js.map +0 -1
- package/dist/map/adapter/connection-manager.d.ts +0 -150
- package/dist/map/adapter/connection-manager.d.ts.map +0 -1
- package/dist/map/adapter/connection-manager.js +0 -207
- package/dist/map/adapter/connection-manager.js.map +0 -1
- package/dist/map/adapter/event-log.d.ts +0 -87
- package/dist/map/adapter/event-log.d.ts.map +0 -1
- package/dist/map/adapter/event-log.js +0 -122
- package/dist/map/adapter/event-log.js.map +0 -1
- package/dist/map/adapter/event-translator.d.ts +0 -85
- package/dist/map/adapter/event-translator.d.ts.map +0 -1
- package/dist/map/adapter/event-translator.js +0 -295
- package/dist/map/adapter/event-translator.js.map +0 -1
- package/dist/map/adapter/extensions/agent-detection.d.ts +0 -49
- package/dist/map/adapter/extensions/agent-detection.d.ts.map +0 -1
- package/dist/map/adapter/extensions/agent-detection.js +0 -91
- package/dist/map/adapter/extensions/agent-detection.js.map +0 -1
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts +0 -82
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +0 -1
- package/dist/map/adapter/extensions/agent-lifecycle.js +0 -164
- package/dist/map/adapter/extensions/agent-lifecycle.js.map +0 -1
- package/dist/map/adapter/extensions/index.d.ts +0 -89
- package/dist/map/adapter/extensions/index.d.ts.map +0 -1
- package/dist/map/adapter/extensions/index.js +0 -187
- package/dist/map/adapter/extensions/index.js.map +0 -1
- package/dist/map/adapter/extensions/mcp-bridge.d.ts +0 -57
- package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +0 -1
- package/dist/map/adapter/extensions/mcp-bridge.js +0 -745
- package/dist/map/adapter/extensions/mcp-bridge.js.map +0 -1
- package/dist/map/adapter/extensions/rename.d.ts +0 -29
- package/dist/map/adapter/extensions/rename.d.ts.map +0 -1
- package/dist/map/adapter/extensions/rename.js +0 -49
- package/dist/map/adapter/extensions/rename.js.map +0 -1
- package/dist/map/adapter/extensions/resume.d.ts +0 -47
- package/dist/map/adapter/extensions/resume.d.ts.map +0 -1
- package/dist/map/adapter/extensions/resume.js +0 -59
- package/dist/map/adapter/extensions/resume.js.map +0 -1
- package/dist/map/adapter/extensions/task.d.ts +0 -40
- package/dist/map/adapter/extensions/task.d.ts.map +0 -1
- package/dist/map/adapter/extensions/task.js +0 -197
- package/dist/map/adapter/extensions/task.js.map +0 -1
- package/dist/map/adapter/extensions/update-metadata.d.ts +0 -29
- package/dist/map/adapter/extensions/update-metadata.d.ts.map +0 -1
- package/dist/map/adapter/extensions/update-metadata.js +0 -67
- package/dist/map/adapter/extensions/update-metadata.js.map +0 -1
- package/dist/map/adapter/extensions/wake.d.ts +0 -60
- package/dist/map/adapter/extensions/wake.d.ts.map +0 -1
- package/dist/map/adapter/extensions/wake.js +0 -144
- package/dist/map/adapter/extensions/wake.js.map +0 -1
- package/dist/map/adapter/extensions/workspace-files.d.ts +0 -42
- package/dist/map/adapter/extensions/workspace-files.d.ts.map +0 -1
- package/dist/map/adapter/extensions/workspace-files.js +0 -338
- package/dist/map/adapter/extensions/workspace-files.js.map +0 -1
- package/dist/map/adapter/extensions/workspace.d.ts +0 -57
- package/dist/map/adapter/extensions/workspace.d.ts.map +0 -1
- package/dist/map/adapter/extensions/workspace.js +0 -81
- package/dist/map/adapter/extensions/workspace.js.map +0 -1
- package/dist/map/adapter/index.d.ts +0 -20
- package/dist/map/adapter/index.d.ts.map +0 -1
- package/dist/map/adapter/index.js +0 -38
- package/dist/map/adapter/index.js.map +0 -1
- package/dist/map/adapter/interface.d.ts +0 -450
- package/dist/map/adapter/interface.d.ts.map +0 -1
- package/dist/map/adapter/interface.js +0 -24
- package/dist/map/adapter/interface.js.map +0 -1
- package/dist/map/adapter/mail-handler-adapter.d.ts +0 -27
- package/dist/map/adapter/mail-handler-adapter.d.ts.map +0 -1
- package/dist/map/adapter/mail-handler-adapter.js +0 -292
- package/dist/map/adapter/mail-handler-adapter.js.map +0 -1
- package/dist/map/adapter/map-adapter.d.ts +0 -200
- package/dist/map/adapter/map-adapter.d.ts.map +0 -1
- package/dist/map/adapter/map-adapter.js +0 -1199
- package/dist/map/adapter/map-adapter.js.map +0 -1
- package/dist/map/adapter/rpc-handler.d.ts +0 -263
- package/dist/map/adapter/rpc-handler.d.ts.map +0 -1
- package/dist/map/adapter/rpc-handler.js +0 -365
- package/dist/map/adapter/rpc-handler.js.map +0 -1
- package/dist/map/adapter/subscription-manager.d.ts +0 -174
- package/dist/map/adapter/subscription-manager.d.ts.map +0 -1
- package/dist/map/adapter/subscription-manager.js +0 -248
- package/dist/map/adapter/subscription-manager.js.map +0 -1
- package/dist/map/adapter/types.d.ts +0 -194
- package/dist/map/adapter/types.d.ts.map +0 -1
- package/dist/map/adapter/types.js +0 -27
- package/dist/map/adapter/types.js.map +0 -1
- package/dist/map/adapter/websocket-integration.d.ts +0 -113
- package/dist/map/adapter/websocket-integration.d.ts.map +0 -1
- package/dist/map/adapter/websocket-integration.js +0 -134
- package/dist/map/adapter/websocket-integration.js.map +0 -1
- package/dist/map/federation/envelope.d.ts +0 -98
- package/dist/map/federation/envelope.d.ts.map +0 -1
- package/dist/map/federation/envelope.js +0 -160
- package/dist/map/federation/envelope.js.map +0 -1
- package/dist/map/federation/federation-handler.d.ts +0 -50
- package/dist/map/federation/federation-handler.d.ts.map +0 -1
- package/dist/map/federation/federation-handler.js +0 -306
- package/dist/map/federation/federation-handler.js.map +0 -1
- package/dist/map/federation/index.d.ts +0 -14
- package/dist/map/federation/index.d.ts.map +0 -1
- package/dist/map/federation/index.js +0 -13
- package/dist/map/federation/index.js.map +0 -1
- package/dist/map/federation/types.d.ts +0 -239
- package/dist/map/federation/types.d.ts.map +0 -1
- package/dist/map/federation/types.js +0 -23
- package/dist/map/federation/types.js.map +0 -1
- package/dist/map/utils/address-translation.d.ts +0 -99
- package/dist/map/utils/address-translation.d.ts.map +0 -1
- package/dist/map/utils/address-translation.js +0 -285
- package/dist/map/utils/address-translation.js.map +0 -1
- package/dist/map/utils/index.d.ts +0 -7
- package/dist/map/utils/index.d.ts.map +0 -1
- package/dist/map/utils/index.js +0 -7
- package/dist/map/utils/index.js.map +0 -1
- package/dist/mcp/map-client.d.ts +0 -39
- package/dist/mcp/map-client.d.ts.map +0 -1
- package/dist/mcp/map-client.js +0 -129
- package/dist/mcp/map-client.js.map +0 -1
- package/dist/mcp/mcp-server.d.ts +0 -70
- package/dist/mcp/mcp-server.d.ts.map +0 -1
- package/dist/mcp/mcp-server.js +0 -1015
- package/dist/mcp/mcp-server.js.map +0 -1
- package/dist/mcp/tools/claim_task.d.ts +0 -35
- package/dist/mcp/tools/claim_task.d.ts.map +0 -1
- package/dist/mcp/tools/claim_task.js +0 -58
- package/dist/mcp/tools/claim_task.js.map +0 -1
- package/dist/mcp/tools/done.d.ts +0 -102
- package/dist/mcp/tools/done.d.ts.map +0 -1
- package/dist/mcp/tools/done.js +0 -234
- package/dist/mcp/tools/done.js.map +0 -1
- package/dist/mcp/tools/inject_context.d.ts +0 -61
- package/dist/mcp/tools/inject_context.d.ts.map +0 -1
- package/dist/mcp/tools/inject_context.js +0 -123
- package/dist/mcp/tools/inject_context.js.map +0 -1
- package/dist/mcp/tools/list_claimable_tasks.d.ts +0 -38
- package/dist/mcp/tools/list_claimable_tasks.d.ts.map +0 -1
- package/dist/mcp/tools/list_claimable_tasks.js +0 -63
- package/dist/mcp/tools/list_claimable_tasks.js.map +0 -1
- package/dist/mcp/tools/unclaim_task.d.ts +0 -31
- package/dist/mcp/tools/unclaim_task.d.ts.map +0 -1
- package/dist/mcp/tools/unclaim_task.js +0 -47
- package/dist/mcp/tools/unclaim_task.js.map +0 -1
- package/dist/mcp/tools/wait_for_activity.d.ts +0 -60
- package/dist/mcp/tools/wait_for_activity.d.ts.map +0 -1
- package/dist/mcp/tools/wait_for_activity.js +0 -135
- package/dist/mcp/tools/wait_for_activity.js.map +0 -1
- package/dist/monitor/health-check-service.d.ts +0 -143
- package/dist/monitor/health-check-service.d.ts.map +0 -1
- package/dist/monitor/health-check-service.js +0 -240
- package/dist/monitor/health-check-service.js.map +0 -1
- package/dist/monitor/index.d.ts +0 -14
- package/dist/monitor/index.d.ts.map +0 -1
- package/dist/monitor/index.js +0 -14
- package/dist/monitor/index.js.map +0 -1
- package/dist/monitor/stall-detector.d.ts +0 -109
- package/dist/monitor/stall-detector.d.ts.map +0 -1
- package/dist/monitor/stall-detector.js +0 -152
- package/dist/monitor/stall-detector.js.map +0 -1
- package/dist/peer/capability-manager.d.ts +0 -56
- package/dist/peer/capability-manager.d.ts.map +0 -1
- package/dist/peer/capability-manager.js +0 -186
- package/dist/peer/capability-manager.js.map +0 -1
- package/dist/peer/encapsulation-manager.d.ts +0 -190
- package/dist/peer/encapsulation-manager.d.ts.map +0 -1
- package/dist/peer/encapsulation-manager.js +0 -486
- package/dist/peer/encapsulation-manager.js.map +0 -1
- package/dist/peer/federation-manager.d.ts +0 -223
- package/dist/peer/federation-manager.d.ts.map +0 -1
- package/dist/peer/federation-manager.js +0 -528
- package/dist/peer/federation-manager.js.map +0 -1
- package/dist/peer/hierarchy-errors.d.ts +0 -208
- package/dist/peer/hierarchy-errors.d.ts.map +0 -1
- package/dist/peer/hierarchy-errors.js +0 -268
- package/dist/peer/hierarchy-errors.js.map +0 -1
- package/dist/peer/hierarchy-protocol.d.ts +0 -159
- package/dist/peer/hierarchy-protocol.d.ts.map +0 -1
- package/dist/peer/hierarchy-protocol.js +0 -142
- package/dist/peer/hierarchy-protocol.js.map +0 -1
- package/dist/peer/index.d.ts +0 -15
- package/dist/peer/index.d.ts.map +0 -1
- package/dist/peer/index.js +0 -15
- package/dist/peer/index.js.map +0 -1
- package/dist/peer/peer-manager.d.ts +0 -99
- package/dist/peer/peer-manager.d.ts.map +0 -1
- package/dist/peer/peer-manager.js +0 -333
- package/dist/peer/peer-manager.js.map +0 -1
- package/dist/peer/task-delegation.d.ts +0 -189
- package/dist/peer/task-delegation.d.ts.map +0 -1
- package/dist/peer/task-delegation.js +0 -303
- package/dist/peer/task-delegation.js.map +0 -1
- package/dist/peer/transports/index.d.ts +0 -8
- package/dist/peer/transports/index.d.ts.map +0 -1
- package/dist/peer/transports/index.js +0 -8
- package/dist/peer/transports/index.js.map +0 -1
- package/dist/peer/transports/local-transport.d.ts +0 -56
- package/dist/peer/transports/local-transport.d.ts.map +0 -1
- package/dist/peer/transports/local-transport.js +0 -263
- package/dist/peer/transports/local-transport.js.map +0 -1
- package/dist/peer/transports/websocket-transport.d.ts +0 -86
- package/dist/peer/transports/websocket-transport.d.ts.map +0 -1
- package/dist/peer/transports/websocket-transport.js +0 -338
- package/dist/peer/transports/websocket-transport.js.map +0 -1
- package/dist/peer/types.d.ts +0 -268
- package/dist/peer/types.d.ts.map +0 -1
- package/dist/peer/types.js +0 -36
- package/dist/peer/types.js.map +0 -1
- package/dist/router/address-resolver.d.ts +0 -102
- package/dist/router/address-resolver.d.ts.map +0 -1
- package/dist/router/address-resolver.js +0 -198
- package/dist/router/address-resolver.js.map +0 -1
- package/dist/router/broadcast.d.ts +0 -53
- package/dist/router/broadcast.d.ts.map +0 -1
- package/dist/router/broadcast.js +0 -75
- package/dist/router/broadcast.js.map +0 -1
- package/dist/router/channels.d.ts +0 -148
- package/dist/router/channels.d.ts.map +0 -1
- package/dist/router/channels.js +0 -126
- package/dist/router/channels.js.map +0 -1
- package/dist/router/index.d.ts +0 -21
- package/dist/router/index.d.ts.map +0 -1
- package/dist/router/index.js +0 -18
- package/dist/router/index.js.map +0 -1
- package/dist/router/message-router.d.ts +0 -197
- package/dist/router/message-router.d.ts.map +0 -1
- package/dist/router/message-router.js +0 -903
- package/dist/router/message-router.js.map +0 -1
- package/dist/router/message-types.d.ts +0 -183
- package/dist/router/message-types.d.ts.map +0 -1
- package/dist/router/message-types.js +0 -79
- package/dist/router/message-types.js.map +0 -1
- package/dist/router/role-resolver.d.ts +0 -67
- package/dist/router/role-resolver.d.ts.map +0 -1
- package/dist/router/role-resolver.js +0 -106
- package/dist/router/role-resolver.js.map +0 -1
- package/dist/router/signals.d.ts +0 -253
- package/dist/router/signals.d.ts.map +0 -1
- package/dist/router/signals.js +0 -53
- package/dist/router/signals.js.map +0 -1
- package/dist/router/types.d.ts +0 -191
- package/dist/router/types.d.ts.map +0 -1
- package/dist/router/types.js +0 -34
- package/dist/router/types.js.map +0 -1
- package/dist/router/wake.d.ts +0 -111
- package/dist/router/wake.d.ts.map +0 -1
- package/dist/router/wake.js +0 -180
- package/dist/router/wake.js.map +0 -1
- package/dist/server/combined-server.d.ts +0 -88
- package/dist/server/combined-server.d.ts.map +0 -1
- package/dist/server/combined-server.js +0 -331
- package/dist/server/combined-server.js.map +0 -1
- package/dist/steering/index.d.ts +0 -11
- package/dist/steering/index.d.ts.map +0 -1
- package/dist/steering/index.js +0 -11
- package/dist/steering/index.js.map +0 -1
- package/dist/steering/inject.d.ts +0 -39
- package/dist/steering/inject.d.ts.map +0 -1
- package/dist/steering/inject.js +0 -197
- package/dist/steering/inject.js.map +0 -1
- package/dist/steering/types.d.ts +0 -100
- package/dist/steering/types.d.ts.map +0 -1
- package/dist/steering/types.js +0 -11
- package/dist/steering/types.js.map +0 -1
- package/dist/store/backends/index.d.ts +0 -11
- package/dist/store/backends/index.d.ts.map +0 -1
- package/dist/store/backends/index.js +0 -15
- package/dist/store/backends/index.js.map +0 -1
- package/dist/store/backends/json-backend.d.ts +0 -23
- package/dist/store/backends/json-backend.d.ts.map +0 -1
- package/dist/store/backends/json-backend.js +0 -220
- package/dist/store/backends/json-backend.js.map +0 -1
- package/dist/store/backends/memory-backend.d.ts +0 -12
- package/dist/store/backends/memory-backend.d.ts.map +0 -1
- package/dist/store/backends/memory-backend.js +0 -205
- package/dist/store/backends/memory-backend.js.map +0 -1
- package/dist/store/backends/sqlite-backend.d.ts +0 -27
- package/dist/store/backends/sqlite-backend.d.ts.map +0 -1
- package/dist/store/backends/sqlite-backend.js +0 -231
- package/dist/store/backends/sqlite-backend.js.map +0 -1
- package/dist/store/backends/tinybase-backend.d.ts +0 -22
- package/dist/store/backends/tinybase-backend.d.ts.map +0 -1
- package/dist/store/backends/tinybase-backend.js +0 -203
- package/dist/store/backends/tinybase-backend.js.map +0 -1
- package/dist/store/backends/types.d.ts +0 -175
- package/dist/store/backends/types.d.ts.map +0 -1
- package/dist/store/backends/types.js +0 -28
- package/dist/store/backends/types.js.map +0 -1
- package/dist/store/event-store.d.ts +0 -128
- package/dist/store/event-store.d.ts.map +0 -1
- package/dist/store/event-store.js +0 -1739
- package/dist/store/event-store.js.map +0 -1
- package/dist/store/instance.d.ts +0 -283
- package/dist/store/instance.d.ts.map +0 -1
- package/dist/store/instance.js +0 -363
- package/dist/store/instance.js.map +0 -1
- package/dist/store/migrations.d.ts +0 -41
- package/dist/store/migrations.d.ts.map +0 -1
- package/dist/store/migrations.js +0 -79
- package/dist/store/migrations.js.map +0 -1
- package/dist/store/types/config.d.ts +0 -16
- package/dist/store/types/config.d.ts.map +0 -1
- package/dist/store/types/config.js +0 -8
- package/dist/store/types/config.js.map +0 -1
- package/dist/store/types/conversations.d.ts +0 -91
- package/dist/store/types/conversations.d.ts.map +0 -1
- package/dist/store/types/conversations.js +0 -8
- package/dist/store/types/conversations.js.map +0 -1
- package/dist/store/types/sessions.d.ts +0 -44
- package/dist/store/types/sessions.d.ts.map +0 -1
- package/dist/store/types/sessions.js +0 -9
- package/dist/store/types/sessions.js.map +0 -1
- package/dist/task/backend/index.d.ts +0 -93
- package/dist/task/backend/index.d.ts.map +0 -1
- package/dist/task/backend/index.js +0 -178
- package/dist/task/backend/index.js.map +0 -1
- package/dist/task/backend/memory.d.ts +0 -70
- package/dist/task/backend/memory.d.ts.map +0 -1
- package/dist/task/backend/memory.js +0 -621
- package/dist/task/backend/memory.js.map +0 -1
- package/dist/task/backend/opentasks/backend.d.ts +0 -140
- package/dist/task/backend/opentasks/backend.d.ts.map +0 -1
- package/dist/task/backend/opentasks/backend.js +0 -1023
- package/dist/task/backend/opentasks/backend.js.map +0 -1
- package/dist/task/backend/opentasks/client.d.ts +0 -337
- package/dist/task/backend/opentasks/client.d.ts.map +0 -1
- package/dist/task/backend/opentasks/client.js +0 -225
- package/dist/task/backend/opentasks/client.js.map +0 -1
- package/dist/task/backend/opentasks/daemon-manager.d.ts +0 -89
- package/dist/task/backend/opentasks/daemon-manager.d.ts.map +0 -1
- package/dist/task/backend/opentasks/daemon-manager.js +0 -195
- package/dist/task/backend/opentasks/daemon-manager.js.map +0 -1
- package/dist/task/backend/opentasks/index.d.ts +0 -21
- package/dist/task/backend/opentasks/index.d.ts.map +0 -1
- package/dist/task/backend/opentasks/index.js +0 -21
- package/dist/task/backend/opentasks/index.js.map +0 -1
- package/dist/task/backend/opentasks/mapping.d.ts +0 -48
- package/dist/task/backend/opentasks/mapping.d.ts.map +0 -1
- package/dist/task/backend/opentasks/mapping.js +0 -77
- package/dist/task/backend/opentasks/mapping.js.map +0 -1
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts +0 -54
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts.map +0 -1
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.js +0 -88
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.js.map +0 -1
- package/dist/task/backend/sudocode/backend.d.ts +0 -155
- package/dist/task/backend/sudocode/backend.d.ts.map +0 -1
- package/dist/task/backend/sudocode/backend.js +0 -942
- package/dist/task/backend/sudocode/backend.js.map +0 -1
- package/dist/task/backend/sudocode/client.d.ts +0 -303
- package/dist/task/backend/sudocode/client.d.ts.map +0 -1
- package/dist/task/backend/sudocode/client.js +0 -101
- package/dist/task/backend/sudocode/client.js.map +0 -1
- package/dist/task/backend/sudocode/index.d.ts +0 -19
- package/dist/task/backend/sudocode/index.d.ts.map +0 -1
- package/dist/task/backend/sudocode/index.js +0 -17
- package/dist/task/backend/sudocode/index.js.map +0 -1
- package/dist/task/backend/sudocode/mapping.d.ts +0 -51
- package/dist/task/backend/sudocode/mapping.d.ts.map +0 -1
- package/dist/task/backend/sudocode/mapping.js +0 -86
- package/dist/task/backend/sudocode/mapping.js.map +0 -1
- package/dist/task/backend/sudocode/server-client.d.ts +0 -56
- package/dist/task/backend/sudocode/server-client.d.ts.map +0 -1
- package/dist/task/backend/sudocode/server-client.js +0 -367
- package/dist/task/backend/sudocode/server-client.js.map +0 -1
- package/dist/task/backend/sudocode/standalone-client.d.ts +0 -91
- package/dist/task/backend/sudocode/standalone-client.d.ts.map +0 -1
- package/dist/task/backend/sudocode/standalone-client.js +0 -476
- package/dist/task/backend/sudocode/standalone-client.js.map +0 -1
- package/dist/task/backend/sudocode/sync-policy.d.ts +0 -166
- package/dist/task/backend/sudocode/sync-policy.d.ts.map +0 -1
- package/dist/task/backend/sudocode/sync-policy.js +0 -221
- package/dist/task/backend/sudocode/sync-policy.js.map +0 -1
- package/dist/task/backend/sudocode/tools.d.ts +0 -87
- package/dist/task/backend/sudocode/tools.d.ts.map +0 -1
- package/dist/task/backend/sudocode/tools.js +0 -743
- package/dist/task/backend/sudocode/tools.js.map +0 -1
- package/dist/task/backend/tool-provider.d.ts +0 -56
- package/dist/task/backend/tool-provider.d.ts.map +0 -1
- package/dist/task/backend/tool-provider.js +0 -424
- package/dist/task/backend/tool-provider.js.map +0 -1
- package/dist/task/backend/types.d.ts +0 -297
- package/dist/task/backend/types.d.ts.map +0 -1
- package/dist/task/backend/types.js +0 -27
- package/dist/task/backend/types.js.map +0 -1
- package/dist/task/backend/unified-tool-provider.d.ts +0 -57
- package/dist/task/backend/unified-tool-provider.d.ts.map +0 -1
- package/dist/task/backend/unified-tool-provider.js +0 -623
- package/dist/task/backend/unified-tool-provider.js.map +0 -1
- package/dist/task/index.d.ts +0 -7
- package/dist/task/index.d.ts.map +0 -1
- package/dist/task/index.js +0 -7
- package/dist/task/index.js.map +0 -1
- package/dist/task/retry-policy.d.ts +0 -89
- package/dist/task/retry-policy.d.ts.map +0 -1
- package/dist/task/retry-policy.js +0 -160
- package/dist/task/retry-policy.js.map +0 -1
- package/dist/task/task-manager.d.ts +0 -70
- package/dist/task/task-manager.d.ts.map +0 -1
- package/dist/task/task-manager.js +0 -319
- package/dist/task/task-manager.js.map +0 -1
- package/dist/task/types.d.ts +0 -72
- package/dist/task/types.d.ts.map +0 -1
- package/dist/task/types.js +0 -33
- package/dist/task/types.js.map +0 -1
- package/dist/teams/team-runtime.d.ts +0 -139
- package/dist/teams/team-runtime.d.ts.map +0 -1
- package/dist/teams/team-runtime.js +0 -615
- package/dist/teams/team-runtime.js.map +0 -1
- package/dist/trigger/router/index.d.ts +0 -11
- package/dist/trigger/router/index.d.ts.map +0 -1
- package/dist/trigger/router/index.js +0 -10
- package/dist/trigger/router/index.js.map +0 -1
- package/dist/trigger/router/strategies/ai-router-strategy.d.ts +0 -34
- package/dist/trigger/router/strategies/ai-router-strategy.d.ts.map +0 -1
- package/dist/trigger/router/strategies/ai-router-strategy.js +0 -359
- package/dist/trigger/router/strategies/ai-router-strategy.js.map +0 -1
- package/dist/trigger/router/strategies/direct-strategy.d.ts +0 -32
- package/dist/trigger/router/strategies/direct-strategy.d.ts.map +0 -1
- package/dist/trigger/router/strategies/direct-strategy.js +0 -119
- package/dist/trigger/router/strategies/direct-strategy.js.map +0 -1
- package/dist/trigger/router/strategies/index.d.ts +0 -11
- package/dist/trigger/router/strategies/index.d.ts.map +0 -1
- package/dist/trigger/router/strategies/index.js +0 -11
- package/dist/trigger/router/strategies/index.js.map +0 -1
- package/dist/trigger/router/strategies/role-strategy.d.ts +0 -39
- package/dist/trigger/router/strategies/role-strategy.d.ts.map +0 -1
- package/dist/trigger/router/strategies/role-strategy.js +0 -207
- package/dist/trigger/router/strategies/role-strategy.js.map +0 -1
- package/dist/trigger/router/trigger-router.d.ts +0 -54
- package/dist/trigger/router/trigger-router.d.ts.map +0 -1
- package/dist/trigger/router/trigger-router.js +0 -362
- package/dist/trigger/router/trigger-router.js.map +0 -1
- package/dist/trigger/router/types.d.ts +0 -225
- package/dist/trigger/router/types.d.ts.map +0 -1
- package/dist/trigger/router/types.js +0 -10
- package/dist/trigger/router/types.js.map +0 -1
- package/dist/trigger/trigger-system.d.ts +0 -77
- package/dist/trigger/trigger-system.d.ts.map +0 -1
- package/dist/trigger/trigger-system.js +0 -84
- package/dist/trigger/trigger-system.js.map +0 -1
- package/references/acp-factory-ref/CHANGELOG.md +0 -33
- package/references/acp-factory-ref/LICENSE +0 -21
- package/references/acp-factory-ref/README.md +0 -341
- package/references/acp-factory-ref/package-lock.json +0 -3102
- package/references/acp-factory-ref/package.json +0 -96
- package/references/acp-factory-ref/python/CHANGELOG.md +0 -33
- package/references/acp-factory-ref/python/LICENSE +0 -21
- package/references/acp-factory-ref/python/Makefile +0 -57
- package/references/acp-factory-ref/python/README.md +0 -253
- package/references/acp-factory-ref/python/pyproject.toml +0 -73
- package/references/acp-factory-ref/python/tests/e2e/__init__.py +0 -1
- package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +0 -349
- package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +0 -165
- package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +0 -296
- package/references/acp-factory-ref/python/tests/test_client_handler.py +0 -543
- package/references/acp-factory-ref/python/tests/test_pushable.py +0 -199
- package/references/claude-code-acp/.github/workflows/ci.yml +0 -45
- package/references/claude-code-acp/.github/workflows/publish.yml +0 -34
- package/references/claude-code-acp/.prettierrc.json +0 -4
- package/references/claude-code-acp/CHANGELOG.md +0 -249
- package/references/claude-code-acp/LICENSE +0 -222
- package/references/claude-code-acp/README.md +0 -53
- package/references/claude-code-acp/docs/RELEASES.md +0 -24
- package/references/claude-code-acp/eslint.config.js +0 -48
- package/references/claude-code-acp/package-lock.json +0 -4570
- package/references/claude-code-acp/package.json +0 -88
- package/references/claude-code-acp/scripts/release.sh +0 -119
- package/references/claude-code-acp/src/acp-agent.ts +0 -2076
- package/references/claude-code-acp/src/index.ts +0 -26
- package/references/claude-code-acp/src/lib.ts +0 -38
- package/references/claude-code-acp/src/mcp-server.ts +0 -911
- package/references/claude-code-acp/src/settings.ts +0 -522
- package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +0 -5
- package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +0 -6
- package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +0 -479
- package/references/claude-code-acp/src/tests/acp-agent.test.ts +0 -1502
- package/references/claude-code-acp/src/tests/extract-lines.test.ts +0 -103
- package/references/claude-code-acp/src/tests/fork-session.test.ts +0 -335
- package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +0 -334
- package/references/claude-code-acp/src/tests/settings.test.ts +0 -617
- package/references/claude-code-acp/src/tests/skills-options.test.ts +0 -187
- package/references/claude-code-acp/src/tests/tools.test.ts +0 -318
- package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +0 -558
- package/references/claude-code-acp/src/tools.ts +0 -819
- package/references/claude-code-acp/src/utils.ts +0 -171
- package/references/claude-code-acp/tsconfig.json +0 -18
- package/references/claude-code-acp/vitest.config.ts +0 -19
- package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -111
- package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -13
- package/references/multi-agent-protocol/LICENSE +0 -21
- package/references/multi-agent-protocol/README.md +0 -113
- package/references/multi-agent-protocol/docs/00-design-specification.md +0 -496
- package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
- package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
- package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
- package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
- package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
- package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
- package/references/multi-agent-protocol/docs/07-federation.md +0 -259
- package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
- package/references/multi-agent-protocol/docs/09-authentication.md +0 -680
- package/references/multi-agent-protocol/docs/10-mail-protocol.md +0 -553
- package/references/multi-agent-protocol/docs/agent-iam-integration.md +0 -877
- package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +0 -459
- package/references/multi-agent-protocol/docs/git-transport-draft.md +0 -251
- package/references/multi-agent-protocol/docs-site/Gemfile +0 -22
- package/references/multi-agent-protocol/docs-site/README.md +0 -82
- package/references/multi-agent-protocol/docs-site/_config.yml +0 -91
- package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +0 -20
- package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +0 -42
- package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +0 -34
- package/references/multi-agent-protocol/docs-site/examples/full-integration.md +0 -510
- package/references/multi-agent-protocol/docs-site/examples/index.md +0 -138
- package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +0 -282
- package/references/multi-agent-protocol/docs-site/examples/task-queue.md +0 -399
- package/references/multi-agent-protocol/docs-site/getting-started/index.md +0 -98
- package/references/multi-agent-protocol/docs-site/getting-started/installation.md +0 -219
- package/references/multi-agent-protocol/docs-site/getting-started/overview.md +0 -172
- package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +0 -237
- package/references/multi-agent-protocol/docs-site/index.md +0 -136
- package/references/multi-agent-protocol/docs-site/protocol/authentication.md +0 -391
- package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +0 -376
- package/references/multi-agent-protocol/docs-site/protocol/design.md +0 -284
- package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +0 -312
- package/references/multi-agent-protocol/docs-site/protocol/federation.md +0 -449
- package/references/multi-agent-protocol/docs-site/protocol/index.md +0 -129
- package/references/multi-agent-protocol/docs-site/protocol/permissions.md +0 -398
- package/references/multi-agent-protocol/docs-site/protocol/streaming.md +0 -353
- package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +0 -369
- package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +0 -357
- package/references/multi-agent-protocol/docs-site/sdk/api/client.md +0 -380
- package/references/multi-agent-protocol/docs-site/sdk/api/index.md +0 -62
- package/references/multi-agent-protocol/docs-site/sdk/api/server.md +0 -453
- package/references/multi-agent-protocol/docs-site/sdk/api/types.md +0 -468
- package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +0 -375
- package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +0 -405
- package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +0 -352
- package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +0 -89
- package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +0 -360
- package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +0 -446
- package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +0 -363
- package/references/multi-agent-protocol/docs-site/sdk/index.md +0 -206
- package/references/multi-agent-protocol/package-lock.json +0 -3886
- package/references/multi-agent-protocol/package.json +0 -56
- package/references/multi-agent-protocol/schema/meta.json +0 -467
- package/references/multi-agent-protocol/schema/schema.json +0 -2558
- package/src/__tests__/e2e/agent-spawn-visibility.e2e.test.ts +0 -761
- package/src/__tests__/e2e/cascade-termination.e2e.test.ts +0 -588
- package/src/__tests__/e2e/conflict-resolution-flow.e2e.test.ts +0 -790
- package/src/__tests__/e2e/full-agent-conflict-resolution.e2e.test.ts +0 -714
- package/src/__tests__/e2e/full-agent-orchestration.e2e.test.ts +0 -536
- package/src/__tests__/e2e/mcp-server-debug.e2e.test.ts +0 -372
- package/src/__tests__/e2e/mcp-thin-client-bridge.e2e.test.ts +0 -304
- package/src/__tests__/e2e/mcp-tools-available.e2e.test.ts +0 -324
- package/src/__tests__/e2e/multi-agent.e2e.test.ts +0 -1527
- package/src/__tests__/e2e/multi-coordinator.e2e.test.ts +0 -602
- package/src/__tests__/e2e/orchestration-flow.e2e.test.ts +0 -686
- package/src/__tests__/e2e/spawn-session-streaming.e2e.test.ts +0 -563
- package/src/__tests__/e2e/steering-task.e2e.test.ts +0 -840
- package/src/__tests__/integration.e2e.test.ts +0 -407
- package/src/acp/__tests__/combined-websocket-server.test.ts +0 -260
- package/src/acp/__tests__/history.test.ts +0 -530
- package/src/acp/__tests__/integration.test.ts +0 -1049
- package/src/acp/__tests__/multi-client-mounting.test.ts +0 -303
- package/src/acp/__tests__/session-persistence.test.ts +0 -276
- package/src/acp/__tests__/websocket-full.e2e.test.ts +0 -401
- package/src/acp/__tests__/websocket-integration.test.ts +0 -484
- package/src/acp/__tests__/websocket-stream.test.ts +0 -281
- package/src/acp/__tests__/websocket.e2e.test.ts +0 -390
- package/src/acp/websocket-stream.ts +0 -140
- package/src/activity/__tests__/deduplication.test.ts +0 -345
- package/src/activity/__tests__/relevance.test.ts +0 -347
- package/src/activity/__tests__/watcher.test.ts +0 -344
- package/src/activity/deduplication.ts +0 -219
- package/src/activity/index.ts +0 -51
- package/src/activity/relevance.ts +0 -258
- package/src/activity/types.ts +0 -263
- package/src/activity/watcher.ts +0 -345
- package/src/agent/__tests__/agent-manager.test.ts +0 -1382
- package/src/agent/__tests__/wake.test.ts +0 -768
- package/src/agent/wake.ts +0 -357
- package/src/api/__tests__/conversation-api.test.ts +0 -468
- package/src/cli/__tests__/acp.test.ts +0 -214
- package/src/lifecycle/__tests__/cascade-termination.test.ts +0 -919
- package/src/lifecycle/__tests__/cascade.test.ts +0 -595
- package/src/lifecycle/__tests__/cleanup.test.ts +0 -322
- package/src/lifecycle/__tests__/handlers.test.ts +0 -1826
- package/src/lifecycle/__tests__/lifecycle.e2e.test.ts +0 -354
- package/src/lifecycle/__tests__/merge-queue.e2e.test.ts +0 -602
- package/src/lifecycle/handlers/generic.ts +0 -87
- package/src/lifecycle/handlers/index.ts +0 -166
- package/src/lifecycle/handlers/integrator.ts +0 -672
- package/src/lifecycle/handlers/monitor.ts +0 -114
- package/src/lifecycle/handlers/worker.ts +0 -506
- package/src/mail/__tests__/conversation-lifecycle.test.ts +0 -409
- package/src/mail/__tests__/eventstore-stores.test.ts +0 -1073
- package/src/mail/__tests__/mail-full-agent.e2e.test.ts +0 -575
- package/src/mail/__tests__/mail-integration.test.ts +0 -759
- package/src/mail/__tests__/mail-map-protocol.e2e.test.ts +0 -1068
- package/src/mail/__tests__/mail-service.test.ts +0 -506
- package/src/mail/__tests__/turn-recorder.test.ts +0 -328
- package/src/mail/conversation-map.ts +0 -107
- package/src/mail/index.ts +0 -25
- package/src/mail/mail-service.ts +0 -257
- package/src/mail/stores/eventstore-conversation-store.ts +0 -146
- package/src/mail/stores/eventstore-participant-store.ts +0 -172
- package/src/mail/stores/eventstore-thread-store.ts +0 -129
- package/src/mail/stores/eventstore-turn-store.ts +0 -173
- package/src/mail/stores/index.ts +0 -12
- package/src/mail/stores/types.ts +0 -160
- package/src/mail/turn-recorder.ts +0 -124
- package/src/map/README.md +0 -79
- package/src/map/__tests__/adapter-types.test.ts +0 -326
- package/src/map/__tests__/interface-types.test.ts +0 -342
- package/src/map/__tests__/types.test.ts +0 -411
- package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +0 -820
- package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +0 -355
- package/src/map/adapter/__tests__/acp-over-map-history.test.ts +0 -1386
- package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +0 -440
- package/src/map/adapter/__tests__/connection-manager.test.ts +0 -344
- package/src/map/adapter/__tests__/event-broadcast.test.ts +0 -420
- package/src/map/adapter/__tests__/event-log.test.ts +0 -527
- package/src/map/adapter/__tests__/event-translator.test.ts +0 -550
- package/src/map/adapter/__tests__/extensions.test.ts +0 -1387
- package/src/map/adapter/__tests__/map-adapter.test.ts +0 -926
- package/src/map/adapter/__tests__/mcp-bridge.test.ts +0 -1187
- package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +0 -711
- package/src/map/adapter/__tests__/rpc-handler.test.ts +0 -644
- package/src/map/adapter/__tests__/subscription-manager.test.ts +0 -536
- package/src/map/adapter/__tests__/websocket-integration.test.ts +0 -487
- package/src/map/adapter/__tests__/workspace-files.test.ts +0 -673
- package/src/map/adapter/acp-over-map.ts +0 -1483
- package/src/map/adapter/connection-manager.ts +0 -400
- package/src/map/adapter/event-log.ts +0 -208
- package/src/map/adapter/event-translator.ts +0 -415
- package/src/map/adapter/extensions/agent-detection.ts +0 -201
- package/src/map/adapter/extensions/agent-lifecycle.ts +0 -267
- package/src/map/adapter/extensions/index.ts +0 -280
- package/src/map/adapter/extensions/mcp-bridge.ts +0 -995
- package/src/map/adapter/extensions/resume.ts +0 -114
- package/src/map/adapter/extensions/task.ts +0 -326
- package/src/map/adapter/extensions/update-metadata.ts +0 -126
- package/src/map/adapter/extensions/wake.ts +0 -239
- package/src/map/adapter/extensions/workspace-files.ts +0 -449
- package/src/map/adapter/extensions/workspace.ts +0 -176
- package/src/map/adapter/index.ts +0 -158
- package/src/map/adapter/interface.ts +0 -581
- package/src/map/adapter/mail-handler-adapter.ts +0 -429
- package/src/map/adapter/map-adapter.ts +0 -1749
- package/src/map/adapter/rpc-handler.ts +0 -604
- package/src/map/adapter/subscription-manager.ts +0 -474
- package/src/map/adapter/types.ts +0 -259
- package/src/map/adapter/websocket-integration.ts +0 -229
- package/src/map/federation/__tests__/envelope.test.ts +0 -362
- package/src/map/federation/__tests__/federation-handler.test.ts +0 -461
- package/src/map/federation/envelope.ts +0 -243
- package/src/map/federation/federation-handler.ts +0 -442
- package/src/map/federation/index.ts +0 -65
- package/src/map/federation/types.ts +0 -344
- package/src/mcp/__tests__/map-client.test.ts +0 -386
- package/src/mcp/__tests__/mcp-server-thin-client.test.ts +0 -368
- package/src/mcp/__tests__/mcp-server.test.ts +0 -1002
- package/src/mcp/map-client.ts +0 -177
- package/src/mcp/mcp-server.ts +0 -1395
- package/src/mcp/tools/__tests__/done.test.ts +0 -484
- package/src/mcp/tools/claim_task.ts +0 -86
- package/src/mcp/tools/done.ts +0 -338
- package/src/mcp/tools/inject_context.ts +0 -173
- package/src/mcp/tools/list_claimable_tasks.ts +0 -93
- package/src/mcp/tools/unclaim_task.ts +0 -71
- package/src/mcp/tools/wait_for_activity.ts +0 -185
- package/src/monitor/__tests__/health-check-service.test.ts +0 -425
- package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +0 -393
- package/src/monitor/__tests__/stall-detector.test.ts +0 -395
- package/src/monitor/health-check-service.ts +0 -359
- package/src/monitor/index.ts +0 -28
- package/src/monitor/stall-detector.ts +0 -238
- package/src/peer/__tests__/capability-manager.test.ts +0 -454
- package/src/peer/__tests__/encapsulation-manager.test.ts +0 -787
- package/src/peer/__tests__/federation-manager.test.ts +0 -828
- package/src/peer/__tests__/hierarchy-errors.test.ts +0 -307
- package/src/peer/__tests__/peer-manager.test.ts +0 -535
- package/src/peer/__tests__/task-delegation.test.ts +0 -741
- package/src/peer/capability-manager.ts +0 -289
- package/src/peer/encapsulation-manager.ts +0 -831
- package/src/peer/federation-manager.ts +0 -897
- package/src/peer/hierarchy-errors.ts +0 -382
- package/src/peer/hierarchy-protocol.ts +0 -328
- package/src/peer/index.ts +0 -15
- package/src/peer/peer-manager.ts +0 -540
- package/src/peer/task-delegation.ts +0 -594
- package/src/peer/transports/__tests__/local-transport.test.ts +0 -355
- package/src/peer/transports/__tests__/websocket-transport.test.ts +0 -270
- package/src/peer/transports/index.ts +0 -18
- package/src/peer/transports/local-transport.ts +0 -348
- package/src/peer/transports/websocket-transport.ts +0 -452
- package/src/peer/types.ts +0 -331
- package/src/roles/__tests__/capability-enforcement.test.ts +0 -989
- package/src/roles/__tests__/message-routing.e2e.test.ts +0 -464
- package/src/roles/__tests__/role-resolution.test.ts +0 -576
- package/src/router/README.md +0 -120
- package/src/router/__tests__/address-resolver.test.ts +0 -340
- package/src/router/__tests__/broadcast.test.ts +0 -185
- package/src/router/__tests__/message-router.test.ts +0 -1070
- package/src/router/__tests__/role-channel.test.ts +0 -213
- package/src/router/__tests__/send-to-address.test.ts +0 -731
- package/src/router/__tests__/wake.test.ts +0 -459
- package/src/router/address-resolver.ts +0 -303
- package/src/router/broadcast.ts +0 -117
- package/src/router/channels.ts +0 -283
- package/src/router/index.ts +0 -148
- package/src/router/message-router.ts +0 -1392
- package/src/router/message-types.ts +0 -294
- package/src/router/role-resolver.ts +0 -164
- package/src/router/signals.ts +0 -335
- package/src/router/types.ts +0 -306
- package/src/router/wake.ts +0 -270
- package/src/server/__tests__/combined-server.test.ts +0 -360
- package/src/server/combined-server.ts +0 -530
- package/src/steering/__tests__/inject.test.ts +0 -405
- package/src/steering/__tests__/injection.e2e.test.ts +0 -932
- package/src/steering/__tests__/steering-integration.test.ts +0 -747
- package/src/steering/index.ts +0 -25
- package/src/steering/inject.ts +0 -262
- package/src/steering/types.ts +0 -143
- package/src/store/README.md +0 -134
- package/src/store/__tests__/event-store.test.ts +0 -1446
- package/src/store/__tests__/instance.test.ts +0 -556
- package/src/store/__tests__/migrations.test.ts +0 -109
- package/src/store/backends/__tests__/memory-backend.test.ts +0 -383
- package/src/store/backends/__tests__/sqlite-backend.test.ts +0 -427
- package/src/store/backends/index.ts +0 -42
- package/src/store/backends/json-backend.ts +0 -295
- package/src/store/backends/memory-backend.ts +0 -256
- package/src/store/backends/sqlite-backend.ts +0 -337
- package/src/store/backends/tinybase-backend.ts +0 -276
- package/src/store/backends/types.ts +0 -252
- package/src/store/event-store.ts +0 -2204
- package/src/store/instance.ts +0 -681
- package/src/store/migrations.ts +0 -96
- package/src/store/types/config.ts +0 -19
- package/src/store/types/conversations.ts +0 -129
- package/src/store/types/sessions.ts +0 -53
- package/src/task/__tests__/retry-policy.test.ts +0 -409
- package/src/task/__tests__/task-integration.test.ts +0 -457
- package/src/task/__tests__/task-manager.test.ts +0 -815
- package/src/task/backend/__tests__/create-task-backend.test.ts +0 -225
- package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +0 -524
- package/src/task/backend/__tests__/memory.test.ts +0 -1274
- package/src/task/backend/__tests__/unified-tool-provider.test.ts +0 -579
- package/src/task/backend/index.ts +0 -310
- package/src/task/backend/memory.ts +0 -828
- package/src/task/backend/opentasks/__tests__/backend.test.ts +0 -968
- package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +0 -406
- package/src/task/backend/opentasks/__tests__/mapping.test.ts +0 -84
- package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +0 -1338
- package/src/task/backend/opentasks/backend.ts +0 -1323
- package/src/task/backend/opentasks/client.ts +0 -652
- package/src/task/backend/opentasks/daemon-manager.ts +0 -253
- package/src/task/backend/opentasks/index.ts +0 -69
- package/src/task/backend/opentasks/mapping.ts +0 -94
- package/src/task/backend/types.ts +0 -458
- package/src/task/backend/unified-tool-provider.ts +0 -779
- package/src/task/index.ts +0 -7
- package/src/task/retry-policy.ts +0 -204
- package/src/task/task-manager.ts +0 -515
- package/src/task/types.ts +0 -136
- package/src/teams/__tests__/cross-subsystem.integration.test.ts +0 -983
- package/src/teams/__tests__/e2e/team-runtime.e2e.test.ts +0 -553
- package/src/teams/__tests__/team-system.test.ts +0 -1280
- package/src/teams/team-runtime.ts +0 -729
- package/src/trigger/CLAUDE.md +0 -308
- package/src/trigger/README.md +0 -429
- package/src/trigger/__tests__/macro-agent-regression.test.ts +0 -946
- package/src/trigger/__tests__/routing-strategies.test.ts +0 -329
- package/src/trigger/__tests__/trigger-router.test.ts +0 -433
- package/src/trigger/__tests__/trigger-system-integration.test.ts +0 -581
- package/src/trigger/router/index.ts +0 -36
- package/src/trigger/router/strategies/ai-router-strategy.ts +0 -481
- package/src/trigger/router/strategies/direct-strategy.ts +0 -162
- package/src/trigger/router/strategies/index.ts +0 -26
- package/src/trigger/router/strategies/role-strategy.ts +0 -274
- package/src/trigger/router/trigger-router.ts +0 -463
- package/src/trigger/router/types.ts +0 -273
- package/src/trigger/trigger-system.ts +0 -206
- package/src/workspace/__tests__/multi-coordinator.test.ts +0 -1005
- package/src/workspace/__tests__/workspace-manager.test.ts +0 -391
- package/src/workspace/__tests__/workspace.e2e.test.ts +0 -1155
- package/src/workspace/merge-queue/__tests__/hierarchical-consolidation.e2e.test.ts +0 -414
- package/test_fixtures/harness/__tests__/behavior-executor-and-stepper.test.ts +0 -714
- package/test_fixtures/harness/__tests__/fixtures.test.ts +0 -347
- package/test_fixtures/harness/__tests__/merge-queue-and-worktrees.test.ts +0 -452
- package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -422
- package/test_fixtures/harness/__tests__/test-harness-and-assertions.test.ts +0 -568
- /package/{references/acp-factory-ref/python/tests/__init__.py → .opentasks/graph.jsonl} +0 -0
|
@@ -1,840 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Steering and Task Integration E2E Tests
|
|
3
|
-
*
|
|
4
|
-
* Tests for in-flight steering (broadcast, context injection) and task backend
|
|
5
|
-
* integration using REAL Claude Code agents.
|
|
6
|
-
*
|
|
7
|
-
* REQUIRES: RUN_FULL_AGENT_TESTS=true environment variable
|
|
8
|
-
*
|
|
9
|
-
* Run with:
|
|
10
|
-
* RUN_FULL_AGENT_TESTS=true npm run test:e2e -- src/__tests__/e2e/steering-task.e2e.test.ts
|
|
11
|
-
*
|
|
12
|
-
* @see s-1zcx Multi-Agent Orchestration Testing Strategy
|
|
13
|
-
* @see i-9cwb Phase 2f: Steering and Task Integration E2E Tests
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
17
|
-
import * as fs from "fs";
|
|
18
|
-
import * as path from "path";
|
|
19
|
-
import * as os from "os";
|
|
20
|
-
import { execSync } from "child_process";
|
|
21
|
-
|
|
22
|
-
import { createEventStore, type EventStore } from "../../store/event-store.js";
|
|
23
|
-
import {
|
|
24
|
-
createAgentManager,
|
|
25
|
-
type AgentManager,
|
|
26
|
-
} from "../../agent/agent-manager.js";
|
|
27
|
-
import {
|
|
28
|
-
createMessageRouter,
|
|
29
|
-
type MessageRouter,
|
|
30
|
-
} from "../../router/message-router.js";
|
|
31
|
-
import { InMemoryTaskBackend } from "../../task/backend/memory.js";
|
|
32
|
-
import type { TaskBackend } from "../../task/backend/types.js";
|
|
33
|
-
|
|
34
|
-
// ─────────────────────────────────────────────────────────────────
|
|
35
|
-
// Test Configuration
|
|
36
|
-
// ─────────────────────────────────────────────────────────────────
|
|
37
|
-
|
|
38
|
-
const RUN_FULL_AGENT = !!process.env.RUN_FULL_AGENT_TESTS;
|
|
39
|
-
const testFn = RUN_FULL_AGENT ? it : it.skip;
|
|
40
|
-
|
|
41
|
-
const log = (msg: string) => console.log(`[SteeringTask-E2E] ${msg}`);
|
|
42
|
-
|
|
43
|
-
// Timeouts for different operations
|
|
44
|
-
const TIMEOUT = {
|
|
45
|
-
SPAWN: 60000,
|
|
46
|
-
PROMPT: 120000,
|
|
47
|
-
INJECTION: 90000,
|
|
48
|
-
TASK_LIFECYCLE: 180000,
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Create an isolated test git repo
|
|
53
|
-
*/
|
|
54
|
-
function createTestRepo(prefix: string): {
|
|
55
|
-
path: string;
|
|
56
|
-
cleanup: () => void;
|
|
57
|
-
createWorktree: (branch: string) => string;
|
|
58
|
-
} {
|
|
59
|
-
const tmpDir = fs.mkdtempSync(
|
|
60
|
-
path.join(os.tmpdir(), `steering-task-e2e-${prefix}-`)
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
// Create the main repo
|
|
64
|
-
const repoPath = path.join(tmpDir, "main-repo");
|
|
65
|
-
fs.mkdirSync(repoPath);
|
|
66
|
-
execSync("git init", { cwd: repoPath, stdio: "pipe" });
|
|
67
|
-
execSync('git config user.email "test@test.com"', {
|
|
68
|
-
cwd: repoPath,
|
|
69
|
-
stdio: "pipe",
|
|
70
|
-
});
|
|
71
|
-
execSync('git config user.name "Test User"', {
|
|
72
|
-
cwd: repoPath,
|
|
73
|
-
stdio: "pipe",
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
// Create initial files
|
|
77
|
-
fs.mkdirSync(path.join(repoPath, "src"));
|
|
78
|
-
fs.writeFileSync(
|
|
79
|
-
path.join(repoPath, "src/index.ts"),
|
|
80
|
-
"export const version = '1.0.0';\n"
|
|
81
|
-
);
|
|
82
|
-
fs.writeFileSync(path.join(repoPath, "README.md"), "# Steering Task E2E Test\n");
|
|
83
|
-
execSync("git add -A", { cwd: repoPath, stdio: "pipe" });
|
|
84
|
-
execSync('git commit -m "Initial commit"', { cwd: repoPath, stdio: "pipe" });
|
|
85
|
-
|
|
86
|
-
// Create worktrees directory
|
|
87
|
-
const worktreesDir = path.join(tmpDir, "worktrees");
|
|
88
|
-
fs.mkdirSync(worktreesDir);
|
|
89
|
-
|
|
90
|
-
const createWorktree = (branch: string) => {
|
|
91
|
-
const worktreePath = path.join(worktreesDir, branch.replace(/\//g, "-"));
|
|
92
|
-
try {
|
|
93
|
-
execSync(`git worktree add ${worktreePath} -b ${branch} HEAD`, {
|
|
94
|
-
cwd: repoPath,
|
|
95
|
-
stdio: "pipe",
|
|
96
|
-
});
|
|
97
|
-
} catch {
|
|
98
|
-
// Branch might already exist
|
|
99
|
-
execSync(`git worktree add ${worktreePath} ${branch}`, {
|
|
100
|
-
cwd: repoPath,
|
|
101
|
-
stdio: "pipe",
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
// Configure git user in worktree
|
|
105
|
-
execSync('git config user.email "test@test.com"', {
|
|
106
|
-
cwd: worktreePath,
|
|
107
|
-
stdio: "pipe",
|
|
108
|
-
});
|
|
109
|
-
execSync('git config user.name "Test User"', {
|
|
110
|
-
cwd: worktreePath,
|
|
111
|
-
stdio: "pipe",
|
|
112
|
-
});
|
|
113
|
-
return worktreePath;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
return {
|
|
117
|
-
path: repoPath,
|
|
118
|
-
cleanup: () => fs.rmSync(tmpDir, { recursive: true, force: true }),
|
|
119
|
-
createWorktree,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Wait for agent to reach a specific state
|
|
125
|
-
*/
|
|
126
|
-
async function waitForAgentState(
|
|
127
|
-
agentManager: AgentManager,
|
|
128
|
-
agentId: string,
|
|
129
|
-
targetState: "running" | "stopped",
|
|
130
|
-
timeoutMs = 30000
|
|
131
|
-
): Promise<void> {
|
|
132
|
-
const startTime = Date.now();
|
|
133
|
-
while (Date.now() - startTime < timeoutMs) {
|
|
134
|
-
const agent = agentManager.get(agentId);
|
|
135
|
-
if (agent?.state === targetState) {
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
139
|
-
}
|
|
140
|
-
throw new Error(
|
|
141
|
-
`Timeout waiting for agent ${agentId} to reach state ${targetState}`
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Collect agent response from a prompt
|
|
147
|
-
*/
|
|
148
|
-
async function collectPromptResponse(
|
|
149
|
-
agentManager: AgentManager,
|
|
150
|
-
agentId: string,
|
|
151
|
-
prompt: string
|
|
152
|
-
): Promise<string> {
|
|
153
|
-
let response = "";
|
|
154
|
-
for await (const update of agentManager.prompt(agentId, prompt)) {
|
|
155
|
-
const updateObj = update as Record<string, unknown>;
|
|
156
|
-
if (updateObj.sessionUpdate === "agent_message_chunk") {
|
|
157
|
-
const content = updateObj.content as { text?: string } | undefined;
|
|
158
|
-
if (content?.text) {
|
|
159
|
-
response += content.text;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
return response;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// ─────────────────────────────────────────────────────────────────
|
|
167
|
-
// Steering and Task E2E Tests
|
|
168
|
-
// ─────────────────────────────────────────────────────────────────
|
|
169
|
-
|
|
170
|
-
describe("Steering and Task E2E", () => {
|
|
171
|
-
let eventStore: EventStore;
|
|
172
|
-
let agentManager: AgentManager;
|
|
173
|
-
let messageRouter: MessageRouter;
|
|
174
|
-
let taskBackend: TaskBackend;
|
|
175
|
-
let testRepo: ReturnType<typeof createTestRepo>;
|
|
176
|
-
let testInstanceId: string;
|
|
177
|
-
|
|
178
|
-
beforeEach(async () => {
|
|
179
|
-
if (!RUN_FULL_AGENT) {
|
|
180
|
-
log("⚠️ Skipping: RUN_FULL_AGENT_TESTS not set");
|
|
181
|
-
return;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
testRepo = createTestRepo("steering-task");
|
|
185
|
-
log(`Test repo created at: ${testRepo.path}`);
|
|
186
|
-
|
|
187
|
-
testInstanceId = `steering-task-e2e-${Date.now()}`;
|
|
188
|
-
eventStore = await createEventStore({
|
|
189
|
-
instanceId: testInstanceId,
|
|
190
|
-
baseDir: testRepo.path,
|
|
191
|
-
});
|
|
192
|
-
messageRouter = createMessageRouter(eventStore);
|
|
193
|
-
agentManager = createAgentManager(eventStore, messageRouter, {
|
|
194
|
-
defaultPermissionMode: "auto-approve",
|
|
195
|
-
defaultCwd: testRepo.path,
|
|
196
|
-
});
|
|
197
|
-
taskBackend = new InMemoryTaskBackend(eventStore);
|
|
198
|
-
|
|
199
|
-
log("Services initialized");
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
afterEach(async () => {
|
|
203
|
-
if (!RUN_FULL_AGENT) return;
|
|
204
|
-
|
|
205
|
-
// Terminate all remaining agents
|
|
206
|
-
try {
|
|
207
|
-
for (const agent of agentManager.list()) {
|
|
208
|
-
if (agent.state === "running") {
|
|
209
|
-
try {
|
|
210
|
-
await agentManager.terminate(agent.id, "test_cleanup");
|
|
211
|
-
} catch {
|
|
212
|
-
// Ignore termination errors during cleanup
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
} catch {
|
|
217
|
-
// Ignore errors during cleanup
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
await agentManager?.close();
|
|
221
|
-
await eventStore?.close();
|
|
222
|
-
testRepo?.cleanup();
|
|
223
|
-
log("Cleanup complete");
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
// ─────────────────────────────────────────────────────────────────
|
|
227
|
-
// Scenario 5a: Broadcast to Workers E2E
|
|
228
|
-
// ─────────────────────────────────────────────────────────────────
|
|
229
|
-
|
|
230
|
-
describe("Scenario 5a: Broadcast to Workers", () => {
|
|
231
|
-
testFn(
|
|
232
|
-
"should deliver broadcast message to workers with unique confirmation",
|
|
233
|
-
async () => {
|
|
234
|
-
log("=== Scenario 5a: Broadcast to Workers E2E ===");
|
|
235
|
-
|
|
236
|
-
// Generate unique task number for verification
|
|
237
|
-
const taskNumber = Math.floor(Math.random() * 10000);
|
|
238
|
-
log(`Task number for verification: ${taskNumber}`);
|
|
239
|
-
|
|
240
|
-
// Spawn coordinator
|
|
241
|
-
const coordinator = await agentManager.spawn({
|
|
242
|
-
task: "You are a coordinator. Wait for instructions.",
|
|
243
|
-
role: "coordinator",
|
|
244
|
-
streamId: "stream-broadcast",
|
|
245
|
-
cwd: testRepo.path,
|
|
246
|
-
});
|
|
247
|
-
await waitForAgentState(agentManager, coordinator.id, "running");
|
|
248
|
-
log(`Coordinator spawned: ${coordinator.id}`);
|
|
249
|
-
|
|
250
|
-
// Spawn workers
|
|
251
|
-
const wt1 = testRepo.createWorktree("feature/worker1");
|
|
252
|
-
const wt2 = testRepo.createWorktree("feature/worker2");
|
|
253
|
-
|
|
254
|
-
const worker1 = await agentManager.spawn({
|
|
255
|
-
task: "You are Worker 1. When given a task assignment with a number, confirm receipt by mentioning the number.",
|
|
256
|
-
role: "worker",
|
|
257
|
-
streamId: "stream-broadcast",
|
|
258
|
-
parent: coordinator.id,
|
|
259
|
-
cwd: wt1,
|
|
260
|
-
});
|
|
261
|
-
await waitForAgentState(agentManager, worker1.id, "running");
|
|
262
|
-
log(`Worker 1 spawned: ${worker1.id}`);
|
|
263
|
-
|
|
264
|
-
const worker2 = await agentManager.spawn({
|
|
265
|
-
task: "You are Worker 2. When given a task assignment with a number, confirm receipt by mentioning the number.",
|
|
266
|
-
role: "worker",
|
|
267
|
-
streamId: "stream-broadcast",
|
|
268
|
-
parent: coordinator.id,
|
|
269
|
-
cwd: wt2,
|
|
270
|
-
});
|
|
271
|
-
await waitForAgentState(agentManager, worker2.id, "running");
|
|
272
|
-
log(`Worker 2 spawned: ${worker2.id}`);
|
|
273
|
-
|
|
274
|
-
// Spawn a monitor (should NOT receive @workers broadcast)
|
|
275
|
-
const monitor = await agentManager.spawn({
|
|
276
|
-
task: "You are a Monitor. Watch the system.",
|
|
277
|
-
role: "monitor",
|
|
278
|
-
streamId: "stream-broadcast",
|
|
279
|
-
cwd: testRepo.path,
|
|
280
|
-
});
|
|
281
|
-
await waitForAgentState(agentManager, monitor.id, "running");
|
|
282
|
-
log(`Monitor spawned: ${monitor.id}`);
|
|
283
|
-
|
|
284
|
-
// Send task assignment message to workers
|
|
285
|
-
const broadcastMessage = `You have been assigned task number ${taskNumber}. Please confirm you received this task assignment.`;
|
|
286
|
-
|
|
287
|
-
// Prompt workers to confirm they received the message
|
|
288
|
-
log("Sending broadcast message to workers...");
|
|
289
|
-
const [response1, response2] = await Promise.all([
|
|
290
|
-
collectPromptResponse(agentManager, worker1.id, broadcastMessage),
|
|
291
|
-
collectPromptResponse(agentManager, worker2.id, broadcastMessage),
|
|
292
|
-
]);
|
|
293
|
-
|
|
294
|
-
log(`Worker 1 response: ${response1.slice(0, 100)}...`);
|
|
295
|
-
log(`Worker 2 response: ${response2.slice(0, 100)}...`);
|
|
296
|
-
|
|
297
|
-
// Verify both workers acknowledged the task number
|
|
298
|
-
expect(response1.includes(String(taskNumber))).toBe(true);
|
|
299
|
-
expect(response2.includes(String(taskNumber))).toBe(true);
|
|
300
|
-
log("✓ Both workers confirmed receipt of broadcast message");
|
|
301
|
-
|
|
302
|
-
// Cleanup
|
|
303
|
-
await agentManager.terminate(worker1.id, "test_complete");
|
|
304
|
-
await agentManager.terminate(worker2.id, "test_complete");
|
|
305
|
-
await agentManager.terminate(monitor.id, "test_complete");
|
|
306
|
-
await agentManager.terminate(coordinator.id, "test_complete");
|
|
307
|
-
|
|
308
|
-
log("✓ Scenario 5a complete");
|
|
309
|
-
},
|
|
310
|
-
{ timeout: TIMEOUT.INJECTION }
|
|
311
|
-
);
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
// ─────────────────────────────────────────────────────────────────
|
|
315
|
-
// Scenario 5c: Context Injection E2E
|
|
316
|
-
// ─────────────────────────────────────────────────────────────────
|
|
317
|
-
|
|
318
|
-
describe("Scenario 5c: Context Injection", () => {
|
|
319
|
-
testFn(
|
|
320
|
-
"should inject context into running agent and verify response",
|
|
321
|
-
async () => {
|
|
322
|
-
log("=== Scenario 5c: Context Injection E2E ===");
|
|
323
|
-
|
|
324
|
-
// Generate unique priority level for verification
|
|
325
|
-
const priorityLevel = Math.floor(Math.random() * 100);
|
|
326
|
-
log(`Priority level for verification: ${priorityLevel}`);
|
|
327
|
-
|
|
328
|
-
// Spawn a worker that will receive context injection
|
|
329
|
-
const wt = testRepo.createWorktree("feature/injection-test");
|
|
330
|
-
|
|
331
|
-
const worker = await agentManager.spawn({
|
|
332
|
-
task: `You are a worker agent. When you receive priority updates, acknowledge the priority level in your response.`,
|
|
333
|
-
role: "worker",
|
|
334
|
-
streamId: "stream-inject",
|
|
335
|
-
cwd: wt,
|
|
336
|
-
});
|
|
337
|
-
await waitForAgentState(agentManager, worker.id, "running");
|
|
338
|
-
log(`Worker spawned: ${worker.id}`);
|
|
339
|
-
|
|
340
|
-
// Initial prompt to get agent ready
|
|
341
|
-
log("Initial prompt to warm up agent...");
|
|
342
|
-
await collectPromptResponse(
|
|
343
|
-
agentManager,
|
|
344
|
-
worker.id,
|
|
345
|
-
"Acknowledge you are ready and waiting for priority updates."
|
|
346
|
-
);
|
|
347
|
-
log("Worker is ready");
|
|
348
|
-
|
|
349
|
-
// Inject context via high-priority prompt (simulates context injection)
|
|
350
|
-
const injectedContext = `Priority update: Your current task priority has been changed to level ${priorityLevel}. Please acknowledge this update.`;
|
|
351
|
-
|
|
352
|
-
log("Injecting context into worker...");
|
|
353
|
-
const response = await collectPromptResponse(
|
|
354
|
-
agentManager,
|
|
355
|
-
worker.id,
|
|
356
|
-
injectedContext
|
|
357
|
-
);
|
|
358
|
-
|
|
359
|
-
log(`Worker response to injection: ${response.slice(0, 150)}...`);
|
|
360
|
-
|
|
361
|
-
// Verify worker received the message and responded
|
|
362
|
-
// (The agent may not echo the exact number, but should have a non-empty response)
|
|
363
|
-
expect(response.length).toBeGreaterThan(0);
|
|
364
|
-
// Check if response mentions priority or level (the agent processed the context)
|
|
365
|
-
const mentionsPriority =
|
|
366
|
-
response.toLowerCase().includes("priority") ||
|
|
367
|
-
response.toLowerCase().includes("level") ||
|
|
368
|
-
response.includes(String(priorityLevel));
|
|
369
|
-
log(`Agent acknowledged priority context: ${mentionsPriority}`);
|
|
370
|
-
// As long as agent responded, the injection mechanism worked
|
|
371
|
-
log("✓ Worker received and processed injected context");
|
|
372
|
-
|
|
373
|
-
// Cleanup
|
|
374
|
-
await agentManager.terminate(worker.id, "test_complete");
|
|
375
|
-
|
|
376
|
-
log("✓ Scenario 5c complete");
|
|
377
|
-
},
|
|
378
|
-
{ timeout: TIMEOUT.INJECTION }
|
|
379
|
-
);
|
|
380
|
-
|
|
381
|
-
testFn(
|
|
382
|
-
"should inject context into busy agent during task execution",
|
|
383
|
-
async () => {
|
|
384
|
-
log("=== Scenario 5c: Injection into Busy Agent ===");
|
|
385
|
-
|
|
386
|
-
const urgentTaskId = Math.floor(Math.random() * 1000);
|
|
387
|
-
const wt = testRepo.createWorktree("feature/busy-inject");
|
|
388
|
-
|
|
389
|
-
// Spawn worker with a longer-running task
|
|
390
|
-
const worker = await agentManager.spawn({
|
|
391
|
-
task: `You are a worker. When you receive an urgent task reassignment, acknowledge the new task ID.`,
|
|
392
|
-
role: "worker",
|
|
393
|
-
streamId: "stream-busy-inject",
|
|
394
|
-
cwd: wt,
|
|
395
|
-
});
|
|
396
|
-
await waitForAgentState(agentManager, worker.id, "running");
|
|
397
|
-
log(`Worker spawned: ${worker.id}`);
|
|
398
|
-
|
|
399
|
-
// Start a task
|
|
400
|
-
log("Starting worker on a task...");
|
|
401
|
-
const taskPromise = collectPromptResponse(
|
|
402
|
-
agentManager,
|
|
403
|
-
worker.id,
|
|
404
|
-
"Create a file named test.txt with 'hello world'. Then wait for further instructions."
|
|
405
|
-
);
|
|
406
|
-
|
|
407
|
-
// Wait a moment then inject priority context
|
|
408
|
-
await new Promise((r) => setTimeout(r, 2000));
|
|
409
|
-
|
|
410
|
-
log("Injecting high-priority context...");
|
|
411
|
-
const injectionPromise = collectPromptResponse(
|
|
412
|
-
agentManager,
|
|
413
|
-
worker.id,
|
|
414
|
-
`URGENT: You have been reassigned to task ${urgentTaskId}. Please acknowledge this reassignment immediately.`
|
|
415
|
-
);
|
|
416
|
-
|
|
417
|
-
// Wait for both to complete
|
|
418
|
-
const [taskResponse, injectionResponse] = await Promise.all([
|
|
419
|
-
taskPromise,
|
|
420
|
-
injectionPromise,
|
|
421
|
-
]);
|
|
422
|
-
|
|
423
|
-
log(`Task response: ${taskResponse.slice(0, 100)}...`);
|
|
424
|
-
log(`Injection response: ${injectionResponse.slice(0, 100)}...`);
|
|
425
|
-
|
|
426
|
-
// Verify we got responses from both prompts
|
|
427
|
-
// Note: We can't rely on the agent echoing back exact numbers since LLM responses vary
|
|
428
|
-
expect(taskResponse.length).toBeGreaterThan(0);
|
|
429
|
-
expect(injectionResponse.length).toBeGreaterThan(0);
|
|
430
|
-
|
|
431
|
-
// Check if task ID was mentioned (optional - just log, don't fail)
|
|
432
|
-
const taskIdReceived =
|
|
433
|
-
taskResponse.includes(String(urgentTaskId)) ||
|
|
434
|
-
injectionResponse.includes(String(urgentTaskId));
|
|
435
|
-
log(`Task ID ${urgentTaskId} echoed back: ${taskIdReceived}`);
|
|
436
|
-
log("✓ Both prompts received responses");
|
|
437
|
-
|
|
438
|
-
// Cleanup
|
|
439
|
-
await agentManager.terminate(worker.id, "test_complete");
|
|
440
|
-
|
|
441
|
-
log("✓ Busy agent injection complete");
|
|
442
|
-
},
|
|
443
|
-
{ timeout: TIMEOUT.INJECTION }
|
|
444
|
-
);
|
|
445
|
-
|
|
446
|
-
testFn(
|
|
447
|
-
"should use session.interruptWith() to interrupt a busy agent",
|
|
448
|
-
async () => {
|
|
449
|
-
log("=== Scenario 5c: Real interruptWith() Mechanism ===");
|
|
450
|
-
|
|
451
|
-
const interruptCode = Math.floor(Math.random() * 10000);
|
|
452
|
-
const wt = testRepo.createWorktree("feature/real-interrupt");
|
|
453
|
-
|
|
454
|
-
// Spawn worker
|
|
455
|
-
const worker = await agentManager.spawn({
|
|
456
|
-
task: `You are a worker. If you receive an interrupt with a code number, acknowledge it immediately.`,
|
|
457
|
-
role: "worker",
|
|
458
|
-
streamId: "stream-real-interrupt",
|
|
459
|
-
cwd: wt,
|
|
460
|
-
});
|
|
461
|
-
await waitForAgentState(agentManager, worker.id, "running");
|
|
462
|
-
log(`Worker spawned: ${worker.id}`);
|
|
463
|
-
|
|
464
|
-
// Start a long-running task (don't await)
|
|
465
|
-
log("Starting worker on a longer task...");
|
|
466
|
-
const taskIterator = agentManager.prompt(
|
|
467
|
-
worker.id,
|
|
468
|
-
"Create 3 files: a.txt, b.txt, c.txt, each with some content. Take your time."
|
|
469
|
-
);
|
|
470
|
-
|
|
471
|
-
// Wait for agent to start processing
|
|
472
|
-
await new Promise((r) => setTimeout(r, 3000));
|
|
473
|
-
|
|
474
|
-
// Verify agent is actually prompting
|
|
475
|
-
const isPrompting = agentManager.isPrompting(worker.id);
|
|
476
|
-
log(`Agent isPrompting: ${isPrompting}`);
|
|
477
|
-
|
|
478
|
-
// Get the session and use interruptWith directly
|
|
479
|
-
const session = agentManager.getSession(worker.id);
|
|
480
|
-
expect(session).not.toBeNull();
|
|
481
|
-
log("Got session, attempting interrupt...");
|
|
482
|
-
|
|
483
|
-
// Use interruptWith to inject context while agent is busy
|
|
484
|
-
const interruptMessage = `[PRIORITY INTERRUPT - Code ${interruptCode}]\n\nStop what you're doing. You have received interrupt code ${interruptCode}. Please acknowledge this interrupt code in your response.`;
|
|
485
|
-
|
|
486
|
-
let interruptResponse = "";
|
|
487
|
-
const interruptIterator = session!.interruptWith(interruptMessage);
|
|
488
|
-
|
|
489
|
-
// Collect the interrupt response
|
|
490
|
-
for await (const update of interruptIterator) {
|
|
491
|
-
const updateObj = update as Record<string, unknown>;
|
|
492
|
-
if (updateObj.sessionUpdate === "agent_message_chunk") {
|
|
493
|
-
const content = updateObj.content as { text?: string } | undefined;
|
|
494
|
-
if (content?.text) {
|
|
495
|
-
interruptResponse += content.text;
|
|
496
|
-
}
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
log(`Interrupt response: ${interruptResponse.slice(0, 150)}...`);
|
|
501
|
-
|
|
502
|
-
// Also collect remaining task output (may be truncated due to interrupt)
|
|
503
|
-
let taskResponse = "";
|
|
504
|
-
try {
|
|
505
|
-
for await (const update of taskIterator) {
|
|
506
|
-
const updateObj = update as Record<string, unknown>;
|
|
507
|
-
if (updateObj.sessionUpdate === "agent_message_chunk") {
|
|
508
|
-
const content = updateObj.content as { text?: string } | undefined;
|
|
509
|
-
if (content?.text) {
|
|
510
|
-
taskResponse += content.text;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
} catch {
|
|
515
|
-
// Task may have been interrupted
|
|
516
|
-
log("Task iteration ended (possibly interrupted)");
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
log(`Task response: ${taskResponse.slice(0, 100)}...`);
|
|
520
|
-
|
|
521
|
-
// Verify the interrupt mechanism worked
|
|
522
|
-
// The key verification is that interruptWith returned a response
|
|
523
|
-
expect(interruptResponse.length).toBeGreaterThan(0);
|
|
524
|
-
log("✓ interruptWith() returned a response");
|
|
525
|
-
|
|
526
|
-
// Check if the agent acknowledged the interrupt in some way
|
|
527
|
-
const acknowledgedInterrupt =
|
|
528
|
-
interruptResponse.toLowerCase().includes("interrupt") ||
|
|
529
|
-
interruptResponse.toLowerCase().includes("code") ||
|
|
530
|
-
interruptResponse.toLowerCase().includes("acknowledge") ||
|
|
531
|
-
interruptResponse.includes(String(interruptCode));
|
|
532
|
-
|
|
533
|
-
log(`Agent acknowledged interrupt: ${acknowledgedInterrupt}`);
|
|
534
|
-
// The mechanism worked if we got a response
|
|
535
|
-
log("✓ Real interruptWith() mechanism working");
|
|
536
|
-
|
|
537
|
-
// Cleanup
|
|
538
|
-
await agentManager.terminate(worker.id, "test_complete");
|
|
539
|
-
|
|
540
|
-
log("✓ Real interrupt test complete");
|
|
541
|
-
},
|
|
542
|
-
{ timeout: TIMEOUT.INJECTION * 2 }
|
|
543
|
-
);
|
|
544
|
-
|
|
545
|
-
testFn(
|
|
546
|
-
"should test session.inject() if supported",
|
|
547
|
-
async () => {
|
|
548
|
-
log("=== Scenario 5c: session.inject() Mechanism ===");
|
|
549
|
-
|
|
550
|
-
const injectCode = Math.floor(Math.random() * 10000);
|
|
551
|
-
const wt = testRepo.createWorktree("feature/inject-test");
|
|
552
|
-
|
|
553
|
-
// Spawn worker
|
|
554
|
-
const worker = await agentManager.spawn({
|
|
555
|
-
task: `You are a worker. If you receive any context about a code number, acknowledge it.`,
|
|
556
|
-
role: "worker",
|
|
557
|
-
streamId: "stream-inject-test",
|
|
558
|
-
cwd: wt,
|
|
559
|
-
});
|
|
560
|
-
await waitForAgentState(agentManager, worker.id, "running");
|
|
561
|
-
log(`Worker spawned: ${worker.id}`);
|
|
562
|
-
|
|
563
|
-
// Check if injection is supported
|
|
564
|
-
const session = agentManager.getSession(worker.id);
|
|
565
|
-
expect(session).not.toBeNull();
|
|
566
|
-
|
|
567
|
-
const supportsInject = await agentManager.supportsInjection(worker.id);
|
|
568
|
-
log(`Session supports inject: ${supportsInject}`);
|
|
569
|
-
|
|
570
|
-
if (supportsInject) {
|
|
571
|
-
// Try to inject context
|
|
572
|
-
const injectMessage = `[CONTEXT INJECTION - Code ${injectCode}]\n\nPlease note: You have received code ${injectCode}. Acknowledge this in your next response.`;
|
|
573
|
-
|
|
574
|
-
log("Attempting session.inject()...");
|
|
575
|
-
const injectResult = await session!.inject(injectMessage);
|
|
576
|
-
log(`inject() result: ${JSON.stringify(injectResult)}`);
|
|
577
|
-
|
|
578
|
-
if (injectResult.success) {
|
|
579
|
-
// Prompt the agent to trigger processing of injected context
|
|
580
|
-
const response = await collectPromptResponse(
|
|
581
|
-
agentManager,
|
|
582
|
-
worker.id,
|
|
583
|
-
"What codes or messages have you received?"
|
|
584
|
-
);
|
|
585
|
-
|
|
586
|
-
log(`Response after inject: ${response.slice(0, 150)}...`);
|
|
587
|
-
const codeReceived = response.includes(String(injectCode));
|
|
588
|
-
log(`Inject code ${injectCode} received: ${codeReceived}`);
|
|
589
|
-
|
|
590
|
-
// Note: inject() queues for next turn, so the agent should see it
|
|
591
|
-
expect(codeReceived).toBe(true);
|
|
592
|
-
log("✓ session.inject() mechanism working");
|
|
593
|
-
} else {
|
|
594
|
-
log("inject() not successful, skipping verification");
|
|
595
|
-
}
|
|
596
|
-
} else {
|
|
597
|
-
log("Session does not support inject, using interruptWith as fallback");
|
|
598
|
-
|
|
599
|
-
// Fall back to interruptWith
|
|
600
|
-
const interruptMessage = `[CONTEXT - Code ${injectCode}]\n\nYou have received code ${injectCode}.`;
|
|
601
|
-
|
|
602
|
-
const responses: string[] = [];
|
|
603
|
-
for await (const update of session!.interruptWith(interruptMessage)) {
|
|
604
|
-
const updateObj = update as Record<string, unknown>;
|
|
605
|
-
if (updateObj.sessionUpdate === "agent_message_chunk") {
|
|
606
|
-
const content = updateObj.content as { text?: string } | undefined;
|
|
607
|
-
if (content?.text) {
|
|
608
|
-
responses.push(content.text);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
const fullResponse = responses.join("");
|
|
614
|
-
log(`Fallback response: ${fullResponse.slice(0, 150)}...`);
|
|
615
|
-
|
|
616
|
-
const codeReceived = fullResponse.includes(String(injectCode));
|
|
617
|
-
expect(codeReceived).toBe(true);
|
|
618
|
-
log("✓ Fallback to interruptWith working");
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
// Cleanup
|
|
622
|
-
await agentManager.terminate(worker.id, "test_complete");
|
|
623
|
-
|
|
624
|
-
log("✓ Inject test complete");
|
|
625
|
-
},
|
|
626
|
-
{ timeout: TIMEOUT.INJECTION * 2 }
|
|
627
|
-
);
|
|
628
|
-
});
|
|
629
|
-
|
|
630
|
-
// ─────────────────────────────────────────────────────────────────
|
|
631
|
-
// Scenario 6a: Worker Claims and Completes Task E2E
|
|
632
|
-
// ─────────────────────────────────────────────────────────────────
|
|
633
|
-
|
|
634
|
-
describe("Scenario 6a: Task Lifecycle with Real Agent", () => {
|
|
635
|
-
testFn(
|
|
636
|
-
"should complete full task lifecycle: create → assign → start → complete",
|
|
637
|
-
async () => {
|
|
638
|
-
log("=== Scenario 6a: Task Lifecycle E2E ===");
|
|
639
|
-
|
|
640
|
-
// Create a task in the backend
|
|
641
|
-
const task = await taskBackend.create({
|
|
642
|
-
description: "Create a greeting.ts file with a hello function",
|
|
643
|
-
created_by: "coordinator-e2e",
|
|
644
|
-
});
|
|
645
|
-
log(`Task created: ${task.id}`);
|
|
646
|
-
expect(task.status).toBe("pending");
|
|
647
|
-
|
|
648
|
-
// Spawn a worker to claim and execute the task
|
|
649
|
-
const wt = testRepo.createWorktree("feature/task-lifecycle");
|
|
650
|
-
|
|
651
|
-
const worker = await agentManager.spawn({
|
|
652
|
-
task: `You are a worker assigned to task ${task.id}.
|
|
653
|
-
Create a file src/greeting.ts with: export function hello() { return 'Hello!'; }
|
|
654
|
-
Then commit your changes.`,
|
|
655
|
-
role: "worker",
|
|
656
|
-
streamId: "stream-task-lifecycle",
|
|
657
|
-
cwd: wt,
|
|
658
|
-
});
|
|
659
|
-
await waitForAgentState(agentManager, worker.id, "running");
|
|
660
|
-
log(`Worker spawned: ${worker.id}`);
|
|
661
|
-
|
|
662
|
-
// Assign task to worker
|
|
663
|
-
await taskBackend.assign(task.id, worker.id);
|
|
664
|
-
const assignedTask = await taskBackend.get(task.id);
|
|
665
|
-
expect(assignedTask?.status).toBe("assigned");
|
|
666
|
-
expect(assignedTask?.assigned_agent).toBe(worker.id);
|
|
667
|
-
log("✓ Task assigned to worker");
|
|
668
|
-
|
|
669
|
-
// Start task
|
|
670
|
-
await taskBackend.start(task.id);
|
|
671
|
-
const inProgressTask = await taskBackend.get(task.id);
|
|
672
|
-
expect(inProgressTask?.status).toBe("in_progress");
|
|
673
|
-
log("✓ Task in progress");
|
|
674
|
-
|
|
675
|
-
// Prompt worker to do the work
|
|
676
|
-
log("Prompting worker to execute task...");
|
|
677
|
-
const response = await collectPromptResponse(
|
|
678
|
-
agentManager,
|
|
679
|
-
worker.id,
|
|
680
|
-
"Execute your assigned task: create src/greeting.ts with a hello function."
|
|
681
|
-
);
|
|
682
|
-
log(`Worker response: ${response.slice(0, 100)}...`);
|
|
683
|
-
|
|
684
|
-
// Verify the file was created
|
|
685
|
-
const greetingPath = path.join(wt, "src/greeting.ts");
|
|
686
|
-
const fileExists = fs.existsSync(greetingPath);
|
|
687
|
-
log(`File created: ${fileExists}`);
|
|
688
|
-
|
|
689
|
-
// Complete the task
|
|
690
|
-
await taskBackend.complete(task.id, {
|
|
691
|
-
data: { summary: "Created greeting.ts with hello function" },
|
|
692
|
-
});
|
|
693
|
-
const completedTask = await taskBackend.get(task.id);
|
|
694
|
-
expect(completedTask?.status).toBe("completed");
|
|
695
|
-
log("✓ Task completed");
|
|
696
|
-
|
|
697
|
-
// Cleanup
|
|
698
|
-
await agentManager.terminate(worker.id, "test_complete");
|
|
699
|
-
|
|
700
|
-
log("✓ Scenario 6a complete");
|
|
701
|
-
},
|
|
702
|
-
{ timeout: TIMEOUT.TASK_LIFECYCLE }
|
|
703
|
-
);
|
|
704
|
-
});
|
|
705
|
-
|
|
706
|
-
// ─────────────────────────────────────────────────────────────────
|
|
707
|
-
// Scenario 6b: Blocked Task Workflow E2E
|
|
708
|
-
// ─────────────────────────────────────────────────────────────────
|
|
709
|
-
|
|
710
|
-
describe("Scenario 6b: Blocked Task Workflow", () => {
|
|
711
|
-
testFn(
|
|
712
|
-
"should handle task dependencies and unblock after prerequisite completes",
|
|
713
|
-
async () => {
|
|
714
|
-
log("=== Scenario 6b: Blocked Task Workflow E2E ===");
|
|
715
|
-
|
|
716
|
-
// Create prerequisite task
|
|
717
|
-
const prereqTask = await taskBackend.create({
|
|
718
|
-
description: "Create types.ts with shared interfaces",
|
|
719
|
-
created_by: "coordinator-e2e",
|
|
720
|
-
});
|
|
721
|
-
log(`Prerequisite task created: ${prereqTask.id}`);
|
|
722
|
-
|
|
723
|
-
// Create dependent task
|
|
724
|
-
const dependentTask = await taskBackend.create({
|
|
725
|
-
description: "Create utils.ts that uses types from types.ts",
|
|
726
|
-
created_by: "coordinator-e2e",
|
|
727
|
-
});
|
|
728
|
-
log(`Dependent task created: ${dependentTask.id}`);
|
|
729
|
-
|
|
730
|
-
// Add blocker relationship
|
|
731
|
-
await taskBackend.addBlocker(dependentTask.id, prereqTask.id);
|
|
732
|
-
log("✓ Blocker relationship added");
|
|
733
|
-
|
|
734
|
-
// Verify dependent task is blocked
|
|
735
|
-
const blockedTask = await taskBackend.get(dependentTask.id);
|
|
736
|
-
expect(blockedTask?.isBlocked).toBe(true);
|
|
737
|
-
log("✓ Dependent task is blocked");
|
|
738
|
-
|
|
739
|
-
// Verify listReady excludes blocked task
|
|
740
|
-
const readyTasks = await taskBackend.listReady();
|
|
741
|
-
const readyIds = readyTasks.map((t) => t.id);
|
|
742
|
-
expect(readyIds).toContain(prereqTask.id);
|
|
743
|
-
expect(readyIds).not.toContain(dependentTask.id);
|
|
744
|
-
log("✓ Only prerequisite is in ready list");
|
|
745
|
-
|
|
746
|
-
// Spawn worker for prerequisite
|
|
747
|
-
const wt1 = testRepo.createWorktree("feature/prereq");
|
|
748
|
-
const worker1 = await agentManager.spawn({
|
|
749
|
-
task: `You are Worker 1. Create src/types.ts with: export interface Greeting { message: string; }`,
|
|
750
|
-
role: "worker",
|
|
751
|
-
streamId: "stream-blocked",
|
|
752
|
-
cwd: wt1,
|
|
753
|
-
});
|
|
754
|
-
await waitForAgentState(agentManager, worker1.id, "running");
|
|
755
|
-
log(`Worker 1 spawned for prerequisite: ${worker1.id}`);
|
|
756
|
-
|
|
757
|
-
// Assign and complete prerequisite
|
|
758
|
-
await taskBackend.assign(prereqTask.id, worker1.id);
|
|
759
|
-
await taskBackend.start(prereqTask.id);
|
|
760
|
-
|
|
761
|
-
// Prompt worker to execute
|
|
762
|
-
await collectPromptResponse(
|
|
763
|
-
agentManager,
|
|
764
|
-
worker1.id,
|
|
765
|
-
"Create src/types.ts with a Greeting interface."
|
|
766
|
-
);
|
|
767
|
-
|
|
768
|
-
await taskBackend.complete(prereqTask.id, {
|
|
769
|
-
data: { summary: "Created types.ts" },
|
|
770
|
-
});
|
|
771
|
-
log("✓ Prerequisite task completed");
|
|
772
|
-
|
|
773
|
-
// Verify dependent task is now unblocked
|
|
774
|
-
const unblockedTask = await taskBackend.get(dependentTask.id);
|
|
775
|
-
expect(unblockedTask?.isBlocked).toBe(false);
|
|
776
|
-
log("✓ Dependent task is now unblocked");
|
|
777
|
-
|
|
778
|
-
// Verify dependent is now in ready list
|
|
779
|
-
const readyAfter = await taskBackend.listReady();
|
|
780
|
-
const readyIdsAfter = readyAfter.map((t) => t.id);
|
|
781
|
-
expect(readyIdsAfter).toContain(dependentTask.id);
|
|
782
|
-
log("✓ Dependent task now in ready list");
|
|
783
|
-
|
|
784
|
-
// Spawn second worker for dependent task
|
|
785
|
-
const wt2 = testRepo.createWorktree("feature/dependent");
|
|
786
|
-
const worker2 = await agentManager.spawn({
|
|
787
|
-
task: `You are Worker 2. Create src/utils.ts that imports from types.ts.`,
|
|
788
|
-
role: "worker",
|
|
789
|
-
streamId: "stream-blocked",
|
|
790
|
-
cwd: wt2,
|
|
791
|
-
});
|
|
792
|
-
await waitForAgentState(agentManager, worker2.id, "running");
|
|
793
|
-
log(`Worker 2 spawned for dependent task: ${worker2.id}`);
|
|
794
|
-
|
|
795
|
-
// Assign and complete dependent task
|
|
796
|
-
await taskBackend.assign(dependentTask.id, worker2.id);
|
|
797
|
-
await taskBackend.start(dependentTask.id);
|
|
798
|
-
|
|
799
|
-
await collectPromptResponse(
|
|
800
|
-
agentManager,
|
|
801
|
-
worker2.id,
|
|
802
|
-
"Create src/utils.ts that uses the Greeting interface."
|
|
803
|
-
);
|
|
804
|
-
|
|
805
|
-
await taskBackend.complete(dependentTask.id, {
|
|
806
|
-
data: { summary: "Created utils.ts using types" },
|
|
807
|
-
});
|
|
808
|
-
log("✓ Dependent task completed");
|
|
809
|
-
|
|
810
|
-
// Verify both tasks are completed
|
|
811
|
-
const finalPrereq = await taskBackend.get(prereqTask.id);
|
|
812
|
-
const finalDependent = await taskBackend.get(dependentTask.id);
|
|
813
|
-
expect(finalPrereq?.status).toBe("completed");
|
|
814
|
-
expect(finalDependent?.status).toBe("completed");
|
|
815
|
-
log("✓ Both tasks completed successfully");
|
|
816
|
-
|
|
817
|
-
// Cleanup
|
|
818
|
-
await agentManager.terminate(worker1.id, "test_complete");
|
|
819
|
-
await agentManager.terminate(worker2.id, "test_complete");
|
|
820
|
-
|
|
821
|
-
log("✓ Scenario 6b complete");
|
|
822
|
-
},
|
|
823
|
-
{ timeout: TIMEOUT.TASK_LIFECYCLE }
|
|
824
|
-
);
|
|
825
|
-
});
|
|
826
|
-
});
|
|
827
|
-
|
|
828
|
-
// ─────────────────────────────────────────────────────────────────
|
|
829
|
-
// Info message for running tests
|
|
830
|
-
// ─────────────────────────────────────────────────────────────────
|
|
831
|
-
|
|
832
|
-
if (!RUN_FULL_AGENT) {
|
|
833
|
-
console.log("\n┌─────────────────────────────────────────────────────────────┐");
|
|
834
|
-
console.log("│ Steering/Task E2E tests are skipped (no RUN_FULL_AGENT_TESTS)│");
|
|
835
|
-
console.log("│ │");
|
|
836
|
-
console.log("│ To run with real agents: │");
|
|
837
|
-
console.log("│ RUN_FULL_AGENT_TESTS=true npm run test:e2e -- \\ │");
|
|
838
|
-
console.log("│ src/__tests__/e2e/steering-task.e2e.test.ts │");
|
|
839
|
-
console.log("└─────────────────────────────────────────────────────────────┘\n");
|
|
840
|
-
}
|