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.
Files changed (992) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +30 -56
  3. package/dist/acp/websocket-server.d.ts +6 -0
  4. package/dist/acp/websocket-server.d.ts.map +1 -1
  5. package/dist/acp/websocket-server.js +13 -0
  6. package/dist/acp/websocket-server.js.map +1 -1
  7. package/dist/acp/websocket-stream.d.ts +30 -0
  8. package/dist/acp/websocket-stream.d.ts.map +1 -0
  9. package/dist/acp/websocket-stream.js +118 -0
  10. package/dist/acp/websocket-stream.js.map +1 -0
  11. package/dist/activity/deduplication.d.ts +85 -0
  12. package/dist/activity/deduplication.d.ts.map +1 -0
  13. package/dist/activity/deduplication.js +149 -0
  14. package/dist/activity/deduplication.js.map +1 -0
  15. package/dist/activity/index.d.ts +16 -0
  16. package/dist/activity/index.d.ts.map +1 -0
  17. package/dist/activity/index.js +17 -0
  18. package/dist/activity/index.js.map +1 -0
  19. package/dist/activity/relevance.d.ts +81 -0
  20. package/dist/activity/relevance.d.ts.map +1 -0
  21. package/dist/activity/relevance.js +161 -0
  22. package/dist/activity/relevance.js.map +1 -0
  23. package/dist/activity/types.d.ts +169 -0
  24. package/dist/activity/types.d.ts.map +1 -0
  25. package/dist/activity/types.js +33 -0
  26. package/dist/activity/types.js.map +1 -0
  27. package/dist/activity/watcher.d.ts +64 -0
  28. package/dist/activity/watcher.d.ts.map +1 -0
  29. package/dist/activity/watcher.js +212 -0
  30. package/dist/activity/watcher.js.map +1 -0
  31. package/dist/adapters/federation.d.ts +8 -1
  32. package/dist/adapters/federation.d.ts.map +1 -1
  33. package/dist/adapters/federation.js +33 -2
  34. package/dist/adapters/federation.js.map +1 -1
  35. package/dist/agent/agent-manager-v2.d.ts.map +1 -1
  36. package/dist/agent/agent-manager-v2.js +7 -24
  37. package/dist/agent/agent-manager-v2.js.map +1 -1
  38. package/dist/agent/wake.d.ts +85 -0
  39. package/dist/agent/wake.d.ts.map +1 -0
  40. package/dist/agent/wake.js +278 -0
  41. package/dist/agent/wake.js.map +1 -0
  42. package/dist/api/server.d.ts.map +1 -1
  43. package/dist/api/server.js +41 -25
  44. package/dist/api/server.js.map +1 -1
  45. package/dist/api/types.d.ts +6 -0
  46. package/dist/api/types.d.ts.map +1 -1
  47. package/dist/auth/server-auth.d.ts +43 -0
  48. package/dist/auth/server-auth.d.ts.map +1 -0
  49. package/dist/auth/server-auth.js +80 -0
  50. package/dist/auth/server-auth.js.map +1 -0
  51. package/dist/auth/token.d.ts +4 -0
  52. package/dist/auth/token.d.ts.map +1 -1
  53. package/dist/auth/token.js +7 -6
  54. package/dist/auth/token.js.map +1 -1
  55. package/dist/boot-v2.d.ts +6 -3
  56. package/dist/boot-v2.d.ts.map +1 -1
  57. package/dist/boot-v2.js +44 -25
  58. package/dist/boot-v2.js.map +1 -1
  59. package/dist/cognitive/team-lifecycle.d.ts +82 -0
  60. package/dist/cognitive/team-lifecycle.d.ts.map +1 -0
  61. package/dist/cognitive/team-lifecycle.js +121 -0
  62. package/dist/cognitive/team-lifecycle.js.map +1 -0
  63. package/dist/cognitive/trajectory-extractor.d.ts +25 -0
  64. package/dist/cognitive/trajectory-extractor.d.ts.map +1 -0
  65. package/dist/cognitive/trajectory-extractor.js +134 -0
  66. package/dist/cognitive/trajectory-extractor.js.map +1 -0
  67. package/dist/control/control-server.d.ts.map +1 -1
  68. package/dist/control/control-server.js +10 -0
  69. package/dist/control/control-server.js.map +1 -1
  70. package/dist/dispatch/mail-inbound-consumer.d.ts.map +1 -1
  71. package/dist/dispatch/mail-inbound-consumer.js +43 -10
  72. package/dist/dispatch/mail-inbound-consumer.js.map +1 -1
  73. package/dist/index.d.ts +4 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +6 -1
  76. package/dist/index.js.map +1 -1
  77. package/dist/lifecycle/handlers/generic.d.ts +27 -0
  78. package/dist/lifecycle/handlers/generic.d.ts.map +1 -0
  79. package/dist/lifecycle/handlers/generic.js +56 -0
  80. package/dist/lifecycle/handlers/generic.js.map +1 -0
  81. package/dist/lifecycle/handlers/index.d.ts +51 -0
  82. package/dist/lifecycle/handlers/index.d.ts.map +1 -0
  83. package/dist/lifecycle/handlers/index.js +110 -0
  84. package/dist/lifecycle/handlers/index.js.map +1 -0
  85. package/dist/lifecycle/handlers/integrator.d.ts +81 -0
  86. package/dist/lifecycle/handlers/integrator.d.ts.map +1 -0
  87. package/dist/lifecycle/handlers/integrator.js +451 -0
  88. package/dist/lifecycle/handlers/integrator.js.map +1 -0
  89. package/dist/lifecycle/handlers/monitor.d.ts +29 -0
  90. package/dist/lifecycle/handlers/monitor.d.ts.map +1 -0
  91. package/dist/lifecycle/handlers/monitor.js +79 -0
  92. package/dist/lifecycle/handlers/monitor.js.map +1 -0
  93. package/dist/lifecycle/handlers/worker.d.ts +56 -0
  94. package/dist/lifecycle/handlers/worker.d.ts.map +1 -0
  95. package/dist/lifecycle/handlers/worker.js +381 -0
  96. package/dist/lifecycle/handlers/worker.js.map +1 -0
  97. package/dist/lifecycle/handlers-v2.d.ts +0 -2
  98. package/dist/lifecycle/handlers-v2.d.ts.map +1 -1
  99. package/dist/lifecycle/handlers-v2.js +4 -55
  100. package/dist/lifecycle/handlers-v2.js.map +1 -1
  101. package/dist/mail/conversation-map.d.ts +33 -0
  102. package/dist/mail/conversation-map.d.ts.map +1 -0
  103. package/dist/mail/conversation-map.js +61 -0
  104. package/dist/mail/conversation-map.js.map +1 -0
  105. package/dist/mail/index.d.ts +11 -0
  106. package/dist/mail/index.d.ts.map +1 -0
  107. package/dist/mail/index.js +11 -0
  108. package/dist/mail/index.js.map +1 -0
  109. package/dist/mail/mail-service.d.ts +85 -0
  110. package/dist/mail/mail-service.d.ts.map +1 -0
  111. package/dist/mail/mail-service.js +121 -0
  112. package/dist/mail/mail-service.js.map +1 -0
  113. package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
  114. package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
  115. package/dist/mail/stores/eventstore-conversation-store.js +131 -0
  116. package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
  117. package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
  118. package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
  119. package/dist/mail/stores/eventstore-participant-store.js +145 -0
  120. package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
  121. package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
  122. package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
  123. package/dist/mail/stores/eventstore-thread-store.js +118 -0
  124. package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
  125. package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
  126. package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
  127. package/dist/mail/stores/eventstore-turn-store.js +153 -0
  128. package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
  129. package/dist/mail/stores/index.d.ts +12 -0
  130. package/dist/mail/stores/index.d.ts.map +1 -0
  131. package/dist/mail/stores/index.js +12 -0
  132. package/dist/mail/stores/index.js.map +1 -0
  133. package/dist/mail/stores/types.d.ts +146 -0
  134. package/dist/mail/stores/types.d.ts.map +1 -0
  135. package/dist/mail/stores/types.js +13 -0
  136. package/dist/mail/stores/types.js.map +1 -0
  137. package/dist/mail/turn-recorder.d.ts +30 -0
  138. package/dist/mail/turn-recorder.d.ts.map +1 -0
  139. package/dist/mail/turn-recorder.js +98 -0
  140. package/dist/mail/turn-recorder.js.map +1 -0
  141. package/dist/map/adapter/acp-over-map.d.ts +115 -0
  142. package/dist/map/adapter/acp-over-map.d.ts.map +1 -0
  143. package/dist/map/adapter/acp-over-map.js +1024 -0
  144. package/dist/map/adapter/acp-over-map.js.map +1 -0
  145. package/dist/map/adapter/connection-manager.d.ts +150 -0
  146. package/dist/map/adapter/connection-manager.d.ts.map +1 -0
  147. package/dist/map/adapter/connection-manager.js +207 -0
  148. package/dist/map/adapter/connection-manager.js.map +1 -0
  149. package/dist/map/adapter/event-log.d.ts +87 -0
  150. package/dist/map/adapter/event-log.d.ts.map +1 -0
  151. package/dist/map/adapter/event-log.js +122 -0
  152. package/dist/map/adapter/event-log.js.map +1 -0
  153. package/dist/map/adapter/event-translator.d.ts +85 -0
  154. package/dist/map/adapter/event-translator.d.ts.map +1 -0
  155. package/dist/map/adapter/event-translator.js +295 -0
  156. package/dist/map/adapter/event-translator.js.map +1 -0
  157. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  158. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  159. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  160. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  161. package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
  162. package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
  163. package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
  164. package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
  165. package/dist/map/adapter/extensions/cognitive.d.ts +27 -0
  166. package/dist/map/adapter/extensions/cognitive.d.ts.map +1 -0
  167. package/dist/map/adapter/extensions/cognitive.js +158 -0
  168. package/dist/map/adapter/extensions/cognitive.js.map +1 -0
  169. package/dist/map/adapter/extensions/index.d.ts +95 -0
  170. package/dist/map/adapter/extensions/index.d.ts.map +1 -0
  171. package/dist/map/adapter/extensions/index.js +228 -0
  172. package/dist/map/adapter/extensions/index.js.map +1 -0
  173. package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
  174. package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
  175. package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
  176. package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
  177. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  178. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  179. package/dist/map/adapter/extensions/resume.js +59 -0
  180. package/dist/map/adapter/extensions/resume.js.map +1 -0
  181. package/dist/map/adapter/extensions/streams.d.ts +95 -0
  182. package/dist/map/adapter/extensions/streams.d.ts.map +1 -0
  183. package/dist/map/adapter/extensions/streams.js +515 -0
  184. package/dist/map/adapter/extensions/streams.js.map +1 -0
  185. package/dist/map/adapter/extensions/task.d.ts +40 -0
  186. package/dist/map/adapter/extensions/task.d.ts.map +1 -0
  187. package/dist/map/adapter/extensions/task.js +197 -0
  188. package/dist/map/adapter/extensions/task.js.map +1 -0
  189. package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
  190. package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
  191. package/dist/map/adapter/extensions/update-metadata.js +67 -0
  192. package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
  193. package/dist/map/adapter/extensions/wake.d.ts +60 -0
  194. package/dist/map/adapter/extensions/wake.d.ts.map +1 -0
  195. package/dist/map/adapter/extensions/wake.js +144 -0
  196. package/dist/map/adapter/extensions/wake.js.map +1 -0
  197. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  198. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  199. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  200. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  201. package/dist/map/adapter/extensions/workspace.d.ts +57 -0
  202. package/dist/map/adapter/extensions/workspace.d.ts.map +1 -0
  203. package/dist/map/adapter/extensions/workspace.js +81 -0
  204. package/dist/map/adapter/extensions/workspace.js.map +1 -0
  205. package/dist/map/adapter/index.d.ts +20 -0
  206. package/dist/map/adapter/index.d.ts.map +1 -0
  207. package/dist/map/adapter/index.js +40 -0
  208. package/dist/map/adapter/index.js.map +1 -0
  209. package/dist/map/adapter/interface.d.ts +450 -0
  210. package/dist/map/adapter/interface.d.ts.map +1 -0
  211. package/dist/map/adapter/interface.js +24 -0
  212. package/dist/map/adapter/interface.js.map +1 -0
  213. package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
  214. package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
  215. package/dist/map/adapter/mail-handler-adapter.js +292 -0
  216. package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
  217. package/dist/map/adapter/map-adapter.d.ts +200 -0
  218. package/dist/map/adapter/map-adapter.d.ts.map +1 -0
  219. package/dist/map/adapter/map-adapter.js +1199 -0
  220. package/dist/map/adapter/map-adapter.js.map +1 -0
  221. package/dist/map/adapter/rpc-handler.d.ts +263 -0
  222. package/dist/map/adapter/rpc-handler.d.ts.map +1 -0
  223. package/dist/map/adapter/rpc-handler.js +365 -0
  224. package/dist/map/adapter/rpc-handler.js.map +1 -0
  225. package/dist/map/adapter/subscription-manager.d.ts +174 -0
  226. package/dist/map/adapter/subscription-manager.d.ts.map +1 -0
  227. package/dist/map/adapter/subscription-manager.js +248 -0
  228. package/dist/map/adapter/subscription-manager.js.map +1 -0
  229. package/dist/map/adapter/types.d.ts +194 -0
  230. package/dist/map/adapter/types.d.ts.map +1 -0
  231. package/dist/map/adapter/types.js +27 -0
  232. package/dist/map/adapter/types.js.map +1 -0
  233. package/dist/map/adapter/websocket-integration.d.ts +113 -0
  234. package/dist/map/adapter/websocket-integration.d.ts.map +1 -0
  235. package/dist/map/adapter/websocket-integration.js +134 -0
  236. package/dist/map/adapter/websocket-integration.js.map +1 -0
  237. package/dist/map/cascade-action-handler.d.ts.map +1 -1
  238. package/dist/map/cascade-action-handler.js +19 -5
  239. package/dist/map/cascade-action-handler.js.map +1 -1
  240. package/dist/map/federation/envelope.d.ts +98 -0
  241. package/dist/map/federation/envelope.d.ts.map +1 -0
  242. package/dist/map/federation/envelope.js +160 -0
  243. package/dist/map/federation/envelope.js.map +1 -0
  244. package/dist/map/federation/federation-handler.d.ts +50 -0
  245. package/dist/map/federation/federation-handler.d.ts.map +1 -0
  246. package/dist/map/federation/federation-handler.js +306 -0
  247. package/dist/map/federation/federation-handler.js.map +1 -0
  248. package/dist/map/federation/index.d.ts +14 -0
  249. package/dist/map/federation/index.d.ts.map +1 -0
  250. package/dist/map/federation/index.js +13 -0
  251. package/dist/map/federation/index.js.map +1 -0
  252. package/dist/map/federation/types.d.ts +239 -0
  253. package/dist/map/federation/types.d.ts.map +1 -0
  254. package/dist/map/federation/types.js +23 -0
  255. package/dist/map/federation/types.js.map +1 -0
  256. package/dist/map/server.d.ts.map +1 -1
  257. package/dist/map/server.js +17 -2
  258. package/dist/map/server.js.map +1 -1
  259. package/dist/map/types.d.ts +6 -0
  260. package/dist/map/types.d.ts.map +1 -1
  261. package/dist/mcp/map-client.d.ts +39 -0
  262. package/dist/mcp/map-client.d.ts.map +1 -0
  263. package/dist/mcp/map-client.js +129 -0
  264. package/dist/mcp/map-client.js.map +1 -0
  265. package/dist/mcp/mcp-server.d.ts +72 -0
  266. package/dist/mcp/mcp-server.d.ts.map +1 -0
  267. package/dist/mcp/mcp-server.js +1027 -0
  268. package/dist/mcp/mcp-server.js.map +1 -0
  269. package/dist/mcp/tools/claim_task.d.ts +35 -0
  270. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  271. package/dist/mcp/tools/claim_task.js +58 -0
  272. package/dist/mcp/tools/claim_task.js.map +1 -0
  273. package/dist/mcp/tools/done-v2.d.ts +0 -1
  274. package/dist/mcp/tools/done-v2.d.ts.map +1 -1
  275. package/dist/mcp/tools/done-v2.js +0 -1
  276. package/dist/mcp/tools/done-v2.js.map +1 -1
  277. package/dist/mcp/tools/done.d.ts +102 -0
  278. package/dist/mcp/tools/done.d.ts.map +1 -0
  279. package/dist/mcp/tools/done.js +253 -0
  280. package/dist/mcp/tools/done.js.map +1 -0
  281. package/dist/mcp/tools/inject_context.d.ts +61 -0
  282. package/dist/mcp/tools/inject_context.d.ts.map +1 -0
  283. package/dist/mcp/tools/inject_context.js +123 -0
  284. package/dist/mcp/tools/inject_context.js.map +1 -0
  285. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  286. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  287. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  288. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  289. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  290. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  291. package/dist/mcp/tools/unclaim_task.js +47 -0
  292. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  293. package/dist/mcp/tools/wait_for_activity.d.ts +60 -0
  294. package/dist/mcp/tools/wait_for_activity.d.ts.map +1 -0
  295. package/dist/mcp/tools/wait_for_activity.js +135 -0
  296. package/dist/mcp/tools/wait_for_activity.js.map +1 -0
  297. package/dist/monitor/health-check-service.d.ts +143 -0
  298. package/dist/monitor/health-check-service.d.ts.map +1 -0
  299. package/dist/monitor/health-check-service.js +240 -0
  300. package/dist/monitor/health-check-service.js.map +1 -0
  301. package/dist/monitor/index.d.ts +14 -0
  302. package/dist/monitor/index.d.ts.map +1 -0
  303. package/dist/monitor/index.js +14 -0
  304. package/dist/monitor/index.js.map +1 -0
  305. package/dist/monitor/stall-detector.d.ts +109 -0
  306. package/dist/monitor/stall-detector.d.ts.map +1 -0
  307. package/dist/monitor/stall-detector.js +152 -0
  308. package/dist/monitor/stall-detector.js.map +1 -0
  309. package/dist/peer/capability-manager.d.ts +56 -0
  310. package/dist/peer/capability-manager.d.ts.map +1 -0
  311. package/dist/peer/capability-manager.js +186 -0
  312. package/dist/peer/capability-manager.js.map +1 -0
  313. package/dist/peer/encapsulation-manager.d.ts +190 -0
  314. package/dist/peer/encapsulation-manager.d.ts.map +1 -0
  315. package/dist/peer/encapsulation-manager.js +486 -0
  316. package/dist/peer/encapsulation-manager.js.map +1 -0
  317. package/dist/peer/federation-manager.d.ts +223 -0
  318. package/dist/peer/federation-manager.d.ts.map +1 -0
  319. package/dist/peer/federation-manager.js +528 -0
  320. package/dist/peer/federation-manager.js.map +1 -0
  321. package/dist/peer/hierarchy-errors.d.ts +208 -0
  322. package/dist/peer/hierarchy-errors.d.ts.map +1 -0
  323. package/dist/peer/hierarchy-errors.js +268 -0
  324. package/dist/peer/hierarchy-errors.js.map +1 -0
  325. package/dist/peer/hierarchy-protocol.d.ts +159 -0
  326. package/dist/peer/hierarchy-protocol.d.ts.map +1 -0
  327. package/dist/peer/hierarchy-protocol.js +142 -0
  328. package/dist/peer/hierarchy-protocol.js.map +1 -0
  329. package/dist/peer/index.d.ts +15 -0
  330. package/dist/peer/index.d.ts.map +1 -0
  331. package/dist/peer/index.js +15 -0
  332. package/dist/peer/index.js.map +1 -0
  333. package/dist/peer/peer-manager.d.ts +99 -0
  334. package/dist/peer/peer-manager.d.ts.map +1 -0
  335. package/dist/peer/peer-manager.js +333 -0
  336. package/dist/peer/peer-manager.js.map +1 -0
  337. package/dist/peer/task-delegation.d.ts +189 -0
  338. package/dist/peer/task-delegation.d.ts.map +1 -0
  339. package/dist/peer/task-delegation.js +303 -0
  340. package/dist/peer/task-delegation.js.map +1 -0
  341. package/dist/peer/transports/index.d.ts +8 -0
  342. package/dist/peer/transports/index.d.ts.map +1 -0
  343. package/dist/peer/transports/index.js +8 -0
  344. package/dist/peer/transports/index.js.map +1 -0
  345. package/dist/peer/transports/local-transport.d.ts +56 -0
  346. package/dist/peer/transports/local-transport.d.ts.map +1 -0
  347. package/dist/peer/transports/local-transport.js +263 -0
  348. package/dist/peer/transports/local-transport.js.map +1 -0
  349. package/dist/peer/transports/websocket-transport.d.ts +86 -0
  350. package/dist/peer/transports/websocket-transport.d.ts.map +1 -0
  351. package/dist/peer/transports/websocket-transport.js +338 -0
  352. package/dist/peer/transports/websocket-transport.js.map +1 -0
  353. package/dist/peer/types.d.ts +268 -0
  354. package/dist/peer/types.d.ts.map +1 -0
  355. package/dist/peer/types.js +36 -0
  356. package/dist/peer/types.js.map +1 -0
  357. package/dist/router/address-resolver.d.ts +102 -0
  358. package/dist/router/address-resolver.d.ts.map +1 -0
  359. package/dist/router/address-resolver.js +198 -0
  360. package/dist/router/address-resolver.js.map +1 -0
  361. package/dist/router/broadcast.d.ts +53 -0
  362. package/dist/router/broadcast.d.ts.map +1 -0
  363. package/dist/router/broadcast.js +75 -0
  364. package/dist/router/broadcast.js.map +1 -0
  365. package/dist/router/channels.d.ts +148 -0
  366. package/dist/router/channels.d.ts.map +1 -0
  367. package/dist/router/channels.js +126 -0
  368. package/dist/router/channels.js.map +1 -0
  369. package/dist/router/index.d.ts +21 -0
  370. package/dist/router/index.d.ts.map +1 -0
  371. package/dist/router/index.js +18 -0
  372. package/dist/router/index.js.map +1 -0
  373. package/dist/router/message-router.d.ts +197 -0
  374. package/dist/router/message-router.d.ts.map +1 -0
  375. package/dist/router/message-router.js +903 -0
  376. package/dist/router/message-router.js.map +1 -0
  377. package/dist/router/message-types.d.ts +183 -0
  378. package/dist/router/message-types.d.ts.map +1 -0
  379. package/dist/router/message-types.js +79 -0
  380. package/dist/router/message-types.js.map +1 -0
  381. package/dist/router/role-resolver.d.ts +67 -0
  382. package/dist/router/role-resolver.d.ts.map +1 -0
  383. package/dist/router/role-resolver.js +106 -0
  384. package/dist/router/role-resolver.js.map +1 -0
  385. package/dist/router/signals.d.ts +253 -0
  386. package/dist/router/signals.d.ts.map +1 -0
  387. package/dist/router/signals.js +53 -0
  388. package/dist/router/signals.js.map +1 -0
  389. package/dist/router/types.d.ts +191 -0
  390. package/dist/router/types.d.ts.map +1 -0
  391. package/dist/router/types.js +34 -0
  392. package/dist/router/types.js.map +1 -0
  393. package/dist/router/wake.d.ts +111 -0
  394. package/dist/router/wake.d.ts.map +1 -0
  395. package/dist/router/wake.js +180 -0
  396. package/dist/router/wake.js.map +1 -0
  397. package/dist/server/combined-server.d.ts +95 -0
  398. package/dist/server/combined-server.d.ts.map +1 -0
  399. package/dist/server/combined-server.js +335 -0
  400. package/dist/server/combined-server.js.map +1 -0
  401. package/dist/steering/index.d.ts +11 -0
  402. package/dist/steering/index.d.ts.map +1 -0
  403. package/dist/steering/index.js +11 -0
  404. package/dist/steering/index.js.map +1 -0
  405. package/dist/steering/inject.d.ts +39 -0
  406. package/dist/steering/inject.d.ts.map +1 -0
  407. package/dist/steering/inject.js +197 -0
  408. package/dist/steering/inject.js.map +1 -0
  409. package/dist/steering/types.d.ts +100 -0
  410. package/dist/steering/types.d.ts.map +1 -0
  411. package/dist/steering/types.js +11 -0
  412. package/dist/steering/types.js.map +1 -0
  413. package/dist/store/backends/index.d.ts +11 -0
  414. package/dist/store/backends/index.d.ts.map +1 -0
  415. package/dist/store/backends/index.js +15 -0
  416. package/dist/store/backends/index.js.map +1 -0
  417. package/dist/store/backends/json-backend.d.ts +23 -0
  418. package/dist/store/backends/json-backend.d.ts.map +1 -0
  419. package/dist/store/backends/json-backend.js +220 -0
  420. package/dist/store/backends/json-backend.js.map +1 -0
  421. package/dist/store/backends/memory-backend.d.ts +12 -0
  422. package/dist/store/backends/memory-backend.d.ts.map +1 -0
  423. package/dist/store/backends/memory-backend.js +205 -0
  424. package/dist/store/backends/memory-backend.js.map +1 -0
  425. package/dist/store/backends/sqlite-backend.d.ts +27 -0
  426. package/dist/store/backends/sqlite-backend.d.ts.map +1 -0
  427. package/dist/store/backends/sqlite-backend.js +231 -0
  428. package/dist/store/backends/sqlite-backend.js.map +1 -0
  429. package/dist/store/backends/tinybase-backend.d.ts +22 -0
  430. package/dist/store/backends/tinybase-backend.d.ts.map +1 -0
  431. package/dist/store/backends/tinybase-backend.js +203 -0
  432. package/dist/store/backends/tinybase-backend.js.map +1 -0
  433. package/dist/store/backends/types.d.ts +175 -0
  434. package/dist/store/backends/types.d.ts.map +1 -0
  435. package/dist/store/backends/types.js +28 -0
  436. package/dist/store/backends/types.js.map +1 -0
  437. package/dist/store/event-store.d.ts +128 -0
  438. package/dist/store/event-store.d.ts.map +1 -0
  439. package/dist/store/event-store.js +1751 -0
  440. package/dist/store/event-store.js.map +1 -0
  441. package/dist/store/instance.d.ts +290 -0
  442. package/dist/store/instance.d.ts.map +1 -0
  443. package/dist/store/instance.js +363 -0
  444. package/dist/store/instance.js.map +1 -0
  445. package/dist/store/migrations.d.ts +41 -0
  446. package/dist/store/migrations.d.ts.map +1 -0
  447. package/dist/store/migrations.js +79 -0
  448. package/dist/store/migrations.js.map +1 -0
  449. package/dist/store/test-utils.d.ts +63 -0
  450. package/dist/store/test-utils.d.ts.map +1 -0
  451. package/dist/store/test-utils.js +63 -0
  452. package/dist/store/test-utils.js.map +1 -0
  453. package/dist/store/types/config.d.ts +16 -0
  454. package/dist/store/types/config.d.ts.map +1 -0
  455. package/dist/store/types/config.js +8 -0
  456. package/dist/store/types/config.js.map +1 -0
  457. package/dist/store/types/conversations.d.ts +91 -0
  458. package/dist/store/types/conversations.d.ts.map +1 -0
  459. package/dist/store/types/conversations.js +8 -0
  460. package/dist/store/types/conversations.js.map +1 -0
  461. package/dist/store/types/sessions.d.ts +44 -0
  462. package/dist/store/types/sessions.d.ts.map +1 -0
  463. package/dist/store/types/sessions.js +9 -0
  464. package/dist/store/types/sessions.js.map +1 -0
  465. package/dist/store/types.d.ts +115 -0
  466. package/dist/store/types.d.ts.map +1 -0
  467. package/dist/store/types.js +6 -0
  468. package/dist/store/types.js.map +1 -0
  469. package/dist/task/backend/index.d.ts +93 -0
  470. package/dist/task/backend/index.d.ts.map +1 -0
  471. package/dist/task/backend/index.js +178 -0
  472. package/dist/task/backend/index.js.map +1 -0
  473. package/dist/task/backend/memory.d.ts +70 -0
  474. package/dist/task/backend/memory.d.ts.map +1 -0
  475. package/dist/task/backend/memory.js +621 -0
  476. package/dist/task/backend/memory.js.map +1 -0
  477. package/dist/task/backend/opentasks/backend.d.ts +140 -0
  478. package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
  479. package/dist/task/backend/opentasks/backend.js +1023 -0
  480. package/dist/task/backend/opentasks/backend.js.map +1 -0
  481. package/dist/task/backend/opentasks/client.d.ts +337 -0
  482. package/dist/task/backend/opentasks/client.d.ts.map +1 -0
  483. package/dist/task/backend/opentasks/client.js +225 -0
  484. package/dist/task/backend/opentasks/client.js.map +1 -0
  485. package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
  486. package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
  487. package/dist/task/backend/opentasks/daemon-manager.js +195 -0
  488. package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
  489. package/dist/task/backend/opentasks/index.d.ts +21 -0
  490. package/dist/task/backend/opentasks/index.d.ts.map +1 -0
  491. package/dist/task/backend/opentasks/index.js +21 -0
  492. package/dist/task/backend/opentasks/index.js.map +1 -0
  493. package/dist/task/backend/opentasks/mapping.d.ts +48 -0
  494. package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
  495. package/dist/task/backend/opentasks/mapping.js +77 -0
  496. package/dist/task/backend/opentasks/mapping.js.map +1 -0
  497. package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts +54 -0
  498. package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts.map +1 -0
  499. package/dist/task/backend/sudocode/__tests__/integration/test-utils.js +88 -0
  500. package/dist/task/backend/sudocode/__tests__/integration/test-utils.js.map +1 -0
  501. package/dist/task/backend/sudocode/backend.d.ts +155 -0
  502. package/dist/task/backend/sudocode/backend.d.ts.map +1 -0
  503. package/dist/task/backend/sudocode/backend.js +942 -0
  504. package/dist/task/backend/sudocode/backend.js.map +1 -0
  505. package/dist/task/backend/sudocode/client.d.ts +303 -0
  506. package/dist/task/backend/sudocode/client.d.ts.map +1 -0
  507. package/dist/task/backend/sudocode/client.js +101 -0
  508. package/dist/task/backend/sudocode/client.js.map +1 -0
  509. package/dist/task/backend/sudocode/index.d.ts +19 -0
  510. package/dist/task/backend/sudocode/index.d.ts.map +1 -0
  511. package/dist/task/backend/sudocode/index.js +17 -0
  512. package/dist/task/backend/sudocode/index.js.map +1 -0
  513. package/dist/task/backend/sudocode/mapping.d.ts +51 -0
  514. package/dist/task/backend/sudocode/mapping.d.ts.map +1 -0
  515. package/dist/task/backend/sudocode/mapping.js +86 -0
  516. package/dist/task/backend/sudocode/mapping.js.map +1 -0
  517. package/dist/task/backend/sudocode/server-client.d.ts +56 -0
  518. package/dist/task/backend/sudocode/server-client.d.ts.map +1 -0
  519. package/dist/task/backend/sudocode/server-client.js +367 -0
  520. package/dist/task/backend/sudocode/server-client.js.map +1 -0
  521. package/dist/task/backend/sudocode/standalone-client.d.ts +91 -0
  522. package/dist/task/backend/sudocode/standalone-client.d.ts.map +1 -0
  523. package/dist/task/backend/sudocode/standalone-client.js +476 -0
  524. package/dist/task/backend/sudocode/standalone-client.js.map +1 -0
  525. package/dist/task/backend/sudocode/sync-policy.d.ts +166 -0
  526. package/dist/task/backend/sudocode/sync-policy.d.ts.map +1 -0
  527. package/dist/task/backend/sudocode/sync-policy.js +221 -0
  528. package/dist/task/backend/sudocode/sync-policy.js.map +1 -0
  529. package/dist/task/backend/sudocode/tools.d.ts +87 -0
  530. package/dist/task/backend/sudocode/tools.d.ts.map +1 -0
  531. package/dist/task/backend/sudocode/tools.js +743 -0
  532. package/dist/task/backend/sudocode/tools.js.map +1 -0
  533. package/dist/task/backend/tool-provider.d.ts +56 -0
  534. package/dist/task/backend/tool-provider.d.ts.map +1 -0
  535. package/dist/task/backend/tool-provider.js +424 -0
  536. package/dist/task/backend/tool-provider.js.map +1 -0
  537. package/dist/task/backend/types.d.ts +297 -0
  538. package/dist/task/backend/types.d.ts.map +1 -0
  539. package/dist/task/backend/types.js +27 -0
  540. package/dist/task/backend/types.js.map +1 -0
  541. package/dist/task/backend/unified-tool-provider.d.ts +57 -0
  542. package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
  543. package/dist/task/backend/unified-tool-provider.js +623 -0
  544. package/dist/task/backend/unified-tool-provider.js.map +1 -0
  545. package/dist/task/index.d.ts +7 -0
  546. package/dist/task/index.d.ts.map +1 -0
  547. package/dist/task/index.js +7 -0
  548. package/dist/task/index.js.map +1 -0
  549. package/dist/task/retry-policy.d.ts +89 -0
  550. package/dist/task/retry-policy.d.ts.map +1 -0
  551. package/dist/task/retry-policy.js +160 -0
  552. package/dist/task/retry-policy.js.map +1 -0
  553. package/dist/task/task-manager.d.ts +70 -0
  554. package/dist/task/task-manager.d.ts.map +1 -0
  555. package/dist/task/task-manager.js +319 -0
  556. package/dist/task/task-manager.js.map +1 -0
  557. package/dist/task/types.d.ts +72 -0
  558. package/dist/task/types.d.ts.map +1 -0
  559. package/dist/task/types.js +33 -0
  560. package/dist/task/types.js.map +1 -0
  561. package/dist/teams/team-loader.d.ts +2 -1
  562. package/dist/teams/team-loader.d.ts.map +1 -1
  563. package/dist/teams/team-loader.js +2 -1
  564. package/dist/teams/team-loader.js.map +1 -1
  565. package/dist/teams/team-manager.d.ts +101 -0
  566. package/dist/teams/team-manager.d.ts.map +1 -0
  567. package/dist/teams/team-manager.js +260 -0
  568. package/dist/teams/team-manager.js.map +1 -0
  569. package/dist/teams/team-runtime-v2.d.ts +0 -3
  570. package/dist/teams/team-runtime-v2.d.ts.map +1 -1
  571. package/dist/teams/team-runtime-v2.js +8 -87
  572. package/dist/teams/team-runtime-v2.js.map +1 -1
  573. package/dist/teams/team-runtime.d.ts +245 -0
  574. package/dist/teams/team-runtime.d.ts.map +1 -0
  575. package/dist/teams/team-runtime.js +1023 -0
  576. package/dist/teams/team-runtime.js.map +1 -0
  577. package/dist/trigger/router/index.d.ts +11 -0
  578. package/dist/trigger/router/index.d.ts.map +1 -0
  579. package/dist/trigger/router/index.js +10 -0
  580. package/dist/trigger/router/index.js.map +1 -0
  581. package/dist/trigger/router/strategies/ai-router-strategy.d.ts +34 -0
  582. package/dist/trigger/router/strategies/ai-router-strategy.d.ts.map +1 -0
  583. package/dist/trigger/router/strategies/ai-router-strategy.js +359 -0
  584. package/dist/trigger/router/strategies/ai-router-strategy.js.map +1 -0
  585. package/dist/trigger/router/strategies/direct-strategy.d.ts +32 -0
  586. package/dist/trigger/router/strategies/direct-strategy.d.ts.map +1 -0
  587. package/dist/trigger/router/strategies/direct-strategy.js +119 -0
  588. package/dist/trigger/router/strategies/direct-strategy.js.map +1 -0
  589. package/dist/trigger/router/strategies/index.d.ts +11 -0
  590. package/dist/trigger/router/strategies/index.d.ts.map +1 -0
  591. package/dist/trigger/router/strategies/index.js +11 -0
  592. package/dist/trigger/router/strategies/index.js.map +1 -0
  593. package/dist/trigger/router/strategies/role-strategy.d.ts +39 -0
  594. package/dist/trigger/router/strategies/role-strategy.d.ts.map +1 -0
  595. package/dist/trigger/router/strategies/role-strategy.js +207 -0
  596. package/dist/trigger/router/strategies/role-strategy.js.map +1 -0
  597. package/dist/trigger/router/trigger-router.d.ts +54 -0
  598. package/dist/trigger/router/trigger-router.d.ts.map +1 -0
  599. package/dist/trigger/router/trigger-router.js +362 -0
  600. package/dist/trigger/router/trigger-router.js.map +1 -0
  601. package/dist/trigger/router/types.d.ts +225 -0
  602. package/dist/trigger/router/types.d.ts.map +1 -0
  603. package/dist/trigger/router/types.js +10 -0
  604. package/dist/trigger/router/types.js.map +1 -0
  605. package/dist/trigger/sources/cron/cron-service.d.ts.map +1 -1
  606. package/dist/trigger/sources/cron/cron-service.js +6 -3
  607. package/dist/trigger/sources/cron/cron-service.js.map +1 -1
  608. package/dist/trigger/trigger-system.d.ts +77 -0
  609. package/dist/trigger/trigger-system.d.ts.map +1 -0
  610. package/dist/trigger/trigger-system.js +84 -0
  611. package/dist/trigger/trigger-system.js.map +1 -0
  612. package/dist/util/git-safety.d.ts +33 -0
  613. package/dist/util/git-safety.d.ts.map +1 -0
  614. package/dist/util/git-safety.js +94 -0
  615. package/dist/util/git-safety.js.map +1 -0
  616. package/dist/workspace/dataplane-adapter.d.ts +260 -0
  617. package/dist/workspace/dataplane-adapter.d.ts.map +1 -0
  618. package/dist/workspace/dataplane-adapter.js +416 -0
  619. package/dist/workspace/dataplane-adapter.js.map +1 -0
  620. package/dist/workspace/index.d.ts +0 -1
  621. package/dist/workspace/index.d.ts.map +1 -1
  622. package/dist/workspace/index.js +0 -2
  623. package/dist/workspace/index.js.map +1 -1
  624. package/dist/workspace/landing/direct-push.d.ts.map +1 -1
  625. package/dist/workspace/landing/direct-push.js +22 -7
  626. package/dist/workspace/landing/direct-push.js.map +1 -1
  627. package/dist/workspace/landing/queue-to-branch.d.ts.map +1 -1
  628. package/dist/workspace/landing/queue-to-branch.js +1 -3
  629. package/dist/workspace/landing/queue-to-branch.js.map +1 -1
  630. package/dist/workspace/types.d.ts +0 -13
  631. package/dist/workspace/types.d.ts.map +1 -1
  632. package/dist/workspace/workspace-manager.d.ts +0 -11
  633. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  634. package/dist/workspace/workspace-manager.js +0 -30
  635. package/dist/workspace/workspace-manager.js.map +1 -1
  636. package/package.json +28 -2
  637. package/templates/teams/self-driving/prompts/grinder.md +1 -0
  638. package/templates/teams/self-driving/prompts/judge.md +1 -0
  639. package/templates/teams/self-driving/prompts/planner.md +1 -0
  640. package/templates/teams/self-driving/roles/grinder.yaml +15 -0
  641. package/templates/teams/self-driving/roles/judge.yaml +10 -0
  642. package/templates/teams/self-driving/roles/planner.yaml +16 -0
  643. package/.claude/commands/openspec/apply.md +0 -23
  644. package/.claude/commands/openspec/archive.md +0 -27
  645. package/.claude/commands/openspec/proposal.md +0 -28
  646. package/.claude/settings.json +0 -133
  647. package/.gitattributes +0 -3
  648. package/.opentasks/config.json +0 -9
  649. package/.opentasks/graph.jsonl +0 -0
  650. package/.sessionlog/settings.json +0 -4
  651. package/.sudocode/issues.jsonl +0 -183
  652. package/.sudocode/specs.jsonl +0 -56
  653. package/AGENTS.md +0 -18
  654. package/CLAUDE.md +0 -923
  655. package/docs/architecture.md +0 -508
  656. package/docs/configuration.md +0 -323
  657. package/docs/conflict-recovery.md +0 -472
  658. package/docs/design/task-dispatcher.md +0 -880
  659. package/docs/design-subsystem-extraction.md +0 -627
  660. package/docs/git-cascade-integration-gaps.md +0 -678
  661. package/docs/implementation-details.md +0 -1127
  662. package/docs/implementation-summary.md +0 -448
  663. package/docs/lifecycle-events-design.md +0 -111
  664. package/docs/mail-integration.md +0 -608
  665. package/docs/openhive-capability-summary.md +0 -415
  666. package/docs/openhive-integration.md +0 -415
  667. package/docs/plan-self-driving-support.md +0 -433
  668. package/docs/roadmap-v2-gaps.md +0 -216
  669. package/docs/spec-self-driving-support.md +0 -462
  670. package/docs/team-templates.md +0 -860
  671. package/docs/teams.md +0 -306
  672. package/docs/trigger-system-design.md +0 -333
  673. package/docs/troubleshooting.md +0 -489
  674. package/docs/workspace-interfaces.md +0 -731
  675. package/docs/workspace-redesign-plan.md +0 -302
  676. package/examples/distributed-peer-communication.ts +0 -202
  677. package/examples/local-peer-communication.ts +0 -165
  678. package/index.js +0 -2
  679. package/mvp_docs/agent-execution-system.md +0 -347
  680. package/mvp_docs/agent-interface.md +0 -580
  681. package/mvp_docs/data-structures.md +0 -701
  682. package/mvp_docs/dynamic-meta-orchestration.md +0 -116
  683. package/mvp_docs/multi-agent-interaction-design.md +0 -779
  684. package/mvp_docs/mvp-implementation-plan.md +0 -1148
  685. package/renovate.json5 +0 -6
  686. package/scripts/test-acp-integration.ts +0 -422
  687. package/src/__tests__/boot-v2.test.ts +0 -631
  688. package/src/__tests__/e2e/acp-over-map-live.e2e.test.ts +0 -496
  689. package/src/__tests__/e2e/acp-over-map.e2e.test.ts +0 -457
  690. package/src/__tests__/e2e/agent-lifecycle.e2e.test.ts +0 -770
  691. package/src/__tests__/e2e/auto-sync.e2e.test.ts +0 -257
  692. package/src/__tests__/e2e/bootstrap.e2e.test.ts +0 -319
  693. package/src/__tests__/e2e/cascade-rebase.e2e.test.ts +0 -254
  694. package/src/__tests__/e2e/cc-swarm-bridge.e2e.test.ts +0 -253
  695. package/src/__tests__/e2e/cli-run.e2e.test.ts +0 -167
  696. package/src/__tests__/e2e/cognitive-workspace.e2e.test.ts +0 -282
  697. package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +0 -495
  698. package/src/__tests__/e2e/dispatch-live.e2e.test.ts +0 -564
  699. package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +0 -496
  700. package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +0 -456
  701. package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +0 -386
  702. package/src/__tests__/e2e/dispatch.e2e.test.ts +0 -376
  703. package/src/__tests__/e2e/done-scenarios.e2e.test.ts +0 -322
  704. package/src/__tests__/e2e/live-agent.e2e.test.ts +0 -1330
  705. package/src/__tests__/e2e/map-server.e2e.test.ts +0 -128
  706. package/src/__tests__/e2e/map-sidecar.e2e.test.ts +0 -139
  707. package/src/__tests__/e2e/opentasks-integration.e2e.test.ts +0 -280
  708. package/src/__tests__/e2e/pull-mode.e2e.test.ts +0 -632
  709. package/src/__tests__/e2e/resume-continue.e2e.test.ts +0 -312
  710. package/src/__tests__/e2e/self-driving-v3.e2e.test.ts +0 -197
  711. package/src/__tests__/e2e/spawn-resolver.e2e.test.ts +0 -200
  712. package/src/__tests__/e2e/swarmkit-integration.e2e.test.ts +0 -562
  713. package/src/__tests__/e2e/swarmkit-live.e2e.test.ts +0 -1049
  714. package/src/__tests__/e2e/trajectory-tracking.e2e.test.ts +0 -258
  715. package/src/__tests__/e2e/trigger-wake.e2e.test.ts +0 -257
  716. package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +0 -383
  717. package/src/__tests__/e2e/workspace-v3.e2e.test.ts +0 -413
  718. package/src/acp/__tests__/claude-code-replay.test.ts +0 -225
  719. package/src/acp/__tests__/macro-agent.test.ts +0 -387
  720. package/src/acp/__tests__/session-mapper.test.ts +0 -152
  721. package/src/acp/__tests__/websocket-server.test.ts +0 -194
  722. package/src/acp/claude-code-replay.ts +0 -208
  723. package/src/acp/index.ts +0 -32
  724. package/src/acp/macro-agent.ts +0 -995
  725. package/src/acp/map-bridge.ts +0 -193
  726. package/src/acp/session-mapper.ts +0 -116
  727. package/src/acp/types.ts +0 -99
  728. package/src/acp/websocket-server.ts +0 -213
  729. package/src/adapters/__tests__/federation.test.ts +0 -256
  730. package/src/adapters/__tests__/inbox-adapter.test.ts +0 -316
  731. package/src/adapters/__tests__/tasks-adapter.test.ts +0 -270
  732. package/src/adapters/federation.ts +0 -185
  733. package/src/adapters/inbox-adapter.ts +0 -292
  734. package/src/adapters/inbox-client-adapter.ts +0 -173
  735. package/src/adapters/index.ts +0 -44
  736. package/src/adapters/opentasks-daemon.ts +0 -252
  737. package/src/adapters/tasks-adapter.ts +0 -330
  738. package/src/adapters/types.ts +0 -286
  739. package/src/agent/__tests__/agent-manager-topology.test.ts +0 -73
  740. package/src/agent/__tests__/agent-manager-v2.completion-signal.test.ts +0 -284
  741. package/src/agent/__tests__/agent-manager-v2.permission-interception.test.ts +0 -296
  742. package/src/agent/__tests__/agent-manager-v2.permissions.test.ts +0 -233
  743. package/src/agent/__tests__/agent-manager-v2.test.ts +0 -614
  744. package/src/agent/__tests__/agent-store.test.ts +0 -465
  745. package/src/agent/__tests__/task-ref-resolution.test.ts +0 -231
  746. package/src/agent/agent-manager-v2.ts +0 -2187
  747. package/src/agent/agent-manager.ts +0 -403
  748. package/src/agent/agent-store.ts +0 -409
  749. package/src/agent/index.ts +0 -7
  750. package/src/agent/prompts/coordinator-signals.ts +0 -115
  751. package/src/agent/prompts/index.ts +0 -7
  752. package/src/agent/system-prompt.ts +0 -298
  753. package/src/agent/types.ts +0 -480
  754. package/src/agent-detection/__tests__/command-builder.test.ts +0 -336
  755. package/src/agent-detection/__tests__/detector.test.ts +0 -768
  756. package/src/agent-detection/__tests__/registry.test.ts +0 -254
  757. package/src/agent-detection/command-builder.ts +0 -90
  758. package/src/agent-detection/detector.ts +0 -307
  759. package/src/agent-detection/index.ts +0 -36
  760. package/src/agent-detection/registry.ts +0 -200
  761. package/src/agent-detection/types.ts +0 -184
  762. package/src/api/__tests__/server.test.ts +0 -292
  763. package/src/api/index.ts +0 -8
  764. package/src/api/server.ts +0 -380
  765. package/src/api/types.ts +0 -39
  766. package/src/auth/__tests__/token.test.ts +0 -100
  767. package/src/auth/index.ts +0 -1
  768. package/src/auth/token.ts +0 -82
  769. package/src/boot-v2.ts +0 -1343
  770. package/src/cli/__tests__/stable-instance-id.test.ts +0 -57
  771. package/src/cli/acp.ts +0 -101
  772. package/src/cli/inbox-mcp-proxy.ts +0 -56
  773. package/src/cli/index.ts +0 -566
  774. package/src/cli/mcp.ts +0 -305
  775. package/src/cli/parse-args.ts +0 -54
  776. package/src/cli/stable-instance-id.ts +0 -14
  777. package/src/cognitive/__tests__/macro-agent-backend.test.ts +0 -673
  778. package/src/cognitive/__tests__/session-converter.test.ts +0 -423
  779. package/src/cognitive/__tests__/workspace-handler.test.ts +0 -221
  780. package/src/cognitive/analyst-role.ts +0 -59
  781. package/src/cognitive/index.ts +0 -49
  782. package/src/cognitive/macro-agent-backend.ts +0 -402
  783. package/src/cognitive/session-converter.ts +0 -151
  784. package/src/cognitive/types.ts +0 -187
  785. package/src/cognitive/workspace-handler.ts +0 -163
  786. package/src/config/index.ts +0 -9
  787. package/src/config/project-config.ts +0 -294
  788. package/src/control/__tests__/control-resilience.test.ts +0 -251
  789. package/src/control/__tests__/control-socket.test.ts +0 -240
  790. package/src/control/control-client.ts +0 -337
  791. package/src/control/control-server.ts +0 -298
  792. package/src/control/index.ts +0 -17
  793. package/src/control/types.ts +0 -95
  794. package/src/dispatch/CLAUDE.md +0 -129
  795. package/src/dispatch/__tests__/loadout-translation.test.ts +0 -141
  796. package/src/dispatch/__tests__/mail-inbound-consumer.integration.test.ts +0 -519
  797. package/src/dispatch/__tests__/mail-inbound-consumer.test.ts +0 -800
  798. package/src/dispatch/__tests__/mail-inbound-reuse-consumer.test.ts +0 -575
  799. package/src/dispatch/__tests__/permission-evaluator.test.ts +0 -196
  800. package/src/dispatch/__tests__/permission-overlay.test.ts +0 -56
  801. package/src/dispatch/__tests__/permissions-handler.test.ts +0 -168
  802. package/src/dispatch/__tests__/spawn-agent-handler.test.ts +0 -282
  803. package/src/dispatch/loadout-translation.ts +0 -138
  804. package/src/dispatch/mail-inbound-consumer.ts +0 -560
  805. package/src/dispatch/mail-inbound-reuse-consumer.ts +0 -479
  806. package/src/dispatch/permission-evaluator.ts +0 -191
  807. package/src/dispatch/permission-overlay.ts +0 -89
  808. package/src/dispatch/permissions-handler.ts +0 -112
  809. package/src/dispatch/spawn-agent-handler.ts +0 -160
  810. package/src/index.ts +0 -117
  811. package/src/integrations/__tests__/context-builder.test.ts +0 -218
  812. package/src/integrations/__tests__/sessionlog.test.ts +0 -498
  813. package/src/integrations/__tests__/skilltree.test.ts +0 -136
  814. package/src/integrations/context-builder.ts +0 -280
  815. package/src/integrations/sessionlog.ts +0 -194
  816. package/src/integrations/skilltree.ts +0 -184
  817. package/src/lifecycle/__tests__/cascade-consolidation.test.ts +0 -240
  818. package/src/lifecycle/__tests__/handlers-v2.test.ts +0 -565
  819. package/src/lifecycle/cascade.ts +0 -335
  820. package/src/lifecycle/cleanup.ts +0 -373
  821. package/src/lifecycle/handlers-v2.ts +0 -508
  822. package/src/lifecycle/index.ts +0 -76
  823. package/src/lifecycle/types.ts +0 -260
  824. package/src/map/__tests__/cascade-bridge.test.ts +0 -229
  825. package/src/map/__tests__/cascade-diff-server.test.ts +0 -434
  826. package/src/map/__tests__/emit-event.test.ts +0 -71
  827. package/src/map/__tests__/lifecycle-bridge.test.ts +0 -430
  828. package/src/map/__tests__/mail-bridge.test.ts +0 -321
  829. package/src/map/__tests__/permission-forwarding.test.ts +0 -143
  830. package/src/map/__tests__/sidecar-diff-install-smoke.test.ts +0 -90
  831. package/src/map/__tests__/sidecar-integration.test.ts +0 -190
  832. package/src/map/__tests__/task-bridge.test.ts +0 -153
  833. package/src/map/__tests__/trajectory-reporter.test.ts +0 -173
  834. package/src/map/acp-bridge.ts +0 -293
  835. package/src/map/cascade-action-handler.ts +0 -205
  836. package/src/map/cascade-bridge.ts +0 -339
  837. package/src/map/cascade-diff-server.ts +0 -404
  838. package/src/map/cc-swarm-hooks.ts +0 -242
  839. package/src/map/coordination-handler.ts +0 -232
  840. package/src/map/index.ts +0 -18
  841. package/src/map/lifecycle-bridge.ts +0 -236
  842. package/src/map/mail-bridge.ts +0 -263
  843. package/src/map/repo-workspace.ts +0 -82
  844. package/src/map/server.ts +0 -758
  845. package/src/map/sidecar.ts +0 -826
  846. package/src/map/task-bridge.ts +0 -89
  847. package/src/map/trajectory-reporter.ts +0 -124
  848. package/src/map/types.ts +0 -304
  849. package/src/mcp/__tests__/mcp-server-v2.test.ts +0 -236
  850. package/src/mcp/index.ts +0 -6
  851. package/src/mcp/mcp-server-v2.ts +0 -485
  852. package/src/mcp/tools/done-v2.ts +0 -213
  853. package/src/mcp/types.ts +0 -432
  854. package/src/metrics/__tests__/metrics.test.ts +0 -205
  855. package/src/metrics/index.ts +0 -13
  856. package/src/metrics/metrics.ts +0 -151
  857. package/src/metrics/types.ts +0 -63
  858. package/src/roles/__tests__/config-loader.test.ts +0 -540
  859. package/src/roles/builtin/coordinator.ts +0 -75
  860. package/src/roles/builtin/generic.ts +0 -39
  861. package/src/roles/builtin/index.ts +0 -51
  862. package/src/roles/builtin/integrator.ts +0 -62
  863. package/src/roles/builtin/monitor.ts +0 -65
  864. package/src/roles/builtin/worker.ts +0 -134
  865. package/src/roles/capabilities.ts +0 -257
  866. package/src/roles/config-loader.ts +0 -405
  867. package/src/roles/index.ts +0 -141
  868. package/src/roles/registry.ts +0 -713
  869. package/src/roles/types.ts +0 -344
  870. package/src/store/index.ts +0 -8
  871. package/src/store/types/agents.ts +0 -69
  872. package/src/store/types/events.ts +0 -91
  873. package/src/store/types/index.ts +0 -9
  874. package/src/store/types/messages.ts +0 -32
  875. package/src/store/types/primitives.ts +0 -9
  876. package/src/store/types/tasks.ts +0 -124
  877. package/src/teams/__tests__/team-manager-v2.test.ts +0 -425
  878. package/src/teams/__tests__/team-runtime-v2.test.ts +0 -402
  879. package/src/teams/index.ts +0 -29
  880. package/src/teams/seed-defaults.ts +0 -83
  881. package/src/teams/team-loader.ts +0 -476
  882. package/src/teams/team-manager-v2.ts +0 -343
  883. package/src/teams/team-runtime-v2.ts +0 -943
  884. package/src/teams/types.ts +0 -276
  885. package/src/trigger/__tests__/cron-service.test.ts +0 -548
  886. package/src/trigger/__tests__/scheduler.test.ts +0 -371
  887. package/src/trigger/__tests__/system-event-queue.test.ts +0 -147
  888. package/src/trigger/__tests__/trigger-system-v2.test.ts +0 -257
  889. package/src/trigger/__tests__/wake-manager.test.ts +0 -356
  890. package/src/trigger/__tests__/webhook-handler.test.ts +0 -567
  891. package/src/trigger/index.ts +0 -110
  892. package/src/trigger/queue/index.ts +0 -21
  893. package/src/trigger/queue/system-event-queue.ts +0 -232
  894. package/src/trigger/queue/types.ts +0 -149
  895. package/src/trigger/sources/cron/cron-service.ts +0 -499
  896. package/src/trigger/sources/cron/index.ts +0 -41
  897. package/src/trigger/sources/cron/scheduler.ts +0 -344
  898. package/src/trigger/sources/cron/types.ts +0 -333
  899. package/src/trigger/sources/index.ts +0 -10
  900. package/src/trigger/sources/webhook/index.ts +0 -25
  901. package/src/trigger/sources/webhook/types.ts +0 -205
  902. package/src/trigger/sources/webhook/webhook-handler.ts +0 -410
  903. package/src/trigger/strategies/ai-router.ts +0 -170
  904. package/src/trigger/trigger-system-v2.ts +0 -536
  905. package/src/trigger/types.ts +0 -228
  906. package/src/trigger/wake/index.ts +0 -22
  907. package/src/trigger/wake/types.ts +0 -162
  908. package/src/trigger/wake/wake-manager.ts +0 -390
  909. package/src/workspace/__tests__/git-cascade-adapter.test.ts +0 -563
  910. package/src/workspace/__tests__/land-dispatch.test.ts +0 -214
  911. package/src/workspace/__tests__/self-driving-yaml.test.ts +0 -122
  912. package/src/workspace/__tests__/shared-worktree-refcount.test.ts +0 -154
  913. package/src/workspace/__tests__/standalone-mode.test.ts +0 -118
  914. package/src/workspace/__tests__/workspace-manager-v3.test.ts +0 -245
  915. package/src/workspace/__tests__/yaml-schema.test.ts +0 -210
  916. package/src/workspace/config.ts +0 -165
  917. package/src/workspace/git-cascade-adapter.ts +0 -1213
  918. package/src/workspace/index.ts +0 -110
  919. package/src/workspace/landing/__tests__/strategies.test.ts +0 -184
  920. package/src/workspace/landing/direct-push.ts +0 -91
  921. package/src/workspace/landing/index.ts +0 -40
  922. package/src/workspace/landing/merge-to-parent.ts +0 -229
  923. package/src/workspace/landing/optimistic-push.ts +0 -36
  924. package/src/workspace/landing/queue-to-branch.ts +0 -108
  925. package/src/workspace/merge-queue/__tests__/conflict-resolution-git.e2e.test.ts +0 -641
  926. package/src/workspace/merge-queue/__tests__/conflict-resolution.test.ts +0 -707
  927. package/src/workspace/merge-queue/__tests__/merge-queue-concurrent.test.ts +0 -628
  928. package/src/workspace/merge-queue/__tests__/merge-queue-edge-cases.test.ts +0 -1217
  929. package/src/workspace/merge-queue/__tests__/merge-queue.test.ts +0 -506
  930. package/src/workspace/merge-queue/__tests__/real-git-operations.e2e.test.ts +0 -556
  931. package/src/workspace/merge-queue/__tests__/resolver-flow.test.ts +0 -472
  932. package/src/workspace/merge-queue/index.ts +0 -38
  933. package/src/workspace/merge-queue/merge-queue.ts +0 -585
  934. package/src/workspace/merge-queue/schema.ts +0 -98
  935. package/src/workspace/merge-queue/types.ts +0 -316
  936. package/src/workspace/pool/__tests__/worktree-pool.integration.test.ts +0 -1281
  937. package/src/workspace/pool/__tests__/worktree-pool.test.ts +0 -590
  938. package/src/workspace/pool/index.ts +0 -26
  939. package/src/workspace/pool/types.ts +0 -276
  940. package/src/workspace/pool/worktree-pool.ts +0 -659
  941. package/src/workspace/recovery/__tests__/auto-resolve-integration.test.ts +0 -127
  942. package/src/workspace/recovery/__tests__/spawn-resolver.test.ts +0 -139
  943. package/src/workspace/recovery/__tests__/strategies.test.ts +0 -145
  944. package/src/workspace/recovery/abandon.ts +0 -51
  945. package/src/workspace/recovery/auto-resolve.ts +0 -119
  946. package/src/workspace/recovery/defer.ts +0 -23
  947. package/src/workspace/recovery/escalate.ts +0 -30
  948. package/src/workspace/recovery/index.ts +0 -58
  949. package/src/workspace/recovery/spawn-resolver.ts +0 -152
  950. package/src/workspace/recovery/types.ts +0 -54
  951. package/src/workspace/strategies/index.ts +0 -18
  952. package/src/workspace/strategies/optimistic.ts +0 -139
  953. package/src/workspace/strategies/queue.ts +0 -81
  954. package/src/workspace/strategies/registry.ts +0 -89
  955. package/src/workspace/strategies/trunk.ts +0 -123
  956. package/src/workspace/strategies/types.ts +0 -145
  957. package/src/workspace/topology/__tests__/yaml-driven.test.ts +0 -345
  958. package/src/workspace/topology/index.ts +0 -18
  959. package/src/workspace/topology/no-workspace.ts +0 -39
  960. package/src/workspace/topology/types.ts +0 -116
  961. package/src/workspace/topology/yaml-driven.ts +0 -316
  962. package/src/workspace/types-v3.ts +0 -162
  963. package/src/workspace/types.ts +0 -541
  964. package/src/workspace/workspace-manager.ts +0 -1577
  965. package/src/workspace/yaml-schema.ts +0 -216
  966. package/test_fixtures/README.md +0 -425
  967. package/test_fixtures/fixtures/behaviors/coordinators.ts +0 -196
  968. package/test_fixtures/fixtures/behaviors/index.ts +0 -62
  969. package/test_fixtures/fixtures/behaviors/integrators.ts +0 -143
  970. package/test_fixtures/fixtures/behaviors/monitors.ts +0 -199
  971. package/test_fixtures/fixtures/behaviors/workers.ts +0 -348
  972. package/test_fixtures/fixtures/index.ts +0 -7
  973. package/test_fixtures/fixtures/projects/index.ts +0 -23
  974. package/test_fixtures/fixtures/projects/project-with-specs.ts +0 -44
  975. package/test_fixtures/fixtures/projects/typescript-project.ts +0 -200
  976. package/test_fixtures/fixtures/repos/index.ts +0 -6
  977. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -299
  978. package/test_fixtures/fixtures/repos/types.ts +0 -174
  979. package/test_fixtures/harness/assertions/harness-assertions.ts +0 -752
  980. package/test_fixtures/harness/assertions/index.ts +0 -8
  981. package/test_fixtures/harness/index.ts +0 -15
  982. package/test_fixtures/harness/simulator/agent-simulator.ts +0 -768
  983. package/test_fixtures/harness/simulator/behavior-executor.ts +0 -580
  984. package/test_fixtures/harness/simulator/index.ts +0 -14
  985. package/test_fixtures/harness/simulator/types.ts +0 -459
  986. package/test_fixtures/harness/test-harness.ts +0 -770
  987. package/test_fixtures/harness/timing/event-stepper.ts +0 -344
  988. package/test_fixtures/harness/timing/index.ts +0 -8
  989. package/tsconfig.json +0 -21
  990. package/vitest.config.ts +0 -30
  991. package/vitest.e2e.config.ts +0 -28
  992. package/vitest.setup.ts +0 -12
@@ -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
- }