macro-agent 0.0.10 → 0.0.12

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 (518) hide show
  1. package/.macro-agent/teams/self-driving/prompts/grinder.md +27 -0
  2. package/.macro-agent/teams/self-driving/prompts/judge.md +27 -0
  3. package/.macro-agent/teams/self-driving/prompts/planner.md +33 -0
  4. package/.macro-agent/teams/self-driving/roles/grinder.yaml +17 -0
  5. package/.macro-agent/teams/self-driving/roles/judge.yaml +24 -0
  6. package/.macro-agent/teams/self-driving/roles/planner.yaml +18 -0
  7. package/.macro-agent/teams/self-driving/team.yaml +103 -0
  8. package/.macro-agent/teams/structured/prompts/developer.md +26 -0
  9. package/.macro-agent/teams/structured/prompts/lead.md +25 -0
  10. package/.macro-agent/teams/structured/prompts/reviewer.md +24 -0
  11. package/.macro-agent/teams/structured/roles/developer.yaml +12 -0
  12. package/.macro-agent/teams/structured/roles/lead.yaml +11 -0
  13. package/.macro-agent/teams/structured/roles/reviewer.yaml +19 -0
  14. package/.macro-agent/teams/structured/team.yaml +89 -0
  15. package/.sudocode/issues.jsonl +56 -51
  16. package/.sudocode/specs.jsonl +8 -1
  17. package/CLAUDE.md +121 -30
  18. package/README.md +60 -3
  19. package/dist/acp/macro-agent.d.ts +4 -0
  20. package/dist/acp/macro-agent.d.ts.map +1 -1
  21. package/dist/acp/macro-agent.js +50 -4
  22. package/dist/acp/macro-agent.js.map +1 -1
  23. package/dist/acp/session-mapper.d.ts +20 -1
  24. package/dist/acp/session-mapper.d.ts.map +1 -1
  25. package/dist/acp/session-mapper.js +90 -1
  26. package/dist/acp/session-mapper.js.map +1 -1
  27. package/dist/acp/types.d.ts +24 -1
  28. package/dist/acp/types.d.ts.map +1 -1
  29. package/dist/acp/types.js.map +1 -1
  30. package/dist/agent/agent-manager.d.ts +40 -1
  31. package/dist/agent/agent-manager.d.ts.map +1 -1
  32. package/dist/agent/agent-manager.js +172 -8
  33. package/dist/agent/agent-manager.js.map +1 -1
  34. package/dist/agent/types.d.ts +22 -0
  35. package/dist/agent/types.d.ts.map +1 -1
  36. package/dist/agent/types.js.map +1 -1
  37. package/dist/agent/wake.d.ts +15 -0
  38. package/dist/agent/wake.d.ts.map +1 -1
  39. package/dist/agent/wake.js +15 -0
  40. package/dist/agent/wake.js.map +1 -1
  41. package/dist/agent-detection/command-builder.d.ts +30 -0
  42. package/dist/agent-detection/command-builder.d.ts.map +1 -0
  43. package/dist/agent-detection/command-builder.js +71 -0
  44. package/dist/agent-detection/command-builder.js.map +1 -0
  45. package/dist/agent-detection/detector.d.ts +84 -0
  46. package/dist/agent-detection/detector.d.ts.map +1 -0
  47. package/dist/agent-detection/detector.js +240 -0
  48. package/dist/agent-detection/detector.js.map +1 -0
  49. package/dist/agent-detection/index.d.ts +12 -0
  50. package/dist/agent-detection/index.d.ts.map +1 -0
  51. package/dist/agent-detection/index.js +14 -0
  52. package/dist/agent-detection/index.js.map +1 -0
  53. package/dist/agent-detection/registry.d.ts +53 -0
  54. package/dist/agent-detection/registry.d.ts.map +1 -0
  55. package/dist/agent-detection/registry.js +177 -0
  56. package/dist/agent-detection/registry.js.map +1 -0
  57. package/dist/agent-detection/types.d.ts +121 -0
  58. package/dist/agent-detection/types.d.ts.map +1 -0
  59. package/dist/agent-detection/types.js +20 -0
  60. package/dist/agent-detection/types.js.map +1 -0
  61. package/dist/api/server.d.ts +5 -1
  62. package/dist/api/server.d.ts.map +1 -1
  63. package/dist/api/server.js +362 -0
  64. package/dist/api/server.js.map +1 -1
  65. package/dist/api/types.d.ts +50 -1
  66. package/dist/api/types.d.ts.map +1 -1
  67. package/dist/cli/acp.d.ts +2 -0
  68. package/dist/cli/acp.d.ts.map +1 -1
  69. package/dist/cli/acp.js +8 -1
  70. package/dist/cli/acp.js.map +1 -1
  71. package/dist/cli/index.js +29 -0
  72. package/dist/cli/index.js.map +1 -1
  73. package/dist/cli/mcp.js +38 -0
  74. package/dist/cli/mcp.js.map +1 -1
  75. package/dist/config/index.d.ts +2 -0
  76. package/dist/config/index.d.ts.map +1 -0
  77. package/dist/config/index.js +2 -0
  78. package/dist/config/index.js.map +1 -0
  79. package/dist/config/project-config.d.ts +46 -0
  80. package/dist/config/project-config.d.ts.map +1 -0
  81. package/dist/config/project-config.js +68 -0
  82. package/dist/config/project-config.js.map +1 -0
  83. package/dist/lifecycle/cascade.d.ts +1 -1
  84. package/dist/lifecycle/cascade.d.ts.map +1 -1
  85. package/dist/lifecycle/handlers/index.d.ts +4 -0
  86. package/dist/lifecycle/handlers/index.d.ts.map +1 -1
  87. package/dist/lifecycle/handlers/index.js +2 -0
  88. package/dist/lifecycle/handlers/index.js.map +1 -1
  89. package/dist/lifecycle/handlers/worker.d.ts +4 -0
  90. package/dist/lifecycle/handlers/worker.d.ts.map +1 -1
  91. package/dist/lifecycle/handlers/worker.js +35 -3
  92. package/dist/lifecycle/handlers/worker.js.map +1 -1
  93. package/dist/mail/conversation-map.d.ts +33 -0
  94. package/dist/mail/conversation-map.d.ts.map +1 -0
  95. package/dist/mail/conversation-map.js +61 -0
  96. package/dist/mail/conversation-map.js.map +1 -0
  97. package/dist/mail/index.d.ts +11 -0
  98. package/dist/mail/index.d.ts.map +1 -0
  99. package/dist/mail/index.js +11 -0
  100. package/dist/mail/index.js.map +1 -0
  101. package/dist/mail/mail-service.d.ts +85 -0
  102. package/dist/mail/mail-service.d.ts.map +1 -0
  103. package/dist/mail/mail-service.js +121 -0
  104. package/dist/mail/mail-service.js.map +1 -0
  105. package/dist/mail/stores/eventstore-conversation-store.d.ts +40 -0
  106. package/dist/mail/stores/eventstore-conversation-store.d.ts.map +1 -0
  107. package/dist/mail/stores/eventstore-conversation-store.js +131 -0
  108. package/dist/mail/stores/eventstore-conversation-store.js.map +1 -0
  109. package/dist/mail/stores/eventstore-participant-store.d.ts +43 -0
  110. package/dist/mail/stores/eventstore-participant-store.d.ts.map +1 -0
  111. package/dist/mail/stores/eventstore-participant-store.js +145 -0
  112. package/dist/mail/stores/eventstore-participant-store.js.map +1 -0
  113. package/dist/mail/stores/eventstore-thread-store.d.ts +46 -0
  114. package/dist/mail/stores/eventstore-thread-store.d.ts.map +1 -0
  115. package/dist/mail/stores/eventstore-thread-store.js +118 -0
  116. package/dist/mail/stores/eventstore-thread-store.js.map +1 -0
  117. package/dist/mail/stores/eventstore-turn-store.d.ts +47 -0
  118. package/dist/mail/stores/eventstore-turn-store.d.ts.map +1 -0
  119. package/dist/mail/stores/eventstore-turn-store.js +153 -0
  120. package/dist/mail/stores/eventstore-turn-store.js.map +1 -0
  121. package/dist/mail/stores/index.d.ts +12 -0
  122. package/dist/mail/stores/index.d.ts.map +1 -0
  123. package/dist/mail/stores/index.js +12 -0
  124. package/dist/mail/stores/index.js.map +1 -0
  125. package/dist/mail/stores/types.d.ts +146 -0
  126. package/dist/mail/stores/types.d.ts.map +1 -0
  127. package/dist/mail/stores/types.js +13 -0
  128. package/dist/mail/stores/types.js.map +1 -0
  129. package/dist/mail/turn-recorder.d.ts +30 -0
  130. package/dist/mail/turn-recorder.d.ts.map +1 -0
  131. package/dist/mail/turn-recorder.js +98 -0
  132. package/dist/mail/turn-recorder.js.map +1 -0
  133. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  134. package/dist/map/adapter/acp-over-map.js +32 -2
  135. package/dist/map/adapter/acp-over-map.js.map +1 -1
  136. package/dist/map/adapter/event-translator.d.ts.map +1 -1
  137. package/dist/map/adapter/event-translator.js +4 -0
  138. package/dist/map/adapter/event-translator.js.map +1 -1
  139. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  140. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  141. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  142. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  143. package/dist/map/adapter/extensions/index.d.ts +10 -1
  144. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  145. package/dist/map/adapter/extensions/index.js +39 -0
  146. package/dist/map/adapter/extensions/index.js.map +1 -1
  147. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  148. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  149. package/dist/map/adapter/extensions/resume.js +59 -0
  150. package/dist/map/adapter/extensions/resume.js.map +1 -0
  151. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  152. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  153. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  154. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  155. package/dist/map/adapter/mail-handler-adapter.d.ts +27 -0
  156. package/dist/map/adapter/mail-handler-adapter.d.ts.map +1 -0
  157. package/dist/map/adapter/mail-handler-adapter.js +292 -0
  158. package/dist/map/adapter/mail-handler-adapter.js.map +1 -0
  159. package/dist/map/adapter/map-adapter.d.ts +34 -10
  160. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  161. package/dist/map/adapter/map-adapter.js +110 -14
  162. package/dist/map/adapter/map-adapter.js.map +1 -1
  163. package/dist/map/adapter/rpc-handler.d.ts +4 -1
  164. package/dist/map/adapter/rpc-handler.d.ts.map +1 -1
  165. package/dist/map/adapter/rpc-handler.js +6 -0
  166. package/dist/map/adapter/rpc-handler.js.map +1 -1
  167. package/dist/map/index.d.ts +1 -0
  168. package/dist/map/index.d.ts.map +1 -1
  169. package/dist/map/index.js +2 -0
  170. package/dist/map/index.js.map +1 -1
  171. package/dist/map/types.d.ts +3 -1
  172. package/dist/map/types.d.ts.map +1 -1
  173. package/dist/map/types.js.map +1 -1
  174. package/dist/mcp/mcp-server.d.ts +6 -0
  175. package/dist/mcp/mcp-server.d.ts.map +1 -1
  176. package/dist/mcp/mcp-server.js +45 -0
  177. package/dist/mcp/mcp-server.js.map +1 -1
  178. package/dist/mcp/tools/claim_task.d.ts +35 -0
  179. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  180. package/dist/mcp/tools/claim_task.js +58 -0
  181. package/dist/mcp/tools/claim_task.js.map +1 -0
  182. package/dist/mcp/tools/done.d.ts +15 -2
  183. package/dist/mcp/tools/done.d.ts.map +1 -1
  184. package/dist/mcp/tools/done.js +45 -10
  185. package/dist/mcp/tools/done.js.map +1 -1
  186. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  187. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  188. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  189. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  190. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  191. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  192. package/dist/mcp/tools/unclaim_task.js +47 -0
  193. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  194. package/dist/metrics/index.d.ts +2 -0
  195. package/dist/metrics/index.d.ts.map +1 -0
  196. package/dist/metrics/index.js +2 -0
  197. package/dist/metrics/index.js.map +1 -0
  198. package/dist/metrics/metrics.d.ts +79 -0
  199. package/dist/metrics/metrics.d.ts.map +1 -0
  200. package/dist/metrics/metrics.js +166 -0
  201. package/dist/metrics/metrics.js.map +1 -0
  202. package/dist/roles/capabilities.d.ts +1 -0
  203. package/dist/roles/capabilities.d.ts.map +1 -1
  204. package/dist/roles/capabilities.js +3 -0
  205. package/dist/roles/capabilities.js.map +1 -1
  206. package/dist/roles/types.d.ts +1 -1
  207. package/dist/roles/types.d.ts.map +1 -1
  208. package/dist/router/channels.d.ts +2 -4
  209. package/dist/router/channels.d.ts.map +1 -1
  210. package/dist/router/channels.js.map +1 -1
  211. package/dist/router/message-router.d.ts +85 -9
  212. package/dist/router/message-router.d.ts.map +1 -1
  213. package/dist/router/message-router.js +203 -14
  214. package/dist/router/message-router.js.map +1 -1
  215. package/dist/router/role-resolver.d.ts +10 -1
  216. package/dist/router/role-resolver.d.ts.map +1 -1
  217. package/dist/router/role-resolver.js +15 -1
  218. package/dist/router/role-resolver.js.map +1 -1
  219. package/dist/router/types.d.ts +30 -1
  220. package/dist/router/types.d.ts.map +1 -1
  221. package/dist/router/types.js.map +1 -1
  222. package/dist/server/combined-server.d.ts +6 -0
  223. package/dist/server/combined-server.d.ts.map +1 -1
  224. package/dist/server/combined-server.js +24 -2
  225. package/dist/server/combined-server.js.map +1 -1
  226. package/dist/store/event-store.d.ts +14 -1
  227. package/dist/store/event-store.d.ts.map +1 -1
  228. package/dist/store/event-store.js +456 -4
  229. package/dist/store/event-store.js.map +1 -1
  230. package/dist/store/types/agents.d.ts +1 -1
  231. package/dist/store/types/agents.d.ts.map +1 -1
  232. package/dist/store/types/conversations.d.ts +91 -0
  233. package/dist/store/types/conversations.d.ts.map +1 -0
  234. package/dist/store/types/conversations.js +8 -0
  235. package/dist/store/types/conversations.js.map +1 -0
  236. package/dist/store/types/events.d.ts +1 -1
  237. package/dist/store/types/events.d.ts.map +1 -1
  238. package/dist/store/types/events.js.map +1 -1
  239. package/dist/store/types/index.d.ts +2 -0
  240. package/dist/store/types/index.d.ts.map +1 -1
  241. package/dist/store/types/index.js +2 -0
  242. package/dist/store/types/index.js.map +1 -1
  243. package/dist/store/types/sessions.d.ts +44 -0
  244. package/dist/store/types/sessions.d.ts.map +1 -0
  245. package/dist/store/types/sessions.js +9 -0
  246. package/dist/store/types/sessions.js.map +1 -0
  247. package/dist/store/types/tasks.d.ts +2 -0
  248. package/dist/store/types/tasks.d.ts.map +1 -1
  249. package/dist/task/backend/memory.d.ts +4 -1
  250. package/dist/task/backend/memory.d.ts.map +1 -1
  251. package/dist/task/backend/memory.js +81 -0
  252. package/dist/task/backend/memory.js.map +1 -1
  253. package/dist/task/backend/types.d.ts +30 -0
  254. package/dist/task/backend/types.d.ts.map +1 -1
  255. package/dist/task/backend/types.js.map +1 -1
  256. package/dist/teams/index.d.ts +4 -0
  257. package/dist/teams/index.d.ts.map +1 -0
  258. package/dist/teams/index.js +4 -0
  259. package/dist/teams/index.js.map +1 -0
  260. package/dist/teams/team-loader.d.ts +20 -0
  261. package/dist/teams/team-loader.d.ts.map +1 -0
  262. package/dist/teams/team-loader.js +293 -0
  263. package/dist/teams/team-loader.js.map +1 -0
  264. package/dist/teams/team-runtime.d.ts +139 -0
  265. package/dist/teams/team-runtime.d.ts.map +1 -0
  266. package/dist/teams/team-runtime.js +613 -0
  267. package/dist/teams/team-runtime.js.map +1 -0
  268. package/dist/teams/types.d.ts +266 -0
  269. package/dist/teams/types.d.ts.map +1 -0
  270. package/dist/teams/types.js +20 -0
  271. package/dist/teams/types.js.map +1 -0
  272. package/dist/trigger/router/trigger-router.d.ts +30 -3
  273. package/dist/trigger/router/trigger-router.d.ts.map +1 -1
  274. package/dist/trigger/router/trigger-router.js +30 -3
  275. package/dist/trigger/router/trigger-router.js.map +1 -1
  276. package/dist/trigger/wake/types.d.ts +31 -5
  277. package/dist/trigger/wake/types.d.ts.map +1 -1
  278. package/dist/trigger/wake/types.js +19 -0
  279. package/dist/trigger/wake/types.js.map +1 -1
  280. package/dist/workspace/dataplane-adapter.d.ts +1 -1
  281. package/dist/workspace/dataplane-adapter.d.ts.map +1 -1
  282. package/dist/workspace/dataplane-adapter.js +1 -1
  283. package/dist/workspace/dataplane-adapter.js.map +1 -1
  284. package/dist/workspace/index.d.ts +1 -1
  285. package/dist/workspace/index.d.ts.map +1 -1
  286. package/dist/workspace/strategies/index.d.ts +6 -0
  287. package/dist/workspace/strategies/index.d.ts.map +1 -0
  288. package/dist/workspace/strategies/index.js +5 -0
  289. package/dist/workspace/strategies/index.js.map +1 -0
  290. package/dist/workspace/strategies/optimistic.d.ts +26 -0
  291. package/dist/workspace/strategies/optimistic.d.ts.map +1 -0
  292. package/dist/workspace/strategies/optimistic.js +121 -0
  293. package/dist/workspace/strategies/optimistic.js.map +1 -0
  294. package/dist/workspace/strategies/queue.d.ts +26 -0
  295. package/dist/workspace/strategies/queue.d.ts.map +1 -0
  296. package/dist/workspace/strategies/queue.js +67 -0
  297. package/dist/workspace/strategies/queue.js.map +1 -0
  298. package/dist/workspace/strategies/registry.d.ts +37 -0
  299. package/dist/workspace/strategies/registry.d.ts.map +1 -0
  300. package/dist/workspace/strategies/registry.js +63 -0
  301. package/dist/workspace/strategies/registry.js.map +1 -0
  302. package/dist/workspace/strategies/trunk.d.ts +20 -0
  303. package/dist/workspace/strategies/trunk.d.ts.map +1 -0
  304. package/dist/workspace/strategies/trunk.js +108 -0
  305. package/dist/workspace/strategies/trunk.js.map +1 -0
  306. package/dist/workspace/strategies/types.d.ts +104 -0
  307. package/dist/workspace/strategies/types.d.ts.map +1 -0
  308. package/dist/workspace/strategies/types.js +11 -0
  309. package/dist/workspace/strategies/types.js.map +1 -0
  310. package/dist/workspace/types.d.ts +1 -1
  311. package/dist/workspace/types.d.ts.map +1 -1
  312. package/dist/workspace/workspace-manager.d.ts +1 -1
  313. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  314. package/docs/implementation-details.md +1127 -0
  315. package/docs/implementation-summary.md +448 -0
  316. package/docs/mail-integration.md +608 -0
  317. package/docs/plan-self-driving-support.md +433 -0
  318. package/docs/spec-self-driving-support.md +462 -0
  319. package/docs/team-templates.md +860 -0
  320. package/docs/teams.md +233 -0
  321. package/package.json +5 -3
  322. package/src/acp/__tests__/integration.test.ts +161 -1
  323. package/src/acp/__tests__/macro-agent.test.ts +95 -0
  324. package/src/acp/__tests__/session-persistence.test.ts +276 -0
  325. package/src/acp/macro-agent.ts +79 -7
  326. package/src/acp/session-mapper.ts +108 -1
  327. package/src/acp/types.ts +33 -1
  328. package/src/agent/agent-manager.ts +278 -6
  329. package/src/agent/types.ts +27 -0
  330. package/src/agent/wake.ts +15 -0
  331. package/src/agent-detection/__tests__/command-builder.test.ts +336 -0
  332. package/src/agent-detection/__tests__/detector.test.ts +768 -0
  333. package/src/agent-detection/__tests__/registry.test.ts +254 -0
  334. package/src/agent-detection/command-builder.ts +90 -0
  335. package/src/agent-detection/detector.ts +307 -0
  336. package/src/agent-detection/index.ts +36 -0
  337. package/src/agent-detection/registry.ts +200 -0
  338. package/src/agent-detection/types.ts +184 -0
  339. package/src/api/__tests__/conversation-api.test.ts +468 -0
  340. package/src/api/server.ts +425 -1
  341. package/src/api/types.ts +64 -1
  342. package/src/cli/acp.ts +9 -1
  343. package/src/cli/index.ts +44 -0
  344. package/src/cli/mcp.ts +47 -0
  345. package/src/config/index.ts +9 -0
  346. package/src/config/project-config.ts +107 -0
  347. package/src/lifecycle/cascade.ts +1 -1
  348. package/src/lifecycle/handlers/index.ts +8 -0
  349. package/src/lifecycle/handlers/worker.ts +48 -3
  350. package/src/mail/__tests__/conversation-lifecycle.test.ts +409 -0
  351. package/src/mail/__tests__/eventstore-stores.test.ts +1073 -0
  352. package/src/mail/__tests__/mail-full-agent.e2e.test.ts +575 -0
  353. package/src/mail/__tests__/mail-integration.test.ts +759 -0
  354. package/src/mail/__tests__/mail-map-protocol.e2e.test.ts +1068 -0
  355. package/src/mail/__tests__/mail-service.test.ts +506 -0
  356. package/src/mail/__tests__/turn-recorder.test.ts +328 -0
  357. package/src/mail/conversation-map.ts +107 -0
  358. package/src/mail/index.ts +25 -0
  359. package/src/mail/mail-service.ts +257 -0
  360. package/src/mail/stores/eventstore-conversation-store.ts +146 -0
  361. package/src/mail/stores/eventstore-participant-store.ts +172 -0
  362. package/src/mail/stores/eventstore-thread-store.ts +129 -0
  363. package/src/mail/stores/eventstore-turn-store.ts +173 -0
  364. package/src/mail/stores/index.ts +12 -0
  365. package/src/mail/stores/types.ts +160 -0
  366. package/src/mail/turn-recorder.ts +124 -0
  367. package/src/map/README.md +79 -0
  368. package/src/map/adapter/__tests__/extensions.test.ts +359 -0
  369. package/src/map/adapter/__tests__/map-adapter.test.ts +90 -0
  370. package/src/map/adapter/__tests__/workspace-files.test.ts +673 -0
  371. package/src/map/adapter/acp-over-map.ts +45 -2
  372. package/src/map/adapter/event-translator.ts +4 -0
  373. package/src/map/adapter/extensions/agent-detection.ts +201 -0
  374. package/src/map/adapter/extensions/index.ts +63 -0
  375. package/src/map/adapter/extensions/resume.ts +114 -0
  376. package/src/map/adapter/extensions/workspace-files.ts +449 -0
  377. package/src/map/adapter/mail-handler-adapter.ts +429 -0
  378. package/src/map/adapter/map-adapter.ts +173 -27
  379. package/src/map/adapter/rpc-handler.ts +8 -1
  380. package/src/map/index.ts +3 -0
  381. package/src/map/types.ts +3 -1
  382. package/src/mcp/mcp-server.ts +67 -0
  383. package/src/mcp/tools/claim_task.ts +86 -0
  384. package/src/mcp/tools/done.ts +59 -10
  385. package/src/mcp/tools/list_claimable_tasks.ts +93 -0
  386. package/src/mcp/tools/unclaim_task.ts +71 -0
  387. package/src/metrics/index.ts +9 -0
  388. package/src/metrics/metrics.ts +280 -0
  389. package/src/roles/capabilities.ts +3 -0
  390. package/src/roles/types.ts +2 -1
  391. package/src/router/README.md +120 -0
  392. package/src/router/__tests__/message-router.test.ts +561 -0
  393. package/src/router/channels.ts +3 -4
  394. package/src/router/message-router.ts +308 -22
  395. package/src/router/role-resolver.ts +22 -1
  396. package/src/router/types.ts +36 -1
  397. package/src/server/combined-server.ts +36 -2
  398. package/src/store/README.md +134 -0
  399. package/src/store/event-store.ts +546 -3
  400. package/src/store/types/agents.ts +1 -1
  401. package/src/store/types/conversations.ts +129 -0
  402. package/src/store/types/events.ts +5 -1
  403. package/src/store/types/index.ts +2 -0
  404. package/src/store/types/sessions.ts +53 -0
  405. package/src/store/types/tasks.ts +3 -0
  406. package/src/task/backend/memory.ts +116 -0
  407. package/src/task/backend/types.ts +43 -0
  408. package/src/teams/__tests__/cross-subsystem.integration.test.ts +983 -0
  409. package/src/teams/__tests__/e2e/team-runtime.e2e.test.ts +553 -0
  410. package/src/teams/__tests__/team-system.test.ts +1280 -0
  411. package/src/teams/index.ts +13 -0
  412. package/src/teams/team-loader.ts +434 -0
  413. package/src/teams/team-runtime.ts +727 -0
  414. package/src/teams/types.ts +377 -0
  415. package/src/trigger/router/trigger-router.ts +30 -3
  416. package/src/trigger/wake/types.ts +32 -5
  417. package/src/trigger/wake/wake-manager.ts +2 -2
  418. package/src/workspace/dataplane-adapter.ts +1 -1
  419. package/src/workspace/index.ts +1 -1
  420. package/src/workspace/strategies/index.ts +18 -0
  421. package/src/workspace/strategies/optimistic.ts +136 -0
  422. package/src/workspace/strategies/queue.ts +81 -0
  423. package/src/workspace/strategies/registry.ts +89 -0
  424. package/src/workspace/strategies/trunk.ts +123 -0
  425. package/src/workspace/strategies/types.ts +145 -0
  426. package/src/workspace/types.ts +1 -1
  427. package/src/workspace/workspace-manager.ts +1 -1
  428. package/.claude/settings.local.json +0 -59
  429. package/dist/map/utils/address-translation.d.ts +0 -99
  430. package/dist/map/utils/address-translation.d.ts.map +0 -1
  431. package/dist/map/utils/address-translation.js +0 -285
  432. package/dist/map/utils/address-translation.js.map +0 -1
  433. package/dist/map/utils/index.d.ts +0 -7
  434. package/dist/map/utils/index.d.ts.map +0 -1
  435. package/dist/map/utils/index.js +0 -7
  436. package/dist/map/utils/index.js.map +0 -1
  437. package/openspec/AGENTS.md +0 -456
  438. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/design.md +0 -128
  439. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/proposal.md +0 -49
  440. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/agent-manager/spec.md +0 -150
  441. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/cli-api/spec.md +0 -258
  442. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/event-store/spec.md +0 -160
  443. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/mcp-tools/spec.md +0 -224
  444. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/message-router/spec.md +0 -153
  445. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/specs/task-manager/spec.md +0 -136
  446. package/openspec/changes/archive/2025-12-21-add-mvp-foundation/tasks.md +0 -147
  447. package/openspec/project.md +0 -31
  448. package/openspec/specs/agent-manager/spec.md +0 -154
  449. package/openspec/specs/cli-api/spec.md +0 -262
  450. package/openspec/specs/event-store/spec.md +0 -164
  451. package/openspec/specs/mcp-tools/spec.md +0 -228
  452. package/openspec/specs/message-router/spec.md +0 -157
  453. package/openspec/specs/task-manager/spec.md +0 -140
  454. package/references/acp-factory-ref/CHANGELOG.md +0 -33
  455. package/references/acp-factory-ref/LICENSE +0 -21
  456. package/references/acp-factory-ref/README.md +0 -341
  457. package/references/acp-factory-ref/package-lock.json +0 -3102
  458. package/references/acp-factory-ref/package.json +0 -96
  459. package/references/acp-factory-ref/python/CHANGELOG.md +0 -33
  460. package/references/acp-factory-ref/python/LICENSE +0 -21
  461. package/references/acp-factory-ref/python/Makefile +0 -57
  462. package/references/acp-factory-ref/python/README.md +0 -253
  463. package/references/acp-factory-ref/python/pyproject.toml +0 -73
  464. package/references/acp-factory-ref/python/tests/__init__.py +0 -0
  465. package/references/acp-factory-ref/python/tests/e2e/__init__.py +0 -1
  466. package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +0 -349
  467. package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +0 -165
  468. package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +0 -296
  469. package/references/acp-factory-ref/python/tests/test_client_handler.py +0 -543
  470. package/references/acp-factory-ref/python/tests/test_pushable.py +0 -199
  471. package/references/claude-code-acp/.github/workflows/ci.yml +0 -45
  472. package/references/claude-code-acp/.github/workflows/publish.yml +0 -34
  473. package/references/claude-code-acp/.prettierrc.json +0 -4
  474. package/references/claude-code-acp/CHANGELOG.md +0 -249
  475. package/references/claude-code-acp/LICENSE +0 -222
  476. package/references/claude-code-acp/README.md +0 -53
  477. package/references/claude-code-acp/docs/RELEASES.md +0 -24
  478. package/references/claude-code-acp/eslint.config.js +0 -48
  479. package/references/claude-code-acp/package-lock.json +0 -4570
  480. package/references/claude-code-acp/package.json +0 -88
  481. package/references/claude-code-acp/scripts/release.sh +0 -119
  482. package/references/claude-code-acp/src/acp-agent.ts +0 -2065
  483. package/references/claude-code-acp/src/index.ts +0 -26
  484. package/references/claude-code-acp/src/lib.ts +0 -38
  485. package/references/claude-code-acp/src/mcp-server.ts +0 -911
  486. package/references/claude-code-acp/src/settings.ts +0 -522
  487. package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +0 -5
  488. package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +0 -6
  489. package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +0 -479
  490. package/references/claude-code-acp/src/tests/acp-agent.test.ts +0 -1502
  491. package/references/claude-code-acp/src/tests/extract-lines.test.ts +0 -103
  492. package/references/claude-code-acp/src/tests/fork-session.test.ts +0 -335
  493. package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +0 -334
  494. package/references/claude-code-acp/src/tests/settings.test.ts +0 -617
  495. package/references/claude-code-acp/src/tests/skills-options.test.ts +0 -187
  496. package/references/claude-code-acp/src/tests/tools.test.ts +0 -318
  497. package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +0 -558
  498. package/references/claude-code-acp/src/tools.ts +0 -819
  499. package/references/claude-code-acp/src/utils.ts +0 -171
  500. package/references/claude-code-acp/tsconfig.json +0 -18
  501. package/references/claude-code-acp/vitest.config.ts +0 -19
  502. package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -82
  503. package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -9
  504. package/references/multi-agent-protocol/LICENSE +0 -21
  505. package/references/multi-agent-protocol/README.md +0 -113
  506. package/references/multi-agent-protocol/docs/00-design-specification.md +0 -460
  507. package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
  508. package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
  509. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
  510. package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
  511. package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
  512. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
  513. package/references/multi-agent-protocol/docs/07-federation.md +0 -259
  514. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
  515. package/references/multi-agent-protocol/package-lock.json +0 -3239
  516. package/references/multi-agent-protocol/package.json +0 -56
  517. package/references/multi-agent-protocol/schema/meta.json +0 -337
  518. package/references/multi-agent-protocol/schema/schema.json +0 -1828
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Mail Protocol Handler Adapter
3
+ *
4
+ * Creates a HandlerRegistry for mail/* protocol methods that can be
5
+ * merged into the MAPAdapter's RPC handler. Delegates to MailService
6
+ * for business logic.
7
+ *
8
+ * Implements the following MAP mail protocol methods:
9
+ * - mail/create — Create a conversation
10
+ * - mail/get — Get conversation details
11
+ * - mail/list — List conversations
12
+ * - mail/close — Close a conversation
13
+ * - mail/join — Join a conversation
14
+ * - mail/leave — Leave a conversation
15
+ * - mail/turn — Record a turn
16
+ * - mail/turns/list — List turns
17
+ * - mail/thread/create — Create a thread
18
+ * - mail/thread/list — List threads
19
+ * - mail/replay — Replay turns
20
+ */
21
+ import { nanoid } from "nanoid";
22
+ import { RPCError } from "./rpc-handler.js";
23
+ /**
24
+ * Create mail protocol handlers backed by a MailService.
25
+ */
26
+ export function createMailHandlers(mailService) {
27
+ /**
28
+ * Validate that a conversation exists, returning it or throwing RPCError.
29
+ */
30
+ function requireConversation(id) {
31
+ const conv = mailService.getConversation(id);
32
+ if (!conv)
33
+ throw RPCError.notFound("conversation", id);
34
+ return conv;
35
+ }
36
+ return {
37
+ // =========================================================================
38
+ // Conversation lifecycle
39
+ // =========================================================================
40
+ "mail/create": async (params, ctx) => {
41
+ const p = params;
42
+ const { conversationId } = mailService.createConversation({
43
+ type: p.type ?? "session",
44
+ subject: p.subject,
45
+ createdBy: ctx.participantId,
46
+ parentConversationId: p.parentConversationId,
47
+ metadata: p.metadata,
48
+ });
49
+ // Auto-join creator
50
+ mailService.joinConversation({
51
+ conversationId,
52
+ participantId: ctx.participantId,
53
+ participantType: "agent",
54
+ role: "initiator",
55
+ });
56
+ // Join initial participants
57
+ if (p.initialParticipants) {
58
+ for (const ip of p.initialParticipants) {
59
+ mailService.joinConversation({
60
+ conversationId,
61
+ participantId: ip.id,
62
+ participantType: "agent",
63
+ role: ip.role ?? "worker",
64
+ });
65
+ }
66
+ }
67
+ const conversation = mailService.getConversation(conversationId);
68
+ return { conversation };
69
+ },
70
+ "mail/get": async (params) => {
71
+ const p = params;
72
+ const conversation = requireConversation(p.conversationId);
73
+ const response = { conversation };
74
+ if (p.include?.participants) {
75
+ response.participants = mailService.listParticipants(p.conversationId, true);
76
+ }
77
+ if (p.include?.recentTurns) {
78
+ response.recentTurns = mailService.listTurns({
79
+ conversationId: p.conversationId,
80
+ limit: p.include.recentTurns,
81
+ order: "desc",
82
+ });
83
+ }
84
+ if (p.include?.stats) {
85
+ const totalTurns = mailService.countTurns(p.conversationId);
86
+ const activeParticipants = mailService.listParticipants(p.conversationId, true);
87
+ response.stats = {
88
+ totalTurns,
89
+ activeParticipants: activeParticipants.length,
90
+ };
91
+ }
92
+ return response;
93
+ },
94
+ "mail/list": async (params) => {
95
+ const p = (params ?? {});
96
+ const limit = p.limit ?? 50;
97
+ const conversations = mailService.listConversations(p.filter
98
+ ? {
99
+ type: p.filter.type,
100
+ status: p.filter.status,
101
+ participantId: p.filter.participantId,
102
+ parentConversationId: p.filter.parentConversationId,
103
+ }
104
+ : undefined);
105
+ // Cursor-based pagination
106
+ let startIndex = 0;
107
+ if (p.cursor) {
108
+ const idx = conversations.findIndex((c) => c.id === p.cursor);
109
+ if (idx >= 0)
110
+ startIndex = idx + 1;
111
+ }
112
+ const page = conversations.slice(startIndex, startIndex + limit + 1);
113
+ const hasMore = page.length > limit;
114
+ const items = hasMore ? page.slice(0, limit) : page;
115
+ return {
116
+ conversations: items,
117
+ hasMore,
118
+ nextCursor: hasMore ? items[items.length - 1].id : undefined,
119
+ };
120
+ },
121
+ "mail/close": async (params, ctx) => {
122
+ const p = params;
123
+ const conv = requireConversation(p.conversationId);
124
+ if (conv.status !== "active") {
125
+ throw RPCError.invalidParams(`Conversation already ${conv.status}: ${p.conversationId}`);
126
+ }
127
+ mailService.closeConversation({
128
+ conversationId: p.conversationId,
129
+ closedBy: ctx.participantId,
130
+ reason: p.reason,
131
+ });
132
+ const conversation = mailService.getConversation(p.conversationId);
133
+ return { conversation };
134
+ },
135
+ // =========================================================================
136
+ // Participants
137
+ // =========================================================================
138
+ "mail/join": async (params, ctx) => {
139
+ const p = params;
140
+ requireConversation(p.conversationId);
141
+ // Check for duplicate join — if already an active participant, skip
142
+ const existing = mailService.listParticipants(p.conversationId, true);
143
+ const alreadyJoined = existing.some((pt) => pt.id === ctx.participantId);
144
+ if (!alreadyJoined) {
145
+ mailService.joinConversation({
146
+ conversationId: p.conversationId,
147
+ participantId: ctx.participantId,
148
+ participantType: "agent",
149
+ role: p.role ?? "worker",
150
+ });
151
+ }
152
+ const conversation = mailService.getConversation(p.conversationId);
153
+ const response = { conversation };
154
+ if (p.catchUp) {
155
+ const catchUpLimit = p.catchUp.limit ?? 50;
156
+ const history = mailService.listTurns({
157
+ conversationId: p.conversationId,
158
+ limit: catchUpLimit + 1,
159
+ order: "asc",
160
+ });
161
+ const hasMore = history.length > catchUpLimit;
162
+ const items = hasMore ? history.slice(0, catchUpLimit) : history;
163
+ response.history = items;
164
+ if (hasMore) {
165
+ response.historyCursor = items[items.length - 1].id;
166
+ }
167
+ }
168
+ return response;
169
+ },
170
+ "mail/leave": async (params, ctx) => {
171
+ const p = params;
172
+ requireConversation(p.conversationId);
173
+ mailService.leaveConversation(p.conversationId, ctx.participantId);
174
+ return { success: true, leftAt: Date.now() };
175
+ },
176
+ // =========================================================================
177
+ // Turns
178
+ // =========================================================================
179
+ "mail/turn": async (params, ctx) => {
180
+ const p = params;
181
+ requireConversation(p.conversationId);
182
+ const { turnId } = mailService.recordTurn({
183
+ conversationId: p.conversationId,
184
+ participant: ctx.participantId,
185
+ contentType: p.contentType,
186
+ content: p.content,
187
+ threadId: p.threadId,
188
+ inReplyTo: p.inReplyTo,
189
+ sourceType: "explicit",
190
+ metadata: p.metadata,
191
+ });
192
+ const turns = mailService.listTurns({
193
+ conversationId: p.conversationId,
194
+ limit: 1,
195
+ order: "desc",
196
+ });
197
+ return { turn: turns[0] ?? { id: turnId } };
198
+ },
199
+ "mail/turns/list": async (params) => {
200
+ const p = params;
201
+ requireConversation(p.conversationId);
202
+ const limit = p.limit ?? 50;
203
+ let turns = mailService.listTurns({
204
+ conversationId: p.conversationId,
205
+ threadId: p.filter?.threadId,
206
+ participantId: p.filter?.participantId,
207
+ limit: limit + 1,
208
+ order: p.order,
209
+ });
210
+ // Filter by multiple content types (if provided)
211
+ if (p.filter?.contentTypes?.length) {
212
+ const typeSet = new Set(p.filter.contentTypes);
213
+ turns = turns.filter((t) => typeSet.has(t.contentType));
214
+ }
215
+ const hasMore = turns.length > limit;
216
+ const items = hasMore ? turns.slice(0, limit) : turns;
217
+ return {
218
+ turns: items,
219
+ hasMore,
220
+ nextCursor: hasMore ? items[items.length - 1].id : undefined,
221
+ };
222
+ },
223
+ // =========================================================================
224
+ // Threads
225
+ // =========================================================================
226
+ "mail/thread/create": async (params, ctx) => {
227
+ const p = params;
228
+ requireConversation(p.conversationId);
229
+ const threadId = `thread_${nanoid(12)}`;
230
+ mailService.stores.threads.save({
231
+ id: threadId,
232
+ conversationId: p.conversationId,
233
+ rootTurnId: p.rootTurnId,
234
+ subject: p.subject,
235
+ parentThreadId: p.parentThreadId,
236
+ turnCount: 0,
237
+ participantCount: 0,
238
+ createdAt: Date.now(),
239
+ updatedAt: Date.now(),
240
+ createdBy: ctx.participantId,
241
+ });
242
+ const thread = mailService.stores.threads.get(threadId);
243
+ return { thread };
244
+ },
245
+ "mail/thread/list": async (params) => {
246
+ const p = (params ?? {});
247
+ requireConversation(p.conversationId);
248
+ const threads = mailService.stores.threads.list({
249
+ conversationId: p.conversationId,
250
+ parentThreadId: p.parentThreadId,
251
+ });
252
+ const limit = p.limit ?? 50;
253
+ let startIndex = 0;
254
+ if (p.cursor) {
255
+ const idx = threads.findIndex((t) => t.id === p.cursor);
256
+ if (idx >= 0)
257
+ startIndex = idx + 1;
258
+ }
259
+ const page = threads.slice(startIndex, startIndex + limit + 1);
260
+ const hasMore = page.length > limit;
261
+ const items = hasMore ? page.slice(0, limit) : page;
262
+ return {
263
+ threads: items,
264
+ hasMore,
265
+ nextCursor: hasMore ? items[items.length - 1].id : undefined,
266
+ };
267
+ },
268
+ // =========================================================================
269
+ // Replay
270
+ // =========================================================================
271
+ "mail/replay": async (params) => {
272
+ const p = params;
273
+ requireConversation(p.conversationId);
274
+ const limit = p.limit ?? 50;
275
+ const turns = mailService.listTurns({
276
+ conversationId: p.conversationId,
277
+ threadId: p.threadId,
278
+ limit: limit + 1,
279
+ order: "asc",
280
+ });
281
+ const hasMore = turns.length > limit;
282
+ const items = hasMore ? turns.slice(0, limit) : turns;
283
+ return {
284
+ turns: items,
285
+ hasMore,
286
+ nextCursor: hasMore ? items[items.length - 1].id : undefined,
287
+ missedCount: 0,
288
+ };
289
+ },
290
+ };
291
+ }
292
+ //# sourceMappingURL=mail-handler-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail-handler-adapter.js","sourceRoot":"","sources":["../../../src/map/adapter/mail-handler-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,33 @@
1
1
  /**
2
- * MAPAdapter - Core MAP Protocol Adapter Implementation
2
+ * MAPAdapter - External MAP Protocol Interface
3
3
  *
4
- * The MAPAdapter is the external-facing component that:
5
- * - Accepts MAP protocol connections from clients, agents, and gateways
6
- * - Manages participant lifecycle and authentication
7
- * - Handles subscriptions and event streaming
8
- * - Dispatches extension method calls
9
- * - Enforces system-level permissions (Layer 1)
4
+ * ## Routing Architecture Role
10
5
  *
11
- * The adapter delegates to internal components:
12
- * - MessageRouter: For message routing and delivery
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)
13
24
  * - AgentManager: For agent lifecycle operations
14
- * - EventStore: For event persistence and replay
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())
15
31
  *
16
32
  * @see specs/s-5qir_map_integration_for_macro_agent.md
17
33
  */
