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
@@ -0,0 +1,903 @@
1
+ /**
2
+ * MessageRouter - Core Internal Message Routing Service
3
+ *
4
+ * ## Routing Architecture
5
+ *
6
+ * MessageRouter is the **core internal routing authority** for macro-agent.
7
+ * It handles all message delivery between internal agents.
8
+ *
9
+ * ```
10
+ * External → MAPAdapter/TriggerRouter → MessageRouter → EventStore
11
+ * (protocol translation) (routing logic) (persistence)
12
+ * ```
13
+ *
14
+ * **Three routing entry points exist:**
15
+ *
16
+ * 1. **MessageRouter** (this module)
17
+ * - Internal routing for agent-to-agent communication
18
+ * - Supports: send(), sendToAddress(), emitStatus()
19
+ * - Used by: AgentManager, MCP tools, internal components
20
+ *
21
+ * 2. **MAPAdapter** (src/map/adapter/)
22
+ * - External MAP protocol interface for clients/agents/gateways
23
+ * - Translates MAP protocol → internal routing
24
+ * - Delegates message delivery to MessageRouter
25
+ *
26
+ * 3. **TriggerRouter** (src/trigger/router/)
27
+ * - External event routing (webhooks, cron, system events)
28
+ * - Queues events for batch delivery
29
+ * - Uses WakeManager for delivery scheduling
30
+ *
31
+ * ## Supported Routing Methods
32
+ *
33
+ * **Legacy Channel-based** (send, sendMessage):
34
+ * - Direct agent, task, topic, lineage, subtree, broadcast
35
+ *
36
+ * **MAP Address-based** (sendToAddress):
37
+ * - Agent, agents, task, scope, role, broadcast, hierarchical, federated
38
+ *
39
+ * @module router/message-router
40
+ */
41
+ import { nanoid } from "nanoid";
42
+ import { AddressRoutingError, DEFAULT_TRUNCATION_CONFIG } from "./types.js";
43
+ import { resolveBroadcastTarget, } from "./broadcast.js";
44
+ import { resolveRoleTarget, } from "./role-resolver.js";
45
+ import { getWakeDecisionWithHint, } from "./wake.js";
46
+ import { isAgentAddress, isAgentsAddress, isScopeAddress, isRoleAddress, isTaskAddress, isBroadcastAddress, isHierarchicalAddress, isFederatedAddress, describeAddress, } from "../map/types.js";
47
+ import { getSystemFromAddress } from "../map/federation/federation-handler.js";
48
+ import { resolveHierarchicalAddress, } from "./address-resolver.js";
49
+ /**
50
+ * Create a MessageRouter instance
51
+ */
52
+ export function createMessageRouter(eventStore, config = {}) {
53
+ const truncationConfig = config.truncation ?? DEFAULT_TRUNCATION_CONFIG;
54
+ const agentSpawner = config.agentSpawner;
55
+ const agentSessionChecker = config.agentSessionChecker;
56
+ const sessionChecker = config.sessionChecker;
57
+ const wakeHandler = config.wakeHandler;
58
+ const federationHandler = config.federationHandler;
59
+ // Turn recorder for conversation tracking (late-bound)
60
+ let turnRecorder;
61
+ // Signal filter for status notification delivery (late-bound)
62
+ let signalFilter;
63
+ // Emission validator for outbound status events (late-bound)
64
+ let emissionValidator;
65
+ // Track acknowledged messages: Map<agentId, Set<messageId>>
66
+ const acknowledgedMessages = new Map();
67
+ // ─────────────────────────────────────────────────────────────────
68
+ // Message Operations
69
+ // ─────────────────────────────────────────────────────────────────
70
+ /**
71
+ * Send a message using MAP Address-based routing.
72
+ */
73
+ async function sendToAddress(request) {
74
+ const { from, to, content, options = {} } = request;
75
+ const { priority = "normal", delivery, correlationId } = options;
76
+ // Handle hierarchical addresses using the resolver
77
+ if (isHierarchicalAddress(to)) {
78
+ return sendToHierarchicalAddress(from, to, content, options);
79
+ }
80
+ // Handle multi-agent addresses (not legacy compatible, handle directly)
81
+ if (isAgentsAddress(to)) {
82
+ return sendToMultipleAgents(from, to, content, options);
83
+ }
84
+ // Handle federated addresses (cross-system routing)
85
+ if (isFederatedAddress(to)) {
86
+ if (!federationHandler) {
87
+ throw new AddressRoutingError("Federation not configured for cross-system messaging", "FEDERATION_NOT_AVAILABLE", to);
88
+ }
89
+ const systemId = getSystemFromAddress(to);
90
+ if (!federationHandler.isConnected(systemId)) {
91
+ throw new AddressRoutingError(`Not connected to federated system: ${systemId}`, "FEDERATION_NOT_AVAILABLE", to, { systemId });
92
+ }
93
+ // Send via federation handler
94
+ await federationHandler.sendMessage(systemId, {
95
+ type: "map/send",
96
+ from,
97
+ to,
98
+ content,
99
+ options,
100
+ });
101
+ // Return result (no delivery confirmation for federated messages)
102
+ return {
103
+ id: `fed-${nanoid()}`,
104
+ from,
105
+ to,
106
+ content,
107
+ timestamp: Date.now(),
108
+ delivered: [], // Cannot confirm delivery for federated messages
109
+ correlationId,
110
+ };
111
+ }
112
+ // Handle remaining address types directly
113
+ const delivered = [];
114
+ if (isAgentAddress(to)) {
115
+ // Direct agent address
116
+ const agent = eventStore.getAgent(to.agent);
117
+ if (!agent) {
118
+ throw new AddressRoutingError(`Agent not found: ${to.agent}`, "AGENT_NOT_FOUND", to);
119
+ }
120
+ const event = eventStore.emit({
121
+ type: "message",
122
+ source: { agent_id: from },
123
+ target: {
124
+ agent_id: to.agent,
125
+ address: to,
126
+ delivered: [to.agent],
127
+ },
128
+ payload: {
129
+ content,
130
+ correlation_id: correlationId,
131
+ priority,
132
+ delivery_hint: delivery,
133
+ },
134
+ });
135
+ // Handle wake decision
136
+ if (sessionChecker && wakeHandler) {
137
+ const decision = getWakeDecisionWithHint(to.agent, { priority: priority, deliveryHint: delivery }, sessionChecker);
138
+ if (decision.shouldWake || decision.shouldInterrupt) {
139
+ wakeHandler(to.agent, decision, event.id);
140
+ }
141
+ }
142
+ delivered.push(to.agent);
143
+ // Record turn for conversation tracking
144
+ if (turnRecorder) {
145
+ try {
146
+ turnRecorder({ from, toAgent: to.agent, content, messageId: event.id, addressType: "agent" });
147
+ }
148
+ catch {
149
+ // Never fail delivery due to turn recording
150
+ }
151
+ }
152
+ return {
153
+ id: event.id,
154
+ from,
155
+ to,
156
+ content,
157
+ timestamp: event.timestamp,
158
+ delivered,
159
+ correlationId,
160
+ };
161
+ }
162
+ if (isTaskAddress(to)) {
163
+ // Task address - resolve to assigned agent
164
+ const task = eventStore.getTask(to.task);
165
+ if (!task) {
166
+ throw new AddressRoutingError(`Task not found: ${to.task}`, "TASK_NOT_FOUND", to);
167
+ }
168
+ let targetAgentId;
169
+ if (!task.assigned_agent) {
170
+ // Try to spawn an agent for unassigned task
171
+ if (!agentSpawner) {
172
+ throw new AddressRoutingError(`Task ${to.task} has no assigned agent`, "TASK_UNASSIGNED", to);
173
+ }
174
+ const result = await agentSpawner(to.task, task.description);
175
+ targetAgentId = result.agent_id;
176
+ }
177
+ else {
178
+ targetAgentId = task.assigned_agent;
179
+ }
180
+ const event = eventStore.emit({
181
+ type: "message",
182
+ source: { agent_id: from },
183
+ target: {
184
+ agent_id: targetAgentId,
185
+ address: to,
186
+ delivered: [targetAgentId],
187
+ },
188
+ payload: {
189
+ content,
190
+ correlation_id: correlationId,
191
+ priority,
192
+ delivery_hint: delivery,
193
+ original_target: { task: to.task },
194
+ },
195
+ });
196
+ // Handle wake decision
197
+ if (sessionChecker && wakeHandler) {
198
+ const decision = getWakeDecisionWithHint(targetAgentId, { priority: priority, deliveryHint: delivery }, sessionChecker);
199
+ if (decision.shouldWake || decision.shouldInterrupt) {
200
+ wakeHandler(targetAgentId, decision, event.id);
201
+ }
202
+ }
203
+ delivered.push(targetAgentId);
204
+ // Record turn for conversation tracking
205
+ if (turnRecorder) {
206
+ try {
207
+ turnRecorder({ from, toAgent: targetAgentId, content, messageId: event.id, addressType: "task" });
208
+ }
209
+ catch {
210
+ // Never fail delivery due to turn recording
211
+ }
212
+ }
213
+ return {
214
+ id: event.id,
215
+ from,
216
+ to,
217
+ content,
218
+ timestamp: event.timestamp,
219
+ delivered,
220
+ correlationId,
221
+ };
222
+ }
223
+ if (isScopeAddress(to)) {
224
+ // Scope address - route to topic subscribers
225
+ const subscribers = eventStore.getSubscribers({
226
+ type: "topic",
227
+ target: to.scope,
228
+ });
229
+ if (subscribers.length === 0) {
230
+ throw new AddressRoutingError(`Scope has no subscribers: ${to.scope}`, "NO_RECIPIENTS", to);
231
+ }
232
+ const event = eventStore.emit({
233
+ type: "message",
234
+ source: { agent_id: from },
235
+ target: {
236
+ topic: to.scope,
237
+ address: to,
238
+ delivered: subscribers,
239
+ },
240
+ payload: {
241
+ content,
242
+ correlation_id: correlationId,
243
+ priority,
244
+ delivery_hint: delivery,
245
+ },
246
+ });
247
+ // Handle wake decisions for each subscriber
248
+ // Note: The EventStore already fans out to subscribers via target.topic routing,
249
+ // so we don't emit separate events here (that would cause duplicate messages)
250
+ for (const subscriberId of subscribers) {
251
+ if (sessionChecker && wakeHandler) {
252
+ const decision = getWakeDecisionWithHint(subscriberId, { priority: priority, deliveryHint: delivery }, sessionChecker);
253
+ if (decision.shouldWake || decision.shouldInterrupt) {
254
+ wakeHandler(subscriberId, decision, event.id);
255
+ }
256
+ }
257
+ delivered.push(subscriberId);
258
+ }
259
+ return {
260
+ id: event.id,
261
+ from,
262
+ to,
263
+ content,
264
+ timestamp: event.timestamp,
265
+ delivered,
266
+ correlationId,
267
+ };
268
+ }
269
+ if (isRoleAddress(to)) {
270
+ // Role address - resolve to matching agents
271
+ const agentSource = {
272
+ listAgents: () => eventStore.listAgents(),
273
+ getAgent: (id) => eventStore.getAgent(id),
274
+ // Get agents subscribed to a scope/topic
275
+ getScopeMembers: (scope) => {
276
+ return eventStore.getSubscribers({ type: "topic", target: scope });
277
+ },
278
+ };
279
+ const recipientIds = resolveRoleTarget(agentSource, {
280
+ role: to.role,
281
+ // RoleAddress.within is a ScopeId (subscription-based), not a coordinatorId (hierarchy-based)
282
+ scope: to.within,
283
+ });
284
+ if (recipientIds.length === 0) {
285
+ throw new AddressRoutingError(`No agents found for role: ${to.role}${to.within ? ` within ${to.within}` : ""}`, "NO_RECIPIENTS", to);
286
+ }
287
+ const event = eventStore.emit({
288
+ type: "message",
289
+ source: { agent_id: from },
290
+ target: {
291
+ address: to,
292
+ delivered: recipientIds,
293
+ },
294
+ payload: {
295
+ content,
296
+ correlation_id: correlationId,
297
+ priority,
298
+ delivery_hint: delivery,
299
+ multicast: {
300
+ type: "role",
301
+ role: to.role,
302
+ coordinatorId: to.within,
303
+ recipientCount: recipientIds.length,
304
+ },
305
+ },
306
+ });
307
+ // Fan out to each recipient
308
+ for (const recipientId of recipientIds) {
309
+ eventStore.emit({
310
+ type: "message",
311
+ source: { agent_id: from },
312
+ target: {
313
+ agent_id: recipientId,
314
+ address: { agent: recipientId },
315
+ },
316
+ payload: {
317
+ content,
318
+ correlation_id: correlationId,
319
+ priority,
320
+ delivery_hint: delivery,
321
+ via: "role",
322
+ original_message_id: event.id,
323
+ },
324
+ });
325
+ // Handle wake decision
326
+ if (sessionChecker && wakeHandler) {
327
+ const decision = getWakeDecisionWithHint(recipientId, { priority: priority, deliveryHint: delivery }, sessionChecker);
328
+ if (decision.shouldWake || decision.shouldInterrupt) {
329
+ wakeHandler(recipientId, decision, event.id);
330
+ }
331
+ }
332
+ delivered.push(recipientId);
333
+ }
334
+ return {
335
+ id: event.id,
336
+ from,
337
+ to,
338
+ content,
339
+ timestamp: event.timestamp,
340
+ delivered,
341
+ correlationId,
342
+ };
343
+ }
344
+ if (isBroadcastAddress(to)) {
345
+ // Broadcast to all agents
346
+ const agentSource = {
347
+ listAgents: () => eventStore.listAgents(),
348
+ };
349
+ const recipientIds = resolveBroadcastTarget(agentSource, { scope: "all" });
350
+ const event = eventStore.emit({
351
+ type: "message",
352
+ source: { agent_id: from },
353
+ target: {
354
+ address: to,
355
+ delivered: recipientIds,
356
+ },
357
+ payload: {
358
+ content,
359
+ correlation_id: correlationId,
360
+ priority,
361
+ delivery_hint: delivery,
362
+ multicast: {
363
+ type: "broadcast",
364
+ scope: "all",
365
+ recipientCount: recipientIds.length,
366
+ },
367
+ },
368
+ });
369
+ // Fan out to each recipient
370
+ for (const recipientId of recipientIds) {
371
+ eventStore.emit({
372
+ type: "message",
373
+ source: { agent_id: from },
374
+ target: {
375
+ agent_id: recipientId,
376
+ address: { agent: recipientId },
377
+ },
378
+ payload: {
379
+ content,
380
+ correlation_id: correlationId,
381
+ priority,
382
+ delivery_hint: delivery,
383
+ via: "broadcast",
384
+ original_message_id: event.id,
385
+ },
386
+ });
387
+ // Handle wake decision
388
+ if (sessionChecker && wakeHandler) {
389
+ const decision = getWakeDecisionWithHint(recipientId, { priority: priority, deliveryHint: delivery }, sessionChecker);
390
+ if (decision.shouldWake || decision.shouldInterrupt) {
391
+ wakeHandler(recipientId, decision, event.id);
392
+ }
393
+ }
394
+ delivered.push(recipientId);
395
+ }
396
+ return {
397
+ id: event.id,
398
+ from,
399
+ to,
400
+ content,
401
+ timestamp: event.timestamp,
402
+ delivered,
403
+ correlationId,
404
+ };
405
+ }
406
+ // Should not reach here for legacy-compatible addresses
407
+ throw new AddressRoutingError(`Unhandled address type: ${describeAddress(to)}`, "ADDRESS_NOT_SUPPORTED", to);
408
+ }
409
+ /**
410
+ * Send a message to a hierarchical address (parent, children, ancestors, descendants, siblings).
411
+ * Uses the address resolver to convert the relative address to concrete agent IDs.
412
+ */
413
+ async function sendToHierarchicalAddress(from, to, content, options = {}) {
414
+ const { priority = "normal", delivery, correlationId } = options;
415
+ const delivered = [];
416
+ // Create hierarchy source from EventStore
417
+ const hierarchySource = {
418
+ getAgent: (id) => {
419
+ const agent = eventStore.getAgent(id);
420
+ if (!agent)
421
+ return undefined;
422
+ return {
423
+ id: agent.id,
424
+ parent: agent.parent ?? undefined,
425
+ lineage: agent.lineage,
426
+ state: agent.state,
427
+ };
428
+ },
429
+ listAgents: () => eventStore.listAgents().map((agent) => ({
430
+ id: agent.id,
431
+ parent: agent.parent ?? undefined,
432
+ lineage: agent.lineage,
433
+ state: agent.state,
434
+ })),
435
+ };
436
+ // Resolve the hierarchical address
437
+ const resolved = resolveHierarchicalAddress(to, from, hierarchySource);
438
+ if (resolved.agentIds.length === 0) {
439
+ throw new AddressRoutingError(`No recipients found for hierarchical address: ${describeAddress(to)}`, "NO_RECIPIENTS", to);
440
+ }
441
+ // Emit a primary event for the hierarchical send
442
+ const event = eventStore.emit({
443
+ type: "message",
444
+ source: { agent_id: from },
445
+ target: {
446
+ address: to,
447
+ delivered: resolved.agentIds,
448
+ },
449
+ payload: {
450
+ content,
451
+ correlation_id: correlationId,
452
+ priority,
453
+ delivery_hint: delivery,
454
+ multicast: {
455
+ type: "hierarchical",
456
+ address: describeAddress(to),
457
+ recipientCount: resolved.agentIds.length,
458
+ },
459
+ },
460
+ });
461
+ // Fan out to each resolved recipient
462
+ for (const recipientId of resolved.agentIds) {
463
+ eventStore.emit({
464
+ type: "message",
465
+ source: { agent_id: from },
466
+ target: {
467
+ agent_id: recipientId,
468
+ address: { agent: recipientId },
469
+ },
470
+ payload: {
471
+ content,
472
+ correlation_id: correlationId,
473
+ priority,
474
+ delivery_hint: delivery,
475
+ via: "hierarchical",
476
+ original_message_id: event.id,
477
+ },
478
+ });
479
+ // Handle wake decision
480
+ if (sessionChecker && wakeHandler) {
481
+ const decision = getWakeDecisionWithHint(recipientId, {
482
+ priority: priority,
483
+ deliveryHint: delivery,
484
+ }, sessionChecker);
485
+ if (decision.shouldWake || decision.shouldInterrupt) {
486
+ wakeHandler(recipientId, decision, event.id);
487
+ }
488
+ }
489
+ delivered.push(recipientId);
490
+ }
491
+ return {
492
+ id: event.id,
493
+ from,
494
+ to,
495
+ content,
496
+ timestamp: event.timestamp,
497
+ delivered,
498
+ correlationId,
499
+ };
500
+ }
501
+ /**
502
+ * Send a message to multiple specific agents.
503
+ * Used for { agents: [...] } addresses.
504
+ */
505
+ async function sendToMultipleAgents(from, to, content, options = {}) {
506
+ const { priority = "normal", delivery, correlationId } = options;
507
+ const delivered = [];
508
+ const recipientIds = to.agents;
509
+ if (recipientIds.length === 0) {
510
+ throw new AddressRoutingError("Empty agents array", "NO_RECIPIENTS", to);
511
+ }
512
+ // Verify all agents exist first
513
+ for (const agentId of recipientIds) {
514
+ const agent = eventStore.getAgent(agentId);
515
+ if (!agent) {
516
+ throw new AddressRoutingError(`Agent not found: ${agentId}`, "AGENT_NOT_FOUND", to);
517
+ }
518
+ }
519
+ // Emit primary event for the multi-agent send
520
+ const event = eventStore.emit({
521
+ type: "message",
522
+ source: { agent_id: from },
523
+ target: {
524
+ address: to,
525
+ delivered: recipientIds,
526
+ },
527
+ payload: {
528
+ content,
529
+ correlation_id: correlationId,
530
+ priority,
531
+ delivery_hint: delivery,
532
+ multicast: {
533
+ type: "agents",
534
+ recipientCount: recipientIds.length,
535
+ },
536
+ },
537
+ });
538
+ // Fan out to each recipient
539
+ for (const recipientId of recipientIds) {
540
+ eventStore.emit({
541
+ type: "message",
542
+ source: { agent_id: from },
543
+ target: {
544
+ agent_id: recipientId,
545
+ address: { agent: recipientId },
546
+ },
547
+ payload: {
548
+ content,
549
+ correlation_id: correlationId,
550
+ priority,
551
+ delivery_hint: delivery,
552
+ via: "agents",
553
+ original_message_id: event.id,
554
+ },
555
+ });
556
+ // Handle wake decision
557
+ if (sessionChecker && wakeHandler) {
558
+ const decision = getWakeDecisionWithHint(recipientId, {
559
+ priority: priority,
560
+ deliveryHint: delivery,
561
+ }, sessionChecker);
562
+ if (decision.shouldWake || decision.shouldInterrupt) {
563
+ wakeHandler(recipientId, decision, event.id);
564
+ }
565
+ }
566
+ delivered.push(recipientId);
567
+ }
568
+ return {
569
+ id: event.id,
570
+ from,
571
+ to,
572
+ content,
573
+ timestamp: event.timestamp,
574
+ delivered,
575
+ correlationId,
576
+ };
577
+ }
578
+ function emitStatus(request) {
579
+ const { from, status_type, summary, details } = request;
580
+ // Check emission restrictions if validator installed
581
+ if (emissionValidator) {
582
+ const signal = details?.signal;
583
+ const result = emissionValidator(from.agent_id, signal);
584
+ if (result.action === "reject") {
585
+ // Strict mode: block the emission entirely
586
+ return;
587
+ }
588
+ if (result.action === "audit") {
589
+ // Audit mode: record audit event, then continue with emission
590
+ eventStore.emit({
591
+ type: "status",
592
+ source: { agent_id: "system" },
593
+ payload: {
594
+ status_type: "discovery",
595
+ summary: result.message ?? `Emission audit: agent ${from.agent_id} emitted signal '${signal}'`,
596
+ audit: {
597
+ type: "emission_violation",
598
+ agent_id: from.agent_id,
599
+ signal,
600
+ status_type,
601
+ },
602
+ },
603
+ });
604
+ }
605
+ // "warn" and "allow" proceed normally (warning is logged by the validator installer)
606
+ }
607
+ // Emit status event to event store
608
+ const event = eventStore.emit({
609
+ type: "status",
610
+ source: {
611
+ agent_id: from.agent_id,
612
+ task_id: from.task_id,
613
+ },
614
+ payload: {
615
+ status_type,
616
+ summary,
617
+ details,
618
+ },
619
+ });
620
+ const statusNotification = {
621
+ agent_id: from.agent_id,
622
+ task_id: from.task_id,
623
+ status_type,
624
+ summary,
625
+ details,
626
+ timestamp: event.timestamp,
627
+ };
628
+ // Route to subtree subscribers (hierarchical: parents/ancestors)
629
+ const subtreeRecipients = routeStatusToSubtreeSubscribers(from.agent_id, statusNotification);
630
+ // Route to topic co-subscribers (non-hierarchical: peers sharing topics)
631
+ routeStatusToTopicSubscribers(from.agent_id, statusNotification, subtreeRecipients);
632
+ }
633
+ // ─────────────────────────────────────────────────────────────────
634
+ // Message Retrieval
635
+ // ─────────────────────────────────────────────────────────────────
636
+ function getMessages(agentId, options) {
637
+ const limit = options?.limit;
638
+ const includeAcknowledged = options?.includeAcknowledged ?? false;
639
+ // Get all messages from event store
640
+ const allMessages = eventStore.getMessages(agentId, undefined);
641
+ // Filter out acknowledged unless requested
642
+ const acknowledged = acknowledgedMessages.get(agentId) ?? new Set();
643
+ const filtered = includeAcknowledged
644
+ ? allMessages
645
+ : allMessages.filter((msg) => !acknowledged.has(msg.id));
646
+ // Apply limit
647
+ const limited = limit ? filtered.slice(0, limit) : filtered;
648
+ return limited;
649
+ }
650
+ function getFullMessage(messageId) {
651
+ return eventStore.getFullMessage(messageId);
652
+ }
653
+ // ─────────────────────────────────────────────────────────────────
654
+ // Message Acknowledgment
655
+ // ─────────────────────────────────────────────────────────────────
656
+ function acknowledgeMessage(agentId, messageId) {
657
+ if (!acknowledgedMessages.has(agentId)) {
658
+ acknowledgedMessages.set(agentId, new Set());
659
+ }
660
+ acknowledgedMessages.get(agentId).add(messageId);
661
+ }
662
+ function acknowledgeMessages(agentId, messageIds) {
663
+ if (!acknowledgedMessages.has(agentId)) {
664
+ acknowledgedMessages.set(agentId, new Set());
665
+ }
666
+ const set = acknowledgedMessages.get(agentId);
667
+ for (const id of messageIds) {
668
+ set.add(id);
669
+ }
670
+ }
671
+ // ─────────────────────────────────────────────────────────────────
672
+ // Subscription Management
673
+ // ─────────────────────────────────────────────────────────────────
674
+ function subscribe(agentId, channel) {
675
+ eventStore.addSubscription(agentId, {
676
+ type: channel.type,
677
+ target: channel.target,
678
+ });
679
+ }
680
+ function unsubscribe(agentId, channel) {
681
+ eventStore.removeSubscription(agentId, {
682
+ type: channel.type,
683
+ target: channel.target,
684
+ });
685
+ }
686
+ function getSubscriptions(agentId) {
687
+ const subs = eventStore.getSubscriptions(agentId);
688
+ return subs.map((s) => ({
689
+ type: s.type,
690
+ target: s.target,
691
+ }));
692
+ }
693
+ function getSubscribers(channel) {
694
+ return eventStore.getSubscribers({
695
+ type: channel.type,
696
+ target: channel.target,
697
+ });
698
+ }
699
+ // ─────────────────────────────────────────────────────────────────
700
+ // Setup Helpers
701
+ // ─────────────────────────────────────────────────────────────────
702
+ function setupDefaultSubscriptions(options) {
703
+ const { agent_id, parent_id, task_id, subscribe_parent = true, additional_topics = [], role, } = options;
704
+ // 1. Subscribe agent to its own direct channel
705
+ subscribe(agent_id, { type: "agent", target: agent_id });
706
+ // 2. Subscribe agent to lineage (receives messages from ancestors)
707
+ subscribe(agent_id, { type: "lineage", target: agent_id });
708
+ // 3. Subscribe agent to task channel if task_id provided
709
+ if (task_id) {
710
+ subscribe(agent_id, { type: "task", target: task_id });
711
+ }
712
+ // 4. Subscribe parent to agent's subtree if requested
713
+ if (parent_id && subscribe_parent) {
714
+ subscribe(parent_id, { type: "subtree", target: agent_id });
715
+ }
716
+ // 5. Subscribe to additional topics
717
+ for (const topic of additional_topics) {
718
+ subscribe(agent_id, { type: "topic", target: topic });
719
+ }
720
+ // 6. Auto-subscribe to role channel if role is provided (Tier 1: Gastown model)
721
+ if (role) {
722
+ subscribe(agent_id, { type: "role", target: role });
723
+ }
724
+ }
725
+ // ─────────────────────────────────────────────────────────────────
726
+ // Internal Helpers
727
+ // ─────────────────────────────────────────────────────────────────
728
+ /**
729
+ * Route status event to subtree subscribers.
730
+ * Parents who have subscribed to an agent's subtree receive status notifications.
731
+ * Returns the set of agents that were notified (for dedup with topic routing).
732
+ */
733
+ function routeStatusToSubtreeSubscribers(agentId, status) {
734
+ const notified = new Set();
735
+ const agent = eventStore.getAgent(agentId);
736
+ if (!agent)
737
+ return notified;
738
+ // Find all agents with subtree subscription that includes this agent
739
+ // This includes:
740
+ // 1. Direct subtree subscription to this agent
741
+ // 2. Subtree subscription to any ancestor of this agent
742
+ const agentsToNotify = new Set();
743
+ // Check direct subtree subscribers
744
+ const directSubscribers = eventStore.getSubscribers({
745
+ type: "subtree",
746
+ target: agentId,
747
+ });
748
+ for (const sub of directSubscribers) {
749
+ agentsToNotify.add(sub);
750
+ }
751
+ // Check subtree subscribers of ancestors (they also want events from descendants)
752
+ for (const ancestorId of agent.lineage) {
753
+ const ancestorSubscribers = eventStore.getSubscribers({
754
+ type: "subtree",
755
+ target: ancestorId,
756
+ });
757
+ // Only add if the subscriber is an ancestor of the current agent
758
+ // (meaning they subscribed to one of our ancestors' subtrees)
759
+ for (const sub of ancestorSubscribers) {
760
+ // Check if sub is an ancestor of agentId
761
+ if (agent.lineage.includes(sub)) {
762
+ agentsToNotify.add(sub);
763
+ }
764
+ }
765
+ }
766
+ // Extract signal name from details (if tagged)
767
+ const statusSignal = status.details?.signal;
768
+ // Send status notification to each subscriber
769
+ for (const subscriberId of agentsToNotify) {
770
+ // Skip self-notification
771
+ if (subscriberId === agentId)
772
+ continue;
773
+ // Apply signal filter if installed
774
+ if (signalFilter && !signalFilter(agentId, subscriberId, statusSignal)) {
775
+ continue;
776
+ }
777
+ const statusContent = JSON.stringify({
778
+ type: "status_notification",
779
+ ...status,
780
+ });
781
+ const event = eventStore.emit({
782
+ type: "message",
783
+ source: {
784
+ agent_id: agentId,
785
+ },
786
+ target: {
787
+ agent_id: subscriberId,
788
+ },
789
+ payload: {
790
+ content: statusContent,
791
+ via: "subtree",
792
+ },
793
+ });
794
+ // Wake sleeping agents on status notifications
795
+ if (sessionChecker && wakeHandler) {
796
+ try {
797
+ const decision = getWakeDecisionWithHint(subscriberId, { priority: "normal" }, sessionChecker);
798
+ if (decision.shouldWake || decision.shouldInterrupt) {
799
+ wakeHandler(subscriberId, decision, event.id);
800
+ }
801
+ }
802
+ catch {
803
+ // Never fail status delivery due to wake errors
804
+ }
805
+ }
806
+ notified.add(subscriberId);
807
+ }
808
+ return notified;
809
+ }
810
+ /**
811
+ * Route status event to topic co-subscribers.
812
+ * Agents sharing topic subscriptions with the emitting agent receive status notifications.
813
+ * This enables non-hierarchical visibility: peers on the same topic see each other's status.
814
+ * Skips agents already notified via subtree routing to avoid duplicates.
815
+ */
816
+ function routeStatusToTopicSubscribers(agentId, status, alreadyNotified) {
817
+ // Find all topics the emitting agent is subscribed to
818
+ const subscriptions = eventStore.getSubscriptions(agentId);
819
+ const topicSubscriptions = subscriptions.filter((s) => s.type === "topic");
820
+ if (topicSubscriptions.length === 0)
821
+ return;
822
+ // Collect unique recipients across all shared topics
823
+ const topicRecipients = new Set();
824
+ for (const sub of topicSubscriptions) {
825
+ const subscribers = eventStore.getSubscribers({
826
+ type: "topic",
827
+ target: sub.target,
828
+ });
829
+ for (const subscriberId of subscribers) {
830
+ // Skip self and already-notified (from subtree routing)
831
+ if (subscriberId !== agentId && !alreadyNotified.has(subscriberId)) {
832
+ topicRecipients.add(subscriberId);
833
+ }
834
+ }
835
+ }
836
+ if (topicRecipients.size === 0)
837
+ return;
838
+ // Extract signal name from details (if tagged)
839
+ const statusSignal = status.details?.signal;
840
+ const statusContent = JSON.stringify({
841
+ type: "status_notification",
842
+ ...status,
843
+ });
844
+ // Deliver to each topic co-subscriber
845
+ for (const recipientId of topicRecipients) {
846
+ // Apply signal filter if installed
847
+ if (signalFilter && !signalFilter(agentId, recipientId, statusSignal)) {
848
+ continue;
849
+ }
850
+ const event = eventStore.emit({
851
+ type: "message",
852
+ source: {
853
+ agent_id: agentId,
854
+ },
855
+ target: {
856
+ agent_id: recipientId,
857
+ },
858
+ payload: {
859
+ content: statusContent,
860
+ via: "topic",
861
+ },
862
+ });
863
+ // Wake sleeping agents on status notifications
864
+ if (sessionChecker && wakeHandler) {
865
+ try {
866
+ const decision = getWakeDecisionWithHint(recipientId, { priority: "normal" }, sessionChecker);
867
+ if (decision.shouldWake || decision.shouldInterrupt) {
868
+ wakeHandler(recipientId, decision, event.id);
869
+ }
870
+ }
871
+ catch {
872
+ // Never fail status delivery due to wake errors
873
+ }
874
+ }
875
+ }
876
+ }
877
+ function setTurnRecorder(recorder) {
878
+ turnRecorder = recorder;
879
+ }
880
+ function setSignalFilter(filter) {
881
+ signalFilter = filter;
882
+ }
883
+ function setEmissionValidator(validator) {
884
+ emissionValidator = validator;
885
+ }
886
+ return {
887
+ sendToAddress,
888
+ emitStatus,
889
+ getMessages,
890
+ getFullMessage,
891
+ acknowledgeMessage,
892
+ acknowledgeMessages,
893
+ subscribe,
894
+ unsubscribe,
895
+ getSubscriptions,
896
+ getSubscribers,
897
+ setupDefaultSubscriptions,
898
+ setTurnRecorder,
899
+ setSignalFilter,
900
+ setEmissionValidator,
901
+ };
902
+ }
903
+ //# sourceMappingURL=message-router.js.map