macro-agent 0.0.17 → 0.1.1

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 (338) hide show
  1. package/.claude/settings.local.json +3 -1
  2. package/.sudocode/specs.jsonl +4 -0
  3. package/CLAUDE.md +16 -14
  4. package/README.md +11 -29
  5. package/dist/acp/macro-agent.d.ts +17 -0
  6. package/dist/acp/macro-agent.d.ts.map +1 -1
  7. package/dist/acp/macro-agent.js +183 -55
  8. package/dist/acp/macro-agent.js.map +1 -1
  9. package/dist/acp/types.d.ts +32 -1
  10. package/dist/acp/types.d.ts.map +1 -1
  11. package/dist/acp/types.js.map +1 -1
  12. package/dist/agent/agent-manager.d.ts +65 -1
  13. package/dist/agent/agent-manager.d.ts.map +1 -1
  14. package/dist/agent/agent-manager.js +464 -183
  15. package/dist/agent/agent-manager.js.map +1 -1
  16. package/dist/agent/types.d.ts +1 -1
  17. package/dist/agent/types.d.ts.map +1 -1
  18. package/dist/api/server.d.ts +3 -0
  19. package/dist/api/server.d.ts.map +1 -1
  20. package/dist/api/server.js +37 -6
  21. package/dist/api/server.js.map +1 -1
  22. package/dist/auth/index.d.ts +2 -0
  23. package/dist/auth/index.d.ts.map +1 -0
  24. package/dist/auth/index.js +2 -0
  25. package/dist/auth/index.js.map +1 -0
  26. package/dist/auth/token.d.ts +41 -0
  27. package/dist/auth/token.d.ts.map +1 -0
  28. package/dist/auth/token.js +73 -0
  29. package/dist/auth/token.js.map +1 -0
  30. package/dist/cli/acp.d.ts +2 -23
  31. package/dist/cli/acp.d.ts.map +1 -1
  32. package/dist/cli/acp.js +127 -61
  33. package/dist/cli/acp.js.map +1 -1
  34. package/dist/cli/index.js +147 -15
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/mcp.d.ts +6 -0
  37. package/dist/cli/mcp.d.ts.map +1 -1
  38. package/dist/cli/mcp.js +268 -181
  39. package/dist/cli/mcp.js.map +1 -1
  40. package/dist/cli/parse-args.d.ts +20 -0
  41. package/dist/cli/parse-args.d.ts.map +1 -0
  42. package/dist/cli/parse-args.js +43 -0
  43. package/dist/cli/parse-args.js.map +1 -0
  44. package/dist/cli/stable-instance-id.d.ts +8 -0
  45. package/dist/cli/stable-instance-id.d.ts.map +1 -0
  46. package/dist/cli/stable-instance-id.js +14 -0
  47. package/dist/cli/stable-instance-id.js.map +1 -0
  48. package/dist/config/project-config.d.ts +74 -7
  49. package/dist/config/project-config.d.ts.map +1 -1
  50. package/dist/config/project-config.js +123 -20
  51. package/dist/config/project-config.js.map +1 -1
  52. package/dist/map/adapter/acp-over-map.d.ts +23 -0
  53. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  54. package/dist/map/adapter/acp-over-map.js +482 -55
  55. package/dist/map/adapter/acp-over-map.js.map +1 -1
  56. package/dist/map/adapter/connection-manager.d.ts.map +1 -1
  57. package/dist/map/adapter/connection-manager.js +3 -0
  58. package/dist/map/adapter/connection-manager.js.map +1 -1
  59. package/dist/map/adapter/event-log.d.ts +87 -0
  60. package/dist/map/adapter/event-log.d.ts.map +1 -0
  61. package/dist/map/adapter/event-log.js +122 -0
  62. package/dist/map/adapter/event-log.js.map +1 -0
  63. package/dist/map/adapter/event-translator.js +6 -6
  64. package/dist/map/adapter/event-translator.js.map +1 -1
  65. package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
  66. package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
  67. package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
  68. package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
  69. package/dist/map/adapter/extensions/index.d.ts +10 -1
  70. package/dist/map/adapter/extensions/index.d.ts.map +1 -1
  71. package/dist/map/adapter/extensions/index.js +34 -0
  72. package/dist/map/adapter/extensions/index.js.map +1 -1
  73. package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
  74. package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
  75. package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
  76. package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
  77. package/dist/map/adapter/extensions/rename.d.ts +29 -0
  78. package/dist/map/adapter/extensions/rename.d.ts.map +1 -0
  79. package/dist/map/adapter/extensions/rename.js +49 -0
  80. package/dist/map/adapter/extensions/rename.js.map +1 -0
  81. package/dist/map/adapter/extensions/task.d.ts.map +1 -1
  82. package/dist/map/adapter/extensions/task.js +10 -0
  83. package/dist/map/adapter/extensions/task.js.map +1 -1
  84. package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
  85. package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
  86. package/dist/map/adapter/extensions/update-metadata.js +67 -0
  87. package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
  88. package/dist/map/adapter/index.d.ts +2 -1
  89. package/dist/map/adapter/index.d.ts.map +1 -1
  90. package/dist/map/adapter/index.js +8 -2
  91. package/dist/map/adapter/index.js.map +1 -1
  92. package/dist/map/adapter/interface.d.ts +2 -0
  93. package/dist/map/adapter/interface.d.ts.map +1 -1
  94. package/dist/map/adapter/map-adapter.d.ts +4 -0
  95. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  96. package/dist/map/adapter/map-adapter.js +302 -30
  97. package/dist/map/adapter/map-adapter.js.map +1 -1
  98. package/dist/map/adapter/subscription-manager.d.ts.map +1 -1
  99. package/dist/map/adapter/subscription-manager.js +5 -1
  100. package/dist/map/adapter/subscription-manager.js.map +1 -1
  101. package/dist/map/adapter/types.d.ts +2 -0
  102. package/dist/map/adapter/types.d.ts.map +1 -1
  103. package/dist/mcp/map-client.d.ts +39 -0
  104. package/dist/mcp/map-client.d.ts.map +1 -0
  105. package/dist/mcp/map-client.js +129 -0
  106. package/dist/mcp/map-client.js.map +1 -0
  107. package/dist/mcp/mcp-server.d.ts +14 -0
  108. package/dist/mcp/mcp-server.d.ts.map +1 -1
  109. package/dist/mcp/mcp-server.js +113 -85
  110. package/dist/mcp/mcp-server.js.map +1 -1
  111. package/dist/mcp/types.d.ts +9 -1
  112. package/dist/mcp/types.d.ts.map +1 -1
  113. package/dist/mcp/types.js.map +1 -1
  114. package/dist/metrics/metrics.js +1 -1
  115. package/dist/metrics/metrics.js.map +1 -1
  116. package/dist/roles/capabilities.d.ts +3 -1
  117. package/dist/roles/capabilities.d.ts.map +1 -1
  118. package/dist/roles/capabilities.js +17 -7
  119. package/dist/roles/capabilities.js.map +1 -1
  120. package/dist/roles/config-loader.d.ts +6 -6
  121. package/dist/roles/config-loader.d.ts.map +1 -1
  122. package/dist/roles/config-loader.js +6 -6
  123. package/dist/roles/config-loader.js.map +1 -1
  124. package/dist/roles/registry.d.ts +2 -2
  125. package/dist/roles/registry.js +2 -2
  126. package/dist/server/combined-server.d.ts +20 -0
  127. package/dist/server/combined-server.d.ts.map +1 -1
  128. package/dist/server/combined-server.js +107 -8
  129. package/dist/server/combined-server.js.map +1 -1
  130. package/dist/store/event-store.d.ts +7 -1
  131. package/dist/store/event-store.d.ts.map +1 -1
  132. package/dist/store/event-store.js +91 -8
  133. package/dist/store/event-store.js.map +1 -1
  134. package/dist/store/types/agents.d.ts +23 -0
  135. package/dist/store/types/agents.d.ts.map +1 -1
  136. package/dist/store/types/events.d.ts +1 -1
  137. package/dist/store/types/events.d.ts.map +1 -1
  138. package/dist/task/backend/index.d.ts +47 -29
  139. package/dist/task/backend/index.d.ts.map +1 -1
  140. package/dist/task/backend/index.js +109 -71
  141. package/dist/task/backend/index.js.map +1 -1
  142. package/dist/task/backend/memory.d.ts +1 -0
  143. package/dist/task/backend/memory.d.ts.map +1 -1
  144. package/dist/task/backend/memory.js +3 -0
  145. package/dist/task/backend/memory.js.map +1 -1
  146. package/dist/task/backend/opentasks/backend.d.ts +140 -0
  147. package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
  148. package/dist/task/backend/opentasks/backend.js +1023 -0
  149. package/dist/task/backend/opentasks/backend.js.map +1 -0
  150. package/dist/task/backend/opentasks/client.d.ts +337 -0
  151. package/dist/task/backend/opentasks/client.d.ts.map +1 -0
  152. package/dist/task/backend/opentasks/client.js +225 -0
  153. package/dist/task/backend/opentasks/client.js.map +1 -0
  154. package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
  155. package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
  156. package/dist/task/backend/opentasks/daemon-manager.js +195 -0
  157. package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
  158. package/dist/task/backend/opentasks/index.d.ts +21 -0
  159. package/dist/task/backend/opentasks/index.d.ts.map +1 -0
  160. package/dist/task/backend/opentasks/index.js +21 -0
  161. package/dist/task/backend/opentasks/index.js.map +1 -0
  162. package/dist/task/backend/opentasks/mapping.d.ts +48 -0
  163. package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
  164. package/dist/task/backend/opentasks/mapping.js +77 -0
  165. package/dist/task/backend/opentasks/mapping.js.map +1 -0
  166. package/dist/task/backend/types.d.ts +33 -53
  167. package/dist/task/backend/types.d.ts.map +1 -1
  168. package/dist/task/backend/types.js +7 -11
  169. package/dist/task/backend/types.js.map +1 -1
  170. package/dist/task/backend/unified-tool-provider.d.ts +57 -0
  171. package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
  172. package/dist/task/backend/unified-tool-provider.js +623 -0
  173. package/dist/task/backend/unified-tool-provider.js.map +1 -0
  174. package/dist/teams/team-loader.d.ts +2 -2
  175. package/dist/teams/team-loader.js +3 -3
  176. package/dist/teams/team-loader.js.map +1 -1
  177. package/dist/teams/team-runtime.d.ts.map +1 -1
  178. package/dist/teams/team-runtime.js +2 -0
  179. package/dist/teams/team-runtime.js.map +1 -1
  180. package/docs/architecture.md +7 -6
  181. package/docs/configuration.md +26 -62
  182. package/docs/implementation-details.md +5 -5
  183. package/docs/implementation-summary.md +17 -17
  184. package/docs/plan-self-driving-support.md +4 -4
  185. package/docs/spec-self-driving-support.md +10 -10
  186. package/docs/team-templates.md +2 -2
  187. package/docs/teams.md +3 -3
  188. package/docs/troubleshooting.md +10 -11
  189. package/package.json +6 -4
  190. package/src/__tests__/e2e/agent-spawn-visibility.e2e.test.ts +761 -0
  191. package/src/__tests__/e2e/full-agent-conflict-resolution.e2e.test.ts +2 -2
  192. package/src/__tests__/e2e/mcp-thin-client-bridge.e2e.test.ts +304 -0
  193. package/src/__tests__/e2e/mcp-tools-available.e2e.test.ts +324 -0
  194. package/src/__tests__/e2e/multi-agent.e2e.test.ts +5 -5
  195. package/src/__tests__/e2e/spawn-session-streaming.e2e.test.ts +563 -0
  196. package/src/acp/__tests__/history.test.ts +8 -4
  197. package/src/acp/__tests__/integration.test.ts +56 -31
  198. package/src/acp/__tests__/macro-agent.test.ts +16 -7
  199. package/src/acp/macro-agent.ts +230 -62
  200. package/src/acp/types.ts +46 -1
  201. package/src/agent/__tests__/agent-manager.test.ts +228 -2
  202. package/src/agent/agent-manager.ts +714 -261
  203. package/src/agent/types.ts +3 -1
  204. package/src/api/server.ts +41 -7
  205. package/src/auth/__tests__/token.test.ts +100 -0
  206. package/src/auth/index.ts +1 -0
  207. package/src/auth/token.ts +82 -0
  208. package/src/cli/__tests__/acp.test.ts +1 -1
  209. package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
  210. package/src/cli/acp.ts +130 -72
  211. package/src/cli/index.ts +120 -14
  212. package/src/cli/mcp.ts +311 -207
  213. package/src/cli/parse-args.ts +54 -0
  214. package/src/cli/stable-instance-id.ts +14 -0
  215. package/src/config/project-config.ts +190 -27
  216. package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
  217. package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +820 -0
  218. package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
  219. package/src/map/adapter/__tests__/acp-over-map-history.test.ts +724 -2
  220. package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
  221. package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
  222. package/src/map/adapter/__tests__/event-log.test.ts +527 -0
  223. package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
  224. package/src/map/adapter/__tests__/extensions.test.ts +408 -0
  225. package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
  226. package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
  227. package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
  228. package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
  229. package/src/map/adapter/acp-over-map.ts +777 -92
  230. package/src/map/adapter/connection-manager.ts +3 -0
  231. package/src/map/adapter/event-log.ts +208 -0
  232. package/src/map/adapter/event-translator.ts +6 -6
  233. package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
  234. package/src/map/adapter/extensions/index.ts +60 -0
  235. package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
  236. package/src/map/adapter/extensions/task.ts +11 -0
  237. package/src/map/adapter/extensions/update-metadata.ts +126 -0
  238. package/src/map/adapter/index.ts +28 -0
  239. package/src/map/adapter/interface.ts +2 -0
  240. package/src/map/adapter/map-adapter.ts +373 -38
  241. package/src/map/adapter/subscription-manager.ts +5 -1
  242. package/src/map/adapter/types.ts +2 -0
  243. package/src/mcp/__tests__/map-client.test.ts +386 -0
  244. package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
  245. package/src/mcp/__tests__/mcp-server.test.ts +100 -1
  246. package/src/mcp/map-client.ts +177 -0
  247. package/src/mcp/mcp-server.ts +191 -100
  248. package/src/mcp/types.ts +6 -1
  249. package/src/metrics/metrics.ts +1 -1
  250. package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
  251. package/src/roles/__tests__/config-loader.test.ts +7 -7
  252. package/src/roles/capabilities.ts +17 -7
  253. package/src/roles/config-loader.ts +6 -6
  254. package/src/roles/registry.ts +2 -2
  255. package/src/server/__tests__/combined-server.test.ts +94 -21
  256. package/src/server/combined-server.ts +189 -33
  257. package/src/steering/__tests__/steering-integration.test.ts +1 -1
  258. package/src/store/__tests__/event-store.test.ts +236 -1
  259. package/src/store/__tests__/instance.test.ts +3 -3
  260. package/src/store/event-store.ts +109 -8
  261. package/src/store/types/agents.ts +16 -0
  262. package/src/store/types/events.ts +1 -1
  263. package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
  264. package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
  265. package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
  266. package/src/task/backend/index.ts +156 -106
  267. package/src/task/backend/memory.ts +4 -0
  268. package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
  269. package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
  270. package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
  271. package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
  272. package/src/task/backend/opentasks/backend.ts +1323 -0
  273. package/src/task/backend/opentasks/client.ts +652 -0
  274. package/src/task/backend/opentasks/daemon-manager.ts +253 -0
  275. package/src/task/backend/opentasks/index.ts +69 -0
  276. package/src/task/backend/opentasks/mapping.ts +94 -0
  277. package/src/task/backend/types.ts +42 -66
  278. package/src/task/backend/unified-tool-provider.ts +779 -0
  279. package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
  280. package/src/teams/team-loader.ts +3 -3
  281. package/src/teams/team-runtime.ts +2 -0
  282. package/test_fixtures/README.md +2 -3
  283. package/test_fixtures/fixtures/index.ts +0 -3
  284. package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
  285. package/test_fixtures/fixtures/repos/index.ts +1 -3
  286. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
  287. package/test_fixtures/fixtures/repos/types.ts +0 -11
  288. package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
  289. package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
  290. package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
  291. package/vitest.config.ts +1 -1
  292. package/vitest.e2e.config.ts +1 -1
  293. package/vitest.setup.ts +1 -30
  294. package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
  295. package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
  296. package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
  297. package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
  298. package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
  299. package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
  300. package/.macro-agent/teams/self-driving/team.yaml +0 -103
  301. package/.macro-agent/teams/structured/prompts/developer.md +0 -26
  302. package/.macro-agent/teams/structured/prompts/lead.md +0 -25
  303. package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
  304. package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
  305. package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
  306. package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
  307. package/.macro-agent/teams/structured/team.yaml +0 -89
  308. package/docs/sudocode-integration.md +0 -383
  309. package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
  310. package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
  311. package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
  312. package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
  313. package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
  314. package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
  315. package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
  316. package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
  317. package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
  318. package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
  319. package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
  320. package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
  321. package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
  322. package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
  323. package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
  324. package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
  325. package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
  326. package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
  327. package/src/task/backend/sudocode/backend.ts +0 -1237
  328. package/src/task/backend/sudocode/client.ts +0 -515
  329. package/src/task/backend/sudocode/index.ts +0 -120
  330. package/src/task/backend/sudocode/mapping.ts +0 -93
  331. package/src/task/backend/sudocode/server-client.ts +0 -522
  332. package/src/task/backend/sudocode/standalone-client.ts +0 -623
  333. package/src/task/backend/sudocode/sync-policy.ts +0 -387
  334. package/src/task/backend/sudocode/tools.ts +0 -896
  335. package/src/task/backend/tool-provider.ts +0 -506
  336. package/test_fixtures/fixtures/sudocode/index.ts +0 -29
  337. package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
  338. package/test_fixtures/fixtures/sudocode/specs.ts +0 -159
