macro-agent 0.2.4 → 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 (1002) 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 +189 -67
  37. package/dist/agent/agent-manager-v2.js.map +1 -1
  38. package/dist/agent/agent-manager.d.ts +17 -0
  39. package/dist/agent/agent-manager.d.ts.map +1 -1
  40. package/dist/agent/agent-manager.js.map +1 -1
  41. package/dist/agent/types.d.ts +21 -2
  42. package/dist/agent/types.d.ts.map +1 -1
  43. package/dist/agent/types.js.map +1 -1
  44. package/dist/agent/wake.d.ts +85 -0
  45. package/dist/agent/wake.d.ts.map +1 -0
  46. package/dist/agent/wake.js +278 -0
  47. package/dist/agent/wake.js.map +1 -0
  48. package/dist/api/server.d.ts.map +1 -1
  49. package/dist/api/server.js +41 -25
  50. package/dist/api/server.js.map +1 -1
  51. package/dist/api/types.d.ts +6 -0
  52. package/dist/api/types.d.ts.map +1 -1
  53. package/dist/auth/server-auth.d.ts +43 -0
  54. package/dist/auth/server-auth.d.ts.map +1 -0
  55. package/dist/auth/server-auth.js +80 -0
  56. package/dist/auth/server-auth.js.map +1 -0
  57. package/dist/auth/token.d.ts +4 -0
  58. package/dist/auth/token.d.ts.map +1 -1
  59. package/dist/auth/token.js +7 -6
  60. package/dist/auth/token.js.map +1 -1
  61. package/dist/boot-v2.d.ts +6 -3
  62. package/dist/boot-v2.d.ts.map +1 -1
  63. package/dist/boot-v2.js +44 -25
  64. package/dist/boot-v2.js.map +1 -1
  65. package/dist/cognitive/macro-agent-backend.d.ts.map +1 -1
  66. package/dist/cognitive/macro-agent-backend.js +37 -8
  67. package/dist/cognitive/macro-agent-backend.js.map +1 -1
  68. package/dist/cognitive/team-lifecycle.d.ts +82 -0
  69. package/dist/cognitive/team-lifecycle.d.ts.map +1 -0
  70. package/dist/cognitive/team-lifecycle.js +121 -0
  71. package/dist/cognitive/team-lifecycle.js.map +1 -0
  72. package/dist/cognitive/trajectory-extractor.d.ts +25 -0
  73. package/dist/cognitive/trajectory-extractor.d.ts.map +1 -0
  74. package/dist/cognitive/trajectory-extractor.js +134 -0
  75. package/dist/cognitive/trajectory-extractor.js.map +1 -0
  76. package/dist/cognitive/types.d.ts +24 -0
  77. package/dist/cognitive/types.d.ts.map +1 -1
  78. package/dist/control/control-server.d.ts.map +1 -1
  79. package/dist/control/control-server.js +10 -0
  80. package/dist/control/control-server.js.map +1 -1
  81. package/dist/dispatch/mail-inbound-consumer.d.ts.map +1 -1
  82. package/dist/dispatch/mail-inbound-consumer.js +43 -10
  83. package/dist/dispatch/mail-inbound-consumer.js.map +1 -1
  84. package/dist/index.d.ts +5 -1
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +6 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/lifecycle/handlers/generic.d.ts +27 -0
  89. package/dist/lifecycle/handlers/generic.d.ts.map +1 -0
  90. package/dist/lifecycle/handlers/generic.js +56 -0
  91. package/dist/lifecycle/handlers/generic.js.map +1 -0
  92. package/dist/lifecycle/handlers/index.d.ts +51 -0
  93. package/dist/lifecycle/handlers/index.d.ts.map +1 -0
  94. package/dist/lifecycle/handlers/index.js +110 -0
  95. package/dist/lifecycle/handlers/index.js.map +1 -0
  96. package/dist/lifecycle/handlers/integrator.d.ts +81 -0
  97. package/dist/lifecycle/handlers/integrator.d.ts.map +1 -0
  98. package/dist/lifecycle/handlers/integrator.js +451 -0
  99. package/dist/lifecycle/handlers/integrator.js.map +1 -0
  100. package/dist/lifecycle/handlers/monitor.d.ts +29 -0
  101. package/dist/lifecycle/handlers/monitor.d.ts.map +1 -0
  102. package/dist/lifecycle/handlers/monitor.js +79 -0
  103. package/dist/lifecycle/handlers/monitor.js.map +1 -0
  104. package/dist/lifecycle/handlers/worker.d.ts +56 -0
  105. package/dist/lifecycle/handlers/worker.d.ts.map +1 -0
  106. package/dist/lifecycle/handlers/worker.js +381 -0
  107. package/dist/lifecycle/handlers/worker.js.map +1 -0
  108. package/dist/lifecycle/handlers-v2.d.ts +0 -2
  109. package/dist/lifecycle/handlers-v2.d.ts.map +1 -1
  110. package/dist/lifecycle/handlers-v2.js +4 -55
  111. package/dist/lifecycle/handlers-v2.js.map +1 -1
  112. package/dist/mail/conversation-map.d.ts +33 -0
  113. package/dist/mail/conversation-map.d.ts.map +1 -0
  114. package/dist/mail/conversation-map.js +61 -0
  115. package/dist/mail/conversation-map.js.map +1 -0
  116. package/dist/mail/index.d.ts +11 -0
  117. package/dist/mail/index.d.ts.map +1 -0
  118. package/dist/mail/index.js +11 -0
  119. package/dist/mail/index.js.map +1 -0
  120. package/dist/mail/mail-service.d.ts +85 -0
  121. package/dist/mail/mail-service.d.ts.map +1 -0
  122. package/dist/mail/mail-service.js +121 -0
  123. package/dist/mail/mail-service.js.map +1 -0
  124. package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
  125. package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
  126. package/dist/mail/stores/eventstore-conversation-store.js +131 -0
  127. package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
  128. package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
  129. package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
  130. package/dist/mail/stores/eventstore-participant-store.js +145 -0
  131. package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
  132. package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
  133. package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
  134. package/dist/mail/stores/eventstore-thread-store.js +118 -0
  135. package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
  136. package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
  137. package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
  138. package/dist/mail/stores/eventstore-turn-store.js +153 -0
  139. package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
  140. package/dist/mail/stores/index.d.ts +12 -0
  141. package/dist/mail/stores/index.d.ts.map +1 -0
  142. package/dist/mail/stores/index.js +12 -0
  143. package/dist/mail/stores/index.js.map +1 -0
  144. package/dist/mail/stores/types.d.ts +146 -0
  145. package/dist/mail/stores/types.d.ts.map +1 -0
  146. package/dist/mail/stores/types.js +13 -0
  147. package/dist/mail/stores/types.js.map +1 -0
  148. package/dist/mail/turn-recorder.d.ts +30 -0
  149. package/dist/mail/turn-recorder.d.ts.map +1 -0
  150. package/dist/mail/turn-recorder.js +98 -0
  151. package/dist/mail/turn-recorder.js.map +1 -0
  152. package/dist/map/adapter/acp-over-map.d.ts +115 -0
  153. package/dist/map/adapter/acp-over-map.d.ts.map +1 -0
  154. package/dist/map/adapter/acp-over-map.js +1024 -0
  155. package/dist/map/adapter/acp-over-map.js.map +1 -0
  156. package/dist/map/adapter/connection-manager.d.ts +150 -0
  157. package/dist/map/adapter/connection-manager.d.ts.map +1 -0
  158. package/dist/map/adapter/connection-manager.js +207 -0
  159. package/dist/map/adapter/connection-manager.js.map +1 -0
  160. package/dist/map/adapter/event-log.d.ts +87 -0
  161. package/dist/map/adapter/event-log.d.ts.map +1 -0
  162. package/dist/map/adapter/event-log.js +122 -0
  163. package/dist/map/adapter/event-log.js.map +1 -0
  164. package/dist/map/adapter/event-translator.d.ts +85 -0
  165. package/dist/map/adapter/event-translator.d.ts.map +1 -0
  166. package/dist/map/adapter/event-translator.js +295 -0
  167. package/dist/map/adapter/event-translator.js.map +1 -0
  168. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  169. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  170. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  171. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  172. package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
  173. package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
  174. package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
  175. package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
  176. package/dist/map/adapter/extensions/cognitive.d.ts +27 -0
  177. package/dist/map/adapter/extensions/cognitive.d.ts.map +1 -0
  178. package/dist/map/adapter/extensions/cognitive.js +158 -0
  179. package/dist/map/adapter/extensions/cognitive.js.map +1 -0
  180. package/dist/map/adapter/extensions/index.d.ts +95 -0
  181. package/dist/map/adapter/extensions/index.d.ts.map +1 -0
  182. package/dist/map/adapter/extensions/index.js +228 -0
  183. package/dist/map/adapter/extensions/index.js.map +1 -0
  184. package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
  185. package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
  186. package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
  187. package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
  188. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  189. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  190. package/dist/map/adapter/extensions/resume.js +59 -0
  191. package/dist/map/adapter/extensions/resume.js.map +1 -0
  192. package/dist/map/adapter/extensions/streams.d.ts +95 -0
  193. package/dist/map/adapter/extensions/streams.d.ts.map +1 -0
  194. package/dist/map/adapter/extensions/streams.js +515 -0
  195. package/dist/map/adapter/extensions/streams.js.map +1 -0
  196. package/dist/map/adapter/extensions/task.d.ts +40 -0
  197. package/dist/map/adapter/extensions/task.d.ts.map +1 -0
  198. package/dist/map/adapter/extensions/task.js +197 -0
  199. package/dist/map/adapter/extensions/task.js.map +1 -0
  200. package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
  201. package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
  202. package/dist/map/adapter/extensions/update-metadata.js +67 -0
  203. package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
  204. package/dist/map/adapter/extensions/wake.d.ts +60 -0
  205. package/dist/map/adapter/extensions/wake.d.ts.map +1 -0
  206. package/dist/map/adapter/extensions/wake.js +144 -0
  207. package/dist/map/adapter/extensions/wake.js.map +1 -0
  208. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  209. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  210. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  211. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  212. package/dist/map/adapter/extensions/workspace.d.ts +57 -0
  213. package/dist/map/adapter/extensions/workspace.d.ts.map +1 -0
  214. package/dist/map/adapter/extensions/workspace.js +81 -0
  215. package/dist/map/adapter/extensions/workspace.js.map +1 -0
  216. package/dist/map/adapter/index.d.ts +20 -0
  217. package/dist/map/adapter/index.d.ts.map +1 -0
  218. package/dist/map/adapter/index.js +40 -0
  219. package/dist/map/adapter/index.js.map +1 -0
  220. package/dist/map/adapter/interface.d.ts +450 -0
  221. package/dist/map/adapter/interface.d.ts.map +1 -0
  222. package/dist/map/adapter/interface.js +24 -0
  223. package/dist/map/adapter/interface.js.map +1 -0
  224. package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
  225. package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
  226. package/dist/map/adapter/mail-handler-adapter.js +292 -0
  227. package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
  228. package/dist/map/adapter/map-adapter.d.ts +200 -0
  229. package/dist/map/adapter/map-adapter.d.ts.map +1 -0
  230. package/dist/map/adapter/map-adapter.js +1199 -0
  231. package/dist/map/adapter/map-adapter.js.map +1 -0
  232. package/dist/map/adapter/rpc-handler.d.ts +263 -0
  233. package/dist/map/adapter/rpc-handler.d.ts.map +1 -0
  234. package/dist/map/adapter/rpc-handler.js +365 -0
  235. package/dist/map/adapter/rpc-handler.js.map +1 -0
  236. package/dist/map/adapter/subscription-manager.d.ts +174 -0
  237. package/dist/map/adapter/subscription-manager.d.ts.map +1 -0
  238. package/dist/map/adapter/subscription-manager.js +248 -0
  239. package/dist/map/adapter/subscription-manager.js.map +1 -0
  240. package/dist/map/adapter/types.d.ts +194 -0
  241. package/dist/map/adapter/types.d.ts.map +1 -0
  242. package/dist/map/adapter/types.js +27 -0
  243. package/dist/map/adapter/types.js.map +1 -0
  244. package/dist/map/adapter/websocket-integration.d.ts +113 -0
  245. package/dist/map/adapter/websocket-integration.d.ts.map +1 -0
  246. package/dist/map/adapter/websocket-integration.js +134 -0
  247. package/dist/map/adapter/websocket-integration.js.map +1 -0
  248. package/dist/map/cascade-action-handler.d.ts.map +1 -1
  249. package/dist/map/cascade-action-handler.js +19 -5
  250. package/dist/map/cascade-action-handler.js.map +1 -1
  251. package/dist/map/federation/envelope.d.ts +98 -0
  252. package/dist/map/federation/envelope.d.ts.map +1 -0
  253. package/dist/map/federation/envelope.js +160 -0
  254. package/dist/map/federation/envelope.js.map +1 -0
  255. package/dist/map/federation/federation-handler.d.ts +50 -0
  256. package/dist/map/federation/federation-handler.d.ts.map +1 -0
  257. package/dist/map/federation/federation-handler.js +306 -0
  258. package/dist/map/federation/federation-handler.js.map +1 -0
  259. package/dist/map/federation/index.d.ts +14 -0
  260. package/dist/map/federation/index.d.ts.map +1 -0
  261. package/dist/map/federation/index.js +13 -0
  262. package/dist/map/federation/index.js.map +1 -0
  263. package/dist/map/federation/types.d.ts +239 -0
  264. package/dist/map/federation/types.d.ts.map +1 -0
  265. package/dist/map/federation/types.js +23 -0
  266. package/dist/map/federation/types.js.map +1 -0
  267. package/dist/map/mail-bridge.d.ts +7 -0
  268. package/dist/map/mail-bridge.d.ts.map +1 -1
  269. package/dist/map/mail-bridge.js +39 -9
  270. package/dist/map/mail-bridge.js.map +1 -1
  271. package/dist/map/server.d.ts.map +1 -1
  272. package/dist/map/server.js +17 -2
  273. package/dist/map/server.js.map +1 -1
  274. package/dist/map/types.d.ts +6 -0
  275. package/dist/map/types.d.ts.map +1 -1
  276. package/dist/mcp/map-client.d.ts +39 -0
  277. package/dist/mcp/map-client.d.ts.map +1 -0
  278. package/dist/mcp/map-client.js +129 -0
  279. package/dist/mcp/map-client.js.map +1 -0
  280. package/dist/mcp/mcp-server.d.ts +72 -0
  281. package/dist/mcp/mcp-server.d.ts.map +1 -0
  282. package/dist/mcp/mcp-server.js +1027 -0
  283. package/dist/mcp/mcp-server.js.map +1 -0
  284. package/dist/mcp/tools/claim_task.d.ts +35 -0
  285. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  286. package/dist/mcp/tools/claim_task.js +58 -0
  287. package/dist/mcp/tools/claim_task.js.map +1 -0
  288. package/dist/mcp/tools/done-v2.d.ts +0 -1
  289. package/dist/mcp/tools/done-v2.d.ts.map +1 -1
  290. package/dist/mcp/tools/done-v2.js +0 -1
  291. package/dist/mcp/tools/done-v2.js.map +1 -1
  292. package/dist/mcp/tools/done.d.ts +102 -0
  293. package/dist/mcp/tools/done.d.ts.map +1 -0
  294. package/dist/mcp/tools/done.js +253 -0
  295. package/dist/mcp/tools/done.js.map +1 -0
  296. package/dist/mcp/tools/inject_context.d.ts +61 -0
  297. package/dist/mcp/tools/inject_context.d.ts.map +1 -0
  298. package/dist/mcp/tools/inject_context.js +123 -0
  299. package/dist/mcp/tools/inject_context.js.map +1 -0
  300. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  301. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  302. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  303. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  304. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  305. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  306. package/dist/mcp/tools/unclaim_task.js +47 -0
  307. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  308. package/dist/mcp/tools/wait_for_activity.d.ts +60 -0
  309. package/dist/mcp/tools/wait_for_activity.d.ts.map +1 -0
  310. package/dist/mcp/tools/wait_for_activity.js +135 -0
  311. package/dist/mcp/tools/wait_for_activity.js.map +1 -0
  312. package/dist/monitor/health-check-service.d.ts +143 -0
  313. package/dist/monitor/health-check-service.d.ts.map +1 -0
  314. package/dist/monitor/health-check-service.js +240 -0
  315. package/dist/monitor/health-check-service.js.map +1 -0
  316. package/dist/monitor/index.d.ts +14 -0
  317. package/dist/monitor/index.d.ts.map +1 -0
  318. package/dist/monitor/index.js +14 -0
  319. package/dist/monitor/index.js.map +1 -0
  320. package/dist/monitor/stall-detector.d.ts +109 -0
  321. package/dist/monitor/stall-detector.d.ts.map +1 -0
  322. package/dist/monitor/stall-detector.js +152 -0
  323. package/dist/monitor/stall-detector.js.map +1 -0
  324. package/dist/peer/capability-manager.d.ts +56 -0
  325. package/dist/peer/capability-manager.d.ts.map +1 -0
  326. package/dist/peer/capability-manager.js +186 -0
  327. package/dist/peer/capability-manager.js.map +1 -0
  328. package/dist/peer/encapsulation-manager.d.ts +190 -0
  329. package/dist/peer/encapsulation-manager.d.ts.map +1 -0
  330. package/dist/peer/encapsulation-manager.js +486 -0
  331. package/dist/peer/encapsulation-manager.js.map +1 -0
  332. package/dist/peer/federation-manager.d.ts +223 -0
  333. package/dist/peer/federation-manager.d.ts.map +1 -0
  334. package/dist/peer/federation-manager.js +528 -0
  335. package/dist/peer/federation-manager.js.map +1 -0
  336. package/dist/peer/hierarchy-errors.d.ts +208 -0
  337. package/dist/peer/hierarchy-errors.d.ts.map +1 -0
  338. package/dist/peer/hierarchy-errors.js +268 -0
  339. package/dist/peer/hierarchy-errors.js.map +1 -0
  340. package/dist/peer/hierarchy-protocol.d.ts +159 -0
  341. package/dist/peer/hierarchy-protocol.d.ts.map +1 -0
  342. package/dist/peer/hierarchy-protocol.js +142 -0
  343. package/dist/peer/hierarchy-protocol.js.map +1 -0
  344. package/dist/peer/index.d.ts +15 -0
  345. package/dist/peer/index.d.ts.map +1 -0
  346. package/dist/peer/index.js +15 -0
  347. package/dist/peer/index.js.map +1 -0
  348. package/dist/peer/peer-manager.d.ts +99 -0
  349. package/dist/peer/peer-manager.d.ts.map +1 -0
  350. package/dist/peer/peer-manager.js +333 -0
  351. package/dist/peer/peer-manager.js.map +1 -0
  352. package/dist/peer/task-delegation.d.ts +189 -0
  353. package/dist/peer/task-delegation.d.ts.map +1 -0
  354. package/dist/peer/task-delegation.js +303 -0
  355. package/dist/peer/task-delegation.js.map +1 -0
  356. package/dist/peer/transports/index.d.ts +8 -0
  357. package/dist/peer/transports/index.d.ts.map +1 -0
  358. package/dist/peer/transports/index.js +8 -0
  359. package/dist/peer/transports/index.js.map +1 -0
  360. package/dist/peer/transports/local-transport.d.ts +56 -0
  361. package/dist/peer/transports/local-transport.d.ts.map +1 -0
  362. package/dist/peer/transports/local-transport.js +263 -0
  363. package/dist/peer/transports/local-transport.js.map +1 -0
  364. package/dist/peer/transports/websocket-transport.d.ts +86 -0
  365. package/dist/peer/transports/websocket-transport.d.ts.map +1 -0
  366. package/dist/peer/transports/websocket-transport.js +338 -0
  367. package/dist/peer/transports/websocket-transport.js.map +1 -0
  368. package/dist/peer/types.d.ts +268 -0
  369. package/dist/peer/types.d.ts.map +1 -0
  370. package/dist/peer/types.js +36 -0
  371. package/dist/peer/types.js.map +1 -0
  372. package/dist/router/address-resolver.d.ts +102 -0
  373. package/dist/router/address-resolver.d.ts.map +1 -0
  374. package/dist/router/address-resolver.js +198 -0
  375. package/dist/router/address-resolver.js.map +1 -0
  376. package/dist/router/broadcast.d.ts +53 -0
  377. package/dist/router/broadcast.d.ts.map +1 -0
  378. package/dist/router/broadcast.js +75 -0
  379. package/dist/router/broadcast.js.map +1 -0
  380. package/dist/router/channels.d.ts +148 -0
  381. package/dist/router/channels.d.ts.map +1 -0
  382. package/dist/router/channels.js +126 -0
  383. package/dist/router/channels.js.map +1 -0
  384. package/dist/router/index.d.ts +21 -0
  385. package/dist/router/index.d.ts.map +1 -0
  386. package/dist/router/index.js +18 -0
  387. package/dist/router/index.js.map +1 -0
  388. package/dist/router/message-router.d.ts +197 -0
  389. package/dist/router/message-router.d.ts.map +1 -0
  390. package/dist/router/message-router.js +903 -0
  391. package/dist/router/message-router.js.map +1 -0
  392. package/dist/router/message-types.d.ts +183 -0
  393. package/dist/router/message-types.d.ts.map +1 -0
  394. package/dist/router/message-types.js +79 -0
  395. package/dist/router/message-types.js.map +1 -0
  396. package/dist/router/role-resolver.d.ts +67 -0
  397. package/dist/router/role-resolver.d.ts.map +1 -0
  398. package/dist/router/role-resolver.js +106 -0
  399. package/dist/router/role-resolver.js.map +1 -0
  400. package/dist/router/signals.d.ts +253 -0
  401. package/dist/router/signals.d.ts.map +1 -0
  402. package/dist/router/signals.js +53 -0
  403. package/dist/router/signals.js.map +1 -0
  404. package/dist/router/types.d.ts +191 -0
  405. package/dist/router/types.d.ts.map +1 -0
  406. package/dist/router/types.js +34 -0
  407. package/dist/router/types.js.map +1 -0
  408. package/dist/router/wake.d.ts +111 -0
  409. package/dist/router/wake.d.ts.map +1 -0
  410. package/dist/router/wake.js +180 -0
  411. package/dist/router/wake.js.map +1 -0
  412. package/dist/server/combined-server.d.ts +95 -0
  413. package/dist/server/combined-server.d.ts.map +1 -0
  414. package/dist/server/combined-server.js +335 -0
  415. package/dist/server/combined-server.js.map +1 -0
  416. package/dist/steering/index.d.ts +11 -0
  417. package/dist/steering/index.d.ts.map +1 -0
  418. package/dist/steering/index.js +11 -0
  419. package/dist/steering/index.js.map +1 -0
  420. package/dist/steering/inject.d.ts +39 -0
  421. package/dist/steering/inject.d.ts.map +1 -0
  422. package/dist/steering/inject.js +197 -0
  423. package/dist/steering/inject.js.map +1 -0
  424. package/dist/steering/types.d.ts +100 -0
  425. package/dist/steering/types.d.ts.map +1 -0
  426. package/dist/steering/types.js +11 -0
  427. package/dist/steering/types.js.map +1 -0
  428. package/dist/store/backends/index.d.ts +11 -0
  429. package/dist/store/backends/index.d.ts.map +1 -0
  430. package/dist/store/backends/index.js +15 -0
  431. package/dist/store/backends/index.js.map +1 -0
  432. package/dist/store/backends/json-backend.d.ts +23 -0
  433. package/dist/store/backends/json-backend.d.ts.map +1 -0
  434. package/dist/store/backends/json-backend.js +220 -0
  435. package/dist/store/backends/json-backend.js.map +1 -0
  436. package/dist/store/backends/memory-backend.d.ts +12 -0
  437. package/dist/store/backends/memory-backend.d.ts.map +1 -0
  438. package/dist/store/backends/memory-backend.js +205 -0
  439. package/dist/store/backends/memory-backend.js.map +1 -0
  440. package/dist/store/backends/sqlite-backend.d.ts +27 -0
  441. package/dist/store/backends/sqlite-backend.d.ts.map +1 -0
  442. package/dist/store/backends/sqlite-backend.js +231 -0
  443. package/dist/store/backends/sqlite-backend.js.map +1 -0
  444. package/dist/store/backends/tinybase-backend.d.ts +22 -0
  445. package/dist/store/backends/tinybase-backend.d.ts.map +1 -0
  446. package/dist/store/backends/tinybase-backend.js +203 -0
  447. package/dist/store/backends/tinybase-backend.js.map +1 -0
  448. package/dist/store/backends/types.d.ts +175 -0
  449. package/dist/store/backends/types.d.ts.map +1 -0
  450. package/dist/store/backends/types.js +28 -0
  451. package/dist/store/backends/types.js.map +1 -0
  452. package/dist/store/event-store.d.ts +128 -0
  453. package/dist/store/event-store.d.ts.map +1 -0
  454. package/dist/store/event-store.js +1751 -0
  455. package/dist/store/event-store.js.map +1 -0
  456. package/dist/store/instance.d.ts +290 -0
  457. package/dist/store/instance.d.ts.map +1 -0
  458. package/dist/store/instance.js +363 -0
  459. package/dist/store/instance.js.map +1 -0
  460. package/dist/store/migrations.d.ts +41 -0
  461. package/dist/store/migrations.d.ts.map +1 -0
  462. package/dist/store/migrations.js +79 -0
  463. package/dist/store/migrations.js.map +1 -0
  464. package/dist/store/test-utils.d.ts +63 -0
  465. package/dist/store/test-utils.d.ts.map +1 -0
  466. package/dist/store/test-utils.js +63 -0
  467. package/dist/store/test-utils.js.map +1 -0
  468. package/dist/store/types/config.d.ts +16 -0
  469. package/dist/store/types/config.d.ts.map +1 -0
  470. package/dist/store/types/config.js +8 -0
  471. package/dist/store/types/config.js.map +1 -0
  472. package/dist/store/types/conversations.d.ts +91 -0
  473. package/dist/store/types/conversations.d.ts.map +1 -0
  474. package/dist/store/types/conversations.js +8 -0
  475. package/dist/store/types/conversations.js.map +1 -0
  476. package/dist/store/types/sessions.d.ts +44 -0
  477. package/dist/store/types/sessions.d.ts.map +1 -0
  478. package/dist/store/types/sessions.js +9 -0
  479. package/dist/store/types/sessions.js.map +1 -0
  480. package/dist/store/types.d.ts +115 -0
  481. package/dist/store/types.d.ts.map +1 -0
  482. package/dist/store/types.js +6 -0
  483. package/dist/store/types.js.map +1 -0
  484. package/dist/task/backend/index.d.ts +93 -0
  485. package/dist/task/backend/index.d.ts.map +1 -0
  486. package/dist/task/backend/index.js +178 -0
  487. package/dist/task/backend/index.js.map +1 -0
  488. package/dist/task/backend/memory.d.ts +70 -0
  489. package/dist/task/backend/memory.d.ts.map +1 -0
  490. package/dist/task/backend/memory.js +621 -0
  491. package/dist/task/backend/memory.js.map +1 -0
  492. package/dist/task/backend/opentasks/backend.d.ts +140 -0
  493. package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
  494. package/dist/task/backend/opentasks/backend.js +1023 -0
  495. package/dist/task/backend/opentasks/backend.js.map +1 -0
  496. package/dist/task/backend/opentasks/client.d.ts +337 -0
  497. package/dist/task/backend/opentasks/client.d.ts.map +1 -0
  498. package/dist/task/backend/opentasks/client.js +225 -0
  499. package/dist/task/backend/opentasks/client.js.map +1 -0
  500. package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
  501. package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
  502. package/dist/task/backend/opentasks/daemon-manager.js +195 -0
  503. package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
  504. package/dist/task/backend/opentasks/index.d.ts +21 -0
  505. package/dist/task/backend/opentasks/index.d.ts.map +1 -0
  506. package/dist/task/backend/opentasks/index.js +21 -0
  507. package/dist/task/backend/opentasks/index.js.map +1 -0
  508. package/dist/task/backend/opentasks/mapping.d.ts +48 -0
  509. package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
  510. package/dist/task/backend/opentasks/mapping.js +77 -0
  511. package/dist/task/backend/opentasks/mapping.js.map +1 -0
  512. package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts +54 -0
  513. package/dist/task/backend/sudocode/__tests__/integration/test-utils.d.ts.map +1 -0
  514. package/dist/task/backend/sudocode/__tests__/integration/test-utils.js +88 -0
  515. package/dist/task/backend/sudocode/__tests__/integration/test-utils.js.map +1 -0
  516. package/dist/task/backend/sudocode/backend.d.ts +155 -0
  517. package/dist/task/backend/sudocode/backend.d.ts.map +1 -0
  518. package/dist/task/backend/sudocode/backend.js +942 -0
  519. package/dist/task/backend/sudocode/backend.js.map +1 -0
  520. package/dist/task/backend/sudocode/client.d.ts +303 -0
  521. package/dist/task/backend/sudocode/client.d.ts.map +1 -0
  522. package/dist/task/backend/sudocode/client.js +101 -0
  523. package/dist/task/backend/sudocode/client.js.map +1 -0
  524. package/dist/task/backend/sudocode/index.d.ts +19 -0
  525. package/dist/task/backend/sudocode/index.d.ts.map +1 -0
  526. package/dist/task/backend/sudocode/index.js +17 -0
  527. package/dist/task/backend/sudocode/index.js.map +1 -0
  528. package/dist/task/backend/sudocode/mapping.d.ts +51 -0
  529. package/dist/task/backend/sudocode/mapping.d.ts.map +1 -0
  530. package/dist/task/backend/sudocode/mapping.js +86 -0
  531. package/dist/task/backend/sudocode/mapping.js.map +1 -0
  532. package/dist/task/backend/sudocode/server-client.d.ts +56 -0
  533. package/dist/task/backend/sudocode/server-client.d.ts.map +1 -0
  534. package/dist/task/backend/sudocode/server-client.js +367 -0
  535. package/dist/task/backend/sudocode/server-client.js.map +1 -0
  536. package/dist/task/backend/sudocode/standalone-client.d.ts +91 -0
  537. package/dist/task/backend/sudocode/standalone-client.d.ts.map +1 -0
  538. package/dist/task/backend/sudocode/standalone-client.js +476 -0
  539. package/dist/task/backend/sudocode/standalone-client.js.map +1 -0
  540. package/dist/task/backend/sudocode/sync-policy.d.ts +166 -0
  541. package/dist/task/backend/sudocode/sync-policy.d.ts.map +1 -0
  542. package/dist/task/backend/sudocode/sync-policy.js +221 -0
  543. package/dist/task/backend/sudocode/sync-policy.js.map +1 -0
  544. package/dist/task/backend/sudocode/tools.d.ts +87 -0
  545. package/dist/task/backend/sudocode/tools.d.ts.map +1 -0
  546. package/dist/task/backend/sudocode/tools.js +743 -0
  547. package/dist/task/backend/sudocode/tools.js.map +1 -0
  548. package/dist/task/backend/tool-provider.d.ts +56 -0
  549. package/dist/task/backend/tool-provider.d.ts.map +1 -0
  550. package/dist/task/backend/tool-provider.js +424 -0
  551. package/dist/task/backend/tool-provider.js.map +1 -0
  552. package/dist/task/backend/types.d.ts +297 -0
  553. package/dist/task/backend/types.d.ts.map +1 -0
  554. package/dist/task/backend/types.js +27 -0
  555. package/dist/task/backend/types.js.map +1 -0
  556. package/dist/task/backend/unified-tool-provider.d.ts +57 -0
  557. package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
  558. package/dist/task/backend/unified-tool-provider.js +623 -0
  559. package/dist/task/backend/unified-tool-provider.js.map +1 -0
  560. package/dist/task/index.d.ts +7 -0
  561. package/dist/task/index.d.ts.map +1 -0
  562. package/dist/task/index.js +7 -0
  563. package/dist/task/index.js.map +1 -0
  564. package/dist/task/retry-policy.d.ts +89 -0
  565. package/dist/task/retry-policy.d.ts.map +1 -0
  566. package/dist/task/retry-policy.js +160 -0
  567. package/dist/task/retry-policy.js.map +1 -0
  568. package/dist/task/task-manager.d.ts +70 -0
  569. package/dist/task/task-manager.d.ts.map +1 -0
  570. package/dist/task/task-manager.js +319 -0
  571. package/dist/task/task-manager.js.map +1 -0
  572. package/dist/task/types.d.ts +72 -0
  573. package/dist/task/types.d.ts.map +1 -0
  574. package/dist/task/types.js +33 -0
  575. package/dist/task/types.js.map +1 -0
  576. package/dist/teams/team-loader.d.ts +2 -1
  577. package/dist/teams/team-loader.d.ts.map +1 -1
  578. package/dist/teams/team-loader.js +2 -1
  579. package/dist/teams/team-loader.js.map +1 -1
  580. package/dist/teams/team-manager.d.ts +101 -0
  581. package/dist/teams/team-manager.d.ts.map +1 -0
  582. package/dist/teams/team-manager.js +260 -0
  583. package/dist/teams/team-manager.js.map +1 -0
  584. package/dist/teams/team-runtime-v2.d.ts +0 -3
  585. package/dist/teams/team-runtime-v2.d.ts.map +1 -1
  586. package/dist/teams/team-runtime-v2.js +31 -93
  587. package/dist/teams/team-runtime-v2.js.map +1 -1
  588. package/dist/teams/team-runtime.d.ts +245 -0
  589. package/dist/teams/team-runtime.d.ts.map +1 -0
  590. package/dist/teams/team-runtime.js +1023 -0
  591. package/dist/teams/team-runtime.js.map +1 -0
  592. package/dist/trigger/router/index.d.ts +11 -0
  593. package/dist/trigger/router/index.d.ts.map +1 -0
  594. package/dist/trigger/router/index.js +10 -0
  595. package/dist/trigger/router/index.js.map +1 -0
  596. package/dist/trigger/router/strategies/ai-router-strategy.d.ts +34 -0
  597. package/dist/trigger/router/strategies/ai-router-strategy.d.ts.map +1 -0
  598. package/dist/trigger/router/strategies/ai-router-strategy.js +359 -0
  599. package/dist/trigger/router/strategies/ai-router-strategy.js.map +1 -0
  600. package/dist/trigger/router/strategies/direct-strategy.d.ts +32 -0
  601. package/dist/trigger/router/strategies/direct-strategy.d.ts.map +1 -0
  602. package/dist/trigger/router/strategies/direct-strategy.js +119 -0
  603. package/dist/trigger/router/strategies/direct-strategy.js.map +1 -0
  604. package/dist/trigger/router/strategies/index.d.ts +11 -0
  605. package/dist/trigger/router/strategies/index.d.ts.map +1 -0
  606. package/dist/trigger/router/strategies/index.js +11 -0
  607. package/dist/trigger/router/strategies/index.js.map +1 -0
  608. package/dist/trigger/router/strategies/role-strategy.d.ts +39 -0
  609. package/dist/trigger/router/strategies/role-strategy.d.ts.map +1 -0
  610. package/dist/trigger/router/strategies/role-strategy.js +207 -0
  611. package/dist/trigger/router/strategies/role-strategy.js.map +1 -0
  612. package/dist/trigger/router/trigger-router.d.ts +54 -0
  613. package/dist/trigger/router/trigger-router.d.ts.map +1 -0
  614. package/dist/trigger/router/trigger-router.js +362 -0
  615. package/dist/trigger/router/trigger-router.js.map +1 -0
  616. package/dist/trigger/router/types.d.ts +225 -0
  617. package/dist/trigger/router/types.d.ts.map +1 -0
  618. package/dist/trigger/router/types.js +10 -0
  619. package/dist/trigger/router/types.js.map +1 -0
  620. package/dist/trigger/sources/cron/cron-service.d.ts.map +1 -1
  621. package/dist/trigger/sources/cron/cron-service.js +6 -3
  622. package/dist/trigger/sources/cron/cron-service.js.map +1 -1
  623. package/dist/trigger/trigger-system.d.ts +77 -0
  624. package/dist/trigger/trigger-system.d.ts.map +1 -0
  625. package/dist/trigger/trigger-system.js +84 -0
  626. package/dist/trigger/trigger-system.js.map +1 -0
  627. package/dist/util/git-safety.d.ts +33 -0
  628. package/dist/util/git-safety.d.ts.map +1 -0
  629. package/dist/util/git-safety.js +94 -0
  630. package/dist/util/git-safety.js.map +1 -0
  631. package/dist/workspace/index.d.ts +0 -1
  632. package/dist/workspace/index.d.ts.map +1 -1
  633. package/dist/workspace/index.js +0 -2
  634. package/dist/workspace/index.js.map +1 -1
  635. package/dist/workspace/landing/direct-push.d.ts.map +1 -1
  636. package/dist/workspace/landing/direct-push.js +22 -7
  637. package/dist/workspace/landing/direct-push.js.map +1 -1
  638. package/dist/workspace/landing/queue-to-branch.d.ts.map +1 -1
  639. package/dist/workspace/landing/queue-to-branch.js +1 -3
  640. package/dist/workspace/landing/queue-to-branch.js.map +1 -1
  641. package/dist/workspace/types.d.ts +0 -13
  642. package/dist/workspace/types.d.ts.map +1 -1
  643. package/dist/workspace/workspace-manager.d.ts +0 -11
  644. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  645. package/dist/workspace/workspace-manager.js +0 -30
  646. package/dist/workspace/workspace-manager.js.map +1 -1
  647. package/package.json +28 -2
  648. package/templates/teams/self-driving/prompts/grinder.md +1 -0
  649. package/templates/teams/self-driving/prompts/judge.md +1 -0
  650. package/templates/teams/self-driving/prompts/planner.md +1 -0
  651. package/templates/teams/self-driving/roles/grinder.yaml +15 -0
  652. package/templates/teams/self-driving/roles/judge.yaml +10 -0
  653. package/templates/teams/self-driving/roles/planner.yaml +16 -0
  654. package/.claude/commands/openspec/apply.md +0 -23
  655. package/.claude/commands/openspec/archive.md +0 -27
  656. package/.claude/commands/openspec/proposal.md +0 -28
  657. package/.claude/settings.json +0 -133
  658. package/.gitattributes +0 -3
  659. package/.opentasks/config.json +0 -9
  660. package/.opentasks/graph.jsonl +0 -0
  661. package/.sessionlog/settings.json +0 -4
  662. package/.sudocode/issues.jsonl +0 -183
  663. package/.sudocode/specs.jsonl +0 -56
  664. package/AGENTS.md +0 -18
  665. package/CLAUDE.md +0 -923
  666. package/docs/architecture.md +0 -508
  667. package/docs/configuration.md +0 -323
  668. package/docs/conflict-recovery.md +0 -472
  669. package/docs/design/task-dispatcher.md +0 -880
  670. package/docs/design-subsystem-extraction.md +0 -627
  671. package/docs/git-cascade-integration-gaps.md +0 -678
  672. package/docs/implementation-details.md +0 -1127
  673. package/docs/implementation-summary.md +0 -448
  674. package/docs/lifecycle-events-design.md +0 -111
  675. package/docs/mail-integration.md +0 -608
  676. package/docs/openhive-capability-summary.md +0 -415
  677. package/docs/openhive-integration.md +0 -415
  678. package/docs/plan-self-driving-support.md +0 -433
  679. package/docs/roadmap-v2-gaps.md +0 -216
  680. package/docs/spec-self-driving-support.md +0 -462
  681. package/docs/team-templates.md +0 -860
  682. package/docs/teams.md +0 -306
  683. package/docs/trigger-system-design.md +0 -333
  684. package/docs/troubleshooting.md +0 -489
  685. package/docs/workspace-interfaces.md +0 -731
  686. package/docs/workspace-redesign-plan.md +0 -302
  687. package/examples/distributed-peer-communication.ts +0 -202
  688. package/examples/local-peer-communication.ts +0 -165
  689. package/index.js +0 -2
  690. package/mvp_docs/agent-execution-system.md +0 -347
  691. package/mvp_docs/agent-interface.md +0 -580
  692. package/mvp_docs/data-structures.md +0 -701
  693. package/mvp_docs/dynamic-meta-orchestration.md +0 -116
  694. package/mvp_docs/multi-agent-interaction-design.md +0 -779
  695. package/mvp_docs/mvp-implementation-plan.md +0 -1148
  696. package/renovate.json5 +0 -6
  697. package/scripts/test-acp-integration.ts +0 -422
  698. package/src/__tests__/boot-v2.test.ts +0 -631
  699. package/src/__tests__/e2e/acp-over-map-live.e2e.test.ts +0 -496
  700. package/src/__tests__/e2e/acp-over-map.e2e.test.ts +0 -457
  701. package/src/__tests__/e2e/agent-lifecycle.e2e.test.ts +0 -770
  702. package/src/__tests__/e2e/auto-sync.e2e.test.ts +0 -257
  703. package/src/__tests__/e2e/bootstrap.e2e.test.ts +0 -319
  704. package/src/__tests__/e2e/cascade-rebase.e2e.test.ts +0 -254
  705. package/src/__tests__/e2e/cc-swarm-bridge.e2e.test.ts +0 -253
  706. package/src/__tests__/e2e/cli-run.e2e.test.ts +0 -167
  707. package/src/__tests__/e2e/cognitive-workspace.e2e.test.ts +0 -282
  708. package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +0 -495
  709. package/src/__tests__/e2e/dispatch-live.e2e.test.ts +0 -564
  710. package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +0 -496
  711. package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +0 -456
  712. package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +0 -386
  713. package/src/__tests__/e2e/dispatch.e2e.test.ts +0 -376
  714. package/src/__tests__/e2e/done-scenarios.e2e.test.ts +0 -322
  715. package/src/__tests__/e2e/live-agent.e2e.test.ts +0 -1330
  716. package/src/__tests__/e2e/map-server.e2e.test.ts +0 -128
  717. package/src/__tests__/e2e/map-sidecar.e2e.test.ts +0 -139
  718. package/src/__tests__/e2e/opentasks-integration.e2e.test.ts +0 -280
  719. package/src/__tests__/e2e/pull-mode.e2e.test.ts +0 -632
  720. package/src/__tests__/e2e/resume-continue.e2e.test.ts +0 -312
  721. package/src/__tests__/e2e/self-driving-v3.e2e.test.ts +0 -197
  722. package/src/__tests__/e2e/spawn-resolver.e2e.test.ts +0 -200
  723. package/src/__tests__/e2e/swarmkit-integration.e2e.test.ts +0 -562
  724. package/src/__tests__/e2e/swarmkit-live.e2e.test.ts +0 -1049
  725. package/src/__tests__/e2e/trajectory-tracking.e2e.test.ts +0 -258
  726. package/src/__tests__/e2e/trigger-wake.e2e.test.ts +0 -257
  727. package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +0 -383
  728. package/src/__tests__/e2e/workspace-v3.e2e.test.ts +0 -413
  729. package/src/acp/__tests__/claude-code-replay.test.ts +0 -225
  730. package/src/acp/__tests__/macro-agent.test.ts +0 -387
  731. package/src/acp/__tests__/session-mapper.test.ts +0 -152
  732. package/src/acp/__tests__/websocket-server.test.ts +0 -194
  733. package/src/acp/claude-code-replay.ts +0 -208
  734. package/src/acp/index.ts +0 -32
  735. package/src/acp/macro-agent.ts +0 -995
  736. package/src/acp/map-bridge.ts +0 -193
  737. package/src/acp/session-mapper.ts +0 -116
  738. package/src/acp/types.ts +0 -99
  739. package/src/acp/websocket-server.ts +0 -213
  740. package/src/adapters/__tests__/federation.test.ts +0 -256
  741. package/src/adapters/__tests__/inbox-adapter.test.ts +0 -316
  742. package/src/adapters/__tests__/tasks-adapter.test.ts +0 -270
  743. package/src/adapters/federation.ts +0 -185
  744. package/src/adapters/inbox-adapter.ts +0 -292
  745. package/src/adapters/inbox-client-adapter.ts +0 -173
  746. package/src/adapters/index.ts +0 -44
  747. package/src/adapters/opentasks-daemon.ts +0 -252
  748. package/src/adapters/tasks-adapter.ts +0 -330
  749. package/src/adapters/types.ts +0 -286
  750. package/src/agent/__tests__/agent-manager-topology.test.ts +0 -73
  751. package/src/agent/__tests__/agent-manager-v2.permission-interception.test.ts +0 -296
  752. package/src/agent/__tests__/agent-manager-v2.permissions.test.ts +0 -233
  753. package/src/agent/__tests__/agent-manager-v2.test.ts +0 -614
  754. package/src/agent/__tests__/agent-store.test.ts +0 -465
  755. package/src/agent/__tests__/task-ref-resolution.test.ts +0 -231
  756. package/src/agent/agent-manager-v2.ts +0 -2021
  757. package/src/agent/agent-manager.ts +0 -386
  758. package/src/agent/agent-store.ts +0 -409
  759. package/src/agent/index.ts +0 -7
  760. package/src/agent/prompts/coordinator-signals.ts +0 -115
  761. package/src/agent/prompts/index.ts +0 -7
  762. package/src/agent/system-prompt.ts +0 -298
  763. package/src/agent/types.ts +0 -459
  764. package/src/agent-detection/__tests__/command-builder.test.ts +0 -336
  765. package/src/agent-detection/__tests__/detector.test.ts +0 -768
  766. package/src/agent-detection/__tests__/registry.test.ts +0 -254
  767. package/src/agent-detection/command-builder.ts +0 -90
  768. package/src/agent-detection/detector.ts +0 -307
  769. package/src/agent-detection/index.ts +0 -36
  770. package/src/agent-detection/registry.ts +0 -200
  771. package/src/agent-detection/types.ts +0 -184
  772. package/src/api/__tests__/server.test.ts +0 -292
  773. package/src/api/index.ts +0 -8
  774. package/src/api/server.ts +0 -380
  775. package/src/api/types.ts +0 -39
  776. package/src/auth/__tests__/token.test.ts +0 -100
  777. package/src/auth/index.ts +0 -1
  778. package/src/auth/token.ts +0 -82
  779. package/src/boot-v2.ts +0 -1343
  780. package/src/cli/__tests__/stable-instance-id.test.ts +0 -57
  781. package/src/cli/acp.ts +0 -101
  782. package/src/cli/inbox-mcp-proxy.ts +0 -56
  783. package/src/cli/index.ts +0 -566
  784. package/src/cli/mcp.ts +0 -305
  785. package/src/cli/parse-args.ts +0 -54
  786. package/src/cli/stable-instance-id.ts +0 -14
  787. package/src/cognitive/__tests__/macro-agent-backend.test.ts +0 -520
  788. package/src/cognitive/__tests__/session-converter.test.ts +0 -423
  789. package/src/cognitive/__tests__/workspace-handler.test.ts +0 -221
  790. package/src/cognitive/analyst-role.ts +0 -59
  791. package/src/cognitive/index.ts +0 -49
  792. package/src/cognitive/macro-agent-backend.ts +0 -370
  793. package/src/cognitive/session-converter.ts +0 -151
  794. package/src/cognitive/types.ts +0 -163
  795. package/src/cognitive/workspace-handler.ts +0 -163
  796. package/src/config/index.ts +0 -9
  797. package/src/config/project-config.ts +0 -294
  798. package/src/control/__tests__/control-resilience.test.ts +0 -251
  799. package/src/control/__tests__/control-socket.test.ts +0 -240
  800. package/src/control/control-client.ts +0 -337
  801. package/src/control/control-server.ts +0 -298
  802. package/src/control/index.ts +0 -17
  803. package/src/control/types.ts +0 -95
  804. package/src/dispatch/CLAUDE.md +0 -129
  805. package/src/dispatch/__tests__/loadout-translation.test.ts +0 -141
  806. package/src/dispatch/__tests__/mail-inbound-consumer.integration.test.ts +0 -519
  807. package/src/dispatch/__tests__/mail-inbound-consumer.test.ts +0 -800
  808. package/src/dispatch/__tests__/mail-inbound-reuse-consumer.test.ts +0 -575
  809. package/src/dispatch/__tests__/permission-evaluator.test.ts +0 -196
  810. package/src/dispatch/__tests__/permission-overlay.test.ts +0 -56
  811. package/src/dispatch/__tests__/permissions-handler.test.ts +0 -168
  812. package/src/dispatch/__tests__/spawn-agent-handler.test.ts +0 -282
  813. package/src/dispatch/loadout-translation.ts +0 -138
  814. package/src/dispatch/mail-inbound-consumer.ts +0 -560
  815. package/src/dispatch/mail-inbound-reuse-consumer.ts +0 -479
  816. package/src/dispatch/permission-evaluator.ts +0 -191
  817. package/src/dispatch/permission-overlay.ts +0 -89
  818. package/src/dispatch/permissions-handler.ts +0 -112
  819. package/src/dispatch/spawn-agent-handler.ts +0 -160
  820. package/src/index.ts +0 -115
  821. package/src/integrations/__tests__/context-builder.test.ts +0 -218
  822. package/src/integrations/__tests__/sessionlog.test.ts +0 -498
  823. package/src/integrations/__tests__/skilltree.test.ts +0 -136
  824. package/src/integrations/context-builder.ts +0 -280
  825. package/src/integrations/sessionlog.ts +0 -194
  826. package/src/integrations/skilltree.ts +0 -184
  827. package/src/lifecycle/__tests__/cascade-consolidation.test.ts +0 -240
  828. package/src/lifecycle/__tests__/handlers-v2.test.ts +0 -565
  829. package/src/lifecycle/cascade.ts +0 -335
  830. package/src/lifecycle/cleanup.ts +0 -373
  831. package/src/lifecycle/handlers-v2.ts +0 -508
  832. package/src/lifecycle/index.ts +0 -76
  833. package/src/lifecycle/types.ts +0 -260
  834. package/src/map/__tests__/cascade-bridge.test.ts +0 -229
  835. package/src/map/__tests__/cascade-diff-server.test.ts +0 -434
  836. package/src/map/__tests__/emit-event.test.ts +0 -71
  837. package/src/map/__tests__/lifecycle-bridge.test.ts +0 -430
  838. package/src/map/__tests__/mail-bridge.test.ts +0 -284
  839. package/src/map/__tests__/permission-forwarding.test.ts +0 -143
  840. package/src/map/__tests__/sidecar-diff-install-smoke.test.ts +0 -90
  841. package/src/map/__tests__/sidecar-integration.test.ts +0 -190
  842. package/src/map/__tests__/task-bridge.test.ts +0 -153
  843. package/src/map/__tests__/trajectory-reporter.test.ts +0 -173
  844. package/src/map/acp-bridge.ts +0 -293
  845. package/src/map/cascade-action-handler.ts +0 -205
  846. package/src/map/cascade-bridge.ts +0 -339
  847. package/src/map/cascade-diff-server.ts +0 -404
  848. package/src/map/cc-swarm-hooks.ts +0 -242
  849. package/src/map/coordination-handler.ts +0 -232
  850. package/src/map/index.ts +0 -18
  851. package/src/map/lifecycle-bridge.ts +0 -236
  852. package/src/map/mail-bridge.ts +0 -215
  853. package/src/map/repo-workspace.ts +0 -82
  854. package/src/map/server.ts +0 -758
  855. package/src/map/sidecar.ts +0 -826
  856. package/src/map/task-bridge.ts +0 -89
  857. package/src/map/trajectory-reporter.ts +0 -124
  858. package/src/map/types.ts +0 -304
  859. package/src/mcp/__tests__/mcp-server-v2.test.ts +0 -236
  860. package/src/mcp/index.ts +0 -6
  861. package/src/mcp/mcp-server-v2.ts +0 -485
  862. package/src/mcp/tools/done-v2.ts +0 -213
  863. package/src/mcp/types.ts +0 -432
  864. package/src/metrics/__tests__/metrics.test.ts +0 -205
  865. package/src/metrics/index.ts +0 -13
  866. package/src/metrics/metrics.ts +0 -151
  867. package/src/metrics/types.ts +0 -63
  868. package/src/roles/__tests__/config-loader.test.ts +0 -540
  869. package/src/roles/builtin/coordinator.ts +0 -75
  870. package/src/roles/builtin/generic.ts +0 -39
  871. package/src/roles/builtin/index.ts +0 -51
  872. package/src/roles/builtin/integrator.ts +0 -62
  873. package/src/roles/builtin/monitor.ts +0 -65
  874. package/src/roles/builtin/worker.ts +0 -134
  875. package/src/roles/capabilities.ts +0 -257
  876. package/src/roles/config-loader.ts +0 -405
  877. package/src/roles/index.ts +0 -141
  878. package/src/roles/registry.ts +0 -713
  879. package/src/roles/types.ts +0 -344
  880. package/src/store/index.ts +0 -8
  881. package/src/store/types/agents.ts +0 -69
  882. package/src/store/types/events.ts +0 -91
  883. package/src/store/types/index.ts +0 -9
  884. package/src/store/types/messages.ts +0 -32
  885. package/src/store/types/primitives.ts +0 -9
  886. package/src/store/types/tasks.ts +0 -124
  887. package/src/teams/__tests__/team-manager-v2.test.ts +0 -425
  888. package/src/teams/__tests__/team-runtime-v2.test.ts +0 -402
  889. package/src/teams/index.ts +0 -29
  890. package/src/teams/seed-defaults.ts +0 -83
  891. package/src/teams/team-loader.ts +0 -476
  892. package/src/teams/team-manager-v2.ts +0 -343
  893. package/src/teams/team-runtime-v2.ts +0 -920
  894. package/src/teams/types.ts +0 -276
  895. package/src/trigger/__tests__/cron-service.test.ts +0 -548
  896. package/src/trigger/__tests__/scheduler.test.ts +0 -371
  897. package/src/trigger/__tests__/system-event-queue.test.ts +0 -147
  898. package/src/trigger/__tests__/trigger-system-v2.test.ts +0 -257
  899. package/src/trigger/__tests__/wake-manager.test.ts +0 -356
  900. package/src/trigger/__tests__/webhook-handler.test.ts +0 -567
  901. package/src/trigger/index.ts +0 -110
  902. package/src/trigger/queue/index.ts +0 -21
  903. package/src/trigger/queue/system-event-queue.ts +0 -232
  904. package/src/trigger/queue/types.ts +0 -149
  905. package/src/trigger/sources/cron/cron-service.ts +0 -499
  906. package/src/trigger/sources/cron/index.ts +0 -41
  907. package/src/trigger/sources/cron/scheduler.ts +0 -344
  908. package/src/trigger/sources/cron/types.ts +0 -333
  909. package/src/trigger/sources/index.ts +0 -10
  910. package/src/trigger/sources/webhook/index.ts +0 -25
  911. package/src/trigger/sources/webhook/types.ts +0 -205
  912. package/src/trigger/sources/webhook/webhook-handler.ts +0 -410
  913. package/src/trigger/strategies/ai-router.ts +0 -170
  914. package/src/trigger/trigger-system-v2.ts +0 -536
  915. package/src/trigger/types.ts +0 -228
  916. package/src/trigger/wake/index.ts +0 -22
  917. package/src/trigger/wake/types.ts +0 -162
  918. package/src/trigger/wake/wake-manager.ts +0 -390
  919. package/src/workspace/__tests__/git-cascade-adapter.test.ts +0 -563
  920. package/src/workspace/__tests__/land-dispatch.test.ts +0 -214
  921. package/src/workspace/__tests__/self-driving-yaml.test.ts +0 -122
  922. package/src/workspace/__tests__/shared-worktree-refcount.test.ts +0 -154
  923. package/src/workspace/__tests__/standalone-mode.test.ts +0 -118
  924. package/src/workspace/__tests__/workspace-manager-v3.test.ts +0 -245
  925. package/src/workspace/__tests__/yaml-schema.test.ts +0 -210
  926. package/src/workspace/config.ts +0 -165
  927. package/src/workspace/git-cascade-adapter.ts +0 -1213
  928. package/src/workspace/index.ts +0 -110
  929. package/src/workspace/landing/__tests__/strategies.test.ts +0 -184
  930. package/src/workspace/landing/direct-push.ts +0 -91
  931. package/src/workspace/landing/index.ts +0 -40
  932. package/src/workspace/landing/merge-to-parent.ts +0 -229
  933. package/src/workspace/landing/optimistic-push.ts +0 -36
  934. package/src/workspace/landing/queue-to-branch.ts +0 -108
  935. package/src/workspace/merge-queue/__tests__/conflict-resolution-git.e2e.test.ts +0 -641
  936. package/src/workspace/merge-queue/__tests__/conflict-resolution.test.ts +0 -707
  937. package/src/workspace/merge-queue/__tests__/merge-queue-concurrent.test.ts +0 -628
  938. package/src/workspace/merge-queue/__tests__/merge-queue-edge-cases.test.ts +0 -1217
  939. package/src/workspace/merge-queue/__tests__/merge-queue.test.ts +0 -506
  940. package/src/workspace/merge-queue/__tests__/real-git-operations.e2e.test.ts +0 -556
  941. package/src/workspace/merge-queue/__tests__/resolver-flow.test.ts +0 -472
  942. package/src/workspace/merge-queue/index.ts +0 -38
  943. package/src/workspace/merge-queue/merge-queue.ts +0 -585
  944. package/src/workspace/merge-queue/schema.ts +0 -98
  945. package/src/workspace/merge-queue/types.ts +0 -316
  946. package/src/workspace/pool/__tests__/worktree-pool.integration.test.ts +0 -1281
  947. package/src/workspace/pool/__tests__/worktree-pool.test.ts +0 -590
  948. package/src/workspace/pool/index.ts +0 -26
  949. package/src/workspace/pool/types.ts +0 -276
  950. package/src/workspace/pool/worktree-pool.ts +0 -659
  951. package/src/workspace/recovery/__tests__/auto-resolve-integration.test.ts +0 -127
  952. package/src/workspace/recovery/__tests__/spawn-resolver.test.ts +0 -139
  953. package/src/workspace/recovery/__tests__/strategies.test.ts +0 -145
  954. package/src/workspace/recovery/abandon.ts +0 -51
  955. package/src/workspace/recovery/auto-resolve.ts +0 -119
  956. package/src/workspace/recovery/defer.ts +0 -23
  957. package/src/workspace/recovery/escalate.ts +0 -30
  958. package/src/workspace/recovery/index.ts +0 -58
  959. package/src/workspace/recovery/spawn-resolver.ts +0 -152
  960. package/src/workspace/recovery/types.ts +0 -54
  961. package/src/workspace/strategies/index.ts +0 -18
  962. package/src/workspace/strategies/optimistic.ts +0 -139
  963. package/src/workspace/strategies/queue.ts +0 -81
  964. package/src/workspace/strategies/registry.ts +0 -89
  965. package/src/workspace/strategies/trunk.ts +0 -123
  966. package/src/workspace/strategies/types.ts +0 -145
  967. package/src/workspace/topology/__tests__/yaml-driven.test.ts +0 -345
  968. package/src/workspace/topology/index.ts +0 -18
  969. package/src/workspace/topology/no-workspace.ts +0 -39
  970. package/src/workspace/topology/types.ts +0 -116
  971. package/src/workspace/topology/yaml-driven.ts +0 -316
  972. package/src/workspace/types-v3.ts +0 -162
  973. package/src/workspace/types.ts +0 -541
  974. package/src/workspace/workspace-manager.ts +0 -1577
  975. package/src/workspace/yaml-schema.ts +0 -216
  976. package/test_fixtures/README.md +0 -425
  977. package/test_fixtures/fixtures/behaviors/coordinators.ts +0 -196
  978. package/test_fixtures/fixtures/behaviors/index.ts +0 -62
  979. package/test_fixtures/fixtures/behaviors/integrators.ts +0 -143
  980. package/test_fixtures/fixtures/behaviors/monitors.ts +0 -199
  981. package/test_fixtures/fixtures/behaviors/workers.ts +0 -348
  982. package/test_fixtures/fixtures/index.ts +0 -7
  983. package/test_fixtures/fixtures/projects/index.ts +0 -23
  984. package/test_fixtures/fixtures/projects/project-with-specs.ts +0 -44
  985. package/test_fixtures/fixtures/projects/typescript-project.ts +0 -200
  986. package/test_fixtures/fixtures/repos/index.ts +0 -6
  987. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -299
  988. package/test_fixtures/fixtures/repos/types.ts +0 -174
  989. package/test_fixtures/harness/assertions/harness-assertions.ts +0 -752
  990. package/test_fixtures/harness/assertions/index.ts +0 -8
  991. package/test_fixtures/harness/index.ts +0 -15
  992. package/test_fixtures/harness/simulator/agent-simulator.ts +0 -768
  993. package/test_fixtures/harness/simulator/behavior-executor.ts +0 -580
  994. package/test_fixtures/harness/simulator/index.ts +0 -14
  995. package/test_fixtures/harness/simulator/types.ts +0 -459
  996. package/test_fixtures/harness/test-harness.ts +0 -770
  997. package/test_fixtures/harness/timing/event-stepper.ts +0 -344
  998. package/test_fixtures/harness/timing/index.ts +0 -8
  999. package/tsconfig.json +0 -21
  1000. package/vitest.config.ts +0 -30
  1001. package/vitest.e2e.config.ts +0 -28
  1002. package/vitest.setup.ts +0 -12
