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
package/src/map/sidecar.ts
DELETED
|
@@ -1,826 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MAP Sidecar — connects macro-agent to an OpenHive MAP hub.
|
|
3
|
-
*
|
|
4
|
-
* This is the main orchestrator module. It establishes a MAP connection,
|
|
5
|
-
* creates sub-modules (lifecycle bridge, trajectory reporter, task bridge,
|
|
6
|
-
* coordination handler), and wires them to macro-agent's event sources.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* const sidecar = createMAPSidecar(deps, config);
|
|
10
|
-
* await sidecar.start(); // Connect + wire events
|
|
11
|
-
* await sidecar.stop(); // Disconnect + cleanup
|
|
12
|
-
*
|
|
13
|
-
* @module map/sidecar
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import type {
|
|
17
|
-
MAPSidecar,
|
|
18
|
-
MAPSidecarConfig,
|
|
19
|
-
MAPSidecarDeps,
|
|
20
|
-
TrajectoryCheckpointPayload,
|
|
21
|
-
TrajectoryCheckpointResult,
|
|
22
|
-
TrajectoryReporter,
|
|
23
|
-
TaskBridge,
|
|
24
|
-
} from "./types.js";
|
|
25
|
-
import type { AgentLifecycleCallback } from "../agent/types.js";
|
|
26
|
-
import type { CascadeCapability } from "git-cascade/events";
|
|
27
|
-
import {
|
|
28
|
-
REPO_PROTOCOL_VERSION,
|
|
29
|
-
RepoClient,
|
|
30
|
-
RepoManager,
|
|
31
|
-
type RepoClientTransport,
|
|
32
|
-
type WorkspaceCapability,
|
|
33
|
-
} from "./repo-workspace.js";
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Create a MAP sidecar that connects macro-agent to an OpenHive MAP hub.
|
|
37
|
-
*
|
|
38
|
-
* The sidecar is lazy: if connection fails, it logs a warning and
|
|
39
|
-
* operates in disconnected mode. All bridge operations silently no-op
|
|
40
|
-
* when disconnected. macro-agent continues working normally.
|
|
41
|
-
*/
|
|
42
|
-
export function createMAPSidecar(
|
|
43
|
-
deps: MAPSidecarDeps,
|
|
44
|
-
config: MAPSidecarConfig,
|
|
45
|
-
): MAPSidecar {
|
|
46
|
-
const { agentManager, agentStore, inboxAdapter, tasksAdapter, getLocalMapId, gitCascadeAdapter, dispatcherAgentId } = deps;
|
|
47
|
-
const scope = config.scope ?? "swarm:macro-agent";
|
|
48
|
-
const agentName = config.agentName ?? "macro-agent-sidecar";
|
|
49
|
-
|
|
50
|
-
// Connection state
|
|
51
|
-
let connection: any = null; // AgentConnection from MAP SDK (dynamic import)
|
|
52
|
-
let isConnected = false;
|
|
53
|
-
|
|
54
|
-
// Sub-module state
|
|
55
|
-
let lifecycleCallback: AgentLifecycleCallback | null = null;
|
|
56
|
-
let lifecycleUnsubscribe: (() => void) | null = null;
|
|
57
|
-
let lifecycleCleanup: (() => Promise<void>) | null = null;
|
|
58
|
-
let trajectoryReporter: TrajectoryReporter | null = null;
|
|
59
|
-
let taskBridge: TaskBridge | null = null;
|
|
60
|
-
let coordinationCleanup: (() => void) | null = null;
|
|
61
|
-
let cascadeBridgeCleanup: (() => void) | null = null;
|
|
62
|
-
let mailBridgeCleanup: (() => void) | null = null;
|
|
63
|
-
let dispatchSpawnHandlerCleanup: (() => void) | null = null;
|
|
64
|
-
let dispatchMessageHandlerCleanup: (() => void) | null = null;
|
|
65
|
-
let dispatchPermissionsHandlerCleanup: (() => void) | null = null;
|
|
66
|
-
let workspaceManager: RepoManager | null = null;
|
|
67
|
-
let workspaceTransport: RepoClientTransport | null = null;
|
|
68
|
-
let reconnectTimer: ReturnType<typeof setTimeout> | null = null;
|
|
69
|
-
|
|
70
|
-
// Cascade capability — declared only when a git-cascade adapter is wired.
|
|
71
|
-
// Each flag reflects what macro-agent *actually wired up* (honest declaration):
|
|
72
|
-
// - canServeDiff: the diff server is wired alongside the adapter
|
|
73
|
-
// (setupCascadeDiffServer answers cascade/diff.request).
|
|
74
|
-
// - canAct: the inbound action handler is wired
|
|
75
|
-
// (setupCascadeActionHandlers handles x-cascade/request.*).
|
|
76
|
-
// - emitsConflicts: the cascade-bridge forwards stream.conflicted /
|
|
77
|
-
// stream.conflict_resolved events.
|
|
78
|
-
// autoCloseOnMerge is omitted — it is an opt-in close policy (default
|
|
79
|
-
// manual) and macro-agent has no config/wiring for it.
|
|
80
|
-
const cascadeCapability: CascadeCapability = {
|
|
81
|
-
canServeDiff: true,
|
|
82
|
-
canAct: true,
|
|
83
|
-
emitsConflicts: true,
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
// Resolve the workspace capability from env vars. Setting OPENHIVE_WORKSPACE_DECLARE=off
|
|
87
|
-
// disables both explicit declare AND trajectory-handler bootstrap on the hub side.
|
|
88
|
-
const workspaceCapability: WorkspaceCapability = {
|
|
89
|
-
protocolVersion: REPO_PROTOCOL_VERSION,
|
|
90
|
-
declare: {
|
|
91
|
-
enabled: process.env.OPENHIVE_WORKSPACE_DECLARE !== "off",
|
|
92
|
-
defaultVisibility:
|
|
93
|
-
(process.env.OPENHIVE_WORKSPACE_VISIBILITY as
|
|
94
|
-
| "private"
|
|
95
|
-
| "hub_local"
|
|
96
|
-
| "federated") ?? "hub_local",
|
|
97
|
-
},
|
|
98
|
-
list: { enabled: true },
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Build the MAP connection URL with auth token.
|
|
103
|
-
*/
|
|
104
|
-
function buildUrl(): string {
|
|
105
|
-
const parsed = new URL(config.server);
|
|
106
|
-
// Ensure the path includes /ws/map for OpenHive
|
|
107
|
-
if (!parsed.pathname.includes("/ws/map") && !parsed.pathname.includes("/map")) {
|
|
108
|
-
parsed.pathname = parsed.pathname.replace(/\/?$/, "/ws/map");
|
|
109
|
-
}
|
|
110
|
-
if (config.token) {
|
|
111
|
-
parsed.searchParams.set("token", config.token);
|
|
112
|
-
}
|
|
113
|
-
// Include swarm_id for stable identity across reconnections.
|
|
114
|
-
// When set, the hub reuses the pre-registered swarm record instead
|
|
115
|
-
// of auto-generating a new one on each connection.
|
|
116
|
-
if (config.swarmId) {
|
|
117
|
-
parsed.searchParams.set("swarm_id", config.swarmId);
|
|
118
|
-
}
|
|
119
|
-
return parsed.toString();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Clean up sub-modules (notification handlers, lifecycle listeners, etc.)
|
|
124
|
-
* Called before re-wiring on reconnect and during stop().
|
|
125
|
-
*/
|
|
126
|
-
async function cleanupSubModules(): Promise<void> {
|
|
127
|
-
if (coordinationCleanup) {
|
|
128
|
-
coordinationCleanup();
|
|
129
|
-
coordinationCleanup = null;
|
|
130
|
-
}
|
|
131
|
-
if (mailBridgeCleanup) {
|
|
132
|
-
try { mailBridgeCleanup(); } catch { /* non-critical */ }
|
|
133
|
-
mailBridgeCleanup = null;
|
|
134
|
-
}
|
|
135
|
-
if (cascadeBridgeCleanup) {
|
|
136
|
-
try { cascadeBridgeCleanup(); } catch { /* non-critical */ }
|
|
137
|
-
cascadeBridgeCleanup = null;
|
|
138
|
-
}
|
|
139
|
-
if (dispatchMessageHandlerCleanup) {
|
|
140
|
-
try { dispatchMessageHandlerCleanup(); } catch { /* non-critical */ }
|
|
141
|
-
dispatchMessageHandlerCleanup = null;
|
|
142
|
-
}
|
|
143
|
-
if (dispatchSpawnHandlerCleanup) {
|
|
144
|
-
try { dispatchSpawnHandlerCleanup(); } catch { /* non-critical */ }
|
|
145
|
-
dispatchSpawnHandlerCleanup = null;
|
|
146
|
-
}
|
|
147
|
-
if (dispatchPermissionsHandlerCleanup) {
|
|
148
|
-
try { dispatchPermissionsHandlerCleanup(); } catch { /* non-critical */ }
|
|
149
|
-
dispatchPermissionsHandlerCleanup = null;
|
|
150
|
-
}
|
|
151
|
-
if (trajectoryReporter) {
|
|
152
|
-
trajectoryReporter.stop();
|
|
153
|
-
trajectoryReporter = null;
|
|
154
|
-
}
|
|
155
|
-
if (lifecycleCleanup) {
|
|
156
|
-
await lifecycleCleanup();
|
|
157
|
-
lifecycleCleanup = null;
|
|
158
|
-
}
|
|
159
|
-
if (lifecycleUnsubscribe) {
|
|
160
|
-
lifecycleUnsubscribe();
|
|
161
|
-
lifecycleUnsubscribe = null;
|
|
162
|
-
}
|
|
163
|
-
lifecycleCallback = null;
|
|
164
|
-
taskBridge = null;
|
|
165
|
-
workspaceManager = null;
|
|
166
|
-
workspaceTransport = null;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* Attempt to connect to the MAP hub.
|
|
171
|
-
*/
|
|
172
|
-
async function connect(): Promise<boolean> {
|
|
173
|
-
try {
|
|
174
|
-
const { AgentConnection } = await import(
|
|
175
|
-
"@multi-agent-protocol/sdk"
|
|
176
|
-
);
|
|
177
|
-
|
|
178
|
-
const url = buildUrl();
|
|
179
|
-
const connectOpts: Record<string, unknown> = {
|
|
180
|
-
name: agentName,
|
|
181
|
-
role: "sidecar",
|
|
182
|
-
scopes: [scope],
|
|
183
|
-
capabilities: {
|
|
184
|
-
messaging: { canSend: true, canReceive: true },
|
|
185
|
-
mail: { canCreate: true, canJoin: true, canViewHistory: true },
|
|
186
|
-
trajectory: { canReport: true, canServeContent: false },
|
|
187
|
-
tasks: {
|
|
188
|
-
canCreate: true,
|
|
189
|
-
canAssign: true,
|
|
190
|
-
canUpdate: true,
|
|
191
|
-
canList: true,
|
|
192
|
-
},
|
|
193
|
-
// Cascade capability is gated on whether a git-cascade adapter is
|
|
194
|
-
// wired — without it there are no worktrees to shell out against,
|
|
195
|
-
// so declaring it would just produce timeouts on the hub.
|
|
196
|
-
...(gitCascadeAdapter
|
|
197
|
-
? { cascade: cascadeCapability }
|
|
198
|
-
: {}),
|
|
199
|
-
workspace: workspaceCapability,
|
|
200
|
-
},
|
|
201
|
-
metadata: {
|
|
202
|
-
systemId: config.systemId ?? "macro-agent",
|
|
203
|
-
type: "macro-agent-sidecar",
|
|
204
|
-
// Signals that this swarm can spawn ACP-capable coordinators on demand,
|
|
205
|
-
// even before any coordinator has registered. The hub's /sessions/create-acp
|
|
206
|
-
// endpoint handles the spawn via _macro/spawnAgent when no ACP agent exists.
|
|
207
|
-
canHostAcp: true,
|
|
208
|
-
},
|
|
209
|
-
reconnection: {
|
|
210
|
-
enabled: config.reconnection?.enabled ?? true,
|
|
211
|
-
maxRetries: config.reconnection?.maxRetries ?? 10,
|
|
212
|
-
baseDelayMs: config.reconnection?.baseDelayMs ?? 1000,
|
|
213
|
-
maxDelayMs: config.reconnection?.maxDelayMs ?? 30000,
|
|
214
|
-
},
|
|
215
|
-
};
|
|
216
|
-
|
|
217
|
-
// Try mesh transport first if enabled (encrypted P2P via agentic-mesh)
|
|
218
|
-
if (config.mesh?.enabled) {
|
|
219
|
-
try {
|
|
220
|
-
connection = await (AgentConnection as any).connectMesh({
|
|
221
|
-
...connectOpts,
|
|
222
|
-
peer: { peerId: config.mesh.peerId ?? `${agentName}-mesh` },
|
|
223
|
-
server: config.server,
|
|
224
|
-
});
|
|
225
|
-
isConnected = true;
|
|
226
|
-
console.log(`[map-sidecar] Connected via MeshPeer to ${config.server}`);
|
|
227
|
-
} catch (meshErr) {
|
|
228
|
-
console.warn(
|
|
229
|
-
`[map-sidecar] MeshPeer failed, falling back to WebSocket: ${(meshErr as Error).message}`,
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
// WebSocket connection (direct or fallback from mesh)
|
|
235
|
-
if (!isConnected) {
|
|
236
|
-
// Try open mode first (single call connect+register).
|
|
237
|
-
// If server requires auth, fall back to verified mode.
|
|
238
|
-
if (config.credential && (AgentConnection as any).createConnection) {
|
|
239
|
-
// Verified mode: connectOnly → check authRequired → authenticate → register
|
|
240
|
-
connection = await (AgentConnection as any).createConnection(url, connectOpts);
|
|
241
|
-
const result = await connection.connectOnly();
|
|
242
|
-
if (result.authRequired) {
|
|
243
|
-
const method = result.authRequired.methods?.[0] ?? "x-agent-iam";
|
|
244
|
-
await connection.authenticate({
|
|
245
|
-
method,
|
|
246
|
-
token: config.credential,
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
await connection.register();
|
|
250
|
-
} else {
|
|
251
|
-
// Open mode: single call connect+register
|
|
252
|
-
connection = await (AgentConnection as any).connect(url, connectOpts);
|
|
253
|
-
}
|
|
254
|
-
isConnected = true;
|
|
255
|
-
} // end if (!isConnected)
|
|
256
|
-
|
|
257
|
-
// Publish sidecar metadata to the hub. The MAP SDK's connect()/register()
|
|
258
|
-
// does not propagate the `metadata` field from connect options — it only
|
|
259
|
-
// forwards name/role/capabilities/scopes. Call updateMetadata explicitly
|
|
260
|
-
// so the hub sees canHostAcp (and any other metadata the UI relies on).
|
|
261
|
-
try {
|
|
262
|
-
const metadata = (connectOpts.metadata as Record<string, unknown>) ?? {};
|
|
263
|
-
if (typeof connection.updateMetadata === "function") {
|
|
264
|
-
await connection.updateMetadata(metadata);
|
|
265
|
-
}
|
|
266
|
-
} catch {
|
|
267
|
-
// Non-fatal — metadata is advisory
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Monitor connection state
|
|
271
|
-
connection.onStateChange(
|
|
272
|
-
(newState: string, _oldState: string) => {
|
|
273
|
-
isConnected = newState === "connected";
|
|
274
|
-
if (!isConnected) {
|
|
275
|
-
console.warn(
|
|
276
|
-
`[map-sidecar] Connection state: ${newState}`,
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
},
|
|
280
|
-
);
|
|
281
|
-
|
|
282
|
-
// Start slow reconnect loop when SDK retries are exhausted
|
|
283
|
-
connection.closed
|
|
284
|
-
.then(() => {
|
|
285
|
-
isConnected = false;
|
|
286
|
-
scheduleReconnect();
|
|
287
|
-
})
|
|
288
|
-
.catch(() => {
|
|
289
|
-
isConnected = false;
|
|
290
|
-
scheduleReconnect();
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
console.log(
|
|
294
|
-
`[map-sidecar] Connected to MAP hub at ${config.server}`,
|
|
295
|
-
);
|
|
296
|
-
return true;
|
|
297
|
-
} catch (err) {
|
|
298
|
-
console.warn(
|
|
299
|
-
`[map-sidecar] Failed to connect to MAP hub: ${(err as Error).message}`,
|
|
300
|
-
);
|
|
301
|
-
isConnected = false;
|
|
302
|
-
return false;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/**
|
|
307
|
-
* Schedule a slow reconnection attempt after SDK retries are exhausted.
|
|
308
|
-
*/
|
|
309
|
-
function scheduleReconnect(): void {
|
|
310
|
-
if (reconnectTimer) return;
|
|
311
|
-
const interval = config.reconnectIntervalMs ?? 60_000;
|
|
312
|
-
|
|
313
|
-
reconnectTimer = setTimeout(async () => {
|
|
314
|
-
reconnectTimer = null;
|
|
315
|
-
if (isConnected) return;
|
|
316
|
-
|
|
317
|
-
console.log("[map-sidecar] Attempting reconnection...");
|
|
318
|
-
// Clean up old sub-modules before re-wiring
|
|
319
|
-
await cleanupSubModules();
|
|
320
|
-
const ok = await connect();
|
|
321
|
-
if (ok) {
|
|
322
|
-
await wireSubModules();
|
|
323
|
-
} else {
|
|
324
|
-
scheduleReconnect();
|
|
325
|
-
}
|
|
326
|
-
}, interval);
|
|
327
|
-
reconnectTimer.unref?.(); // Don't prevent process exit
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
/**
|
|
331
|
-
* Wire sub-modules to event sources and the MAP connection.
|
|
332
|
-
*/
|
|
333
|
-
async function wireSubModules(): Promise<void> {
|
|
334
|
-
if (!connection) return;
|
|
335
|
-
|
|
336
|
-
// 1. Task Bridge (created first so lifecycle bridge can reference it)
|
|
337
|
-
const { createTaskBridge } = await import("./task-bridge.js");
|
|
338
|
-
taskBridge = createTaskBridge(connection, scope);
|
|
339
|
-
|
|
340
|
-
// 2. Lifecycle Bridge
|
|
341
|
-
const { createLifecycleBridge } = await import("./lifecycle-bridge.js");
|
|
342
|
-
const bridge = createLifecycleBridge(
|
|
343
|
-
connection,
|
|
344
|
-
agentStore,
|
|
345
|
-
scope,
|
|
346
|
-
taskBridge,
|
|
347
|
-
getLocalMapId,
|
|
348
|
-
);
|
|
349
|
-
lifecycleCallback = bridge.callback;
|
|
350
|
-
lifecycleCleanup = bridge.cleanup;
|
|
351
|
-
const awaitAcpRegistration = bridge.awaitRegistration;
|
|
352
|
-
const findLocalAgentByMapId = bridge.findLocalAgentByMapId;
|
|
353
|
-
lifecycleUnsubscribe = agentManager.onLifecycleEvent(lifecycleCallback);
|
|
354
|
-
|
|
355
|
-
// 3. Trajectory Reporter
|
|
356
|
-
const { createTrajectoryReporter } = await import("./trajectory-reporter.js");
|
|
357
|
-
trajectoryReporter = createTrajectoryReporter(connection, config);
|
|
358
|
-
|
|
359
|
-
// 4. Coordination Handler
|
|
360
|
-
const { setupCoordinationHandlers } = await import("./coordination-handler.js");
|
|
361
|
-
coordinationCleanup = setupCoordinationHandlers({
|
|
362
|
-
connection,
|
|
363
|
-
agentManager,
|
|
364
|
-
inboxAdapter,
|
|
365
|
-
tasksAdapter,
|
|
366
|
-
trajectoryReporter,
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
// 4b. Mail Bridge — forwards `mail/turn.received` notifications from the
|
|
370
|
-
// hub into the local agent-inbox so swarm-dispatch's MessagePort can
|
|
371
|
-
// pick them up via its `inbox.events` subscription. Without this,
|
|
372
|
-
// hub-side mail never reaches the dispatcher.
|
|
373
|
-
const { setupMailBridge } = await import("./mail-bridge.js");
|
|
374
|
-
mailBridgeCleanup = await setupMailBridge({
|
|
375
|
-
connection,
|
|
376
|
-
inboxAdapter,
|
|
377
|
-
dispatcherAgentId,
|
|
378
|
-
log: (msg) => console.log(msg),
|
|
379
|
-
});
|
|
380
|
-
|
|
381
|
-
// 4c. x-dispatch/spawn-agent handler — notification-pair pattern.
|
|
382
|
-
//
|
|
383
|
-
// The MAP SDK's AgentConnection doesn't expose setRequestHandler, so
|
|
384
|
-
// the hub→swarm spawn-agent "request" is sent as a notification
|
|
385
|
-
// with a correlation_id. We process and reply with a `.response`
|
|
386
|
-
// notification carrying the same correlation_id (or an error).
|
|
387
|
-
//
|
|
388
|
-
// Dual-listen: subscribe to BOTH the canonical
|
|
389
|
-
// `x-dispatch/spawn-agent.request` (Tier 2+, owned by swarm-dispatch)
|
|
390
|
-
// AND the legacy `dispatch/spawn-agent.request` for one release
|
|
391
|
-
// window. Reply on the matching channel — the hub's response
|
|
392
|
-
// dispatcher accepts both.
|
|
393
|
-
const { handleDispatchSpawnAgent } = await import(
|
|
394
|
-
"../dispatch/spawn-agent-handler.js"
|
|
395
|
-
);
|
|
396
|
-
const {
|
|
397
|
-
handleSpawnAgentRequest,
|
|
398
|
-
X_DISPATCH_METHODS: SPAWN_METHODS,
|
|
399
|
-
LEGACY_DISPATCH_SPAWN_AGENT_REQUEST,
|
|
400
|
-
LEGACY_DISPATCH_SPAWN_AGENT_RESPONSE,
|
|
401
|
-
} = await import("swarm-dispatch/client");
|
|
402
|
-
|
|
403
|
-
const makeSpawnHandler = (
|
|
404
|
-
responseMethod: string,
|
|
405
|
-
): ((params: unknown) => Promise<void>) =>
|
|
406
|
-
async (params) => {
|
|
407
|
-
await handleSpawnAgentRequest({
|
|
408
|
-
params,
|
|
409
|
-
runtime: {
|
|
410
|
-
async spawn(req) {
|
|
411
|
-
return handleDispatchSpawnAgent(
|
|
412
|
-
req as unknown as Parameters<typeof handleDispatchSpawnAgent>[0],
|
|
413
|
-
{
|
|
414
|
-
agentManager,
|
|
415
|
-
// Wait barrier: lifecycle-bridge resolves once
|
|
416
|
-
// `map/agents/register` completes, so the orchestrator's
|
|
417
|
-
// subsequent `findAcpAgentInfo` lookup doesn't race.
|
|
418
|
-
waitForAcpRegistration: awaitAcpRegistration,
|
|
419
|
-
log: (msg) => console.log(msg),
|
|
420
|
-
},
|
|
421
|
-
);
|
|
422
|
-
},
|
|
423
|
-
},
|
|
424
|
-
sendResponse: async (responseParams) => {
|
|
425
|
-
await connection.sendNotification(responseMethod, responseParams);
|
|
426
|
-
},
|
|
427
|
-
log: (msg) => console.log(msg),
|
|
428
|
-
});
|
|
429
|
-
};
|
|
430
|
-
|
|
431
|
-
const canonicalSpawnHandler = makeSpawnHandler(
|
|
432
|
-
SPAWN_METHODS.SPAWN_AGENT_RESPONSE,
|
|
433
|
-
);
|
|
434
|
-
const legacySpawnHandler = makeSpawnHandler(
|
|
435
|
-
LEGACY_DISPATCH_SPAWN_AGENT_RESPONSE,
|
|
436
|
-
);
|
|
437
|
-
|
|
438
|
-
connection.onNotification(
|
|
439
|
-
SPAWN_METHODS.SPAWN_AGENT_REQUEST,
|
|
440
|
-
canonicalSpawnHandler,
|
|
441
|
-
);
|
|
442
|
-
connection.onNotification(
|
|
443
|
-
LEGACY_DISPATCH_SPAWN_AGENT_REQUEST,
|
|
444
|
-
legacySpawnHandler,
|
|
445
|
-
);
|
|
446
|
-
dispatchSpawnHandlerCleanup = () => {
|
|
447
|
-
try {
|
|
448
|
-
if (typeof connection.offNotification === "function") {
|
|
449
|
-
connection.offNotification(
|
|
450
|
-
SPAWN_METHODS.SPAWN_AGENT_REQUEST,
|
|
451
|
-
canonicalSpawnHandler,
|
|
452
|
-
);
|
|
453
|
-
connection.offNotification(
|
|
454
|
-
LEGACY_DISPATCH_SPAWN_AGENT_REQUEST,
|
|
455
|
-
legacySpawnHandler,
|
|
456
|
-
);
|
|
457
|
-
}
|
|
458
|
-
} catch {
|
|
459
|
-
/* connection already torn down */
|
|
460
|
-
}
|
|
461
|
-
};
|
|
462
|
-
|
|
463
|
-
// 4c'. x-dispatch/permissions.{set,clear} handlers — notification-pair
|
|
464
|
-
// pattern, mirrors spawn-agent's shape. Used by hubs (e.g. OpenHive's
|
|
465
|
-
// ACP+reuse dispatch path) to apply per-dispatch loadout deny/allow
|
|
466
|
-
// rules to a long-lived agent's session at runtime via the
|
|
467
|
-
// permission-overlay registry. The prompt iterator in
|
|
468
|
-
// `agent-manager-v2.ts` enforces the overlay against
|
|
469
|
-
// `permission_request` ACP session updates. Pairs with the mail+reuse
|
|
470
|
-
// path's overlay set/clear in `mail-inbound-reuse-consumer.ts` —
|
|
471
|
-
// same registry, different transport.
|
|
472
|
-
const {
|
|
473
|
-
handlePermissionsSet,
|
|
474
|
-
handlePermissionsClear,
|
|
475
|
-
X_DISPATCH_PERMISSIONS_METHODS,
|
|
476
|
-
} = await import("../dispatch/permissions-handler.js");
|
|
477
|
-
|
|
478
|
-
// Response shape per swarm-dispatch's notification-rpc registry:
|
|
479
|
-
// { correlation_id, result } → resolve(result)
|
|
480
|
-
// { correlation_id, error: { code?, message? } } → reject
|
|
481
|
-
// The handler's `{ ok, error?: string }` is wrapped accordingly.
|
|
482
|
-
const sendPermissionsResponse = async (
|
|
483
|
-
method: string,
|
|
484
|
-
correlationId: string | undefined,
|
|
485
|
-
result: { ok: true } | { ok: false; error: string },
|
|
486
|
-
): Promise<void> => {
|
|
487
|
-
const body: Record<string, unknown> = {};
|
|
488
|
-
if (correlationId) body.correlation_id = correlationId;
|
|
489
|
-
if (result.ok) {
|
|
490
|
-
body.result = result;
|
|
491
|
-
} else {
|
|
492
|
-
body.error = { message: result.error };
|
|
493
|
-
}
|
|
494
|
-
try {
|
|
495
|
-
await connection.sendNotification(method, body);
|
|
496
|
-
} catch (err) {
|
|
497
|
-
console.warn(
|
|
498
|
-
`[${method}] response send failed: ${(err as Error).message}`,
|
|
499
|
-
);
|
|
500
|
-
}
|
|
501
|
-
};
|
|
502
|
-
|
|
503
|
-
const permissionsSetHandler = async (params: unknown): Promise<void> => {
|
|
504
|
-
const correlationId =
|
|
505
|
-
(params as { correlation_id?: string })?.correlation_id;
|
|
506
|
-
const result = handlePermissionsSet(
|
|
507
|
-
params as Parameters<typeof handlePermissionsSet>[0],
|
|
508
|
-
(msg) => console.log(msg),
|
|
509
|
-
);
|
|
510
|
-
await sendPermissionsResponse(
|
|
511
|
-
X_DISPATCH_PERMISSIONS_METHODS.SET_RESPONSE,
|
|
512
|
-
correlationId,
|
|
513
|
-
result,
|
|
514
|
-
);
|
|
515
|
-
};
|
|
516
|
-
|
|
517
|
-
const permissionsClearHandler = async (params: unknown): Promise<void> => {
|
|
518
|
-
const correlationId =
|
|
519
|
-
(params as { correlation_id?: string })?.correlation_id;
|
|
520
|
-
const result = handlePermissionsClear(
|
|
521
|
-
params as Parameters<typeof handlePermissionsClear>[0],
|
|
522
|
-
(msg) => console.log(msg),
|
|
523
|
-
);
|
|
524
|
-
await sendPermissionsResponse(
|
|
525
|
-
X_DISPATCH_PERMISSIONS_METHODS.CLEAR_RESPONSE,
|
|
526
|
-
correlationId,
|
|
527
|
-
result,
|
|
528
|
-
);
|
|
529
|
-
};
|
|
530
|
-
|
|
531
|
-
connection.onNotification(
|
|
532
|
-
X_DISPATCH_PERMISSIONS_METHODS.SET_REQUEST,
|
|
533
|
-
permissionsSetHandler,
|
|
534
|
-
);
|
|
535
|
-
connection.onNotification(
|
|
536
|
-
X_DISPATCH_PERMISSIONS_METHODS.CLEAR_REQUEST,
|
|
537
|
-
permissionsClearHandler,
|
|
538
|
-
);
|
|
539
|
-
dispatchPermissionsHandlerCleanup = () => {
|
|
540
|
-
try {
|
|
541
|
-
if (typeof connection.offNotification === "function") {
|
|
542
|
-
connection.offNotification(
|
|
543
|
-
X_DISPATCH_PERMISSIONS_METHODS.SET_REQUEST,
|
|
544
|
-
permissionsSetHandler,
|
|
545
|
-
);
|
|
546
|
-
connection.offNotification(
|
|
547
|
-
X_DISPATCH_PERMISSIONS_METHODS.CLEAR_REQUEST,
|
|
548
|
-
permissionsClearHandler,
|
|
549
|
-
);
|
|
550
|
-
}
|
|
551
|
-
} catch {
|
|
552
|
-
/* connection already torn down */
|
|
553
|
-
}
|
|
554
|
-
};
|
|
555
|
-
|
|
556
|
-
// 4d. map/dispatch/message handler — receives hub-routed envelopes
|
|
557
|
-
// addressed to a specific agent on this swarm via MAP scope. The hub
|
|
558
|
-
// takes this path (not mail/turn) when the target agent declares
|
|
559
|
-
// `messaging.canReceive: true` per-agent but not `mail.canJoin`,
|
|
560
|
-
// which is the default for long-lived workers/coordinators registered
|
|
561
|
-
// by the lifecycle bridge. Without this handler, mail+reuse dispatches
|
|
562
|
-
// are silently dropped on the swarm side.
|
|
563
|
-
//
|
|
564
|
-
// Translate the hub-assigned MAP ULID (`to_agent_id`) → local agent
|
|
565
|
-
// id and forward the envelope into the local inbox so the new
|
|
566
|
-
// `mail-inbound-reuse-consumer` picks it up.
|
|
567
|
-
const dispatchMessageHandler = async (params: unknown): Promise<void> => {
|
|
568
|
-
const p = params as
|
|
569
|
-
| (Record<string, unknown> & {
|
|
570
|
-
to_agent_id?: string;
|
|
571
|
-
envelope?: unknown;
|
|
572
|
-
from_agent_id?: string;
|
|
573
|
-
})
|
|
574
|
-
| undefined;
|
|
575
|
-
const toAgentId = p?.to_agent_id;
|
|
576
|
-
const envelope = p?.envelope;
|
|
577
|
-
if (!toAgentId || !envelope) {
|
|
578
|
-
console.warn(
|
|
579
|
-
"[sidecar] map/dispatch/message missing to_agent_id or envelope; ignoring",
|
|
580
|
-
);
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
const localAgentId = findLocalAgentByMapId(toAgentId);
|
|
584
|
-
if (!localAgentId) {
|
|
585
|
-
console.warn(
|
|
586
|
-
`[sidecar] map/dispatch/message recipient ${toAgentId} not registered locally; dropping`,
|
|
587
|
-
);
|
|
588
|
-
return;
|
|
589
|
-
}
|
|
590
|
-
// Translate envelope { type, body } → { schema, data } shape that the
|
|
591
|
-
// mail-inbound-reuse-consumer expects (mirrors mail-bridge's
|
|
592
|
-
// translation for `mail/turn.received`).
|
|
593
|
-
//
|
|
594
|
-
// Hub-side mail-transport injects `body._conversationId` when sending
|
|
595
|
-
// via MAP scope (sendViaMapScope) — extract it here and surface it
|
|
596
|
-
// on the top-level content (alongside `data`) so the
|
|
597
|
-
// mail-inbound-reuse-consumer's reply path can `postMailTurn` to
|
|
598
|
-
// the right conversation. Without this, the consumer drops the
|
|
599
|
-
// reply with "No conversationId".
|
|
600
|
-
const env = envelope as { type?: string; body?: Record<string, unknown> };
|
|
601
|
-
const conversationId =
|
|
602
|
-
env.body && typeof env.body._conversationId === "string"
|
|
603
|
-
? (env.body._conversationId as string)
|
|
604
|
-
: undefined;
|
|
605
|
-
const content: Record<string, unknown> =
|
|
606
|
-
env.type && env.body
|
|
607
|
-
? { schema: env.type, data: env.body }
|
|
608
|
-
: (envelope as Record<string, unknown>);
|
|
609
|
-
const contentWithMarker: Record<string, unknown> = {
|
|
610
|
-
type: "data",
|
|
611
|
-
...content,
|
|
612
|
-
...(conversationId ? { _conversationId: conversationId } : {}),
|
|
613
|
-
};
|
|
614
|
-
try {
|
|
615
|
-
await inboxAdapter.send(
|
|
616
|
-
(p?.from_agent_id as string | undefined) ?? "openhive-hub",
|
|
617
|
-
localAgentId,
|
|
618
|
-
contentWithMarker as never,
|
|
619
|
-
{ importance: "normal" },
|
|
620
|
-
);
|
|
621
|
-
} catch (err) {
|
|
622
|
-
console.warn(
|
|
623
|
-
`[sidecar] map/dispatch/message inbox.send failed for ${localAgentId}: ` +
|
|
624
|
-
`${(err as Error).message}`,
|
|
625
|
-
);
|
|
626
|
-
}
|
|
627
|
-
};
|
|
628
|
-
// Dual-listen: subscribe to BOTH the canonical `x-dispatch/message`
|
|
629
|
-
// (the new method name owned by swarm-dispatch's protocol-constants
|
|
630
|
-
// module) AND the legacy `map/dispatch/message` alias for one
|
|
631
|
-
// release window. Older hub builds send under the legacy name; new
|
|
632
|
-
// builds send under the canonical name. Once the dual-listen window
|
|
633
|
-
// closes, drop the legacy registration.
|
|
634
|
-
const {
|
|
635
|
-
X_DISPATCH_METHODS,
|
|
636
|
-
LEGACY_MAP_DISPATCH_MESSAGE_METHOD,
|
|
637
|
-
} = await import("swarm-dispatch/client");
|
|
638
|
-
connection.onNotification(
|
|
639
|
-
X_DISPATCH_METHODS.MESSAGE,
|
|
640
|
-
dispatchMessageHandler,
|
|
641
|
-
);
|
|
642
|
-
connection.onNotification(
|
|
643
|
-
LEGACY_MAP_DISPATCH_MESSAGE_METHOD,
|
|
644
|
-
dispatchMessageHandler,
|
|
645
|
-
);
|
|
646
|
-
dispatchMessageHandlerCleanup = () => {
|
|
647
|
-
try {
|
|
648
|
-
if (typeof connection.offNotification === "function") {
|
|
649
|
-
connection.offNotification(
|
|
650
|
-
X_DISPATCH_METHODS.MESSAGE,
|
|
651
|
-
dispatchMessageHandler,
|
|
652
|
-
);
|
|
653
|
-
connection.offNotification(
|
|
654
|
-
LEGACY_MAP_DISPATCH_MESSAGE_METHOD,
|
|
655
|
-
dispatchMessageHandler,
|
|
656
|
-
);
|
|
657
|
-
}
|
|
658
|
-
} catch {
|
|
659
|
-
/* connection already torn down */
|
|
660
|
-
}
|
|
661
|
-
};
|
|
662
|
-
|
|
663
|
-
// 5. Cascade Bridge + Action Handler (optional — only when a GitCascadeAdapter is available)
|
|
664
|
-
if (gitCascadeAdapter) {
|
|
665
|
-
const { createCascadeBridge } = await import("./cascade-bridge.js");
|
|
666
|
-
const cascadeBridge = createCascadeBridge(connection, gitCascadeAdapter);
|
|
667
|
-
|
|
668
|
-
// 5b. Inbound action handler — receives x-cascade/request.* from hub
|
|
669
|
-
const { setupCascadeActionHandlers } = await import("./cascade-action-handler.js");
|
|
670
|
-
const actionCleanup = setupCascadeActionHandlers(connection, gitCascadeAdapter);
|
|
671
|
-
|
|
672
|
-
// 5c. Inbound diff server — receives cascade/diff.request from hub
|
|
673
|
-
// and replies with cascade/diff.response (+ chunks for large blobs).
|
|
674
|
-
const { setupCascadeDiffServer } = await import("./cascade-diff-server.js");
|
|
675
|
-
const diffCleanup = setupCascadeDiffServer(connection, gitCascadeAdapter);
|
|
676
|
-
|
|
677
|
-
cascadeBridgeCleanup = () => {
|
|
678
|
-
cascadeBridge.dispose();
|
|
679
|
-
actionCleanup();
|
|
680
|
-
diffCleanup();
|
|
681
|
-
};
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
// 6. Workspace (kinds/repo) — declare attached repos to the hub.
|
|
685
|
-
// Discovers repos from WORKSPACE_* env vars (set by openhive's swarm-spawn
|
|
686
|
-
// flow when spawning with a `repo_id`) plus OPENHIVE_WORKSPACE_REPOS for
|
|
687
|
-
// multi-repo declarations. Skipped entirely when capability.declare is off.
|
|
688
|
-
if (workspaceCapability.declare.enabled) {
|
|
689
|
-
try {
|
|
690
|
-
// OpenHive's MAP server registers x-workspace/repo.* as request handlers
|
|
691
|
-
// (additionalHandlers), not notification handlers — so route notify
|
|
692
|
-
// through callExtension and ignore the (void) response.
|
|
693
|
-
const repoTransport: RepoClientTransport = {
|
|
694
|
-
notify: async (method: string, params: unknown) => {
|
|
695
|
-
await connection.callExtension(method, params);
|
|
696
|
-
},
|
|
697
|
-
request: (method: string, params: unknown) =>
|
|
698
|
-
connection.callExtension(method, params),
|
|
699
|
-
};
|
|
700
|
-
const manager = new RepoManager();
|
|
701
|
-
const single =
|
|
702
|
-
process.env.WORKSPACE_REPO_URL && process.env.WORKSPACE_LOCAL_PATH
|
|
703
|
-
? [{
|
|
704
|
-
remoteUrl: process.env.WORKSPACE_REPO_URL,
|
|
705
|
-
localPath: process.env.WORKSPACE_LOCAL_PATH,
|
|
706
|
-
}]
|
|
707
|
-
: [];
|
|
708
|
-
const multi = process.env.OPENHIVE_WORKSPACE_REPOS
|
|
709
|
-
? (JSON.parse(process.env.OPENHIVE_WORKSPACE_REPOS) as Array<{
|
|
710
|
-
remoteUrl: string;
|
|
711
|
-
localPath: string;
|
|
712
|
-
}>)
|
|
713
|
-
: [];
|
|
714
|
-
for (const cfg of [...single, ...multi]) {
|
|
715
|
-
await manager.attach(cfg);
|
|
716
|
-
}
|
|
717
|
-
if (manager.list().length > 0) {
|
|
718
|
-
const client = new RepoClient(repoTransport);
|
|
719
|
-
await client.declare(RepoClient.snapshot(manager));
|
|
720
|
-
workspaceManager = manager;
|
|
721
|
-
workspaceTransport = repoTransport;
|
|
722
|
-
console.log(
|
|
723
|
-
`[map-sidecar] Declared ${manager.list().length} workspace(s) to hub`,
|
|
724
|
-
);
|
|
725
|
-
}
|
|
726
|
-
} catch (err) {
|
|
727
|
-
// Non-fatal — sidecar continues without workspace declarations
|
|
728
|
-
console.warn(
|
|
729
|
-
`[map-sidecar] Workspace declare failed: ${(err as Error).message}`,
|
|
730
|
-
);
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
return {
|
|
736
|
-
async start(): Promise<void> {
|
|
737
|
-
const ok = await connect();
|
|
738
|
-
if (ok) {
|
|
739
|
-
await wireSubModules();
|
|
740
|
-
} else {
|
|
741
|
-
// Schedule retry — sidecar will wire sub-modules when connected
|
|
742
|
-
scheduleReconnect();
|
|
743
|
-
}
|
|
744
|
-
},
|
|
745
|
-
|
|
746
|
-
async stop(): Promise<void> {
|
|
747
|
-
// Clear reconnect timer
|
|
748
|
-
if (reconnectTimer) {
|
|
749
|
-
clearTimeout(reconnectTimer);
|
|
750
|
-
reconnectTimer = null;
|
|
751
|
-
}
|
|
752
|
-
|
|
753
|
-
// Clean up all sub-modules
|
|
754
|
-
await cleanupSubModules();
|
|
755
|
-
|
|
756
|
-
// Disconnect from hub
|
|
757
|
-
if (connection) {
|
|
758
|
-
try {
|
|
759
|
-
await connection.disconnect("sidecar_shutdown");
|
|
760
|
-
} catch {
|
|
761
|
-
// Already disconnected
|
|
762
|
-
}
|
|
763
|
-
connection = null;
|
|
764
|
-
}
|
|
765
|
-
|
|
766
|
-
isConnected = false;
|
|
767
|
-
},
|
|
768
|
-
|
|
769
|
-
get connected(): boolean {
|
|
770
|
-
return isConnected;
|
|
771
|
-
},
|
|
772
|
-
|
|
773
|
-
async reportCheckpoint(
|
|
774
|
-
checkpoint: TrajectoryCheckpointPayload,
|
|
775
|
-
): Promise<TrajectoryCheckpointResult | null> {
|
|
776
|
-
if (!trajectoryReporter) return null;
|
|
777
|
-
return trajectoryReporter.reportCheckpoint(checkpoint);
|
|
778
|
-
},
|
|
779
|
-
|
|
780
|
-
async emitEvent(event: Record<string, unknown>): Promise<void> {
|
|
781
|
-
if (!connection || !isConnected) return;
|
|
782
|
-
try {
|
|
783
|
-
await connection.send({ scope }, { ...event, _origin: "macro-agent" });
|
|
784
|
-
} catch {
|
|
785
|
-
// Best effort — MAP hub may be temporarily unavailable
|
|
786
|
-
}
|
|
787
|
-
},
|
|
788
|
-
|
|
789
|
-
async postMailTurn(
|
|
790
|
-
conversationId: string,
|
|
791
|
-
participantId: string,
|
|
792
|
-
content: string,
|
|
793
|
-
): Promise<void> {
|
|
794
|
-
if (!connection || !isConnected) {
|
|
795
|
-
console.warn(
|
|
796
|
-
`[map-sidecar] postMailTurn skipped (connection=${!!connection} ` +
|
|
797
|
-
`isConnected=${isConnected}) conv=${conversationId}`,
|
|
798
|
-
);
|
|
799
|
-
return;
|
|
800
|
-
}
|
|
801
|
-
try {
|
|
802
|
-
await connection.sendNotification("mail/turn", {
|
|
803
|
-
conversationId,
|
|
804
|
-
participantId,
|
|
805
|
-
contentType: "text/plain",
|
|
806
|
-
content,
|
|
807
|
-
});
|
|
808
|
-
} catch (err) {
|
|
809
|
-
// Best effort — hub may be temporarily unavailable. Log at warn
|
|
810
|
-
// so silent failures are visible during postmortem.
|
|
811
|
-
console.warn(
|
|
812
|
-
`[map-sidecar] postMailTurn failed for conv=${conversationId}: ` +
|
|
813
|
-
`${(err as Error).message ?? String(err)}`,
|
|
814
|
-
);
|
|
815
|
-
}
|
|
816
|
-
},
|
|
817
|
-
|
|
818
|
-
getWorkspaceManager() {
|
|
819
|
-
return workspaceManager;
|
|
820
|
-
},
|
|
821
|
-
|
|
822
|
-
getRepoTransport() {
|
|
823
|
-
return workspaceTransport;
|
|
824
|
-
},
|
|
825
|
-
};
|
|
826
|
-
}
|