@@ -66,6 +82,10 @@ export interface MAPAdapterServices {
66
82
  * Default working directory for ACP sessions.
67
83
  */
68
84
  defaultCwd?: string;
85
+ /**
86
+ * Mail service for conversation tracking.
87
+ */
88
+ mailService?: import("../../mail/mail-service.js").MailService;
69
89
  }
70
90
  /**
71
91
  * Internal agent state from AgentManager.
@@ -140,6 +160,10 @@ export declare class MAPAdapterImpl implements MAPAdapter {
140
160
  private sendToSession;
141
161
  private emitAdapterEvent;
142
162
  private handleConnect;
163
+ /**
164
+ * Get default capabilities for a participant type.
165
+ */
166
+ private getDefaultCapabilities;
143
167
  private handleDisconnect;
144
168
  private handleSubscribe;
145
169
  private handleUnsubscribe;
@@ -1 +1 @@
1
- {"version":3,"file":"map-adapter.d.ts","sourceRoot":"","sources":["../../../src/map/adapter/map-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"map-adapter.d.ts","sourceRoot":"","sources":["../../../src/map/adapter/map-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,44 @@
1
1
  /**
2
- * MAPAdapter - Core MAP Protocol Adapter Implementation
2
+ * MAPAdapter - External MAP Protocol Interface
3
3
  *
4
- * The MAPAdapter is the external-facing component that:
5
- * - Accepts MAP protocol connections from clients, agents, and gateways
6
- * - Manages participant lifecycle and authentication
7
- * - Handles subscriptions and event streaming
8
- * - Dispatches extension method calls
9
- * - Enforces system-level permissions (Layer 1)
4
+ * ## Routing Architecture Role
10
5
  *
11
- * The adapter delegates to internal components:
12
- * - MessageRouter: For message routing and delivery
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)
13
24
  * - AgentManager: For agent lifecycle operations
14
- * - EventStore: For event persistence and replay
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())
15
31
  *
16
32
  * @see specs/s-5qir_map_integration_for_macro_agent.md
17
33
  */
18
34
  import { ulid } from "ulid";
19
- import { isAgentAddress } from "../types.js";
35
+ import { isAgentAddress, } from "../types.js";
20
36
  import { createConnectionManager, } from "./connection-manager.js";
21
37
  import { createSubscriptionManager, } from "./subscription-manager.js";
22
38
  import { createRPCHandler, RPCError, createCapabilityMiddleware, createNotification, } from "./rpc-handler.js";
23
39
  import { EXTENSION_CAPABILITIES } from "./extensions/index.js";
24
40
  import { ACPOverMAPHandler } from "./acp-over-map.js";
41
+ import { createMailHandlers } from "./mail-handler-adapter.js";
25
42
  // =============================================================================
26
43
  // MAPAdapter Implementation
27
44
  // =============================================================================
@@ -291,6 +308,7 @@ export class MAPAdapterImpl {
291
308
  eventId: event.eventId, // For deduplication
292
309
  timestamp: event.timestamp, // Envelope timestamp
293
310
  event: {
311
+ // The actual event object
294
312
  id: event.eventId,
295
313
  type: event.type,
296
314
  timestamp: event.timestamp,
@@ -436,6 +454,13 @@ export class MAPAdapterImpl {
436
454
  return handler(extCtx, params);
437
455
  };
438
456
  }
457
+ // Add mail protocol handlers if mail service is available
458
+ if (this.services.mailService) {
459
+ const mailHandlers = createMailHandlers(this.services.mailService);
460
+ for (const [method, handler] of Object.entries(mailHandlers)) {
461
+ handlers[method] = handler;
462
+ }
463
+ }
439
464
  // Capability requirements for methods
440
465
  const capabilityRequirements = {
441
466
  "map/subscribe": "canSubscribe",
@@ -525,13 +550,81 @@ export class MAPAdapterImpl {
525
550
  if (!participant) {
526
551
  throw RPCError.notFound("participant", participantId);
527
552
  }
528
- // TODO: Handle authentication when auth hook is provided
529
- // For now, return the already-assigned capabilities
553
+ // Parse connect request parameters
554
+ const connectParams = params;
555
+ const requestedType = connectParams?.type ?? participant.type;
556
+ const credentials = connectParams?.credentials;
557
+ // Handle authentication if handler is configured and credentials provided
558
+ if (this.config.authenticate && credentials) {
559
+ const authResult = await this.config.authenticate(requestedType, credentials);
560
+ if (!authResult.allowed) {
561
+ throw RPCError.authenticationFailed(authResult.error ?? "Authentication failed");
562
+ }
563
+ // Update capabilities based on auth result
564
+ const newCapabilities = authResult.capabilities ?? this.getDefaultCapabilities(requestedType);
565
+ this.connections.updateCapabilities(participantId, newCapabilities);
566
+ // Return updated participant info
567
+ const updatedParticipant = this.connections.getParticipant(participantId);
568
+ return {
569
+ participantId: participant.id,
570
+ capabilities: updatedParticipant?.capabilities ?? newCapabilities,
571
+ };
572
+ }
573
+ // No auth handler or no credentials - use default capabilities for the type
574
+ if (requestedType !== participant.type) {
575
+ const defaultCapabilities = this.getDefaultCapabilities(requestedType);
576
+ this.connections.updateCapabilities(participantId, defaultCapabilities);
577
+ const updatedParticipant = this.connections.getParticipant(participantId);
578
+ return {
579
+ participantId: participant.id,
580
+ capabilities: updatedParticipant?.capabilities ?? defaultCapabilities,
581
+ };
582
+ }
530
583
  return {
531
584
  participantId: participant.id,
532
585
  capabilities: participant.capabilities,
533
586
  };
534
587
  }
588
+ /**
589
+ * Get default capabilities for a participant type.
590
+ */
591
+ getDefaultCapabilities(type) {
592
+ switch (type) {
593
+ case "agent":
594
+ return (this.config.defaultAgentCapabilities ?? {
595
+ canQuery: true,
596
+ canSubscribe: true,
597
+ canMessage: true,
598
+ canSpawn: true,
599
+ canStop: true,
600
+ canManageScopes: true,
601
+ canManageTasks: true,
602
+ canManageFederation: true,
603
+ });
604
+ case "gateway":
605
+ return {
606
+ canQuery: true,
607
+ canSubscribe: true,
608
+ canMessage: true,
609
+ canSpawn: false,
610
+ canStop: false,
611
+ canManageScopes: false,
612
+ canManageTasks: false,
613
+ canManageFederation: true,
614
+ };
615
+ case "client":
616
+ default:
617
+ return (this.config.defaultClientCapabilities ?? {
618
+ canQuery: true,
619
+ canSubscribe: true,
620
+ canMessage: true,
621
+ canSpawn: false,
622
+ canStop: false,
623
+ canManageScopes: false,
624
+ canManageTasks: false,
625
+ });
626
+ }
627
+ }
535
628
  async handleDisconnect(participantId) {
536
629
  await this.disconnectParticipant(participantId, "client_disconnect");
537
630
  return { success: true };
@@ -573,7 +666,10 @@ export class MAPAdapterImpl {
573
666
  // Check if this is an ACP-over-MAP message
574
667
  // SDK sends ACP envelope directly as payload (not wrapped in content)
575
668
  const rawPayload = payload;
576
- if (rawPayload && typeof rawPayload === 'object' && 'acp' in rawPayload && 'acpContext' in rawPayload) {
669
+ if (rawPayload &&
670
+ typeof rawPayload === "object" &&
671
+ "acp" in rawPayload &&
672
+ "acpContext" in rawPayload) {
577
673
  // This is an ACP envelope - route through ACP-over-MAP handler
578
674
  return this.handleACPOverMAP(participantId, to, rawPayload, ctx);
579
675
  }