macro-agent 0.1.2 → 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/CLAUDE.md +432 -206
- 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 -1318
- 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/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 -127
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +235 -1574
- 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 +38 -442
- 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 -453
- 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 -301
- 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/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 +14 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -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/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/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/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 +0 -2
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.js +0 -2
- package/dist/teams/index.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/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/package.json +26 -7
- 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 -1794
- package/src/agent/agent-store.ts +385 -0
- package/src/api/__tests__/server.test.ts +235 -1157
- package/src/api/index.ts +5 -3
- package/src/api/server.ts +270 -1989
- package/src/api/types.ts +25 -339
- package/src/boot-v2.ts +527 -0
- package/src/cli/acp.ts +38 -500
- package/src/cli/index.ts +68 -470
- package/src/cli/mcp.ts +260 -340
- 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/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 +42 -224
- 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/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/store/index.ts +3 -64
- 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 +0 -2
- package/src/teams/team-manager-v2.ts +268 -0
- package/src/teams/team-runtime-v2.ts +898 -0
- 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 -51
- package/dist/lifecycle/handlers/index.d.ts.map +0 -1
- package/dist/lifecycle/handlers/index.js +0 -110
- 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 -92
- package/dist/map/adapter/extensions/index.d.ts.map +0 -1
- package/dist/map/adapter/extensions/index.js +0 -214
- 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/streams.d.ts +0 -95
- package/dist/map/adapter/extensions/streams.d.ts.map +0 -1
- package/dist/map/adapter/extensions/streams.js +0 -515
- package/dist/map/adapter/extensions/streams.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 -40
- 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 -72
- package/dist/mcp/mcp-server.d.ts.map +0 -1
- package/dist/mcp/mcp-server.js +0 -1024
- 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 -252
- 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 -95
- package/dist/server/combined-server.d.ts.map +0 -1
- package/dist/server/combined-server.js +0 -335
- 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 -1746
- 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-manager.d.ts +0 -112
- package/dist/teams/team-manager.d.ts.map +0 -1
- package/dist/teams/team-manager.js +0 -305
- package/dist/teams/team-manager.js.map +0 -1
- package/dist/teams/team-runtime.d.ts +0 -245
- package/dist/teams/team-runtime.d.ts.map +0 -1
- package/dist/teams/team-runtime.js +0 -1023
- 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/minimem/.claude/settings.json +0 -7
- package/references/minimem/.sudocode/issues.jsonl +0 -18
- package/references/minimem/.sudocode/specs.jsonl +0 -1
- package/references/minimem/CLAUDE.md +0 -310
- package/references/minimem/README.md +0 -562
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +0 -10
- package/references/minimem/claude-plugin/.mcp.json +0 -7
- package/references/minimem/claude-plugin/README.md +0 -158
- package/references/minimem/claude-plugin/commands/recall.md +0 -47
- package/references/minimem/claude-plugin/commands/remember.md +0 -41
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +0 -272
- package/references/minimem/claude-plugin/hooks/hooks.json +0 -27
- package/references/minimem/claude-plugin/hooks/session-end.sh +0 -86
- package/references/minimem/claude-plugin/hooks/session-start.sh +0 -85
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +0 -108
- package/references/minimem/media/banner.png +0 -0
- package/references/minimem/package-lock.json +0 -5373
- package/references/minimem/package.json +0 -72
- package/references/minimem/scripts/postbuild.js +0 -35
- package/references/minimem/src/__tests__/edge-cases.test.ts +0 -371
- package/references/minimem/src/__tests__/errors.test.ts +0 -265
- package/references/minimem/src/__tests__/helpers.ts +0 -199
- package/references/minimem/src/__tests__/internal.test.ts +0 -407
- package/references/minimem/src/__tests__/knowledge.test.ts +0 -287
- package/references/minimem/src/__tests__/minimem.integration.test.ts +0 -1127
- package/references/minimem/src/__tests__/session.test.ts +0 -190
- package/references/minimem/src/cli/__tests__/commands.test.ts +0 -759
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +0 -141
- package/references/minimem/src/cli/commands/append.ts +0 -76
- package/references/minimem/src/cli/commands/config.ts +0 -262
- package/references/minimem/src/cli/commands/conflicts.ts +0 -413
- package/references/minimem/src/cli/commands/daemon.ts +0 -169
- package/references/minimem/src/cli/commands/index.ts +0 -12
- package/references/minimem/src/cli/commands/init.ts +0 -88
- package/references/minimem/src/cli/commands/mcp.ts +0 -177
- package/references/minimem/src/cli/commands/push-pull.ts +0 -213
- package/references/minimem/src/cli/commands/search.ts +0 -158
- package/references/minimem/src/cli/commands/status.ts +0 -84
- package/references/minimem/src/cli/commands/sync-init.ts +0 -290
- package/references/minimem/src/cli/commands/sync.ts +0 -70
- package/references/minimem/src/cli/commands/upsert.ts +0 -197
- package/references/minimem/src/cli/config.ts +0 -584
- package/references/minimem/src/cli/index.ts +0 -264
- package/references/minimem/src/cli/shared.ts +0 -161
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +0 -152
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +0 -209
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +0 -118
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +0 -207
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +0 -476
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +0 -363
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +0 -255
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +0 -193
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +0 -178
- package/references/minimem/src/cli/sync/central.ts +0 -292
- package/references/minimem/src/cli/sync/conflicts.ts +0 -204
- package/references/minimem/src/cli/sync/daemon.ts +0 -407
- package/references/minimem/src/cli/sync/detection.ts +0 -138
- package/references/minimem/src/cli/sync/index.ts +0 -107
- package/references/minimem/src/cli/sync/operations.ts +0 -373
- package/references/minimem/src/cli/sync/registry.ts +0 -279
- package/references/minimem/src/cli/sync/state.ts +0 -355
- package/references/minimem/src/cli/sync/validation.ts +0 -206
- package/references/minimem/src/cli/sync/watcher.ts +0 -234
- package/references/minimem/src/cli/version.ts +0 -34
- package/references/minimem/src/core/index.ts +0 -9
- package/references/minimem/src/core/indexer.ts +0 -628
- package/references/minimem/src/core/searcher.ts +0 -221
- package/references/minimem/src/db/schema.ts +0 -183
- package/references/minimem/src/db/sqlite-vec.ts +0 -24
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +0 -431
- package/references/minimem/src/embeddings/batch-gemini.ts +0 -392
- package/references/minimem/src/embeddings/batch-openai.ts +0 -409
- package/references/minimem/src/embeddings/embeddings.ts +0 -434
- package/references/minimem/src/index.ts +0 -109
- package/references/minimem/src/internal.ts +0 -299
- package/references/minimem/src/minimem.ts +0 -1276
- package/references/minimem/src/search/__tests__/hybrid.test.ts +0 -247
- package/references/minimem/src/search/graph.ts +0 -234
- package/references/minimem/src/search/hybrid.ts +0 -151
- package/references/minimem/src/search/search.ts +0 -256
- package/references/minimem/src/server/__tests__/mcp.test.ts +0 -341
- package/references/minimem/src/server/__tests__/tools.test.ts +0 -364
- package/references/minimem/src/server/mcp.ts +0 -326
- package/references/minimem/src/server/tools.ts +0 -720
- package/references/minimem/src/session.ts +0 -460
- package/references/minimem/tsconfig.json +0 -19
- package/references/minimem/tsup.config.ts +0 -26
- package/references/minimem/vitest.config.ts +0 -24
- 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/references/openteams/.claude/settings.json +0 -6
- package/references/openteams/README.md +0 -1
- package/references/openteams/SKILL.md +0 -341
- package/references/openteams/design.md +0 -411
- package/references/openteams/examples/bmad-method/prompts/analyst/ROLE.md +0 -16
- package/references/openteams/examples/bmad-method/prompts/analyst/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/architect/ROLE.md +0 -24
- package/references/openteams/examples/bmad-method/prompts/architect/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/developer/ROLE.md +0 -25
- package/references/openteams/examples/bmad-method/prompts/developer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/master/ROLE.md +0 -21
- package/references/openteams/examples/bmad-method/prompts/master/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/pm/ROLE.md +0 -20
- package/references/openteams/examples/bmad-method/prompts/pm/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/qa/ROLE.md +0 -17
- package/references/openteams/examples/bmad-method/prompts/qa/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/ROLE.md +0 -23
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/scrum-master/ROLE.md +0 -27
- package/references/openteams/examples/bmad-method/prompts/scrum-master/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/tech-writer/ROLE.md +0 -21
- package/references/openteams/examples/bmad-method/prompts/tech-writer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/prompts/ux-designer/ROLE.md +0 -16
- package/references/openteams/examples/bmad-method/prompts/ux-designer/SOUL.md +0 -5
- package/references/openteams/examples/bmad-method/roles/analyst.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/architect.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/developer.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/master.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/pm.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/qa.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/quick-flow-dev.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/scrum-master.yaml +0 -9
- package/references/openteams/examples/bmad-method/roles/tech-writer.yaml +0 -8
- package/references/openteams/examples/bmad-method/roles/ux-designer.yaml +0 -8
- package/references/openteams/examples/bmad-method/team.yaml +0 -161
- package/references/openteams/examples/get-shit-done/prompts/codebase-mapper/ROLE.md +0 -17
- package/references/openteams/examples/get-shit-done/prompts/codebase-mapper/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/prompts/debugger/ROLE.md +0 -25
- package/references/openteams/examples/get-shit-done/prompts/debugger/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/prompts/executor/ROLE.md +0 -34
- package/references/openteams/examples/get-shit-done/prompts/executor/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/prompts/integration-checker/ROLE.md +0 -18
- package/references/openteams/examples/get-shit-done/prompts/integration-checker/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/orchestrator/ROLE.md +0 -42
- package/references/openteams/examples/get-shit-done/prompts/orchestrator/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/prompts/phase-researcher/ROLE.md +0 -15
- package/references/openteams/examples/get-shit-done/prompts/phase-researcher/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/plan-checker/ROLE.md +0 -17
- package/references/openteams/examples/get-shit-done/prompts/plan-checker/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/planner/ROLE.md +0 -28
- package/references/openteams/examples/get-shit-done/prompts/planner/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/prompts/project-researcher/ROLE.md +0 -16
- package/references/openteams/examples/get-shit-done/prompts/project-researcher/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/research-synthesizer/ROLE.md +0 -13
- package/references/openteams/examples/get-shit-done/prompts/research-synthesizer/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/roadmapper/ROLE.md +0 -14
- package/references/openteams/examples/get-shit-done/prompts/roadmapper/SOUL.md +0 -3
- package/references/openteams/examples/get-shit-done/prompts/verifier/ROLE.md +0 -19
- package/references/openteams/examples/get-shit-done/prompts/verifier/SOUL.md +0 -5
- package/references/openteams/examples/get-shit-done/roles/codebase-mapper.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/debugger.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/executor.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/integration-checker.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/orchestrator.yaml +0 -9
- package/references/openteams/examples/get-shit-done/roles/phase-researcher.yaml +0 -7
- package/references/openteams/examples/get-shit-done/roles/plan-checker.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/planner.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/project-researcher.yaml +0 -8
- package/references/openteams/examples/get-shit-done/roles/research-synthesizer.yaml +0 -7
- package/references/openteams/examples/get-shit-done/roles/roadmapper.yaml +0 -7
- package/references/openteams/examples/get-shit-done/roles/verifier.yaml +0 -8
- package/references/openteams/examples/get-shit-done/team.yaml +0 -154
- package/references/openteams/package-lock.json +0 -2181
- package/references/openteams/package.json +0 -48
- package/references/openteams/schema/role.schema.json +0 -125
- package/references/openteams/schema/team.schema.json +0 -284
- package/references/openteams/src/cli/agent.ts +0 -104
- package/references/openteams/src/cli/cli.test.ts +0 -381
- package/references/openteams/src/cli/generate.ts +0 -220
- package/references/openteams/src/cli/message.ts +0 -241
- package/references/openteams/src/cli/task.ts +0 -154
- package/references/openteams/src/cli/team.ts +0 -104
- package/references/openteams/src/cli/template.ts +0 -207
- package/references/openteams/src/cli.ts +0 -45
- package/references/openteams/src/db/database.test.ts +0 -185
- package/references/openteams/src/db/database.ts +0 -240
- package/references/openteams/src/generators/agent-prompt-generator.test.ts +0 -332
- package/references/openteams/src/generators/agent-prompt-generator.ts +0 -521
- package/references/openteams/src/generators/package-generator.test.ts +0 -129
- package/references/openteams/src/generators/package-generator.ts +0 -102
- package/references/openteams/src/generators/skill-generator.test.ts +0 -246
- package/references/openteams/src/generators/skill-generator.ts +0 -374
- package/references/openteams/src/index.ts +0 -104
- package/references/openteams/src/services/agent-service.test.ts +0 -158
- package/references/openteams/src/services/agent-service.ts +0 -84
- package/references/openteams/src/services/communication-service.test.ts +0 -455
- package/references/openteams/src/services/communication-service.ts +0 -371
- package/references/openteams/src/services/message-service.test.ts +0 -342
- package/references/openteams/src/services/message-service.ts +0 -203
- package/references/openteams/src/services/task-service.test.ts +0 -434
- package/references/openteams/src/services/task-service.ts +0 -239
- package/references/openteams/src/services/team-service.test.ts +0 -181
- package/references/openteams/src/services/team-service.ts +0 -139
- package/references/openteams/src/services/template-service.test.ts +0 -306
- package/references/openteams/src/services/template-service.ts +0 -182
- package/references/openteams/src/spawner/acp-factory.ts +0 -96
- package/references/openteams/src/spawner/interface.ts +0 -31
- package/references/openteams/src/spawner/mock.test.ts +0 -93
- package/references/openteams/src/spawner/mock.ts +0 -59
- package/references/openteams/src/template/loader.test.ts +0 -1319
- package/references/openteams/src/template/loader.ts +0 -698
- package/references/openteams/src/template/types.ts +0 -200
- package/references/openteams/src/types.ts +0 -205
- package/references/openteams/tsconfig.json +0 -18
- package/references/openteams/vitest.config.ts +0 -9
- package/references/skill-tree/.claude/settings.json +0 -6
- package/references/skill-tree/.sudocode/issues.jsonl +0 -11
- package/references/skill-tree/.sudocode/specs.jsonl +0 -1
- package/references/skill-tree/CLAUDE.md +0 -150
- package/references/skill-tree/README.md +0 -324
- package/references/skill-tree/docs/GAPS_v1.md +0 -221
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +0 -467
- package/references/skill-tree/docs/TODOS.md +0 -91
- package/references/skill-tree/docs/anthropic_skill_guide.md +0 -1364
- package/references/skill-tree/docs/design/federated-skill-trees.md +0 -524
- package/references/skill-tree/docs/design/multi-agent-sync.md +0 -759
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +0 -583
- package/references/skill-tree/docs/scraper/POC_PLAN.md +0 -420
- package/references/skill-tree/docs/scraper/README.md +0 -170
- package/references/skill-tree/examples/basic-usage.ts +0 -190
- package/references/skill-tree/package-lock.json +0 -1509
- package/references/skill-tree/package.json +0 -66
- package/references/skill-tree/scraper/README.md +0 -123
- package/references/skill-tree/scraper/docs/DESIGN.md +0 -683
- package/references/skill-tree/scraper/docs/PLAN.md +0 -336
- package/references/skill-tree/scraper/drizzle.config.ts +0 -10
- package/references/skill-tree/scraper/package-lock.json +0 -6329
- package/references/skill-tree/scraper/package.json +0 -68
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +0 -7
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +0 -27
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +0 -21
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +0 -54
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +0 -24
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +0 -93
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +0 -22
- package/references/skill-tree/scraper/tsup.config.ts +0 -14
- package/references/skill-tree/scraper/vitest.config.ts +0 -17
- package/references/skill-tree/scripts/convert-to-vitest.ts +0 -166
- package/references/skill-tree/skills/skill-writer/SKILL.md +0 -339
- package/references/skill-tree/skills/skill-writer/references/examples.md +0 -326
- package/references/skill-tree/skills/skill-writer/references/patterns.md +0 -210
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +0 -123
- package/references/skill-tree/test/run-all.ts +0 -106
- package/references/skill-tree/test/utils.ts +0 -128
- package/references/skill-tree/vitest.config.ts +0 -16
- 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 -1879
- 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 -183
- 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__/stream-extensions.test.ts +0 -494
- 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 -316
- package/src/map/adapter/extensions/mcp-bridge.ts +0 -995
- package/src/map/adapter/extensions/resume.ts +0 -114
- package/src/map/adapter/extensions/streams.ts +0 -839
- 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 -163
- 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 -266
- 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 -1406
- 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 -357
- 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 -544
- 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-oob.test.ts +0 -109
- 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 -2214
- 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-pull-mode.test.ts +0 -153
- 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 -256
- 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/CLAUDE.md +0 -180
- 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__/e2e/workspace-isolation.e2e.test.ts +0 -1263
- package/src/teams/__tests__/team-manager.test.ts +0 -814
- package/src/teams/__tests__/team-system.test.ts +0 -2563
- package/src/teams/team-manager.ts +0 -387
- package/src/teams/team-runtime.ts +0 -1198
- 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
|
@@ -0,0 +1,1330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live Agent E2E Tests (V2)
|
|
3
|
+
*
|
|
4
|
+
* Tests that spawn REAL Claude Code agents via acp-factory.
|
|
5
|
+
* These require authenticated Claude Code and hit the API.
|
|
6
|
+
*
|
|
7
|
+
* REQUIRES: RUN_FULL_AGENT_TESTS=true
|
|
8
|
+
*
|
|
9
|
+
* Run with:
|
|
10
|
+
* RUN_FULL_AGENT_TESTS=true npx vitest run --config vitest.e2e.config.ts src/__tests__/e2e/live-agent.e2e.test.ts
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {
|
|
14
|
+
describe,
|
|
15
|
+
it,
|
|
16
|
+
expect,
|
|
17
|
+
beforeEach,
|
|
18
|
+
afterEach,
|
|
19
|
+
} from "vitest";
|
|
20
|
+
import * as path from "path";
|
|
21
|
+
import * as os from "os";
|
|
22
|
+
import * as fs from "fs";
|
|
23
|
+
import { execSync } from "child_process";
|
|
24
|
+
import { bootV2, type MacroAgentSystemV2 } from "../../boot-v2.js";
|
|
25
|
+
|
|
26
|
+
// ─────────────────────────────────────────────────────────────────
|
|
27
|
+
// Configuration
|
|
28
|
+
// ─────────────────────────────────────────────────────────────────
|
|
29
|
+
|
|
30
|
+
const RUN_FULL_AGENT = !!process.env.RUN_FULL_AGENT_TESTS;
|
|
31
|
+
const describeFn = RUN_FULL_AGENT ? describe : describe.skip;
|
|
32
|
+
|
|
33
|
+
const TIMEOUT = {
|
|
34
|
+
SPAWN: 60_000,
|
|
35
|
+
PROMPT: 90_000,
|
|
36
|
+
MULTI: 180_000,
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
// ─────────────────────────────────────────────────────────────────
|
|
40
|
+
// Helpers
|
|
41
|
+
// ─────────────────────────────────────────────────────────────────
|
|
42
|
+
|
|
43
|
+
function createTestRepo(prefix: string): { path: string; cleanup: () => void } {
|
|
44
|
+
const tmpDir = fs.mkdtempSync(
|
|
45
|
+
path.join(os.tmpdir(), `live-agent-${prefix}-`)
|
|
46
|
+
);
|
|
47
|
+
const repoPath = path.join(tmpDir, "test-repo");
|
|
48
|
+
fs.mkdirSync(repoPath);
|
|
49
|
+
execSync("git init", { cwd: repoPath, stdio: "pipe" });
|
|
50
|
+
execSync('git config user.email "test@test.com"', { cwd: repoPath, stdio: "pipe" });
|
|
51
|
+
execSync('git config user.name "Test User"', { cwd: repoPath, stdio: "pipe" });
|
|
52
|
+
fs.writeFileSync(path.join(repoPath, "README.md"), "# Test Repo\n");
|
|
53
|
+
execSync("git add -A", { cwd: repoPath, stdio: "pipe" });
|
|
54
|
+
execSync('git commit -m "Initial commit"', { cwd: repoPath, stdio: "pipe" });
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
path: repoPath,
|
|
58
|
+
cleanup: () => fs.rmSync(tmpDir, { recursive: true, force: true }),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function log(msg: string): void {
|
|
63
|
+
console.log(`[LIVE-E2E] ${msg}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// ─────────────────────────────────────────────────────────────────
|
|
67
|
+
// Tests
|
|
68
|
+
// ─────────────────────────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
describeFn("Live Agent E2E (V2)", () => {
|
|
71
|
+
let system: MacroAgentSystemV2;
|
|
72
|
+
let testRepo: { path: string; cleanup: () => void };
|
|
73
|
+
let baseDir: string;
|
|
74
|
+
|
|
75
|
+
beforeEach(async () => {
|
|
76
|
+
testRepo = createTestRepo("v2");
|
|
77
|
+
baseDir = path.join(testRepo.path, ".macro-agent");
|
|
78
|
+
fs.mkdirSync(baseDir, { recursive: true });
|
|
79
|
+
|
|
80
|
+
// Boot V2 with real acp-factory (no mocking)
|
|
81
|
+
system = await bootV2({
|
|
82
|
+
cwd: testRepo.path,
|
|
83
|
+
baseDir,
|
|
84
|
+
defaultPermissionMode: "auto-approve",
|
|
85
|
+
inbox: {
|
|
86
|
+
socketPath: path.join(baseDir, "inbox.sock"),
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
log("System booted");
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
afterEach(async () => {
|
|
93
|
+
if (system) {
|
|
94
|
+
try {
|
|
95
|
+
// Terminate all running agents
|
|
96
|
+
const running = system.agentManager.list({ state: "running" });
|
|
97
|
+
for (const agent of running) {
|
|
98
|
+
try {
|
|
99
|
+
await system.agentManager.terminate(agent.id, "cancelled");
|
|
100
|
+
} catch {
|
|
101
|
+
// Best effort
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
await system.shutdown();
|
|
105
|
+
} catch {
|
|
106
|
+
// Best effort
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
testRepo?.cleanup();
|
|
110
|
+
log("Cleanup complete");
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// ── Spawn & Prompt ──────────────────────────────────────────
|
|
114
|
+
|
|
115
|
+
it(
|
|
116
|
+
"should spawn a real agent and receive a prompt response",
|
|
117
|
+
async () => {
|
|
118
|
+
log("Spawning real agent...");
|
|
119
|
+
const agent = await system.agentManager.spawn({
|
|
120
|
+
task: "Reply with exactly: HELLO_FROM_AGENT",
|
|
121
|
+
role: "worker",
|
|
122
|
+
cwd: testRepo.path,
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
log(`Agent spawned: ${agent.id}`);
|
|
126
|
+
expect(agent.id).toBeDefined();
|
|
127
|
+
expect(agent.session).toBeDefined();
|
|
128
|
+
|
|
129
|
+
// Verify in store
|
|
130
|
+
const record = system.agentStore.getAgent(agent.id);
|
|
131
|
+
expect(record).not.toBeNull();
|
|
132
|
+
expect(record!.state).toBe("running");
|
|
133
|
+
|
|
134
|
+
// Verify in inbox
|
|
135
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
136
|
+
const inboxAgent = inbox.storage.getAgent(agent.id);
|
|
137
|
+
expect(inboxAgent).toBeDefined();
|
|
138
|
+
expect(inboxAgent.status).toBe("active");
|
|
139
|
+
|
|
140
|
+
log("Prompting agent...");
|
|
141
|
+
const updates: any[] = [];
|
|
142
|
+
for await (const update of system.agentManager.prompt(
|
|
143
|
+
agent.id,
|
|
144
|
+
'Say exactly "HELLO_FROM_AGENT" and nothing else.'
|
|
145
|
+
)) {
|
|
146
|
+
updates.push(update);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
log(`Got ${updates.length} updates from prompt`);
|
|
150
|
+
expect(updates.length).toBeGreaterThan(0);
|
|
151
|
+
|
|
152
|
+
// Check that at least one update has text content
|
|
153
|
+
const hasContent = updates.some(
|
|
154
|
+
(u) =>
|
|
155
|
+
u.type === "assistant" ||
|
|
156
|
+
u.type === "text" ||
|
|
157
|
+
(u as any).content !== undefined
|
|
158
|
+
);
|
|
159
|
+
expect(hasContent).toBe(true);
|
|
160
|
+
|
|
161
|
+
log("Terminating agent...");
|
|
162
|
+
await system.agentManager.terminate(agent.id, "completed");
|
|
163
|
+
|
|
164
|
+
const stopped = system.agentStore.getAgent(agent.id);
|
|
165
|
+
expect(stopped!.state).toBe("stopped");
|
|
166
|
+
|
|
167
|
+
// Verify deregistered from inbox
|
|
168
|
+
const afterStop = inbox.storage.getAgent(agent.id);
|
|
169
|
+
expect(afterStop.status).toBe("offline");
|
|
170
|
+
|
|
171
|
+
log("Test complete");
|
|
172
|
+
},
|
|
173
|
+
TIMEOUT.PROMPT
|
|
174
|
+
);
|
|
175
|
+
|
|
176
|
+
// ── Parent-Child with Real Agents ───────────────────────────
|
|
177
|
+
|
|
178
|
+
it(
|
|
179
|
+
"should spawn parent and child agents with real processes",
|
|
180
|
+
async () => {
|
|
181
|
+
log("Spawning coordinator...");
|
|
182
|
+
const coordinator = await system.agentManager.spawn({
|
|
183
|
+
task: "You are a coordinator. Wait for instructions.",
|
|
184
|
+
role: "coordinator",
|
|
185
|
+
cwd: testRepo.path,
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
log(`Coordinator spawned: ${coordinator.id}`);
|
|
189
|
+
expect(coordinator.id).toBeDefined();
|
|
190
|
+
|
|
191
|
+
log("Spawning worker under coordinator...");
|
|
192
|
+
const worker = await system.agentManager.spawn({
|
|
193
|
+
task: "You are a worker. Reply with WORKER_READY.",
|
|
194
|
+
role: "worker",
|
|
195
|
+
parent: coordinator.id,
|
|
196
|
+
cwd: testRepo.path,
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
log(`Worker spawned: ${worker.id}`);
|
|
200
|
+
expect(worker.id).toBeDefined();
|
|
201
|
+
expect(worker.agent.parent).toBe(coordinator.id);
|
|
202
|
+
|
|
203
|
+
// Verify hierarchy
|
|
204
|
+
const children = system.agentManager.getChildren(coordinator.id);
|
|
205
|
+
expect(children).toHaveLength(1);
|
|
206
|
+
expect(children[0].id).toBe(worker.id);
|
|
207
|
+
|
|
208
|
+
const hierarchy = system.agentManager.getHierarchy(coordinator.id);
|
|
209
|
+
expect(hierarchy!.totalAgents).toBe(2);
|
|
210
|
+
|
|
211
|
+
log("Terminating coordinator (should cascade)...");
|
|
212
|
+
await system.agentManager.terminate(coordinator.id, "completed");
|
|
213
|
+
|
|
214
|
+
// Both should be stopped
|
|
215
|
+
expect(system.agentStore.getAgent(coordinator.id)!.state).toBe("stopped");
|
|
216
|
+
expect(system.agentStore.getAgent(worker.id)!.state).toBe("stopped");
|
|
217
|
+
|
|
218
|
+
log("Test complete");
|
|
219
|
+
},
|
|
220
|
+
TIMEOUT.MULTI
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
// ── Inter-Agent Messaging with Real Agents ──────────────────
|
|
224
|
+
|
|
225
|
+
it(
|
|
226
|
+
"should deliver inbox messages between real agents",
|
|
227
|
+
async () => {
|
|
228
|
+
log("Spawning two agents...");
|
|
229
|
+
const a = await system.agentManager.spawn({
|
|
230
|
+
task: "Agent A. Wait for instructions.",
|
|
231
|
+
role: "coordinator",
|
|
232
|
+
cwd: testRepo.path,
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
const b = await system.agentManager.spawn({
|
|
236
|
+
task: "Agent B. Wait for instructions.",
|
|
237
|
+
role: "worker",
|
|
238
|
+
parent: a.id,
|
|
239
|
+
cwd: testRepo.path,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
log("Sending message A → B via inbox...");
|
|
243
|
+
const msgId = await system.inboxAdapter.send(
|
|
244
|
+
a.id,
|
|
245
|
+
b.id,
|
|
246
|
+
"Hello from coordinator",
|
|
247
|
+
{ threadTag: "live-test", importance: "normal" }
|
|
248
|
+
);
|
|
249
|
+
expect(msgId).toBeTruthy();
|
|
250
|
+
|
|
251
|
+
// Verify message in B's inbox
|
|
252
|
+
const bInbox = await system.inboxAdapter.checkInbox(b.id);
|
|
253
|
+
expect(bInbox.length).toBeGreaterThanOrEqual(1);
|
|
254
|
+
|
|
255
|
+
const msg = bInbox.find((m) => m.sender_id === a.id);
|
|
256
|
+
expect(msg).toBeDefined();
|
|
257
|
+
|
|
258
|
+
log("Sending event message B → A...");
|
|
259
|
+
await system.inboxAdapter.send(
|
|
260
|
+
b.id,
|
|
261
|
+
a.id,
|
|
262
|
+
{ type: "event", event: "task_completed", data: { result: "success" } },
|
|
263
|
+
{ importance: "high" }
|
|
264
|
+
);
|
|
265
|
+
|
|
266
|
+
const aInbox = await system.inboxAdapter.checkInbox(a.id);
|
|
267
|
+
const eventMsg = aInbox.find(
|
|
268
|
+
(m) => m.content?.type === "event" && m.content?.event === "task_completed"
|
|
269
|
+
);
|
|
270
|
+
expect(eventMsg).toBeDefined();
|
|
271
|
+
|
|
272
|
+
log("Reading thread...");
|
|
273
|
+
const thread = await system.inboxAdapter.readThread("live-test");
|
|
274
|
+
expect(thread.length).toBeGreaterThanOrEqual(1);
|
|
275
|
+
|
|
276
|
+
// Cleanup
|
|
277
|
+
await system.agentManager.terminate(a.id, "completed");
|
|
278
|
+
|
|
279
|
+
log("Test complete");
|
|
280
|
+
},
|
|
281
|
+
TIMEOUT.MULTI
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
// ── Cascade Termination with Inbox Notifications ────────────
|
|
285
|
+
|
|
286
|
+
it(
|
|
287
|
+
"should send inbox notification to parent when child terminates",
|
|
288
|
+
async () => {
|
|
289
|
+
log("Spawning parent + child...");
|
|
290
|
+
const parent = await system.agentManager.spawn({
|
|
291
|
+
task: "Parent agent. Wait for child status.",
|
|
292
|
+
role: "coordinator",
|
|
293
|
+
cwd: testRepo.path,
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
const child = await system.agentManager.spawn({
|
|
297
|
+
task: "Child agent. Do some work.",
|
|
298
|
+
role: "worker",
|
|
299
|
+
parent: parent.id,
|
|
300
|
+
cwd: testRepo.path,
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
log(`Parent: ${parent.id}, Child: ${child.id}`);
|
|
304
|
+
|
|
305
|
+
log("Terminating child...");
|
|
306
|
+
await system.agentManager.terminate(child.id, "completed");
|
|
307
|
+
|
|
308
|
+
// Parent should receive agent_stopped event via inbox
|
|
309
|
+
const parentInbox = await system.inboxAdapter.checkInbox(parent.id);
|
|
310
|
+
const stopNotification = parentInbox.find(
|
|
311
|
+
(m) =>
|
|
312
|
+
m.content?.type === "event" &&
|
|
313
|
+
m.content?.event === "agent_stopped" &&
|
|
314
|
+
m.content?.data?.agentId === child.id
|
|
315
|
+
);
|
|
316
|
+
expect(stopNotification).toBeDefined();
|
|
317
|
+
expect(stopNotification!.content.data.reason).toBe("completed");
|
|
318
|
+
expect(stopNotification!.importance).toBe("high");
|
|
319
|
+
|
|
320
|
+
log("Verified parent received stop notification via inbox");
|
|
321
|
+
|
|
322
|
+
// Cleanup
|
|
323
|
+
await system.agentManager.terminate(parent.id, "cancelled");
|
|
324
|
+
log("Test complete");
|
|
325
|
+
},
|
|
326
|
+
TIMEOUT.MULTI
|
|
327
|
+
);
|
|
328
|
+
|
|
329
|
+
// ── Agent Continuation ──────────────────────────────────────
|
|
330
|
+
|
|
331
|
+
it(
|
|
332
|
+
"should continue a terminated agent with a new real process",
|
|
333
|
+
async () => {
|
|
334
|
+
log("Spawning original agent...");
|
|
335
|
+
const original = await system.agentManager.spawn({
|
|
336
|
+
task: "Original task: compute 2+2",
|
|
337
|
+
role: "worker",
|
|
338
|
+
cwd: testRepo.path,
|
|
339
|
+
});
|
|
340
|
+
|
|
341
|
+
log(`Original: ${original.id}`);
|
|
342
|
+
|
|
343
|
+
// Prompt it so it has some history
|
|
344
|
+
log("Prompting original...");
|
|
345
|
+
const updates: any[] = [];
|
|
346
|
+
for await (const update of system.agentManager.prompt(
|
|
347
|
+
original.id,
|
|
348
|
+
"What is 2+2? Reply briefly."
|
|
349
|
+
)) {
|
|
350
|
+
updates.push(update);
|
|
351
|
+
}
|
|
352
|
+
log(`Got ${updates.length} updates`);
|
|
353
|
+
|
|
354
|
+
// Terminate
|
|
355
|
+
log("Terminating original...");
|
|
356
|
+
await system.agentManager.terminate(original.id, "completed");
|
|
357
|
+
expect(system.agentStore.getAgent(original.id)!.state).toBe("stopped");
|
|
358
|
+
|
|
359
|
+
// Continue
|
|
360
|
+
log("Continuing agent...");
|
|
361
|
+
const continued = await system.agentManager.continueAgent(original.id, {
|
|
362
|
+
additionalContext: "Previous agent computed 2+2=4. Continue from there.",
|
|
363
|
+
task: "Continue: now compute 3+3",
|
|
364
|
+
});
|
|
365
|
+
|
|
366
|
+
expect(continued.id).not.toBe(original.id);
|
|
367
|
+
expect(continued.agent.state).toBe("running");
|
|
368
|
+
expect(continued.agent.role).toBe("worker");
|
|
369
|
+
|
|
370
|
+
// Verify new agent is in store and inbox
|
|
371
|
+
const record = system.agentStore.getAgent(continued.id)!;
|
|
372
|
+
expect(record.state).toBe("running");
|
|
373
|
+
|
|
374
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
375
|
+
expect(inbox.storage.getAgent(continued.id)).toBeDefined();
|
|
376
|
+
|
|
377
|
+
// Prompt the continuation
|
|
378
|
+
log("Prompting continuation...");
|
|
379
|
+
const contUpdates: any[] = [];
|
|
380
|
+
for await (const update of system.agentManager.prompt(
|
|
381
|
+
continued.id,
|
|
382
|
+
"What is 3+3? Reply briefly."
|
|
383
|
+
)) {
|
|
384
|
+
contUpdates.push(update);
|
|
385
|
+
}
|
|
386
|
+
log(`Got ${contUpdates.length} continuation updates`);
|
|
387
|
+
expect(contUpdates.length).toBeGreaterThan(0);
|
|
388
|
+
|
|
389
|
+
// Cleanup
|
|
390
|
+
await system.agentManager.terminate(continued.id, "completed");
|
|
391
|
+
log("Test complete");
|
|
392
|
+
},
|
|
393
|
+
TIMEOUT.MULTI
|
|
394
|
+
);
|
|
395
|
+
|
|
396
|
+
// ── Agent Fork ──────────────────────────────────────────────
|
|
397
|
+
|
|
398
|
+
it(
|
|
399
|
+
"should fork a live agent session into a new real process",
|
|
400
|
+
async () => {
|
|
401
|
+
log("Spawning source agent...");
|
|
402
|
+
const source = await system.agentManager.spawn({
|
|
403
|
+
task: "Source agent for forking. Remember: the secret is BANANA.",
|
|
404
|
+
role: "worker",
|
|
405
|
+
cwd: testRepo.path,
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
log(`Source: ${source.id}`);
|
|
409
|
+
|
|
410
|
+
// Give it some conversation context
|
|
411
|
+
log("Prompting source...");
|
|
412
|
+
for await (const _update of system.agentManager.prompt(
|
|
413
|
+
source.id,
|
|
414
|
+
"Remember: the secret word is BANANA. Confirm you understand."
|
|
415
|
+
)) {
|
|
416
|
+
// drain
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// Fork it
|
|
420
|
+
log("Forking agent...");
|
|
421
|
+
const forked = await system.agentManager.forkAgent(source.id, {
|
|
422
|
+
name: "forked-worker",
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
expect(forked.id).not.toBe(source.id);
|
|
426
|
+
expect(forked.agent.state).toBe("running");
|
|
427
|
+
|
|
428
|
+
// Verify fork metadata
|
|
429
|
+
const forkedRecord = system.agentStore.getAgent(forked.id)!;
|
|
430
|
+
expect(forkedRecord.metadata?.fork_of).toBe(source.id);
|
|
431
|
+
|
|
432
|
+
// Verify both agents are in inbox
|
|
433
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
434
|
+
expect(inbox.storage.getAgent(source.id)?.status).toBe("active");
|
|
435
|
+
expect(inbox.storage.getAgent(forked.id)?.status).toBe("active");
|
|
436
|
+
|
|
437
|
+
// Both should be independently addressable
|
|
438
|
+
await system.inboxAdapter.send(
|
|
439
|
+
"system",
|
|
440
|
+
forked.id,
|
|
441
|
+
"Hello forked agent"
|
|
442
|
+
);
|
|
443
|
+
const forkedInbox = await system.inboxAdapter.checkInbox(forked.id);
|
|
444
|
+
expect(forkedInbox.length).toBeGreaterThanOrEqual(1);
|
|
445
|
+
|
|
446
|
+
// Cleanup
|
|
447
|
+
await system.agentManager.terminate(source.id, "cancelled");
|
|
448
|
+
await system.agentManager.terminate(forked.id, "cancelled");
|
|
449
|
+
log("Test complete");
|
|
450
|
+
},
|
|
451
|
+
TIMEOUT.MULTI
|
|
452
|
+
);
|
|
453
|
+
|
|
454
|
+
// ── Context Injection via Inbox ─────────────────────────────
|
|
455
|
+
|
|
456
|
+
it(
|
|
457
|
+
"should deliver high-priority context injection via inbox",
|
|
458
|
+
async () => {
|
|
459
|
+
log("Spawning agent for context injection...");
|
|
460
|
+
const agent = await system.agentManager.spawn({
|
|
461
|
+
task: "Wait for context updates via inbox.",
|
|
462
|
+
role: "worker",
|
|
463
|
+
cwd: testRepo.path,
|
|
464
|
+
});
|
|
465
|
+
|
|
466
|
+
log(`Agent: ${agent.id}`);
|
|
467
|
+
|
|
468
|
+
// Send urgent context injection (replaces old steering/inject)
|
|
469
|
+
log("Sending urgent context injection...");
|
|
470
|
+
const msgId = await system.inboxAdapter.send(
|
|
471
|
+
"system",
|
|
472
|
+
agent.id,
|
|
473
|
+
{
|
|
474
|
+
type: "text",
|
|
475
|
+
text: "URGENT: Stop current work. Priority has changed to fixing bug #42.",
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
importance: "urgent",
|
|
479
|
+
subject: "Priority change",
|
|
480
|
+
threadTag: `inject:system`,
|
|
481
|
+
}
|
|
482
|
+
);
|
|
483
|
+
expect(msgId).toBeTruthy();
|
|
484
|
+
|
|
485
|
+
// Verify message in inbox with correct importance
|
|
486
|
+
const inbox = await system.inboxAdapter.checkInbox(agent.id);
|
|
487
|
+
const injected = inbox.find((m) => m.id === msgId);
|
|
488
|
+
expect(injected).toBeDefined();
|
|
489
|
+
expect(injected!.importance).toBe("urgent");
|
|
490
|
+
expect(injected!.subject).toBe("Priority change");
|
|
491
|
+
|
|
492
|
+
// Send high-priority event injection
|
|
493
|
+
log("Sending high-priority event injection...");
|
|
494
|
+
await system.inboxAdapter.send(
|
|
495
|
+
"system",
|
|
496
|
+
agent.id,
|
|
497
|
+
{
|
|
498
|
+
type: "event",
|
|
499
|
+
event: "context_update",
|
|
500
|
+
data: { newPriority: "bug-42", previousTask: "feature-x" },
|
|
501
|
+
},
|
|
502
|
+
{ importance: "high" }
|
|
503
|
+
);
|
|
504
|
+
|
|
505
|
+
const inboxAfter = await system.inboxAdapter.checkInbox(agent.id);
|
|
506
|
+
const eventInjection = inboxAfter.find(
|
|
507
|
+
(m) => m.content?.type === "event" && m.content?.event === "context_update"
|
|
508
|
+
);
|
|
509
|
+
expect(eventInjection).toBeDefined();
|
|
510
|
+
expect(eventInjection!.importance).toBe("high");
|
|
511
|
+
|
|
512
|
+
// Cleanup
|
|
513
|
+
await system.agentManager.terminate(agent.id, "cancelled");
|
|
514
|
+
log("Test complete");
|
|
515
|
+
},
|
|
516
|
+
TIMEOUT.PROMPT
|
|
517
|
+
);
|
|
518
|
+
|
|
519
|
+
// ── Team Bootstrap with Real Agents ─────────────────────────
|
|
520
|
+
|
|
521
|
+
it(
|
|
522
|
+
"should bootstrap a team with real agents and scoped inbox",
|
|
523
|
+
async () => {
|
|
524
|
+
const { loadTeam } = await import("../../teams/team-loader.js");
|
|
525
|
+
const { TeamRuntimeV2 } = await import("../../teams/team-runtime-v2.js");
|
|
526
|
+
|
|
527
|
+
log("Loading self-driving team template...");
|
|
528
|
+
const manifest = await loadTeam(
|
|
529
|
+
"self-driving",
|
|
530
|
+
system.roleRegistry,
|
|
531
|
+
path.resolve(import.meta.dirname, "../../..")
|
|
532
|
+
);
|
|
533
|
+
|
|
534
|
+
const runtime = new TeamRuntimeV2(manifest, {
|
|
535
|
+
agentManager: system.agentManager,
|
|
536
|
+
inboxAdapter: system.inboxAdapter,
|
|
537
|
+
tasksAdapter: system.tasksAdapter,
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
await runtime.initialize();
|
|
541
|
+
|
|
542
|
+
log("Bootstrapping team...");
|
|
543
|
+
const result = await runtime.bootstrap();
|
|
544
|
+
|
|
545
|
+
expect(result.rootId).toBeDefined();
|
|
546
|
+
expect(result.companionIds.length).toBeGreaterThanOrEqual(1);
|
|
547
|
+
|
|
548
|
+
log(`Root: ${result.rootId}, Companions: ${result.companionIds.join(", ")}`);
|
|
549
|
+
|
|
550
|
+
// Verify agents have team scope
|
|
551
|
+
const rootRecord = system.agentStore.getAgent(result.rootId)!;
|
|
552
|
+
expect(rootRecord.team).toBe("self-driving");
|
|
553
|
+
expect(rootRecord.role).toBe("planner");
|
|
554
|
+
|
|
555
|
+
const companionRecord = system.agentStore.getAgent(result.companionIds[0])!;
|
|
556
|
+
expect(companionRecord.team).toBe("self-driving");
|
|
557
|
+
expect(companionRecord.role).toBe("judge");
|
|
558
|
+
|
|
559
|
+
// Verify scoped inbox registration
|
|
560
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
561
|
+
const rootInboxAgent = inbox.storage.getAgent(result.rootId);
|
|
562
|
+
expect(rootInboxAgent).toBeDefined();
|
|
563
|
+
expect(rootInboxAgent.scope).toBe("self-driving");
|
|
564
|
+
|
|
565
|
+
// Install signal filtering
|
|
566
|
+
runtime.installOnServices();
|
|
567
|
+
|
|
568
|
+
// Send a message between team agents
|
|
569
|
+
log("Sending message judge → planner...");
|
|
570
|
+
await system.inboxAdapter.send(
|
|
571
|
+
result.companionIds[0], // judge
|
|
572
|
+
result.rootId, // planner
|
|
573
|
+
{
|
|
574
|
+
type: "event",
|
|
575
|
+
event: "FIXUP_CREATED",
|
|
576
|
+
data: { fix: "typo correction" },
|
|
577
|
+
},
|
|
578
|
+
{ scope: "self-driving" }
|
|
579
|
+
);
|
|
580
|
+
|
|
581
|
+
const plannerInbox = await system.inboxAdapter.checkInbox(result.rootId);
|
|
582
|
+
expect(plannerInbox.length).toBeGreaterThanOrEqual(1);
|
|
583
|
+
|
|
584
|
+
// Prompt root agent to verify it's a real live process
|
|
585
|
+
log("Prompting planner...");
|
|
586
|
+
const updates: any[] = [];
|
|
587
|
+
for await (const update of system.agentManager.prompt(
|
|
588
|
+
result.rootId,
|
|
589
|
+
"Respond with: TEAM_READY"
|
|
590
|
+
)) {
|
|
591
|
+
updates.push(update);
|
|
592
|
+
}
|
|
593
|
+
expect(updates.length).toBeGreaterThan(0);
|
|
594
|
+
|
|
595
|
+
// Teardown team
|
|
596
|
+
log("Tearing down team...");
|
|
597
|
+
await runtime.teardown();
|
|
598
|
+
|
|
599
|
+
// Terminate all team agents
|
|
600
|
+
await system.agentManager.terminate(result.rootId, "cancelled");
|
|
601
|
+
for (const cid of result.companionIds) {
|
|
602
|
+
try {
|
|
603
|
+
await system.agentManager.terminate(cid, "cancelled");
|
|
604
|
+
} catch {
|
|
605
|
+
// May already be stopped via cascade
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
log("Test complete");
|
|
610
|
+
},
|
|
611
|
+
TIMEOUT.MULTI
|
|
612
|
+
);
|
|
613
|
+
|
|
614
|
+
// ── Multi-Worker with Inbox Coordination ────────────────────
|
|
615
|
+
|
|
616
|
+
it(
|
|
617
|
+
"should coordinate multiple workers via inbox messaging",
|
|
618
|
+
async () => {
|
|
619
|
+
log("Spawning coordinator + 2 workers...");
|
|
620
|
+
const coord = await system.agentManager.spawn({
|
|
621
|
+
task: "Coordinate two workers.",
|
|
622
|
+
role: "coordinator",
|
|
623
|
+
cwd: testRepo.path,
|
|
624
|
+
});
|
|
625
|
+
|
|
626
|
+
const w1 = await system.agentManager.spawn({
|
|
627
|
+
task: "Worker 1: handle frontend.",
|
|
628
|
+
role: "worker",
|
|
629
|
+
parent: coord.id,
|
|
630
|
+
cwd: testRepo.path,
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
const w2 = await system.agentManager.spawn({
|
|
634
|
+
task: "Worker 2: handle backend.",
|
|
635
|
+
role: "worker",
|
|
636
|
+
parent: coord.id,
|
|
637
|
+
cwd: testRepo.path,
|
|
638
|
+
});
|
|
639
|
+
|
|
640
|
+
log(`Coord: ${coord.id}, W1: ${w1.id}, W2: ${w2.id}`);
|
|
641
|
+
|
|
642
|
+
// Coordinator broadcasts task assignments
|
|
643
|
+
log("Broadcasting task assignments...");
|
|
644
|
+
await system.inboxAdapter.send(
|
|
645
|
+
coord.id,
|
|
646
|
+
[w1.id, w2.id],
|
|
647
|
+
{
|
|
648
|
+
type: "event",
|
|
649
|
+
event: "task_assigned",
|
|
650
|
+
data: { phase: "implementation" },
|
|
651
|
+
},
|
|
652
|
+
{ threadTag: "sprint-1", importance: "high" }
|
|
653
|
+
);
|
|
654
|
+
|
|
655
|
+
// Both workers should have the message
|
|
656
|
+
const w1Inbox = await system.inboxAdapter.checkInbox(w1.id);
|
|
657
|
+
const w2Inbox = await system.inboxAdapter.checkInbox(w2.id);
|
|
658
|
+
expect(w1Inbox.find((m) => m.content?.event === "task_assigned")).toBeDefined();
|
|
659
|
+
expect(w2Inbox.find((m) => m.content?.event === "task_assigned")).toBeDefined();
|
|
660
|
+
|
|
661
|
+
// Worker 1 reports completion
|
|
662
|
+
log("W1 reporting completion...");
|
|
663
|
+
await system.inboxAdapter.send(
|
|
664
|
+
w1.id,
|
|
665
|
+
coord.id,
|
|
666
|
+
{
|
|
667
|
+
type: "event",
|
|
668
|
+
event: "task_completed",
|
|
669
|
+
data: { worker: w1.id, component: "frontend" },
|
|
670
|
+
},
|
|
671
|
+
{ threadTag: "sprint-1", importance: "normal" }
|
|
672
|
+
);
|
|
673
|
+
|
|
674
|
+
// Worker 2 reports completion
|
|
675
|
+
log("W2 reporting completion...");
|
|
676
|
+
await system.inboxAdapter.send(
|
|
677
|
+
w2.id,
|
|
678
|
+
coord.id,
|
|
679
|
+
{
|
|
680
|
+
type: "event",
|
|
681
|
+
event: "task_completed",
|
|
682
|
+
data: { worker: w2.id, component: "backend" },
|
|
683
|
+
},
|
|
684
|
+
{ threadTag: "sprint-1", importance: "normal" }
|
|
685
|
+
);
|
|
686
|
+
|
|
687
|
+
// Coordinator should have both completion events
|
|
688
|
+
const coordInbox = await system.inboxAdapter.checkInbox(coord.id);
|
|
689
|
+
const completions = coordInbox.filter(
|
|
690
|
+
(m) => m.content?.type === "event" && m.content?.event === "task_completed"
|
|
691
|
+
);
|
|
692
|
+
expect(completions.length).toBeGreaterThanOrEqual(2);
|
|
693
|
+
|
|
694
|
+
// Read the full thread
|
|
695
|
+
const thread = await system.inboxAdapter.readThread("sprint-1");
|
|
696
|
+
// Assignment + 2 completions = at least 3 messages in thread
|
|
697
|
+
expect(thread.length).toBeGreaterThanOrEqual(3);
|
|
698
|
+
|
|
699
|
+
log("Verified full coordination flow via inbox");
|
|
700
|
+
|
|
701
|
+
// Terminate parent (cascades to workers)
|
|
702
|
+
await system.agentManager.terminate(coord.id, "completed");
|
|
703
|
+
|
|
704
|
+
expect(system.agentStore.getAgent(w1.id)!.state).toBe("stopped");
|
|
705
|
+
expect(system.agentStore.getAgent(w2.id)!.state).toBe("stopped");
|
|
706
|
+
|
|
707
|
+
log("Test complete");
|
|
708
|
+
},
|
|
709
|
+
TIMEOUT.MULTI
|
|
710
|
+
);
|
|
711
|
+
|
|
712
|
+
// ── Control Socket: Spawn via IPC ───────────────────────────
|
|
713
|
+
|
|
714
|
+
it(
|
|
715
|
+
"should spawn agent via control socket (MCP subprocess flow)",
|
|
716
|
+
async () => {
|
|
717
|
+
const { ControlClient } = await import("../../control/control-client.js");
|
|
718
|
+
|
|
719
|
+
log("Connecting control client to control socket...");
|
|
720
|
+
const controlClient = new ControlClient(system.controlSocketPath);
|
|
721
|
+
await controlClient.connect();
|
|
722
|
+
expect(controlClient.connected).toBe(true);
|
|
723
|
+
|
|
724
|
+
log("Pinging control server...");
|
|
725
|
+
const pingOk = await controlClient.ping();
|
|
726
|
+
expect(pingOk).toBe(true);
|
|
727
|
+
|
|
728
|
+
// First, spawn a coordinator via the normal API (to be the parent)
|
|
729
|
+
log("Spawning coordinator via main API...");
|
|
730
|
+
const coordinator = await system.agentManager.spawn({
|
|
731
|
+
task: "Coordinator for control socket test",
|
|
732
|
+
role: "coordinator",
|
|
733
|
+
cwd: testRepo.path,
|
|
734
|
+
});
|
|
735
|
+
|
|
736
|
+
// Now spawn a worker via the control socket (simulating MCP subprocess)
|
|
737
|
+
log("Spawning worker via control socket...");
|
|
738
|
+
const spawnResult = await controlClient.spawn({
|
|
739
|
+
task: "Worker spawned via control socket",
|
|
740
|
+
role: "worker",
|
|
741
|
+
parent: coordinator.id,
|
|
742
|
+
cwd: testRepo.path,
|
|
743
|
+
});
|
|
744
|
+
|
|
745
|
+
expect(spawnResult.agent_id).toBeDefined();
|
|
746
|
+
expect(spawnResult.role).toBe("worker");
|
|
747
|
+
log(`Worker spawned via control socket: ${spawnResult.agent_id}`);
|
|
748
|
+
|
|
749
|
+
// Verify the agent exists in AgentStore (shared SQLite)
|
|
750
|
+
const record = system.agentStore.getAgent(spawnResult.agent_id);
|
|
751
|
+
expect(record).not.toBeNull();
|
|
752
|
+
expect(record!.role).toBe("worker");
|
|
753
|
+
expect(record!.state).toBe("running");
|
|
754
|
+
expect(record!.parent_id).toBe(coordinator.id);
|
|
755
|
+
|
|
756
|
+
// Verify the agent is registered in inbox
|
|
757
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
758
|
+
const inboxAgent = inbox.storage.getAgent(spawnResult.agent_id);
|
|
759
|
+
expect(inboxAgent).toBeDefined();
|
|
760
|
+
expect(inboxAgent.status).toBe("active");
|
|
761
|
+
|
|
762
|
+
// Verify the agent appears in hierarchy
|
|
763
|
+
const hierarchy = system.agentManager.getHierarchy(coordinator.id);
|
|
764
|
+
expect(hierarchy!.totalAgents).toBe(2);
|
|
765
|
+
|
|
766
|
+
// Query via control socket (simulating MCP subprocess reads)
|
|
767
|
+
log("Querying agent via control socket...");
|
|
768
|
+
const agentFromControl = await controlClient.getAgent(spawnResult.agent_id);
|
|
769
|
+
expect(agentFromControl).toBeDefined();
|
|
770
|
+
expect((agentFromControl as any).role).toBe("worker");
|
|
771
|
+
|
|
772
|
+
const children = await controlClient.getChildren(coordinator.id);
|
|
773
|
+
expect(children).toHaveLength(1);
|
|
774
|
+
expect((children[0] as any).id).toBe(spawnResult.agent_id);
|
|
775
|
+
|
|
776
|
+
// Terminate via control socket (simulating MCP subprocess stop_agent)
|
|
777
|
+
log("Terminating worker via control socket...");
|
|
778
|
+
await controlClient.terminate(spawnResult.agent_id, "completed");
|
|
779
|
+
|
|
780
|
+
const stoppedRecord = system.agentStore.getAgent(spawnResult.agent_id);
|
|
781
|
+
expect(stoppedRecord!.state).toBe("stopped");
|
|
782
|
+
expect(stoppedRecord!.stop_reason).toBe("completed");
|
|
783
|
+
|
|
784
|
+
// Verify deregistered from inbox
|
|
785
|
+
const afterStop = inbox.storage.getAgent(spawnResult.agent_id);
|
|
786
|
+
expect(afterStop.status).toBe("offline");
|
|
787
|
+
|
|
788
|
+
// Cleanup
|
|
789
|
+
controlClient.disconnect();
|
|
790
|
+
await system.agentManager.terminate(coordinator.id, "cancelled");
|
|
791
|
+
|
|
792
|
+
log("Test complete");
|
|
793
|
+
},
|
|
794
|
+
TIMEOUT.MULTI
|
|
795
|
+
);
|
|
796
|
+
|
|
797
|
+
// ── Control Socket: Error Handling ──────────────────────────
|
|
798
|
+
|
|
799
|
+
it(
|
|
800
|
+
"should handle control socket errors correctly",
|
|
801
|
+
async () => {
|
|
802
|
+
const { ControlClient } = await import("../../control/control-client.js");
|
|
803
|
+
|
|
804
|
+
log("Connecting control client...");
|
|
805
|
+
const controlClient = new ControlClient(system.controlSocketPath);
|
|
806
|
+
await controlClient.connect();
|
|
807
|
+
|
|
808
|
+
// Try to terminate a non-existent agent
|
|
809
|
+
log("Testing terminate of non-existent agent...");
|
|
810
|
+
let terminateError: Error | null = null;
|
|
811
|
+
try {
|
|
812
|
+
await controlClient.terminate("nonexistent_agent", "cancelled");
|
|
813
|
+
} catch (err) {
|
|
814
|
+
terminateError = err as Error;
|
|
815
|
+
}
|
|
816
|
+
expect(terminateError).not.toBeNull();
|
|
817
|
+
expect(terminateError!.message).toContain("not found");
|
|
818
|
+
|
|
819
|
+
// Try to get a non-existent agent
|
|
820
|
+
log("Testing get of non-existent agent...");
|
|
821
|
+
let getError: Error | null = null;
|
|
822
|
+
try {
|
|
823
|
+
await controlClient.getAgent("nonexistent_agent");
|
|
824
|
+
} catch (err) {
|
|
825
|
+
getError = err as Error;
|
|
826
|
+
}
|
|
827
|
+
expect(getError).not.toBeNull();
|
|
828
|
+
|
|
829
|
+
controlClient.disconnect();
|
|
830
|
+
log("Test complete");
|
|
831
|
+
},
|
|
832
|
+
TIMEOUT.SPAWN
|
|
833
|
+
);
|
|
834
|
+
|
|
835
|
+
// ── Helper: detect tool calls in session updates ────────────
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* Extract tool calls from session updates.
|
|
839
|
+
*
|
|
840
|
+
* acp-factory tool_call updates have this structure:
|
|
841
|
+
* { sessionUpdate: "tool_call", title: "mcp__macro-agent__done", kind: "tool_call", ... }
|
|
842
|
+
*
|
|
843
|
+
* The tool name is in the `title` field, formatted as "mcp__<server>__<tool>" or just "<tool>".
|
|
844
|
+
*/
|
|
845
|
+
function findToolCalls(updates: any[]): { name: string; fullTitle: string; input: any }[] {
|
|
846
|
+
const calls: { name: string; fullTitle: string; input: any }[] = [];
|
|
847
|
+
for (const u of updates) {
|
|
848
|
+
const uAny = u as any;
|
|
849
|
+
|
|
850
|
+
if (
|
|
851
|
+
(uAny.sessionUpdate === "tool_call" || uAny.sessionUpdate === "tool_call_update") &&
|
|
852
|
+
uAny.title
|
|
853
|
+
) {
|
|
854
|
+
const fullTitle = uAny.title as string;
|
|
855
|
+
// Extract short name: "mcp__macro-agent__done" → "done"
|
|
856
|
+
const parts = fullTitle.split("__");
|
|
857
|
+
const shortName = parts[parts.length - 1];
|
|
858
|
+
|
|
859
|
+
if (!calls.some(c => c.fullTitle === fullTitle)) {
|
|
860
|
+
calls.push({
|
|
861
|
+
name: shortName,
|
|
862
|
+
fullTitle,
|
|
863
|
+
input: uAny.rawInput ?? uAny.input,
|
|
864
|
+
});
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
// content block format
|
|
869
|
+
if (uAny.content?.type === "tool_use") {
|
|
870
|
+
const name = uAny.content.name;
|
|
871
|
+
if (!calls.some(c => c.name === name)) {
|
|
872
|
+
calls.push({ name, fullTitle: name, input: uAny.content.input });
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
return calls;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
function getTextContent(updates: any[]): string {
|
|
880
|
+
const parts: string[] = [];
|
|
881
|
+
for (const u of updates) {
|
|
882
|
+
const uAny = u as any;
|
|
883
|
+
if (uAny.sessionUpdate === "agent_message_chunk" && uAny.content?.text) {
|
|
884
|
+
parts.push(uAny.content.text);
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
return parts.join("");
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
// ── Agent-Initiated Spawn via MCP Tool ──────────────────────
|
|
891
|
+
|
|
892
|
+
it(
|
|
893
|
+
"should allow a real agent to spawn a child via spawn_agent MCP tool",
|
|
894
|
+
async () => {
|
|
895
|
+
log("Spawning coordinator agent...");
|
|
896
|
+
const coordinator = await system.agentManager.spawn({
|
|
897
|
+
task: "You are a coordinator. When asked, use the spawn_agent tool to create a worker agent.",
|
|
898
|
+
role: "coordinator",
|
|
899
|
+
cwd: testRepo.path,
|
|
900
|
+
});
|
|
901
|
+
|
|
902
|
+
log(`Coordinator: ${coordinator.id}`);
|
|
903
|
+
|
|
904
|
+
// Prompt the coordinator to spawn a child using the MCP tool
|
|
905
|
+
log("Prompting coordinator to spawn a worker...");
|
|
906
|
+
const updates: any[] = [];
|
|
907
|
+
for await (const update of system.agentManager.prompt(
|
|
908
|
+
coordinator.id,
|
|
909
|
+
'Use the spawn_agent tool to create a worker agent with task "Write a hello world function". Do not do anything else — just call spawn_agent and report the result.'
|
|
910
|
+
)) {
|
|
911
|
+
updates.push(update);
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
log(`Got ${updates.length} updates from coordinator prompt`);
|
|
915
|
+
|
|
916
|
+
// Log update types and any text content for debugging
|
|
917
|
+
for (const u of updates) {
|
|
918
|
+
const uAny = u as any;
|
|
919
|
+
if (uAny.sessionUpdate === "agent_message_chunk" && uAny.content?.text) {
|
|
920
|
+
log(` [text] ${uAny.content.text.slice(0, 200)}`);
|
|
921
|
+
} else if (uAny.type === "tool_use" || uAny.subtype === "tool_use") {
|
|
922
|
+
log(` [tool_use] ${JSON.stringify(uAny).slice(0, 200)}`);
|
|
923
|
+
} else if (uAny.type === "tool_result" || uAny.subtype === "tool_result") {
|
|
924
|
+
log(` [tool_result] ${JSON.stringify(uAny).slice(0, 200)}`);
|
|
925
|
+
} else {
|
|
926
|
+
log(` [${uAny.sessionUpdate ?? uAny.type ?? "unknown"}]`);
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
// Wait a moment for the spawn to complete (async via control socket)
|
|
931
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
932
|
+
|
|
933
|
+
// Check if a child was spawned
|
|
934
|
+
const children = system.agentManager.getChildren(coordinator.id);
|
|
935
|
+
log(`Children found: ${children.length}`);
|
|
936
|
+
|
|
937
|
+
if (children.length > 0) {
|
|
938
|
+
log(`Child agent spawned: ${children[0].id} (role: ${children[0].role})`);
|
|
939
|
+
|
|
940
|
+
// Verify child is in AgentStore
|
|
941
|
+
const childRecord = system.agentStore.getAgent(children[0].id);
|
|
942
|
+
expect(childRecord).not.toBeNull();
|
|
943
|
+
expect(childRecord!.state).toBe("running");
|
|
944
|
+
expect(childRecord!.parent_id).toBe(coordinator.id);
|
|
945
|
+
|
|
946
|
+
// Verify child is in inbox
|
|
947
|
+
const inbox = (system.inboxAdapter as any).getInbox();
|
|
948
|
+
const childInbox = inbox.storage.getAgent(children[0].id);
|
|
949
|
+
expect(childInbox).toBeDefined();
|
|
950
|
+
expect(childInbox.status).toBe("active");
|
|
951
|
+
|
|
952
|
+
// Verify hierarchy
|
|
953
|
+
const hierarchy = system.agentManager.getHierarchy(coordinator.id);
|
|
954
|
+
expect(hierarchy!.totalAgents).toBeGreaterThanOrEqual(2);
|
|
955
|
+
|
|
956
|
+
log("Agent-initiated spawn via MCP tool verified!");
|
|
957
|
+
} else {
|
|
958
|
+
// The agent might not have called spawn_agent — check the response
|
|
959
|
+
// for tool use indicators
|
|
960
|
+
const hasToolUse = updates.some(
|
|
961
|
+
(u: any) =>
|
|
962
|
+
u.type === "tool_use" ||
|
|
963
|
+
u.subtype === "tool_use" ||
|
|
964
|
+
(typeof u.content === "object" && u.content?.type === "tool_use")
|
|
965
|
+
);
|
|
966
|
+
log(`Tool use detected in updates: ${hasToolUse}`);
|
|
967
|
+
|
|
968
|
+
// Even if the agent didn't spawn (model discretion), verify the
|
|
969
|
+
// control socket path was available
|
|
970
|
+
expect(system.controlSocketPath).toBeTruthy();
|
|
971
|
+
log("Note: Agent did not call spawn_agent (model discretion). Control socket path verified.");
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
// Cleanup
|
|
975
|
+
await system.agentManager.terminate(coordinator.id, "completed");
|
|
976
|
+
log("Test complete");
|
|
977
|
+
},
|
|
978
|
+
TIMEOUT.MULTI
|
|
979
|
+
);
|
|
980
|
+
|
|
981
|
+
// ── done() tool: give worker real work, verify done flow ────
|
|
982
|
+
|
|
983
|
+
it(
|
|
984
|
+
"should verify done() tool works when worker completes a real task",
|
|
985
|
+
async () => {
|
|
986
|
+
log("Spawning coordinator + worker...");
|
|
987
|
+
const coordinator = await system.agentManager.spawn({
|
|
988
|
+
task: "You coordinate workers. Monitor their completion status.",
|
|
989
|
+
role: "coordinator",
|
|
990
|
+
cwd: testRepo.path,
|
|
991
|
+
});
|
|
992
|
+
|
|
993
|
+
const worker = await system.agentManager.spawn({
|
|
994
|
+
task: "Create a file called task-result.txt, then call the done MCP tool to signal completion.",
|
|
995
|
+
role: "worker",
|
|
996
|
+
parent: coordinator.id,
|
|
997
|
+
cwd: testRepo.path,
|
|
998
|
+
});
|
|
999
|
+
|
|
1000
|
+
log(`Coordinator: ${coordinator.id}, Worker: ${worker.id}`);
|
|
1001
|
+
|
|
1002
|
+
// Use promptUntilDone — it follows up if the agent doesn't call done()
|
|
1003
|
+
log("Prompting worker with task + done instruction...");
|
|
1004
|
+
const result = await system.agentManager.promptUntilDone(
|
|
1005
|
+
worker.id,
|
|
1006
|
+
`Create a file at ${testRepo.path}/task-result.txt with content "task completed". After creating the file, you MUST call the "done" MCP tool with status="completed" and summary="Created task-result.txt". The done tool signals to the orchestration system that you are finished.`,
|
|
1007
|
+
{
|
|
1008
|
+
maxFollowUps: 2,
|
|
1009
|
+
onUpdate: (update: any) => {
|
|
1010
|
+
if (update.sessionUpdate === "tool_call") {
|
|
1011
|
+
log(` [tool_call] ${update.toolName ?? "unknown"}`);
|
|
1012
|
+
}
|
|
1013
|
+
},
|
|
1014
|
+
}
|
|
1015
|
+
);
|
|
1016
|
+
|
|
1017
|
+
log(`promptUntilDone result: doneCalled=${result.doneCalled}, doneStatus=${result.doneStatus}, updates=${result.updates.length}`);
|
|
1018
|
+
|
|
1019
|
+
// Check if the file was created (verifies worker did real work)
|
|
1020
|
+
const { existsSync, readFileSync } = await import("fs");
|
|
1021
|
+
const filePath = path.join(testRepo.path, "task-result.txt");
|
|
1022
|
+
const fileCreated = existsSync(filePath);
|
|
1023
|
+
log(`File created: ${fileCreated}`);
|
|
1024
|
+
if (fileCreated) {
|
|
1025
|
+
const content = readFileSync(filePath, "utf-8");
|
|
1026
|
+
log(`File content: "${content.trim()}"`);
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
// Check if done was called
|
|
1030
|
+
if (result.doneCalled) {
|
|
1031
|
+
log(`done() was called! status=${result.doneStatus}`);
|
|
1032
|
+
|
|
1033
|
+
// Dump done tool_call updates for debugging rawInput
|
|
1034
|
+
const doneUpdates = result.updates.filter(
|
|
1035
|
+
(u: any) =>
|
|
1036
|
+
(u.sessionUpdate === "tool_call" || u.sessionUpdate === "tool_call_update") &&
|
|
1037
|
+
typeof u.title === "string" &&
|
|
1038
|
+
u.title.endsWith("__done")
|
|
1039
|
+
);
|
|
1040
|
+
for (const du of doneUpdates) {
|
|
1041
|
+
const d = du as any;
|
|
1042
|
+
log(` done update: status=${d.status}, rawInput=${typeof d.rawInput === "string" ? d.rawInput.slice(0, 200) : JSON.stringify(d.rawInput)?.slice(0, 200)}`);
|
|
1043
|
+
if (d.content) {
|
|
1044
|
+
log(` done content: ${typeof d.content === "string" ? d.content.slice(0, 200) : JSON.stringify(d.content)?.slice(0, 200)}`);
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
// Wait for inbox notifications to propagate
|
|
1049
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
1050
|
+
|
|
1051
|
+
// Check coordinator's inbox for WORKER_DONE or agent_stopped
|
|
1052
|
+
const coordInbox = await system.inboxAdapter.checkInbox(coordinator.id);
|
|
1053
|
+
log(`Coordinator inbox: ${coordInbox.length} messages`);
|
|
1054
|
+
|
|
1055
|
+
const lifecycleMsgs = coordInbox.filter(
|
|
1056
|
+
(m) =>
|
|
1057
|
+
m.content?.type === "event" &&
|
|
1058
|
+
(m.content?.event === "WORKER_DONE" ||
|
|
1059
|
+
m.content?.event === "agent_stopped")
|
|
1060
|
+
);
|
|
1061
|
+
log(`Lifecycle messages to coordinator: ${lifecycleMsgs.length}`);
|
|
1062
|
+
for (const msg of lifecycleMsgs) {
|
|
1063
|
+
log(` event=${msg.content.event}, from=${msg.sender_id}, importance=${msg.importance}`);
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
if (lifecycleMsgs.length > 0) {
|
|
1067
|
+
expect(lifecycleMsgs.length).toBeGreaterThanOrEqual(1);
|
|
1068
|
+
log("Coordinator received lifecycle notification via inbox!");
|
|
1069
|
+
}
|
|
1070
|
+
} else {
|
|
1071
|
+
// done wasn't called — log what happened
|
|
1072
|
+
const text = getTextContent(result.updates);
|
|
1073
|
+
log(`Worker didn't call done(). Response: ${text.slice(0, 300)}`);
|
|
1074
|
+
|
|
1075
|
+
// Log all tool calls for debugging
|
|
1076
|
+
const allToolCalls = findToolCalls(result.updates);
|
|
1077
|
+
log(`All tool calls: ${allToolCalls.map(t => t.name).join(", ") || "none"}`);
|
|
1078
|
+
|
|
1079
|
+
// Log update types
|
|
1080
|
+
const updateTypes = result.updates
|
|
1081
|
+
.map((u: any) => u.sessionUpdate ?? u.type ?? "?")
|
|
1082
|
+
.filter((t: string) => t !== "agent_message_chunk");
|
|
1083
|
+
log(`Non-text update types: ${updateTypes.join(", ")}`);
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
// Cleanup
|
|
1087
|
+
try { await system.agentManager.terminate(worker.id, "cancelled"); } catch {}
|
|
1088
|
+
await system.agentManager.terminate(coordinator.id, "cancelled");
|
|
1089
|
+
log("Test complete");
|
|
1090
|
+
},
|
|
1091
|
+
TIMEOUT.MULTI
|
|
1092
|
+
);
|
|
1093
|
+
|
|
1094
|
+
// ── Agent spawns child, child does work, parent sees result ─
|
|
1095
|
+
|
|
1096
|
+
it(
|
|
1097
|
+
"should verify spawned child agent actually executes and produces output",
|
|
1098
|
+
async () => {
|
|
1099
|
+
log("Spawning coordinator...");
|
|
1100
|
+
const coordinator = await system.agentManager.spawn({
|
|
1101
|
+
task: "You are a coordinator. Spawn workers and check their results.",
|
|
1102
|
+
role: "coordinator",
|
|
1103
|
+
cwd: testRepo.path,
|
|
1104
|
+
});
|
|
1105
|
+
|
|
1106
|
+
log(`Coordinator: ${coordinator.id}`);
|
|
1107
|
+
|
|
1108
|
+
// Prompt coordinator to spawn a child that creates a file
|
|
1109
|
+
log("Prompting coordinator to spawn a worker that creates a file...");
|
|
1110
|
+
const spawnUpdates: any[] = [];
|
|
1111
|
+
for await (const update of system.agentManager.prompt(
|
|
1112
|
+
coordinator.id,
|
|
1113
|
+
`Use spawn_agent to create a worker with task "Create a file called hello.txt containing 'Hello from worker agent'". Then tell me the agent_id from the result.`
|
|
1114
|
+
)) {
|
|
1115
|
+
spawnUpdates.push(update);
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
const spawnToolCalls = findToolCalls(spawnUpdates);
|
|
1119
|
+
const spawnCalled = spawnToolCalls.some(t => t.name === "spawn_agent");
|
|
1120
|
+
log(`spawn_agent called: ${spawnCalled}`);
|
|
1121
|
+
|
|
1122
|
+
// Wait for child to be created
|
|
1123
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
1124
|
+
|
|
1125
|
+
const children = system.agentManager.getChildren(coordinator.id);
|
|
1126
|
+
log(`Children: ${children.length}`);
|
|
1127
|
+
|
|
1128
|
+
if (children.length > 0) {
|
|
1129
|
+
const child = children[0];
|
|
1130
|
+
log(`Child: ${child.id} (state: ${child.state})`);
|
|
1131
|
+
|
|
1132
|
+
// The child is a real Claude Code process.
|
|
1133
|
+
// Prompt it to create the file.
|
|
1134
|
+
if (system.agentManager.hasActiveSession(child.id)) {
|
|
1135
|
+
log("Prompting child to create file...");
|
|
1136
|
+
const childUpdates: any[] = [];
|
|
1137
|
+
for await (const update of system.agentManager.prompt(
|
|
1138
|
+
child.id,
|
|
1139
|
+
`Create a file at ${testRepo.path}/hello.txt with content "Hello from worker agent". Use the Write tool.`
|
|
1140
|
+
)) {
|
|
1141
|
+
childUpdates.push(update);
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
const childToolCalls = findToolCalls(childUpdates);
|
|
1145
|
+
log(`Child tool calls: ${childToolCalls.map(t => t.name).join(", ") || "none"}`);
|
|
1146
|
+
|
|
1147
|
+
// Wait for file creation
|
|
1148
|
+
await new Promise((r) => setTimeout(r, 1000));
|
|
1149
|
+
|
|
1150
|
+
// Verify the file was created
|
|
1151
|
+
const { existsSync, readFileSync } = await import("fs");
|
|
1152
|
+
const filePath = path.join(testRepo.path, "hello.txt");
|
|
1153
|
+
if (existsSync(filePath)) {
|
|
1154
|
+
const content = readFileSync(filePath, "utf-8");
|
|
1155
|
+
log(`File created! Content: "${content.trim()}"`);
|
|
1156
|
+
expect(content).toContain("Hello");
|
|
1157
|
+
} else {
|
|
1158
|
+
log("File not created (agent may have used different path)");
|
|
1159
|
+
// Check if child used any write-like tools
|
|
1160
|
+
const wroteFile = childToolCalls.some(
|
|
1161
|
+
t => t.name === "Write" || t.name === "write" || t.name === "Bash"
|
|
1162
|
+
);
|
|
1163
|
+
log(`Child attempted file write: ${wroteFile}`);
|
|
1164
|
+
}
|
|
1165
|
+
}
|
|
1166
|
+
} else {
|
|
1167
|
+
log("No children spawned — spawn_agent may not have been called");
|
|
1168
|
+
const text = getTextContent(spawnUpdates);
|
|
1169
|
+
log(`Coordinator response: ${text.slice(0, 200)}`);
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
// Cleanup
|
|
1173
|
+
for (const child of children) {
|
|
1174
|
+
try { await system.agentManager.terminate(child.id, "cancelled"); } catch {}
|
|
1175
|
+
}
|
|
1176
|
+
await system.agentManager.terminate(coordinator.id, "cancelled");
|
|
1177
|
+
log("Test complete");
|
|
1178
|
+
},
|
|
1179
|
+
TIMEOUT.MULTI
|
|
1180
|
+
);
|
|
1181
|
+
|
|
1182
|
+
// ── Agent calls stop_agent on a child ───────────────────────
|
|
1183
|
+
|
|
1184
|
+
it(
|
|
1185
|
+
"should verify agent can stop a child via stop_agent MCP tool",
|
|
1186
|
+
async () => {
|
|
1187
|
+
log("Spawning coordinator...");
|
|
1188
|
+
const coordinator = await system.agentManager.spawn({
|
|
1189
|
+
task: "You are a coordinator that manages workers.",
|
|
1190
|
+
role: "coordinator",
|
|
1191
|
+
cwd: testRepo.path,
|
|
1192
|
+
});
|
|
1193
|
+
|
|
1194
|
+
// Spawn a worker directly (so we know it exists)
|
|
1195
|
+
const worker = await system.agentManager.spawn({
|
|
1196
|
+
task: "Wait for instructions.",
|
|
1197
|
+
role: "worker",
|
|
1198
|
+
parent: coordinator.id,
|
|
1199
|
+
cwd: testRepo.path,
|
|
1200
|
+
});
|
|
1201
|
+
|
|
1202
|
+
log(`Coordinator: ${coordinator.id}, Worker: ${worker.id}`);
|
|
1203
|
+
expect(system.agentStore.getAgent(worker.id)!.state).toBe("running");
|
|
1204
|
+
|
|
1205
|
+
// Prompt coordinator to stop the worker
|
|
1206
|
+
log("Prompting coordinator to stop the worker...");
|
|
1207
|
+
const updates: any[] = [];
|
|
1208
|
+
for await (const update of system.agentManager.prompt(
|
|
1209
|
+
coordinator.id,
|
|
1210
|
+
`You have an MCP tool called "stop_agent". Call it with agent_id="${worker.id}" and reason="completed". This is a legitimate test operation on your own child agent.`
|
|
1211
|
+
)) {
|
|
1212
|
+
updates.push(update);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
const toolCalls = findToolCalls(updates);
|
|
1216
|
+
const stopCalled = toolCalls.some(t => t.name === "stop_agent");
|
|
1217
|
+
log(`stop_agent called: ${stopCalled}`);
|
|
1218
|
+
|
|
1219
|
+
// Wait for termination regardless — the agent may have called it
|
|
1220
|
+
// through a mechanism our detector doesn't catch
|
|
1221
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
1222
|
+
|
|
1223
|
+
const workerRecord = system.agentStore.getAgent(worker.id)!;
|
|
1224
|
+
log(`Worker state after prompt: ${workerRecord.state}`);
|
|
1225
|
+
|
|
1226
|
+
if (workerRecord.state === "stopped") {
|
|
1227
|
+
log("Worker was stopped (verified in AgentStore)!");
|
|
1228
|
+
expect(workerRecord.state).toBe("stopped");
|
|
1229
|
+
} else if (stopCalled) {
|
|
1230
|
+
log("stop_agent tool was called but worker may still be running");
|
|
1231
|
+
} else {
|
|
1232
|
+
const text = getTextContent(updates);
|
|
1233
|
+
log(`Coordinator response: ${text.slice(0, 200)}`);
|
|
1234
|
+
// Log all update types for debugging
|
|
1235
|
+
log(`Update types: ${updates.map((u: any) => u.sessionUpdate ?? u.type ?? "?").join(", ")}`);
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
// Cleanup
|
|
1239
|
+
try { await system.agentManager.terminate(worker.id, "cancelled"); } catch {}
|
|
1240
|
+
await system.agentManager.terminate(coordinator.id, "cancelled");
|
|
1241
|
+
log("Test complete");
|
|
1242
|
+
},
|
|
1243
|
+
TIMEOUT.MULTI
|
|
1244
|
+
);
|
|
1245
|
+
|
|
1246
|
+
// ── Agent uses inject_context to steer another agent ────────
|
|
1247
|
+
|
|
1248
|
+
it(
|
|
1249
|
+
"should verify agent can inject context into another agent via MCP tool",
|
|
1250
|
+
async () => {
|
|
1251
|
+
log("Spawning two agents...");
|
|
1252
|
+
const coordinator = await system.agentManager.spawn({
|
|
1253
|
+
task: "You coordinate workers. Use inject_context to steer them.",
|
|
1254
|
+
role: "coordinator",
|
|
1255
|
+
cwd: testRepo.path,
|
|
1256
|
+
});
|
|
1257
|
+
|
|
1258
|
+
const worker = await system.agentManager.spawn({
|
|
1259
|
+
task: "Wait for instructions.",
|
|
1260
|
+
role: "worker",
|
|
1261
|
+
parent: coordinator.id,
|
|
1262
|
+
cwd: testRepo.path,
|
|
1263
|
+
});
|
|
1264
|
+
|
|
1265
|
+
log(`Coordinator: ${coordinator.id}, Worker: ${worker.id}`);
|
|
1266
|
+
|
|
1267
|
+
// First, have the coordinator spawn a child itself so it "knows" about it
|
|
1268
|
+
log("Having coordinator spawn its own child first...");
|
|
1269
|
+
const spawnUpdates: any[] = [];
|
|
1270
|
+
for await (const update of system.agentManager.prompt(
|
|
1271
|
+
coordinator.id,
|
|
1272
|
+
`Use spawn_agent to create a worker with task "Wait for context updates".`
|
|
1273
|
+
)) {
|
|
1274
|
+
spawnUpdates.push(update);
|
|
1275
|
+
}
|
|
1276
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
1277
|
+
|
|
1278
|
+
const children = system.agentManager.getChildren(coordinator.id);
|
|
1279
|
+
const targetId = children.length > 0
|
|
1280
|
+
? children[children.length - 1].id // Use the coordinator's own child
|
|
1281
|
+
: worker.id; // Fallback to our manually spawned worker
|
|
1282
|
+
|
|
1283
|
+
log(`Target for inject_context: ${targetId}`);
|
|
1284
|
+
|
|
1285
|
+
// Prompt coordinator to inject context
|
|
1286
|
+
log("Prompting coordinator to inject context...");
|
|
1287
|
+
const updates: any[] = [];
|
|
1288
|
+
for await (const update of system.agentManager.prompt(
|
|
1289
|
+
coordinator.id,
|
|
1290
|
+
`Use the inject_context tool to send a message to agent "${targetId}". Set content to "New task assignment: implement feature #42" and urgent to true.`
|
|
1291
|
+
)) {
|
|
1292
|
+
updates.push(update);
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
const toolCalls = findToolCalls(updates);
|
|
1296
|
+
const injectCalled = toolCalls.some(t => t.name === "inject_context");
|
|
1297
|
+
log(`inject_context called: ${injectCalled}`);
|
|
1298
|
+
|
|
1299
|
+
// Check inbox regardless of tool call detection
|
|
1300
|
+
await new Promise((r) => setTimeout(r, 2000));
|
|
1301
|
+
|
|
1302
|
+
const targetInbox = await system.inboxAdapter.checkInbox(targetId);
|
|
1303
|
+
log(`Target inbox: ${targetInbox.length} messages`);
|
|
1304
|
+
|
|
1305
|
+
const injectedMsg = targetInbox.find(
|
|
1306
|
+
(m) => m.sender_id === coordinator.id
|
|
1307
|
+
);
|
|
1308
|
+
|
|
1309
|
+
if (injectedMsg) {
|
|
1310
|
+
log(`Injected message found! importance=${injectedMsg.importance}, subject=${injectedMsg.subject ?? "none"}`);
|
|
1311
|
+
log("Agent-initiated context injection verified!");
|
|
1312
|
+
} else if (injectCalled) {
|
|
1313
|
+
log("inject_context tool was called but message not found in inbox");
|
|
1314
|
+
} else {
|
|
1315
|
+
const text = getTextContent(updates);
|
|
1316
|
+
log(`Coordinator response: ${text.slice(0, 200)}`);
|
|
1317
|
+
log(`Update types: ${updates.map((u: any) => u.sessionUpdate ?? u.type ?? "?").join(", ")}`);
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
// Cleanup — terminate all children, then coordinator
|
|
1321
|
+
for (const child of system.agentManager.getChildren(coordinator.id)) {
|
|
1322
|
+
try { await system.agentManager.terminate(child.id, "cancelled"); } catch {}
|
|
1323
|
+
}
|
|
1324
|
+
try { await system.agentManager.terminate(worker.id, "cancelled"); } catch {}
|
|
1325
|
+
await system.agentManager.terminate(coordinator.id, "completed");
|
|
1326
|
+
log("Test complete");
|
|
1327
|
+
},
|
|
1328
|
+
TIMEOUT.MULTI
|
|
1329
|
+
);
|
|
1330
|
+
});
|