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,943 +0,0 @@
1
- /**
2
- * Team Runtime V2
3
- *
4
- * Rewired to use InboxAdapter for signal filtering/emission validation
5
- * and TasksAdapter for scaling. Drops EventStore and MessageRouter dependencies.
6
- *
7
- * Key changes from V1:
8
- * - Signal filter + emission validator installed on InboxAdapter (adapter-side)
9
- * - No MERGE_REQUEST polling (handled by AgentManagerV2 terminate flow)
10
- * - No EventStore team_config event (subsystems don't need cross-process discovery)
11
- * - One inbox scope per team
12
- *
13
- * @module teams/team-runtime-v2
14
- */
15
-
16
- import type { AgentManager, SpawnInterceptor } from "../agent/agent-manager.js";
17
- import type { SpawnAgentOptions } from "../agent/types.js";
18
- import type { AgentId } from "../store/types/index.js";
19
- import type { RoleRegistry } from "../roles/types.js";
20
- import type {
21
- TeamManifest,
22
- MacroResolvedTemplate,
23
- McpServerEntry,
24
- PeerConnection,
25
- } from "./types.js";
26
- import type { IntegrationStrategy } from "../workspace/strategies/types.js";
27
- import type { InboxAdapter, SignalFilterFn, EmissionValidatorFn } from "../adapters/types.js";
28
- import type { TasksAdapter } from "../adapters/types.js";
29
- import type { WorkspaceManager } from "../workspace/types.js";
30
- import { WORKSPACE_CAPABILITIES } from "../roles/capabilities.js";
31
-
32
- // =============================================================================
33
- // Types
34
- // =============================================================================
35
-
36
- export interface TeamServicesV2 {
37
- agentManager: AgentManager;
38
- inboxAdapter: InboxAdapter;
39
- tasksAdapter: TasksAdapter;
40
- workspaceManager?: WorkspaceManager;
41
- }
42
-
43
- export interface TeamBootstrapResult {
44
- rootId: string;
45
- companionIds: string[];
46
- }
47
-
48
- // =============================================================================
49
- // Helper: Convert legacy manifest to resolved template
50
- // =============================================================================
51
-
52
- function manifestToResolved(manifest: TeamManifest): MacroResolvedTemplate {
53
- return {
54
- template: {
55
- manifest: {
56
- name: manifest.name,
57
- description: manifest.description,
58
- version: manifest.version,
59
- roles: manifest.roles,
60
- topology: manifest.topology,
61
- communication: manifest.communication,
62
- },
63
- roles: new Map(),
64
- prompts: new Map(),
65
- mcpServers: manifest._mcpServers,
66
- mcpProviders: new Map(),
67
- loadouts: new Map(),
68
- sourcePath: "",
69
- },
70
- resolvedRoles: manifest._resolvedRoles,
71
- macroAgent: manifest.macro_agent,
72
- };
73
- }
74
-
75
- function isMacroResolvedTemplate(
76
- input: TeamManifest | MacroResolvedTemplate
77
- ): input is MacroResolvedTemplate {
78
- return "template" in input && "resolvedRoles" in input;
79
- }
80
-
81
- // =============================================================================
82
- // TeamRuntimeV2
83
- // =============================================================================
84
-
85
- export class TeamRuntimeV2 {
86
- private rootAgentId?: string;
87
- private companionAgentIds: string[] = [];
88
- private roleRegistry: RoleRegistry;
89
- private lifecycleUnsubscribe?: () => void;
90
- private integrationStrategy?: IntegrationStrategy;
91
- private scalingTimer?: ReturnType<typeof setInterval>;
92
- private lastScaleUpTime = 0;
93
- private teamStreamId?: string;
94
-
95
- /** The resolved template */
96
- private readonly resolved: MacroResolvedTemplate;
97
-
98
- /** Legacy loaded prompts map */
99
- private readonly loadedPrompts: Map<string, string>;
100
-
101
- /** Role name → spawned agent ID */
102
- private roleAgentMap = new Map<string, AgentId>();
103
-
104
- /** Per-agent signal filters from peer connections. Key: "fromAgentId→toAgentId" */
105
- private peerSignalFilters = new Map<string, string[]>();
106
-
107
- /** Agent ID → role name */
108
- private agentRoleMap = new Map<AgentId, string>();
109
-
110
- /** Pre-computed per-role allowed signals */
111
- private roleAllowedSignals = new Map<string, Set<string> | "all">();
112
-
113
- /** Pending peer routes for deferred wiring */
114
- private pendingPeerRoutes: PeerConnection[] = [];
115
-
116
- /** Lifecycle unsubscribe for deferred peer wiring */
117
- private peerWiringUnsubscribe?: () => void;
118
-
119
- constructor(
120
- input: TeamManifest | MacroResolvedTemplate,
121
- private readonly services: TeamServicesV2
122
- ) {
123
- this.resolved = isMacroResolvedTemplate(input)
124
- ? input
125
- : manifestToResolved(input);
126
-
127
- this.loadedPrompts = !isMacroResolvedTemplate(input)
128
- ? input._loadedPrompts
129
- : new Map();
130
-
131
- this.roleRegistry = services.agentManager.getRoleRegistry();
132
- }
133
-
134
- // Convenience accessors
135
- private get manifest() {
136
- return this.resolved.template.manifest;
137
- }
138
-
139
- private get communication() {
140
- return (this.manifest.communication ?? {}) as NonNullable<typeof this.manifest.communication>;
141
- }
142
-
143
- // ─────────────────────────────────────────────────────────────
144
- // Initialization
145
- // ─────────────────────────────────────────────────────────────
146
-
147
- /**
148
- * Wire team configuration: register roles, instantiate integration strategy.
149
- *
150
- * Drops EventStore team_config event — subsystems don't need cross-process
151
- * discovery since messaging is in agent-inbox and tasks in opentasks.
152
- */
153
- async initialize(_options?: { teamInstanceId?: string }): Promise<void> {
154
- // 1. Register team roles into RoleRegistry
155
- for (const [, resolved] of this.resolved.resolvedRoles) {
156
- const rd = resolved.roleDefinition;
157
- const existing = this.roleRegistry.getRole(rd.name);
158
- if (existing) {
159
- const existingCaps = [...existing.capabilities].sort();
160
- const newCaps = [...rd.capabilities].sort();
161
- if (
162
- existingCaps.length !== newCaps.length ||
163
- existingCaps.some((c, i) => c !== newCaps[i])
164
- ) {
165
- console.warn(
166
- `[TeamRuntimeV2] Role '${rd.name}' conflict: team '${this.manifest.name}' ` +
167
- `re-registers with different capabilities.`
168
- );
169
- }
170
- }
171
- this.roleRegistry.registerRole(rd);
172
- }
173
-
174
- // 2. Instantiate integration strategy
175
- try {
176
- const { defaultStrategyRegistry } = await import(
177
- "../workspace/strategies/registry.js"
178
- );
179
- const strategyName =
180
- this.resolved.macroAgent.integration?.strategy ?? "queue";
181
- const strategyConfig =
182
- (this.resolved.macroAgent.integration?.config as Record<string, unknown>) ?? {};
183
- this.integrationStrategy = defaultStrategyRegistry.get(
184
- strategyName,
185
- strategyConfig
186
- );
187
- if (this.integrationStrategy.initialize) {
188
- await this.integrationStrategy.initialize();
189
- }
190
-
191
- // Wire merge queue to queue strategy
192
- if (
193
- this.services.workspaceManager &&
194
- strategyName === "queue" &&
195
- "setMergeQueue" in this.integrationStrategy
196
- ) {
197
- const mergeQueue = this.services.workspaceManager.getMergeQueue();
198
- (
199
- this.integrationStrategy as {
200
- setMergeQueue(q: typeof mergeQueue): void;
201
- }
202
- ).setMergeQueue(mergeQueue);
203
- }
204
- } catch {
205
- // Strategy instantiation is best-effort
206
- }
207
- }
208
-
209
- // ─────────────────────────────────────────────────────────────
210
- // Bootstrap
211
- // ─────────────────────────────────────────────────────────────
212
-
213
- /**
214
- * Spawn root and companion agents, build role mappings,
215
- * compute signal filters.
216
- *
217
- * Drops MessageRouter peer wiring — agent-inbox handles message delivery.
218
- * Peer signal filters are still computed for adapter-side enforcement.
219
- */
220
- async bootstrap(): Promise<TeamBootstrapResult> {
221
- const { agentManager } = this.services;
222
- const { topology } = this.manifest;
223
-
224
- // 1. Spawn root agent (scope = team name)
225
- const rootPrompt = this.getPromptForTopologyNode(topology.root);
226
- const root = await agentManager.spawn({
227
- task: rootPrompt
228
- ? `[${this.manifest.name}] ${topology.root.role}`
229
- : `Team ${this.manifest.name} root: ${topology.root.role}`,
230
- parent: null,
231
- role: topology.root.role,
232
- config: {
233
- model: topology.root.config?.model,
234
- },
235
- customPrompt: rootPrompt,
236
- interactionPatterns: this.getInteractionPatterns(),
237
- team_instance: this.manifest.name, // scope = team name
238
- });
239
- this.rootAgentId = root.id;
240
-
241
- // 1b. Set up workspace integration
242
- this.setupWorkspaceIntegration(root.id as AgentId);
243
-
244
- // 2. Spawn companions
245
- const companionIds: string[] = [];
246
- for (const companion of topology.companions ?? []) {
247
- const companionPrompt = this.getPromptForTopologyNode(companion);
248
- const agent = await agentManager.spawn({
249
- task: `[${this.manifest.name}] ${companion.role}`,
250
- parent: null,
251
- role: companion.role,
252
- config: {
253
- model: companion.config?.model,
254
- },
255
- customPrompt: companionPrompt,
256
- interactionPatterns: this.getInteractionPatterns(),
257
- team_instance: this.manifest.name,
258
- });
259
- companionIds.push(agent.id);
260
- }
261
- this.companionAgentIds = companionIds;
262
-
263
- // 3. Build role↔agent mappings
264
- this.roleAgentMap.set(topology.root.role, root.id as AgentId);
265
- this.agentRoleMap.set(root.id as AgentId, topology.root.role);
266
- for (let i = 0; i < (topology.companions ?? []).length; i++) {
267
- const role = topology.companions![i].role;
268
- this.roleAgentMap.set(role, companionIds[i] as AgentId);
269
- this.agentRoleMap.set(companionIds[i] as AgentId, role);
270
- }
271
-
272
- // 4. Compute peer signal filters (for adapter-side enforcement)
273
- this.computePeerSignalFilters();
274
-
275
- // 5. Pre-compute role allowed signals
276
- this.computeRoleAllowedSignals();
277
-
278
- // 6. Continuation monitoring
279
- this.monitorContinuations();
280
-
281
- // 7. Auto-scaling
282
- this.monitorScaling();
283
-
284
- return { rootId: root.id, companionIds };
285
- }
286
-
287
- // ─────────────────────────────────────────────────────────────
288
- // Teardown
289
- // ─────────────────────────────────────────────────────────────
290
-
291
- async teardown(): Promise<void> {
292
- if (this.lifecycleUnsubscribe) {
293
- this.lifecycleUnsubscribe();
294
- this.lifecycleUnsubscribe = undefined;
295
- }
296
- if (this.peerWiringUnsubscribe) {
297
- this.peerWiringUnsubscribe();
298
- this.peerWiringUnsubscribe = undefined;
299
- }
300
- if (this.scalingTimer) {
301
- clearInterval(this.scalingTimer);
302
- this.scalingTimer = undefined;
303
- }
304
- if (this.integrationStrategy?.close) {
305
- try {
306
- await this.integrationStrategy.close();
307
- } catch {
308
- // Best-effort
309
- }
310
- }
311
- }
312
-
313
- // ─────────────────────────────────────────────────────────────
314
- // Getters
315
- // ─────────────────────────────────────────────────────────────
316
-
317
- getTaskMode(): "push" | "pull" {
318
- return this.resolved.macroAgent.task_assignment?.mode ?? "push";
319
- }
320
-
321
- getStrategyName(): string {
322
- return this.resolved.macroAgent.integration?.strategy ?? "queue";
323
- }
324
-
325
- getManifest(): TeamManifest {
326
- return {
327
- ...this.manifest,
328
- description: this.manifest.description ?? "",
329
- communication: this.communication,
330
- macro_agent: this.resolved.macroAgent,
331
- _resolvedRoles: this.resolved.resolvedRoles,
332
- _loadedPrompts: this.loadedPrompts,
333
- _mcpServers: this.resolved.template.mcpServers,
334
- } as TeamManifest;
335
- }
336
-
337
- getResolvedTemplate(): MacroResolvedTemplate {
338
- return this.resolved;
339
- }
340
-
341
- getRootAgentId(): string | undefined {
342
- return this.rootAgentId;
343
- }
344
-
345
- getCompanionAgentIds(): string[] {
346
- return [...this.companionAgentIds];
347
- }
348
-
349
- getIntegrationStrategy(): IntegrationStrategy | undefined {
350
- return this.integrationStrategy;
351
- }
352
-
353
- getTeamStreamId(): string | undefined {
354
- return this.teamStreamId;
355
- }
356
-
357
- getPeerSignalFilters(): ReadonlyMap<string, string[]> {
358
- return this.peerSignalFilters;
359
- }
360
-
361
- getAgentRoleMap(): ReadonlyMap<AgentId, string> {
362
- return this.agentRoleMap;
363
- }
364
-
365
- /**
366
- * Register an agent's role mapping (dynamic spawn tracking).
367
- *
368
- * NOTE: roleAgentMap is 1:1 (last writer wins). This is fine for bootstrap
369
- * agents (one per role) and peer route wiring. Dynamic workers with the
370
- * same role will overwrite each other here, but that's acceptable because
371
- * dynamic lookup uses agentRoleMap (agent→role) not roleAgentMap (role→agent).
372
- * If multi-instance role→agent resolution is needed in the future, change
373
- * roleAgentMap to Map<string, Set<AgentId>>.
374
- */
375
- registerAgent(agentId: AgentId, roleName: string): void {
376
- this.agentRoleMap.set(agentId, roleName);
377
- this.roleAgentMap.set(roleName, agentId);
378
- }
379
-
380
- hasAgent(agentId: string): boolean {
381
- return this.agentRoleMap.has(agentId as AgentId);
382
- }
383
-
384
- /** Get the team's inbox scope (= team name) */
385
- getScope(): string {
386
- return this.manifest.name;
387
- }
388
-
389
- // ─────────────────────────────────────────────────────────────
390
- // Signal Filter + Emission Validator (adapter-side)
391
- // ─────────────────────────────────────────────────────────────
392
-
393
- /**
394
- * Create a signal filter for the InboxAdapter.
395
- *
396
- * Same logic as V1 but returns a SignalFilterFn (adapter type)
397
- * instead of a MessageRouter SignalFilter.
398
- */
399
- createSignalFilter(): SignalFilterFn {
400
- return (from: string, to: string, message) => {
401
- // Extract signal from message content
402
- const signal = this.extractSignal(message);
403
- if (!signal) return true; // No signal → allow
404
-
405
- // Check peer connection filter (directional: from→to)
406
- const peerFilter = this.peerSignalFilters.get(`${from}→${to}`);
407
- if (peerFilter) {
408
- return peerFilter.includes(signal);
409
- }
410
-
411
- // Check channel subscription filter for recipient's role
412
- const recipientRole = this.agentRoleMap.get(to as AgentId);
413
- if (recipientRole) {
414
- const allowed = this.roleAllowedSignals.get(recipientRole);
415
- if (allowed && allowed !== "all") {
416
- return allowed.has(signal);
417
- }
418
- }
419
-
420
- return true; // No filter → allow
421
- };
422
- }
423
-
424
- /**
425
- * Create an emission validator for the InboxAdapter.
426
- *
427
- * Returns a rejection reason string (or null to allow).
428
- */
429
- createEmissionValidator(): EmissionValidatorFn {
430
- const emissions = this.communication.emissions;
431
- const enforcement = this.communication.enforcement ?? "permissive";
432
-
433
- if (!emissions || Object.keys(emissions).length === 0) {
434
- return () => null; // No emissions config → allow all
435
- }
436
-
437
- return (from: string, message) => {
438
- const signal = this.extractSignal(message);
439
- if (!signal) return null; // No signal → allow
440
-
441
- const role = this.agentRoleMap.get(from as AgentId);
442
- if (!role) return null; // Not a team agent → allow
443
-
444
- const allowedSignals = emissions[role];
445
- if (!allowedSignals) return null; // No restrictions for this role
446
-
447
- if (allowedSignals.includes(signal)) return null; // Allowed
448
-
449
- const reason = `Agent '${from}' (role: ${role}) emitted disallowed signal '${signal}'. ` +
450
- `Allowed: [${allowedSignals.join(", ")}]`;
451
-
452
- if (enforcement === "strict") return reason;
453
- if (enforcement === "permissive") {
454
- console.warn(`[TeamRuntimeV2] ${reason}`);
455
- return null; // Warn but allow
456
- }
457
- return null; // audit → allow with logging
458
- };
459
- }
460
-
461
- /**
462
- * Install signal filter and emission validator on the InboxAdapter.
463
- *
464
- * Uses addSignalFilter/addEmissionValidator with team name as ID
465
- * so multiple teams can coexist without overwriting each other.
466
- * Also installs spawn interceptor on the AgentManager.
467
- */
468
- installOnServices(): void {
469
- const { agentManager, inboxAdapter } = this.services;
470
-
471
- agentManager.setSpawnInterceptor(this.createSpawnInterceptor());
472
- inboxAdapter.addSignalFilter(this.manifest.name, this.createSignalFilter());
473
- inboxAdapter.addEmissionValidator(this.manifest.name, this.createEmissionValidator());
474
- }
475
-
476
- uninstallFromServices(): void {
477
- this.services.agentManager.setSpawnInterceptor(null);
478
- this.services.inboxAdapter.removeSignalFilter(this.manifest.name);
479
- this.services.inboxAdapter.removeEmissionValidator(this.manifest.name);
480
- }
481
-
482
- // ─────────────────────────────────────────────────────────────
483
- // Spawn Interceptor
484
- // ─────────────────────────────────────────────────────────────
485
-
486
- createSpawnInterceptor(): SpawnInterceptor {
487
- return (options: SpawnAgentOptions): SpawnAgentOptions => {
488
- const roleName = options.role;
489
- if (!roleName) return options;
490
-
491
- const resolved = this.resolved.resolvedRoles.get(roleName);
492
- if (!resolved) return options;
493
-
494
- const teamTopics = this.getTopicsForRole(roleName);
495
- const teamMcpServers = this.getMcpServersForRole(roleName);
496
- const teamPrompt = this.getPromptForRole(roleName);
497
-
498
- const teamEnv: Record<string, string> = {
499
- MACRO_TEAM_NAME: this.manifest.name,
500
- MACRO_TASK_MODE: this.getTaskMode(),
501
- };
502
- const strategyName = this.getStrategyName();
503
- if (strategyName) {
504
- teamEnv.MACRO_INTEGRATION_STRATEGY = strategyName;
505
- }
506
-
507
- // Workspace injection
508
- const capabilities = resolved.capabilities;
509
- let streamId = options.streamId;
510
- let streamConfig = options.streamConfig;
511
- let gitCascadeTaskId = options.gitCascadeTaskId;
512
-
513
- if (this.teamStreamId && capabilities) {
514
- if (capabilities.includes(WORKSPACE_CAPABILITIES.WORKTREE)) {
515
- streamId = streamId ?? this.teamStreamId;
516
- gitCascadeTaskId = gitCascadeTaskId ?? `worker-${Date.now()}`;
517
- } else if (capabilities.includes(WORKSPACE_CAPABILITIES.INTEGRATE)) {
518
- streamId = streamId ?? this.teamStreamId;
519
- }
520
- }
521
-
522
- return {
523
- ...options,
524
- streamId,
525
- streamConfig,
526
- gitCascadeTaskId,
527
- capabilities: capabilities ?? options.capabilities,
528
- // Set team scope on all team agents
529
- team_instance: options.team_instance ?? this.manifest.name,
530
- topics: [...(options.topics ?? []), ...teamTopics],
531
- config: {
532
- ...options.config,
533
- mcpServers: [
534
- ...(options.config?.mcpServers ?? []),
535
- ...teamMcpServers.map((s) => {
536
- // openteams' static McpServerEntry is stdio-only, but a
537
- // resolved loadout entry may carry a remote transport
538
- // (type/url/headers — see openteams McpProviderSpec). Pass
539
- // those through unchanged so http/sse loadout servers reach
540
- // the spawn conversion; otherwise emit the stdio shape.
541
- const remote = s as unknown as {
542
- type?: "stdio" | "http" | "sse";
543
- url?: string;
544
- headers?: Record<string, string>;
545
- };
546
- if (
547
- (remote.type === "http" || remote.type === "sse") &&
548
- remote.url
549
- ) {
550
- return {
551
- name: s.name,
552
- type: remote.type,
553
- url: remote.url,
554
- headers: remote.headers,
555
- };
556
- }
557
- return {
558
- name: s.name,
559
- command: s.command,
560
- args: s.args,
561
- env: s.env,
562
- };
563
- }),
564
- ],
565
- env: {
566
- ...options.config?.env,
567
- ...teamEnv,
568
- },
569
- },
570
- customPrompt: options.customPrompt ?? teamPrompt,
571
- interactionPatterns:
572
- options.interactionPatterns ?? this.getInteractionPatterns(),
573
- };
574
- };
575
- }
576
-
577
- // ─────────────────────────────────────────────────────────────
578
- // Communication Helpers
579
- // ─────────────────────────────────────────────────────────────
580
-
581
- private getTopicsForRole(roleName: string): string[] {
582
- const topics: string[] = [];
583
- const subs = this.communication.subscriptions?.[roleName] ?? [];
584
- for (const sub of subs) {
585
- if (!topics.includes(sub.channel)) {
586
- topics.push(sub.channel);
587
- }
588
- }
589
- return topics;
590
- }
591
-
592
- private getMcpServersForRole(roleName: string): McpServerEntry[] {
593
- return this.resolved.template.mcpServers.get(roleName) ?? [];
594
- }
595
-
596
- private getPromptForRole(roleName: string): string | undefined {
597
- const resolved = this.resolved.resolvedRoles.get(roleName);
598
- if (!resolved?.prompt) return undefined;
599
- return this.loadedPrompts.get(resolved.prompt);
600
- }
601
-
602
- private getPromptForTopologyNode(
603
- node: { role: string; prompt?: string }
604
- ): string | undefined {
605
- if (node.prompt) return this.loadedPrompts.get(node.prompt);
606
- return this.getPromptForRole(node.role);
607
- }
608
-
609
- private getInteractionPatterns(): string[] {
610
- const patterns: string[] = [];
611
- const taskMode = this.getTaskMode();
612
-
613
- if (taskMode === "pull") {
614
- const pullConfig = this.resolved.macroAgent.task_assignment?.pull;
615
- const idleTimeout = pullConfig?.idle_timeout_s ?? 300;
616
- patterns.push(`## Task Claiming
617
-
618
- You operate in PULL mode. After completing a task:
619
- 1. Call done() with your results
620
- 2. Call claim_task() to get your next task
621
- 3. If no tasks available, wait briefly and retry
622
- 4. After ${idleTimeout} seconds idle, call done() to exit gracefully
623
-
624
- Claim and execute independently — do not wait for instructions.`);
625
- }
626
-
627
- const strategy = this.getStrategyName();
628
- if (strategy === "trunk") {
629
- patterns.push(`## Integration
630
-
631
- Your changes are integrated via trunk-based development. When you call done(),
632
- your work is pushed directly to the integration branch. If there's a conflict,
633
- the system will rebase and retry automatically. Write small, focused changes
634
- to minimize conflict probability.`);
635
- } else if (strategy === "optimistic") {
636
- patterns.push(`## Integration
637
-
638
- Your changes are integrated optimistically. They are pushed immediately and
639
- validated asynchronously. If validation fails, a fixup task will be created.
640
- Focus on correctness — your changes go live immediately.`);
641
- }
642
-
643
- return patterns;
644
- }
645
-
646
- // ─────────────────────────────────────────────────────────────
647
- // Internal: Signal and peer filter computation
648
- // ─────────────────────────────────────────────────────────────
649
-
650
- /**
651
- * Extract signal name from a message. Looks at event-type messages
652
- * and thread tags for signal identification.
653
- */
654
- private extractSignal(message: { content?: any; metadata?: any }): string | undefined {
655
- const content = message.content;
656
- if (!content) return undefined;
657
-
658
- // Event messages carry signal in event field
659
- if (content.type === "event" && content.event) {
660
- return content.event;
661
- }
662
-
663
- // Check metadata for signal field
664
- if (message.metadata?.signal) {
665
- return message.metadata.signal as string;
666
- }
667
-
668
- return undefined;
669
- }
670
-
671
- /**
672
- * Compute peer signal filters from routing.peers config.
673
- * These are directional: from→to with specific allowed signals.
674
- */
675
- private computePeerSignalFilters(): void {
676
- const peers = this.communication.routing?.peers;
677
- if (!peers) return;
678
-
679
- for (const peer of peers) {
680
- const fromAgent = this.roleAgentMap.get(peer.from);
681
- const toAgent = this.roleAgentMap.get(peer.to);
682
-
683
- if (!fromAgent || !toAgent) {
684
- this.pendingPeerRoutes.push(peer);
685
- continue;
686
- }
687
-
688
- if (peer.signals && peer.signals.length > 0) {
689
- this.peerSignalFilters.set(`${fromAgent}→${toAgent}`, peer.signals);
690
- }
691
- }
692
-
693
- // Set up deferred wiring for peers not yet spawned
694
- if (this.pendingPeerRoutes.length > 0) {
695
- this.setupDeferredPeerWiring();
696
- }
697
- }
698
-
699
- private setupDeferredPeerWiring(): void {
700
- const { agentManager } = this.services;
701
-
702
- this.peerWiringUnsubscribe = agentManager.onLifecycleEvent((event) => {
703
- if (event.type !== "spawned") return;
704
-
705
- const remaining: PeerConnection[] = [];
706
- for (const peer of this.pendingPeerRoutes) {
707
- const fromAgent = this.roleAgentMap.get(peer.from);
708
- const toAgent = this.roleAgentMap.get(peer.to);
709
-
710
- if (fromAgent && toAgent) {
711
- if (peer.signals && peer.signals.length > 0) {
712
- this.peerSignalFilters.set(
713
- `${fromAgent}→${toAgent}`,
714
- peer.signals
715
- );
716
- }
717
- } else {
718
- remaining.push(peer);
719
- }
720
- }
721
- this.pendingPeerRoutes = remaining;
722
-
723
- if (remaining.length === 0 && this.peerWiringUnsubscribe) {
724
- this.peerWiringUnsubscribe();
725
- this.peerWiringUnsubscribe = undefined;
726
- }
727
- });
728
- }
729
-
730
- private computeRoleAllowedSignals(): void {
731
- this.roleAllowedSignals.clear();
732
-
733
- for (const [roleName, subs] of Object.entries(
734
- this.communication.subscriptions ?? {}
735
- )) {
736
- let allowed: Set<string> | "all" = new Set<string>();
737
-
738
- for (const sub of subs) {
739
- if (!sub.signals || sub.signals.length === 0) {
740
- allowed = "all";
741
- break;
742
- }
743
- for (const sig of sub.signals) {
744
- (allowed as Set<string>).add(sig);
745
- }
746
- }
747
-
748
- this.roleAllowedSignals.set(roleName, allowed);
749
- }
750
- }
751
-
752
- // ─────────────────────────────────────────────────────────────
753
- // Continuation Monitoring
754
- // ─────────────────────────────────────────────────────────────
755
-
756
- private monitorContinuations(): void {
757
- const lifecycleConfig = this.resolved.macroAgent.lifecycle;
758
- if (!lifecycleConfig?.continuations?.enabled) return;
759
-
760
- const { agentManager } = this.services;
761
- const monitoredAgents = new Set([
762
- this.rootAgentId,
763
- ...this.companionAgentIds,
764
- ]);
765
-
766
- this.lifecycleUnsubscribe = agentManager.onLifecycleEvent((event) => {
767
- if (event.type !== "stopped") return;
768
- if (!monitoredAgents.has(event.agent.id)) return;
769
-
770
- const reason = (event as { reason?: string }).reason;
771
- if (reason === "completed" || reason === "cancelled") return;
772
-
773
- setTimeout(async () => {
774
- try {
775
- const newAgent = await agentManager.continueAgent(event.agent.id);
776
- monitoredAgents.delete(event.agent.id);
777
- monitoredAgents.add(newAgent.id);
778
-
779
- if (event.agent.id === this.rootAgentId) {
780
- this.rootAgentId = newAgent.id;
781
- } else {
782
- const idx = this.companionAgentIds.indexOf(event.agent.id);
783
- if (idx >= 0) this.companionAgentIds[idx] = newAgent.id;
784
- }
785
- } catch {
786
- // Failed to continue
787
- }
788
- }, 1000);
789
- });
790
- }
791
-
792
- // ─────────────────────────────────────────────────────────────
793
- // Auto-Scaling (uses TasksAdapter instead of TaskBackend)
794
- // ─────────────────────────────────────────────────────────────
795
-
796
- private static readonly SCALE_COOLDOWN_MS = 10_000;
797
- private static readonly SCALE_CHECK_INTERVAL_MS = 5_000;
798
-
799
- private monitorScaling(): void {
800
- const scalingConfig = this.resolved.macroAgent.lifecycle?.scaling;
801
- if (!scalingConfig || scalingConfig.scale_on !== "task_queue_depth") return;
802
-
803
- const { tasksAdapter, agentManager } = this.services;
804
- if (!tasksAdapter.connected) return;
805
-
806
- const maxWorkers = scalingConfig.max_workers ?? Infinity;
807
-
808
- const workerRoleNames = new Set<string>();
809
- for (const [name, resolved] of this.resolved.resolvedRoles) {
810
- if (resolved.baseRole === "worker") {
811
- workerRoleNames.add(name);
812
- }
813
- }
814
- if (workerRoleNames.size === 0) return;
815
-
816
- const spawnRole = [...workerRoleNames][0];
817
-
818
- this.scalingTimer = setInterval(async () => {
819
- try {
820
- const claimable = await tasksAdapter.listClaimable();
821
- const pendingCount = claimable.length;
822
-
823
- const allAgents = agentManager.list({ state: "running" });
824
- let activeWorkers = 0;
825
- for (const agent of allAgents) {
826
- if (
827
- agent.role &&
828
- workerRoleNames.has(agent.role) &&
829
- this.agentRoleMap.has(agent.id as AgentId)
830
- ) {
831
- activeWorkers++;
832
- }
833
- }
834
-
835
- if (
836
- pendingCount > activeWorkers &&
837
- activeWorkers < maxWorkers
838
- ) {
839
- const now = Date.now();
840
- if (now - this.lastScaleUpTime < TeamRuntimeV2.SCALE_COOLDOWN_MS) {
841
- return;
842
- }
843
- if (!this.rootAgentId) return;
844
-
845
- try {
846
- await agentManager.spawn({
847
- task: `[${this.manifest.name}] auto-scaled ${spawnRole}`,
848
- role: spawnRole,
849
- parent: this.rootAgentId,
850
- });
851
- this.lastScaleUpTime = now;
852
- } catch {
853
- // Will retry next tick
854
- }
855
- }
856
- } catch {
857
- // Best-effort
858
- }
859
- }, TeamRuntimeV2.SCALE_CHECK_INTERVAL_MS);
860
-
861
- if (this.scalingTimer.unref) {
862
- this.scalingTimer.unref();
863
- }
864
- }
865
-
866
- // ─────────────────────────────────────────────────────────────
867
- // Workspace Integration (simplified — no merge request polling)
868
- // ─────────────────────────────────────────────────────────────
869
-
870
- private setupWorkspaceIntegration(rootAgentId: AgentId): void {
871
- const { workspaceManager } = this.services;
872
- if (!workspaceManager || !this.integrationStrategy) return;
873
-
874
- // V3 coexistence: if TeamManagerV2 has already wired a YamlDrivenTopology
875
- // from `macro_agent.workspace`, that policy owns the team root stream.
876
- // Don't create a second one via the legacy createIntegrationStream.
877
- const hasV3Topology =
878
- typeof (
879
- this.services.agentManager as {
880
- getTopologyPolicy?: () => unknown;
881
- }
882
- ).getTopologyPolicy === 'function';
883
- // AgentManager doesn't expose a getter today, so detect indirectly: a
884
- // V3-wired team has already created a stream owned by `team:<name>`.
885
- const existingTeamRoot = workspaceManager
886
- .listStreams({ ownerId: `team:${this.manifest.name}` } as never)
887
- .find((s: { name: string }) => s.name === this.manifest.name);
888
-
889
- if (existingTeamRoot) {
890
- this.teamStreamId = existingTeamRoot.id;
891
- return;
892
- }
893
-
894
- try {
895
- this.teamStreamId = workspaceManager.createIntegrationStream(
896
- rootAgentId,
897
- { name: this.manifest.name, forkFrom: "main" }
898
- );
899
- } catch {
900
- return; // Workspace isolation unavailable
901
- }
902
-
903
- // Subscribe to merge queue events — wake integrator on mr:submitted
904
- try {
905
- const mergeQueue = workspaceManager.getMergeQueue();
906
- if (mergeQueue?.onEvent) {
907
- mergeQueue.onEvent((event) => {
908
- if (event.type !== "mr:submitted") return;
909
-
910
- for (const [agentId, roleName] of this.agentRoleMap) {
911
- const resolved = this.resolved.resolvedRoles.get(roleName);
912
- const caps = resolved?.capabilities ?? [];
913
- if (caps.includes(WORKSPACE_CAPABILITIES.INTEGRATE)) {
914
- try {
915
- // prompt() returns AsyncIterable — drain in background (fire-and-forget)
916
- const iter = this.services.agentManager.prompt(
917
- agentId,
918
- `Merge request submitted. Process the merge queue.`
919
- );
920
- (async () => {
921
- try {
922
- for await (const _ of iter) { /* drain */ }
923
- } catch {
924
- // Best-effort wake — ignore errors
925
- }
926
- })();
927
- } catch {
928
- // Best-effort wake
929
- }
930
- break;
931
- }
932
- }
933
- });
934
- }
935
- } catch {
936
- // Merge queue not available
937
- }
938
-
939
- // NOTE: No merge request polling. AgentManagerV2.terminate() handles
940
- // merge request submission directly when a worker with a workspace
941
- // completes. This eliminates the 2-second EventStore polling loop.
942
- }
943
- }