macro-agent 0.0.11 → 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 (408) 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 +6 -0
  16. package/.sudocode/specs.jsonl +7 -0
  17. package/CLAUDE.md +110 -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 +25 -1
  31. package/dist/agent/agent-manager.d.ts.map +1 -1
  32. package/dist/agent/agent-manager.js +93 -7
  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-detection/command-builder.d.ts +30 -0
  38. package/dist/agent-detection/command-builder.d.ts.map +1 -0
  39. package/dist/agent-detection/command-builder.js +71 -0
  40. package/dist/agent-detection/command-builder.js.map +1 -0
  41. package/dist/agent-detection/detector.d.ts +84 -0
  42. package/dist/agent-detection/detector.d.ts.map +1 -0
  43. package/dist/agent-detection/detector.js +240 -0
  44. package/dist/agent-detection/detector.js.map +1 -0
  45. package/dist/agent-detection/index.d.ts +12 -0
  46. package/dist/agent-detection/index.d.ts.map +1 -0
  47. package/dist/agent-detection/index.js +14 -0
  48. package/dist/agent-detection/index.js.map +1 -0
  49. package/dist/agent-detection/registry.d.ts +53 -0
  50. package/dist/agent-detection/registry.d.ts.map +1 -0
  51. package/dist/agent-detection/registry.js +177 -0
  52. package/dist/agent-detection/registry.js.map +1 -0
  53. package/dist/agent-detection/types.d.ts +121 -0
  54. package/dist/agent-detection/types.d.ts.map +1 -0
  55. package/dist/agent-detection/types.js +20 -0
  56. package/dist/agent-detection/types.js.map +1 -0
  57. package/dist/api/server.d.ts.map +1 -1
  58. package/dist/api/server.js +95 -0
  59. package/dist/api/server.js.map +1 -1
  60. package/dist/cli/index.js +29 -0
  61. package/dist/cli/index.js.map +1 -1
  62. package/dist/cli/mcp.js +38 -0
  63. package/dist/cli/mcp.js.map +1 -1
  64. package/dist/config/index.d.ts +2 -0
  65. package/dist/config/index.d.ts.map +1 -0
  66. package/dist/config/index.js +2 -0
  67. package/dist/config/index.js.map +1 -0
  68. package/dist/config/project-config.d.ts +46 -0
  69. package/dist/config/project-config.d.ts.map +1 -0
  70. package/dist/config/project-config.js +68 -0
  71. package/dist/config/project-config.js.map +1 -0
  72. package/dist/lifecycle/cascade.d.ts +1 -1
  73. package/dist/lifecycle/cascade.d.ts.map +1 -1
  74. package/dist/lifecycle/handlers/index.d.ts +4 -0
  75. package/dist/lifecycle/handlers/index.d.ts.map +1 -1
  76. package/dist/lifecycle/handlers/index.js +2 -0
  77. package/dist/lifecycle/handlers/index.js.map +1 -1
  78. package/dist/lifecycle/handlers/worker.d.ts +4 -0
  79. package/dist/lifecycle/handlers/worker.d.ts.map +1 -1
  80. package/dist/lifecycle/handlers/worker.js +35 -3
  81. package/dist/lifecycle/handlers/worker.js.map +1 -1
  82. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  83. package/dist/map/adapter/acp-over-map.js +32 -2
  84. package/dist/map/adapter/acp-over-map.js.map +1 -1
  85. package/dist/map/adapter/event-translator.d.ts.map +1 -1
  86. package/dist/map/adapter/event-translator.js +1 -0
  87. package/dist/map/adapter/event-translator.js.map +1 -1
  88. package/dist/map/adapter/extensions/agent-detection.d.ts +49 -0
  89. package/dist/map/adapter/extensions/agent-detection.d.ts.map +1 -0
  90. package/dist/map/adapter/extensions/agent-detection.js +91 -0
  91. package/dist/map/adapter/extensions/agent-detection.js.map +1 -0
  92. package/dist/map/adapter/extensions/index.d.ts +10 -1
  93. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  94. package/dist/map/adapter/extensions/index.js +39 -0
  95. package/dist/map/adapter/extensions/index.js.map +1 -1
  96. package/dist/map/adapter/extensions/resume.d.ts +47 -0
  97. package/dist/map/adapter/extensions/resume.d.ts.map +1 -0
  98. package/dist/map/adapter/extensions/resume.js +59 -0
  99. package/dist/map/adapter/extensions/resume.js.map +1 -0
  100. package/dist/map/adapter/extensions/workspace-files.d.ts +42 -0
  101. package/dist/map/adapter/extensions/workspace-files.d.ts.map +1 -0
  102. package/dist/map/adapter/extensions/workspace-files.js +338 -0
  103. package/dist/map/adapter/extensions/workspace-files.js.map +1 -0
  104. package/dist/mcp/mcp-server.d.ts +6 -0
  105. package/dist/mcp/mcp-server.d.ts.map +1 -1
  106. package/dist/mcp/mcp-server.js +45 -0
  107. package/dist/mcp/mcp-server.js.map +1 -1
  108. package/dist/mcp/tools/claim_task.d.ts +35 -0
  109. package/dist/mcp/tools/claim_task.d.ts.map +1 -0
  110. package/dist/mcp/tools/claim_task.js +58 -0
  111. package/dist/mcp/tools/claim_task.js.map +1 -0
  112. package/dist/mcp/tools/done.d.ts +11 -2
  113. package/dist/mcp/tools/done.d.ts.map +1 -1
  114. package/dist/mcp/tools/done.js +15 -10
  115. package/dist/mcp/tools/done.js.map +1 -1
  116. package/dist/mcp/tools/list_claimable_tasks.d.ts +38 -0
  117. package/dist/mcp/tools/list_claimable_tasks.d.ts.map +1 -0
  118. package/dist/mcp/tools/list_claimable_tasks.js +63 -0
  119. package/dist/mcp/tools/list_claimable_tasks.js.map +1 -0
  120. package/dist/mcp/tools/unclaim_task.d.ts +31 -0
  121. package/dist/mcp/tools/unclaim_task.d.ts.map +1 -0
  122. package/dist/mcp/tools/unclaim_task.js +47 -0
  123. package/dist/mcp/tools/unclaim_task.js.map +1 -0
  124. package/dist/metrics/index.d.ts +2 -0
  125. package/dist/metrics/index.d.ts.map +1 -0
  126. package/dist/metrics/index.js +2 -0
  127. package/dist/metrics/index.js.map +1 -0
  128. package/dist/metrics/metrics.d.ts +79 -0
  129. package/dist/metrics/metrics.d.ts.map +1 -0
  130. package/dist/metrics/metrics.js +166 -0
  131. package/dist/metrics/metrics.js.map +1 -0
  132. package/dist/roles/capabilities.d.ts +1 -0
  133. package/dist/roles/capabilities.d.ts.map +1 -1
  134. package/dist/roles/capabilities.js +3 -0
  135. package/dist/roles/capabilities.js.map +1 -1
  136. package/dist/roles/types.d.ts +1 -1
  137. package/dist/roles/types.d.ts.map +1 -1
  138. package/dist/router/message-router.d.ts +41 -0
  139. package/dist/router/message-router.d.ts.map +1 -1
  140. package/dist/router/message-router.js +136 -5
  141. package/dist/router/message-router.js.map +1 -1
  142. package/dist/store/event-store.d.ts +8 -1
  143. package/dist/store/event-store.d.ts.map +1 -1
  144. package/dist/store/event-store.js +120 -4
  145. package/dist/store/event-store.js.map +1 -1
  146. package/dist/store/types/agents.d.ts +1 -1
  147. package/dist/store/types/agents.d.ts.map +1 -1
  148. package/dist/store/types/events.d.ts +1 -1
  149. package/dist/store/types/events.d.ts.map +1 -1
  150. package/dist/store/types/events.js.map +1 -1
  151. package/dist/store/types/index.d.ts +1 -0
  152. package/dist/store/types/index.d.ts.map +1 -1
  153. package/dist/store/types/index.js +1 -0
  154. package/dist/store/types/index.js.map +1 -1
  155. package/dist/store/types/sessions.d.ts +44 -0
  156. package/dist/store/types/sessions.d.ts.map +1 -0
  157. package/dist/store/types/sessions.js +9 -0
  158. package/dist/store/types/sessions.js.map +1 -0
  159. package/dist/store/types/tasks.d.ts +2 -0
  160. package/dist/store/types/tasks.d.ts.map +1 -1
  161. package/dist/task/backend/memory.d.ts +4 -1
  162. package/dist/task/backend/memory.d.ts.map +1 -1
  163. package/dist/task/backend/memory.js +81 -0
  164. package/dist/task/backend/memory.js.map +1 -1
  165. package/dist/task/backend/types.d.ts +30 -0
  166. package/dist/task/backend/types.d.ts.map +1 -1
  167. package/dist/task/backend/types.js.map +1 -1
  168. package/dist/teams/index.d.ts +4 -0
  169. package/dist/teams/index.d.ts.map +1 -0
  170. package/dist/teams/index.js +4 -0
  171. package/dist/teams/index.js.map +1 -0
  172. package/dist/teams/team-loader.d.ts +20 -0
  173. package/dist/teams/team-loader.d.ts.map +1 -0
  174. package/dist/teams/team-loader.js +293 -0
  175. package/dist/teams/team-loader.js.map +1 -0
  176. package/dist/teams/team-runtime.d.ts +139 -0
  177. package/dist/teams/team-runtime.d.ts.map +1 -0
  178. package/dist/teams/team-runtime.js +613 -0
  179. package/dist/teams/team-runtime.js.map +1 -0
  180. package/dist/teams/types.d.ts +266 -0
  181. package/dist/teams/types.d.ts.map +1 -0
  182. package/dist/teams/types.js +20 -0
  183. package/dist/teams/types.js.map +1 -0
  184. package/dist/workspace/dataplane-adapter.d.ts +1 -1
  185. package/dist/workspace/dataplane-adapter.d.ts.map +1 -1
  186. package/dist/workspace/dataplane-adapter.js +1 -1
  187. package/dist/workspace/dataplane-adapter.js.map +1 -1
  188. package/dist/workspace/index.d.ts +1 -1
  189. package/dist/workspace/index.d.ts.map +1 -1
  190. package/dist/workspace/strategies/index.d.ts +6 -0
  191. package/dist/workspace/strategies/index.d.ts.map +1 -0
  192. package/dist/workspace/strategies/index.js +5 -0
  193. package/dist/workspace/strategies/index.js.map +1 -0
  194. package/dist/workspace/strategies/optimistic.d.ts +26 -0
  195. package/dist/workspace/strategies/optimistic.d.ts.map +1 -0
  196. package/dist/workspace/strategies/optimistic.js +121 -0
  197. package/dist/workspace/strategies/optimistic.js.map +1 -0
  198. package/dist/workspace/strategies/queue.d.ts +26 -0
  199. package/dist/workspace/strategies/queue.d.ts.map +1 -0
  200. package/dist/workspace/strategies/queue.js +67 -0
  201. package/dist/workspace/strategies/queue.js.map +1 -0
  202. package/dist/workspace/strategies/registry.d.ts +37 -0
  203. package/dist/workspace/strategies/registry.d.ts.map +1 -0
  204. package/dist/workspace/strategies/registry.js +63 -0
  205. package/dist/workspace/strategies/registry.js.map +1 -0
  206. package/dist/workspace/strategies/trunk.d.ts +20 -0
  207. package/dist/workspace/strategies/trunk.d.ts.map +1 -0
  208. package/dist/workspace/strategies/trunk.js +108 -0
  209. package/dist/workspace/strategies/trunk.js.map +1 -0
  210. package/dist/workspace/strategies/types.d.ts +104 -0
  211. package/dist/workspace/strategies/types.d.ts.map +1 -0
  212. package/dist/workspace/strategies/types.js +11 -0
  213. package/dist/workspace/strategies/types.js.map +1 -0
  214. package/dist/workspace/types.d.ts +1 -1
  215. package/dist/workspace/types.d.ts.map +1 -1
  216. package/dist/workspace/workspace-manager.d.ts +1 -1
  217. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  218. package/docs/implementation-details.md +1127 -0
  219. package/docs/implementation-summary.md +448 -0
  220. package/docs/plan-self-driving-support.md +433 -0
  221. package/docs/spec-self-driving-support.md +462 -0
  222. package/docs/team-templates.md +860 -0
  223. package/docs/teams.md +233 -0
  224. package/package.json +4 -2
  225. package/src/acp/__tests__/integration.test.ts +161 -1
  226. package/src/acp/__tests__/macro-agent.test.ts +95 -0
  227. package/src/acp/__tests__/session-persistence.test.ts +276 -0
  228. package/src/acp/macro-agent.ts +79 -7
  229. package/src/acp/session-mapper.ts +108 -1
  230. package/src/acp/types.ts +33 -1
  231. package/src/agent/agent-manager.ts +158 -6
  232. package/src/agent/types.ts +27 -0
  233. package/src/agent-detection/__tests__/command-builder.test.ts +336 -0
  234. package/src/agent-detection/__tests__/detector.test.ts +768 -0
  235. package/src/agent-detection/__tests__/registry.test.ts +254 -0
  236. package/src/agent-detection/command-builder.ts +90 -0
  237. package/src/agent-detection/detector.ts +307 -0
  238. package/src/agent-detection/index.ts +36 -0
  239. package/src/agent-detection/registry.ts +200 -0
  240. package/src/agent-detection/types.ts +184 -0
  241. package/src/api/server.ts +110 -0
  242. package/src/cli/index.ts +44 -0
  243. package/src/cli/mcp.ts +47 -0
  244. package/src/config/index.ts +9 -0
  245. package/src/config/project-config.ts +107 -0
  246. package/src/lifecycle/cascade.ts +1 -1
  247. package/src/lifecycle/handlers/index.ts +8 -0
  248. package/src/lifecycle/handlers/worker.ts +48 -3
  249. package/src/map/adapter/__tests__/extensions.test.ts +359 -0
  250. package/src/map/adapter/__tests__/workspace-files.test.ts +673 -0
  251. package/src/map/adapter/acp-over-map.ts +45 -2
  252. package/src/map/adapter/event-translator.ts +1 -0
  253. package/src/map/adapter/extensions/agent-detection.ts +201 -0
  254. package/src/map/adapter/extensions/index.ts +63 -0
  255. package/src/map/adapter/extensions/resume.ts +114 -0
  256. package/src/map/adapter/extensions/workspace-files.ts +449 -0
  257. package/src/mcp/mcp-server.ts +67 -0
  258. package/src/mcp/tools/claim_task.ts +86 -0
  259. package/src/mcp/tools/done.ts +24 -10
  260. package/src/mcp/tools/list_claimable_tasks.ts +93 -0
  261. package/src/mcp/tools/unclaim_task.ts +71 -0
  262. package/src/metrics/index.ts +9 -0
  263. package/src/metrics/metrics.ts +280 -0
  264. package/src/roles/capabilities.ts +3 -0
  265. package/src/roles/types.ts +2 -1
  266. package/src/router/__tests__/message-router.test.ts +561 -0
  267. package/src/router/message-router.ts +223 -6
  268. package/src/store/event-store.ts +151 -3
  269. package/src/store/types/agents.ts +1 -1
  270. package/src/store/types/events.ts +2 -1
  271. package/src/store/types/index.ts +1 -0
  272. package/src/store/types/sessions.ts +53 -0
  273. package/src/store/types/tasks.ts +3 -0
  274. package/src/task/backend/memory.ts +116 -0
  275. package/src/task/backend/types.ts +43 -0
  276. package/src/teams/__tests__/cross-subsystem.integration.test.ts +983 -0
  277. package/src/teams/__tests__/e2e/team-runtime.e2e.test.ts +553 -0
  278. package/src/teams/__tests__/team-system.test.ts +1280 -0
  279. package/src/teams/index.ts +13 -0
  280. package/src/teams/team-loader.ts +434 -0
  281. package/src/teams/team-runtime.ts +727 -0
  282. package/src/teams/types.ts +377 -0
  283. package/src/workspace/dataplane-adapter.ts +1 -1
  284. package/src/workspace/index.ts +1 -1
  285. package/src/workspace/strategies/index.ts +18 -0
  286. package/src/workspace/strategies/optimistic.ts +136 -0
  287. package/src/workspace/strategies/queue.ts +81 -0
  288. package/src/workspace/strategies/registry.ts +89 -0
  289. package/src/workspace/strategies/trunk.ts +123 -0
  290. package/src/workspace/strategies/types.ts +145 -0
  291. package/src/workspace/types.ts +1 -1
  292. package/src/workspace/workspace-manager.ts +1 -1
  293. package/.claude/settings.local.json +0 -59
  294. package/dist/map/utils/address-translation.d.ts +0 -99
  295. package/dist/map/utils/address-translation.d.ts.map +0 -1
  296. package/dist/map/utils/address-translation.js +0 -285
  297. package/dist/map/utils/address-translation.js.map +0 -1
  298. package/dist/map/utils/index.d.ts +0 -7
  299. package/dist/map/utils/index.d.ts.map +0 -1
  300. package/dist/map/utils/index.js +0 -7
  301. package/dist/map/utils/index.js.map +0 -1
  302. package/references/acp-factory-ref/CHANGELOG.md +0 -33
  303. package/references/acp-factory-ref/LICENSE +0 -21
  304. package/references/acp-factory-ref/README.md +0 -341
  305. package/references/acp-factory-ref/package-lock.json +0 -3102
  306. package/references/acp-factory-ref/package.json +0 -96
  307. package/references/acp-factory-ref/python/CHANGELOG.md +0 -33
  308. package/references/acp-factory-ref/python/LICENSE +0 -21
  309. package/references/acp-factory-ref/python/Makefile +0 -57
  310. package/references/acp-factory-ref/python/README.md +0 -253
  311. package/references/acp-factory-ref/python/pyproject.toml +0 -73
  312. package/references/acp-factory-ref/python/tests/__init__.py +0 -0
  313. package/references/acp-factory-ref/python/tests/e2e/__init__.py +0 -1
  314. package/references/acp-factory-ref/python/tests/e2e/test_codex_e2e.py +0 -349
  315. package/references/acp-factory-ref/python/tests/e2e/test_gemini_e2e.py +0 -165
  316. package/references/acp-factory-ref/python/tests/e2e/test_opencode_e2e.py +0 -296
  317. package/references/acp-factory-ref/python/tests/test_client_handler.py +0 -543
  318. package/references/acp-factory-ref/python/tests/test_pushable.py +0 -199
  319. package/references/claude-code-acp/.github/workflows/ci.yml +0 -45
  320. package/references/claude-code-acp/.github/workflows/publish.yml +0 -34
  321. package/references/claude-code-acp/.prettierrc.json +0 -4
  322. package/references/claude-code-acp/CHANGELOG.md +0 -249
  323. package/references/claude-code-acp/LICENSE +0 -222
  324. package/references/claude-code-acp/README.md +0 -53
  325. package/references/claude-code-acp/docs/RELEASES.md +0 -24
  326. package/references/claude-code-acp/eslint.config.js +0 -48
  327. package/references/claude-code-acp/package-lock.json +0 -4570
  328. package/references/claude-code-acp/package.json +0 -88
  329. package/references/claude-code-acp/scripts/release.sh +0 -119
  330. package/references/claude-code-acp/src/acp-agent.ts +0 -2065
  331. package/references/claude-code-acp/src/index.ts +0 -26
  332. package/references/claude-code-acp/src/lib.ts +0 -38
  333. package/references/claude-code-acp/src/mcp-server.ts +0 -911
  334. package/references/claude-code-acp/src/settings.ts +0 -522
  335. package/references/claude-code-acp/src/tests/.claude/commands/quick-math.md +0 -5
  336. package/references/claude-code-acp/src/tests/.claude/commands/say-hello.md +0 -6
  337. package/references/claude-code-acp/src/tests/acp-agent-fork.test.ts +0 -479
  338. package/references/claude-code-acp/src/tests/acp-agent.test.ts +0 -1502
  339. package/references/claude-code-acp/src/tests/extract-lines.test.ts +0 -103
  340. package/references/claude-code-acp/src/tests/fork-session.test.ts +0 -335
  341. package/references/claude-code-acp/src/tests/replace-and-calculate-location.test.ts +0 -334
  342. package/references/claude-code-acp/src/tests/settings.test.ts +0 -617
  343. package/references/claude-code-acp/src/tests/skills-options.test.ts +0 -187
  344. package/references/claude-code-acp/src/tests/tools.test.ts +0 -318
  345. package/references/claude-code-acp/src/tests/typescript-declarations.test.ts +0 -558
  346. package/references/claude-code-acp/src/tools.ts +0 -819
  347. package/references/claude-code-acp/src/utils.ts +0 -171
  348. package/references/claude-code-acp/tsconfig.json +0 -18
  349. package/references/claude-code-acp/vitest.config.ts +0 -19
  350. package/references/multi-agent-protocol/.sudocode/issues.jsonl +0 -111
  351. package/references/multi-agent-protocol/.sudocode/specs.jsonl +0 -13
  352. package/references/multi-agent-protocol/LICENSE +0 -21
  353. package/references/multi-agent-protocol/README.md +0 -113
  354. package/references/multi-agent-protocol/docs/00-design-specification.md +0 -496
  355. package/references/multi-agent-protocol/docs/01-open-questions.md +0 -1050
  356. package/references/multi-agent-protocol/docs/02-wire-protocol.md +0 -296
  357. package/references/multi-agent-protocol/docs/03-streaming-semantics.md +0 -252
  358. package/references/multi-agent-protocol/docs/04-error-handling.md +0 -231
  359. package/references/multi-agent-protocol/docs/05-connection-model.md +0 -244
  360. package/references/multi-agent-protocol/docs/06-visibility-permissions.md +0 -243
  361. package/references/multi-agent-protocol/docs/07-federation.md +0 -259
  362. package/references/multi-agent-protocol/docs/08-macro-agent-migration.md +0 -253
  363. package/references/multi-agent-protocol/docs/09-authentication.md +0 -680
  364. package/references/multi-agent-protocol/docs/10-mail-protocol.md +0 -553
  365. package/references/multi-agent-protocol/docs/agent-iam-integration.md +0 -877
  366. package/references/multi-agent-protocol/docs/agentic-mesh-integration-draft.md +0 -459
  367. package/references/multi-agent-protocol/docs/git-transport-draft.md +0 -251
  368. package/references/multi-agent-protocol/docs-site/Gemfile +0 -22
  369. package/references/multi-agent-protocol/docs-site/README.md +0 -82
  370. package/references/multi-agent-protocol/docs-site/_config.yml +0 -91
  371. package/references/multi-agent-protocol/docs-site/_includes/head_custom.html +0 -20
  372. package/references/multi-agent-protocol/docs-site/_sass/color_schemes/map.scss +0 -42
  373. package/references/multi-agent-protocol/docs-site/_sass/custom/custom.scss +0 -34
  374. package/references/multi-agent-protocol/docs-site/examples/full-integration.md +0 -510
  375. package/references/multi-agent-protocol/docs-site/examples/index.md +0 -138
  376. package/references/multi-agent-protocol/docs-site/examples/simple-chat.md +0 -282
  377. package/references/multi-agent-protocol/docs-site/examples/task-queue.md +0 -399
  378. package/references/multi-agent-protocol/docs-site/getting-started/index.md +0 -98
  379. package/references/multi-agent-protocol/docs-site/getting-started/installation.md +0 -219
  380. package/references/multi-agent-protocol/docs-site/getting-started/overview.md +0 -172
  381. package/references/multi-agent-protocol/docs-site/getting-started/quickstart.md +0 -237
  382. package/references/multi-agent-protocol/docs-site/index.md +0 -136
  383. package/references/multi-agent-protocol/docs-site/protocol/authentication.md +0 -391
  384. package/references/multi-agent-protocol/docs-site/protocol/connection-model.md +0 -376
  385. package/references/multi-agent-protocol/docs-site/protocol/design.md +0 -284
  386. package/references/multi-agent-protocol/docs-site/protocol/error-handling.md +0 -312
  387. package/references/multi-agent-protocol/docs-site/protocol/federation.md +0 -449
  388. package/references/multi-agent-protocol/docs-site/protocol/index.md +0 -129
  389. package/references/multi-agent-protocol/docs-site/protocol/permissions.md +0 -398
  390. package/references/multi-agent-protocol/docs-site/protocol/streaming.md +0 -353
  391. package/references/multi-agent-protocol/docs-site/protocol/wire-protocol.md +0 -369
  392. package/references/multi-agent-protocol/docs-site/sdk/api/agent.md +0 -357
  393. package/references/multi-agent-protocol/docs-site/sdk/api/client.md +0 -380
  394. package/references/multi-agent-protocol/docs-site/sdk/api/index.md +0 -62
  395. package/references/multi-agent-protocol/docs-site/sdk/api/server.md +0 -453
  396. package/references/multi-agent-protocol/docs-site/sdk/api/types.md +0 -468
  397. package/references/multi-agent-protocol/docs-site/sdk/guides/agent.md +0 -375
  398. package/references/multi-agent-protocol/docs-site/sdk/guides/authentication.md +0 -405
  399. package/references/multi-agent-protocol/docs-site/sdk/guides/client.md +0 -352
  400. package/references/multi-agent-protocol/docs-site/sdk/guides/index.md +0 -89
  401. package/references/multi-agent-protocol/docs-site/sdk/guides/server.md +0 -360
  402. package/references/multi-agent-protocol/docs-site/sdk/guides/testing.md +0 -446
  403. package/references/multi-agent-protocol/docs-site/sdk/guides/transports.md +0 -363
  404. package/references/multi-agent-protocol/docs-site/sdk/index.md +0 -206
  405. package/references/multi-agent-protocol/package-lock.json +0 -3886
  406. package/references/multi-agent-protocol/package.json +0 -56
  407. package/references/multi-agent-protocol/schema/meta.json +0 -467
  408. package/references/multi-agent-protocol/schema/schema.json +0 -2558
