macro-agent 0.1.2 → 0.1.4
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 +38 -0
- package/dist/cognitive/workspace-handler.d.ts.map +1 -0
- package/dist/cognitive/workspace-handler.js +136 -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 +170 -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 +277 -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 +27 -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 +160 -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 +224 -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 +331 -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
package/dist/acp/macro-agent.js
CHANGED
|
@@ -1,1306 +1,668 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* MacroAgent
|
|
2
|
+
* MacroAgent — ACP Agent implementation for macro-agent.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Bridges the ACP protocol to macro-agent's V2 services:
|
|
5
|
+
* - session/new → agentManager.getOrCreateHeadManager()
|
|
6
|
+
* - session/prompt → agentManager.prompt() with streaming
|
|
7
|
+
* - Extension methods → spawn, mount, fork, hierarchy, tasks, etc.
|
|
8
|
+
*
|
|
9
|
+
* @module acp/macro-agent
|
|
6
10
|
*/
|
|
11
|
+
import { RequestError } from "@agentclientprotocol/sdk";
|
|
7
12
|
import { SessionMapper } from "./session-mapper.js";
|
|
8
13
|
import { ACPError } from "./types.js";
|
|
9
|
-
import {
|
|
10
|
-
import { DefaultRoleRegistry } from "../roles/registry.js";
|
|
11
|
-
// ─────────────────────────────────────────────────────────────────
|
|
12
|
-
// Helpers
|
|
13
|
-
// ─────────────────────────────────────────────────────────────────
|
|
14
|
-
/** Extract a plain-text output string from `rawOutput` (string | ContentBlock[] | undefined). */
|
|
15
|
-
function extractToolOutput(rawOutput) {
|
|
16
|
-
if (typeof rawOutput === "string")
|
|
17
|
-
return rawOutput;
|
|
18
|
-
if (Array.isArray(rawOutput)) {
|
|
19
|
-
return rawOutput
|
|
20
|
-
.filter((item) => item.type === "text" && typeof item.text === "string")
|
|
21
|
-
.map((item) => item.text)
|
|
22
|
-
.join("\n") || undefined;
|
|
23
|
-
}
|
|
24
|
-
return undefined;
|
|
25
|
-
}
|
|
14
|
+
import { execSync } from "node:child_process";
|
|
26
15
|
// ─────────────────────────────────────────────────────────────────
|
|
27
|
-
//
|
|
16
|
+
// Extension method names
|
|
28
17
|
// ─────────────────────────────────────────────────────────────────
|
|
29
|
-
const PROTOCOL_VERSION = 1;
|
|
30
18
|
const SUPPORTED_EXTENSIONS = [
|
|
31
19
|
"_macro/spawnAgent",
|
|
32
20
|
"_macro/getHierarchy",
|
|
33
21
|
"_macro/getTask",
|
|
34
22
|
"_macro/mountAgent",
|
|
35
23
|
"_macro/forkAgent",
|
|
36
|
-
"_macro/sendPeerMessage",
|
|
37
|
-
"_macro/sendPeerRequest",
|
|
38
|
-
"_macro/deliverPeerMessage",
|
|
39
|
-
"_macro/deliverPeerRequest",
|
|
40
|
-
"_macro/grantCapability",
|
|
41
|
-
"_macro/revokeCapability",
|
|
42
|
-
"_macro/getCapabilities",
|
|
43
|
-
"_macro/checkCapability",
|
|
44
|
-
"_macro/respondToPermission",
|
|
45
|
-
"_macro/cancelPermission",
|
|
46
|
-
"_macro/setPermissionMode",
|
|
47
24
|
"_macro/resume",
|
|
48
25
|
"_macro/getHistory",
|
|
49
26
|
"_macro/getModels",
|
|
27
|
+
"_macro/respondToPermission",
|
|
28
|
+
"_macro/cancelPermission",
|
|
29
|
+
"_macro/setPermissionMode",
|
|
30
|
+
];
|
|
31
|
+
const STUBBED_PEER_EXTENSIONS = [
|
|
32
|
+
"_macro/listPeers",
|
|
33
|
+
"_macro/getPeer",
|
|
34
|
+
"_macro/sendToPeer",
|
|
35
|
+
"_macro/subscribePeer",
|
|
36
|
+
"_macro/unsubscribePeer",
|
|
37
|
+
"_macro/getCapabilities",
|
|
38
|
+
"_macro/setCapabilities",
|
|
39
|
+
"_macro/negotiateCapabilities",
|
|
50
40
|
];
|
|
51
41
|
// ─────────────────────────────────────────────────────────────────
|
|
52
|
-
//
|
|
42
|
+
// Type Guards
|
|
53
43
|
// ─────────────────────────────────────────────────────────────────
|
|
44
|
+
/** ACP-standard session update type discriminants. */
|
|
45
|
+
const ACP_SESSION_UPDATE_TYPES = new Set([
|
|
46
|
+
"user_message_chunk",
|
|
47
|
+
"agent_message_chunk",
|
|
48
|
+
"agent_thought_chunk",
|
|
49
|
+
"tool_call",
|
|
50
|
+
"tool_call_update",
|
|
51
|
+
"plan",
|
|
52
|
+
"available_commands_update",
|
|
53
|
+
"current_mode_update",
|
|
54
|
+
"config_option_update",
|
|
55
|
+
"session_info_update",
|
|
56
|
+
]);
|
|
54
57
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
58
|
+
* Type guard: returns true if the update is an ACP-standard SessionUpdate
|
|
59
|
+
* (not an acp-factory extension like PermissionRequestUpdate or CompactionUpdate).
|
|
57
60
|
*/
|
|
58
|
-
function
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
function isACPSessionUpdate(update) {
|
|
62
|
+
return ("sessionUpdate" in update &&
|
|
63
|
+
ACP_SESSION_UPDATE_TYPES.has(update.sessionUpdate));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Type guard: returns true if the update is a PermissionRequestUpdate
|
|
67
|
+
* from acp-factory (emitted when the agent is in interactive permission mode).
|
|
68
|
+
*/
|
|
69
|
+
function isPermissionRequestUpdate(update) {
|
|
70
|
+
return ("sessionUpdate" in update &&
|
|
71
|
+
update.sessionUpdate === "permission_request");
|
|
65
72
|
}
|
|
66
73
|
// ─────────────────────────────────────────────────────────────────
|
|
67
|
-
//
|
|
74
|
+
// Factory
|
|
68
75
|
// ─────────────────────────────────────────────────────────────────
|
|
69
76
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
77
|
+
* Create a macro-agent ACP handler for an AgentSideConnection.
|
|
78
|
+
*
|
|
79
|
+
* Usage:
|
|
80
|
+
* ```ts
|
|
81
|
+
* new AgentSideConnection(
|
|
82
|
+
* (conn) => createMacroAgent(conn, { system }),
|
|
83
|
+
* stream,
|
|
84
|
+
* );
|
|
85
|
+
* ```
|
|
72
86
|
*/
|
|
73
|
-
export
|
|
74
|
-
|
|
75
|
-
agentManager;
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
this.agentManager = config.agentManager;
|
|
94
|
-
this.eventStore = config.eventStore;
|
|
95
|
-
this.taskManager = config.taskManager;
|
|
96
|
-
this.peerManager = config.peerManager;
|
|
97
|
-
this.capabilityManager = config.capabilityManager;
|
|
98
|
-
this.roleRegistry = config.roleRegistry ?? new DefaultRoleRegistry();
|
|
99
|
-
this.sessionMapper = new SessionMapper(config.eventStore);
|
|
100
|
-
this.defaultCwd = config.defaultCwd ?? process.cwd();
|
|
101
|
-
// Recover persisted sessions from the EventStore
|
|
102
|
-
const recovered = this.sessionMapper.recoverFromStore();
|
|
103
|
-
if (recovered > 0) {
|
|
104
|
-
console.log(`[MacroAgent] Recovered ${recovered} session(s) from EventStore`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// ─────────────────────────────────────────────────────────────────
|
|
108
|
-
// Core ACP Methods
|
|
109
|
-
// ─────────────────────────────────────────────────────────────────
|
|
110
|
-
/**
|
|
111
|
-
* Initialize the connection and advertise capabilities
|
|
112
|
-
*
|
|
113
|
-
* Reads configuration from `params._meta?.macroConfig` if provided.
|
|
114
|
-
* This allows each macro-agent instance to have different settings.
|
|
115
|
-
*/
|
|
116
|
-
async initialize(params) {
|
|
117
|
-
// Extract macro-agent config from _meta if provided
|
|
118
|
-
const meta = params._meta;
|
|
119
|
-
if (meta?.macroConfig) {
|
|
120
|
-
this.initConfig = meta.macroConfig;
|
|
121
|
-
// Apply defaultCwd from init config if provided
|
|
122
|
-
if (this.initConfig.defaultCwd) {
|
|
123
|
-
this.defaultCwd = this.initConfig.defaultCwd;
|
|
87
|
+
export function createMacroAgent(connection, config) {
|
|
88
|
+
const { system, initConfig } = config;
|
|
89
|
+
const { agentManager, inboxAdapter, tasksAdapter } = system;
|
|
90
|
+
const sessionMapper = new SessionMapper();
|
|
91
|
+
const defaultCwd = initConfig?.defaultCwd ?? process.cwd();
|
|
92
|
+
// Per-session state for trajectory tracking
|
|
93
|
+
let checkpointCounter = 0;
|
|
94
|
+
let firstPrompt = null;
|
|
95
|
+
const sessionStartedAt = new Date().toISOString();
|
|
96
|
+
// Git info (cached — read once per session)
|
|
97
|
+
let gitInfo = null;
|
|
98
|
+
function getGitInfo(cwd) {
|
|
99
|
+
if (gitInfo)
|
|
100
|
+
return gitInfo;
|
|
101
|
+
try {
|
|
102
|
+
const branch = execSync("git rev-parse --abbrev-ref HEAD", { cwd, timeout: 3000 }).toString().trim() || null;
|
|
103
|
+
const commitHash = execSync("git rev-parse HEAD", { cwd, timeout: 3000 }).toString().trim() || null;
|
|
104
|
+
let remoteUrl = null;
|
|
105
|
+
try {
|
|
106
|
+
remoteUrl = execSync("git remote get-url origin", { cwd, timeout: 3000 }).toString().trim() || null;
|
|
124
107
|
}
|
|
108
|
+
catch { /* no remote */ }
|
|
109
|
+
gitInfo = { branch, commitHash, remoteUrl };
|
|
125
110
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
_meta: {
|
|
131
|
-
extensions: SUPPORTED_EXTENSIONS,
|
|
132
|
-
agentType: "macro-agent",
|
|
133
|
-
// Echo back the config so client knows what was applied
|
|
134
|
-
appliedConfig: this.initConfig,
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Create a new session by spawning a head manager
|
|
141
|
-
*/
|
|
142
|
-
async newSession(params) {
|
|
143
|
-
const cwd = params.cwd ?? this.defaultCwd;
|
|
144
|
-
// Build head manager options from init config
|
|
145
|
-
const defaultConfig = this.initConfig.defaultSubAgentConfig;
|
|
146
|
-
const permissionModeToUse = defaultConfig?.permissionMode;
|
|
147
|
-
// Spawn a new head manager for this session
|
|
148
|
-
const spawned = await this.agentManager.getOrCreateHeadManager({
|
|
149
|
-
cwd,
|
|
150
|
-
forceNew: true, // Always create new for newSession
|
|
151
|
-
permissionMode: permissionModeToUse,
|
|
152
|
-
systemPrompt: this.buildSystemPrompt(),
|
|
153
|
-
});
|
|
154
|
-
// Create session mapping
|
|
155
|
-
const acpSessionId = spawned.session_id;
|
|
156
|
-
this.sessionMapper.createMapping(acpSessionId, spawned.id);
|
|
157
|
-
// Create abort controller for cancellation
|
|
158
|
-
this.cancellationControllers.set(acpSessionId, new AbortController());
|
|
159
|
-
// Create a conversation in EventStore for history tracking
|
|
160
|
-
this.ensureConversation(acpSessionId, spawned.id);
|
|
161
|
-
// Emit session_info_update so client has title/timestamps
|
|
162
|
-
await this.emitSessionInfo(acpSessionId);
|
|
163
|
-
return {
|
|
164
|
-
sessionId: acpSessionId,
|
|
165
|
-
models: buildModelState(spawned.session.models),
|
|
166
|
-
};
|
|
111
|
+
catch {
|
|
112
|
+
gitInfo = { branch: null, commitHash: null, remoteUrl: null };
|
|
113
|
+
}
|
|
114
|
+
return gitInfo;
|
|
167
115
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
116
|
+
// ── Helpers ──────────────────────────────────────────────────
|
|
117
|
+
function getSessionOrThrow(sessionId) {
|
|
118
|
+
const mapping = sessionMapper.getMapping(sessionId);
|
|
119
|
+
if (!mapping) {
|
|
120
|
+
throw RequestError.invalidParams({ sessionId }, `Session not found: ${sessionId}`);
|
|
121
|
+
}
|
|
122
|
+
return mapping;
|
|
123
|
+
}
|
|
124
|
+
// ── Extension dispatcher ────────────────────────────────────
|
|
125
|
+
async function handleExtension(method, params) {
|
|
126
|
+
// Check if it's a stubbed peer method
|
|
127
|
+
if (STUBBED_PEER_EXTENSIONS.includes(method)) {
|
|
128
|
+
throw new ACPError(`Peer manager not available: ${method}`, "NO_PEER_MANAGER", { method });
|
|
129
|
+
}
|
|
130
|
+
switch (method) {
|
|
131
|
+
case "_macro/spawnAgent": {
|
|
132
|
+
const task = params.task;
|
|
133
|
+
if (!task)
|
|
134
|
+
throw RequestError.invalidParams(params, "task is required");
|
|
135
|
+
const spawned = await agentManager.spawn({
|
|
136
|
+
task,
|
|
137
|
+
parent: params.parent,
|
|
138
|
+
cwd: params.cwd ?? defaultCwd,
|
|
139
|
+
role: params.role,
|
|
140
|
+
permissionMode: params.permissionMode,
|
|
141
|
+
});
|
|
142
|
+
return {
|
|
143
|
+
agentId: spawned.id,
|
|
144
|
+
sessionId: spawned.session_id,
|
|
145
|
+
role: spawned.agent.role,
|
|
146
|
+
state: spawned.agent.state,
|
|
147
|
+
};
|
|
184
148
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
149
|
+
case "_macro/getHierarchy": {
|
|
150
|
+
const agentId = params.agentId;
|
|
151
|
+
if (!agentId)
|
|
152
|
+
throw RequestError.invalidParams(params, "agentId is required");
|
|
153
|
+
const hierarchy = agentManager.getHierarchy(agentId, {
|
|
154
|
+
depth: params.depth,
|
|
155
|
+
});
|
|
156
|
+
return { hierarchy: hierarchy ?? null };
|
|
157
|
+
}
|
|
158
|
+
case "_macro/getTask": {
|
|
159
|
+
const taskId = params.taskId;
|
|
160
|
+
if (!taskId)
|
|
161
|
+
throw RequestError.invalidParams(params, "taskId is required");
|
|
162
|
+
const task = await tasksAdapter.getTask(taskId);
|
|
163
|
+
return { task };
|
|
164
|
+
}
|
|
165
|
+
case "_macro/mountAgent": {
|
|
166
|
+
const sessionId = params.sessionId;
|
|
167
|
+
const agentId = params.agentId;
|
|
168
|
+
if (!sessionId || !agentId) {
|
|
169
|
+
throw RequestError.invalidParams(params, "sessionId and agentId are required");
|
|
170
|
+
}
|
|
171
|
+
// Verify the agent exists
|
|
172
|
+
const agent = agentManager.get(agentId);
|
|
173
|
+
if (!agent) {
|
|
174
|
+
throw new ACPError(`Agent not found: ${agentId}`, "AGENT_NOT_FOUND", { agentId });
|
|
199
175
|
}
|
|
200
|
-
|
|
201
|
-
await this.emitSessionInfo(acpSessionId);
|
|
202
|
-
const activeSession = this.agentManager.getSession(existing.id);
|
|
176
|
+
const previousAgentId = sessionMapper.mount(sessionId, agentId);
|
|
203
177
|
return {
|
|
204
|
-
|
|
178
|
+
mounted: true,
|
|
179
|
+
agentId,
|
|
180
|
+
previousAgentId: previousAgentId ?? null,
|
|
205
181
|
};
|
|
206
182
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
// No existing agent found - try to get or create with the specific session ID
|
|
221
|
-
console.log(`[MacroAgent] loadSession: No existing agent for session ${acpSessionId}, creating new`);
|
|
222
|
-
const defaultConfig = this.initConfig.defaultSubAgentConfig;
|
|
223
|
-
const spawned = await this.agentManager.getOrCreateHeadManager({
|
|
224
|
-
cwd,
|
|
225
|
-
sessionId: acpSessionId,
|
|
226
|
-
permissionMode: defaultConfig?.permissionMode,
|
|
227
|
-
});
|
|
228
|
-
// Create session mapping
|
|
229
|
-
this.sessionMapper.createMapping(acpSessionId, spawned.id);
|
|
230
|
-
this.cancellationControllers.set(acpSessionId, new AbortController());
|
|
231
|
-
this.ensureConversation(acpSessionId, spawned.id);
|
|
232
|
-
await this.emitSessionInfo(acpSessionId);
|
|
233
|
-
return {
|
|
234
|
-
models: buildModelState(spawned.session.models),
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Authenticate - macro-agent doesn't require authentication
|
|
239
|
-
*/
|
|
240
|
-
async authenticate(_params) {
|
|
241
|
-
// No authentication required
|
|
242
|
-
return {};
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Process a prompt by routing to the mapped agent
|
|
246
|
-
*/
|
|
247
|
-
async prompt(params) {
|
|
248
|
-
const acpSessionId = params.sessionId;
|
|
249
|
-
// Get the mapped agent
|
|
250
|
-
const agentId = this.sessionMapper.getAgentIdOrThrow(acpSessionId);
|
|
251
|
-
// Get or set up abort controller
|
|
252
|
-
let abortController = this.cancellationControllers.get(acpSessionId);
|
|
253
|
-
if (!abortController || abortController.signal.aborted) {
|
|
254
|
-
abortController = new AbortController();
|
|
255
|
-
this.cancellationControllers.set(acpSessionId, abortController);
|
|
256
|
-
}
|
|
257
|
-
// Extract message content from prompt blocks
|
|
258
|
-
const messageContent = this.extractMessageContent(params.prompt);
|
|
259
|
-
// Mark session as processing (for health monitoring)
|
|
260
|
-
this.sessionMapper.setProcessing(acpSessionId, true);
|
|
261
|
-
// Initialize prompt buffer and tool info cache for history accumulation
|
|
262
|
-
this.promptBuffers.set(acpSessionId, { parts: [] });
|
|
263
|
-
this.toolInfoCaches.set(acpSessionId, new Map());
|
|
264
|
-
try {
|
|
265
|
-
// Stream responses from the agent
|
|
266
|
-
for await (const update of this.agentManager.prompt(agentId, messageContent)) {
|
|
267
|
-
// Check for cancellation
|
|
268
|
-
if (abortController.signal.aborted) {
|
|
183
|
+
case "_macro/forkAgent": {
|
|
184
|
+
const sourceAgentId = params.sourceAgentId;
|
|
185
|
+
if (!sourceAgentId) {
|
|
186
|
+
throw RequestError.invalidParams(params, "sourceAgentId is required");
|
|
187
|
+
}
|
|
188
|
+
try {
|
|
189
|
+
const forked = await agentManager.forkAgent(sourceAgentId, {
|
|
190
|
+
name: params.name,
|
|
191
|
+
prompt: params.prompt,
|
|
192
|
+
cwd: params.cwd,
|
|
193
|
+
});
|
|
269
194
|
return {
|
|
270
|
-
|
|
195
|
+
agentId: forked.id,
|
|
196
|
+
sessionId: forked.session_id,
|
|
271
197
|
};
|
|
272
198
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
}
|
|
276
|
-
// Persist conversation turns for history
|
|
277
|
-
this.recordPromptTurns(acpSessionId, agentId, messageContent);
|
|
278
|
-
// Emit updated session info after prompt completes
|
|
279
|
-
await this.emitSessionInfo(acpSessionId);
|
|
280
|
-
return {
|
|
281
|
-
stopReason: "end_turn",
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
catch (error) {
|
|
285
|
-
// Handle errors
|
|
286
|
-
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
287
|
-
// Send error as session update
|
|
288
|
-
await this.connection.sessionUpdate({
|
|
289
|
-
sessionId: acpSessionId,
|
|
290
|
-
update: {
|
|
291
|
-
sessionUpdate: "agent_message_chunk",
|
|
292
|
-
content: { type: "text", text: `Error: ${errorMessage}` },
|
|
293
|
-
},
|
|
294
|
-
});
|
|
295
|
-
return {
|
|
296
|
-
stopReason: "end_turn",
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
finally {
|
|
300
|
-
// Mark session as not processing (for health monitoring)
|
|
301
|
-
this.sessionMapper.setProcessing(acpSessionId, false);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Cancel ongoing operations for a session
|
|
306
|
-
*/
|
|
307
|
-
async cancel(params) {
|
|
308
|
-
const acpSessionId = params.sessionId;
|
|
309
|
-
// Signal cancellation
|
|
310
|
-
const controller = this.cancellationControllers.get(acpSessionId);
|
|
311
|
-
if (controller) {
|
|
312
|
-
controller.abort();
|
|
313
|
-
}
|
|
314
|
-
// Get the mapped agent ID for this session
|
|
315
|
-
const agentId = this.sessionMapper.getAgentId(acpSessionId);
|
|
316
|
-
if (!agentId) {
|
|
317
|
-
// No agent mapped - just clean up the controller
|
|
318
|
-
this.cancellationControllers.delete(acpSessionId);
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
// Terminate the agent (which kills the subprocess)
|
|
322
|
-
try {
|
|
323
|
-
await this.agentManager.terminate(agentId, "cancelled");
|
|
324
|
-
}
|
|
325
|
-
catch (error) {
|
|
326
|
-
// Agent may already be stopped - log but don't throw
|
|
327
|
-
console.warn(`[MacroAgent] Error terminating agent ${agentId}:`, error instanceof Error ? error.message : String(error));
|
|
328
|
-
}
|
|
329
|
-
// Clean up resources
|
|
330
|
-
this.cancellationControllers.delete(acpSessionId);
|
|
331
|
-
this.sessionMapper.removeMapping(acpSessionId);
|
|
332
|
-
}
|
|
333
|
-
// ─────────────────────────────────────────────────────────────────
|
|
334
|
-
// Extension Methods
|
|
335
|
-
// ─────────────────────────────────────────────────────────────────
|
|
336
|
-
/**
|
|
337
|
-
* Route extension method calls to handlers
|
|
338
|
-
*/
|
|
339
|
-
async extMethod(method, params) {
|
|
340
|
-
// Method may come with or without underscore prefix depending on caller
|
|
341
|
-
// SDK calls with full name (e.g., "_macro/spawnAgent"), direct calls may omit it
|
|
342
|
-
const fullMethod = (method.startsWith("_") ? method : `_${method}`);
|
|
343
|
-
switch (fullMethod) {
|
|
344
|
-
case "_macro/spawnAgent":
|
|
345
|
-
return this.handleSpawnAgent(params);
|
|
346
|
-
case "_macro/getHierarchy":
|
|
347
|
-
return this.handleGetHierarchy(params);
|
|
348
|
-
case "_macro/getTask":
|
|
349
|
-
return this.handleGetTask(params);
|
|
350
|
-
case "_macro/mountAgent":
|
|
351
|
-
return this.handleMountAgent(params);
|
|
352
|
-
case "_macro/forkAgent":
|
|
353
|
-
return this.handleForkAgent(params);
|
|
354
|
-
case "_macro/sendPeerMessage":
|
|
355
|
-
return this.handleSendPeerMessage(params);
|
|
356
|
-
case "_macro/sendPeerRequest":
|
|
357
|
-
return this.handleSendPeerRequest(params);
|
|
358
|
-
case "_macro/deliverPeerMessage":
|
|
359
|
-
return this.handleDeliverPeerMessage(params);
|
|
360
|
-
case "_macro/deliverPeerRequest":
|
|
361
|
-
return this.handleDeliverPeerRequest(params);
|
|
362
|
-
case "_macro/grantCapability":
|
|
363
|
-
return this.handleGrantCapability(params);
|
|
364
|
-
case "_macro/revokeCapability":
|
|
365
|
-
return this.handleRevokeCapability(params);
|
|
366
|
-
case "_macro/getCapabilities":
|
|
367
|
-
return this.handleGetCapabilities(params);
|
|
368
|
-
case "_macro/checkCapability":
|
|
369
|
-
return this.handleCheckCapability(params);
|
|
370
|
-
case "_macro/respondToPermission":
|
|
371
|
-
return this.handleRespondToPermission(params);
|
|
372
|
-
case "_macro/cancelPermission":
|
|
373
|
-
return this.handleCancelPermission(params);
|
|
374
|
-
case "_macro/setPermissionMode":
|
|
375
|
-
return this.handleSetPermissionMode(params);
|
|
376
|
-
case "_macro/resume":
|
|
377
|
-
return this.handleResumeAgent(params);
|
|
378
|
-
case "_macro/getHistory":
|
|
379
|
-
return this.handleGetHistory(params);
|
|
380
|
-
case "_macro/getModels":
|
|
381
|
-
return this.handleGetModels(params);
|
|
382
|
-
default:
|
|
383
|
-
throw new ACPError(`Unknown extension method: ${method}`, "INVALID_EXTENSION");
|
|
384
|
-
}
|
|
385
|
-
}
|
|
386
|
-
// ─────────────────────────────────────────────────────────────────
|
|
387
|
-
// Extension Handlers
|
|
388
|
-
// ─────────────────────────────────────────────────────────────────
|
|
389
|
-
/**
|
|
390
|
-
* Spawn a new child agent
|
|
391
|
-
*/
|
|
392
|
-
async handleSpawnAgent(params) {
|
|
393
|
-
// Determine parent - use provided parentId or fall back to a session's mapped agent
|
|
394
|
-
let parentId = params.parentId;
|
|
395
|
-
// If no parentId provided, we need to find a suitable parent
|
|
396
|
-
// This would typically come from an ACP session context
|
|
397
|
-
if (!parentId) {
|
|
398
|
-
// Get the first head manager as default parent
|
|
399
|
-
const headManagers = this.agentManager.listHeadManagers();
|
|
400
|
-
if (headManagers.length > 0) {
|
|
401
|
-
parentId = headManagers[0].id;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
// Check spawn capability if parent exists
|
|
405
|
-
if (parentId) {
|
|
406
|
-
const parentAgent = this.eventStore.getAgent(parentId);
|
|
407
|
-
if (parentAgent) {
|
|
408
|
-
const childRole = params.role ?? "worker";
|
|
409
|
-
const requiredCapability = this.getSpawnCapability(childRole);
|
|
410
|
-
// Check if parent has the required spawn capability
|
|
411
|
-
const parentRole = parentAgent.role ?? "worker";
|
|
412
|
-
if (!this.roleRegistry.hasCapability(parentRole, requiredCapability)) {
|
|
413
|
-
throw new ACPError(`Parent agent with role '${parentRole}' does not have capability to spawn '${childRole}' agents. ` +
|
|
414
|
-
`Required capability: ${requiredCapability}`, "CAPABILITY_DENIED", {
|
|
415
|
-
parentId,
|
|
416
|
-
parentRole,
|
|
417
|
-
childRole,
|
|
418
|
-
requiredCapability,
|
|
419
|
-
});
|
|
199
|
+
catch (err) {
|
|
200
|
+
throw new ACPError(`Fork failed: ${err.message}`, "FORK_FAILED", { sourceAgentId });
|
|
420
201
|
}
|
|
421
202
|
}
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
task: params.task_description,
|
|
428
|
-
parent: parentId ?? null,
|
|
429
|
-
role: params.role,
|
|
430
|
-
cwd: params.options?.cwd ?? this.defaultCwd,
|
|
431
|
-
subscribeParent: params.options?.subscribeParent ?? true,
|
|
432
|
-
topics: params.options?.topics,
|
|
433
|
-
permissionMode: mergedConfig?.permissionMode,
|
|
434
|
-
agentType: mergedConfig?.agentType,
|
|
435
|
-
config: this.toAgentConfig(mergedConfig),
|
|
436
|
-
});
|
|
437
|
-
return {
|
|
438
|
-
agentId: spawned.id,
|
|
439
|
-
taskId: spawned.agent.task_id,
|
|
440
|
-
sessionId: spawned.session_id,
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
/**
|
|
444
|
-
* Map a child role name to the required spawn capability.
|
|
445
|
-
* Handles subroles like "worker.resolver" by checking base role.
|
|
446
|
-
*/
|
|
447
|
-
getSpawnCapability(childRole) {
|
|
448
|
-
// Extract base role (e.g., "worker.resolver" -> "worker")
|
|
449
|
-
const baseRole = childRole.split(".")[0];
|
|
450
|
-
switch (baseRole) {
|
|
451
|
-
case "worker":
|
|
452
|
-
return AGENT_CAPABILITIES.SPAWN_WORKER;
|
|
453
|
-
case "integrator":
|
|
454
|
-
return AGENT_CAPABILITIES.SPAWN_INTEGRATOR;
|
|
455
|
-
case "monitor":
|
|
456
|
-
return AGENT_CAPABILITIES.SPAWN_MONITOR;
|
|
457
|
-
case "coordinator":
|
|
458
|
-
// Coordinators require special handling - typically only other coordinators
|
|
459
|
-
// or system-level agents can spawn coordinators
|
|
460
|
-
return AGENT_CAPABILITIES.SPAWN_CUSTOM;
|
|
461
|
-
default:
|
|
462
|
-
// For custom roles, check against the custom spawn capability
|
|
463
|
-
return AGENT_CAPABILITIES.SPAWN_CUSTOM;
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
/**
|
|
467
|
-
* Get the agent hierarchy tree
|
|
468
|
-
*/
|
|
469
|
-
async handleGetHierarchy(params) {
|
|
470
|
-
let rootAgentId = params.rootAgentId;
|
|
471
|
-
// If no root specified, use the first head manager
|
|
472
|
-
if (!rootAgentId) {
|
|
473
|
-
const headManagers = this.agentManager.listHeadManagers();
|
|
474
|
-
if (headManagers.length === 0) {
|
|
475
|
-
// Return empty hierarchy if no agents
|
|
203
|
+
case "_macro/resume": {
|
|
204
|
+
const agentId = params.agentId;
|
|
205
|
+
if (!agentId)
|
|
206
|
+
throw RequestError.invalidParams(params, "agentId is required");
|
|
207
|
+
const resumed = await agentManager.resume(agentId);
|
|
476
208
|
return {
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
},
|
|
481
|
-
totalAgents: 0,
|
|
482
|
-
depth: 0,
|
|
209
|
+
agentId: resumed.id,
|
|
210
|
+
sessionId: resumed.session_id,
|
|
211
|
+
state: resumed.agent.state,
|
|
483
212
|
};
|
|
484
213
|
}
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
});
|
|
493
|
-
}
|
|
494
|
-
return {
|
|
495
|
-
hierarchy: hierarchy.root,
|
|
496
|
-
totalAgents: hierarchy.totalAgents,
|
|
497
|
-
depth: hierarchy.depth,
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
/**
|
|
501
|
-
* Get task details by ID
|
|
502
|
-
*/
|
|
503
|
-
async handleGetTask(params) {
|
|
504
|
-
const task = this.taskManager.get(params.taskId);
|
|
505
|
-
if (!task) {
|
|
506
|
-
throw new ACPError(`Task not found: ${params.taskId}`, "TASK_NOT_FOUND", {
|
|
507
|
-
taskId: params.taskId,
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
return {
|
|
511
|
-
task,
|
|
512
|
-
};
|
|
513
|
-
}
|
|
514
|
-
/**
|
|
515
|
-
* Mount (attach to) an existing agent
|
|
516
|
-
*
|
|
517
|
-
* Remaps an ACP session to point to a different agent.
|
|
518
|
-
* Subsequent prompts will go to the mounted agent.
|
|
519
|
-
*/
|
|
520
|
-
async handleMountAgent(params) {
|
|
521
|
-
const { sessionId, agentId } = params;
|
|
522
|
-
// Verify the target agent exists
|
|
523
|
-
const agent = this.agentManager.get(agentId);
|
|
524
|
-
if (!agent) {
|
|
525
|
-
throw new ACPError(`Agent not found: ${agentId}`, "AGENT_NOT_FOUND", {
|
|
526
|
-
agentId,
|
|
527
|
-
});
|
|
528
|
-
}
|
|
529
|
-
// Verify the session exists in our mapper
|
|
530
|
-
const mapping = this.sessionMapper.getMapping(sessionId);
|
|
531
|
-
if (!mapping) {
|
|
532
|
-
throw new ACPError(`Session not found: ${sessionId}`, "SESSION_NOT_FOUND", { sessionId });
|
|
533
|
-
}
|
|
534
|
-
// Get the previous agent before mounting
|
|
535
|
-
const previousAgentId = mapping.agentId;
|
|
536
|
-
// Remap the session to the target agent
|
|
537
|
-
this.sessionMapper.mount(sessionId, agentId);
|
|
538
|
-
return {
|
|
539
|
-
sessionId,
|
|
540
|
-
agent,
|
|
541
|
-
previousAgentId,
|
|
542
|
-
};
|
|
543
|
-
}
|
|
544
|
-
/**
|
|
545
|
-
* Fork an agent (create a branch with same conversation context)
|
|
546
|
-
*
|
|
547
|
-
* Creates a new agent that starts from the same point as the original.
|
|
548
|
-
* Uses native fork if available, otherwise falls back to loadSession.
|
|
549
|
-
*/
|
|
550
|
-
async handleForkAgent(params) {
|
|
551
|
-
const { agentId, name, prompt, cwd } = params;
|
|
552
|
-
// Validate source agent exists
|
|
553
|
-
const originalAgent = this.agentManager.get(agentId);
|
|
554
|
-
if (!originalAgent) {
|
|
555
|
-
throw new ACPError(`Agent not found: ${agentId}`, "AGENT_NOT_FOUND", {
|
|
556
|
-
agentId,
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
// Check forkable: needs active session or persisted provider_session_id
|
|
560
|
-
if (!this.agentManager.hasActiveSession(agentId) &&
|
|
561
|
-
!originalAgent.provider_session_id) {
|
|
562
|
-
throw new ACPError(`Agent has no session to fork: ${agentId}`, "FORK_NOT_SUPPORTED", { agentId });
|
|
563
|
-
}
|
|
564
|
-
// Fork via AgentManager (handles forkWithFlush + new process + loadSession)
|
|
565
|
-
const forked = await this.agentManager.forkAgent(agentId, {
|
|
566
|
-
name,
|
|
567
|
-
cwd: cwd ?? originalAgent.cwd ?? this.defaultCwd,
|
|
568
|
-
});
|
|
569
|
-
// Fire-and-forget initial prompt if provided
|
|
570
|
-
if (prompt) {
|
|
571
|
-
(async () => {
|
|
572
|
-
try {
|
|
573
|
-
for await (const _update of this.agentManager.prompt(forked.id, prompt)) {
|
|
574
|
-
// Drain the async iterable
|
|
575
|
-
}
|
|
214
|
+
case "_macro/getHistory": {
|
|
215
|
+
const agentId = params.agentId;
|
|
216
|
+
if (!agentId)
|
|
217
|
+
throw RequestError.invalidParams(params, "agentId is required");
|
|
218
|
+
if (params.threadTag) {
|
|
219
|
+
const thread = await inboxAdapter.readThread(params.threadTag, params.scope);
|
|
220
|
+
return { messages: thread };
|
|
576
221
|
}
|
|
577
|
-
|
|
578
|
-
|
|
222
|
+
const messages = await inboxAdapter.checkInbox(agentId, {
|
|
223
|
+
limit: params.limit,
|
|
224
|
+
});
|
|
225
|
+
return { messages };
|
|
226
|
+
}
|
|
227
|
+
case "_macro/getModels": {
|
|
228
|
+
// Models are not centrally tracked; return empty
|
|
229
|
+
return { models: [] };
|
|
230
|
+
}
|
|
231
|
+
case "_macro/respondToPermission": {
|
|
232
|
+
const agentId = params.agentId;
|
|
233
|
+
const requestId = params.requestId;
|
|
234
|
+
const optionId = params.optionId;
|
|
235
|
+
if (!agentId || !requestId || !optionId) {
|
|
236
|
+
throw RequestError.invalidParams(params, "agentId, requestId, and optionId are required");
|
|
237
|
+
}
|
|
238
|
+
const success = agentManager.respondToPermission(agentId, requestId, optionId);
|
|
239
|
+
return { success };
|
|
240
|
+
}
|
|
241
|
+
case "_macro/cancelPermission": {
|
|
242
|
+
const agentId = params.agentId;
|
|
243
|
+
const requestId = params.requestId;
|
|
244
|
+
if (!agentId || !requestId) {
|
|
245
|
+
throw RequestError.invalidParams(params, "agentId and requestId are required");
|
|
579
246
|
}
|
|
580
|
-
|
|
247
|
+
const success = agentManager.cancelPermission(agentId, requestId);
|
|
248
|
+
return { success };
|
|
249
|
+
}
|
|
250
|
+
case "_macro/setPermissionMode": {
|
|
251
|
+
const agentId = params.agentId;
|
|
252
|
+
const mode = params.mode;
|
|
253
|
+
if (!agentId || !mode) {
|
|
254
|
+
throw RequestError.invalidParams(params, "agentId and mode are required");
|
|
255
|
+
}
|
|
256
|
+
const success = agentManager.setPermissionMode(agentId, mode);
|
|
257
|
+
return { success };
|
|
258
|
+
}
|
|
259
|
+
default:
|
|
260
|
+
throw new ACPError(`Unknown extension: ${method}`, "INVALID_EXTENSION", { method });
|
|
581
261
|
}
|
|
582
|
-
return {
|
|
583
|
-
newAgentId: forked.id,
|
|
584
|
-
newSessionId: forked.session_id,
|
|
585
|
-
originalAgentId: agentId,
|
|
586
|
-
providerSessionId: forked.session.id,
|
|
587
|
-
};
|
|
588
262
|
}
|
|
589
|
-
//
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
/**
|
|
593
|
-
* Send a peer message (outbound, fire-and-forget)
|
|
594
|
-
*
|
|
595
|
-
* Called by external clients to have an agent send a message to a peer.
|
|
596
|
-
*/
|
|
597
|
-
async handleSendPeerMessage(params) {
|
|
598
|
-
if (!this.peerManager) {
|
|
599
|
-
throw new ACPError("PeerManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
600
|
-
}
|
|
601
|
-
// Determine which agent is sending (use head manager by default)
|
|
602
|
-
const headManagers = this.agentManager.listHeadManagers();
|
|
603
|
-
if (headManagers.length === 0) {
|
|
604
|
-
throw new ACPError("No agents available to send peer message", "AGENT_NOT_FOUND");
|
|
605
|
-
}
|
|
606
|
-
const sendingAgentId = headManagers[0].id;
|
|
607
|
-
try {
|
|
608
|
-
await this.peerManager.sendMessage(sendingAgentId, params.to, {
|
|
609
|
-
type: params.type,
|
|
610
|
-
payload: params.payload,
|
|
611
|
-
metadata: params.correlationId
|
|
612
|
-
? { correlationId: params.correlationId }
|
|
613
|
-
: undefined,
|
|
614
|
-
});
|
|
263
|
+
// ── ACP Agent Implementation ────────────────────────────────
|
|
264
|
+
const agent = {
|
|
265
|
+
async initialize(_params) {
|
|
615
266
|
return {
|
|
616
|
-
|
|
617
|
-
|
|
267
|
+
protocolVersion: 1,
|
|
268
|
+
agentInfo: {
|
|
269
|
+
name: "macro-agent",
|
|
270
|
+
version: "2.0.0",
|
|
271
|
+
},
|
|
272
|
+
agentCapabilities: {
|
|
273
|
+
loadSession: true,
|
|
274
|
+
sessionCapabilities: {
|
|
275
|
+
resume: {},
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
extensions: [
|
|
279
|
+
...SUPPORTED_EXTENSIONS.map((name) => ({
|
|
280
|
+
name,
|
|
281
|
+
description: `macro-agent extension: ${name}`,
|
|
282
|
+
})),
|
|
283
|
+
...STUBBED_PEER_EXTENSIONS.map((name) => ({
|
|
284
|
+
name,
|
|
285
|
+
description: `Peer extension (stub): ${name}`,
|
|
286
|
+
})),
|
|
287
|
+
],
|
|
618
288
|
};
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
* Send a peer request (outbound, request-response)
|
|
626
|
-
*
|
|
627
|
-
* Called by external clients to have an agent send a request to a peer
|
|
628
|
-
* and wait for a response.
|
|
629
|
-
*/
|
|
630
|
-
async handleSendPeerRequest(params) {
|
|
631
|
-
if (!this.peerManager) {
|
|
632
|
-
throw new ACPError("PeerManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
633
|
-
}
|
|
634
|
-
// Determine which agent is sending (use head manager by default)
|
|
635
|
-
const headManagers = this.agentManager.listHeadManagers();
|
|
636
|
-
if (headManagers.length === 0) {
|
|
637
|
-
throw new ACPError("No agents available to send peer request", "AGENT_NOT_FOUND");
|
|
638
|
-
}
|
|
639
|
-
const sendingAgentId = headManagers[0].id;
|
|
640
|
-
try {
|
|
641
|
-
const response = await this.peerManager.sendRequest(sendingAgentId, params.to, {
|
|
642
|
-
method: params.method,
|
|
643
|
-
params: params.params,
|
|
644
|
-
timeout: params.timeout,
|
|
289
|
+
},
|
|
290
|
+
async newSession(params) {
|
|
291
|
+
const cwd = params.cwd ?? defaultCwd;
|
|
292
|
+
// Get or create a head manager for this workspace
|
|
293
|
+
const headManager = await agentManager.getOrCreateHeadManager({
|
|
294
|
+
cwd,
|
|
645
295
|
});
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
if (!this.peerManager) {
|
|
660
|
-
throw new ACPError("PeerManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
661
|
-
}
|
|
662
|
-
// Use PeerManager's deliverMessage to queue the message
|
|
663
|
-
const messageId = this.peerManager.deliverMessage(params.from, {
|
|
664
|
-
type: params.type,
|
|
665
|
-
payload: params.payload,
|
|
666
|
-
metadata: params.correlationId
|
|
667
|
-
? { correlationId: params.correlationId }
|
|
668
|
-
: undefined,
|
|
669
|
-
}, params.targetAgentId);
|
|
670
|
-
return {
|
|
671
|
-
success: true,
|
|
672
|
-
messageId,
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
/**
|
|
676
|
-
* Deliver a peer request (inbound, request-response)
|
|
677
|
-
*
|
|
678
|
-
* Called by external clients to route an inbound request from a peer
|
|
679
|
-
* to this macro-agent. The request is queued and this waits for the
|
|
680
|
-
* internal agent to respond.
|
|
681
|
-
*/
|
|
682
|
-
async handleDeliverPeerRequest(params) {
|
|
683
|
-
if (!this.peerManager) {
|
|
684
|
-
throw new ACPError("PeerManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
685
|
-
}
|
|
686
|
-
// Use PeerManager's deliverRequest which returns a promise
|
|
687
|
-
// that resolves when the internal agent responds
|
|
688
|
-
const response = await this.peerManager.deliverRequest(params.from, {
|
|
689
|
-
method: params.method,
|
|
690
|
-
params: params.params,
|
|
691
|
-
timeout: params.timeout,
|
|
692
|
-
}, params.targetAgentId);
|
|
693
|
-
return response;
|
|
694
|
-
}
|
|
695
|
-
// ─────────────────────────────────────────────────────────────────
|
|
696
|
-
// Capability Extension Handlers
|
|
697
|
-
// ─────────────────────────────────────────────────────────────────
|
|
698
|
-
/**
|
|
699
|
-
* Grant capabilities to a peer
|
|
700
|
-
*/
|
|
701
|
-
async handleGrantCapability(params) {
|
|
702
|
-
if (!this.capabilityManager) {
|
|
703
|
-
throw new ACPError("CapabilityManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
704
|
-
}
|
|
705
|
-
const capabilities = this.capabilityManager.grant(params.peerId, params.grants, {
|
|
706
|
-
expiresIn: params.expiresIn,
|
|
707
|
-
issuedBy: params.issuedBy,
|
|
708
|
-
});
|
|
709
|
-
return { capabilities };
|
|
710
|
-
}
|
|
711
|
-
/**
|
|
712
|
-
* Revoke capabilities from a peer
|
|
713
|
-
*/
|
|
714
|
-
async handleRevokeCapability(params) {
|
|
715
|
-
if (!this.capabilityManager) {
|
|
716
|
-
throw new ACPError("CapabilityManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
717
|
-
}
|
|
718
|
-
this.capabilityManager.revoke(params.peerId, params.grantTypes);
|
|
719
|
-
return {
|
|
720
|
-
success: true,
|
|
721
|
-
remainingCapabilities: this.capabilityManager.getCapabilities(params.peerId),
|
|
722
|
-
};
|
|
723
|
-
}
|
|
724
|
-
/**
|
|
725
|
-
* Get capabilities for a peer or list all authorized peers
|
|
726
|
-
*/
|
|
727
|
-
async handleGetCapabilities(params) {
|
|
728
|
-
if (!this.capabilityManager) {
|
|
729
|
-
throw new ACPError("CapabilityManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
730
|
-
}
|
|
731
|
-
if (params.peerId) {
|
|
732
|
-
return {
|
|
733
|
-
capabilities: this.capabilityManager.getCapabilities(params.peerId),
|
|
734
|
-
};
|
|
735
|
-
}
|
|
736
|
-
return {
|
|
737
|
-
authorizedPeers: this.capabilityManager.listAuthorizedPeers(),
|
|
738
|
-
};
|
|
739
|
-
}
|
|
740
|
-
/**
|
|
741
|
-
* Check if a peer has a required capability
|
|
742
|
-
*/
|
|
743
|
-
async handleCheckCapability(params) {
|
|
744
|
-
if (!this.capabilityManager) {
|
|
745
|
-
throw new ACPError("CapabilityManager not configured for this macro-agent", "NO_PEER_MANAGER");
|
|
746
|
-
}
|
|
747
|
-
return {
|
|
748
|
-
hasCapability: this.capabilityManager.hasCapability(params.peerId, params.required),
|
|
749
|
-
};
|
|
750
|
-
}
|
|
751
|
-
// ─────────────────────────────────────────────────────────────────
|
|
752
|
-
// Permission Extension Handlers
|
|
753
|
-
// ─────────────────────────────────────────────────────────────────
|
|
754
|
-
/**
|
|
755
|
-
* Respond to a permission request for a session
|
|
756
|
-
*
|
|
757
|
-
* Routes the response through the session mapper to find the agent,
|
|
758
|
-
* then calls the agent manager to resolve the pending permission.
|
|
759
|
-
*/
|
|
760
|
-
async handleRespondToPermission(params) {
|
|
761
|
-
const { sessionId, requestId, optionId } = params;
|
|
762
|
-
// Get the agent ID from session mapper
|
|
763
|
-
const agentId = this.sessionMapper.getAgentId(sessionId);
|
|
764
|
-
if (!agentId) {
|
|
765
|
-
return {
|
|
766
|
-
success: false,
|
|
767
|
-
error: `No agent found for session: ${sessionId}`,
|
|
768
|
-
};
|
|
769
|
-
}
|
|
770
|
-
// Respond via agent manager
|
|
771
|
-
const success = this.agentManager.respondToPermission(agentId, requestId, optionId);
|
|
772
|
-
if (success) {
|
|
773
|
-
console.log(`[MacroAgent] Responded to permission ${requestId} for session ${sessionId} with ${optionId}`);
|
|
774
|
-
return { success: true };
|
|
775
|
-
}
|
|
776
|
-
else {
|
|
777
|
-
return {
|
|
778
|
-
success: false,
|
|
779
|
-
error: `Failed to respond to permission ${requestId} for agent ${agentId}`,
|
|
780
|
-
};
|
|
781
|
-
}
|
|
782
|
-
}
|
|
783
|
-
/**
|
|
784
|
-
* Cancel a permission request for a session
|
|
785
|
-
*
|
|
786
|
-
* Routes the cancellation through the session mapper to find the agent,
|
|
787
|
-
* then calls the agent manager to cancel the pending permission.
|
|
788
|
-
*/
|
|
789
|
-
async handleCancelPermission(params) {
|
|
790
|
-
const { sessionId, requestId } = params;
|
|
791
|
-
// Get the agent ID from session mapper
|
|
792
|
-
const agentId = this.sessionMapper.getAgentId(sessionId);
|
|
793
|
-
if (!agentId) {
|
|
794
|
-
return {
|
|
795
|
-
success: false,
|
|
796
|
-
error: `No agent found for session: ${sessionId}`,
|
|
797
|
-
};
|
|
798
|
-
}
|
|
799
|
-
// Cancel via agent manager
|
|
800
|
-
const success = this.agentManager.cancelPermission(agentId, requestId);
|
|
801
|
-
if (success) {
|
|
802
|
-
console.log(`[MacroAgent] Cancelled permission ${requestId} for session ${sessionId}`);
|
|
803
|
-
return { success: true };
|
|
804
|
-
}
|
|
805
|
-
else {
|
|
806
|
-
return {
|
|
807
|
-
success: false,
|
|
808
|
-
error: `Failed to cancel permission ${requestId} for agent ${agentId}`,
|
|
809
|
-
};
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
/**
|
|
813
|
-
* Change the permission mode for a running agent at runtime
|
|
814
|
-
*/
|
|
815
|
-
async handleSetPermissionMode(params) {
|
|
816
|
-
const { agentId, permissionMode } = params;
|
|
817
|
-
// Get the current mode before changing
|
|
818
|
-
const previousMode = this.agentManager.getPermissionMode(agentId);
|
|
819
|
-
// Set the new mode via agent manager
|
|
820
|
-
const success = this.agentManager.setPermissionMode(agentId, permissionMode);
|
|
821
|
-
if (success) {
|
|
822
|
-
console.log(`[MacroAgent] Set permission mode for agent ${agentId} from ${previousMode} to ${permissionMode}`);
|
|
823
|
-
return {
|
|
824
|
-
success: true,
|
|
825
|
-
previousMode: previousMode ?? undefined,
|
|
826
|
-
};
|
|
827
|
-
}
|
|
828
|
-
else {
|
|
296
|
+
// Create session mapping
|
|
297
|
+
const mapping = sessionMapper.createMapping(headManager.session_id, headManager.id);
|
|
298
|
+
// Annotate sessionlog with swarm metadata (best effort)
|
|
299
|
+
try {
|
|
300
|
+
const { annotateSession } = await import("../integrations/sessionlog.js");
|
|
301
|
+
annotateSession(cwd, {
|
|
302
|
+
swarmId: headManager.id,
|
|
303
|
+
scope: "macro-agent",
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
// sessionlog not available — non-fatal
|
|
308
|
+
}
|
|
829
309
|
return {
|
|
830
|
-
|
|
831
|
-
error: `No active session found for agent ${agentId}`,
|
|
310
|
+
sessionId: mapping.acpSessionId,
|
|
832
311
|
};
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
/**
|
|
864
|
-
* Extract text content from prompt content blocks
|
|
865
|
-
*/
|
|
866
|
-
extractMessageContent(prompt) {
|
|
867
|
-
// Handle content blocks array
|
|
868
|
-
if (Array.isArray(prompt)) {
|
|
869
|
-
return prompt
|
|
870
|
-
.map((block) => {
|
|
871
|
-
if ("text" in block) {
|
|
872
|
-
return block.text;
|
|
873
|
-
}
|
|
874
|
-
return "";
|
|
875
|
-
})
|
|
876
|
-
.filter(Boolean)
|
|
877
|
-
.join("\n");
|
|
878
|
-
}
|
|
879
|
-
return "";
|
|
880
|
-
}
|
|
881
|
-
/**
|
|
882
|
-
* Forward session updates from child agents to the ACP client
|
|
883
|
-
*
|
|
884
|
-
* acp-factory already sends updates in ACP SDK format, so we forward
|
|
885
|
-
* all updates directly. This handles all update types including:
|
|
886
|
-
* - agent_message_chunk: Text content from agent
|
|
887
|
-
* - agent_thought_chunk: Agent thinking/reasoning (if enabled)
|
|
888
|
-
* - user_message_chunk: Echo of user messages
|
|
889
|
-
* - tool_call: Tool invocation start
|
|
890
|
-
* - tool_call_update: Tool execution progress/completion
|
|
891
|
-
* - plan: Plan updates
|
|
892
|
-
* - available_commands_update: Available slash commands
|
|
893
|
-
* - current_mode_update: Mode changes (code/plan/etc)
|
|
894
|
-
* - config_option_update: Configuration changes
|
|
895
|
-
* - session_info_update: Session title and timestamps
|
|
896
|
-
*
|
|
897
|
-
* Permission requests are handled separately via the requestPermission RPC.
|
|
898
|
-
*/
|
|
899
|
-
async forwardSessionUpdate(acpSessionId, update) {
|
|
900
|
-
const sessionUpdate = update;
|
|
901
|
-
// Check if this is a valid session update with the sessionUpdate discriminator
|
|
902
|
-
if (!("sessionUpdate" in sessionUpdate)) {
|
|
903
|
-
console.warn(`[MacroAgent] Received update without sessionUpdate field:`, JSON.stringify(update).substring(0, 200));
|
|
904
|
-
return;
|
|
905
|
-
}
|
|
906
|
-
const updateType = sessionUpdate.sessionUpdate;
|
|
907
|
-
// Log update details based on type (verbose logging for debugging)
|
|
908
|
-
switch (updateType) {
|
|
909
|
-
case "agent_message_chunk":
|
|
910
|
-
case "agent_thought_chunk":
|
|
911
|
-
case "user_message_chunk": {
|
|
912
|
-
const content = sessionUpdate.content;
|
|
913
|
-
const text = content?.text ?? "";
|
|
914
|
-
if (text) {
|
|
915
|
-
console.log(`[MacroAgent] Forwarding ${updateType} (${text.length} chars): "${text.substring(0, 80)}${text.length > 80 ? "..." : ""}"`);
|
|
312
|
+
},
|
|
313
|
+
async loadSession(params) {
|
|
314
|
+
const sessionId = params.sessionId;
|
|
315
|
+
// Check if we already have a mapping for this session
|
|
316
|
+
let mapping = sessionMapper.getMapping(sessionId);
|
|
317
|
+
if (mapping) {
|
|
318
|
+
return {};
|
|
319
|
+
}
|
|
320
|
+
// Try to resume the agent associated with this session
|
|
321
|
+
// The session ID might be an agent ID in our system
|
|
322
|
+
const agent = agentManager.get(sessionId);
|
|
323
|
+
if (agent) {
|
|
324
|
+
const resumed = await agentManager.resume(sessionId);
|
|
325
|
+
mapping = sessionMapper.createMapping(resumed.session_id, resumed.id);
|
|
326
|
+
return {};
|
|
327
|
+
}
|
|
328
|
+
throw RequestError.invalidParams({ sessionId }, `Session not found: ${sessionId}`);
|
|
329
|
+
},
|
|
330
|
+
async authenticate(_params) {
|
|
331
|
+
// No-op: macro-agent does not require authentication
|
|
332
|
+
return {};
|
|
333
|
+
},
|
|
334
|
+
async prompt(params) {
|
|
335
|
+
const mapping = getSessionOrThrow(params.sessionId);
|
|
336
|
+
const agentId = mapping.agentId;
|
|
337
|
+
// Extract text content from prompt blocks
|
|
338
|
+
const textParts = [];
|
|
339
|
+
for (const block of params.prompt) {
|
|
340
|
+
if ("text" in block && typeof block.text === "string") {
|
|
341
|
+
textParts.push(block.text);
|
|
916
342
|
}
|
|
917
|
-
break;
|
|
918
343
|
}
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
break;
|
|
344
|
+
const message = textParts.join("\n") || "";
|
|
345
|
+
sessionMapper.setProcessing(params.sessionId, true);
|
|
346
|
+
// Capture first prompt for trajectory metadata (used as session description in OpenHive UI)
|
|
347
|
+
if (!firstPrompt) {
|
|
348
|
+
firstPrompt = message.slice(0, 200);
|
|
925
349
|
}
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
350
|
+
// Track data for trajectory checkpoint
|
|
351
|
+
const filesTouched = new Set();
|
|
352
|
+
let toolCallCount = 0;
|
|
353
|
+
const promptStartTime = Date.now();
|
|
354
|
+
let tokenUsage = { input_tokens: 0, output_tokens: 0, cache_read_tokens: 0, cache_creation_tokens: 0 };
|
|
355
|
+
// Update agent state to "busy" — both local MAP server and upstream sidecar
|
|
356
|
+
try {
|
|
357
|
+
const mapServer = system.mapServerInstance;
|
|
358
|
+
if (mapServer) {
|
|
359
|
+
const agents = mapServer.agents?.list?.() ?? [];
|
|
360
|
+
const mapAgent = agents.find((a) => a.metadata?.localAgentId === agentId);
|
|
361
|
+
if (mapAgent) {
|
|
362
|
+
mapServer.agents.updateState(mapAgent.id, "busy");
|
|
363
|
+
}
|
|
364
|
+
}
|
|
931
365
|
}
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
// The session mapper maps ACP session IDs → agent IDs, so using the
|
|
940
|
-
// internal session ID would fail silently and drop the permission request.
|
|
941
|
-
const agentId = this.sessionMapper.getAgentId(acpSessionId);
|
|
942
|
-
if (!agentId) {
|
|
943
|
-
console.warn(`[MacroAgent] No agent found for ACP session ${acpSessionId}, cannot forward permission request`);
|
|
944
|
-
return;
|
|
366
|
+
catch { /* best effort */ }
|
|
367
|
+
// Update upstream sidecar state (so OpenHive sees activity)
|
|
368
|
+
try {
|
|
369
|
+
const sidecarConn = system.mapSidecar;
|
|
370
|
+
if (sidecarConn?.connected) {
|
|
371
|
+
// The sidecar's underlying AgentConnection has updateState
|
|
372
|
+
// but it's not directly exposed. Emit via the eventBus instead.
|
|
945
373
|
}
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
374
|
+
}
|
|
375
|
+
catch { /* best effort */ }
|
|
376
|
+
try {
|
|
377
|
+
// Stream updates from agentManager.prompt()
|
|
378
|
+
const updates = agentManager.prompt(agentId, message);
|
|
379
|
+
for await (const update of updates) {
|
|
380
|
+
// Track tool calls, files, and token usage for trajectory checkpoint.
|
|
381
|
+
// Also emit task bridge events for TaskCreate/TaskUpdate tool calls.
|
|
382
|
+
if ("sessionUpdate" in update) {
|
|
383
|
+
const su = update;
|
|
384
|
+
if (su.sessionUpdate === "tool_call") {
|
|
385
|
+
toolCallCount++;
|
|
386
|
+
const input = su.rawInput;
|
|
387
|
+
if (input?.file_path)
|
|
388
|
+
filesTouched.add(input.file_path);
|
|
389
|
+
if (input?.filePath)
|
|
390
|
+
filesTouched.add(input.filePath);
|
|
391
|
+
if (input?.path)
|
|
392
|
+
filesTouched.add(input.path);
|
|
393
|
+
if (input?.command)
|
|
394
|
+
filesTouched.add(`[bash] ${input.command.slice(0, 50)}`);
|
|
395
|
+
}
|
|
396
|
+
// Track token usage from session info updates
|
|
397
|
+
if (su.sessionUpdate === "session_info_update" && su.usage) {
|
|
398
|
+
const u = su.usage;
|
|
399
|
+
if (u.inputTokens)
|
|
400
|
+
tokenUsage.input_tokens += u.inputTokens;
|
|
401
|
+
if (u.outputTokens)
|
|
402
|
+
tokenUsage.output_tokens += u.outputTokens;
|
|
403
|
+
if (u.cacheReadTokens)
|
|
404
|
+
tokenUsage.cache_read_tokens += u.cacheReadTokens;
|
|
405
|
+
if (u.cacheCreationTokens)
|
|
406
|
+
tokenUsage.cache_creation_tokens += u.cacheCreationTokens;
|
|
407
|
+
}
|
|
408
|
+
// Bridge tool call completions to MAP events
|
|
409
|
+
if (su.sessionUpdate === "tool_call_update" && su.output !== undefined) {
|
|
410
|
+
const toolName = su.title ?? "";
|
|
411
|
+
const sidecar = system.mapSidecar;
|
|
412
|
+
if (sidecar?.connected && toolName) {
|
|
413
|
+
try {
|
|
414
|
+
// Native task lifecycle events
|
|
415
|
+
if (toolName === "TaskCreate" || toolName.includes("TaskCreate")) {
|
|
416
|
+
const taskData = typeof su.output === "string"
|
|
417
|
+
? JSON.parse(su.output) : su.output;
|
|
418
|
+
sidecar.reportCheckpoint?.({
|
|
419
|
+
id: `task-created-${Date.now()}`,
|
|
420
|
+
session_id: params.sessionId,
|
|
421
|
+
agent: agentId,
|
|
422
|
+
branch: null,
|
|
423
|
+
files_touched: [],
|
|
424
|
+
checkpoints_count: checkpointCounter,
|
|
425
|
+
metadata: { phase: "active", event: "task.created", task: taskData },
|
|
426
|
+
}).catch(() => { });
|
|
427
|
+
}
|
|
428
|
+
else if (toolName === "TaskUpdate" || toolName.includes("TaskUpdate")) {
|
|
429
|
+
const taskData = typeof su.output === "string"
|
|
430
|
+
? JSON.parse(su.output) : su.output;
|
|
431
|
+
sidecar.reportCheckpoint?.({
|
|
432
|
+
id: `task-updated-${Date.now()}`,
|
|
433
|
+
session_id: params.sessionId,
|
|
434
|
+
agent: agentId,
|
|
435
|
+
branch: null,
|
|
436
|
+
files_touched: [],
|
|
437
|
+
checkpoints_count: checkpointCounter,
|
|
438
|
+
metadata: { phase: "active", event: "task.status", task: taskData },
|
|
439
|
+
}).catch(() => { });
|
|
440
|
+
}
|
|
441
|
+
// Gap 3: Opentasks MCP bridge — bridge opentasks tool calls to MAP events
|
|
442
|
+
else if (toolName === "opentasks__create_task" || toolName.includes("create_task")) {
|
|
443
|
+
const taskData = typeof su.output === "string"
|
|
444
|
+
? JSON.parse(su.output) : su.output;
|
|
445
|
+
sidecar.reportCheckpoint?.({
|
|
446
|
+
id: `opentasks-created-${Date.now()}`,
|
|
447
|
+
session_id: params.sessionId,
|
|
448
|
+
agent: agentId,
|
|
449
|
+
branch: null,
|
|
450
|
+
files_touched: [],
|
|
451
|
+
checkpoints_count: checkpointCounter,
|
|
452
|
+
metadata: { phase: "active", event: "task.created", source: "opentasks", task: taskData },
|
|
453
|
+
}).catch(() => { });
|
|
454
|
+
}
|
|
455
|
+
else if (toolName === "opentasks__update_task" || toolName.includes("update_task")) {
|
|
456
|
+
const taskData = typeof su.output === "string"
|
|
457
|
+
? JSON.parse(su.output) : su.output;
|
|
458
|
+
sidecar.reportCheckpoint?.({
|
|
459
|
+
id: `opentasks-status-${Date.now()}`,
|
|
460
|
+
session_id: params.sessionId,
|
|
461
|
+
agent: agentId,
|
|
462
|
+
branch: null,
|
|
463
|
+
files_touched: [],
|
|
464
|
+
checkpoints_count: checkpointCounter,
|
|
465
|
+
metadata: { phase: "active", event: "task.status", source: "opentasks", task: taskData },
|
|
466
|
+
}).catch(() => { });
|
|
467
|
+
}
|
|
468
|
+
else if (toolName === "opentasks__link" || toolName.includes("opentasks") && toolName.includes("link")) {
|
|
469
|
+
const linkData = typeof su.output === "string"
|
|
470
|
+
? JSON.parse(su.output) : su.output;
|
|
471
|
+
sidecar.reportCheckpoint?.({
|
|
472
|
+
id: `opentasks-linked-${Date.now()}`,
|
|
473
|
+
session_id: params.sessionId,
|
|
474
|
+
agent: agentId,
|
|
475
|
+
branch: null,
|
|
476
|
+
files_touched: [],
|
|
477
|
+
checkpoints_count: checkpointCounter,
|
|
478
|
+
metadata: { phase: "active", event: "task.linked", source: "opentasks", link: linkData },
|
|
479
|
+
}).catch(() => { });
|
|
480
|
+
}
|
|
481
|
+
else if (toolName === "opentasks__annotate" || toolName.includes("opentasks") && toolName.includes("annotate")) {
|
|
482
|
+
const annotateData = typeof su.output === "string"
|
|
483
|
+
? JSON.parse(su.output) : su.output;
|
|
484
|
+
sidecar.reportCheckpoint?.({
|
|
485
|
+
id: `opentasks-sync-${Date.now()}`,
|
|
486
|
+
session_id: params.sessionId,
|
|
487
|
+
agent: agentId,
|
|
488
|
+
branch: null,
|
|
489
|
+
files_touched: [],
|
|
490
|
+
checkpoints_count: checkpointCounter,
|
|
491
|
+
metadata: { phase: "active", event: "task.sync", source: "opentasks", annotation: annotateData },
|
|
492
|
+
}).catch(() => { });
|
|
493
|
+
}
|
|
494
|
+
// Gap 2: Memory sync — detect minimem write tools
|
|
495
|
+
else if (toolName.includes("memory_append") || toolName.includes("memory_upsert")) {
|
|
496
|
+
sidecar.reportCheckpoint?.({
|
|
497
|
+
id: `memory-sync-${Date.now()}`,
|
|
498
|
+
session_id: params.sessionId,
|
|
499
|
+
agent: agentId,
|
|
500
|
+
branch: null,
|
|
501
|
+
files_touched: [],
|
|
502
|
+
checkpoints_count: checkpointCounter,
|
|
503
|
+
metadata: { phase: "active", event: "memory.sync" },
|
|
504
|
+
}).catch(() => { });
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
catch { /* ignore parse errors */ }
|
|
966
508
|
}
|
|
967
509
|
}
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
510
|
+
}
|
|
511
|
+
// Handle permission requests from the underlying agent.
|
|
512
|
+
// When the agent is in interactive mode, it yields
|
|
513
|
+
// PermissionRequestUpdate objects instead of auto-approving.
|
|
514
|
+
// We forward these to the client via AgentSideConnection's
|
|
515
|
+
// requestPermission() method (JSON-RPC agent→client request).
|
|
516
|
+
if (isPermissionRequestUpdate(update)) {
|
|
517
|
+
try {
|
|
518
|
+
const permResponse = await connection.requestPermission({
|
|
519
|
+
sessionId: params.sessionId,
|
|
520
|
+
toolCall: {
|
|
521
|
+
toolCallId: update.toolCall.toolCallId,
|
|
522
|
+
title: update.toolCall.title,
|
|
523
|
+
status: update.toolCall.status,
|
|
524
|
+
rawInput: update.toolCall.rawInput,
|
|
525
|
+
},
|
|
526
|
+
options: update.options,
|
|
527
|
+
});
|
|
528
|
+
// Relay the permission response back to the agent.
|
|
529
|
+
// ACP response: { outcome: { outcome: "selected", optionId } | { outcome: "cancelled" } }
|
|
530
|
+
const outcome = permResponse?.outcome;
|
|
531
|
+
if (outcome) {
|
|
532
|
+
if (outcome.outcome === "selected" && "optionId" in outcome) {
|
|
533
|
+
agentManager.respondToPermission(agentId, update.requestId, outcome.optionId);
|
|
534
|
+
}
|
|
535
|
+
else if (outcome.outcome === "cancelled") {
|
|
536
|
+
agentManager.cancelPermission(agentId, update.requestId);
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
catch {
|
|
541
|
+
// If the permission request fails (e.g., client disconnected),
|
|
542
|
+
// cancel it so the agent doesn't hang.
|
|
543
|
+
try {
|
|
544
|
+
agentManager.cancelPermission(agentId, update.requestId);
|
|
545
|
+
}
|
|
546
|
+
catch {
|
|
547
|
+
// Best effort
|
|
972
548
|
}
|
|
973
549
|
}
|
|
550
|
+
continue;
|
|
551
|
+
}
|
|
552
|
+
// Forward each update to the client as a session notification.
|
|
553
|
+
// Only forward ACP-compatible SessionUpdate types; skip
|
|
554
|
+
// acp-factory extended types like CompactionUpdate.
|
|
555
|
+
if ("sessionUpdate" in update && isACPSessionUpdate(update)) {
|
|
556
|
+
const notification = {
|
|
557
|
+
sessionId: params.sessionId,
|
|
558
|
+
update,
|
|
559
|
+
};
|
|
560
|
+
await connection.sessionUpdate(notification);
|
|
974
561
|
}
|
|
975
562
|
}
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
563
|
+
// Emit enriched trajectory checkpoint after prompt completes.
|
|
564
|
+
// Matches cc-swarm's wire format so OpenHive UI can display session data.
|
|
565
|
+
const sidecar = system.mapSidecar;
|
|
566
|
+
if (sidecar) {
|
|
567
|
+
checkpointCounter++;
|
|
568
|
+
const agentRecord = system.agentStore?.getAgent?.(agentId);
|
|
569
|
+
const agentCwd = agentRecord?.cwd ?? defaultCwd;
|
|
570
|
+
const git = getGitInfo(agentCwd);
|
|
571
|
+
// Determine sync level from sessionlog config (default: "full")
|
|
572
|
+
const syncLevel = system._sessionlogSyncLevel ?? "full";
|
|
573
|
+
// Build checkpoint with sync-level gating:
|
|
574
|
+
// - lifecycle: phase, turnId, startedAt, label
|
|
575
|
+
// - metrics: above + token_usage, files_touched, checkpoints_count, toolCallCount, duration_ms
|
|
576
|
+
// - full: everything
|
|
577
|
+
const isMetrics = syncLevel === "metrics" || syncLevel === "full";
|
|
578
|
+
const isFull = syncLevel === "full";
|
|
579
|
+
const checkpoint = {
|
|
580
|
+
id: `${params.sessionId}-step${checkpointCounter}`,
|
|
581
|
+
session_id: params.sessionId,
|
|
582
|
+
agent: agentRecord?.name ?? agentId,
|
|
583
|
+
branch: git.branch,
|
|
584
|
+
files_touched: isMetrics ? Array.from(filesTouched) : [],
|
|
585
|
+
checkpoints_count: isMetrics ? checkpointCounter : 0,
|
|
586
|
+
// Token usage — only at metrics level or above
|
|
587
|
+
...(isMetrics && (tokenUsage.input_tokens > 0 || tokenUsage.output_tokens > 0)
|
|
588
|
+
? { token_usage: tokenUsage }
|
|
589
|
+
: {}),
|
|
590
|
+
metadata: {
|
|
591
|
+
// lifecycle fields (always included)
|
|
592
|
+
phase: "active",
|
|
593
|
+
startedAt: sessionStartedAt,
|
|
594
|
+
label: `Step ${checkpointCounter} (${toolCallCount} tool calls)`,
|
|
595
|
+
// metrics fields
|
|
596
|
+
...(isMetrics ? {
|
|
597
|
+
duration_ms: Date.now() - promptStartTime,
|
|
598
|
+
toolCallCount,
|
|
599
|
+
} : {}),
|
|
600
|
+
// full fields
|
|
601
|
+
...(isFull ? {
|
|
602
|
+
project: agentCwd.split("/").pop() ?? "",
|
|
603
|
+
projectPath: agentCwd,
|
|
604
|
+
firstPrompt: firstPrompt ?? undefined,
|
|
605
|
+
gitCommitHash: git.commitHash ?? undefined,
|
|
606
|
+
gitRemoteUrl: git.remoteUrl ?? undefined,
|
|
607
|
+
} : {}),
|
|
608
|
+
},
|
|
609
|
+
};
|
|
610
|
+
// Enrich with sessionlog state if available (adds turn IDs, better token usage)
|
|
611
|
+
let enrichedCheckpoint = checkpoint;
|
|
979
612
|
try {
|
|
980
|
-
|
|
613
|
+
const { findActiveSession, enrichCheckpoint } = await import("../integrations/sessionlog.js");
|
|
614
|
+
const sessionState = findActiveSession(agentCwd);
|
|
615
|
+
if (sessionState) {
|
|
616
|
+
enrichedCheckpoint = enrichCheckpoint(sessionState, checkpoint);
|
|
617
|
+
}
|
|
981
618
|
}
|
|
982
619
|
catch {
|
|
983
|
-
//
|
|
620
|
+
// sessionlog not available — use base checkpoint
|
|
984
621
|
}
|
|
622
|
+
sidecar.reportCheckpoint(enrichedCheckpoint).catch(() => { });
|
|
985
623
|
}
|
|
986
|
-
|
|
987
|
-
return;
|
|
624
|
+
return { stopReason: "end_turn" };
|
|
988
625
|
}
|
|
989
|
-
|
|
990
|
-
//
|
|
991
|
-
|
|
992
|
-
}
|
|
993
|
-
// Accumulate content for history persistence (preserving text/tool interleaving order)
|
|
994
|
-
const buffer = this.promptBuffers.get(acpSessionId);
|
|
995
|
-
if (buffer) {
|
|
996
|
-
if (updateType === "agent_message_chunk") {
|
|
997
|
-
const content = sessionUpdate.content;
|
|
998
|
-
if (content?.text) {
|
|
999
|
-
const last = buffer.parts[buffer.parts.length - 1];
|
|
1000
|
-
if (last && last.type === "text") {
|
|
1001
|
-
last.text += content.text;
|
|
1002
|
-
}
|
|
1003
|
-
else {
|
|
1004
|
-
buffer.parts.push({ type: "text", text: content.text });
|
|
1005
|
-
}
|
|
1006
|
-
}
|
|
626
|
+
catch (err) {
|
|
627
|
+
// If prompt fails, still return a valid response
|
|
628
|
+
return { stopReason: "cancelled" };
|
|
1007
629
|
}
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
});
|
|
1021
|
-
}
|
|
1022
|
-
if (status === "completed" || status === "failed") {
|
|
1023
|
-
// Merge cached info for tool_call_update events that lack title/input
|
|
1024
|
-
const cached = toolCallId ? toolInfoCache?.get(toolCallId) : undefined;
|
|
1025
|
-
buffer.parts.push({
|
|
1026
|
-
type: "tool",
|
|
1027
|
-
toolCallId,
|
|
1028
|
-
title: sessionUpdate.title ?? cached?.title,
|
|
1029
|
-
name: meta?.claudeCode?.toolName ?? cached?.name,
|
|
1030
|
-
status: sessionUpdate.status,
|
|
1031
|
-
input: sessionUpdate.rawInput ?? cached?.input,
|
|
1032
|
-
output: extractToolOutput(sessionUpdate.rawOutput),
|
|
1033
|
-
});
|
|
630
|
+
finally {
|
|
631
|
+
sessionMapper.setProcessing(params.sessionId, false);
|
|
632
|
+
// Update agent state back to "idle" — local MAP server
|
|
633
|
+
try {
|
|
634
|
+
const mapServer = system.mapServerInstance;
|
|
635
|
+
if (mapServer) {
|
|
636
|
+
const agents = mapServer.agents?.list?.() ?? [];
|
|
637
|
+
const mapAgent = agents.find((a) => a.metadata?.localAgentId === agentId);
|
|
638
|
+
if (mapAgent) {
|
|
639
|
+
mapServer.agents.updateState(mapAgent.id, "idle");
|
|
640
|
+
}
|
|
641
|
+
}
|
|
1034
642
|
}
|
|
643
|
+
catch { /* best effort */ }
|
|
1035
644
|
}
|
|
1036
|
-
}
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
}
|
|
1044
|
-
catch (err) {
|
|
1045
|
-
console.error(`[MacroAgent] Failed to forward ${updateType}:`, err instanceof Error ? err.message : err);
|
|
1046
|
-
}
|
|
1047
|
-
}
|
|
1048
|
-
/**
|
|
1049
|
-
* Emit a session_info_update with title and timestamps.
|
|
1050
|
-
* Uses agent task as title and session mapping timestamps.
|
|
1051
|
-
*/
|
|
1052
|
-
async emitSessionInfo(acpSessionId) {
|
|
1053
|
-
const mapping = this.sessionMapper.getMapping(acpSessionId);
|
|
1054
|
-
const agentId = mapping?.agentId;
|
|
1055
|
-
const agent = agentId ? this.eventStore.getAgent(agentId) : null;
|
|
1056
|
-
const title = agent?.task ?? null;
|
|
1057
|
-
const updatedAt = new Date(mapping?.updatedAt ?? Date.now()).toISOString();
|
|
1058
|
-
try {
|
|
1059
|
-
await this.connection.sessionUpdate({
|
|
1060
|
-
sessionId: acpSessionId,
|
|
1061
|
-
update: {
|
|
1062
|
-
sessionUpdate: "session_info_update",
|
|
1063
|
-
title,
|
|
1064
|
-
updatedAt,
|
|
1065
|
-
},
|
|
1066
|
-
});
|
|
1067
|
-
}
|
|
1068
|
-
catch (err) {
|
|
1069
|
-
console.warn(`[MacroAgent] Failed to send session_info_update:`, err instanceof Error ? err.message : err);
|
|
1070
|
-
}
|
|
1071
|
-
}
|
|
1072
|
-
/**
|
|
1073
|
-
* Build system prompt with configured prefix/suffix
|
|
1074
|
-
*/
|
|
1075
|
-
buildSystemPrompt() {
|
|
1076
|
-
const { systemPromptPrefix, systemPromptSuffix } = this.initConfig;
|
|
1077
|
-
if (!systemPromptPrefix && !systemPromptSuffix) {
|
|
1078
|
-
return undefined;
|
|
1079
|
-
}
|
|
1080
|
-
const parts = [];
|
|
1081
|
-
if (systemPromptPrefix) {
|
|
1082
|
-
parts.push(systemPromptPrefix);
|
|
1083
|
-
}
|
|
1084
|
-
if (systemPromptSuffix) {
|
|
1085
|
-
parts.push(systemPromptSuffix);
|
|
1086
|
-
}
|
|
1087
|
-
return parts.join("\n\n");
|
|
1088
|
-
}
|
|
1089
|
-
/**
|
|
1090
|
-
* Merge default sub-agent config with per-spawn override
|
|
1091
|
-
*
|
|
1092
|
-
* Override values take precedence over defaults.
|
|
1093
|
-
* Arrays (like mcpServers) are concatenated, not replaced.
|
|
1094
|
-
*/
|
|
1095
|
-
mergeSubAgentConfig(defaults, override) {
|
|
1096
|
-
if (!defaults && !override) {
|
|
1097
|
-
return undefined;
|
|
1098
|
-
}
|
|
1099
|
-
if (!defaults) {
|
|
1100
|
-
return override;
|
|
1101
|
-
}
|
|
1102
|
-
if (!override) {
|
|
1103
|
-
return defaults;
|
|
1104
|
-
}
|
|
1105
|
-
// Deep merge with override taking precedence
|
|
1106
|
-
return {
|
|
1107
|
-
model: override.model ?? defaults.model,
|
|
1108
|
-
maxTokens: override.maxTokens ?? defaults.maxTokens,
|
|
1109
|
-
temperature: override.temperature ?? defaults.temperature,
|
|
1110
|
-
permissionMode: override.permissionMode ?? defaults.permissionMode,
|
|
1111
|
-
agentType: override.agentType ?? defaults.agentType,
|
|
1112
|
-
// Merge env variables (override takes precedence for same keys)
|
|
1113
|
-
env: defaults.env || override.env
|
|
1114
|
-
? { ...defaults.env, ...override.env }
|
|
1115
|
-
: undefined,
|
|
1116
|
-
// Concatenate MCP servers (both default and override)
|
|
1117
|
-
mcpServers: [...(defaults.mcpServers ?? []), ...(override.mcpServers ?? [])]
|
|
1118
|
-
.length > 0
|
|
1119
|
-
? [...(defaults.mcpServers ?? []), ...(override.mcpServers ?? [])]
|
|
1120
|
-
: undefined,
|
|
1121
|
-
};
|
|
1122
|
-
}
|
|
1123
|
-
/**
|
|
1124
|
-
* Convert SubAgentConfig to internal AgentConfig format
|
|
1125
|
-
*/
|
|
1126
|
-
toAgentConfig(config) {
|
|
1127
|
-
if (!config) {
|
|
1128
|
-
return undefined;
|
|
1129
|
-
}
|
|
1130
|
-
return {
|
|
1131
|
-
model: config.model,
|
|
1132
|
-
maxTokens: config.maxTokens,
|
|
1133
|
-
temperature: config.temperature,
|
|
1134
|
-
env: config.env,
|
|
1135
|
-
mcpServers: config.mcpServers?.map((server) => ({
|
|
1136
|
-
name: server.name,
|
|
1137
|
-
command: server.command,
|
|
1138
|
-
args: server.args,
|
|
1139
|
-
env: server.env,
|
|
1140
|
-
})),
|
|
1141
|
-
};
|
|
1142
|
-
}
|
|
1143
|
-
// ─────────────────────────────────────────────────────────────────
|
|
1144
|
-
// History Persistence Helpers
|
|
1145
|
-
// ─────────────────────────────────────────────────────────────────
|
|
1146
|
-
/**
|
|
1147
|
-
* Ensure a conversation exists in the EventStore for a session.
|
|
1148
|
-
* Uses the ACP session ID as the conversation ID for direct lookup.
|
|
1149
|
-
*/
|
|
1150
|
-
ensureConversation(acpSessionId, agentId) {
|
|
1151
|
-
// Guard: EventStore may not support conversations (e.g., in tests with mocks)
|
|
1152
|
-
if (typeof this.eventStore.getConversation !== "function")
|
|
1153
|
-
return;
|
|
1154
|
-
// Check if conversation already exists
|
|
1155
|
-
const existing = this.eventStore.getConversation(acpSessionId);
|
|
1156
|
-
if (existing)
|
|
1157
|
-
return;
|
|
1158
|
-
try {
|
|
1159
|
-
this.eventStore.emit({
|
|
1160
|
-
type: "conversation",
|
|
1161
|
-
source: { agent_id: agentId },
|
|
1162
|
-
payload: {
|
|
1163
|
-
action: "created",
|
|
1164
|
-
conversation_id: acpSessionId,
|
|
1165
|
-
conversation_type: "session",
|
|
1166
|
-
subject: `ACP session ${acpSessionId}`,
|
|
1167
|
-
},
|
|
1168
|
-
});
|
|
1169
|
-
}
|
|
1170
|
-
catch (error) {
|
|
1171
|
-
console.warn(`[MacroAgent] Failed to create conversation for session ${acpSessionId}:`, error instanceof Error ? error.message : String(error));
|
|
1172
|
-
}
|
|
1173
|
-
}
|
|
1174
|
-
/**
|
|
1175
|
-
* Record user and assistant turns after a prompt completes.
|
|
1176
|
-
*/
|
|
1177
|
-
recordPromptTurns(acpSessionId, agentId, userMessage) {
|
|
1178
|
-
const buffer = this.promptBuffers.get(acpSessionId);
|
|
1179
|
-
if (!buffer)
|
|
1180
|
-
return;
|
|
1181
|
-
const now = Date.now();
|
|
1182
|
-
try {
|
|
1183
|
-
// Record user turn
|
|
1184
|
-
if (userMessage) {
|
|
1185
|
-
this.eventStore.emit({
|
|
1186
|
-
type: "turn",
|
|
1187
|
-
source: { agent_id: agentId },
|
|
1188
|
-
payload: {
|
|
1189
|
-
action: "recorded",
|
|
1190
|
-
turn_id: `turn_user_${now}_${Math.random().toString(36).slice(2, 8)}`,
|
|
1191
|
-
conversation_id: acpSessionId,
|
|
1192
|
-
participant: "user",
|
|
1193
|
-
timestamp: now,
|
|
1194
|
-
content_type: "user_prompt",
|
|
1195
|
-
content: userMessage,
|
|
1196
|
-
source_type: "explicit",
|
|
1197
|
-
},
|
|
1198
|
-
});
|
|
645
|
+
},
|
|
646
|
+
async cancel(params) {
|
|
647
|
+
const mapping = sessionMapper.getMapping(params.sessionId);
|
|
648
|
+
if (!mapping)
|
|
649
|
+
return;
|
|
650
|
+
try {
|
|
651
|
+
await agentManager.terminate(mapping.agentId, "cancelled");
|
|
1199
652
|
}
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
if (parts.length > 0) {
|
|
1203
|
-
this.eventStore.emit({
|
|
1204
|
-
type: "turn",
|
|
1205
|
-
source: { agent_id: agentId },
|
|
1206
|
-
payload: {
|
|
1207
|
-
action: "recorded",
|
|
1208
|
-
turn_id: `turn_asst_${now}_${Math.random().toString(36).slice(2, 8)}`,
|
|
1209
|
-
conversation_id: acpSessionId,
|
|
1210
|
-
participant: agentId,
|
|
1211
|
-
timestamp: now + 1, // +1ms to ensure ordering after user turn
|
|
1212
|
-
content_type: "assistant_response",
|
|
1213
|
-
content: { parts },
|
|
1214
|
-
source_type: "explicit",
|
|
1215
|
-
},
|
|
1216
|
-
});
|
|
653
|
+
catch {
|
|
654
|
+
// Best effort cancellation
|
|
1217
655
|
}
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
this.promptBuffers.delete(acpSessionId);
|
|
1225
|
-
this.toolInfoCaches.delete(acpSessionId);
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
/**
|
|
1229
|
-
* Handle _macro/getModels extension — returns the session's available models.
|
|
1230
|
-
* Claude Code populates models asynchronously after session creation
|
|
1231
|
-
* (via _model_state_update notification), so this allows the TUI to poll
|
|
1232
|
-
* for the model list once it's available.
|
|
1233
|
-
*
|
|
1234
|
-
* Returns full model info (modelId + name) since Claude Code uses shorthand
|
|
1235
|
-
* model IDs ("default", "sonnet") that don't match models.dev. The name
|
|
1236
|
-
* field (e.g., "Claude Sonnet 4") enables better model registry matching.
|
|
1237
|
-
*/
|
|
1238
|
-
handleGetModels(params) {
|
|
1239
|
-
const { sessionId } = params;
|
|
1240
|
-
const agentId = this.sessionMapper.getAgentId(sessionId);
|
|
1241
|
-
if (!agentId) {
|
|
1242
|
-
return { currentModelId: null, availableModels: [] };
|
|
1243
|
-
}
|
|
1244
|
-
const session = this.agentManager.getSession(agentId);
|
|
1245
|
-
if (!session) {
|
|
1246
|
-
return { currentModelId: null, availableModels: [] };
|
|
1247
|
-
}
|
|
1248
|
-
// Try clientHandler's model info store first (from _model_state_update notification)
|
|
1249
|
-
const clientHandler = session.clientHandler;
|
|
1250
|
-
const modelInfo = clientHandler?.getSessionModelInfo?.(session.id);
|
|
1251
|
-
if (modelInfo && modelInfo.availableModels.length > 0) {
|
|
1252
|
-
return modelInfo;
|
|
1253
|
-
}
|
|
1254
|
-
// Fall back to Session.models (from initial session response — just IDs)
|
|
1255
|
-
if (session.models && session.models.length > 0) {
|
|
1256
|
-
return {
|
|
1257
|
-
currentModelId: session.models[0],
|
|
1258
|
-
availableModels: session.models.map((id) => ({ modelId: id, name: id })),
|
|
1259
|
-
};
|
|
1260
|
-
}
|
|
1261
|
-
return { currentModelId: null, availableModels: [] };
|
|
1262
|
-
}
|
|
1263
|
-
/**
|
|
1264
|
-
* Handle _macro/getHistory extension — returns conversation turns for a session
|
|
1265
|
-
*/
|
|
1266
|
-
handleGetHistory(params) {
|
|
1267
|
-
const { sessionId, limit } = params;
|
|
1268
|
-
// Query turns from EventStore (conversation ID = session ID)
|
|
1269
|
-
const turns = this.eventStore.listTurns({
|
|
1270
|
-
conversationId: sessionId,
|
|
1271
|
-
order: "asc",
|
|
1272
|
-
limit: limit ?? 200,
|
|
1273
|
-
});
|
|
1274
|
-
// Convert to HistoryTurn format
|
|
1275
|
-
const historyTurns = turns.map((turn) => ({
|
|
1276
|
-
role: turn.contentType === "user_prompt"
|
|
1277
|
-
? "user"
|
|
1278
|
-
: "assistant",
|
|
1279
|
-
timestamp: turn.timestamp,
|
|
1280
|
-
content: turn.content,
|
|
1281
|
-
}));
|
|
1282
|
-
return { turns: historyTurns };
|
|
1283
|
-
}
|
|
1284
|
-
// ─────────────────────────────────────────────────────────────────
|
|
1285
|
-
// Accessors
|
|
1286
|
-
// ─────────────────────────────────────────────────────────────────
|
|
1287
|
-
/**
|
|
1288
|
-
* Get the session mapper for testing/debugging
|
|
1289
|
-
*/
|
|
1290
|
-
getSessionMapper() {
|
|
1291
|
-
return this.sessionMapper;
|
|
1292
|
-
}
|
|
1293
|
-
/**
|
|
1294
|
-
* Get mapped agent ID for a session
|
|
1295
|
-
*/
|
|
1296
|
-
getMappedAgentId(acpSessionId) {
|
|
1297
|
-
return this.sessionMapper.getAgentId(acpSessionId);
|
|
1298
|
-
}
|
|
1299
|
-
/**
|
|
1300
|
-
* Get the applied initialization config
|
|
1301
|
-
*/
|
|
1302
|
-
getInitConfig() {
|
|
1303
|
-
return this.initConfig;
|
|
1304
|
-
}
|
|
656
|
+
},
|
|
657
|
+
async extMethod(method, params) {
|
|
658
|
+
return handleExtension(method, params);
|
|
659
|
+
},
|
|
660
|
+
};
|
|
661
|
+
return agent;
|
|
1305
662
|
}
|
|
663
|
+
/**
|
|
664
|
+
* Get the SessionMapper instance from a macro-agent.
|
|
665
|
+
* Exposed for testing and for the WebSocket server.
|
|
666
|
+
*/
|
|
667
|
+
export { SessionMapper };
|
|
1306
668
|
//# sourceMappingURL=macro-agent.js.map
|