macro-agent 0.0.11 → 0.0.13

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 +5 -3
  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
@@ -65,10 +65,16 @@ export interface DoneToolDeps {
65
65
  /** Get merge queue for coordinating worker merges */
66
66
  getMergeQueue?(): AllHandlerDeps["mergeQueue"];
67
67
  };
68
+ /** Optional RoleRegistry for capability-based done() checks */
69
+ roleRegistry?: import("../../roles/types.js").RoleRegistry;
68
70
  /** Optional MailService for recording completion turns */
69
71
  mailService?: import("../../mail/mail-service.js").MailService;
70
72
  /** Optional ConversationMap for agent-to-conversation lookup */
71
73
  conversationMap?: import("../../mail/conversation-map.js").ConversationMap;
74
+ /** Optional integration strategy (from team config) */
75
+ integrationStrategy?: import("../../workspace/strategies/types.js").IntegrationStrategy;
76
+ /** Optional task mode from team config */
77
+ taskMode?: "push" | "pull";
72
78
  }
73
79
 
74
80
  // =============================================================================
@@ -76,11 +82,15 @@ export interface DoneToolDeps {
76
82
  // =============================================================================
77
83
 
78
84
  /**
79
- * Check if an agent has the lifecycle.done capability
85
+ * Check if an agent has the lifecycle.done capability.
86
+ *
87
+ * Uses RoleRegistry for capability resolution, supporting both built-in
88
+ * roles and team-defined roles that extend them.
80
89
  */
81
90
  export function hasLifecycleDoneCapability(
82
91
  eventStore: EventStore,
83
- agentId: string
92
+ agentId: string,
93
+ roleRegistry?: import("../../roles/types.js").RoleRegistry
84
94
  ): { hasCapability: boolean; role: string } {
85
95
  // Get the agent to find their role
86
96
  const agent = eventStore.getAgent(agentId);
@@ -88,13 +98,15 @@ export function hasLifecycleDoneCapability(
88
98
  return { hasCapability: false, role: "unknown" };
89
99
  }
90
100
 
91
- // Get the agent's role (set at spawn time) or default to "worker"
92
- // In the future, this should query the RoleRegistry for full capability lookup
93
101
  const role = agent.role ?? "worker";
94
102
 
95
- // Check if the role has lifecycle.done capability
96
- // For now, we check based on known roles that have this capability
97
- // In the future, this should query the RoleRegistry
103
+ // Use RoleRegistry for capability lookup when available
104
+ if (roleRegistry) {
105
+ const hasCapability = roleRegistry.hasCapability(role, "lifecycle.done");
106
+ return { hasCapability, role };
107
+ }
108
+
109
+ // Fallback: check base role via prefix match against known built-in roles
98
110
  const rolesWithDoneCapability = new Set([
99
111
  "worker",
100
112
  "worker.resolver",
@@ -102,7 +114,6 @@ export function hasLifecycleDoneCapability(
102
114
  "monitor",
103
115
  ]);
104
116
 
105
- // Check exact match or prefix match
106
117
  const hasCapability =
107
118
  rolesWithDoneCapability.has(role) ||
108
119
  rolesWithDoneCapability.has(role.split(".")[0]);
@@ -162,7 +173,7 @@ export function createDoneHandler(context: ToolContext, deps: DoneToolDeps) {
162
173
  details?: Record<string, unknown>;
163
174
  task_id?: string;
164
175
  }): Promise<DoneResult> => {
165
- const { eventStore, agentManager, messageRouter, taskManager, workspaceManager, mailService, conversationMap } = deps;
176
+ const { eventStore, agentManager, messageRouter, taskManager, workspaceManager, roleRegistry, mailService, conversationMap } = deps;
166
177
 
167
178
  // ─────────────────────────────────────────────────────────────────────────
168
179
  // Step 1: Check capability
@@ -170,7 +181,8 @@ export function createDoneHandler(context: ToolContext, deps: DoneToolDeps) {
170
181
 
171
182
  const { hasCapability, role } = hasLifecycleDoneCapability(
172
183
  eventStore,
173
- context.agent_id
184
+ context.agent_id,
185
+ roleRegistry
174
186
  );
175
187
 
176
188
  if (!hasCapability) {
@@ -286,6 +298,8 @@ export function createDoneHandler(context: ToolContext, deps: DoneToolDeps) {
286
298
  getWorkspacePath: workspaceManager
287
299
  ? (agentId: string) => workspaceManager.getWorkspace(agentId)?.path
288
300
  : undefined,
301
+ integrationStrategy: deps.integrationStrategy,
302
+ taskMode: deps.taskMode,
289
303
  };
290
304
 
291
305
  const handlerResult = await dispatchDone(
@@ -0,0 +1,93 @@
1
+ /**
2
+ * list_claimable_tasks() MCP Tool
3
+ *
4
+ * Lists tasks available for claiming. Allows agents to preview
5
+ * what's in the task pool before claiming.
6
+ *
7
+ * @module mcp/tools/list_claimable_tasks
8
+ */
9
+
10
+ import { z } from "zod";
11
+ import type { TaskBackend, ClaimFilter, ExtendedTask } from "../../task/backend/types.js";
12
+ import type { ToolContext } from "../types.js";
13
+
14
+ // =============================================================================
15
+ // Schema
16
+ // =============================================================================
17
+
18
+ export const ListClaimableTasksSchema = {
19
+ tags: z
20
+ .array(z.string())
21
+ .optional()
22
+ .describe("Only list tasks with at least one matching tag"),
23
+ root_tasks_only: z
24
+ .boolean()
25
+ .optional()
26
+ .describe("Only list root tasks (no parent)"),
27
+ limit: z
28
+ .number()
29
+ .optional()
30
+ .describe("Maximum number of tasks to return (default: 20)"),
31
+ };
32
+
33
+ // =============================================================================
34
+ // Handler
35
+ // =============================================================================
36
+
37
+ export interface ListClaimableTasksDeps {
38
+ taskBackend: TaskBackend;
39
+ }
40
+
41
+ export function createListClaimableTasksHandler(
42
+ _context: ToolContext,
43
+ deps: ListClaimableTasksDeps
44
+ ) {
45
+ return async (args: {
46
+ tags?: string[];
47
+ root_tasks_only?: boolean;
48
+ limit?: number;
49
+ }): Promise<{
50
+ tasks: ExtendedTask[];
51
+ count: number;
52
+ message: string;
53
+ }> => {
54
+ if (!deps.taskBackend.listClaimable) {
55
+ return {
56
+ tasks: [],
57
+ count: 0,
58
+ message: "Task backend does not support listClaimable operations",
59
+ };
60
+ }
61
+
62
+ const filter: ClaimFilter = {};
63
+ if (args.tags) filter.tags = args.tags;
64
+ if (args.root_tasks_only) filter.rootTasksOnly = args.root_tasks_only;
65
+
66
+ let tasks = await deps.taskBackend.listClaimable(filter);
67
+
68
+ const limit = args.limit ?? 20;
69
+ if (tasks.length > limit) {
70
+ tasks = tasks.slice(0, limit);
71
+ }
72
+
73
+ return {
74
+ tasks,
75
+ count: tasks.length,
76
+ message:
77
+ tasks.length > 0
78
+ ? `Found ${tasks.length} claimable task(s)`
79
+ : "No claimable tasks available",
80
+ };
81
+ };
82
+ }
83
+
84
+ // =============================================================================
85
+ // Tool Info
86
+ // =============================================================================
87
+
88
+ export const LIST_CLAIMABLE_TASKS_TOOL_INFO = {
89
+ name: "list_claimable_tasks",
90
+ description:
91
+ "List tasks available for claiming. Shows pending, unblocked, unassigned tasks. Requires task.claim capability.",
92
+ schema: ListClaimableTasksSchema,
93
+ };
@@ -0,0 +1,71 @@
1
+ /**
2
+ * unclaim_task() MCP Tool
3
+ *
4
+ * Allows agents with `task.claim` capability to release a claimed task
5
+ * back to the pending pool.
6
+ *
7
+ * @module mcp/tools/unclaim_task
8
+ */
9
+
10
+ import { z } from "zod";
11
+ import type { TaskBackend } from "../../task/backend/types.js";
12
+ import type { ToolContext } from "../types.js";
13
+
14
+ // =============================================================================
15
+ // Schema
16
+ // =============================================================================
17
+
18
+ export const UnclaimTaskSchema = {
19
+ task_id: z.string().describe("ID of the task to unclaim"),
20
+ };
21
+
22
+ // =============================================================================
23
+ // Handler
24
+ // =============================================================================
25
+
26
+ export interface UnclaimTaskDeps {
27
+ taskBackend: TaskBackend;
28
+ }
29
+
30
+ export function createUnclaimTaskHandler(
31
+ _context: ToolContext,
32
+ deps: UnclaimTaskDeps
33
+ ) {
34
+ return async (args: {
35
+ task_id: string;
36
+ }): Promise<{
37
+ success: boolean;
38
+ message: string;
39
+ }> => {
40
+ if (!deps.taskBackend.unclaim) {
41
+ return {
42
+ success: false,
43
+ message: "Task backend does not support unclaim operations",
44
+ };
45
+ }
46
+
47
+ try {
48
+ await deps.taskBackend.unclaim(args.task_id);
49
+ return {
50
+ success: true,
51
+ message: `Task ${args.task_id} unclaimed and returned to pending pool`,
52
+ };
53
+ } catch (error) {
54
+ return {
55
+ success: false,
56
+ message: `Failed to unclaim task: ${error instanceof Error ? error.message : String(error)}`,
57
+ };
58
+ }
59
+ };
60
+ }
61
+
62
+ // =============================================================================
63
+ // Tool Info
64
+ // =============================================================================
65
+
66
+ export const UNCLAIM_TASK_TOOL_INFO = {
67
+ name: "unclaim_task",
68
+ description:
69
+ "Release a claimed task back to the pending pool so another agent can pick it up. Requires task.claim capability.",
70
+ schema: UnclaimTaskSchema,
71
+ };
@@ -0,0 +1,9 @@
1
+ export {
2
+ getThroughputMetrics,
3
+ getUtilizationMetrics,
4
+ getErrorMetrics,
5
+ type ThroughputMetrics,
6
+ type UtilizationMetrics,
7
+ type ErrorMetrics,
8
+ type ErrorEntry,
9
+ } from "./metrics.js";
@@ -0,0 +1,280 @@
1
+ /**
2
+ * Metrics Module
3
+ *
4
+ * Computes throughput, utilization, and error metrics from EventStore data.
5
+ * No new events needed — aggregates existing spawn, terminate, task, and
6
+ * status events.
7
+ *
8
+ * @module metrics/metrics
9
+ */
10
+
11
+ import type { EventStore } from "../store/event-store.js";
12
+ import type { Agent } from "../store/types/index.js";
13
+
14
+ // =============================================================================
15
+ // Types
16
+ // =============================================================================
17
+
18
+ export interface ThroughputMetrics {
19
+ /** Tasks completed in the time window */
20
+ tasksCompleted: number;
21
+
22
+ /** Tasks failed in the time window */
23
+ tasksFailed: number;
24
+
25
+ /** Total tasks created in the time window */
26
+ tasksCreated: number;
27
+
28
+ /** Average completion time in ms (completed tasks only) */
29
+ avgCompletionTimeMs: number | null;
30
+
31
+ /** Tasks per minute (completed) */
32
+ completedPerMinute: number;
33
+
34
+ /** Time window start */
35
+ windowStart: number;
36
+
37
+ /** Time window end */
38
+ windowEnd: number;
39
+ }
40
+
41
+ export interface UtilizationMetrics {
42
+ /** Currently running agents */
43
+ activeAgents: number;
44
+
45
+ /** Total agents spawned in the time window */
46
+ totalSpawned: number;
47
+
48
+ /** Total agents stopped in the time window */
49
+ totalStopped: number;
50
+
51
+ /** Agents by role */
52
+ agentsByRole: Record<string, number>;
53
+
54
+ /** Agents by state */
55
+ agentsByState: Record<string, number>;
56
+ }
57
+
58
+ export interface ErrorMetrics {
59
+ /** Total errors in the time window */
60
+ totalErrors: number;
61
+
62
+ /** Errors by type */
63
+ errorsByType: Record<string, number>;
64
+
65
+ /** Recent errors (last N) */
66
+ recentErrors: ErrorEntry[];
67
+ }
68
+
69
+ export interface ErrorEntry {
70
+ /** Timestamp */
71
+ timestamp: number;
72
+
73
+ /** Agent ID */
74
+ agentId: string;
75
+
76
+ /** Error type/category */
77
+ type: string;
78
+
79
+ /** Error summary */
80
+ summary: string;
81
+ }
82
+
83
+ // =============================================================================
84
+ // Implementation
85
+ // =============================================================================
86
+
87
+ /**
88
+ * Compute throughput metrics for a time window.
89
+ *
90
+ * @param eventStore - EventStore to query
91
+ * @param windowMs - Time window in milliseconds (default: 5 minutes)
92
+ */
93
+ export function getThroughputMetrics(
94
+ eventStore: EventStore,
95
+ windowMs: number = 5 * 60 * 1000
96
+ ): ThroughputMetrics {
97
+ const now = Date.now();
98
+ const windowStart = now - windowMs;
99
+
100
+ const taskEvents = eventStore.query({
101
+ type: "task",
102
+ after: windowStart,
103
+ });
104
+
105
+ let tasksCompleted = 0;
106
+ let tasksFailed = 0;
107
+ let tasksCreated = 0;
108
+ let totalCompletionTimeMs = 0;
109
+ let completedWithTime = 0;
110
+
111
+ for (const event of taskEvents) {
112
+ const action = event.payload?.action as string | undefined;
113
+
114
+ if (action === "created") {
115
+ tasksCreated++;
116
+ } else if (action === "completed") {
117
+ tasksCompleted++;
118
+
119
+ // Try to compute completion time
120
+ const taskId = event.payload?.task_id as string | undefined;
121
+ if (taskId) {
122
+ const task = eventStore.getTask(taskId);
123
+ if (task?.created_at && task?.completed_at) {
124
+ totalCompletionTimeMs += task.completed_at - task.created_at;
125
+ completedWithTime++;
126
+ }
127
+ }
128
+ } else if (action === "failed") {
129
+ tasksFailed++;
130
+ }
131
+ }
132
+
133
+ const windowMinutes = windowMs / 60000;
134
+ const completedPerMinute =
135
+ windowMinutes > 0 ? tasksCompleted / windowMinutes : 0;
136
+
137
+ return {
138
+ tasksCompleted,
139
+ tasksFailed,
140
+ tasksCreated,
141
+ avgCompletionTimeMs:
142
+ completedWithTime > 0
143
+ ? Math.round(totalCompletionTimeMs / completedWithTime)
144
+ : null,
145
+ completedPerMinute: Math.round(completedPerMinute * 100) / 100,
146
+ windowStart,
147
+ windowEnd: now,
148
+ };
149
+ }
150
+
151
+ /**
152
+ * Compute utilization metrics (current snapshot + window).
153
+ *
154
+ * @param eventStore - EventStore to query
155
+ * @param windowMs - Time window for spawn/stop counts (default: 5 minutes)
156
+ */
157
+ export function getUtilizationMetrics(
158
+ eventStore: EventStore,
159
+ windowMs: number = 5 * 60 * 1000
160
+ ): UtilizationMetrics {
161
+ const now = Date.now();
162
+ const windowStart = now - windowMs;
163
+
164
+ // Current agents
165
+ const allAgents = eventStore.listAgents();
166
+ const activeAgents = allAgents.filter(
167
+ (a: Agent) => a.state === "running" || a.state === "spawning"
168
+ );
169
+
170
+ // Agents by role
171
+ const agentsByRole: Record<string, number> = {};
172
+ for (const agent of activeAgents) {
173
+ const role = agent.role ?? "unknown";
174
+ agentsByRole[role] = (agentsByRole[role] ?? 0) + 1;
175
+ }
176
+
177
+ // Agents by state
178
+ const agentsByState: Record<string, number> = {};
179
+ for (const agent of allAgents) {
180
+ agentsByState[agent.state] = (agentsByState[agent.state] ?? 0) + 1;
181
+ }
182
+
183
+ // Count spawn and terminate events in window
184
+ const spawnEvents = eventStore.query({
185
+ type: "spawn",
186
+ after: windowStart,
187
+ });
188
+ const terminateEvents = eventStore.query({
189
+ type: "terminate",
190
+ after: windowStart,
191
+ });
192
+
193
+ return {
194
+ activeAgents: activeAgents.length,
195
+ totalSpawned: spawnEvents.length,
196
+ totalStopped: terminateEvents.length,
197
+ agentsByRole,
198
+ agentsByState,
199
+ };
200
+ }
201
+
202
+ /**
203
+ * Compute error metrics for a time window.
204
+ *
205
+ * @param eventStore - EventStore to query
206
+ * @param windowMs - Time window in milliseconds (default: 30 minutes)
207
+ * @param maxRecent - Maximum recent errors to return (default: 20)
208
+ */
209
+ export function getErrorMetrics(
210
+ eventStore: EventStore,
211
+ windowMs: number = 30 * 60 * 1000,
212
+ maxRecent: number = 20
213
+ ): ErrorMetrics {
214
+ const now = Date.now();
215
+ const windowStart = now - windowMs;
216
+
217
+ // Query status events that indicate errors
218
+ const statusEvents = eventStore.query({
219
+ type: "status",
220
+ after: windowStart,
221
+ });
222
+
223
+ const errors: ErrorEntry[] = [];
224
+ const errorsByType: Record<string, number> = {};
225
+
226
+ for (const event of statusEvents) {
227
+ const statusType = event.payload?.status_type as string | undefined;
228
+ if (statusType !== "failed") continue;
229
+
230
+ const agentId =
231
+ (event.source as { agent_id?: string })?.agent_id ?? "unknown";
232
+ const summary =
233
+ (event.payload?.summary as string) ?? "Unknown error";
234
+ const errorType =
235
+ (event.payload?.details as Record<string, unknown>)?.signal as string ??
236
+ "agent_failed";
237
+
238
+ errors.push({
239
+ timestamp: event.timestamp,
240
+ agentId,
241
+ type: errorType,
242
+ summary,
243
+ });
244
+
245
+ errorsByType[errorType] = (errorsByType[errorType] ?? 0) + 1;
246
+ }
247
+
248
+ // Also count task failures
249
+ const taskEvents = eventStore.query({
250
+ type: "task",
251
+ after: windowStart,
252
+ });
253
+
254
+ for (const event of taskEvents) {
255
+ if (event.payload?.action !== "failed") continue;
256
+
257
+ const agentId =
258
+ (event.source as { agent_id?: string })?.agent_id ?? "unknown";
259
+ const taskId = (event.payload?.task_id as string) ?? "unknown";
260
+
261
+ errors.push({
262
+ timestamp: event.timestamp,
263
+ agentId,
264
+ type: "task_failed",
265
+ summary: `Task ${taskId} failed`,
266
+ });
267
+
268
+ errorsByType["task_failed"] = (errorsByType["task_failed"] ?? 0) + 1;
269
+ }
270
+
271
+ // Sort by timestamp descending and limit
272
+ errors.sort((a, b) => b.timestamp - a.timestamp);
273
+ const recentErrors = errors.slice(0, maxRecent);
274
+
275
+ return {
276
+ totalErrors: errors.length,
277
+ errorsByType,
278
+ recentErrors,
279
+ };
280
+ }
@@ -48,6 +48,7 @@ export const TASK_CAPABILITIES = {
48
48
  ASSIGN: "task.assign" as const,
49
49
  UPDATE: "task.update" as const,
50
50
  CLOSE: "task.close" as const,
51
+ CLAIM: "task.claim" as const,
51
52
  };
52
53
 
53
54
  /** Execution capabilities */
@@ -101,6 +102,7 @@ export const ALL_CAPABILITIES: Set<Capability> = new Set([
101
102
  TASK_CAPABILITIES.ASSIGN,
102
103
  TASK_CAPABILITIES.UPDATE,
103
104
  TASK_CAPABILITIES.CLOSE,
105
+ TASK_CAPABILITIES.CLAIM,
104
106
  // Exec
105
107
  EXEC_CAPABILITIES.COMMAND,
106
108
  EXEC_CAPABILITIES.BUILD,
@@ -159,6 +161,7 @@ export const CAPABILITY_TOOL_MAP: CapabilityToolMap = {
159
161
  [TASK_CAPABILITIES.ASSIGN]: ["sudocode_upsert_issue", "assign_task"],
160
162
  [TASK_CAPABILITIES.UPDATE]: ["sudocode_upsert_issue", "update_task"],
161
163
  [TASK_CAPABILITIES.CLOSE]: ["sudocode_upsert_issue", "close_task"],
164
+ [TASK_CAPABILITIES.CLAIM]: ["claim_task", "unclaim_task", "list_claimable_tasks"],
162
165
 
163
166
  // Execution operations
164
167
  [EXEC_CAPABILITIES.COMMAND]: ["bash"],
@@ -41,7 +41,8 @@ export type TaskCapability =
41
41
  | "task.create"
42
42
  | "task.assign"
43
43
  | "task.update"
44
- | "task.close";
44
+ | "task.close"
45
+ | "task.claim";
45
46
 
46
47
  /** Execution capabilities */
47
48
  export type ExecCapability =