@@ -1,680 +0,0 @@
1
- # MAP Authentication Specification
2
-
3
- This specification defines how authentication is negotiated and performed in the Multi-Agent Protocol (MAP). The design prioritizes flexibility while providing interoperable defaults.
4
-
5
- ## Design Principles
6
-
7
- 1. **Pluggable mechanisms** - Support multiple auth methods with a standard negotiation flow
8
- 2. **Sensible defaults** - Built-in support for common methods (bearer tokens, API keys)
9
- 3. **Transport-aware** - Acknowledge that some auth happens at transport layer (mTLS)
10
- 4. **Optional for local** - No auth overhead for trusted local connections (stdio)
11
- 5. **Federation-ready** - Credentials can carry claims for cross-server authentication
12
-
13
- ---
14
-
15
- ## Authentication Methods
16
-
17
- MAP defines the following standard authentication methods:
18
-
19
- | Method | Description | Use Case |
20
- |--------|-------------|----------|
21
- | `none` | No authentication | Local subprocess agents, development |
22
- | `bearer` | Bearer token (JWT or opaque) | OAuth2, IdP integration, M2M tokens |
23
- | `api-key` | Simple API key | Simple integrations, internal services |
24
- | `mtls` | Mutual TLS (transport layer) | High-security service-to-service |
25
-
26
- ### Extension Methods
27
-
28
- Custom authentication methods MUST use the `x-` prefix:
29
-
30
- ```
31
- x-custom-auth
32
- x-kerberos
33
- x-saml
34
- ```
35
-
36
- Servers MUST reject unknown methods that do not use the `x-` prefix.
37
-
38
- ---
39
-
40
- ## Wire Protocol
41
-
42
- ### Server Authentication Capabilities
43
-
44
- Servers advertise authentication requirements in the connect response:
45
-
46
- ```typescript
47
- interface ServerAuthCapabilities {
48
- /** Supported authentication methods (in preference order) */
49
- methods: AuthMethod[];
50
-
51
- /** Is authentication required to proceed? */
52
- required: boolean;
53
-
54
- /** OAuth2 authorization server metadata URL (RFC 8414) */
55
- oauth2MetadataUrl?: string;
56
-
57
- /** JWKS URL for local JWT verification (RFC 7517) */
58
- jwksUrl?: string;
59
-
60
- /** Realm identifier for this server */
61
- realm?: string;
62
- }
63
- ```
64
-
65
- ### Client Authentication Credentials
66
-
67
- Clients provide credentials using:
68
-
69
- ```typescript
70
- interface AuthCredentials {
71
- /** The authentication method being used */
72
- method: AuthMethod;
73
-
74
- /** The credential value (token, API key, etc.) */
75
- credential?: string;
76
-
77
- /** Method-specific additional data */
78
- metadata?: Record<string, unknown>;
79
- }
80
- ```
81
-
82
- ### Authentication Result
83
-
84
- Servers respond with:
85
-
86
- ```typescript
87
- interface AuthResult {
88
- /** Whether authentication succeeded */
89
- success: boolean;
90
-
91
- /** Authenticated principal information */
92
- principal?: {
93
- /** Unique identifier for this principal */
94
- id: string;
95
-
96
- /** Token issuer (for federated auth) */
97
- issuer?: string;
98
-
99
- /** Additional claims from the credential */
100
- claims?: Record<string, unknown>;
101
- };
102
-
103
- /** Error details if authentication failed */
104
- error?: {
105
- code: AuthErrorCode;
106
- message: string;
107
- };
108
- }
109
-
110
- type AuthErrorCode =
111
- | 'invalid_credentials' // Credentials are malformed or invalid
112
- | 'expired' // Credentials have expired
113
- | 'insufficient_scope' // Valid credentials but insufficient permissions
114
- | 'method_not_supported' // Requested method not supported by server
115
- | 'auth_required'; // No credentials provided but auth is required
116
- ```
117
-
118
- ---
119
-
120
- ## Connection Flow
121
-
122
- ### Flow 1: Auth Provided Upfront (Recommended)
123
-
124
- When the client knows the server's auth requirements:
125
-
126
- ```
127
- Client Server
128
- │ │
129
- │──── map/connect ────────────────────────────►│
130
- │ { participantType, auth: { method, credential } }
131
- │ │
132
- │◄─── connect response ───────────────────────│
133
- │ { session, principal } │
134
- │ │
135
- ```
136
-
137
- ```typescript
138
- // Request
139
- {
140
- "jsonrpc": "2.0",
141
- "id": 1,
142
- "method": "map/connect",
143
- "params": {
144
- "protocolVersion": 1,
145
- "participantType": "client",
146
- "name": "my-client",
147
- "auth": {
148
- "method": "bearer",
149
- "credential": "eyJhbGciOiJSUzI1NiIs..."
150
- }
151
- }
152
- }
153
-
154
- // Response (success)
155
- {
156
- "jsonrpc": "2.0",
157
- "id": 1,
158
- "result": {
159
- "sessionId": "session_01ABC",
160
- "participantId": "client_01XYZ",
161
- "serverCapabilities": { ... },
162
- "principal": {
163
- "id": "user_123",
164
- "issuer": "https://auth.example.com",
165
- "claims": { "scope": "read write" }
166
- }
167
- }
168
- }
169
- ```
170
-
171
- ### Flow 2: Auth Negotiation
172
-
173
- When the client doesn't know auth requirements:
174
-
175
- ```
176
- Client Server
177
- │ │
178
- │──── map/connect ────────────────────────────►│
179
- │ { participantType } │
180
- │ │
181
- │◄─── auth_required response ─────────────────│
182
- │ { authRequired: { methods, required } } │
183
- │ │
184
- │──── map/authenticate ───────────────────────►│
185
- │ { method, credential } │
186
- │ │
187
- │◄─── auth result ────────────────────────────│
188
- │ { success, session, principal } │
189
- │ │
190
- ```
191
-
192
- ```typescript
193
- // Initial connect (no auth)
194
- {
195
- "jsonrpc": "2.0",
196
- "id": 1,
197
- "method": "map/connect",
198
- "params": {
199
- "protocolVersion": 1,
200
- "participantType": "client",
201
- "name": "my-client"
202
- }
203
- }
204
-
205
- // Server requires auth
206
- {
207
- "jsonrpc": "2.0",
208
- "id": 1,
209
- "result": {
210
- "authRequired": {
211
- "methods": ["bearer", "api-key"],
212
- "required": true,
213
- "realm": "map-server-prod",
214
- "oauth2MetadataUrl": "https://auth.example.com/.well-known/oauth-authorization-server"
215
- }
216
- }
217
- }
218
-
219
- // Client authenticates
220
- {
221
- "jsonrpc": "2.0",
222
- "id": 2,
223
- "method": "map/authenticate",
224
- "params": {
225
- "method": "bearer",
226
- "credential": "eyJhbGciOiJSUzI1NiIs..."
227
- }
228
- }
229
-
230
- // Server confirms
231
- {
232
- "jsonrpc": "2.0",
233
- "id": 2,
234
- "result": {
235
- "success": true,
236
- "sessionId": "session_01ABC",
237
- "participantId": "client_01XYZ",
238
- "principal": {
239
- "id": "user_123",
240
- "claims": { "scope": "read write" }
241
- }
242
- }
243
- }
244
- ```
245
-
246
- ### Flow 3: No Auth Required
247
-
248
- For local connections or development:
249
-
250
- ```typescript
251
- // Request
252
- {
253
- "jsonrpc": "2.0",
254
- "id": 1,
255
- "method": "map/connect",
256
- "params": {
257
- "protocolVersion": 1,
258
- "participantType": "agent",
259
- "name": "local-worker",
260
- "auth": { "method": "none" }
261
- }
262
- }
263
-
264
- // Response
265
- {
266
- "jsonrpc": "2.0",
267
- "id": 1,
268
- "result": {
269
- "sessionId": "session_01ABC",
270
- "participantId": "agent_01XYZ",
271
- "principal": {
272
- "id": "anonymous"
273
- }
274
- }
275
- }
276
- ```
277
-
278
- ---
279
-
280
- ## Method-Specific Details
281
-
282
- ### Bearer Tokens (`bearer`)
283
-
284
- Bearer tokens are opaque strings or JWTs. The server is responsible for validation.
285
-
286
- **Credential format:** The raw token string
287
-
288
- ```typescript
289
- {
290
- "method": "bearer",
291
- "credential": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."
292
- }
293
- ```
294
-
295
- **JWT Claims (when using JWT):**
296
-
297
- | Claim | Description | Required |
298
- |-------|-------------|----------|
299
- | `sub` | Subject (principal ID) | Yes |
300
- | `iss` | Issuer | Recommended |
301
- | `aud` | Audience (server identifier) | Recommended |
302
- | `exp` | Expiration time | Recommended |
303
- | `iat` | Issued at | Recommended |
304
- | `scope` | Space-separated permission scopes | Optional |
305
- | `map:capabilities` | MAP-specific capabilities | Optional |
306
-
307
- **Example JWT payload:**
308
-
309
- ```json
310
- {
311
- "sub": "agent_worker_01",
312
- "iss": "https://auth.example.com",
313
- "aud": "map-server-prod",
314
- "exp": 1706227200,
315
- "iat": 1706223600,
316
- "scope": "map:read map:write map:agent",
317
- "map:capabilities": {
318
- "canSpawn": true,
319
- "canSend": true
320
- }
321
- }
322
- ```
323
-
324
- ### API Keys (`api-key`)
325
-
326
- Simple static keys for straightforward integrations.
327
-
328
- **Credential format:** The API key string
329
-
330
- ```typescript
331
- {
332
- "method": "api-key",
333
- "credential": "map_sk_live_abc123def456..."
334
- }
335
- ```
336
-
337
- **Security considerations:**
338
- - MUST only be used over TLS
339
- - Keys SHOULD be rotatable without service interruption
340
- - Keys SHOULD have associated metadata (owner, scopes, expiry)
341
-
342
- ### Mutual TLS (`mtls`)
343
-
344
- Authentication is performed at the transport layer via client certificates.
345
-
346
- **Credential format:** No credential in the protocol; certificate is validated at transport.
347
-
348
- ```typescript
349
- {
350
- "method": "mtls"
351
- // No credential needed - cert already validated
352
- }
353
- ```
354
-
355
- **Metadata:** The server MAY extract principal information from the certificate:
356
-
357
- ```typescript
358
- {
359
- "method": "mtls",
360
- "metadata": {
361
- "cn": "agent-worker-01.example.com",
362
- "fingerprint": "sha256:abc123..."
363
- }
364
- }
365
- ```
366
-
367
- ### No Authentication (`none`)
368
-
369
- For trusted local connections.
370
-
371
- ```typescript
372
- {
373
- "method": "none"
374
- }
375
- ```
376
-
377
- **When to use:**
378
- - Subprocess agents connected via stdio
379
- - In-process connections
380
- - Development/testing environments
381
- - Behind a trusted proxy that handles auth
382
-
383
- **Servers MAY:**
384
- - Reject `none` based on transport type (e.g., require auth for WebSocket)
385
- - Assign a default principal for anonymous connections
386
-
387
- ---
388
-
389
- ## Token Refresh
390
-
391
- For long-lived connections with expiring tokens:
392
-
393
- ### Proactive Refresh
394
-
395
- Client refreshes before expiration:
396
-
397
- ```typescript
398
- // Request
399
- {
400
- "jsonrpc": "2.0",
401
- "id": 10,
402
- "method": "map/auth/refresh",
403
- "params": {
404
- "credential": "eyJhbGciOiJSUzI1NiIs..." // New token
405
- }
406
- }
407
-
408
- // Response
409
- {
410
- "jsonrpc": "2.0",
411
- "id": 10,
412
- "result": {
413
- "success": true,
414
- "principal": {
415
- "id": "user_123",
416
- "claims": { "exp": 1706230800 }
417
- }
418
- }
419
- }
420
- ```
421
-
422
- ### Server-Initiated Expiration Warning
423
-
424
- Server notifies client before token expires:
425
-
426
- ```typescript
427
- // Notification (server → client)
428
- {
429
- "jsonrpc": "2.0",
430
- "method": "map/auth/expiring",
431
- "params": {
432
- "expiresAt": 1706227200,
433
- "refreshBefore": 1706226900 // Suggested refresh time
434
- }
435
- }
436
- ```
437
-
438
- ### Forced Re-authentication
439
-
440
- If token expires or is revoked:
441
-
442
- ```typescript
443
- // Notification (server → client)
444
- {
445
- "jsonrpc": "2.0",
446
- "method": "map/auth/revoked",
447
- "params": {
448
- "reason": "token_expired",
449
- "message": "Your session has expired. Please re-authenticate.",
450
- "gracePeriodMs": 5000 // Time before disconnect
451
- }
452
- }
453
- ```
454
-
455
- ---
456
-
457
- ## Federation Authentication
458
-
459
- For cross-server authentication in federated deployments:
460
-
461
- ### Token Requirements
462
-
463
- Federated tokens MUST include:
464
-
465
- | Claim | Description |
466
- |-------|-------------|
467
- | `iss` | Issuing server's identifier |
468
- | `aud` | Target server(s) - array or string |
469
- | `sub` | Original principal identifier |
470
- | `map:federation` | Federation-specific claims |
471
-
472
- **Example federated token:**
473
-
474
- ```json
475
- {
476
- "sub": "agent_worker_01",
477
- "iss": "https://server-a.example.com",
478
- "aud": ["https://server-b.example.com", "https://server-c.example.com"],
479
- "exp": 1706227200,
480
- "map:federation": {
481
- "originServer": "server-a",
482
- "delegatedCapabilities": {
483
- "canSend": true,
484
- "canQuery": true
485
- },
486
- "hopCount": 1,
487
- "maxHops": 3
488
- }
489
- }
490
- ```
491
-
492
- ### Trust Establishment
493
-
494
- Federated servers MUST:
495
- 1. Maintain an allowlist of trusted issuers
496
- 2. Verify token signatures against issuer's JWKS
497
- 3. Validate audience claims include their own identifier
498
- 4. Enforce hop count limits to prevent routing loops
499
-
500
- ---
501
-
502
- ## Error Handling
503
-
504
- ### Authentication Errors
505
-
506
- | Error Code | HTTP Equivalent | Description |
507
- |------------|-----------------|-------------|
508
- | `AUTH_REQUIRED` | 401 | Authentication required but not provided |
509
- | `INVALID_CREDENTIALS` | 401 | Credentials invalid or malformed |
510
- | `EXPIRED` | 401 | Credentials have expired |
511
- | `INSUFFICIENT_SCOPE` | 403 | Valid credentials but lacks required permissions |
512
- | `METHOD_NOT_SUPPORTED` | 400 | Requested auth method not supported |
513
-
514
- **Error response format:**
515
-
516
- ```typescript
517
- {
518
- "jsonrpc": "2.0",
519
- "id": 1,
520
- "error": {
521
- "code": -32001, // MAP error code
522
- "message": "Authentication failed",
523
- "data": {
524
- "authError": {
525
- "code": "invalid_credentials",
526
- "message": "JWT signature verification failed"
527
- },
528
- "authRequired": {
529
- "methods": ["bearer", "api-key"],
530
- "required": true
531
- }
532
- }
533
- }
534
- }
535
- ```
536
-
537
- ---
538
-
539
- ## Security Considerations
540
-
541
- ### Transport Security
542
-
543
- 1. **TLS Required** - All remote connections MUST use TLS 1.2+
544
- 2. **Certificate Validation** - Clients MUST validate server certificates
545
- 3. **No Downgrade** - Servers SHOULD reject non-TLS connections for auth methods other than `none`
546
-
547
- ### Token Security
548
-
549
- 1. **Short Lifetimes** - Bearer tokens SHOULD have lifetimes ≤ 1 hour for M2M
550
- 2. **Audience Validation** - Servers MUST validate `aud` claims
551
- 3. **Signature Algorithms** - Prefer RS256/ES256; avoid HS256 for distributed systems
552
- 4. **Key Rotation** - Servers SHOULD support JWKS key rotation
553
-
554
- ### API Key Security
555
-
556
- 1. **Entropy** - Keys MUST have ≥ 256 bits of entropy
557
- 2. **Prefix** - Keys SHOULD use identifiable prefixes (e.g., `map_sk_`)
558
- 3. **Hashing** - Servers MUST store only hashed keys
559
- 4. **Rotation** - Support key rotation without service interruption
560
-
561
- ### Logging and Audit
562
-
563
- 1. **No Credential Logging** - Credentials MUST NOT appear in logs
564
- 2. **Auth Events** - Log authentication attempts (success/failure) with principal ID
565
- 3. **Rate Limiting** - Implement rate limiting on auth endpoints
566
-
567
- ---
568
-
569
- ## Implementation Requirements
570
-
571
- ### Servers MUST
572
-
573
- 1. Support at least one of: `bearer`, `api-key`, or `none`
574
- 2. Advertise supported methods in auth capabilities
575
- 3. Return proper error codes for auth failures
576
- 4. Validate credentials before establishing session
577
-
578
- ### Servers SHOULD
579
-
580
- 1. Support `bearer` tokens with JWT validation
581
- 2. Provide JWKS endpoint or reference external JWKS
582
- 3. Support token refresh for long-lived connections
583
- 4. Implement rate limiting on authentication
584
-
585
- ### Clients MUST
586
-
587
- 1. Support providing credentials via `auth` parameter
588
- 2. Handle `authRequired` response and provide credentials
589
- 3. Handle auth errors gracefully
590
-
591
- ### Clients SHOULD
592
-
593
- 1. Implement automatic token refresh before expiration
594
- 2. Support credential caching with proper security
595
- 3. Handle `map/auth/expiring` notifications
596
-
597
- ---
598
-
599
- ## Examples
600
-
601
- ### Example 1: Production Server with JWT
602
-
603
- ```typescript
604
- const server = new MAPServer({
605
- auth: {
606
- required: true,
607
- methods: ['bearer'],
608
- authenticators: [
609
- new JWTAuthenticator({
610
- jwksUrl: 'https://auth.example.com/.well-known/jwks.json',
611
- issuer: 'https://auth.example.com',
612
- audience: 'map-server-prod'
613
- })
614
- ]
615
- }
616
- });
617
- ```
618
-
619
- ### Example 2: Internal Service with API Keys
620
-
621
- ```typescript
622
- const server = new MAPServer({
623
- auth: {
624
- required: true,
625
- methods: ['api-key'],
626
- authenticators: [
627
- new APIKeyAuthenticator({
628
- validateKey: async (key) => {
629
- const record = await db.apiKeys.findByHash(hash(key));
630
- return {
631
- valid: !!record && !record.revoked,
632
- principalId: record?.ownerId,
633
- metadata: { scopes: record?.scopes }
634
- };
635
- }
636
- })
637
- ]
638
- }
639
- });
640
- ```
641
-
642
- ### Example 3: Development Server
643
-
644
- ```typescript
645
- const server = new MAPServer({
646
- auth: {
647
- required: false,
648
- methods: ['none', 'bearer'],
649
- authenticators: [
650
- new NoAuthAuthenticator(),
651
- new JWTAuthenticator({ /* ... */ }) // Optional for testing
652
- ]
653
- }
654
- });
655
- ```
656
-
657
- ### Example 4: Hybrid Production
658
-
659
- ```typescript
660
- const server = new MAPServer({
661
- auth: {
662
- required: true,
663
- methods: ['bearer', 'api-key', 'mtls'],
664
- authenticators: [
665
- new JWTAuthenticator({ /* ... */ }),
666
- new APIKeyAuthenticator({ /* ... */ }),
667
- new MTLSAuthenticator({ /* ... */ })
668
- ]
669
- }
670
- });
671
- ```
672
-
673
- ---
674
-
675
- ## Open Questions
676
-
677
- 1. **Scope standardization** - Should MAP define standard scope strings (e.g., `map:read`, `map:agent:spawn`)?
678
- 2. **Principal-to-permissions mapping** - Should the protocol define how claims map to capabilities?
679
- 3. **Multi-factor** - Is there a use case for multi-factor auth in agent connections?
680
- 4. **Session binding** - Should tokens be bound to specific sessions to prevent replay?