@@ -1,920 +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
- name: s.name,
537
- command: s.command,
538
- args: s.args,
539
- env: s.env,
540
- })),
541
- ],
542
- env: {
543
- ...options.config?.env,
544
- ...teamEnv,
545
- },
546
- },
547
- customPrompt: options.customPrompt ?? teamPrompt,
548
- interactionPatterns:
549
- options.interactionPatterns ?? this.getInteractionPatterns(),
550
- };
551
- };
552
- }
553
-
554
- // ─────────────────────────────────────────────────────────────
555
- // Communication Helpers
556
- // ─────────────────────────────────────────────────────────────
557
-
558
- private getTopicsForRole(roleName: string): string[] {
559
- const topics: string[] = [];
560
- const subs = this.communication.subscriptions?.[roleName] ?? [];
561
- for (const sub of subs) {
562
- if (!topics.includes(sub.channel)) {
563
- topics.push(sub.channel);
564
- }
565
- }
566
- return topics;
567
- }
568
-
569
- private getMcpServersForRole(roleName: string): McpServerEntry[] {
570
- return this.resolved.template.mcpServers.get(roleName) ?? [];
571
- }
572
-
573
- private getPromptForRole(roleName: string): string | undefined {
574
- const resolved = this.resolved.resolvedRoles.get(roleName);
575
- if (!resolved?.prompt) return undefined;
576
- return this.loadedPrompts.get(resolved.prompt);
577
- }
578
-
579
- private getPromptForTopologyNode(
580
- node: { role: string; prompt?: string }
581
- ): string | undefined {
582
- if (node.prompt) return this.loadedPrompts.get(node.prompt);
583
- return this.getPromptForRole(node.role);
584
- }
585
-
586
- private getInteractionPatterns(): string[] {
587
- const patterns: string[] = [];
588
- const taskMode = this.getTaskMode();
589
-
590
- if (taskMode === "pull") {
591
- const pullConfig = this.resolved.macroAgent.task_assignment?.pull;
592
- const idleTimeout = pullConfig?.idle_timeout_s ?? 300;
593
- patterns.push(`## Task Claiming
594
-
595
- You operate in PULL mode. After completing a task:
596
- 1. Call done() with your results
597
- 2. Call claim_task() to get your next task
598
- 3. If no tasks available, wait briefly and retry
599
- 4. After ${idleTimeout} seconds idle, call done() to exit gracefully
600
-
601
- Claim and execute independently — do not wait for instructions.`);
602
- }
603
-
604
- const strategy = this.getStrategyName();
605
- if (strategy === "trunk") {
606
- patterns.push(`## Integration
607
-
608
- Your changes are integrated via trunk-based development. When you call done(),
609
- your work is pushed directly to the integration branch. If there's a conflict,
610
- the system will rebase and retry automatically. Write small, focused changes
611
- to minimize conflict probability.`);
612
- } else if (strategy === "optimistic") {
613
- patterns.push(`## Integration
614
-
615
- Your changes are integrated optimistically. They are pushed immediately and
616
- validated asynchronously. If validation fails, a fixup task will be created.
617
- Focus on correctness — your changes go live immediately.`);
618
- }
619
-
620
- return patterns;
621
- }
622
-
623
- // ─────────────────────────────────────────────────────────────
624
- // Internal: Signal and peer filter computation
625
- // ─────────────────────────────────────────────────────────────
626
-
627
- /**
628
- * Extract signal name from a message. Looks at event-type messages
629
- * and thread tags for signal identification.
630
- */
631
- private extractSignal(message: { content?: any; metadata?: any }): string | undefined {
632
- const content = message.content;
633
- if (!content) return undefined;
634
-
635
- // Event messages carry signal in event field
636
- if (content.type === "event" && content.event) {
637
- return content.event;
638
- }
639
-
640
- // Check metadata for signal field
641
- if (message.metadata?.signal) {
642
- return message.metadata.signal as string;
643
- }
644
-
645
- return undefined;
646
- }
647
-
648
- /**
649
- * Compute peer signal filters from routing.peers config.
650
- * These are directional: from→to with specific allowed signals.
651
- */
652
- private computePeerSignalFilters(): void {
653
- const peers = this.communication.routing?.peers;
654
- if (!peers) return;
655
-
656
- for (const peer of peers) {
657
- const fromAgent = this.roleAgentMap.get(peer.from);
658
- const toAgent = this.roleAgentMap.get(peer.to);
659
-
660
- if (!fromAgent || !toAgent) {
661
- this.pendingPeerRoutes.push(peer);
662
- continue;
663
- }
664
-
665
- if (peer.signals && peer.signals.length > 0) {
666
- this.peerSignalFilters.set(`${fromAgent}→${toAgent}`, peer.signals);
667
- }
668
- }
669
-
670
- // Set up deferred wiring for peers not yet spawned
671
- if (this.pendingPeerRoutes.length > 0) {
672
- this.setupDeferredPeerWiring();
673
- }
674
- }
675
-
676
- private setupDeferredPeerWiring(): void {
677
- const { agentManager } = this.services;
678
-
679
- this.peerWiringUnsubscribe = agentManager.onLifecycleEvent((event) => {
680
- if (event.type !== "spawned") return;
681
-
682
- const remaining: PeerConnection[] = [];
683
- for (const peer of this.pendingPeerRoutes) {
684
- const fromAgent = this.roleAgentMap.get(peer.from);
685
- const toAgent = this.roleAgentMap.get(peer.to);
686
-
687
- if (fromAgent && toAgent) {
688
- if (peer.signals && peer.signals.length > 0) {
689
- this.peerSignalFilters.set(
690
- `${fromAgent}→${toAgent}`,
691
- peer.signals
692
- );
693
- }
694
- } else {
695
- remaining.push(peer);
696
- }
697
- }
698
- this.pendingPeerRoutes = remaining;
699
-
700
- if (remaining.length === 0 && this.peerWiringUnsubscribe) {
701
- this.peerWiringUnsubscribe();
702
- this.peerWiringUnsubscribe = undefined;
703
- }
704
- });
705
- }
706
-
707
- private computeRoleAllowedSignals(): void {
708
- this.roleAllowedSignals.clear();
709
-
710
- for (const [roleName, subs] of Object.entries(
711
- this.communication.subscriptions ?? {}
712
- )) {
713
- let allowed: Set<string> | "all" = new Set<string>();
714
-
715
- for (const sub of subs) {
716
- if (!sub.signals || sub.signals.length === 0) {
717
- allowed = "all";
718
- break;
719
- }
720
- for (const sig of sub.signals) {
721
- (allowed as Set<string>).add(sig);
722
- }
723
- }
724
-
725
- this.roleAllowedSignals.set(roleName, allowed);
726
- }
727
- }
728
-
729
- // ─────────────────────────────────────────────────────────────
730
- // Continuation Monitoring
731
- // ─────────────────────────────────────────────────────────────
732
-
733
- private monitorContinuations(): void {
734
- const lifecycleConfig = this.resolved.macroAgent.lifecycle;
735
- if (!lifecycleConfig?.continuations?.enabled) return;
736
-
737
- const { agentManager } = this.services;
738
- const monitoredAgents = new Set([
739
- this.rootAgentId,
740
- ...this.companionAgentIds,
741
- ]);
742
-
743
- this.lifecycleUnsubscribe = agentManager.onLifecycleEvent((event) => {
744
- if (event.type !== "stopped") return;
745
- if (!monitoredAgents.has(event.agent.id)) return;
746
-
747
- const reason = (event as { reason?: string }).reason;
748
- if (reason === "completed" || reason === "cancelled") return;
749
-
750
- setTimeout(async () => {
751
- try {
752
- const newAgent = await agentManager.continueAgent(event.agent.id);
753
- monitoredAgents.delete(event.agent.id);
754
- monitoredAgents.add(newAgent.id);
755
-
756
- if (event.agent.id === this.rootAgentId) {
757
- this.rootAgentId = newAgent.id;
758
- } else {
759
- const idx = this.companionAgentIds.indexOf(event.agent.id);
760
- if (idx >= 0) this.companionAgentIds[idx] = newAgent.id;
761
- }
762
- } catch {
763
- // Failed to continue
764
- }
765
- }, 1000);
766
- });
767
- }
768
-
769
- // ─────────────────────────────────────────────────────────────
770
- // Auto-Scaling (uses TasksAdapter instead of TaskBackend)
771
- // ─────────────────────────────────────────────────────────────
772
-
773
- private static readonly SCALE_COOLDOWN_MS = 10_000;
774
- private static readonly SCALE_CHECK_INTERVAL_MS = 5_000;
775
-
776
- private monitorScaling(): void {
777
- const scalingConfig = this.resolved.macroAgent.lifecycle?.scaling;
778
- if (!scalingConfig || scalingConfig.scale_on !== "task_queue_depth") return;
779
-
780
- const { tasksAdapter, agentManager } = this.services;
781
- if (!tasksAdapter.connected) return;
782
-
783
- const maxWorkers = scalingConfig.max_workers ?? Infinity;
784
-
785
- const workerRoleNames = new Set<string>();
786
- for (const [name, resolved] of this.resolved.resolvedRoles) {
787
- if (resolved.baseRole === "worker") {
788
- workerRoleNames.add(name);
789
- }
790
- }
791
- if (workerRoleNames.size === 0) return;
792
-
793
- const spawnRole = [...workerRoleNames][0];
794
-
795
- this.scalingTimer = setInterval(async () => {
796
- try {
797
- const claimable = await tasksAdapter.listClaimable();
798
- const pendingCount = claimable.length;
799
-
800
- const allAgents = agentManager.list({ state: "running" });
801
- let activeWorkers = 0;
802
- for (const agent of allAgents) {
803
- if (
804
- agent.role &&
805
- workerRoleNames.has(agent.role) &&
806
- this.agentRoleMap.has(agent.id as AgentId)
807
- ) {
808
- activeWorkers++;
809
- }
810
- }
811
-
812
- if (
813
- pendingCount > activeWorkers &&
814
- activeWorkers < maxWorkers
815
- ) {
816
- const now = Date.now();
817
- if (now - this.lastScaleUpTime < TeamRuntimeV2.SCALE_COOLDOWN_MS) {
818
- return;
819
- }
820
- if (!this.rootAgentId) return;
821
-
822
- try {
823
- await agentManager.spawn({
824
- task: `[${this.manifest.name}] auto-scaled ${spawnRole}`,
825
- role: spawnRole,
826
- parent: this.rootAgentId,
827
- });
828
- this.lastScaleUpTime = now;
829
- } catch {
830
- // Will retry next tick
831
- }
832
- }
833
- } catch {
834
- // Best-effort
835
- }
836
- }, TeamRuntimeV2.SCALE_CHECK_INTERVAL_MS);
837
-
838
- if (this.scalingTimer.unref) {
839
- this.scalingTimer.unref();
840
- }
841
- }
842
-
843
- // ─────────────────────────────────────────────────────────────
844
- // Workspace Integration (simplified — no merge request polling)
845
- // ─────────────────────────────────────────────────────────────
846
-
847
- private setupWorkspaceIntegration(rootAgentId: AgentId): void {
848
- const { workspaceManager } = this.services;
849
- if (!workspaceManager || !this.integrationStrategy) return;
850
-
851
- // V3 coexistence: if TeamManagerV2 has already wired a YamlDrivenTopology
852
- // from `macro_agent.workspace`, that policy owns the team root stream.
853
- // Don't create a second one via the legacy createIntegrationStream.
854
- const hasV3Topology =
855
- typeof (
856
- this.services.agentManager as {
857
- getTopologyPolicy?: () => unknown;
858
- }
859
- ).getTopologyPolicy === 'function';
860
- // AgentManager doesn't expose a getter today, so detect indirectly: a
861
- // V3-wired team has already created a stream owned by `team:<name>`.
862
- const existingTeamRoot = workspaceManager
863
- .listStreams({ ownerId: `team:${this.manifest.name}` } as never)
864
- .find((s: { name: string }) => s.name === this.manifest.name);
865
-
866
- if (existingTeamRoot) {
867
- this.teamStreamId = existingTeamRoot.id;
868
- return;
869
- }
870
-
871
- try {
872
- this.teamStreamId = workspaceManager.createIntegrationStream(
873
- rootAgentId,
874
- { name: this.manifest.name, forkFrom: "main" }
875
- );
876
- } catch {
877
- return; // Workspace isolation unavailable
878
- }
879
-
880
- // Subscribe to merge queue events — wake integrator on mr:submitted
881
- try {
882
- const mergeQueue = workspaceManager.getMergeQueue();
883
- if (mergeQueue?.onEvent) {
884
- mergeQueue.onEvent((event) => {
885
- if (event.type !== "mr:submitted") return;
886
-
887
- for (const [agentId, roleName] of this.agentRoleMap) {
888
- const resolved = this.resolved.resolvedRoles.get(roleName);
889
- const caps = resolved?.capabilities ?? [];
890
- if (caps.includes(WORKSPACE_CAPABILITIES.INTEGRATE)) {
891
- try {
892
- // prompt() returns AsyncIterable — drain in background (fire-and-forget)
893
- const iter = this.services.agentManager.prompt(
894
- agentId,
895
- `Merge request submitted. Process the merge queue.`
896
- );
897
- (async () => {
898
- try {
899
- for await (const _ of iter) { /* drain */ }
900
- } catch {
901
- // Best-effort wake — ignore errors
902
- }
903
- })();
904
- } catch {
905
- // Best-effort wake
906
- }
907
- break;
908
- }
909
- }
910
- });
911
- }
912
- } catch {
913
- // Merge queue not available
914
- }
915
-
916
- // NOTE: No merge request polling. AgentManagerV2.terminate() handles
917
- // merge request submission directly when a worker with a workspace
918
- // completes. This eliminates the 2-second EventStore polling loop.
919
- }
920
- }