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
@@ -1,522 +0,0 @@
1
- import * as fs from "node:fs";
2
- import * as path from "node:path";
3
- import * as os from "node:os";
4
- import { minimatch } from "minimatch";
5
- import { ACP_TOOL_NAME_PREFIX, acpToolNames } from "./tools.js";
6
- import { CLAUDE_CONFIG_DIR } from "./acp-agent.js";
7
-
8
- /**
9
- * Permission rule format examples:
10
- * - "Read" - matches all Read tool calls
11
- * - "Read(./.env)" - matches specific path
12
- * - "Read(./.env.*)" - glob pattern
13
- * - "Read(./secrets/**)" - recursive glob
14
- * - "Bash(npm run lint)" - exact command prefix
15
- * - "Bash(npm run:*)" - command prefix with wildcard
16
- *
17
- * Docs: https://code.claude.com/docs/en/iam#tool-specific-permission-rules
18
- */
19
-
20
- export interface PermissionSettings {
21
- allow?: string[];
22
- deny?: string[];
23
- ask?: string[];
24
- additionalDirectories?: string[];
25
- defaultMode?: string;
26
- }
27
-
28
- export interface ClaudeCodeSettings {
29
- permissions?: PermissionSettings;
30
- env?: Record<string, string>;
31
- }
32
-
33
- export type PermissionDecision = "allow" | "deny" | "ask";
34
-
35
- export interface PermissionCheckResult {
36
- decision: PermissionDecision;
37
- rule?: string;
38
- source?: "allow" | "deny" | "ask";
39
- }
40
-
41
- interface ParsedRule {
42
- toolName: string;
43
- argument?: string;
44
- isWildcard?: boolean;
45
- }
46
-
47
- /**
48
- * Shell operators that can be used for command chaining/injection
49
- * These should cause a prefix match to fail to prevent bypasses like:
50
- * - "safe-cmd && malicious-cmd"
51
- * - "safe-cmd; malicious-cmd"
52
- * - "safe-cmd | malicious-cmd"
53
- * - "safe-cmd || malicious-cmd"
54
- * - "$(malicious-cmd)"
55
- * - "`malicious-cmd`"
56
- */
57
- const SHELL_OPERATORS = ["&&", "||", ";", "|", "$(", "`", "\n"];
58
-
59
- /**
60
- * Checks if a string contains shell operators that could allow command chaining
61
- */
62
- function containsShellOperator(str: string): boolean {
63
- return SHELL_OPERATORS.some((op) => str.includes(op));
64
- }
65
-
66
- /*
67
- * Tools that modify files. Per Claude Code docs:
68
- * "Edit rules apply to all built-in tools that edit files."
69
- * This means an Edit(...) rule should match Write, MultiEdit, etc.
70
- */
71
- const FILE_EDITING_TOOLS = [acpToolNames.edit, acpToolNames.write];
72
-
73
- /**
74
- * Tools that read files. Per Claude Code docs:
75
- * "Claude will make a best-effort attempt to apply Read rules to all built-in tools
76
- * that read files like Grep and Glob."
77
- * This means a Read(...) rule should match Grep, Glob, etc.
78
- */
79
- const FILE_READING_TOOLS = [acpToolNames.read];
80
-
81
- /**
82
- * Functions to extract the relevant argument from tool input for permission matching
83
- */
84
- const TOOL_ARG_ACCESSORS: Record<string, (input: unknown) => string | undefined> = {
85
- mcp__acp__Read: (input) => (input as { file_path?: string })?.file_path,
86
- mcp__acp__Edit: (input) => (input as { file_path?: string })?.file_path,
87
- mcp__acp__Write: (input) => (input as { file_path?: string })?.file_path,
88
- mcp__acp__Bash: (input) => (input as { command?: string })?.command,
89
- };
90
-
91
- /**
92
- * Parses a permission rule string into its components
93
- * Examples:
94
- * "Read" -> { toolName: "Read" }
95
- * "Read(./.env)" -> { toolName: "Read", argument: "./.env" }
96
- * "Bash(npm run:*)" -> { toolName: "Bash", argument: "npm run", isWildcard: true }
97
- */
98
- function parseRule(rule: string): ParsedRule {
99
- const match = rule.match(/^(\w+)(?:\((.+)\))?$/);
100
- if (!match) {
101
- return { toolName: rule };
102
- }
103
-
104
- const [, toolName, argument] = match;
105
-
106
- if (argument && argument.endsWith(":*")) {
107
- return {
108
- toolName,
109
- argument: argument.slice(0, -2),
110
- isWildcard: true,
111
- };
112
- }
113
-
114
- return { toolName, argument };
115
- }
116
-
117
- /**
118
- * Normalizes a path for comparison:
119
- * - Expands ~ to home directory
120
- * - Resolves relative paths against cwd
121
- * - Normalizes path separators
122
- */
123
- function normalizePath(filePath: string, cwd: string): string {
124
- if (filePath.startsWith("~/")) {
125
- filePath = path.join(os.homedir(), filePath.slice(2));
126
- } else if (filePath.startsWith("./")) {
127
- filePath = path.join(cwd, filePath.slice(2));
128
- } else if (!path.isAbsolute(filePath)) {
129
- filePath = path.join(cwd, filePath);
130
- }
131
- return path.normalize(filePath);
132
- }
133
-
134
- /**
135
- * Checks if a file path matches a glob pattern
136
- */
137
- function matchesGlob(pattern: string, filePath: string, cwd: string): boolean {
138
- const normalizedPattern = normalizePath(pattern, cwd);
139
- const normalizedPath = normalizePath(filePath, cwd);
140
-
141
- return minimatch(normalizedPath, normalizedPattern, {
142
- dot: true,
143
- matchBase: false,
144
- nocase: process.platform === "win32",
145
- });
146
- }
147
-
148
- /**
149
- * Checks if a tool invocation matches a parsed permission rule
150
- */
151
- function matchesRule(rule: ParsedRule, toolName: string, toolInput: unknown, cwd: string): boolean {
152
- // Per Claude Code docs:
153
- // - "Edit rules apply to all built-in tools that edit files."
154
- // - "Claude will make a best-effort attempt to apply Read rules to all built-in tools
155
- // that read files like Grep, Glob, and LS."
156
- const ruleAppliesToTool =
157
- rule.toolName === "Bash" ||
158
- (rule.toolName === "Edit" && FILE_EDITING_TOOLS.includes(toolName)) ||
159
- (rule.toolName === "Read" && FILE_READING_TOOLS.includes(toolName));
160
-
161
- if (!ruleAppliesToTool) {
162
- return false;
163
- }
164
-
165
- if (!rule.argument) {
166
- return true;
167
- }
168
-
169
- const argAccessor = TOOL_ARG_ACCESSORS[toolName];
170
- if (!argAccessor) {
171
- return true;
172
- }
173
-
174
- const actualArg = argAccessor(toolInput);
175
- if (!actualArg) {
176
- return false;
177
- }
178
-
179
- if (toolName === acpToolNames.bash) {
180
- // Per Claude Code docs: https://code.claude.com/docs/en/iam#tool-specific-permission-rules
181
- // - Bash(npm run build) matches the EXACT command "npm run build"
182
- // - Bash(npm run test:*) matches commands STARTING WITH "npm run test"
183
- // The :* suffix enables prefix matching, without it the match is exact
184
- //
185
- // Also from docs: "Claude Code is aware of shell operators (like &&) so a prefix match
186
- // rule like Bash(safe-cmd:*) won't give it permission to run the command safe-cmd && other-cmd"
187
- if (rule.isWildcard) {
188
- if (!actualArg.startsWith(rule.argument)) {
189
- return false;
190
- }
191
- // Check that the matched prefix isn't followed by shell operators that could
192
- // allow command chaining/injection
193
- const remainder = actualArg.slice(rule.argument.length);
194
- if (containsShellOperator(remainder)) {
195
- return false;
196
- }
197
- return true;
198
- }
199
- return actualArg === rule.argument;
200
- }
201
-
202
- // For file-based tools (Read, Edit, Write), use glob matching
203
- return matchesGlob(rule.argument, actualArg, cwd);
204
- }
205
-
206
- /**
207
- * Reads and parses a JSON settings file, returning an empty object if not found or invalid
208
- */
209
- async function loadSettingsFile(filePath: string | null): Promise<ClaudeCodeSettings> {
210
- if (!filePath) {
211
- return {};
212
- }
213
-
214
- try {
215
- const content = await fs.promises.readFile(filePath, "utf-8");
216
- return JSON.parse(content) as ClaudeCodeSettings;
217
- } catch {
218
- return {};
219
- }
220
- }
221
-
222
- /**
223
- * Gets the enterprise settings path based on the current platform
224
- */
225
- export function getManagedSettingsPath(): string {
226
- switch (process.platform) {
227
- case "darwin":
228
- return "/Library/Application Support/ClaudeCode/managed-settings.json";
229
- case "linux":
230
- return "/etc/claude-code/managed-settings.json";
231
- case "win32":
232
- return "C:\\Program Files\\ClaudeCode\\managed-settings.json";
233
- default:
234
- return "/etc/claude-code/managed-settings.json";
235
- }
236
- }
237
-
238
- export interface SettingsManagerOptions {
239
- onChange?: () => void;
240
- logger?: { log: (...args: any[]) => void; error: (...args: any[]) => void };
241
- }
242
-
243
- /**
244
- * Manages Claude Code settings from multiple sources with proper precedence.
245
- *
246
- * Settings are loaded from (in order of increasing precedence):
247
- * 1. User settings (~/.claude/settings.json)
248
- * 2. Project settings (<cwd>/.claude/settings.json)
249
- * 3. Local project settings (<cwd>/.claude/settings.local.json)
250
- * 4. Enterprise managed settings (platform-specific path)
251
- *
252
- * The manager watches all settings files for changes and automatically reloads.
253
- */
254
- export class SettingsManager {
255
- private cwd: string;
256
- private userSettings: ClaudeCodeSettings = {};
257
- private projectSettings: ClaudeCodeSettings = {};
258
- private localSettings: ClaudeCodeSettings = {};
259
- private enterpriseSettings: ClaudeCodeSettings = {};
260
- private mergedSettings: ClaudeCodeSettings = {};
261
- private watchers: fs.FSWatcher[] = [];
262
- private onChange?: () => void;
263
- private logger: { log: (...args: any[]) => void; error: (...args: any[]) => void };
264
- private initialized = false;
265
- private debounceTimer: ReturnType<typeof setTimeout> | null = null;
266
-
267
- constructor(cwd: string, options?: SettingsManagerOptions) {
268
- this.cwd = cwd;
269
- this.onChange = options?.onChange;
270
- this.logger = options?.logger ?? console;
271
- }
272
-
273
- /**
274
- * Initialize the settings manager by loading all settings and setting up file watchers
275
- */
276
- async initialize(): Promise<void> {
277
- if (this.initialized) {
278
- return;
279
- }
280
-
281
- await this.loadAllSettings();
282
- this.setupWatchers();
283
- this.initialized = true;
284
- }
285
-
286
- /**
287
- * Returns the path to the user settings file
288
- */
289
- private getUserSettingsPath(): string {
290
- return path.join(CLAUDE_CONFIG_DIR, "settings.json");
291
- }
292
-
293
- /**
294
- * Returns the path to the project settings file
295
- */
296
- private getProjectSettingsPath(): string {
297
- return path.join(this.cwd, ".claude", "settings.json");
298
- }
299
-
300
- /**
301
- * Returns the path to the local project settings file
302
- */
303
- private getLocalSettingsPath(): string {
304
- return path.join(this.cwd, ".claude", "settings.local.json");
305
- }
306
-
307
- /**
308
- * Loads settings from all sources
309
- */
310
- private async loadAllSettings(): Promise<void> {
311
- const [userSettings, projectSettings, localSettings, enterpriseSettings] = await Promise.all([
312
- loadSettingsFile(this.getUserSettingsPath()),
313
- loadSettingsFile(this.getProjectSettingsPath()),
314
- loadSettingsFile(this.getLocalSettingsPath()),
315
- loadSettingsFile(getManagedSettingsPath()),
316
- ]);
317
-
318
- this.userSettings = userSettings;
319
- this.projectSettings = projectSettings;
320
- this.localSettings = localSettings;
321
- this.enterpriseSettings = enterpriseSettings;
322
-
323
- this.mergeSettings();
324
- }
325
-
326
- /**
327
- * Merges all settings sources with proper precedence.
328
- * For permissions, rules from all sources are combined.
329
- * Deny rules always take precedence during permission checks.
330
- */
331
- private mergeSettings(): void {
332
- const allSettings = [
333
- this.userSettings,
334
- this.projectSettings,
335
- this.localSettings,
336
- this.enterpriseSettings,
337
- ];
338
-
339
- const merged: ClaudeCodeSettings = {
340
- permissions: {
341
- allow: [],
342
- deny: [],
343
- ask: [],
344
- },
345
- };
346
-
347
- for (const settings of allSettings) {
348
- if (settings.permissions) {
349
- if (settings.permissions.allow) {
350
- merged.permissions!.allow!.push(...settings.permissions.allow);
351
- }
352
- if (settings.permissions.deny) {
353
- merged.permissions!.deny!.push(...settings.permissions.deny);
354
- }
355
- if (settings.permissions.ask) {
356
- merged.permissions!.ask!.push(...settings.permissions.ask);
357
- }
358
- if (settings.permissions.additionalDirectories) {
359
- merged.permissions!.additionalDirectories = [
360
- ...(merged.permissions!.additionalDirectories || []),
361
- ...settings.permissions.additionalDirectories,
362
- ];
363
- }
364
- if (settings.permissions.defaultMode) {
365
- merged.permissions!.defaultMode = settings.permissions.defaultMode;
366
- }
367
- }
368
-
369
- if (settings.env) {
370
- merged.env = { ...merged.env, ...settings.env };
371
- }
372
- }
373
-
374
- this.mergedSettings = merged;
375
- }
376
-
377
- /**
378
- * Sets up file watchers for all settings files
379
- */
380
- private setupWatchers(): void {
381
- const paths = [
382
- this.getUserSettingsPath(),
383
- this.getProjectSettingsPath(),
384
- this.getLocalSettingsPath(),
385
- getManagedSettingsPath(),
386
- ];
387
-
388
- for (const filePath of paths) {
389
- if (!filePath) continue;
390
-
391
- try {
392
- const dir = path.dirname(filePath);
393
- const filename = path.basename(filePath);
394
-
395
- if (fs.existsSync(dir)) {
396
- const watcher = fs.watch(dir, (eventType, changedFilename) => {
397
- if (changedFilename === filename) {
398
- this.handleSettingsChange();
399
- }
400
- });
401
-
402
- watcher.on("error", (error) => {
403
- this.logger.error(`Settings watcher error for ${filePath}:`, error);
404
- });
405
-
406
- this.watchers.push(watcher);
407
- }
408
- } catch (error) {
409
- this.logger.error(`Failed to set up watcher for ${filePath}:`, error);
410
- }
411
- }
412
- }
413
-
414
- /**
415
- * Handles settings file changes with debouncing to avoid rapid reloads
416
- */
417
- private handleSettingsChange(): void {
418
- if (this.debounceTimer) {
419
- clearTimeout(this.debounceTimer);
420
- }
421
-
422
- this.debounceTimer = setTimeout(async () => {
423
- this.debounceTimer = null;
424
- try {
425
- await this.loadAllSettings();
426
- this.onChange?.();
427
- } catch (error) {
428
- this.logger.error("Failed to reload settings:", error);
429
- }
430
- }, 100);
431
- }
432
-
433
- /**
434
- * Checks if a tool invocation is allowed based on the loaded settings.
435
- *
436
- * @param toolName - The tool name (can be ACP-prefixed like mcp__acp__Read or plain like Read)
437
- * @param toolInput - The tool input object
438
- * @returns The permission decision and matching rule info
439
- */
440
- checkPermission(toolName: string, toolInput: unknown): PermissionCheckResult {
441
- if (!toolName.startsWith(ACP_TOOL_NAME_PREFIX)) {
442
- return { decision: "ask" };
443
- }
444
-
445
- const permissions = this.mergedSettings.permissions;
446
-
447
- if (!permissions) {
448
- return { decision: "ask" };
449
- }
450
-
451
- // Check deny rules first (highest priority)
452
- for (const rule of permissions.deny || []) {
453
- const parsed = parseRule(rule);
454
- if (matchesRule(parsed, toolName, toolInput, this.cwd)) {
455
- return { decision: "deny", rule, source: "deny" };
456
- }
457
- }
458
-
459
- // Check allow rules
460
- for (const rule of permissions.allow || []) {
461
- const parsed = parseRule(rule);
462
- if (matchesRule(parsed, toolName, toolInput, this.cwd)) {
463
- return { decision: "allow", rule, source: "allow" };
464
- }
465
- }
466
-
467
- // Check ask rules
468
- for (const rule of permissions.ask || []) {
469
- const parsed = parseRule(rule);
470
- if (matchesRule(parsed, toolName, toolInput, this.cwd)) {
471
- return { decision: "ask", rule, source: "ask" };
472
- }
473
- }
474
-
475
- // No matching rule - default to ask
476
- return { decision: "ask" };
477
- }
478
-
479
- /**
480
- * Returns the current merged settings
481
- */
482
- getSettings(): ClaudeCodeSettings {
483
- return this.mergedSettings;
484
- }
485
-
486
- /**
487
- * Returns the current working directory
488
- */
489
- getCwd(): string {
490
- return this.cwd;
491
- }
492
-
493
- /**
494
- * Updates the working directory and reloads project-specific settings
495
- */
496
- async setCwd(cwd: string): Promise<void> {
497
- if (this.cwd === cwd) {
498
- return;
499
- }
500
-
501
- this.dispose();
502
- this.cwd = cwd;
503
- this.initialized = false;
504
- await this.initialize();
505
- }
506
-
507
- /**
508
- * Disposes of file watchers and cleans up resources
509
- */
510
- dispose(): void {
511
- if (this.debounceTimer) {
512
- clearTimeout(this.debounceTimer);
513
- this.debounceTimer = null;
514
- }
515
-
516
- for (const watcher of this.watchers) {
517
- watcher.close();
518
- }
519
- this.watchers = [];
520
- this.initialized = false;
521
- }
522
- }
@@ -1,5 +0,0 @@
1
- ---
2
- description: 10 * 3 = 30
3
- ---
4
-
5
- What is 10 \* 3. Only respond with the number.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Say hello
3
- argument-hint: name
4
- ---
5
-
6
- Respond with "Hello $1" and nothing else.