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,1199 @@
1
+ /**
2
+ * MAPAdapter - External MAP Protocol Interface
3
+ *
4
+ * ## Routing Architecture Role
5
+ *
6
+ * MAPAdapter is the **external protocol translation layer** for MAP clients.
7
+ * It translates MAP protocol messages into internal routing calls.
8
+ *
9
+ * ```
10
+ * External → MAPAdapter → MessageRouter → EventStore
11
+ * (MAP RPC) (this) (routing) (persistence)
12
+ * ```
13
+ *
14
+ * **Responsibilities:**
15
+ * - Accept MAP protocol connections (JSON-RPC over WebSocket/streams)
16
+ * - Manage participant lifecycle (connect, disconnect, capabilities)
17
+ * - Handle authentication and permission enforcement (Layer 1)
18
+ * - Translate MAP addresses to internal routing
19
+ * - Stream events to subscribed participants
20
+ * - Dispatch extension method calls (spawn, wake, tasks, etc.)
21
+ *
22
+ * **Delegates to internal components:**
23
+ * - MessageRouter: For message routing and delivery (sendToAddress)
24
+ * - AgentManager: For agent lifecycle operations
25
+ * - EventStore: For event persistence and subscription
26
+ *
27
+ * **Not responsible for:**
28
+ * - Internal agent-to-agent messaging (use MessageRouter directly)
29
+ * - Batch event delivery (use TriggerRouter/WakeManager)
30
+ * - Legacy channel-based routing (use MessageRouter.send())
31
+ *
32
+ * @see specs/s-5qir_map_integration_for_macro_agent.md
33
+ */
34
+ import { ulid } from "ulid";
35
+ import { isAgentAddress, } from "../types.js";
36
+ import { createConnectionManager, } from "./connection-manager.js";
37
+ import { createSubscriptionManager, } from "./subscription-manager.js";
38
+ import { createRPCHandler, RPCError, createCapabilityMiddleware, createNotification, } from "./rpc-handler.js";
39
+ import { EXTENSION_CAPABILITIES } from "./extensions/index.js";
40
+ import { ACPOverMAPHandler } from "./acp-over-map.js";
41
+ import { createMailHandlers } from "./mail-handler-adapter.js";
42
+ import { EventLog, dotToUnderscore } from "./event-log.js";
43
+ // =============================================================================
44
+ // MAPAdapter Implementation
45
+ // =============================================================================
46
+ /**
47
+ * MAPAdapter implementation.
48
+ */
49
+ export class MAPAdapterImpl {
50
+ config;
51
+ connections;
52
+ subscriptions;
53
+ sessions = new Map();
54
+ extensions = new Map();
55
+ scopes = new Map();
56
+ eventHandlers = new Set();
57
+ services;
58
+ acpOverMapHandler = null;
59
+ /** Sequence numbers per subscription for proper event ordering */
60
+ subscriptionSequences = new Map();
61
+ /** In-memory event log for map/replay support */
62
+ eventLog;
63
+ running = false;
64
+ constructor(config = {}, services = {}) {
65
+ this.config = {
66
+ name: config.name ?? "macro-agent",
67
+ version: config.version ?? "1.0.0",
68
+ ...config,
69
+ };
70
+ this.services = services;
71
+ // Initialize ACP-over-MAP handler if services are available
72
+ if (services.agentManager && services.eventStore && services.taskManager) {
73
+ this.acpOverMapHandler = new ACPOverMAPHandler({
74
+ agentManager: services.agentManager,
75
+ eventStore: services.eventStore,
76
+ taskManager: services.taskManager,
77
+ defaultCwd: services.defaultCwd,
78
+ // Note: agent_registered events are now emitted by the lifecycle
79
+ // listener below, which covers ALL spawn paths (ACP, MCP, etc.)
80
+ });
81
+ console.error("[MAPAdapter] ACP-over-MAP handler initialized");
82
+ }
83
+ // Listen for agent lifecycle events so spawns/stops happening in THIS
84
+ // process (main server) emit MAP events to subscribers immediately.
85
+ if (services.agentManager) {
86
+ services.agentManager.onLifecycleEvent((event) => {
87
+ if (event.type === "spawned" && event.agent) {
88
+ const agentId = event.agent.id;
89
+ this.emitEvent({
90
+ eventId: ulid(),
91
+ type: "agent_registered",
92
+ timestamp: Date.now(),
93
+ agentId,
94
+ data: {
95
+ agentId: event.agent.id,
96
+ name: event.agent.name ?? "",
97
+ role: event.agent.role ?? "worker",
98
+ state: event.agent.state ?? "spawning",
99
+ parent: event.agent.parent ?? undefined,
100
+ metadata: event.agent.metadata ?? {},
101
+ },
102
+ });
103
+ }
104
+ else if (event.type === "stopped" && event.agent) {
105
+ const agentId = event.agent.id;
106
+ this.emitEvent({
107
+ eventId: ulid(),
108
+ type: "agent_state_changed",
109
+ timestamp: Date.now(),
110
+ agentId,
111
+ data: {
112
+ agentId: event.agent.id,
113
+ current: "stopped",
114
+ previous: "running",
115
+ reason: event.reason,
116
+ },
117
+ });
118
+ this.emitEvent({
119
+ eventId: ulid(),
120
+ type: "agent_unregistered",
121
+ timestamp: Date.now(),
122
+ agentId,
123
+ data: {
124
+ agentId: event.agent.id,
125
+ reason: event.reason,
126
+ },
127
+ });
128
+ }
129
+ });
130
+ }
131
+ // Listen for EventStore task changes to emit MAP task events.
132
+ // Task mutations from MCP bridge handlers run in-process, so
133
+ // onTaskChange fires immediately when tasks are created/updated.
134
+ if (services.eventStore) {
135
+ services.eventStore.onTaskChange((taskId, task) => {
136
+ if (!task)
137
+ return;
138
+ // Map task status to MAP event type
139
+ const eventTypeMap = {
140
+ pending: "task_created",
141
+ assigned: "task_assigned",
142
+ in_progress: "task_assigned",
143
+ completed: "task_completed",
144
+ failed: "task_failed",
145
+ // OpenTasks statuses (defensive — normally mapped before reaching here)
146
+ closed: "task_completed",
147
+ open: "task_created",
148
+ };
149
+ const mapEventType = eventTypeMap[task.status];
150
+ if (mapEventType) {
151
+ this.emitEvent({
152
+ eventId: ulid(),
153
+ type: mapEventType,
154
+ timestamp: Date.now(),
155
+ agentId: (task.assigned_agent ?? undefined),
156
+ data: {
157
+ taskId,
158
+ description: task.description,
159
+ status: task.status,
160
+ assignee: task.assigned_agent,
161
+ },
162
+ });
163
+ }
164
+ });
165
+ }
166
+ // Initialize connection manager
167
+ this.connections = createConnectionManager({
168
+ limits: config.limits,
169
+ anonymousCapabilities: config.anonymousCapabilities,
170
+ defaultClientCapabilities: config.defaultClientCapabilities,
171
+ defaultAgentCapabilities: config.defaultAgentCapabilities,
172
+ });
173
+ // Initialize subscription manager
174
+ this.subscriptions = createSubscriptionManager({
175
+ limits: config.limits,
176
+ getAncestors: services.getAncestors,
177
+ getDescendants: services.getDescendants,
178
+ });
179
+ // Initialize event log for replay support
180
+ this.eventLog = new EventLog({
181
+ maxSize: config.limits?.maxReplayBufferSize ?? 10_000,
182
+ });
183
+ // Forward connection events
184
+ this.connections.onEvent((event) => {
185
+ if (event.type === "participant.connected") {
186
+ this.emitAdapterEvent({
187
+ type: "participant.connected",
188
+ participant: event.participant,
189
+ });
190
+ }
191
+ else if (event.type === "participant.disconnected") {
192
+ this.emitAdapterEvent({
193
+ type: "participant.disconnected",
194
+ participantId: event.participantId,
195
+ reason: event.reason,
196
+ });
197
+ }
198
+ });
199
+ // Forward subscription events
200
+ this.subscriptions.onEvent((event) => {
201
+ if (event.type === "subscription.created") {
202
+ this.emitAdapterEvent({
203
+ type: "subscription.created",
204
+ subscriptionId: event.subscription.id,
205
+ });
206
+ }
207
+ else if (event.type === "subscription.removed") {
208
+ this.emitAdapterEvent({
209
+ type: "subscription.removed",
210
+ subscriptionId: event.subscriptionId,
211
+ });
212
+ }
213
+ });
214
+ }
215
+ // ===========================================================================
216
+ // Connection Management
217
+ // ===========================================================================
218
+ async acceptConnection(stream) {
219
+ if (!this.running) {
220
+ throw new Error("Adapter not running");
221
+ }
222
+ // Create participant with default client type (will be updated after connect handshake)
223
+ const participant = this.connections.connect({
224
+ type: "client",
225
+ });
226
+ // Create RPC handler for this connection
227
+ const rpcHandler = this.createRPCHandler(participant.id);
228
+ // Get writer for sending responses
229
+ const writer = stream.writable.getWriter();
230
+ // Create abort controller for this session
231
+ const abortController = new AbortController();
232
+ // Track session
233
+ const session = {
234
+ participantId: participant.id,
235
+ participant,
236
+ rpcHandler,
237
+ stream,
238
+ writer,
239
+ abortController,
240
+ };
241
+ this.sessions.set(participant.id, session);
242
+ // Start message processing
243
+ this.processMessages(session).catch((error) => {
244
+ if (!abortController.signal.aborted) {
245
+ console.error("[MAPAdapter] Message processing error:", error);
246
+ this.disconnectParticipant(participant.id, "processing_error");
247
+ }
248
+ });
249
+ return participant;
250
+ }
251
+ async disconnectParticipant(id, reason) {
252
+ const session = this.sessions.get(id);
253
+ if (!session) {
254
+ return;
255
+ }
256
+ // Abort message processing
257
+ session.abortController.abort();
258
+ // Clean up subscriptions
259
+ this.subscriptions.removeAllForParticipant(id);
260
+ // Close writer
261
+ try {
262
+ session.writer.releaseLock();
263
+ const writer = session.stream.writable.getWriter();
264
+ await writer.close();
265
+ }
266
+ catch {
267
+ // Ignore close errors
268
+ }
269
+ // Remove session
270
+ this.sessions.delete(id);
271
+ // Disconnect from connection manager
272
+ this.connections.disconnect(id, reason);
273
+ }
274
+ getParticipants() {
275
+ return this.connections.getParticipants();
276
+ }
277
+ getParticipant(id) {
278
+ return this.connections.getParticipant(id);
279
+ }
280
+ // ===========================================================================
281
+ // Messaging
282
+ // ===========================================================================
283
+ async sendMessage(participantId, to, payload, options) {
284
+ const participant = this.connections.getParticipant(participantId);
285
+ if (!participant) {
286
+ throw RPCError.notFound("participant", participantId);
287
+ }
288
+ if (!participant.capabilities.canMessage) {
289
+ throw RPCError.permissionDenied("Messaging not allowed");
290
+ }
291
+ // For external clients, use a virtual sender ID
292
+ const senderId = `external:${participantId}`;
293
+ if (!this.services.sendMessage) {
294
+ throw RPCError.internalError("Message routing not available");
295
+ }
296
+ const result = await this.services.sendMessage(senderId, to, typeof payload.content === "string"
297
+ ? payload.content
298
+ : JSON.stringify(payload.content), options);
299
+ return {
300
+ messageId: `msg-${ulid()}`,
301
+ delivered: result.delivered,
302
+ };
303
+ }
304
+ // ===========================================================================
305
+ // Subscriptions
306
+ // ===========================================================================
307
+ async createSubscription(participantId, filter) {
308
+ const participant = this.connections.getParticipant(participantId);
309
+ if (!participant) {
310
+ throw RPCError.notFound("participant", participantId);
311
+ }
312
+ if (!participant.capabilities.canSubscribe) {
313
+ throw RPCError.permissionDenied("Subscriptions not allowed");
314
+ }
315
+ return this.subscriptions.subscribe(participantId, filter);
316
+ }
317
+ async removeSubscription(subscriptionId) {
318
+ this.subscriptions.unsubscribe(subscriptionId);
319
+ this.subscriptionSequences.delete(subscriptionId);
320
+ }
321
+ getSubscriptions(participantId) {
322
+ return this.subscriptions.getSubscriptionIds(participantId);
323
+ }
324
+ async pauseSubscription(subscriptionId) {
325
+ this.subscriptions.pause(subscriptionId);
326
+ }
327
+ async resumeSubscription(subscriptionId) {
328
+ this.subscriptions.resume(subscriptionId);
329
+ }
330
+ // ===========================================================================
331
+ // Queries
332
+ // ===========================================================================
333
+ listAgents(participantId, filter) {
334
+ const participant = this.connections.getParticipant(participantId);
335
+ if (!participant) {
336
+ return [];
337
+ }
338
+ if (!participant.capabilities.canQuery) {
339
+ return [];
340
+ }
341
+ if (!this.services.listAgents) {
342
+ return [];
343
+ }
344
+ const agents = this.services.listAgents(filter);
345
+ return agents.map((agent) => this.toAgentInfo(agent));
346
+ }
347
+ getAgent(participantId, agentId) {
348
+ const participant = this.connections.getParticipant(participantId);
349
+ if (!participant) {
350
+ return undefined;
351
+ }
352
+ if (!participant.capabilities.canQuery) {
353
+ return undefined;
354
+ }
355
+ if (!this.services.getAgent) {
356
+ return undefined;
357
+ }
358
+ const agent = this.services.getAgent(agentId);
359
+ return agent ? this.toAgentInfo(agent) : undefined;
360
+ }
361
+ listScopes(participantId) {
362
+ const participant = this.connections.getParticipant(participantId);
363
+ if (!participant) {
364
+ return [];
365
+ }
366
+ if (!participant.capabilities.canQuery) {
367
+ return [];
368
+ }
369
+ return Array.from(this.scopes.values()).map((scope) => this.toScopeInfo(scope));
370
+ }
371
+ getScope(participantId, scopeId) {
372
+ const participant = this.connections.getParticipant(participantId);
373
+ if (!participant) {
374
+ return undefined;
375
+ }
376
+ if (!participant.capabilities.canQuery) {
377
+ return undefined;
378
+ }
379
+ const scope = this.scopes.get(scopeId);
380
+ return scope ? this.toScopeInfo(scope) : undefined;
381
+ }
382
+ // ===========================================================================
383
+ // Events
384
+ // ===========================================================================
385
+ emitEvent(event) {
386
+ // Log event for replay support
387
+ this.eventLog.append({
388
+ eventId: event.eventId,
389
+ timestamp: event.timestamp,
390
+ type: event.type,
391
+ data: event.data,
392
+ causedBy: event.causedBy,
393
+ agentId: event.agentId,
394
+ scopeId: event.scopeId,
395
+ });
396
+ // Match event against subscriptions
397
+ const { subscriptions: matchingSubs } = this.subscriptions.match(event);
398
+ // Send to each matched subscription with proper SDK format
399
+ // SDK EventNotificationParams: { subscriptionId, sequenceNumber, eventId?, timestamp?, event, causedBy? }
400
+ for (const subscription of matchingSubs) {
401
+ const session = this.sessions.get(subscription.participantId);
402
+ if (session) {
403
+ // Get and increment sequence number for this subscription
404
+ const currentSeq = this.subscriptionSequences.get(subscription.id) ?? 0;
405
+ this.subscriptionSequences.set(subscription.id, currentSeq + 1);
406
+ // Build params in SDK EventNotificationParams format
407
+ const params = {
408
+ subscriptionId: subscription.id,
409
+ sequenceNumber: currentSeq,
410
+ eventId: event.eventId, // For deduplication
411
+ timestamp: event.timestamp, // Envelope timestamp
412
+ event: {
413
+ // The actual event object
414
+ id: event.eventId,
415
+ type: event.type,
416
+ timestamp: event.timestamp,
417
+ data: event.data,
418
+ },
419
+ ...(event.causedBy && { causedBy: event.causedBy }),
420
+ };
421
+ const notification = createNotification("map/event", params);
422
+ this.sendToSession(session, notification).catch((error) => {
423
+ console.error("[MAPAdapter] Failed to send event:", error);
424
+ });
425
+ }
426
+ }
427
+ }
428
+ onEvent(handler) {
429
+ this.eventHandlers.add(handler);
430
+ return () => this.eventHandlers.delete(handler);
431
+ }
432
+ // ===========================================================================
433
+ // Extensions
434
+ // ===========================================================================
435
+ registerExtension(method, handler) {
436
+ if (!method.startsWith("_macro/")) {
437
+ throw new Error(`Extension method must start with "_macro/": ${method}`);
438
+ }
439
+ this.extensions.set(method, handler);
440
+ }
441
+ unregisterExtension(method) {
442
+ this.extensions.delete(method);
443
+ }
444
+ getExtensions() {
445
+ return Array.from(this.extensions.keys());
446
+ }
447
+ hasExtension(method) {
448
+ return this.extensions.has(method);
449
+ }
450
+ // ===========================================================================
451
+ // Lifecycle
452
+ // ===========================================================================
453
+ async start() {
454
+ if (this.running) {
455
+ return;
456
+ }
457
+ this.running = true;
458
+ }
459
+ async stop(graceful = true) {
460
+ if (!this.running) {
461
+ return;
462
+ }
463
+ this.running = false;
464
+ // Disconnect all participants
465
+ const reason = graceful ? "server_shutdown" : "server_stopped";
466
+ this.connections.disconnectAll(reason);
467
+ // Clear sessions
468
+ for (const session of this.sessions.values()) {
469
+ session.abortController.abort();
470
+ }
471
+ this.sessions.clear();
472
+ }
473
+ isRunning() {
474
+ return this.running;
475
+ }
476
+ // ===========================================================================
477
+ // Scope Management (internal)
478
+ // ===========================================================================
479
+ /**
480
+ * Create a scope (internal use by RPC handlers).
481
+ */
482
+ createScope(name, metadata) {
483
+ const id = `scope-${ulid()}`;
484
+ this.scopes.set(id, {
485
+ id,
486
+ name,
487
+ members: new Set(),
488
+ createdAt: Date.now(),
489
+ metadata,
490
+ });
491
+ return id;
492
+ }
493
+ /**
494
+ * Delete a scope.
495
+ */
496
+ deleteScope(scopeId) {
497
+ return this.scopes.delete(scopeId);
498
+ }
499
+ /**
500
+ * Add agent to scope.
501
+ */
502
+ joinScope(scopeId, agentId) {
503
+ const scope = this.scopes.get(scopeId);
504
+ if (!scope) {
505
+ return false;
506
+ }
507
+ scope.members.add(agentId);
508
+ return true;
509
+ }
510
+ /**
511
+ * Remove agent from scope.
512
+ */
513
+ leaveScope(scopeId, agentId) {
514
+ const scope = this.scopes.get(scopeId);
515
+ if (!scope) {
516
+ return false;
517
+ }
518
+ return scope.members.delete(agentId);
519
+ }
520
+ // ===========================================================================
521
+ // Private Methods
522
+ // ===========================================================================
523
+ createRPCHandler(participantId) {
524
+ const handlers = {
525
+ // Connection
526
+ "map/connect": async (params) => this.handleConnect(participantId, params),
527
+ "map/disconnect": async () => this.handleDisconnect(participantId),
528
+ // Subscriptions
529
+ "map/subscribe": async (params) => this.handleSubscribe(participantId, params),
530
+ "map/unsubscribe": async (params) => this.handleUnsubscribe(participantId, params),
531
+ // Replay
532
+ "map/replay": async (params) => this.handleReplay(participantId, params),
533
+ // Messaging
534
+ "map/send": async (params, ctx) => this.handleSend(participantId, params, ctx),
535
+ // Agent queries
536
+ "map/agents/list": async (params) => this.handleListAgents(participantId, params),
537
+ "map/agents/get": async (params) => this.handleGetAgent(participantId, params),
538
+ // Agent lifecycle
539
+ "map/agents/stop": async (params) => this.handleStopAgent(participantId, params),
540
+ // Scope queries
541
+ "map/scopes/list": async () => this.handleListScopes(participantId),
542
+ "map/scopes/get": async (params) => this.handleGetScope(participantId, params),
543
+ "map/scopes/create": async (params, ctx) => this.handleCreateScope(participantId, params, ctx),
544
+ "map/scopes/join": async (params) => this.handleJoinScope(participantId, params),
545
+ "map/scopes/leave": async (params) => this.handleLeaveScope(participantId, params),
546
+ // Federation methods
547
+ "map/federation/connect": async (params) => this.handleFederationConnect(participantId, params),
548
+ "map/federation/disconnect": async (params) => this.handleFederationDisconnect(participantId, params),
549
+ "map/federation/list": async () => this.handleFederationList(participantId),
550
+ "map/federation/capabilities": async (params) => this.handleFederationCapabilities(participantId, params),
551
+ };
552
+ // Add extension method handlers
553
+ for (const [method, handler] of this.extensions) {
554
+ handlers[method] = async (params, ctx) => {
555
+ const extCtx = {
556
+ participantId: ctx.participantId,
557
+ capabilities: ctx.capabilities,
558
+ sessionId: this.sessions.get(ctx.participantId)?.participant.sessionId ?? "",
559
+ };
560
+ return handler(extCtx, params);
561
+ };
562
+ }
563
+ // Add mail protocol handlers if mail service is available
564
+ if (this.services.mailService) {
565
+ const mailHandlers = createMailHandlers(this.services.mailService);
566
+ for (const [method, handler] of Object.entries(mailHandlers)) {
567
+ handlers[method] = handler;
568
+ }
569
+ }
570
+ // Capability requirements for methods
571
+ const capabilityRequirements = {
572
+ "map/subscribe": "canSubscribe",
573
+ "map/replay": "canSubscribe",
574
+ "map/send": "canMessage",
575
+ "map/agents/list": "canQuery",
576
+ "map/agents/get": "canQuery",
577
+ "map/agents/stop": "canStop",
578
+ "map/scopes/list": "canQuery",
579
+ "map/scopes/get": "canQuery",
580
+ "map/scopes/create": "canManageScopes",
581
+ // Federation methods
582
+ "map/federation/connect": "canManageFederation",
583
+ "map/federation/disconnect": "canManageFederation",
584
+ "map/federation/list": "canQuery",
585
+ "map/federation/capabilities": "canQuery",
586
+ };
587
+ // Add capability requirements for registered extension methods
588
+ for (const method of this.extensions.keys()) {
589
+ const capability = EXTENSION_CAPABILITIES[method];
590
+ if (capability) {
591
+ capabilityRequirements[method] =
592
+ capability;
593
+ }
594
+ }
595
+ return createRPCHandler({
596
+ handlers,
597
+ middleware: [createCapabilityMiddleware(capabilityRequirements)],
598
+ });
599
+ }
600
+ async processMessages(session) {
601
+ const reader = session.stream.readable.getReader();
602
+ try {
603
+ while (!session.abortController.signal.aborted) {
604
+ const { done, value } = await reader.read();
605
+ if (done) {
606
+ break;
607
+ }
608
+ // Process the message
609
+ const participant = this.connections.getParticipant(session.participantId);
610
+ if (!participant) {
611
+ break;
612
+ }
613
+ // Process messages concurrently (same pattern as toad reference).
614
+ // The message loop must not block on any handler, otherwise
615
+ // session/cancel can't be delivered while session/prompt is running.
616
+ // The stream writer queues writes safely, so concurrent responses
617
+ // don't interleave.
618
+ const processAndRespond = async () => {
619
+ const result = await session.rpcHandler.process(value, {
620
+ participantId: session.participantId,
621
+ capabilities: participant.capabilities,
622
+ signal: session.abortController.signal,
623
+ });
624
+ if (result.type === "response") {
625
+ await this.sendToSession(session, result.response);
626
+ }
627
+ };
628
+ processAndRespond().catch((err) => {
629
+ if (!session.abortController.signal.aborted) {
630
+ console.error(`[MAPAdapter] Error processing message:`, err);
631
+ }
632
+ });
633
+ }
634
+ }
635
+ catch (error) {
636
+ if (!session.abortController.signal.aborted) {
637
+ throw error;
638
+ }
639
+ }
640
+ finally {
641
+ reader.releaseLock();
642
+ }
643
+ }
644
+ async sendToSession(session, message) {
645
+ try {
646
+ // Use the existing writer from the session (acquired in acceptConnection)
647
+ await session.writer.write(message);
648
+ }
649
+ catch (error) {
650
+ console.error("[MAPAdapter] Failed to send message:", error);
651
+ throw error;
652
+ }
653
+ }
654
+ emitAdapterEvent(event) {
655
+ for (const handler of this.eventHandlers) {
656
+ try {
657
+ handler(event);
658
+ }
659
+ catch (error) {
660
+ console.error("[MAPAdapter] Event handler error:", error);
661
+ }
662
+ }
663
+ }
664
+ // ===========================================================================
665
+ // RPC Handlers
666
+ // ===========================================================================
667
+ async handleConnect(participantId, params) {
668
+ const participant = this.connections.getParticipant(participantId);
669
+ if (!participant) {
670
+ throw RPCError.notFound("participant", participantId);
671
+ }
672
+ // Parse connect request parameters
673
+ const connectParams = params;
674
+ const requestedType = connectParams?.type ?? connectParams?.participantType ?? participant.type;
675
+ const credentials = connectParams?.credentials;
676
+ // Handle authentication if handler is configured and credentials provided
677
+ if (this.config.authenticate && credentials) {
678
+ const authResult = await this.config.authenticate(requestedType, credentials);
679
+ if (!authResult.allowed) {
680
+ throw RPCError.authenticationFailed(authResult.error ?? "Authentication failed");
681
+ }
682
+ // Update capabilities based on auth result
683
+ const newCapabilities = authResult.capabilities ?? this.getDefaultCapabilities(requestedType);
684
+ this.connections.updateCapabilities(participantId, newCapabilities);
685
+ // Return updated participant info
686
+ const updatedParticipant = this.connections.getParticipant(participantId);
687
+ return {
688
+ participantId: participant.id,
689
+ capabilities: updatedParticipant?.capabilities ?? newCapabilities,
690
+ };
691
+ }
692
+ // Start with default capabilities for the requested type
693
+ const baseCapabilities = this.getDefaultCapabilities(requestedType);
694
+ // Merge client-requested capabilities (SDK nested format → flat format).
695
+ // Clients can request additional capabilities; the server grants them
696
+ // by merging with the type defaults.
697
+ if (connectParams?.capabilities) {
698
+ const req = connectParams.capabilities;
699
+ const requested = {};
700
+ if (req.observation?.canQuery !== undefined)
701
+ requested.canQuery = req.observation.canQuery;
702
+ if (req.observation?.canObserve !== undefined)
703
+ requested.canSubscribe = req.observation.canObserve;
704
+ if (req.messaging?.canSend !== undefined)
705
+ requested.canMessage = req.messaging.canSend;
706
+ if (req.lifecycle?.canSpawn !== undefined)
707
+ requested.canSpawn = req.lifecycle.canSpawn;
708
+ if (req.lifecycle?.canStop !== undefined)
709
+ requested.canStop = req.lifecycle.canStop;
710
+ if (req.scopes?.canManageScopes !== undefined)
711
+ requested.canManageScopes = req.scopes.canManageScopes;
712
+ if (req.management?.canManageTasks !== undefined)
713
+ requested.canManageTasks = req.management.canManageTasks;
714
+ if (req.management?.canManageLifecycle !== undefined)
715
+ requested.canManageLifecycle = req.management.canManageLifecycle;
716
+ const mergedCapabilities = { ...baseCapabilities, ...requested };
717
+ this.connections.updateCapabilities(participantId, mergedCapabilities);
718
+ const updatedParticipant = this.connections.getParticipant(participantId);
719
+ return {
720
+ participantId: participant.id,
721
+ capabilities: updatedParticipant?.capabilities ?? mergedCapabilities,
722
+ };
723
+ }
724
+ // No client-requested capabilities — apply type defaults if type changed
725
+ if (requestedType !== participant.type) {
726
+ this.connections.updateCapabilities(participantId, baseCapabilities);
727
+ const updatedParticipant = this.connections.getParticipant(participantId);
728
+ return {
729
+ participantId: participant.id,
730
+ capabilities: updatedParticipant?.capabilities ?? baseCapabilities,
731
+ };
732
+ }
733
+ return {
734
+ participantId: participant.id,
735
+ capabilities: participant.capabilities,
736
+ };
737
+ }
738
+ /**
739
+ * Get default capabilities for a participant type.
740
+ */
741
+ getDefaultCapabilities(type) {
742
+ switch (type) {
743
+ case "agent":
744
+ return (this.config.defaultAgentCapabilities ?? {
745
+ canQuery: true,
746
+ canSubscribe: true,
747
+ canMessage: true,
748
+ canSpawn: true,
749
+ canStop: true,
750
+ canManageScopes: true,
751
+ canManageTasks: true,
752
+ canManageFederation: true,
753
+ canManageLifecycle: true,
754
+ });
755
+ case "gateway":
756
+ return {
757
+ canQuery: true,
758
+ canSubscribe: true,
759
+ canMessage: true,
760
+ canSpawn: false,
761
+ canStop: false,
762
+ canManageScopes: false,
763
+ canManageTasks: false,
764
+ canManageFederation: true,
765
+ canManageLifecycle: false,
766
+ };
767
+ case "client":
768
+ default:
769
+ return (this.config.defaultClientCapabilities ?? {
770
+ canQuery: true,
771
+ canSubscribe: true,
772
+ canMessage: true,
773
+ canSpawn: false,
774
+ canStop: false,
775
+ canManageScopes: false,
776
+ canManageTasks: false,
777
+ canManageLifecycle: false,
778
+ });
779
+ }
780
+ }
781
+ async handleDisconnect(participantId) {
782
+ await this.disconnectParticipant(participantId, "client_disconnect");
783
+ return { success: true };
784
+ }
785
+ async handleSubscribe(participantId, params) {
786
+ // Extract filter and translate SDK field names to internal format
787
+ // SDK uses 'fromAgents', macro-agent uses 'agents'
788
+ const rawFilter = params?.filter;
789
+ let filter;
790
+ if (rawFilter) {
791
+ filter = {
792
+ eventTypes: rawFilter.eventTypes,
793
+ agents: (rawFilter.fromAgents ?? rawFilter.agents),
794
+ scopes: rawFilter.scopes,
795
+ subtree: rawFilter.subtree,
796
+ lineage: rawFilter.lineage,
797
+ };
798
+ }
799
+ const subscriptionId = await this.createSubscription(participantId, filter);
800
+ return { subscriptionId };
801
+ }
802
+ async handleUnsubscribe(participantId, params) {
803
+ const subscriptionId = params
804
+ ?.subscriptionId;
805
+ if (!subscriptionId) {
806
+ throw RPCError.invalidParams("subscriptionId required");
807
+ }
808
+ await this.removeSubscription(subscriptionId);
809
+ return { success: true };
810
+ }
811
+ async handleReplay(_participantId, params) {
812
+ const { afterEventId, fromTimestamp, toTimestamp, filter, limit } = (params ?? {});
813
+ // Translate SDK filter field names to internal format
814
+ // SDK uses 'fromAgents', macro-agent uses 'agents'
815
+ const internalFilter = filter
816
+ ? {
817
+ eventTypes: filter.eventTypes,
818
+ agents: (filter.fromAgents ?? filter.agents),
819
+ scopes: filter.scopes,
820
+ }
821
+ : undefined;
822
+ const result = this.eventLog.query({
823
+ afterEventId,
824
+ fromTimestamp,
825
+ toTimestamp,
826
+ filter: internalFilter,
827
+ limit,
828
+ });
829
+ // Transform events to SDK response format
830
+ const events = result.events.map((e) => ({
831
+ eventId: e.eventId,
832
+ timestamp: e.timestamp,
833
+ ...(e.causedBy && { causedBy: e.causedBy }),
834
+ event: {
835
+ id: e.eventId,
836
+ type: dotToUnderscore(e.type),
837
+ timestamp: e.timestamp,
838
+ data: e.data,
839
+ },
840
+ }));
841
+ return {
842
+ events,
843
+ hasMore: result.hasMore,
844
+ };
845
+ }
846
+ async handleSend(participantId, params, ctx) {
847
+ const { to, payload, options } = params;
848
+ if (!to) {
849
+ throw RPCError.invalidParams("to address required");
850
+ }
851
+ if (!payload) {
852
+ throw RPCError.invalidParams("payload required");
853
+ }
854
+ // Check if this is an ACP-over-MAP message
855
+ // SDK sends ACP envelope directly as payload (not wrapped in content)
856
+ const rawPayload = payload;
857
+ if (rawPayload &&
858
+ typeof rawPayload === "object" &&
859
+ "acp" in rawPayload &&
860
+ "acpContext" in rawPayload) {
861
+ // This is an ACP envelope - route through ACP-over-MAP handler
862
+ return this.handleACPOverMAP(participantId, to, rawPayload, ctx);
863
+ }
864
+ return this.sendMessage(participantId, to, payload, options);
865
+ }
866
+ /**
867
+ * Handle ACP-over-MAP messages.
868
+ * These are ACP protocol messages sent via MAP to an agent.
869
+ */
870
+ async handleACPOverMAP(participantId, to, envelope, ctx) {
871
+ if (!this.acpOverMapHandler) {
872
+ throw RPCError.internalError("ACP-over-MAP not available - missing services");
873
+ }
874
+ const acp = envelope.acp;
875
+ const acpContext = envelope.acpContext;
876
+ console.error(`[ACP-over-MAP] Received - method=${acp.method} to=${JSON.stringify(to)}`);
877
+ // For now, we only support messages to specific agents
878
+ if (!isAgentAddress(to)) {
879
+ throw RPCError.invalidParams("ACP-over-MAP requires agent target");
880
+ }
881
+ const targetAgentId = to.agent;
882
+ // Check if this is a request (has method) or response (has result/error)
883
+ if (!acp.method) {
884
+ // This is a response - route it normally
885
+ console.error(`[ACP-over-MAP] Routing response back`);
886
+ return this.sendMessage(participantId, to, { content: envelope }, undefined);
887
+ }
888
+ // Emit client→agent ACP request as a message_sent event so other
889
+ // TUI clients can observe user prompts and other ACP operations.
890
+ // Include from/to at top level of data for extractACPFromMessageEvent()
891
+ // which reads data.from/data.to for targetAgent resolution.
892
+ this.emitEvent({
893
+ eventId: ulid(),
894
+ type: "message_sent",
895
+ timestamp: Date.now(),
896
+ agentId: targetAgentId,
897
+ data: {
898
+ from: participantId,
899
+ to: targetAgentId,
900
+ message: {
901
+ id: `acp-req-${Date.now()}`,
902
+ from: participantId,
903
+ to: targetAgentId,
904
+ payload: envelope,
905
+ },
906
+ },
907
+ });
908
+ // Create notification emitter to stream session updates
909
+ const emitNotification = (notification) => {
910
+ this.emitEvent({
911
+ eventId: ulid(),
912
+ type: "message_delivered",
913
+ timestamp: Date.now(),
914
+ agentId: targetAgentId,
915
+ data: {
916
+ from: targetAgentId,
917
+ to: participantId,
918
+ message: {
919
+ id: `acp-notif-${Date.now()}`,
920
+ from: targetAgentId,
921
+ payload: notification,
922
+ },
923
+ },
924
+ });
925
+ };
926
+ // Process the ACP request through the handler
927
+ const acpEnvelope = {
928
+ acp: acp,
929
+ acpContext: acpContext,
930
+ };
931
+ // Helper to emit the final ACP response to the participant via subscription
932
+ const emitResponse = (responseEnvelope) => {
933
+ const participant = this.connections.getParticipant(participantId);
934
+ if (participant) {
935
+ this.emitEvent({
936
+ eventId: ulid(),
937
+ type: "message_delivered",
938
+ timestamp: Date.now(),
939
+ agentId: targetAgentId,
940
+ data: {
941
+ from: targetAgentId,
942
+ to: participantId,
943
+ message: {
944
+ id: `acp-resp-${Date.now()}`,
945
+ from: targetAgentId,
946
+ payload: responseEnvelope,
947
+ },
948
+ },
949
+ });
950
+ }
951
+ };
952
+ // session/prompt can run for minutes — process it asynchronously so the
953
+ // map/send RPC returns immediately. The ACP response will arrive via
954
+ // subscription (message_delivered event) when the prompt finishes.
955
+ // Other ACP methods (initialize, session/new, session/load, etc.) are
956
+ // fast and can be awaited normally.
957
+ const isLongRunning = acp.method === "session/prompt";
958
+ if (isLongRunning) {
959
+ this.acpOverMapHandler
960
+ .processRequest(targetAgentId, acpEnvelope, emitNotification)
961
+ .then((responseEnvelope) => {
962
+ console.error(`[ACP-over-MAP] Async prompt completed - method=${acp.method}`);
963
+ emitResponse(responseEnvelope);
964
+ })
965
+ .catch((error) => {
966
+ console.error(`[ACP-over-MAP] Async prompt error:`, error);
967
+ // Emit error response so the client's ACP pending request resolves
968
+ emitResponse({
969
+ acp: {
970
+ jsonrpc: "2.0",
971
+ id: acp.id,
972
+ error: {
973
+ code: -32603,
974
+ message: error instanceof Error ? error.message : String(error),
975
+ },
976
+ },
977
+ acpContext: {
978
+ streamId: acpContext.streamId,
979
+ sessionId: acpContext.sessionId ?? null,
980
+ direction: "agent-to-client",
981
+ },
982
+ });
983
+ });
984
+ }
985
+ else {
986
+ const responseEnvelope = await this.acpOverMapHandler.processRequest(targetAgentId, acpEnvelope, emitNotification);
987
+ console.error(`[ACP-over-MAP] Request processed - method=${acp.method}`);
988
+ emitResponse(responseEnvelope);
989
+ }
990
+ return {
991
+ messageId: `acp-${acp.id}`,
992
+ delivered: [targetAgentId],
993
+ };
994
+ }
995
+ async handleListAgents(participantId, params) {
996
+ const filter = params?.filter;
997
+ const agents = this.listAgents(participantId, filter);
998
+ return { agents };
999
+ }
1000
+ async handleGetAgent(participantId, params) {
1001
+ const agentId = params?.agentId;
1002
+ if (!agentId) {
1003
+ throw RPCError.invalidParams("agentId required");
1004
+ }
1005
+ const agent = this.getAgent(participantId, agentId);
1006
+ return { agent: agent ?? null };
1007
+ }
1008
+ async handleStopAgent(_participantId, params) {
1009
+ const { agentId, reason, force } = params ?? {};
1010
+ if (!agentId) {
1011
+ throw RPCError.invalidParams("agentId required");
1012
+ }
1013
+ if (!this.services.agentManager) {
1014
+ throw RPCError.internalError("Agent manager not available");
1015
+ }
1016
+ // Abort any active ACP streams for this agent
1017
+ if (this.acpOverMapHandler) {
1018
+ this.acpOverMapHandler.abortStreamsForAgent(agentId);
1019
+ }
1020
+ // Terminate the agent
1021
+ try {
1022
+ await this.services.agentManager.terminate(agentId, (reason ?? "cancelled"));
1023
+ }
1024
+ catch (error) {
1025
+ console.error(`[MAPAdapter] Error stopping agent ${agentId}:`, error);
1026
+ throw RPCError.internalError(`Failed to stop agent: ${error instanceof Error ? error.message : String(error)}`);
1027
+ }
1028
+ // Note: agent_state_changed and agent_unregistered events are now
1029
+ // emitted by the lifecycle listener (covers all stop paths).
1030
+ return { stopping: true };
1031
+ }
1032
+ async handleListScopes(participantId) {
1033
+ const scopes = this.listScopes(participantId);
1034
+ return { scopes };
1035
+ }
1036
+ async handleGetScope(participantId, params) {
1037
+ const scopeId = params?.scopeId;
1038
+ if (!scopeId) {
1039
+ throw RPCError.invalidParams("scopeId required");
1040
+ }
1041
+ const scope = this.getScope(participantId, scopeId);
1042
+ return { scope: scope ?? null };
1043
+ }
1044
+ async handleCreateScope(participantId, params, ctx) {
1045
+ const { name, metadata } = params ?? {};
1046
+ const scopeId = this.createScope(name, metadata);
1047
+ return { scopeId };
1048
+ }
1049
+ async handleJoinScope(participantId, params) {
1050
+ const { scopeId, agentId } = params;
1051
+ if (!scopeId) {
1052
+ throw RPCError.invalidParams("scopeId required");
1053
+ }
1054
+ if (!agentId) {
1055
+ throw RPCError.invalidParams("agentId required");
1056
+ }
1057
+ const success = this.joinScope(scopeId, agentId);
1058
+ if (!success) {
1059
+ throw RPCError.notFound("scope", scopeId);
1060
+ }
1061
+ return { success };
1062
+ }
1063
+ async handleLeaveScope(participantId, params) {
1064
+ const { scopeId, agentId } = params;
1065
+ if (!scopeId) {
1066
+ throw RPCError.invalidParams("scopeId required");
1067
+ }
1068
+ if (!agentId) {
1069
+ throw RPCError.invalidParams("agentId required");
1070
+ }
1071
+ const success = this.leaveScope(scopeId, agentId);
1072
+ if (!success) {
1073
+ throw RPCError.notFound("scope", scopeId);
1074
+ }
1075
+ return { success };
1076
+ }
1077
+ // ===========================================================================
1078
+ // Federation Handlers
1079
+ // ===========================================================================
1080
+ async handleFederationConnect(participantId, params) {
1081
+ if (!this.services.federationHandler) {
1082
+ throw RPCError.internalError("Federation not available");
1083
+ }
1084
+ const { systemId, endpoint, auth } = (params ?? {});
1085
+ if (!systemId) {
1086
+ throw RPCError.invalidParams("systemId is required");
1087
+ }
1088
+ if (!endpoint) {
1089
+ throw RPCError.invalidParams("endpoint is required");
1090
+ }
1091
+ try {
1092
+ const capabilities = await this.services.federationHandler.connect({
1093
+ systemId,
1094
+ endpoint,
1095
+ auth,
1096
+ });
1097
+ return { capabilities };
1098
+ }
1099
+ catch (err) {
1100
+ throw RPCError.internalError(err instanceof Error ? err.message : "Failed to connect");
1101
+ }
1102
+ }
1103
+ async handleFederationDisconnect(participantId, params) {
1104
+ if (!this.services.federationHandler) {
1105
+ throw RPCError.internalError("Federation not available");
1106
+ }
1107
+ const { systemId } = (params ?? {});
1108
+ if (!systemId) {
1109
+ throw RPCError.invalidParams("systemId is required");
1110
+ }
1111
+ try {
1112
+ await this.services.federationHandler.disconnect(systemId);
1113
+ return { success: true };
1114
+ }
1115
+ catch (err) {
1116
+ if (err instanceof Error && err.message.includes("Not connected")) {
1117
+ throw RPCError.notFound("peer", systemId);
1118
+ }
1119
+ throw RPCError.internalError(err instanceof Error ? err.message : "Failed to disconnect");
1120
+ }
1121
+ }
1122
+ async handleFederationList(participantId) {
1123
+ if (!this.services.federationHandler) {
1124
+ return { peers: [] };
1125
+ }
1126
+ const peers = this.services.federationHandler.listPeers();
1127
+ return {
1128
+ peers: peers.map((peer) => ({
1129
+ systemId: peer.systemId,
1130
+ status: peer.status,
1131
+ connectedAt: peer.connectedAt,
1132
+ })),
1133
+ };
1134
+ }
1135
+ async handleFederationCapabilities(participantId, params) {
1136
+ if (!this.services.federationHandler) {
1137
+ throw RPCError.internalError("Federation not available");
1138
+ }
1139
+ const { systemId } = (params ?? {});
1140
+ if (!systemId) {
1141
+ throw RPCError.invalidParams("systemId is required");
1142
+ }
1143
+ const capabilities = this.services.federationHandler.getCapabilities(systemId);
1144
+ if (!capabilities) {
1145
+ throw RPCError.notFound("peer", systemId);
1146
+ }
1147
+ return { capabilities };
1148
+ }
1149
+ // ===========================================================================
1150
+ // Type Conversions
1151
+ // ===========================================================================
1152
+ toAgentInfo(agent) {
1153
+ return {
1154
+ id: agent.id,
1155
+ name: agent.name,
1156
+ role: agent.role,
1157
+ state: agent.state,
1158
+ parent: agent.parent,
1159
+ scopes: this.getAgentScopes(agent.id),
1160
+ metadata: agent.metadata,
1161
+ createdAt: agent.createdAt,
1162
+ // All macro-agent agents support ACP (they're Claude Code sessions)
1163
+ capabilities: {
1164
+ protocols: ["acp"],
1165
+ acp: {
1166
+ features: ["streaming"],
1167
+ },
1168
+ },
1169
+ };
1170
+ }
1171
+ toScopeInfo(scope) {
1172
+ return {
1173
+ id: scope.id,
1174
+ name: scope.name,
1175
+ members: Array.from(scope.members),
1176
+ createdAt: scope.createdAt,
1177
+ metadata: scope.metadata,
1178
+ };
1179
+ }
1180
+ getAgentScopes(agentId) {
1181
+ const result = [];
1182
+ for (const scope of this.scopes.values()) {
1183
+ if (scope.members.has(agentId)) {
1184
+ result.push(scope.id);
1185
+ }
1186
+ }
1187
+ return result;
1188
+ }
1189
+ }
1190
+ // =============================================================================
1191
+ // Factory
1192
+ // =============================================================================
1193
+ /**
1194
+ * Create a MAPAdapter instance.
1195
+ */
1196
+ export function createMAPAdapter(config, services) {
1197
+ return new MAPAdapterImpl(config, services);
1198
+ }
1199
+ //# sourceMappingURL=map-adapter.js.map