macro-agent 0.2.5 → 0.2.6
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/LICENSE +1 -1
- package/README.md +30 -56
- package/dist/acp/websocket-server.d.ts +6 -0
- package/dist/acp/websocket-server.d.ts.map +1 -1
- package/dist/acp/websocket-server.js +13 -0
- package/dist/acp/websocket-server.js.map +1 -1
- package/dist/acp/websocket-stream.d.ts +30 -0
- package/dist/acp/websocket-stream.d.ts.map +1 -0
- package/dist/acp/websocket-stream.js +118 -0
- package/dist/acp/websocket-stream.js.map +1 -0
- package/dist/activity/deduplication.d.ts +85 -0
- package/dist/activity/deduplication.d.ts.map +1 -0
- package/dist/activity/deduplication.js +149 -0
- package/dist/activity/deduplication.js.map +1 -0
- package/dist/activity/index.d.ts +16 -0
- package/dist/activity/index.d.ts.map +1 -0
- package/dist/activity/index.js +17 -0
- package/dist/activity/index.js.map +1 -0
- package/dist/activity/relevance.d.ts +81 -0
- package/dist/activity/relevance.d.ts.map +1 -0
- package/dist/activity/relevance.js +161 -0
- package/dist/activity/relevance.js.map +1 -0
- package/dist/activity/types.d.ts +169 -0
- package/dist/activity/types.d.ts.map +1 -0
- package/dist/activity/types.js +33 -0
- package/dist/activity/types.js.map +1 -0
- package/dist/activity/watcher.d.ts +64 -0
- package/dist/activity/watcher.d.ts.map +1 -0
- package/dist/activity/watcher.js +212 -0
- package/dist/activity/watcher.js.map +1 -0
- package/dist/adapters/federation.d.ts +8 -1
- package/dist/adapters/federation.d.ts.map +1 -1
- package/dist/adapters/federation.js +33 -2
- package/dist/adapters/federation.js.map +1 -1
- package/dist/agent/agent-manager-v2.d.ts.map +1 -1
- package/dist/agent/agent-manager-v2.js +7 -24
- package/dist/agent/agent-manager-v2.js.map +1 -1
- package/dist/agent/wake.d.ts +85 -0
- package/dist/agent/wake.d.ts.map +1 -0
- package/dist/agent/wake.js +278 -0
- package/dist/agent/wake.js.map +1 -0
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +41 -25
- package/dist/api/server.js.map +1 -1
- package/dist/api/types.d.ts +6 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/auth/server-auth.d.ts +43 -0
- package/dist/auth/server-auth.d.ts.map +1 -0
- package/dist/auth/server-auth.js +80 -0
- package/dist/auth/server-auth.js.map +1 -0
- package/dist/auth/token.d.ts +4 -0
- package/dist/auth/token.d.ts.map +1 -1
- package/dist/auth/token.js +7 -6
- package/dist/auth/token.js.map +1 -1
- package/dist/boot-v2.d.ts +6 -3
- package/dist/boot-v2.d.ts.map +1 -1
- package/dist/boot-v2.js +44 -25
- package/dist/boot-v2.js.map +1 -1
- package/dist/cognitive/team-lifecycle.d.ts +82 -0
- package/dist/cognitive/team-lifecycle.d.ts.map +1 -0
- package/dist/cognitive/team-lifecycle.js +121 -0
- package/dist/cognitive/team-lifecycle.js.map +1 -0
- package/dist/cognitive/trajectory-extractor.d.ts +25 -0
- package/dist/cognitive/trajectory-extractor.d.ts.map +1 -0
- package/dist/cognitive/trajectory-extractor.js +134 -0
- package/dist/cognitive/trajectory-extractor.js.map +1 -0
- package/dist/control/control-server.d.ts.map +1 -1
- package/dist/control/control-server.js +10 -0
- package/dist/control/control-server.js.map +1 -1
- package/dist/dispatch/mail-inbound-consumer.d.ts.map +1 -1
- package/dist/dispatch/mail-inbound-consumer.js +43 -10
- package/dist/dispatch/mail-inbound-consumer.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/handlers/generic.d.ts +27 -0
- package/dist/lifecycle/handlers/generic.d.ts.map +1 -0
- package/dist/lifecycle/handlers/generic.js +56 -0
- package/dist/lifecycle/handlers/generic.js.map +1 -0
- package/dist/lifecycle/handlers/index.d.ts +51 -0
- package/dist/lifecycle/handlers/index.d.ts.map +1 -0
- package/dist/lifecycle/handlers/index.js +110 -0
- package/dist/lifecycle/handlers/index.js.map +1 -0
- package/dist/lifecycle/handlers/integrator.d.ts +81 -0
- package/dist/lifecycle/handlers/integrator.d.ts.map +1 -0
- package/dist/lifecycle/handlers/integrator.js +451 -0
- package/dist/lifecycle/handlers/integrator.js.map +1 -0
- package/dist/lifecycle/handlers/monitor.d.ts +29 -0
- package/dist/lifecycle/handlers/monitor.d.ts.map +1 -0
- package/dist/lifecycle/handlers/monitor.js +79 -0
- package/dist/lifecycle/handlers/monitor.js.map +1 -0
- package/dist/lifecycle/handlers/worker.d.ts +56 -0
- package/dist/lifecycle/handlers/worker.d.ts.map +1 -0
- package/dist/lifecycle/handlers/worker.js +381 -0
- package/dist/lifecycle/handlers/worker.js.map +1 -0
- package/dist/lifecycle/handlers-v2.d.ts +0 -2
- package/dist/lifecycle/handlers-v2.d.ts.map +1 -1
- package/dist/lifecycle/handlers-v2.js +4 -55
- package/dist/lifecycle/handlers-v2.js.map +1 -1
- package/dist/mail/conversation-map.d.ts +33 -0
- package/dist/mail/conversation-map.d.ts.map +1 -0
- package/dist/mail/conversation-map.js +61 -0
- package/dist/mail/conversation-map.js.map +1 -0
- package/dist/mail/index.d.ts +11 -0
- package/dist/mail/index.d.ts.map +1 -0
- package/dist/mail/index.js +11 -0
- package/dist/mail/index.js.map +1 -0
- package/dist/mail/mail-service.d.ts +85 -0
- package/dist/mail/mail-service.d.ts.map +1 -0
- package/dist/mail/mail-service.js +121 -0
- package/dist/mail/mail-service.js.map +1 -0
- package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
- package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
- package/dist/mail/stores/eventstore-conversation-store.js +131 -0
- package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
- package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
- package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
- package/dist/mail/stores/eventstore-participant-store.js +145 -0
- package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
- package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
- package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
- package/dist/mail/stores/eventstore-thread-store.js +118 -0
- package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
- package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
- package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
- package/dist/mail/stores/eventstore-turn-store.js +153 -0
- package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
- package/dist/mail/stores/index.d.ts +12 -0
- package/dist/mail/stores/index.d.ts.map +1 -0
- package/dist/mail/stores/index.js +12 -0
- package/dist/mail/stores/index.js.map +1 -0
- package/dist/mail/stores/types.d.ts +146 -0
- package/dist/mail/stores/types.d.ts.map +1 -0
- package/dist/mail/stores/types.js +13 -0
- package/dist/mail/stores/types.js.map +1 -0
- package/dist/mail/turn-recorder.d.ts +30 -0
- package/dist/mail/turn-recorder.d.ts.map +1 -0
- package/dist/mail/turn-recorder.js +98 -0
- package/dist/mail/turn-recorder.js.map +1 -0
- package/dist/map/adapter/acp-over-map.d.ts +115 -0
- package/dist/map/adapter/acp-over-map.d.ts.map +1 -0
- package/dist/map/adapter/acp-over-map.js +1024 -0
- package/dist/map/adapter/acp-over-map.js.map +1 -0
- package/dist/map/adapter/connection-manager.d.ts +150 -0
- package/dist/map/adapter/connection-manager.d.ts.map +1 -0
- package/dist/map/adapter/connection-manager.js +207 -0
- package/dist/map/adapter/connection-manager.js.map +1 -0
- package/dist/map/adapter/event-log.d.ts +87 -0
- package/dist/map/adapter/event-log.d.ts.map +1 -0
- package/dist/map/adapter/event-log.js +122 -0
- package/dist/map/adapter/event-log.js.map +1 -0
- package/dist/map/adapter/event-translator.d.ts +85 -0
- package/dist/map/adapter/event-translator.d.ts.map +1 -0
- package/dist/map/adapter/event-translator.js +295 -0
- package/dist/map/adapter/event-translator.js.map +1 -0
- package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
- package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
- package/dist/map/adapter/extensions/agent-detection.js +91 -0
- package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
- package/dist/map/adapter/extensions/cognitive.d.ts +27 -0
- package/dist/map/adapter/extensions/cognitive.d.ts.map +1 -0
- package/dist/map/adapter/extensions/cognitive.js +158 -0
- package/dist/map/adapter/extensions/cognitive.js.map +1 -0
- package/dist/map/adapter/extensions/index.d.ts +95 -0
- package/dist/map/adapter/extensions/index.d.ts.map +1 -0
- package/dist/map/adapter/extensions/index.js +228 -0
- package/dist/map/adapter/extensions/index.js.map +1 -0
- package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
- package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
- package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
- package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
- package/dist/map/adapter/extensions/resume.d.ts +47 -0
- package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
- package/dist/map/adapter/extensions/resume.js +59 -0
- package/dist/map/adapter/extensions/resume.js.map +1 -0
- package/dist/map/adapter/extensions/streams.d.ts +95 -0
- package/dist/map/adapter/extensions/streams.d.ts.map +1 -0
- package/dist/map/adapter/extensions/streams.js +515 -0
- package/dist/map/adapter/extensions/streams.js.map +1 -0
- package/dist/map/adapter/extensions/task.d.ts +40 -0
- package/dist/map/adapter/extensions/task.d.ts.map +1 -0
- package/dist/map/adapter/extensions/task.js +197 -0
- package/dist/map/adapter/extensions/task.js.map +1 -0
- package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
- package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
- package/dist/map/adapter/extensions/update-metadata.js +67 -0
- package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
- package/dist/map/adapter/extensions/wake.d.ts +60 -0
- package/dist/map/adapter/extensions/wake.d.ts.map +1 -0
- package/dist/map/adapter/extensions/wake.js +144 -0
- package/dist/map/adapter/extensions/wake.js.map +1 -0
- package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
- package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
- package/dist/map/adapter/extensions/workspace-files.js +338 -0
- package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
- package/dist/map/adapter/extensions/workspace.d.ts +57 -0
- package/dist/map/adapter/extensions/workspace.d.ts.map +1 -0
- package/dist/map/adapter/extensions/workspace.js +81 -0
- package/dist/map/adapter/extensions/workspace.js.map +1 -0
- package/dist/map/adapter/index.d.ts +20 -0
- package/dist/map/adapter/index.d.ts.map +1 -0
- package/dist/map/adapter/index.js +40 -0
- package/dist/map/adapter/index.js.map +1 -0
- package/dist/map/adapter/interface.d.ts +450 -0
- package/dist/map/adapter/interface.d.ts.map +1 -0
- package/dist/map/adapter/interface.js +24 -0
- package/dist/map/adapter/interface.js.map +1 -0
- package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
- package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
- package/dist/map/adapter/mail-handler-adapter.js +292 -0
- package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
- package/dist/map/adapter/map-adapter.d.ts +200 -0
- package/dist/map/adapter/map-adapter.d.ts.map +1 -0
- package/dist/map/adapter/map-adapter.js +1199 -0
- package/dist/map/adapter/map-adapter.js.map +1 -0
- package/dist/map/adapter/rpc-handler.d.ts +263 -0
- package/dist/map/adapter/rpc-handler.d.ts.map +1 -0
- package/dist/map/adapter/rpc-handler.js +365 -0
- package/dist/map/adapter/rpc-handler.js.map +1 -0
- package/dist/map/adapter/subscription-manager.d.ts +174 -0
- package/dist/map/adapter/subscription-manager.d.ts.map +1 -0
- package/dist/map/adapter/subscription-manager.js +248 -0
- package/dist/map/adapter/subscription-manager.js.map +1 -0
- package/dist/map/adapter/types.d.ts +194 -0
- package/dist/map/adapter/types.d.ts.map +1 -0
- package/dist/map/adapter/types.js +27 -0
- package/dist/map/adapter/types.js.map +1 -0
- package/dist/map/adapter/websocket-integration.d.ts +113 -0
- package/dist/map/adapter/websocket-integration.d.ts.map +1 -0
- package/dist/map/adapter/websocket-integration.js +134 -0
- package/dist/map/adapter/websocket-integration.js.map +1 -0
- package/dist/map/cascade-action-handler.d.ts.map +1 -1
- package/dist/map/cascade-action-handler.js +19 -5
- package/dist/map/cascade-action-handler.js.map +1 -1
- package/dist/map/federation/envelope.d.ts +98 -0
- package/dist/map/federation/envelope.d.ts.map +1 -0
- package/dist/map/federation/envelope.js +160 -0
- package/dist/map/federation/envelope.js.map +1 -0
- package/dist/map/federation/federation-handler.d.ts +50 -0
- package/dist/map/federation/federation-handler.d.ts.map +1 -0
- package/dist/map/federation/federation-handler.js +306 -0
- package/dist/map/federation/federation-handler.js.map +1 -0
- package/dist/map/federation/index.d.ts +14 -0
- package/dist/map/federation/index.d.ts.map +1 -0
- package/dist/map/federation/index.js +13 -0
- package/dist/map/federation/index.js.map +1 -0
- package/dist/map/federation/types.d.ts +239 -0
- package/dist/map/federation/types.d.ts.map +1 -0
- package/dist/map/federation/types.js +23 -0
- package/dist/map/federation/types.js.map +1 -0
- package/dist/map/server.d.ts.map +1 -1
- package/dist/map/server.js +17 -2
- package/dist/map/server.js.map +1 -1
- package/dist/map/types.d.ts +6 -0
- package/dist/map/types.d.ts.map +1 -1
- package/dist/mcp/map-client.d.ts +39 -0
- package/dist/mcp/map-client.d.ts.map +1 -0
- package/dist/mcp/map-client.js +129 -0
- package/dist/mcp/map-client.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +72 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -0
- package/dist/mcp/mcp-server.js +1027 -0
- package/dist/mcp/mcp-server.js.map +1 -0
- package/dist/mcp/tools/claim_task.d.ts +35 -0
- package/dist/mcp/tools/claim_task.d.ts.map +1 -0
- package/dist/mcp/tools/claim_task.js +58 -0
- package/dist/mcp/tools/claim_task.js.map +1 -0
- package/dist/mcp/tools/done-v2.d.ts +0 -1
- package/dist/mcp/tools/done-v2.d.ts.map +1 -1
- package/dist/mcp/tools/done-v2.js +0 -1
- package/dist/mcp/tools/done-v2.js.map +1 -1
- package/dist/mcp/tools/done.d.ts +102 -0
- package/dist/mcp/tools/done.d.ts.map +1 -0
- package/dist/mcp/tools/done.js +253 -0
- package/dist/mcp/tools/done.js.map +1 -0
- package/dist/mcp/tools/inject_context.d.ts +61 -0
- package/dist/mcp/tools/inject_context.d.ts.map +1 -0
- package/dist/mcp/tools/inject_context.js +123 -0
- package/dist/mcp/tools/inject_context.js.map +1 -0
- package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
- package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
- package/dist/mcp/tools/list_claimable_tasks.js +63 -0
- package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
- package/dist/mcp/tools/unclaim_task.d.ts +31 -0
- package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
- package/dist/mcp/tools/unclaim_task.js +47 -0
- package/dist/mcp/tools/unclaim_task.js.map +1 -0
- package/dist/mcp/tools/wait_for_activity.d.ts +60 -0
- package/dist/mcp/tools/wait_for_activity.d.ts.map +1 -0
- package/dist/mcp/tools/wait_for_activity.js +135 -0
- package/dist/mcp/tools/wait_for_activity.js.map +1 -0
- package/dist/monitor/health-check-service.d.ts +143 -0
- package/dist/monitor/health-check-service.d.ts.map +1 -0
- package/dist/monitor/health-check-service.js +240 -0
- package/dist/monitor/health-check-service.js.map +1 -0
- package/dist/monitor/index.d.ts +14 -0
- package/dist/monitor/index.d.ts.map +1 -0
- package/dist/monitor/index.js +14 -0
- package/dist/monitor/index.js.map +1 -0
- package/dist/monitor/stall-detector.d.ts +109 -0
- package/dist/monitor/stall-detector.d.ts.map +1 -0
- package/dist/monitor/stall-detector.js +152 -0
- package/dist/monitor/stall-detector.js.map +1 -0
- package/dist/peer/capability-manager.d.ts +56 -0
- package/dist/peer/capability-manager.d.ts.map +1 -0
- package/dist/peer/capability-manager.js +186 -0
- package/dist/peer/capability-manager.js.map +1 -0
- package/dist/peer/encapsulation-manager.d.ts +190 -0
- package/dist/peer/encapsulation-manager.d.ts.map +1 -0
- package/dist/peer/encapsulation-manager.js +486 -0
- package/dist/peer/encapsulation-manager.js.map +1 -0
- package/dist/peer/federation-manager.d.ts +223 -0
- package/dist/peer/federation-manager.d.ts.map +1 -0
- package/dist/peer/federation-manager.js +528 -0
- package/dist/peer/federation-manager.js.map +1 -0
- package/dist/peer/hierarchy-errors.d.ts +208 -0
- package/dist/peer/hierarchy-errors.d.ts.map +1 -0
- package/dist/peer/hierarchy-errors.js +268 -0
- package/dist/peer/hierarchy-errors.js.map +1 -0
- package/dist/peer/hierarchy-protocol.d.ts +159 -0
- package/dist/peer/hierarchy-protocol.d.ts.map +1 -0
- package/dist/peer/hierarchy-protocol.js +142 -0
- package/dist/peer/hierarchy-protocol.js.map +1 -0
- package/dist/peer/index.d.ts +15 -0
- package/dist/peer/index.d.ts.map +1 -0
- package/dist/peer/index.js +15 -0
- package/dist/peer/index.js.map +1 -0
- package/dist/peer/peer-manager.d.ts +99 -0
- package/dist/peer/peer-manager.d.ts.map +1 -0
- package/dist/peer/peer-manager.js +333 -0
- package/dist/peer/peer-manager.js.map +1 -0
- package/dist/peer/task-delegation.d.ts +189 -0
- package/dist/peer/task-delegation.d.ts.map +1 -0
- package/dist/peer/task-delegation.js +303 -0
- package/dist/peer/task-delegation.js.map +1 -0
- package/dist/peer/transports/index.d.ts +8 -0
- package/dist/peer/transports/index.d.ts.map +1 -0
- package/dist/peer/transports/index.js +8 -0
- package/dist/peer/transports/index.js.map +1 -0
- package/dist/peer/transports/local-transport.d.ts +56 -0
- package/dist/peer/transports/local-transport.d.ts.map +1 -0
- package/dist/peer/transports/local-transport.js +263 -0
- package/dist/peer/transports/local-transport.js.map +1 -0
- package/dist/peer/transports/websocket-transport.d.ts +86 -0
- package/dist/peer/transports/websocket-transport.d.ts.map +1 -0
- package/dist/peer/transports/websocket-transport.js +338 -0
- package/dist/peer/transports/websocket-transport.js.map +1 -0
- package/dist/peer/types.d.ts +268 -0
- package/dist/peer/types.d.ts.map +1 -0
- package/dist/peer/types.js +36 -0
- package/dist/peer/types.js.map +1 -0
- package/dist/router/address-resolver.d.ts +102 -0
- package/dist/router/address-resolver.d.ts.map +1 -0
- package/dist/router/address-resolver.js +198 -0
- package/dist/router/address-resolver.js.map +1 -0
- package/dist/router/broadcast.d.ts +53 -0
- package/dist/router/broadcast.d.ts.map +1 -0
- package/dist/router/broadcast.js +75 -0
- package/dist/router/broadcast.js.map +1 -0
- package/dist/router/channels.d.ts +148 -0
- package/dist/router/channels.d.ts.map +1 -0
- package/dist/router/channels.js +126 -0
- package/dist/router/channels.js.map +1 -0
- package/dist/router/index.d.ts +21 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +18 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/message-router.d.ts +197 -0
- package/dist/router/message-router.d.ts.map +1 -0
- package/dist/router/message-router.js +903 -0
- package/dist/router/message-router.js.map +1 -0
- package/dist/router/message-types.d.ts +183 -0
- package/dist/router/message-types.d.ts.map +1 -0
- package/dist/router/message-types.js +79 -0
- package/dist/router/message-types.js.map +1 -0
- package/dist/router/role-resolver.d.ts +67 -0
- package/dist/router/role-resolver.d.ts.map +1 -0
- package/dist/router/role-resolver.js +106 -0
- package/dist/router/role-resolver.js.map +1 -0
- package/dist/router/signals.d.ts +253 -0
- package/dist/router/signals.d.ts.map +1 -0
- package/dist/router/signals.js +53 -0
- package/dist/router/signals.js.map +1 -0
- package/dist/router/types.d.ts +191 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +34 -0
- package/dist/router/types.js.map +1 -0
- package/dist/router/wake.d.ts +111 -0
- package/dist/router/wake.d.ts.map +1 -0
- package/dist/router/wake.js +180 -0
- package/dist/router/wake.js.map +1 -0
- package/dist/server/combined-server.d.ts +95 -0
- package/dist/server/combined-server.d.ts.map +1 -0
- package/dist/server/combined-server.js +335 -0
- package/dist/server/combined-server.js.map +1 -0
- package/dist/steering/index.d.ts +11 -0
- package/dist/steering/index.d.ts.map +1 -0
- package/dist/steering/index.js +11 -0
- package/dist/steering/index.js.map +1 -0
- package/dist/steering/inject.d.ts +39 -0
- package/dist/steering/inject.d.ts.map +1 -0
- package/dist/steering/inject.js +197 -0
- package/dist/steering/inject.js.map +1 -0
- package/dist/steering/types.d.ts +100 -0
- package/dist/steering/types.d.ts.map +1 -0
- package/dist/steering/types.js +11 -0
- package/dist/steering/types.js.map +1 -0
- package/dist/store/backends/index.d.ts +11 -0
- package/dist/store/backends/index.d.ts.map +1 -0
- package/dist/store/backends/index.js +15 -0
- package/dist/store/backends/index.js.map +1 -0
- package/dist/store/backends/json-backend.d.ts +23 -0
- package/dist/store/backends/json-backend.d.ts.map +1 -0
- package/dist/store/backends/json-backend.js +220 -0
- package/dist/store/backends/json-backend.js.map +1 -0
- package/dist/store/backends/memory-backend.d.ts +12 -0
- package/dist/store/backends/memory-backend.d.ts.map +1 -0
- package/dist/store/backends/memory-backend.js +205 -0
- package/dist/store/backends/memory-backend.js.map +1 -0
- package/dist/store/backends/sqlite-backend.d.ts +27 -0
- package/dist/store/backends/sqlite-backend.d.ts.map +1 -0
- package/dist/store/backends/sqlite-backend.js +231 -0
- package/dist/store/backends/sqlite-backend.js.map +1 -0
- package/dist/store/backends/tinybase-backend.d.ts +22 -0
- package/dist/store/backends/tinybase-backend.d.ts.map +1 -0
- package/dist/store/backends/tinybase-backend.js +203 -0
- package/dist/store/backends/tinybase-backend.js.map +1 -0
- package/dist/store/backends/types.d.ts +175 -0
- package/dist/store/backends/types.d.ts.map +1 -0
- package/dist/store/backends/types.js +28 -0
- package/dist/store/backends/types.js.map +1 -0
- package/dist/store/event-store.d.ts +128 -0
- package/dist/store/event-store.d.ts.map +1 -0
- package/dist/store/event-store.js +1751 -0
- package/dist/store/event-store.js.map +1 -0
- package/dist/store/instance.d.ts +290 -0
- package/dist/store/instance.d.ts.map +1 -0
- package/dist/store/instance.js +363 -0
- package/dist/store/instance.js.map +1 -0
- package/dist/store/migrations.d.ts +41 -0
- package/dist/store/migrations.d.ts.map +1 -0
- package/dist/store/migrations.js +79 -0
- package/dist/store/migrations.js.map +1 -0
- package/dist/store/test-utils.d.ts +63 -0
- package/dist/store/test-utils.d.ts.map +1 -0
- package/dist/store/test-utils.js +63 -0
- package/dist/store/test-utils.js.map +1 -0
- package/dist/store/types/config.d.ts +16 -0
- package/dist/store/types/config.d.ts.map +1 -0
- package/dist/store/types/config.js +8 -0
- package/dist/store/types/config.js.map +1 -0
- package/dist/store/types/conversations.d.ts +91 -0
- package/dist/store/types/conversations.d.ts.map +1 -0
- package/dist/store/types/conversations.js +8 -0
- package/dist/store/types/conversations.js.map +1 -0
- package/dist/store/types/sessions.d.ts +44 -0
- package/dist/store/types/sessions.d.ts.map +1 -0
- package/dist/store/types/sessions.js +9 -0
- package/dist/store/types/sessions.js.map +1 -0
- package/dist/store/types.d.ts +115 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +6 -0
- package/dist/store/types.js.map +1 -0
- package/dist/task/backend/index.d.ts +93 -0
- package/dist/task/backend/index.d.ts.map +1 -0
- package/dist/task/backend/index.js +178 -0
- package/dist/task/backend/index.js.map +1 -0
- package/dist/task/backend/memory.d.ts +70 -0
- package/dist/task/backend/memory.d.ts.map +1 -0
- package/dist/task/backend/memory.js +621 -0
- package/dist/task/backend/memory.js.map +1 -0
- package/dist/task/backend/opentasks/backend.d.ts +140 -0
- package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
- package/dist/task/backend/opentasks/backend.js +1023 -0
- package/dist/task/backend/opentasks/backend.js.map +1 -0
- package/dist/task/backend/opentasks/client.d.ts +337 -0
- package/dist/task/backend/opentasks/client.d.ts.map +1 -0
- package/dist/task/backend/opentasks/client.js +225 -0
- package/dist/task/backend/opentasks/client.js.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.js +195 -0
- package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
- package/dist/task/backend/opentasks/index.d.ts +21 -0
- package/dist/task/backend/opentasks/index.d.ts.map +1 -0
- package/dist/task/backend/opentasks/index.js +21 -0
- package/dist/task/backend/opentasks/index.js.map +1 -0
- package/dist/task/backend/opentasks/mapping.d.ts +48 -0
- package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
- package/dist/task/backend/opentasks/mapping.js +77 -0
- package/dist/task/backend/opentasks/mapping.js.map +1 -0
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts +54 -0
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts.map +1 -0
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.js +88 -0
- package/dist/task/backend/sudocode/__tests__/integration/test-utils.js.map +1 -0
- package/dist/task/backend/sudocode/backend.d.ts +155 -0
- package/dist/task/backend/sudocode/backend.d.ts.map +1 -0
- package/dist/task/backend/sudocode/backend.js +942 -0
- package/dist/task/backend/sudocode/backend.js.map +1 -0
- package/dist/task/backend/sudocode/client.d.ts +303 -0
- package/dist/task/backend/sudocode/client.d.ts.map +1 -0
- package/dist/task/backend/sudocode/client.js +101 -0
- package/dist/task/backend/sudocode/client.js.map +1 -0
- package/dist/task/backend/sudocode/index.d.ts +19 -0
- package/dist/task/backend/sudocode/index.d.ts.map +1 -0
- package/dist/task/backend/sudocode/index.js +17 -0
- package/dist/task/backend/sudocode/index.js.map +1 -0
- package/dist/task/backend/sudocode/mapping.d.ts +51 -0
- package/dist/task/backend/sudocode/mapping.d.ts.map +1 -0
- package/dist/task/backend/sudocode/mapping.js +86 -0
- package/dist/task/backend/sudocode/mapping.js.map +1 -0
- package/dist/task/backend/sudocode/server-client.d.ts +56 -0
- package/dist/task/backend/sudocode/server-client.d.ts.map +1 -0
- package/dist/task/backend/sudocode/server-client.js +367 -0
- package/dist/task/backend/sudocode/server-client.js.map +1 -0
- package/dist/task/backend/sudocode/standalone-client.d.ts +91 -0
- package/dist/task/backend/sudocode/standalone-client.d.ts.map +1 -0
- package/dist/task/backend/sudocode/standalone-client.js +476 -0
- package/dist/task/backend/sudocode/standalone-client.js.map +1 -0
- package/dist/task/backend/sudocode/sync-policy.d.ts +166 -0
- package/dist/task/backend/sudocode/sync-policy.d.ts.map +1 -0
- package/dist/task/backend/sudocode/sync-policy.js +221 -0
- package/dist/task/backend/sudocode/sync-policy.js.map +1 -0
- package/dist/task/backend/sudocode/tools.d.ts +87 -0
- package/dist/task/backend/sudocode/tools.d.ts.map +1 -0
- package/dist/task/backend/sudocode/tools.js +743 -0
- package/dist/task/backend/sudocode/tools.js.map +1 -0
- package/dist/task/backend/tool-provider.d.ts +56 -0
- package/dist/task/backend/tool-provider.d.ts.map +1 -0
- package/dist/task/backend/tool-provider.js +424 -0
- package/dist/task/backend/tool-provider.js.map +1 -0
- package/dist/task/backend/types.d.ts +297 -0
- package/dist/task/backend/types.d.ts.map +1 -0
- package/dist/task/backend/types.js +27 -0
- package/dist/task/backend/types.js.map +1 -0
- package/dist/task/backend/unified-tool-provider.d.ts +57 -0
- package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
- package/dist/task/backend/unified-tool-provider.js +623 -0
- package/dist/task/backend/unified-tool-provider.js.map +1 -0
- package/dist/task/index.d.ts +7 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +7 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/retry-policy.d.ts +89 -0
- package/dist/task/retry-policy.d.ts.map +1 -0
- package/dist/task/retry-policy.js +160 -0
- package/dist/task/retry-policy.js.map +1 -0
- package/dist/task/task-manager.d.ts +70 -0
- package/dist/task/task-manager.d.ts.map +1 -0
- package/dist/task/task-manager.js +319 -0
- package/dist/task/task-manager.js.map +1 -0
- package/dist/task/types.d.ts +72 -0
- package/dist/task/types.d.ts.map +1 -0
- package/dist/task/types.js +33 -0
- package/dist/task/types.js.map +1 -0
- package/dist/teams/team-loader.d.ts +2 -1
- package/dist/teams/team-loader.d.ts.map +1 -1
- package/dist/teams/team-loader.js +2 -1
- package/dist/teams/team-loader.js.map +1 -1
- package/dist/teams/team-manager.d.ts +101 -0
- package/dist/teams/team-manager.d.ts.map +1 -0
- package/dist/teams/team-manager.js +260 -0
- package/dist/teams/team-manager.js.map +1 -0
- package/dist/teams/team-runtime-v2.d.ts +0 -3
- package/dist/teams/team-runtime-v2.d.ts.map +1 -1
- package/dist/teams/team-runtime-v2.js +8 -87
- package/dist/teams/team-runtime-v2.js.map +1 -1
- package/dist/teams/team-runtime.d.ts +245 -0
- package/dist/teams/team-runtime.d.ts.map +1 -0
- package/dist/teams/team-runtime.js +1023 -0
- package/dist/teams/team-runtime.js.map +1 -0
- package/dist/trigger/router/index.d.ts +11 -0
- package/dist/trigger/router/index.d.ts.map +1 -0
- package/dist/trigger/router/index.js +10 -0
- package/dist/trigger/router/index.js.map +1 -0
- package/dist/trigger/router/strategies/ai-router-strategy.d.ts +34 -0
- package/dist/trigger/router/strategies/ai-router-strategy.d.ts.map +1 -0
- package/dist/trigger/router/strategies/ai-router-strategy.js +359 -0
- package/dist/trigger/router/strategies/ai-router-strategy.js.map +1 -0
- package/dist/trigger/router/strategies/direct-strategy.d.ts +32 -0
- package/dist/trigger/router/strategies/direct-strategy.d.ts.map +1 -0
- package/dist/trigger/router/strategies/direct-strategy.js +119 -0
- package/dist/trigger/router/strategies/direct-strategy.js.map +1 -0
- package/dist/trigger/router/strategies/index.d.ts +11 -0
- package/dist/trigger/router/strategies/index.d.ts.map +1 -0
- package/dist/trigger/router/strategies/index.js +11 -0
- package/dist/trigger/router/strategies/index.js.map +1 -0
- package/dist/trigger/router/strategies/role-strategy.d.ts +39 -0
- package/dist/trigger/router/strategies/role-strategy.d.ts.map +1 -0
- package/dist/trigger/router/strategies/role-strategy.js +207 -0
- package/dist/trigger/router/strategies/role-strategy.js.map +1 -0
- package/dist/trigger/router/trigger-router.d.ts +54 -0
- package/dist/trigger/router/trigger-router.d.ts.map +1 -0
- package/dist/trigger/router/trigger-router.js +362 -0
- package/dist/trigger/router/trigger-router.js.map +1 -0
- package/dist/trigger/router/types.d.ts +225 -0
- package/dist/trigger/router/types.d.ts.map +1 -0
- package/dist/trigger/router/types.js +10 -0
- package/dist/trigger/router/types.js.map +1 -0
- package/dist/trigger/sources/cron/cron-service.d.ts.map +1 -1
- package/dist/trigger/sources/cron/cron-service.js +6 -3
- package/dist/trigger/sources/cron/cron-service.js.map +1 -1
- package/dist/trigger/trigger-system.d.ts +77 -0
- package/dist/trigger/trigger-system.d.ts.map +1 -0
- package/dist/trigger/trigger-system.js +84 -0
- package/dist/trigger/trigger-system.js.map +1 -0
- package/dist/util/git-safety.d.ts +33 -0
- package/dist/util/git-safety.d.ts.map +1 -0
- package/dist/util/git-safety.js +94 -0
- package/dist/util/git-safety.js.map +1 -0
- package/dist/workspace/dataplane-adapter.d.ts +260 -0
- package/dist/workspace/dataplane-adapter.d.ts.map +1 -0
- package/dist/workspace/dataplane-adapter.js +416 -0
- package/dist/workspace/dataplane-adapter.js.map +1 -0
- package/dist/workspace/index.d.ts +0 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +0 -2
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/landing/direct-push.d.ts.map +1 -1
- package/dist/workspace/landing/direct-push.js +22 -7
- package/dist/workspace/landing/direct-push.js.map +1 -1
- package/dist/workspace/landing/queue-to-branch.d.ts.map +1 -1
- package/dist/workspace/landing/queue-to-branch.js +1 -3
- package/dist/workspace/landing/queue-to-branch.js.map +1 -1
- package/dist/workspace/types.d.ts +0 -13
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/workspace-manager.d.ts +0 -11
- package/dist/workspace/workspace-manager.d.ts.map +1 -1
- package/dist/workspace/workspace-manager.js +0 -30
- package/dist/workspace/workspace-manager.js.map +1 -1
- package/package.json +28 -2
- package/templates/teams/self-driving/prompts/grinder.md +1 -0
- package/templates/teams/self-driving/prompts/judge.md +1 -0
- package/templates/teams/self-driving/prompts/planner.md +1 -0
- package/templates/teams/self-driving/roles/grinder.yaml +15 -0
- package/templates/teams/self-driving/roles/judge.yaml +10 -0
- package/templates/teams/self-driving/roles/planner.yaml +16 -0
- package/.claude/commands/openspec/apply.md +0 -23
- package/.claude/commands/openspec/archive.md +0 -27
- package/.claude/commands/openspec/proposal.md +0 -28
- package/.claude/settings.json +0 -133
- package/.gitattributes +0 -3
- package/.opentasks/config.json +0 -9
- package/.opentasks/graph.jsonl +0 -0
- package/.sessionlog/settings.json +0 -4
- package/.sudocode/issues.jsonl +0 -183
- package/.sudocode/specs.jsonl +0 -56
- package/AGENTS.md +0 -18
- package/CLAUDE.md +0 -923
- package/docs/architecture.md +0 -508
- package/docs/configuration.md +0 -323
- package/docs/conflict-recovery.md +0 -472
- package/docs/design/task-dispatcher.md +0 -880
- package/docs/design-subsystem-extraction.md +0 -627
- package/docs/git-cascade-integration-gaps.md +0 -678
- package/docs/implementation-details.md +0 -1127
- package/docs/implementation-summary.md +0 -448
- package/docs/lifecycle-events-design.md +0 -111
- package/docs/mail-integration.md +0 -608
- package/docs/openhive-capability-summary.md +0 -415
- package/docs/openhive-integration.md +0 -415
- package/docs/plan-self-driving-support.md +0 -433
- package/docs/roadmap-v2-gaps.md +0 -216
- package/docs/spec-self-driving-support.md +0 -462
- package/docs/team-templates.md +0 -860
- package/docs/teams.md +0 -306
- package/docs/trigger-system-design.md +0 -333
- package/docs/troubleshooting.md +0 -489
- package/docs/workspace-interfaces.md +0 -731
- package/docs/workspace-redesign-plan.md +0 -302
- package/examples/distributed-peer-communication.ts +0 -202
- package/examples/local-peer-communication.ts +0 -165
- package/index.js +0 -2
- package/mvp_docs/agent-execution-system.md +0 -347
- package/mvp_docs/agent-interface.md +0 -580
- package/mvp_docs/data-structures.md +0 -701
- package/mvp_docs/dynamic-meta-orchestration.md +0 -116
- package/mvp_docs/multi-agent-interaction-design.md +0 -779
- package/mvp_docs/mvp-implementation-plan.md +0 -1148
- package/renovate.json5 +0 -6
- package/scripts/test-acp-integration.ts +0 -422
- package/src/__tests__/boot-v2.test.ts +0 -631
- package/src/__tests__/e2e/acp-over-map-live.e2e.test.ts +0 -496
- package/src/__tests__/e2e/acp-over-map.e2e.test.ts +0 -457
- package/src/__tests__/e2e/agent-lifecycle.e2e.test.ts +0 -770
- package/src/__tests__/e2e/auto-sync.e2e.test.ts +0 -257
- package/src/__tests__/e2e/bootstrap.e2e.test.ts +0 -319
- package/src/__tests__/e2e/cascade-rebase.e2e.test.ts +0 -254
- package/src/__tests__/e2e/cc-swarm-bridge.e2e.test.ts +0 -253
- package/src/__tests__/e2e/cli-run.e2e.test.ts +0 -167
- package/src/__tests__/e2e/cognitive-workspace.e2e.test.ts +0 -282
- package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +0 -495
- package/src/__tests__/e2e/dispatch-live.e2e.test.ts +0 -564
- package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +0 -496
- package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +0 -456
- package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +0 -386
- package/src/__tests__/e2e/dispatch.e2e.test.ts +0 -376
- package/src/__tests__/e2e/done-scenarios.e2e.test.ts +0 -322
- package/src/__tests__/e2e/live-agent.e2e.test.ts +0 -1330
- package/src/__tests__/e2e/map-server.e2e.test.ts +0 -128
- package/src/__tests__/e2e/map-sidecar.e2e.test.ts +0 -139
- package/src/__tests__/e2e/opentasks-integration.e2e.test.ts +0 -280
- package/src/__tests__/e2e/pull-mode.e2e.test.ts +0 -632
- package/src/__tests__/e2e/resume-continue.e2e.test.ts +0 -312
- package/src/__tests__/e2e/self-driving-v3.e2e.test.ts +0 -197
- package/src/__tests__/e2e/spawn-resolver.e2e.test.ts +0 -200
- package/src/__tests__/e2e/swarmkit-integration.e2e.test.ts +0 -562
- package/src/__tests__/e2e/swarmkit-live.e2e.test.ts +0 -1049
- package/src/__tests__/e2e/trajectory-tracking.e2e.test.ts +0 -258
- package/src/__tests__/e2e/trigger-wake.e2e.test.ts +0 -257
- package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +0 -383
- package/src/__tests__/e2e/workspace-v3.e2e.test.ts +0 -413
- package/src/acp/__tests__/claude-code-replay.test.ts +0 -225
- package/src/acp/__tests__/macro-agent.test.ts +0 -387
- package/src/acp/__tests__/session-mapper.test.ts +0 -152
- package/src/acp/__tests__/websocket-server.test.ts +0 -194
- package/src/acp/claude-code-replay.ts +0 -208
- package/src/acp/index.ts +0 -32
- package/src/acp/macro-agent.ts +0 -995
- package/src/acp/map-bridge.ts +0 -193
- package/src/acp/session-mapper.ts +0 -116
- package/src/acp/types.ts +0 -99
- package/src/acp/websocket-server.ts +0 -213
- package/src/adapters/__tests__/federation.test.ts +0 -256
- package/src/adapters/__tests__/inbox-adapter.test.ts +0 -316
- package/src/adapters/__tests__/tasks-adapter.test.ts +0 -270
- package/src/adapters/federation.ts +0 -185
- package/src/adapters/inbox-adapter.ts +0 -292
- package/src/adapters/inbox-client-adapter.ts +0 -173
- package/src/adapters/index.ts +0 -44
- package/src/adapters/opentasks-daemon.ts +0 -252
- package/src/adapters/tasks-adapter.ts +0 -330
- package/src/adapters/types.ts +0 -286
- package/src/agent/__tests__/agent-manager-topology.test.ts +0 -73
- package/src/agent/__tests__/agent-manager-v2.completion-signal.test.ts +0 -284
- package/src/agent/__tests__/agent-manager-v2.permission-interception.test.ts +0 -296
- package/src/agent/__tests__/agent-manager-v2.permissions.test.ts +0 -233
- package/src/agent/__tests__/agent-manager-v2.test.ts +0 -614
- package/src/agent/__tests__/agent-store.test.ts +0 -465
- package/src/agent/__tests__/task-ref-resolution.test.ts +0 -231
- package/src/agent/agent-manager-v2.ts +0 -2187
- package/src/agent/agent-manager.ts +0 -403
- package/src/agent/agent-store.ts +0 -409
- package/src/agent/index.ts +0 -7
- package/src/agent/prompts/coordinator-signals.ts +0 -115
- package/src/agent/prompts/index.ts +0 -7
- package/src/agent/system-prompt.ts +0 -298
- package/src/agent/types.ts +0 -480
- package/src/agent-detection/__tests__/command-builder.test.ts +0 -336
- package/src/agent-detection/__tests__/detector.test.ts +0 -768
- package/src/agent-detection/__tests__/registry.test.ts +0 -254
- package/src/agent-detection/command-builder.ts +0 -90
- package/src/agent-detection/detector.ts +0 -307
- package/src/agent-detection/index.ts +0 -36
- package/src/agent-detection/registry.ts +0 -200
- package/src/agent-detection/types.ts +0 -184
- package/src/api/__tests__/server.test.ts +0 -292
- package/src/api/index.ts +0 -8
- package/src/api/server.ts +0 -380
- package/src/api/types.ts +0 -39
- package/src/auth/__tests__/token.test.ts +0 -100
- package/src/auth/index.ts +0 -1
- package/src/auth/token.ts +0 -82
- package/src/boot-v2.ts +0 -1343
- package/src/cli/__tests__/stable-instance-id.test.ts +0 -57
- package/src/cli/acp.ts +0 -101
- package/src/cli/inbox-mcp-proxy.ts +0 -56
- package/src/cli/index.ts +0 -566
- package/src/cli/mcp.ts +0 -305
- package/src/cli/parse-args.ts +0 -54
- package/src/cli/stable-instance-id.ts +0 -14
- package/src/cognitive/__tests__/macro-agent-backend.test.ts +0 -673
- package/src/cognitive/__tests__/session-converter.test.ts +0 -423
- package/src/cognitive/__tests__/workspace-handler.test.ts +0 -221
- package/src/cognitive/analyst-role.ts +0 -59
- package/src/cognitive/index.ts +0 -49
- package/src/cognitive/macro-agent-backend.ts +0 -402
- package/src/cognitive/session-converter.ts +0 -151
- package/src/cognitive/types.ts +0 -187
- package/src/cognitive/workspace-handler.ts +0 -163
- package/src/config/index.ts +0 -9
- package/src/config/project-config.ts +0 -294
- package/src/control/__tests__/control-resilience.test.ts +0 -251
- package/src/control/__tests__/control-socket.test.ts +0 -240
- package/src/control/control-client.ts +0 -337
- package/src/control/control-server.ts +0 -298
- package/src/control/index.ts +0 -17
- package/src/control/types.ts +0 -95
- package/src/dispatch/CLAUDE.md +0 -129
- package/src/dispatch/__tests__/loadout-translation.test.ts +0 -141
- package/src/dispatch/__tests__/mail-inbound-consumer.integration.test.ts +0 -519
- package/src/dispatch/__tests__/mail-inbound-consumer.test.ts +0 -800
- package/src/dispatch/__tests__/mail-inbound-reuse-consumer.test.ts +0 -575
- package/src/dispatch/__tests__/permission-evaluator.test.ts +0 -196
- package/src/dispatch/__tests__/permission-overlay.test.ts +0 -56
- package/src/dispatch/__tests__/permissions-handler.test.ts +0 -168
- package/src/dispatch/__tests__/spawn-agent-handler.test.ts +0 -282
- package/src/dispatch/loadout-translation.ts +0 -138
- package/src/dispatch/mail-inbound-consumer.ts +0 -560
- package/src/dispatch/mail-inbound-reuse-consumer.ts +0 -479
- package/src/dispatch/permission-evaluator.ts +0 -191
- package/src/dispatch/permission-overlay.ts +0 -89
- package/src/dispatch/permissions-handler.ts +0 -112
- package/src/dispatch/spawn-agent-handler.ts +0 -160
- package/src/index.ts +0 -117
- package/src/integrations/__tests__/context-builder.test.ts +0 -218
- package/src/integrations/__tests__/sessionlog.test.ts +0 -498
- package/src/integrations/__tests__/skilltree.test.ts +0 -136
- package/src/integrations/context-builder.ts +0 -280
- package/src/integrations/sessionlog.ts +0 -194
- package/src/integrations/skilltree.ts +0 -184
- package/src/lifecycle/__tests__/cascade-consolidation.test.ts +0 -240
- package/src/lifecycle/__tests__/handlers-v2.test.ts +0 -565
- package/src/lifecycle/cascade.ts +0 -335
- package/src/lifecycle/cleanup.ts +0 -373
- package/src/lifecycle/handlers-v2.ts +0 -508
- package/src/lifecycle/index.ts +0 -76
- package/src/lifecycle/types.ts +0 -260
- package/src/map/__tests__/cascade-bridge.test.ts +0 -229
- package/src/map/__tests__/cascade-diff-server.test.ts +0 -434
- package/src/map/__tests__/emit-event.test.ts +0 -71
- package/src/map/__tests__/lifecycle-bridge.test.ts +0 -430
- package/src/map/__tests__/mail-bridge.test.ts +0 -321
- package/src/map/__tests__/permission-forwarding.test.ts +0 -143
- package/src/map/__tests__/sidecar-diff-install-smoke.test.ts +0 -90
- package/src/map/__tests__/sidecar-integration.test.ts +0 -190
- package/src/map/__tests__/task-bridge.test.ts +0 -153
- package/src/map/__tests__/trajectory-reporter.test.ts +0 -173
- package/src/map/acp-bridge.ts +0 -293
- package/src/map/cascade-action-handler.ts +0 -205
- package/src/map/cascade-bridge.ts +0 -339
- package/src/map/cascade-diff-server.ts +0 -404
- package/src/map/cc-swarm-hooks.ts +0 -242
- package/src/map/coordination-handler.ts +0 -232
- package/src/map/index.ts +0 -18
- package/src/map/lifecycle-bridge.ts +0 -236
- package/src/map/mail-bridge.ts +0 -263
- package/src/map/repo-workspace.ts +0 -82
- package/src/map/server.ts +0 -758
- package/src/map/sidecar.ts +0 -826
- package/src/map/task-bridge.ts +0 -89
- package/src/map/trajectory-reporter.ts +0 -124
- package/src/map/types.ts +0 -304
- package/src/mcp/__tests__/mcp-server-v2.test.ts +0 -236
- package/src/mcp/index.ts +0 -6
- package/src/mcp/mcp-server-v2.ts +0 -485
- package/src/mcp/tools/done-v2.ts +0 -213
- package/src/mcp/types.ts +0 -432
- package/src/metrics/__tests__/metrics.test.ts +0 -205
- package/src/metrics/index.ts +0 -13
- package/src/metrics/metrics.ts +0 -151
- package/src/metrics/types.ts +0 -63
- package/src/roles/__tests__/config-loader.test.ts +0 -540
- package/src/roles/builtin/coordinator.ts +0 -75
- package/src/roles/builtin/generic.ts +0 -39
- package/src/roles/builtin/index.ts +0 -51
- package/src/roles/builtin/integrator.ts +0 -62
- package/src/roles/builtin/monitor.ts +0 -65
- package/src/roles/builtin/worker.ts +0 -134
- package/src/roles/capabilities.ts +0 -257
- package/src/roles/config-loader.ts +0 -405
- package/src/roles/index.ts +0 -141
- package/src/roles/registry.ts +0 -713
- package/src/roles/types.ts +0 -344
- package/src/store/index.ts +0 -8
- package/src/store/types/agents.ts +0 -69
- package/src/store/types/events.ts +0 -91
- package/src/store/types/index.ts +0 -9
- package/src/store/types/messages.ts +0 -32
- package/src/store/types/primitives.ts +0 -9
- package/src/store/types/tasks.ts +0 -124
- package/src/teams/__tests__/team-manager-v2.test.ts +0 -425
- package/src/teams/__tests__/team-runtime-v2.test.ts +0 -402
- package/src/teams/index.ts +0 -29
- package/src/teams/seed-defaults.ts +0 -83
- package/src/teams/team-loader.ts +0 -476
- package/src/teams/team-manager-v2.ts +0 -343
- package/src/teams/team-runtime-v2.ts +0 -943
- package/src/teams/types.ts +0 -276
- package/src/trigger/__tests__/cron-service.test.ts +0 -548
- package/src/trigger/__tests__/scheduler.test.ts +0 -371
- package/src/trigger/__tests__/system-event-queue.test.ts +0 -147
- package/src/trigger/__tests__/trigger-system-v2.test.ts +0 -257
- package/src/trigger/__tests__/wake-manager.test.ts +0 -356
- package/src/trigger/__tests__/webhook-handler.test.ts +0 -567
- package/src/trigger/index.ts +0 -110
- package/src/trigger/queue/index.ts +0 -21
- package/src/trigger/queue/system-event-queue.ts +0 -232
- package/src/trigger/queue/types.ts +0 -149
- package/src/trigger/sources/cron/cron-service.ts +0 -499
- package/src/trigger/sources/cron/index.ts +0 -41
- package/src/trigger/sources/cron/scheduler.ts +0 -344
- package/src/trigger/sources/cron/types.ts +0 -333
- package/src/trigger/sources/index.ts +0 -10
- package/src/trigger/sources/webhook/index.ts +0 -25
- package/src/trigger/sources/webhook/types.ts +0 -205
- package/src/trigger/sources/webhook/webhook-handler.ts +0 -410
- package/src/trigger/strategies/ai-router.ts +0 -170
- package/src/trigger/trigger-system-v2.ts +0 -536
- package/src/trigger/types.ts +0 -228
- package/src/trigger/wake/index.ts +0 -22
- package/src/trigger/wake/types.ts +0 -162
- package/src/trigger/wake/wake-manager.ts +0 -390
- package/src/workspace/__tests__/git-cascade-adapter.test.ts +0 -563
- package/src/workspace/__tests__/land-dispatch.test.ts +0 -214
- package/src/workspace/__tests__/self-driving-yaml.test.ts +0 -122
- package/src/workspace/__tests__/shared-worktree-refcount.test.ts +0 -154
- package/src/workspace/__tests__/standalone-mode.test.ts +0 -118
- package/src/workspace/__tests__/workspace-manager-v3.test.ts +0 -245
- package/src/workspace/__tests__/yaml-schema.test.ts +0 -210
- package/src/workspace/config.ts +0 -165
- package/src/workspace/git-cascade-adapter.ts +0 -1213
- package/src/workspace/index.ts +0 -110
- package/src/workspace/landing/__tests__/strategies.test.ts +0 -184
- package/src/workspace/landing/direct-push.ts +0 -91
- package/src/workspace/landing/index.ts +0 -40
- package/src/workspace/landing/merge-to-parent.ts +0 -229
- package/src/workspace/landing/optimistic-push.ts +0 -36
- package/src/workspace/landing/queue-to-branch.ts +0 -108
- package/src/workspace/merge-queue/__tests__/conflict-resolution-git.e2e.test.ts +0 -641
- package/src/workspace/merge-queue/__tests__/conflict-resolution.test.ts +0 -707
- package/src/workspace/merge-queue/__tests__/merge-queue-concurrent.test.ts +0 -628
- package/src/workspace/merge-queue/__tests__/merge-queue-edge-cases.test.ts +0 -1217
- package/src/workspace/merge-queue/__tests__/merge-queue.test.ts +0 -506
- package/src/workspace/merge-queue/__tests__/real-git-operations.e2e.test.ts +0 -556
- package/src/workspace/merge-queue/__tests__/resolver-flow.test.ts +0 -472
- package/src/workspace/merge-queue/index.ts +0 -38
- package/src/workspace/merge-queue/merge-queue.ts +0 -585
- package/src/workspace/merge-queue/schema.ts +0 -98
- package/src/workspace/merge-queue/types.ts +0 -316
- package/src/workspace/pool/__tests__/worktree-pool.integration.test.ts +0 -1281
- package/src/workspace/pool/__tests__/worktree-pool.test.ts +0 -590
- package/src/workspace/pool/index.ts +0 -26
- package/src/workspace/pool/types.ts +0 -276
- package/src/workspace/pool/worktree-pool.ts +0 -659
- package/src/workspace/recovery/__tests__/auto-resolve-integration.test.ts +0 -127
- package/src/workspace/recovery/__tests__/spawn-resolver.test.ts +0 -139
- package/src/workspace/recovery/__tests__/strategies.test.ts +0 -145
- package/src/workspace/recovery/abandon.ts +0 -51
- package/src/workspace/recovery/auto-resolve.ts +0 -119
- package/src/workspace/recovery/defer.ts +0 -23
- package/src/workspace/recovery/escalate.ts +0 -30
- package/src/workspace/recovery/index.ts +0 -58
- package/src/workspace/recovery/spawn-resolver.ts +0 -152
- package/src/workspace/recovery/types.ts +0 -54
- package/src/workspace/strategies/index.ts +0 -18
- package/src/workspace/strategies/optimistic.ts +0 -139
- package/src/workspace/strategies/queue.ts +0 -81
- package/src/workspace/strategies/registry.ts +0 -89
- package/src/workspace/strategies/trunk.ts +0 -123
- package/src/workspace/strategies/types.ts +0 -145
- package/src/workspace/topology/__tests__/yaml-driven.test.ts +0 -345
- package/src/workspace/topology/index.ts +0 -18
- package/src/workspace/topology/no-workspace.ts +0 -39
- package/src/workspace/topology/types.ts +0 -116
- package/src/workspace/topology/yaml-driven.ts +0 -316
- package/src/workspace/types-v3.ts +0 -162
- package/src/workspace/types.ts +0 -541
- package/src/workspace/workspace-manager.ts +0 -1577
- package/src/workspace/yaml-schema.ts +0 -216
- package/test_fixtures/README.md +0 -425
- package/test_fixtures/fixtures/behaviors/coordinators.ts +0 -196
- package/test_fixtures/fixtures/behaviors/index.ts +0 -62
- package/test_fixtures/fixtures/behaviors/integrators.ts +0 -143
- package/test_fixtures/fixtures/behaviors/monitors.ts +0 -199
- package/test_fixtures/fixtures/behaviors/workers.ts +0 -348
- package/test_fixtures/fixtures/index.ts +0 -7
- package/test_fixtures/fixtures/projects/index.ts +0 -23
- package/test_fixtures/fixtures/projects/project-with-specs.ts +0 -44
- package/test_fixtures/fixtures/projects/typescript-project.ts +0 -200
- package/test_fixtures/fixtures/repos/index.ts +0 -6
- package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -299
- package/test_fixtures/fixtures/repos/types.ts +0 -174
- package/test_fixtures/harness/assertions/harness-assertions.ts +0 -752
- package/test_fixtures/harness/assertions/index.ts +0 -8
- package/test_fixtures/harness/index.ts +0 -15
- package/test_fixtures/harness/simulator/agent-simulator.ts +0 -768
- package/test_fixtures/harness/simulator/behavior-executor.ts +0 -580
- package/test_fixtures/harness/simulator/index.ts +0 -14
- package/test_fixtures/harness/simulator/types.ts +0 -459
- package/test_fixtures/harness/test-harness.ts +0 -770
- package/test_fixtures/harness/timing/event-stepper.ts +0 -344
- package/test_fixtures/harness/timing/index.ts +0 -8
- package/tsconfig.json +0 -21
- package/vitest.config.ts +0 -30
- package/vitest.e2e.config.ts +0 -28
- package/vitest.setup.ts +0 -12
|
@@ -1,1148 +0,0 @@
|
|
|
1
|
-
# Multi-Agent System MVP Implementation Plan
|
|
2
|
-
|
|
3
|
-
**Status:** Draft
|
|
4
|
-
**Date:** 2025-01-09
|
|
5
|
-
**Phase:** MVP (Phase 1)
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Overview
|
|
10
|
-
|
|
11
|
-
This document describes the implementation plan for the MVP of the multi-agent system. The goal is a working system where a user can interact with a head manager agent that can spawn child agents for complex task decomposition.
|
|
12
|
-
|
|
13
|
-
### MVP Target Flow
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
User (CLI) → API → Head Manager Agent
|
|
17
|
-
│
|
|
18
|
-
├── Spawns child agents via ACP
|
|
19
|
-
├── Receives status updates via messaging
|
|
20
|
-
├── Queries child state/results
|
|
21
|
-
└── Synthesizes and responds to user
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
### Success Criteria
|
|
25
|
-
|
|
26
|
-
- [ ] User can start system and interact via CLI
|
|
27
|
-
- [ ] Head manager spawns on first interaction
|
|
28
|
-
- [ ] Head manager can spawn child agents for subtasks
|
|
29
|
-
- [ ] Child agents execute work via Claude Code
|
|
30
|
-
- [ ] Status flows from children to parent via messaging
|
|
31
|
-
- [ ] Parent can query agent/task state
|
|
32
|
-
- [ ] Results flow back to user
|
|
33
|
-
- [ ] History persists across sessions
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Architecture Overview
|
|
38
|
-
|
|
39
|
-
```
|
|
40
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
41
|
-
│ CLI (lightweight) │
|
|
42
|
-
└─────────────────────────────────┬───────────────────────────────┘
|
|
43
|
-
│ HTTP/WebSocket
|
|
44
|
-
▼
|
|
45
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
46
|
-
│ API │
|
|
47
|
-
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
|
|
48
|
-
│ │ Routes │ │ WebSocket │ │ MCP Server │ │
|
|
49
|
-
│ │ (REST) │ │ (realtime) │ │ (agent tools) │ │
|
|
50
|
-
│ └──────┬──────┘ └──────┬──────┘ └───────────┬─────────────┘ │
|
|
51
|
-
└─────────┼────────────────┼─────────────────────┼────────────────┘
|
|
52
|
-
│ │ │
|
|
53
|
-
└────────────────┼─────────────────────┘
|
|
54
|
-
▼
|
|
55
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
56
|
-
│ Core Services │
|
|
57
|
-
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
|
|
58
|
-
│ │ Agent Manager │ │ Task Manager │ │ Message Router │ │
|
|
59
|
-
│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
|
|
60
|
-
└───────────┼────────────────────┼────────────────────┼───────────┘
|
|
61
|
-
│ │ │
|
|
62
|
-
└────────────────────┼────────────────────┘
|
|
63
|
-
▼
|
|
64
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
65
|
-
│ Event Store (TinyBase) │
|
|
66
|
-
│ ┌─────────────────┐ ┌─────────────────────────────────────┐ │
|
|
67
|
-
│ │ Event Log │ │ Materialized Views │ │
|
|
68
|
-
│ │ (append-only) │ │ (agents, tasks, messages, etc.) │ │
|
|
69
|
-
│ └─────────────────┘ └─────────────────────────────────────┘ │
|
|
70
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
71
|
-
│
|
|
72
|
-
▼
|
|
73
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
74
|
-
│ ACP Wrapper (separate scope) │
|
|
75
|
-
│ (Claude Code integration) │
|
|
76
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Local Environment
|
|
82
|
-
|
|
83
|
-
### Directory Structure
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
~/.multiagent/
|
|
87
|
-
├── config.json # System configuration
|
|
88
|
-
├── store.db # TinyBase persistent storage
|
|
89
|
-
└── logs/ # Optional: debug logs
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### Configuration Schema
|
|
93
|
-
|
|
94
|
-
```json
|
|
95
|
-
{
|
|
96
|
-
"version": "1.0.0",
|
|
97
|
-
|
|
98
|
-
"storage": {
|
|
99
|
-
"path": "~/.multiagent/store.db"
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
"api": {
|
|
103
|
-
"port": 3000,
|
|
104
|
-
"host": "localhost"
|
|
105
|
-
},
|
|
106
|
-
|
|
107
|
-
"acp": {
|
|
108
|
-
"endpoint": "...",
|
|
109
|
-
"timeout": 300000
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
"agents": {
|
|
113
|
-
"default_model": "claude-sonnet-4-20250514",
|
|
114
|
-
"default_timeout": 1800000
|
|
115
|
-
},
|
|
116
|
-
|
|
117
|
-
"system": {
|
|
118
|
-
"head_manager_task": "You are the head manager agent..."
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## Implementation Components
|
|
126
|
-
|
|
127
|
-
### 1. Event Store (TinyBase)
|
|
128
|
-
|
|
129
|
-
**Purpose:** Append-only event log with real-time materialized views.
|
|
130
|
-
|
|
131
|
-
**1.1 Store Initialization**
|
|
132
|
-
|
|
133
|
-
```typescript
|
|
134
|
-
// store/init.ts
|
|
135
|
-
interface EventStore {
|
|
136
|
-
// Core operations
|
|
137
|
-
emit(event: Omit<Event, 'id' | 'timestamp'>): Event
|
|
138
|
-
query(filter: EventFilter): Event[]
|
|
139
|
-
subscribe(filter: EventFilter, callback: (events: Event[]) => void): Unsubscribe
|
|
140
|
-
|
|
141
|
-
// Views
|
|
142
|
-
agents: AgentView
|
|
143
|
-
tasks: TaskView
|
|
144
|
-
messages: MessageView
|
|
145
|
-
subscriptions: SubscriptionView
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function createEventStore(config: StoreConfig): EventStore
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**1.2 Event Log Table**
|
|
152
|
-
|
|
153
|
-
```typescript
|
|
154
|
-
// Tables
|
|
155
|
-
events: {
|
|
156
|
-
id: string
|
|
157
|
-
timestamp: number
|
|
158
|
-
type: EventType
|
|
159
|
-
source_agent_id: string | null
|
|
160
|
-
source_task_id: string | null
|
|
161
|
-
target_agent_id: string | null
|
|
162
|
-
target_task_id: string | null
|
|
163
|
-
target_topic: string | null
|
|
164
|
-
payload: string // JSON
|
|
165
|
-
metadata: string // JSON
|
|
166
|
-
}
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
**1.3 Materialized Views**
|
|
170
|
-
|
|
171
|
-
```typescript
|
|
172
|
-
// Derived from events, maintained by TinyBase
|
|
173
|
-
agents: {
|
|
174
|
-
[agent_id]: {
|
|
175
|
-
id, session_id, parent, state, task, task_id,
|
|
176
|
-
created_at, started_at, stopped_at, stop_reason
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
tasks: {
|
|
181
|
-
[task_id]: {
|
|
182
|
-
id, description, status, assigned_agent,
|
|
183
|
-
parent_task, created_at, created_by
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
messages: {
|
|
188
|
-
[agent_id]: {
|
|
189
|
-
pending: [{ message_id, from, content, timestamp, ... }]
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
subscriptions: {
|
|
194
|
-
[agent_id]: [{ type, target }]
|
|
195
|
-
}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
**1.4 Real-time Sync**
|
|
199
|
-
|
|
200
|
-
- TinyBase provides reactive updates
|
|
201
|
-
- CLI subscribes to changes via WebSocket
|
|
202
|
-
- Views update automatically on new events
|
|
203
|
-
|
|
204
|
-
**Deliverables:**
|
|
205
|
-
- [ ] TinyBase store setup with persistence
|
|
206
|
-
- [ ] Event emission with ID/timestamp generation
|
|
207
|
-
- [ ] Event query with filtering
|
|
208
|
-
- [ ] Agent view projection
|
|
209
|
-
- [ ] Task view projection
|
|
210
|
-
- [ ] Message queue projection
|
|
211
|
-
- [ ] Subscription change handlers
|
|
212
|
-
|
|
213
|
-
---
|
|
214
|
-
|
|
215
|
-
### 2. Agent Manager
|
|
216
|
-
|
|
217
|
-
**Purpose:** Manage agent lifecycle and state.
|
|
218
|
-
|
|
219
|
-
**2.1 Interface**
|
|
220
|
-
|
|
221
|
-
```typescript
|
|
222
|
-
// services/agent-manager.ts
|
|
223
|
-
interface AgentManager {
|
|
224
|
-
// Lifecycle
|
|
225
|
-
spawn(params: SpawnParams): Promise<Agent>
|
|
226
|
-
terminate(agent_id: string, reason: StopReason): Promise<void>
|
|
227
|
-
|
|
228
|
-
// Queries
|
|
229
|
-
get(agent_id: string): Agent | null
|
|
230
|
-
list(filter?: AgentFilter): Agent[]
|
|
231
|
-
getChildren(agent_id: string): Agent[]
|
|
232
|
-
getHierarchy(root?: string): HierarchyNode
|
|
233
|
-
|
|
234
|
-
// Head manager
|
|
235
|
-
getOrCreateHeadManager(): Promise<Agent>
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
interface SpawnParams {
|
|
239
|
-
task: string
|
|
240
|
-
parent: string | null
|
|
241
|
-
task_id?: string
|
|
242
|
-
subscriptions?: Subscription[]
|
|
243
|
-
subscribe_parent?: boolean
|
|
244
|
-
config?: AgentConfig
|
|
245
|
-
}
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
**2.2 Head Manager Bootstrap**
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
async function getOrCreateHeadManager(): Promise<Agent> {
|
|
252
|
-
// Check for existing head manager
|
|
253
|
-
const existing = agents.list({ parent: null, state: 'running' })
|
|
254
|
-
if (existing.length > 0) {
|
|
255
|
-
return existing[0]
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Spawn new head manager
|
|
259
|
-
return spawn({
|
|
260
|
-
task: config.system.head_manager_task,
|
|
261
|
-
parent: null,
|
|
262
|
-
subscribe_parent: false
|
|
263
|
-
})
|
|
264
|
-
}
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
**2.3 Spawn Flow**
|
|
268
|
-
|
|
269
|
-
```typescript
|
|
270
|
-
async function spawn(params: SpawnParams): Promise<Agent> {
|
|
271
|
-
// 1. Generate IDs
|
|
272
|
-
const agent_id = generateId('agent')
|
|
273
|
-
const task_id = params.task_id ?? generateId('task')
|
|
274
|
-
|
|
275
|
-
// 2. Create task (if not provided)
|
|
276
|
-
if (!params.task_id) {
|
|
277
|
-
taskManager.create({
|
|
278
|
-
id: task_id,
|
|
279
|
-
description: params.task,
|
|
280
|
-
created_by: params.parent ?? 'system'
|
|
281
|
-
})
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
// 3. Spawn via ACP
|
|
285
|
-
const session_id = await acp.spawn({
|
|
286
|
-
systemPrompt: generateSystemPrompt({ agent_id, task_id, ...params }),
|
|
287
|
-
// ... other ACP config
|
|
288
|
-
})
|
|
289
|
-
|
|
290
|
-
// 4. Emit spawn event
|
|
291
|
-
eventStore.emit({
|
|
292
|
-
type: 'spawn',
|
|
293
|
-
source: { agent_id: params.parent },
|
|
294
|
-
payload: {
|
|
295
|
-
agent_id,
|
|
296
|
-
session_id,
|
|
297
|
-
task: params.task,
|
|
298
|
-
task_id,
|
|
299
|
-
parent: params.parent,
|
|
300
|
-
config: params.config
|
|
301
|
-
}
|
|
302
|
-
})
|
|
303
|
-
|
|
304
|
-
// 5. Setup subscriptions
|
|
305
|
-
setupSubscriptions(agent_id, params)
|
|
306
|
-
|
|
307
|
-
// 6. Assign task
|
|
308
|
-
taskManager.assign(task_id, agent_id)
|
|
309
|
-
|
|
310
|
-
return agents.get(agent_id)
|
|
311
|
-
}
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
**2.4 Termination Flow**
|
|
315
|
-
|
|
316
|
-
```typescript
|
|
317
|
-
async function terminate(agent_id: string, reason: StopReason): Promise<void> {
|
|
318
|
-
const agent = agents.get(agent_id)
|
|
319
|
-
|
|
320
|
-
// 1. Terminate via ACP
|
|
321
|
-
await acp.terminate(agent.session_id)
|
|
322
|
-
|
|
323
|
-
// 2. Emit terminate event
|
|
324
|
-
eventStore.emit({
|
|
325
|
-
type: 'terminate',
|
|
326
|
-
source: { agent_id },
|
|
327
|
-
payload: {
|
|
328
|
-
session_id: agent.session_id,
|
|
329
|
-
reason
|
|
330
|
-
}
|
|
331
|
-
})
|
|
332
|
-
|
|
333
|
-
// 3. Update task status
|
|
334
|
-
if (agent.task_id) {
|
|
335
|
-
const status = reason === 'completed' ? 'completed' : 'failed'
|
|
336
|
-
taskManager.updateStatus(agent.task_id, status)
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
**Deliverables:**
|
|
342
|
-
- [ ] AgentManager service
|
|
343
|
-
- [ ] Spawn flow with ACP integration
|
|
344
|
-
- [ ] Terminate flow
|
|
345
|
-
- [ ] Head manager bootstrap
|
|
346
|
-
- [ ] Agent queries (get, list, children, hierarchy)
|
|
347
|
-
- [ ] Subscription setup on spawn
|
|
348
|
-
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
### 3. Task Manager
|
|
352
|
-
|
|
353
|
-
**Purpose:** Manage task lifecycle and assignment.
|
|
354
|
-
|
|
355
|
-
**3.1 Interface**
|
|
356
|
-
|
|
357
|
-
```typescript
|
|
358
|
-
// services/task-manager.ts
|
|
359
|
-
interface TaskManager {
|
|
360
|
-
// CRUD
|
|
361
|
-
create(params: CreateTaskParams): Task
|
|
362
|
-
get(task_id: string): Task | null
|
|
363
|
-
list(filter?: TaskFilter): Task[]
|
|
364
|
-
update(task_id: string, updates: Partial<Task>): Task
|
|
365
|
-
|
|
366
|
-
// Assignment
|
|
367
|
-
assign(task_id: string, agent_id: string, role?: AssignmentRole): void
|
|
368
|
-
unassign(task_id: string, agent_id: string): void
|
|
369
|
-
|
|
370
|
-
// Status
|
|
371
|
-
updateStatus(task_id: string, status: TaskStatus): void
|
|
372
|
-
|
|
373
|
-
// Hierarchy
|
|
374
|
-
createSubtask(parent_id: string, params: CreateTaskParams): Task
|
|
375
|
-
getSubtasks(task_id: string): Task[]
|
|
376
|
-
}
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
**3.2 Task Events**
|
|
380
|
-
|
|
381
|
-
```typescript
|
|
382
|
-
// Task creation
|
|
383
|
-
{ type: 'task', payload: { task_id, action: 'created', details: {...} } }
|
|
384
|
-
|
|
385
|
-
// Task assignment
|
|
386
|
-
{ type: 'task', payload: { task_id, action: 'assigned', details: { agent_id, role } } }
|
|
387
|
-
|
|
388
|
-
// Task status change
|
|
389
|
-
{ type: 'task', payload: { task_id, action: 'status_change', details: { status } } }
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
**Deliverables:**
|
|
393
|
-
- [ ] TaskManager service
|
|
394
|
-
- [ ] Task CRUD operations
|
|
395
|
-
- [ ] Task assignment/unassignment
|
|
396
|
-
- [ ] Status transitions
|
|
397
|
-
- [ ] Subtask creation
|
|
398
|
-
- [ ] Task view projection
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
### 4. Messaging System
|
|
403
|
-
|
|
404
|
-
**Purpose:** Route messages between agents.
|
|
405
|
-
|
|
406
|
-
**4.1 Interface**
|
|
407
|
-
|
|
408
|
-
```typescript
|
|
409
|
-
// services/message-router.ts
|
|
410
|
-
interface MessageRouter {
|
|
411
|
-
// Sending
|
|
412
|
-
send(params: SendParams): Message
|
|
413
|
-
|
|
414
|
-
// Receiving
|
|
415
|
-
getMessages(agent_id: string, options?: GetMessagesOptions): Message[]
|
|
416
|
-
getFullMessage(message_id: string): Message
|
|
417
|
-
|
|
418
|
-
// Subscriptions
|
|
419
|
-
subscribe(agent_id: string, subscription: Subscription): void
|
|
420
|
-
unsubscribe(agent_id: string, subscription: Subscription): void
|
|
421
|
-
getSubscriptions(agent_id: string): Subscription[]
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
interface SendParams {
|
|
425
|
-
from: { agent_id: string, task_id?: string }
|
|
426
|
-
to: Target
|
|
427
|
-
content: string
|
|
428
|
-
correlation_id?: string
|
|
429
|
-
priority?: MessagePriority
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
interface Target {
|
|
433
|
-
agent_id?: string
|
|
434
|
-
task_id?: string
|
|
435
|
-
topic?: string
|
|
436
|
-
}
|
|
437
|
-
```
|
|
438
|
-
|
|
439
|
-
**4.2 Message Routing Logic**
|
|
440
|
-
|
|
441
|
-
```typescript
|
|
442
|
-
function routeMessage(event: MessageEvent): void {
|
|
443
|
-
const { target } = event
|
|
444
|
-
const recipients: string[] = []
|
|
445
|
-
|
|
446
|
-
// Direct to agent
|
|
447
|
-
if (target.agent_id) {
|
|
448
|
-
recipients.push(target.agent_id)
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
// To task's assigned agent
|
|
452
|
-
if (target.task_id) {
|
|
453
|
-
const task = tasks.get(target.task_id)
|
|
454
|
-
if (task?.assigned_agent) {
|
|
455
|
-
recipients.push(task.assigned_agent)
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
// To topic subscribers
|
|
460
|
-
if (target.topic) {
|
|
461
|
-
const subscribers = subscriptions.getByTopic(target.topic)
|
|
462
|
-
recipients.push(...subscribers)
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
// Add to each recipient's queue
|
|
466
|
-
for (const agent_id of new Set(recipients)) {
|
|
467
|
-
addToMessageQueue(agent_id, event)
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
```
|
|
471
|
-
|
|
472
|
-
**4.3 Automatic Subscriptions**
|
|
473
|
-
|
|
474
|
-
```typescript
|
|
475
|
-
function setupSubscriptions(agent_id: string, params: SpawnParams): void {
|
|
476
|
-
// Always subscribe to direct messages
|
|
477
|
-
subscribe(agent_id, { type: 'agent', target: agent_id })
|
|
478
|
-
|
|
479
|
-
// Subscribe to assigned task
|
|
480
|
-
if (params.task_id) {
|
|
481
|
-
subscribe(agent_id, { type: 'task', target: params.task_id })
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
// Subscribe to lineage (upward visibility)
|
|
485
|
-
subscribe(agent_id, { type: 'lineage', target: agent_id })
|
|
486
|
-
|
|
487
|
-
// Parent subscribes to subtree (downward visibility)
|
|
488
|
-
if (params.parent && params.subscribe_parent !== false) {
|
|
489
|
-
subscribe(params.parent, { type: 'subtree', target: agent_id })
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
// Explicit subscriptions
|
|
493
|
-
for (const sub of params.subscriptions ?? []) {
|
|
494
|
-
subscribe(agent_id, sub)
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
**4.4 Status Event Routing**
|
|
500
|
-
|
|
501
|
-
Status events from children are routed to parent via subtree subscription:
|
|
502
|
-
|
|
503
|
-
```typescript
|
|
504
|
-
function handleStatusEvent(event: StatusEvent): void {
|
|
505
|
-
const { source } = event
|
|
506
|
-
|
|
507
|
-
// Route to agents subscribed to this agent's subtree
|
|
508
|
-
const subscribers = subscriptions.getBySubtree(source.agent_id)
|
|
509
|
-
for (const subscriber of subscribers) {
|
|
510
|
-
addToMessageQueue(subscriber, event)
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
**Deliverables:**
|
|
516
|
-
- [ ] MessageRouter service
|
|
517
|
-
- [ ] Send message with routing
|
|
518
|
-
- [ ] Message queue per agent
|
|
519
|
-
- [ ] Subscription management
|
|
520
|
-
- [ ] Automatic subscription setup
|
|
521
|
-
- [ ] Status event routing to parent
|
|
522
|
-
- [ ] Truncation for large messages
|
|
523
|
-
|
|
524
|
-
---
|
|
525
|
-
|
|
526
|
-
### 5. System Prompt Generator
|
|
527
|
-
|
|
528
|
-
**Purpose:** Generate appropriate system prompts for agents.
|
|
529
|
-
|
|
530
|
-
**5.1 Interface**
|
|
531
|
-
|
|
532
|
-
```typescript
|
|
533
|
-
// services/prompt-generator.ts
|
|
534
|
-
interface PromptGenerator {
|
|
535
|
-
generate(context: PromptContext): string
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
interface PromptContext {
|
|
539
|
-
agent_id: string
|
|
540
|
-
session_id: string
|
|
541
|
-
task: string
|
|
542
|
-
task_id: string
|
|
543
|
-
parent: string | null
|
|
544
|
-
lineage: string[]
|
|
545
|
-
subscriptions: Subscription[]
|
|
546
|
-
config: AgentConfig
|
|
547
|
-
available_tools: ToolDescription[]
|
|
548
|
-
}
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
**5.2 Template**
|
|
552
|
-
|
|
553
|
-
```typescript
|
|
554
|
-
function generate(ctx: PromptContext): string {
|
|
555
|
-
return `
|
|
556
|
-
You are Agent ${ctx.agent_id} (session: ${ctx.session_id}).
|
|
557
|
-
|
|
558
|
-
## Task
|
|
559
|
-
${ctx.task}
|
|
560
|
-
|
|
561
|
-
## Hierarchy
|
|
562
|
-
- Agent ID: ${ctx.agent_id}
|
|
563
|
-
- Parent: ${ctx.parent ?? 'none (you are the head manager)'}
|
|
564
|
-
- Lineage: ${ctx.lineage.join(' → ') || 'root'}
|
|
565
|
-
|
|
566
|
-
## Available Tools
|
|
567
|
-
${ctx.available_tools.map(t => `- ${t.name}: ${t.description}`).join('\n')}
|
|
568
|
-
|
|
569
|
-
## Subscriptions
|
|
570
|
-
${ctx.subscriptions.map(s => `- ${s.type}:${s.target}`).join('\n')}
|
|
571
|
-
|
|
572
|
-
## Guidance
|
|
573
|
-
|
|
574
|
-
### Status Reporting
|
|
575
|
-
- Emit 'started' status when you begin work
|
|
576
|
-
- Emit 'checkpoint' status at significant milestones
|
|
577
|
-
- Emit 'completed' or 'failed' status when done, with summary
|
|
578
|
-
|
|
579
|
-
### Communication
|
|
580
|
-
- Check messages periodically for updates from parent or peers
|
|
581
|
-
- Send messages to coordinate with other agents
|
|
582
|
-
- Use the blackboard for cross-cutting discoveries
|
|
583
|
-
|
|
584
|
-
### Task Management
|
|
585
|
-
- Spawn sub-agents for substantial independent subtasks
|
|
586
|
-
- Monitor child agent status via messages
|
|
587
|
-
- Aggregate results for your parent/user
|
|
588
|
-
|
|
589
|
-
${ctx.parent === null ? `
|
|
590
|
-
### Head Manager Responsibilities
|
|
591
|
-
You are the head manager. You interact directly with the user.
|
|
592
|
-
- Decompose complex requests into manageable tasks
|
|
593
|
-
- Spawn specialized agents for different aspects
|
|
594
|
-
- Synthesize results and report back to the user
|
|
595
|
-
- You persist across interactions; maintain continuity
|
|
596
|
-
` : ''}
|
|
597
|
-
`.trim()
|
|
598
|
-
}
|
|
599
|
-
```
|
|
600
|
-
|
|
601
|
-
**Deliverables:**
|
|
602
|
-
- [ ] PromptGenerator service
|
|
603
|
-
- [ ] Base template
|
|
604
|
-
- [ ] Head manager variant
|
|
605
|
-
- [ ] Tool list formatting
|
|
606
|
-
- [ ] Subscription formatting
|
|
607
|
-
|
|
608
|
-
---
|
|
609
|
-
|
|
610
|
-
### 6. MCP Tools
|
|
611
|
-
|
|
612
|
-
**Purpose:** Expose multi-agent capabilities to agents.
|
|
613
|
-
|
|
614
|
-
**6.1 Server Setup**
|
|
615
|
-
|
|
616
|
-
```typescript
|
|
617
|
-
// mcp/server.ts
|
|
618
|
-
interface MCPServer {
|
|
619
|
-
start(): Promise<void>
|
|
620
|
-
stop(): Promise<void>
|
|
621
|
-
registerTool(tool: Tool): void
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
interface Tool {
|
|
625
|
-
name: string
|
|
626
|
-
description: string
|
|
627
|
-
parameters: JSONSchema
|
|
628
|
-
handler: (params: any, context: ToolContext) => Promise<any>
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
interface ToolContext {
|
|
632
|
-
agent_id: string
|
|
633
|
-
session_id: string
|
|
634
|
-
}
|
|
635
|
-
```
|
|
636
|
-
|
|
637
|
-
**6.2 MVP Tool Implementations**
|
|
638
|
-
|
|
639
|
-
```typescript
|
|
640
|
-
// mcp/tools/spawn-agent.ts
|
|
641
|
-
const spawnAgentTool: Tool = {
|
|
642
|
-
name: 'spawn_agent',
|
|
643
|
-
description: 'Spawn a new agent to handle a subtask',
|
|
644
|
-
parameters: {
|
|
645
|
-
type: 'object',
|
|
646
|
-
properties: {
|
|
647
|
-
task: { type: 'string', description: 'What the agent should do' },
|
|
648
|
-
subscribe_parent: { type: 'boolean', default: true },
|
|
649
|
-
config: { type: 'object' }
|
|
650
|
-
},
|
|
651
|
-
required: ['task']
|
|
652
|
-
},
|
|
653
|
-
handler: async (params, ctx) => {
|
|
654
|
-
const agent = await agentManager.spawn({
|
|
655
|
-
task: params.task,
|
|
656
|
-
parent: ctx.agent_id,
|
|
657
|
-
subscribe_parent: params.subscribe_parent,
|
|
658
|
-
config: params.config
|
|
659
|
-
})
|
|
660
|
-
return { agent_id: agent.id, task_id: agent.task_id }
|
|
661
|
-
}
|
|
662
|
-
}
|
|
663
|
-
|
|
664
|
-
// mcp/tools/emit-status.ts
|
|
665
|
-
const emitStatusTool: Tool = {
|
|
666
|
-
name: 'emit_status',
|
|
667
|
-
description: 'Report a status milestone',
|
|
668
|
-
parameters: {
|
|
669
|
-
type: 'object',
|
|
670
|
-
properties: {
|
|
671
|
-
status_type: {
|
|
672
|
-
type: 'string',
|
|
673
|
-
enum: ['started', 'checkpoint', 'blocked', 'discovery', 'completed', 'failed']
|
|
674
|
-
},
|
|
675
|
-
summary: { type: 'string' },
|
|
676
|
-
details: { type: 'object' }
|
|
677
|
-
},
|
|
678
|
-
required: ['status_type', 'summary']
|
|
679
|
-
},
|
|
680
|
-
handler: async (params, ctx) => {
|
|
681
|
-
const event = eventStore.emit({
|
|
682
|
-
type: 'status',
|
|
683
|
-
source: { agent_id: ctx.agent_id },
|
|
684
|
-
payload: params
|
|
685
|
-
})
|
|
686
|
-
return { event_id: event.id }
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
// mcp/tools/send-message.ts
|
|
691
|
-
const sendMessageTool: Tool = {
|
|
692
|
-
name: 'send_message',
|
|
693
|
-
description: 'Send a message to another agent, task, or topic',
|
|
694
|
-
parameters: {
|
|
695
|
-
type: 'object',
|
|
696
|
-
properties: {
|
|
697
|
-
to: {
|
|
698
|
-
type: 'object',
|
|
699
|
-
properties: {
|
|
700
|
-
agent_id: { type: 'string' },
|
|
701
|
-
task_id: { type: 'string' },
|
|
702
|
-
topic: { type: 'string' }
|
|
703
|
-
}
|
|
704
|
-
},
|
|
705
|
-
content: { type: 'string' },
|
|
706
|
-
correlation_id: { type: 'string' }
|
|
707
|
-
},
|
|
708
|
-
required: ['to', 'content']
|
|
709
|
-
},
|
|
710
|
-
handler: async (params, ctx) => {
|
|
711
|
-
const message = messageRouter.send({
|
|
712
|
-
from: { agent_id: ctx.agent_id },
|
|
713
|
-
to: params.to,
|
|
714
|
-
content: params.content,
|
|
715
|
-
correlation_id: params.correlation_id
|
|
716
|
-
})
|
|
717
|
-
return { message_id: message.id }
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
// mcp/tools/check-messages.ts
|
|
722
|
-
const checkMessagesTool: Tool = {
|
|
723
|
-
name: 'check_messages',
|
|
724
|
-
description: 'Check for pending messages',
|
|
725
|
-
parameters: {
|
|
726
|
-
type: 'object',
|
|
727
|
-
properties: {
|
|
728
|
-
limit: { type: 'number', default: 10 }
|
|
729
|
-
}
|
|
730
|
-
},
|
|
731
|
-
handler: async (params, ctx) => {
|
|
732
|
-
const messages = messageRouter.getMessages(ctx.agent_id, {
|
|
733
|
-
limit: params.limit
|
|
734
|
-
})
|
|
735
|
-
return { messages }
|
|
736
|
-
}
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
// mcp/tools/query-index.ts
|
|
740
|
-
const queryIndexTool: Tool = {
|
|
741
|
-
name: 'query_index',
|
|
742
|
-
description: 'Search for agents or tasks',
|
|
743
|
-
parameters: {
|
|
744
|
-
type: 'object',
|
|
745
|
-
properties: {
|
|
746
|
-
type: { type: 'string', enum: ['agents', 'tasks', 'all'] },
|
|
747
|
-
filter: { type: 'object' },
|
|
748
|
-
search: { type: 'string' },
|
|
749
|
-
limit: { type: 'number', default: 10 }
|
|
750
|
-
}
|
|
751
|
-
},
|
|
752
|
-
handler: async (params, ctx) => {
|
|
753
|
-
if (params.type === 'agents' || params.type === 'all') {
|
|
754
|
-
const agents = agentManager.list(params.filter)
|
|
755
|
-
// Apply search/limit
|
|
756
|
-
}
|
|
757
|
-
if (params.type === 'tasks' || params.type === 'all') {
|
|
758
|
-
const tasks = taskManager.list(params.filter)
|
|
759
|
-
// Apply search/limit
|
|
760
|
-
}
|
|
761
|
-
return { entries }
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
// mcp/tools/get-hierarchy.ts
|
|
766
|
-
const getHierarchyTool: Tool = {
|
|
767
|
-
name: 'get_hierarchy',
|
|
768
|
-
description: 'View the agent hierarchy tree',
|
|
769
|
-
parameters: {
|
|
770
|
-
type: 'object',
|
|
771
|
-
properties: {
|
|
772
|
-
root: { type: 'string' },
|
|
773
|
-
depth: { type: 'number', default: 3 }
|
|
774
|
-
}
|
|
775
|
-
},
|
|
776
|
-
handler: async (params, ctx) => {
|
|
777
|
-
const tree = agentManager.getHierarchy(params.root)
|
|
778
|
-
return { tree }
|
|
779
|
-
}
|
|
780
|
-
}
|
|
781
|
-
```
|
|
782
|
-
|
|
783
|
-
**6.3 MVP Tool List**
|
|
784
|
-
|
|
785
|
-
| Tool | Status | Notes |
|
|
786
|
-
|------|--------|-------|
|
|
787
|
-
| `spawn_agent` | MVP | Core functionality |
|
|
788
|
-
| `emit_status` | MVP | Child → parent feedback |
|
|
789
|
-
| `send_message` | MVP | Agent communication |
|
|
790
|
-
| `check_messages` | MVP | Receive messages |
|
|
791
|
-
| `query_index` | MVP | Agent/task lookup |
|
|
792
|
-
| `get_hierarchy` | MVP | Tree visualization |
|
|
793
|
-
| `get_agent_summary` | MVP | Quick agent view |
|
|
794
|
-
| `stop_agent` | MVP | Terminate children |
|
|
795
|
-
| `create_task` | MVP | Explicit task creation |
|
|
796
|
-
| `get_task` | MVP | Task lookup |
|
|
797
|
-
|
|
798
|
-
**Deliverables:**
|
|
799
|
-
- [ ] MCP server setup
|
|
800
|
-
- [ ] Tool registration system
|
|
801
|
-
- [ ] spawn_agent tool
|
|
802
|
-
- [ ] emit_status tool
|
|
803
|
-
- [ ] send_message tool
|
|
804
|
-
- [ ] check_messages tool
|
|
805
|
-
- [ ] query_index tool
|
|
806
|
-
- [ ] get_hierarchy tool
|
|
807
|
-
- [ ] get_agent_summary tool
|
|
808
|
-
- [ ] stop_agent tool (with ownership check)
|
|
809
|
-
- [ ] create_task tool
|
|
810
|
-
- [ ] get_task tool
|
|
811
|
-
|
|
812
|
-
---
|
|
813
|
-
|
|
814
|
-
### 7. API Layer
|
|
815
|
-
|
|
816
|
-
**Purpose:** HTTP/WebSocket API for CLI and future clients.
|
|
817
|
-
|
|
818
|
-
**7.1 REST Endpoints**
|
|
819
|
-
|
|
820
|
-
```typescript
|
|
821
|
-
// api/routes.ts
|
|
822
|
-
|
|
823
|
-
// System
|
|
824
|
-
POST /api/init // Initialize system
|
|
825
|
-
GET /api/status // System status
|
|
826
|
-
|
|
827
|
-
// Conversation (user interaction)
|
|
828
|
-
POST /api/conversation/message // Send message to head manager
|
|
829
|
-
GET /api/conversation/history // Get conversation history
|
|
830
|
-
|
|
831
|
-
// Agents (read-only for CLI)
|
|
832
|
-
GET /api/agents // List agents
|
|
833
|
-
GET /api/agents/:id // Get agent
|
|
834
|
-
GET /api/agents/:id/hierarchy // Get subtree
|
|
835
|
-
|
|
836
|
-
// Tasks (read-only for CLI)
|
|
837
|
-
GET /api/tasks // List tasks
|
|
838
|
-
GET /api/tasks/:id // Get task
|
|
839
|
-
|
|
840
|
-
// Events (debugging)
|
|
841
|
-
GET /api/events // Query events
|
|
842
|
-
```
|
|
843
|
-
|
|
844
|
-
**7.2 WebSocket (real-time updates)**
|
|
845
|
-
|
|
846
|
-
```typescript
|
|
847
|
-
// api/websocket.ts
|
|
848
|
-
|
|
849
|
-
// Client subscribes to updates
|
|
850
|
-
ws.on('subscribe', (channel: string) => {
|
|
851
|
-
// Channels: 'agents', 'tasks', 'messages', 'conversation'
|
|
852
|
-
})
|
|
853
|
-
|
|
854
|
-
// Server pushes updates
|
|
855
|
-
ws.emit('agent:update', agent)
|
|
856
|
-
ws.emit('task:update', task)
|
|
857
|
-
ws.emit('conversation:message', message)
|
|
858
|
-
```
|
|
859
|
-
|
|
860
|
-
**7.3 User Conversation Flow**
|
|
861
|
-
|
|
862
|
-
```typescript
|
|
863
|
-
// api/routes/conversation.ts
|
|
864
|
-
|
|
865
|
-
async function sendMessage(req: Request): Promise<Response> {
|
|
866
|
-
const { content } = req.body
|
|
867
|
-
|
|
868
|
-
// Get or create head manager
|
|
869
|
-
const headManager = await agentManager.getOrCreateHeadManager()
|
|
870
|
-
|
|
871
|
-
// Send message to head manager via ACP
|
|
872
|
-
await acp.send(headManager.session_id, {
|
|
873
|
-
role: 'user',
|
|
874
|
-
content
|
|
875
|
-
})
|
|
876
|
-
|
|
877
|
-
// Response streams back via WebSocket
|
|
878
|
-
return { status: 'sent', agent_id: headManager.id }
|
|
879
|
-
}
|
|
880
|
-
```
|
|
881
|
-
|
|
882
|
-
**Deliverables:**
|
|
883
|
-
- [ ] Express/Fastify server setup
|
|
884
|
-
- [ ] REST routes
|
|
885
|
-
- [ ] WebSocket server
|
|
886
|
-
- [ ] TinyBase → WebSocket bridge for real-time updates
|
|
887
|
-
- [ ] Conversation endpoint (user → head manager)
|
|
888
|
-
|
|
889
|
-
---
|
|
890
|
-
|
|
891
|
-
### 8. CLI
|
|
892
|
-
|
|
893
|
-
**Purpose:** Lightweight command-line interface for user interaction.
|
|
894
|
-
|
|
895
|
-
**8.1 Commands**
|
|
896
|
-
|
|
897
|
-
```bash
|
|
898
|
-
# Start the system
|
|
899
|
-
multiagent start
|
|
900
|
-
|
|
901
|
-
# Interactive conversation mode
|
|
902
|
-
multiagent chat
|
|
903
|
-
|
|
904
|
-
# Status commands
|
|
905
|
-
multiagent status # System overview
|
|
906
|
-
multiagent agents # List agents
|
|
907
|
-
multiagent agents <id> # Agent details
|
|
908
|
-
multiagent tasks # List tasks
|
|
909
|
-
multiagent tasks <id> # Task details
|
|
910
|
-
multiagent hierarchy # Show agent tree
|
|
911
|
-
|
|
912
|
-
# Management
|
|
913
|
-
multiagent clear # Clear history (new head manager)
|
|
914
|
-
multiagent stop # Stop system
|
|
915
|
-
```
|
|
916
|
-
|
|
917
|
-
**8.2 Chat Mode**
|
|
918
|
-
|
|
919
|
-
```typescript
|
|
920
|
-
// cli/chat.ts
|
|
921
|
-
|
|
922
|
-
async function chatMode() {
|
|
923
|
-
const ws = connectWebSocket()
|
|
924
|
-
const rl = createReadline()
|
|
925
|
-
|
|
926
|
-
// Subscribe to conversation updates
|
|
927
|
-
ws.send({ type: 'subscribe', channel: 'conversation' })
|
|
928
|
-
|
|
929
|
-
// Display incoming messages
|
|
930
|
-
ws.on('conversation:message', (msg) => {
|
|
931
|
-
console.log(`\n[${msg.from}]: ${msg.content}`)
|
|
932
|
-
prompt()
|
|
933
|
-
})
|
|
934
|
-
|
|
935
|
-
// Send user input
|
|
936
|
-
rl.on('line', async (input) => {
|
|
937
|
-
await api.post('/conversation/message', { content: input })
|
|
938
|
-
})
|
|
939
|
-
|
|
940
|
-
// Real-time status updates (optional display)
|
|
941
|
-
ws.on('agent:update', (agent) => {
|
|
942
|
-
if (verbose) {
|
|
943
|
-
console.log(`[status] Agent ${agent.id}: ${agent.state}`)
|
|
944
|
-
}
|
|
945
|
-
})
|
|
946
|
-
}
|
|
947
|
-
```
|
|
948
|
-
|
|
949
|
-
**8.3 Status Display**
|
|
950
|
-
|
|
951
|
-
```
|
|
952
|
-
$ multiagent status
|
|
953
|
-
|
|
954
|
-
System Status: running
|
|
955
|
-
Head Manager: agent_abc123 (running)
|
|
956
|
-
|
|
957
|
-
Agents: 5 total
|
|
958
|
-
- 1 running
|
|
959
|
-
- 4 stopped
|
|
960
|
-
|
|
961
|
-
Tasks: 3 total
|
|
962
|
-
- 1 in_progress
|
|
963
|
-
- 2 completed
|
|
964
|
-
|
|
965
|
-
$ multiagent hierarchy
|
|
966
|
-
|
|
967
|
-
agent_abc123 (head_manager) [running]
|
|
968
|
-
├── agent_def456 (architect) [completed]
|
|
969
|
-
├── agent_ghi789 (implementer) [running]
|
|
970
|
-
│ ├── agent_jkl012 (auth_module) [completed]
|
|
971
|
-
│ └── agent_mno345 (api_routes) [running]
|
|
972
|
-
└── agent_pqr678 (reviewer) [stopped]
|
|
973
|
-
```
|
|
974
|
-
|
|
975
|
-
**Deliverables:**
|
|
976
|
-
- [ ] CLI framework (commander/yargs)
|
|
977
|
-
- [ ] start command
|
|
978
|
-
- [ ] chat command with real-time updates
|
|
979
|
-
- [ ] status command
|
|
980
|
-
- [ ] agents/tasks list commands
|
|
981
|
-
- [ ] hierarchy command
|
|
982
|
-
- [ ] clear command
|
|
983
|
-
- [ ] stop command
|
|
984
|
-
|
|
985
|
-
---
|
|
986
|
-
|
|
987
|
-
## Deferred to Phase 2
|
|
988
|
-
|
|
989
|
-
The following are explicitly out of scope for MVP:
|
|
990
|
-
|
|
991
|
-
- Fork mechanics (fork_agent tool, fork context)
|
|
992
|
-
- Mount/remount abstraction
|
|
993
|
-
- Blackboard system
|
|
994
|
-
- Resource management (limits, throttling)
|
|
995
|
-
- Advanced context merging (summarization)
|
|
996
|
-
- Handoff conversation tool
|
|
997
|
-
- Inject message tool
|
|
998
|
-
- Index garbage collection / archival
|
|
999
|
-
- Semantic search
|
|
1000
|
-
|
|
1001
|
-
---
|
|
1002
|
-
|
|
1003
|
-
## Implementation Sequence
|
|
1004
|
-
|
|
1005
|
-
### Week 1: Foundation
|
|
1006
|
-
|
|
1007
|
-
**Days 1-2: Event Store**
|
|
1008
|
-
- [ ] TinyBase setup with persistence
|
|
1009
|
-
- [ ] Event log table
|
|
1010
|
-
- [ ] Event emission API
|
|
1011
|
-
- [ ] Basic queries
|
|
1012
|
-
|
|
1013
|
-
**Days 3-4: Materialized Views**
|
|
1014
|
-
- [ ] Agent view projection
|
|
1015
|
-
- [ ] Task view projection
|
|
1016
|
-
- [ ] Message queue projection
|
|
1017
|
-
- [ ] Subscription projection
|
|
1018
|
-
|
|
1019
|
-
**Day 5: Integration Test**
|
|
1020
|
-
- [ ] Emit events, verify views update
|
|
1021
|
-
- [ ] Real-time subscription test
|
|
1022
|
-
|
|
1023
|
-
### Week 2: Core Services
|
|
1024
|
-
|
|
1025
|
-
**Days 1-2: Agent Manager**
|
|
1026
|
-
- [ ] Spawn flow (mock ACP)
|
|
1027
|
-
- [ ] Terminate flow
|
|
1028
|
-
- [ ] Agent queries
|
|
1029
|
-
- [ ] Head manager bootstrap
|
|
1030
|
-
|
|
1031
|
-
**Days 3-4: Task Manager**
|
|
1032
|
-
- [ ] Task CRUD
|
|
1033
|
-
- [ ] Assignment management
|
|
1034
|
-
- [ ] Status transitions
|
|
1035
|
-
|
|
1036
|
-
**Day 5: Messaging**
|
|
1037
|
-
- [ ] Message router
|
|
1038
|
-
- [ ] Subscription management
|
|
1039
|
-
- [ ] Status event routing
|
|
1040
|
-
|
|
1041
|
-
### Week 3: Agent Interface
|
|
1042
|
-
|
|
1043
|
-
**Days 1-2: ACP Integration**
|
|
1044
|
-
- [ ] Protocol wrapper
|
|
1045
|
-
- [ ] Claude Code adapter
|
|
1046
|
-
- [ ] Session management
|
|
1047
|
-
|
|
1048
|
-
**Days 3-4: System Prompts**
|
|
1049
|
-
- [ ] Template implementation
|
|
1050
|
-
- [ ] Context assembly
|
|
1051
|
-
- [ ] Tool documentation in prompt
|
|
1052
|
-
|
|
1053
|
-
**Day 5: MCP Server**
|
|
1054
|
-
- [ ] Server setup
|
|
1055
|
-
- [ ] Tool registration
|
|
1056
|
-
|
|
1057
|
-
### Week 4: MCP Tools & API
|
|
1058
|
-
|
|
1059
|
-
**Days 1-2: Core Tools**
|
|
1060
|
-
- [ ] spawn_agent
|
|
1061
|
-
- [ ] emit_status
|
|
1062
|
-
- [ ] send_message
|
|
1063
|
-
- [ ] check_messages
|
|
1064
|
-
|
|
1065
|
-
**Days 3-4: Additional Tools**
|
|
1066
|
-
- [ ] query_index
|
|
1067
|
-
- [ ] get_hierarchy
|
|
1068
|
-
- [ ] stop_agent
|
|
1069
|
-
- [ ] Task tools
|
|
1070
|
-
|
|
1071
|
-
**Day 5: API Layer**
|
|
1072
|
-
- [ ] REST endpoints
|
|
1073
|
-
- [ ] WebSocket server
|
|
1074
|
-
|
|
1075
|
-
### Week 5: CLI & Integration
|
|
1076
|
-
|
|
1077
|
-
**Days 1-2: CLI**
|
|
1078
|
-
- [ ] Command framework
|
|
1079
|
-
- [ ] Chat mode
|
|
1080
|
-
- [ ] Status commands
|
|
1081
|
-
|
|
1082
|
-
**Days 3-5: End-to-End Testing**
|
|
1083
|
-
- [ ] Full flow testing
|
|
1084
|
-
- [ ] Bug fixes
|
|
1085
|
-
- [ ] Documentation
|
|
1086
|
-
|
|
1087
|
-
---
|
|
1088
|
-
|
|
1089
|
-
## Validation Checklist
|
|
1090
|
-
|
|
1091
|
-
### Core Functionality
|
|
1092
|
-
- [ ] System starts and persists state
|
|
1093
|
-
- [ ] Head manager created on first interaction
|
|
1094
|
-
- [ ] User can send messages via CLI
|
|
1095
|
-
- [ ] Head manager responds appropriately
|
|
1096
|
-
|
|
1097
|
-
### Agent Spawning
|
|
1098
|
-
- [ ] Head manager can spawn child agents
|
|
1099
|
-
- [ ] Child agents receive correct system prompts
|
|
1100
|
-
- [ ] Child agents can use MCP tools
|
|
1101
|
-
- [ ] Spawn events recorded correctly
|
|
1102
|
-
|
|
1103
|
-
### Communication
|
|
1104
|
-
- [ ] Child agents can emit status
|
|
1105
|
-
- [ ] Parent receives child status updates
|
|
1106
|
-
- [ ] Agents can send direct messages
|
|
1107
|
-
- [ ] Messages appear in recipient's queue
|
|
1108
|
-
|
|
1109
|
-
### Task Management
|
|
1110
|
-
- [ ] Tasks created on agent spawn
|
|
1111
|
-
- [ ] Task status updates with agent status
|
|
1112
|
-
- [ ] Task queries work correctly
|
|
1113
|
-
|
|
1114
|
-
### Hierarchy
|
|
1115
|
-
- [ ] Agent hierarchy tracked correctly
|
|
1116
|
-
- [ ] Children list maintained
|
|
1117
|
-
- [ ] Hierarchy visualization works
|
|
1118
|
-
|
|
1119
|
-
### Persistence
|
|
1120
|
-
- [ ] State survives restart
|
|
1121
|
-
- [ ] Event log intact after restart
|
|
1122
|
-
- [ ] Views rebuild correctly
|
|
1123
|
-
|
|
1124
|
-
---
|
|
1125
|
-
|
|
1126
|
-
## Open Items for Separate Documents
|
|
1127
|
-
|
|
1128
|
-
1. **ACP Wrapper Design** — Detailed design for Agent Client Protocol integration
|
|
1129
|
-
2. **Error Handling Strategy** — How errors propagate and are handled at each layer
|
|
1130
|
-
3. **Testing Strategy** — Unit tests, integration tests, end-to-end tests
|
|
1131
|
-
4. **Deployment Guide** — How to install and run the system
|
|
1132
|
-
|
|
1133
|
-
---
|
|
1134
|
-
|
|
1135
|
-
## Summary
|
|
1136
|
-
|
|
1137
|
-
This MVP implementation plan covers:
|
|
1138
|
-
|
|
1139
|
-
1. **Event Store** — TinyBase with real-time materialized views
|
|
1140
|
-
2. **Agent Manager** — Spawn, terminate, query, head manager bootstrap
|
|
1141
|
-
3. **Task Manager** — First-class tasks with CRUD and assignment
|
|
1142
|
-
4. **Messaging** — Send/receive with subscription-based routing
|
|
1143
|
-
5. **System Prompts** — Template-based generation
|
|
1144
|
-
6. **MCP Tools** — Core toolset for agent capabilities
|
|
1145
|
-
7. **API** — REST + WebSocket for CLI integration
|
|
1146
|
-
8. **CLI** — Lightweight interface for user interaction
|
|
1147
|
-
|
|
1148
|
-
**Target:** Working system where user can interact with head manager that spawns child agents for complex task decomposition.
|