@@ -0,0 +1,623 @@
1
+ /**
2
+ * Unified Task Tool Provider
3
+ *
4
+ * Single tool provider for all task backends. Provides:
5
+ * - Core CRUD tools (always available): create_task, get_task, list_tasks, assign_task
6
+ * - OpenTasks graph tools (when client available): task, link, annotate
7
+ *
8
+ * Replaces the separate InMemoryTaskToolProvider and OpenTasksTaskToolProvider.
9
+ *
10
+ * @module task/backend/unified-tool-provider
11
+ */
12
+ // =============================================================================
13
+ // UnifiedTaskToolProvider
14
+ // =============================================================================
15
+ /**
16
+ * UnifiedTaskToolProvider
17
+ *
18
+ * Provides MCP tools for task operations, backed by:
19
+ * - TaskBackend for core CRUD (create_task, get_task, list_tasks, assign_task)
20
+ * - OpenTasksClient (optional) for graph operations (task, link, annotate)
21
+ */
22
+ export class UnifiedTaskToolProvider {
23
+ backend;
24
+ getContext;
25
+ openTasksClient;
26
+ constructor(backend, getContext, openTasksClient) {
27
+ this.backend = backend;
28
+ this.getContext = getContext;
29
+ this.openTasksClient = openTasksClient;
30
+ }
31
+ getTools() {
32
+ const tools = [
33
+ this.createTaskTool(),
34
+ this.getTaskTool(),
35
+ this.listTasksTool(),
36
+ this.assignTaskTool(),
37
+ ];
38
+ if (this.openTasksClient) {
39
+ tools.push(this.taskTool(), this.linkTool(), this.annotateTool(), this.listProvidersTool());
40
+ }
41
+ return tools;
42
+ }
43
+ /**
44
+ * Exclude the built-in create_task and get_task from mcp-server.ts
45
+ * since this provider replaces them.
46
+ */
47
+ getExcludedTools() {
48
+ return ["create_task", "get_task"];
49
+ }
50
+ // ─────────────────────────────────────────────────────────────────────────────
51
+ // Core CRUD Tools (backed by TaskBackend)
52
+ // ─────────────────────────────────────────────────────────────────────────────
53
+ createTaskTool() {
54
+ return {
55
+ name: "create_task",
56
+ description: "Create a new task",
57
+ schema: {
58
+ type: "object",
59
+ properties: {
60
+ description: {
61
+ type: "string",
62
+ description: "Task description",
63
+ },
64
+ parent_task: {
65
+ type: "string",
66
+ description: "Parent task ID for subtasks",
67
+ },
68
+ tags: {
69
+ type: "array",
70
+ items: { type: "string" },
71
+ description: "Tags for categorization",
72
+ },
73
+ },
74
+ required: ["description"],
75
+ },
76
+ handler: async (params) => {
77
+ const args = params;
78
+ const context = this.getContext();
79
+ const task = await this.backend.create({
80
+ description: args.description,
81
+ created_by: context.agent_id,
82
+ parent_task: args.parent_task,
83
+ tags: args.tags,
84
+ });
85
+ return {
86
+ task_id: task.id,
87
+ status: task.status,
88
+ external_id: task.external_id,
89
+ };
90
+ },
91
+ };
92
+ }
93
+ getTaskTool() {
94
+ return {
95
+ name: "get_task",
96
+ description: "Get details of a specific task",
97
+ schema: {
98
+ type: "object",
99
+ properties: {
100
+ task_id: {
101
+ type: "string",
102
+ description: "Task ID to look up",
103
+ },
104
+ },
105
+ required: ["task_id"],
106
+ },
107
+ handler: async (params) => {
108
+ const args = params;
109
+ const task = await this.backend.get(args.task_id);
110
+ if (!task) {
111
+ throw new Error(`Task not found: ${args.task_id}`);
112
+ }
113
+ return {
114
+ id: task.id,
115
+ description: task.description,
116
+ status: task.status,
117
+ isBlocked: task.isBlocked,
118
+ external_id: task.external_id,
119
+ source_location: task.source_location,
120
+ assigned_agent: task.assigned_agent,
121
+ parent_task: task.parent_task,
122
+ blockers: task.blockers ?? [],
123
+ created_at: task.created_at,
124
+ started_at: task.started_at,
125
+ completed_at: task.completed_at,
126
+ outputs: task.outputs,
127
+ artifacts: task.artifacts,
128
+ };
129
+ },
130
+ };
131
+ }
132
+ listTasksTool() {
133
+ const client = this.openTasksClient;
134
+ return {
135
+ name: "list_tasks",
136
+ description: "List tasks with optional filtering. Use federated=true to include " +
137
+ "tasks from connected project locations (requires opentasks backend).",
138
+ schema: {
139
+ type: "object",
140
+ properties: {
141
+ status: {
142
+ type: "string",
143
+ enum: ["pending", "assigned", "in_progress", "completed", "failed"],
144
+ description: "Filter by task status",
145
+ },
146
+ assigned_agent: {
147
+ type: "string",
148
+ description: "Filter by assigned agent",
149
+ },
150
+ parent_task: {
151
+ type: "string",
152
+ description: "Filter by parent task",
153
+ },
154
+ root_only: {
155
+ type: "boolean",
156
+ description: "Only return root tasks (no parent)",
157
+ },
158
+ include_blocked: {
159
+ type: "boolean",
160
+ description: "Include blocked tasks (default: true)",
161
+ },
162
+ federated: {
163
+ type: "boolean",
164
+ description: "Include tasks from connected project locations (default: false). " +
165
+ "Queries the opentasks daemon for ready tasks across all connected projects.",
166
+ },
167
+ },
168
+ },
169
+ handler: async (params) => {
170
+ const args = params;
171
+ const filter = {};
172
+ if (args.status)
173
+ filter.status = args.status;
174
+ if (args.assigned_agent)
175
+ filter.assigned_agent = args.assigned_agent;
176
+ if (args.parent_task)
177
+ filter.parent_task = args.parent_task;
178
+ if (args.root_only)
179
+ filter.rootTasksOnly = true;
180
+ if (args.include_blocked !== undefined)
181
+ filter.includeBlocked = args.include_blocked;
182
+ // Local tasks from EventStore
183
+ const localTasks = await this.backend.list(filter);
184
+ const localTaskItems = localTasks.map((t) => ({
185
+ id: t.id,
186
+ description: t.description,
187
+ status: t.status,
188
+ isBlocked: t.isBlocked,
189
+ external_id: t.external_id,
190
+ assigned_agent: t.assigned_agent,
191
+ parent_task: t.parent_task,
192
+ source_location: t.source_location,
193
+ }));
194
+ // If federated requested and client available, also query daemon
195
+ if (args.federated && client) {
196
+ try {
197
+ const result = await client.taskReady({
198
+ tags: filter.tags,
199
+ assignee: args.assigned_agent,
200
+ });
201
+ if (result.success && result.data) {
202
+ const readyData = result.data;
203
+ // Collect external IDs we already know about
204
+ const knownExternalIds = new Set(localTaskItems
205
+ .map((t) => t.external_id)
206
+ .filter(Boolean));
207
+ // Add federated items not already in local list
208
+ for (const item of readyData.items ?? []) {
209
+ if (!knownExternalIds.has(item.id)) {
210
+ localTaskItems.push({
211
+ id: item.id,
212
+ description: item.title,
213
+ status: (item.status ?? "pending"),
214
+ isBlocked: false,
215
+ external_id: item.id,
216
+ assigned_agent: undefined,
217
+ parent_task: undefined,
218
+ source_location: "federated",
219
+ });
220
+ }
221
+ }
222
+ }
223
+ }
224
+ catch {
225
+ // Non-fatal — federated query failed, return local results only
226
+ }
227
+ }
228
+ return {
229
+ tasks: localTaskItems,
230
+ total: localTaskItems.length,
231
+ };
232
+ },
233
+ };
234
+ }
235
+ assignTaskTool() {
236
+ return {
237
+ name: "assign_task",
238
+ description: "Assign a task to an agent",
239
+ schema: {
240
+ type: "object",
241
+ properties: {
242
+ task_id: {
243
+ type: "string",
244
+ description: "Task ID to assign",
245
+ },
246
+ agent_id: {
247
+ type: "string",
248
+ description: "Agent ID to assign to (defaults to calling agent if not specified)",
249
+ },
250
+ role: {
251
+ type: "string",
252
+ description: "Optional role for the assignment",
253
+ },
254
+ },
255
+ required: ["task_id"],
256
+ },
257
+ handler: async (params) => {
258
+ const args = params;
259
+ const context = this.getContext();
260
+ const agentId = args.agent_id ?? context.agent_id;
261
+ await this.backend.assign(args.task_id, agentId, { role: args.role });
262
+ return {
263
+ task_id: args.task_id,
264
+ assigned_agent: agentId,
265
+ assigned: true,
266
+ };
267
+ },
268
+ };
269
+ }
270
+ // ─────────────────────────────────────────────────────────────────────────────
271
+ // OpenTasks Graph Tools (require OpenTasksClient)
272
+ // ─────────────────────────────────────────────────────────────────────────────
273
+ taskTool() {
274
+ const client = this.openTasksClient;
275
+ const getContext = this.getContext;
276
+ return {
277
+ name: "task",
278
+ description: "Provider-agnostic task lifecycle operations. Routes to the correct " +
279
+ "provider based on task ID or URI. " +
280
+ "Supports: transition (start/complete/block/reopen/close), " +
281
+ "ready (federated across providers), assign, validActions. " +
282
+ "Specify exactly one operation.",
283
+ schema: {
284
+ type: "object",
285
+ properties: {
286
+ transition: {
287
+ type: "object",
288
+ description: "Transition a task's status using a semantic action",
289
+ properties: {
290
+ id: {
291
+ type: "string",
292
+ description: "Task ID or provider URI",
293
+ },
294
+ action: {
295
+ type: "string",
296
+ enum: ["start", "complete", "block", "reopen", "close"],
297
+ description: "Semantic action to apply",
298
+ },
299
+ },
300
+ required: ["id", "action"],
301
+ },
302
+ ready: {
303
+ type: "object",
304
+ description: "Get tasks ready to work on (no active blockers), federated across providers",
305
+ properties: {
306
+ providers: {
307
+ type: "array",
308
+ items: { type: "string" },
309
+ description: "Only query these providers. Omit for all.",
310
+ },
311
+ limit: { type: "number", description: "Max results" },
312
+ tags: {
313
+ type: "array",
314
+ items: { type: "string" },
315
+ description: "Filter by tags",
316
+ },
317
+ priority: {
318
+ type: "number",
319
+ description: "Filter by minimum priority",
320
+ },
321
+ assignee: {
322
+ type: "string",
323
+ description: "Filter by assignee",
324
+ },
325
+ },
326
+ },
327
+ assign: {
328
+ type: "object",
329
+ description: "Assign a task to an owner",
330
+ properties: {
331
+ id: {
332
+ type: "string",
333
+ description: "Task ID or provider URI",
334
+ },
335
+ assignee: {
336
+ type: "string",
337
+ description: "Assignee identifier (defaults to calling agent)",
338
+ },
339
+ },
340
+ required: ["id"],
341
+ },
342
+ validActions: {
343
+ type: "object",
344
+ description: "Get valid next actions for a task's current state",
345
+ properties: {
346
+ id: {
347
+ type: "string",
348
+ description: "Task ID or provider URI",
349
+ },
350
+ },
351
+ required: ["id"],
352
+ },
353
+ },
354
+ },
355
+ handler: async (params) => {
356
+ const args = params;
357
+ if (args.transition) {
358
+ const result = await client.taskTransition(args.transition.id, args.transition.action);
359
+ if (!result.success) {
360
+ throw new Error(result.error ?? "Transition failed");
361
+ }
362
+ // Sync the transition back to the EventStore so MAP events are emitted
363
+ // and the TUI task board stays in sync. The opentasks daemon already
364
+ // processed the transition, so syncExternalTransition only updates the
365
+ // EventStore without re-syncing to opentasks.
366
+ if (this.backend.syncExternalTransition) {
367
+ try {
368
+ await this.backend.syncExternalTransition(args.transition.id, args.transition.action, getContext().agent_id);
369
+ }
370
+ catch (err) {
371
+ console.warn(`[UnifiedTaskToolProvider] syncExternalTransition failed for ${args.transition.id}: ${err}`);
372
+ }
373
+ }
374
+ return result.data;
375
+ }
376
+ if (args.ready !== undefined) {
377
+ const result = await client.taskReady(args.ready);
378
+ if (!result.success) {
379
+ throw new Error(result.error ?? "Ready query failed");
380
+ }
381
+ return result.data;
382
+ }
383
+ if (args.assign) {
384
+ const assignee = args.assign.assignee ?? getContext().agent_id;
385
+ const result = await client.taskAssign(args.assign.id, assignee);
386
+ if (!result.success) {
387
+ throw new Error(result.error ?? "Assignment failed");
388
+ }
389
+ // Sync assignment back to EventStore
390
+ if (this.backend.syncExternalTransition) {
391
+ try {
392
+ await this.backend.syncExternalTransition(args.assign.id, "assign", assignee);
393
+ }
394
+ catch (err) {
395
+ console.warn(`[UnifiedTaskToolProvider] syncExternalTransition (assign) failed for ${args.assign.id}: ${err}`);
396
+ }
397
+ }
398
+ return result.data;
399
+ }
400
+ if (args.validActions) {
401
+ const result = await client.taskValidActions(args.validActions.id);
402
+ if (!result.success) {
403
+ throw new Error(result.error ?? "Valid actions query failed");
404
+ }
405
+ return result.data;
406
+ }
407
+ throw new Error("Specify exactly one operation: transition, ready, assign, or validActions");
408
+ },
409
+ };
410
+ }
411
+ linkTool() {
412
+ const client = this.openTasksClient;
413
+ return {
414
+ name: "link",
415
+ description: "Create or remove a relationship between nodes. " +
416
+ "Supports cross-project references via opentasks:// URIs " +
417
+ "(e.g., opentasks://<location-hash>/i-xxxx). " +
418
+ "Types: blocks, implements, references, related, child-of, " +
419
+ "parent-of, depends-on, discovered-from, duplicates, supersedes.",
420
+ schema: {
421
+ type: "object",
422
+ properties: {
423
+ from_id: {
424
+ type: "string",
425
+ description: "Source node ID or provider URI",
426
+ },
427
+ to_id: {
428
+ type: "string",
429
+ description: "Target node ID or provider URI",
430
+ },
431
+ type: {
432
+ type: "string",
433
+ enum: [
434
+ "blocks",
435
+ "implements",
436
+ "references",
437
+ "related",
438
+ "child-of",
439
+ "parent-of",
440
+ "depends-on",
441
+ "discovered-from",
442
+ "duplicates",
443
+ "supersedes",
444
+ ],
445
+ description: "Relationship type",
446
+ },
447
+ remove: {
448
+ type: "boolean",
449
+ description: "Remove the edge instead of creating (default: false)",
450
+ },
451
+ },
452
+ required: ["from_id", "to_id", "type"],
453
+ },
454
+ handler: async (params) => {
455
+ const args = params;
456
+ if (args.remove) {
457
+ await client.removeEdge(args.from_id, args.to_id, args.type);
458
+ return {
459
+ from_id: args.from_id,
460
+ to_id: args.to_id,
461
+ type: args.type,
462
+ removed: true,
463
+ };
464
+ }
465
+ const edge = await client.createEdge(args.from_id, args.to_id, args.type);
466
+ return {
467
+ edge_id: edge.id,
468
+ from_id: args.from_id,
469
+ to_id: args.to_id,
470
+ type: args.type,
471
+ created: true,
472
+ };
473
+ },
474
+ };
475
+ }
476
+ annotateTool() {
477
+ const client = this.openTasksClient;
478
+ const getContext = this.getContext;
479
+ return {
480
+ name: "annotate",
481
+ description: "Add feedback to a node, or resolve/dismiss/reopen existing feedback. " +
482
+ "Feedback types: comment, suggestion, request. " +
483
+ "Can anchor to specific line numbers or text.",
484
+ schema: {
485
+ type: "object",
486
+ properties: {
487
+ target_id: {
488
+ type: "string",
489
+ description: "Target node receiving feedback",
490
+ },
491
+ content: {
492
+ type: "string",
493
+ description: "Feedback content (markdown). Required for new feedback.",
494
+ },
495
+ feedback_type: {
496
+ type: "string",
497
+ enum: ["comment", "suggestion", "request"],
498
+ description: "Type of feedback (default: comment)",
499
+ },
500
+ line: {
501
+ type: "number",
502
+ description: "Line number to anchor feedback to",
503
+ },
504
+ text: {
505
+ type: "string",
506
+ description: "Text snippet to anchor feedback to",
507
+ },
508
+ from_id: {
509
+ type: "string",
510
+ description: "Issue providing the feedback (creates discovered-from link)",
511
+ },
512
+ resolve: {
513
+ type: "string",
514
+ description: "Feedback ID to resolve",
515
+ },
516
+ dismiss: {
517
+ type: "string",
518
+ description: "Feedback ID to dismiss",
519
+ },
520
+ reopen: {
521
+ type: "string",
522
+ description: "Feedback ID to reopen",
523
+ },
524
+ },
525
+ required: ["target_id"],
526
+ },
527
+ handler: async (params) => {
528
+ const args = params;
529
+ if (args.content) {
530
+ // Create new feedback node
531
+ const feedbackNode = await client.createIssue({
532
+ title: args.content.slice(0, 100),
533
+ content: args.content,
534
+ metadata: {
535
+ _node_type: "feedback",
536
+ target_id: args.target_id,
537
+ feedback_type: args.feedback_type ?? "comment",
538
+ from_id: args.from_id,
539
+ anchor_line: args.line,
540
+ anchor_text: args.text,
541
+ _created_by_agent: getContext().agent_id,
542
+ },
543
+ });
544
+ // Link feedback to target
545
+ if (args.from_id) {
546
+ await client.createEdge(args.from_id, args.target_id, "discovered-from");
547
+ }
548
+ return {
549
+ feedback_id: feedbackNode.id,
550
+ target_id: args.target_id,
551
+ type: args.feedback_type ?? "comment",
552
+ created: true,
553
+ };
554
+ }
555
+ if (args.resolve) {
556
+ await client.updateIssue(args.resolve, {
557
+ metadata: { resolved: true, resolved_at: new Date().toISOString() },
558
+ });
559
+ return { feedback_id: args.resolve, resolved: true };
560
+ }
561
+ if (args.dismiss) {
562
+ await client.updateIssue(args.dismiss, {
563
+ metadata: {
564
+ dismissed: true,
565
+ dismissed_at: new Date().toISOString(),
566
+ },
567
+ });
568
+ return { feedback_id: args.dismiss, dismissed: true };
569
+ }
570
+ if (args.reopen) {
571
+ await client.updateIssue(args.reopen, {
572
+ metadata: { resolved: false, dismissed: false },
573
+ });
574
+ return { feedback_id: args.reopen, reopened: true };
575
+ }
576
+ throw new Error("Must provide content (new feedback), resolve, dismiss, or reopen");
577
+ },
578
+ };
579
+ }
580
+ listProvidersTool() {
581
+ const client = this.openTasksClient;
582
+ return {
583
+ name: "list_providers",
584
+ description: "List all registered providers and their capabilities. " +
585
+ "Shows what task systems are connected (native opentasks, external integrations) " +
586
+ "and what operations each supports.",
587
+ schema: {
588
+ type: "object",
589
+ properties: {},
590
+ },
591
+ handler: async () => {
592
+ const providers = await client.listProviders();
593
+ return {
594
+ providers: providers.map((p) => ({
595
+ name: p.name,
596
+ schemes: p.schemes,
597
+ is_default: p.isDefault,
598
+ capabilities: p.capabilities,
599
+ task_capabilities: p.taskCapabilities
600
+ ? {
601
+ actions: p.taskCapabilities.actions,
602
+ supports_assignment: p.taskCapabilities.supportsAssignment,
603
+ supports_ready_query: p.taskCapabilities.supportsReadyQuery,
604
+ status_model: p.taskCapabilities.statusModel,
605
+ }
606
+ : undefined,
607
+ })),
608
+ total: providers.length,
609
+ };
610
+ },
611
+ };
612
+ }
613
+ }
614
+ // =============================================================================
615
+ // Factory
616
+ // =============================================================================
617
+ /**
618
+ * Create a UnifiedTaskToolProvider
619
+ */
620
+ export function createUnifiedToolProvider(backend, getContext, openTasksClient) {
621
+ return new UnifiedTaskToolProvider(backend, getContext, openTasksClient);
622
+ }
623
+ //# sourceMappingURL=unified-tool-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-tool-provider.js","sourceRoot":"","sources":["../../../src/task/backend/unified-tool-provider.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Team Template Loader
3
3
  *
4
- * Reads .macro-agent/teams/<name>/ directories, parses team.yaml,
4
+ * Reads .multiagent/teams/<name>/ directories, parses team.yaml,
5
5
  * resolves role inheritance, loads prompts, and validates communication.
6
6
  *
7
7
  * @module teams/team-loader
@@ -11,7 +11,7 @@ import { type TeamManifest } from "./types.js";
11
11
  /**
12
12
  * Load a team template from disk and resolve all references.
13
13
  *
14
- * @param teamName - Team name (directory name under .macro-agent/teams/)
14
+ * @param teamName - Team name (directory name under .multiagent/teams/)
15
15
  * @param roleRegistry - Role registry for resolving extends chains
16
16
  * @param basePath - Project root (default: process.cwd())
17
17
  * @returns Fully resolved TeamManifest