macro-agent 0.1.0 → 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 (337) 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 +15 -0
  6. package/dist/acp/macro-agent.d.ts.map +1 -1
  7. package/dist/acp/macro-agent.js +131 -35
  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 +17 -0
  53. package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
  54. package/dist/map/adapter/acp-over-map.js +384 -23
  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 +3 -0
  95. package/dist/map/adapter/map-adapter.d.ts.map +1 -1
  96. package/dist/map/adapter/map-adapter.js +258 -35
  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 +2 -1
  131. package/dist/store/event-store.d.ts.map +1 -1
  132. package/dist/store/event-store.js +69 -20
  133. package/dist/store/event-store.js.map +1 -1
  134. package/dist/store/types/agents.d.ts +18 -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__/integration.test.ts +56 -31
  197. package/src/acp/__tests__/macro-agent.test.ts +16 -7
  198. package/src/acp/macro-agent.ts +170 -36
  199. package/src/acp/types.ts +46 -1
  200. package/src/agent/__tests__/agent-manager.test.ts +228 -2
  201. package/src/agent/agent-manager.ts +714 -261
  202. package/src/agent/types.ts +3 -1
  203. package/src/api/server.ts +41 -7
  204. package/src/auth/__tests__/token.test.ts +100 -0
  205. package/src/auth/index.ts +1 -0
  206. package/src/auth/token.ts +82 -0
  207. package/src/cli/__tests__/acp.test.ts +1 -1
  208. package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
  209. package/src/cli/acp.ts +130 -72
  210. package/src/cli/index.ts +120 -14
  211. package/src/cli/mcp.ts +311 -207
  212. package/src/cli/parse-args.ts +54 -0
  213. package/src/cli/stable-instance-id.ts +14 -0
  214. package/src/config/project-config.ts +190 -27
  215. package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
  216. package/src/map/adapter/__tests__/acp-over-map-cancel.test.ts +22 -4
  217. package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
  218. package/src/map/adapter/__tests__/acp-over-map-history.test.ts +263 -0
  219. package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
  220. package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
  221. package/src/map/adapter/__tests__/event-log.test.ts +527 -0
  222. package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
  223. package/src/map/adapter/__tests__/extensions.test.ts +408 -0
  224. package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
  225. package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
  226. package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
  227. package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
  228. package/src/map/adapter/acp-over-map.ts +678 -66
  229. package/src/map/adapter/connection-manager.ts +3 -0
  230. package/src/map/adapter/event-log.ts +208 -0
  231. package/src/map/adapter/event-translator.ts +6 -6
  232. package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
  233. package/src/map/adapter/extensions/index.ts +60 -0
  234. package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
  235. package/src/map/adapter/extensions/task.ts +11 -0
  236. package/src/map/adapter/extensions/update-metadata.ts +126 -0
  237. package/src/map/adapter/index.ts +28 -0
  238. package/src/map/adapter/interface.ts +2 -0
  239. package/src/map/adapter/map-adapter.ts +312 -47
  240. package/src/map/adapter/subscription-manager.ts +5 -1
  241. package/src/map/adapter/types.ts +2 -0
  242. package/src/mcp/__tests__/map-client.test.ts +386 -0
  243. package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
  244. package/src/mcp/__tests__/mcp-server.test.ts +100 -1
  245. package/src/mcp/map-client.ts +177 -0
  246. package/src/mcp/mcp-server.ts +191 -100
  247. package/src/mcp/types.ts +6 -1
  248. package/src/metrics/metrics.ts +1 -1
  249. package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
  250. package/src/roles/__tests__/config-loader.test.ts +7 -7
  251. package/src/roles/capabilities.ts +17 -7
  252. package/src/roles/config-loader.ts +6 -6
  253. package/src/roles/registry.ts +2 -2
  254. package/src/server/__tests__/combined-server.test.ts +94 -21
  255. package/src/server/combined-server.ts +189 -33
  256. package/src/steering/__tests__/steering-integration.test.ts +1 -1
  257. package/src/store/__tests__/event-store.test.ts +196 -1
  258. package/src/store/__tests__/instance.test.ts +3 -3
  259. package/src/store/event-store.ts +80 -21
  260. package/src/store/types/agents.ts +15 -0
  261. package/src/store/types/events.ts +1 -1
  262. package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
  263. package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
  264. package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
  265. package/src/task/backend/index.ts +156 -106
  266. package/src/task/backend/memory.ts +4 -0
  267. package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
  268. package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
  269. package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
  270. package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
  271. package/src/task/backend/opentasks/backend.ts +1323 -0
  272. package/src/task/backend/opentasks/client.ts +652 -0
  273. package/src/task/backend/opentasks/daemon-manager.ts +253 -0
  274. package/src/task/backend/opentasks/index.ts +69 -0
  275. package/src/task/backend/opentasks/mapping.ts +94 -0
  276. package/src/task/backend/types.ts +42 -66
  277. package/src/task/backend/unified-tool-provider.ts +779 -0
  278. package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
  279. package/src/teams/team-loader.ts +3 -3
  280. package/src/teams/team-runtime.ts +2 -0
  281. package/test_fixtures/README.md +2 -3
  282. package/test_fixtures/fixtures/index.ts +0 -3
  283. package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
  284. package/test_fixtures/fixtures/repos/index.ts +1 -3
  285. package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
  286. package/test_fixtures/fixtures/repos/types.ts +0 -11
  287. package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
  288. package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
  289. package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
  290. package/vitest.config.ts +1 -1
  291. package/vitest.e2e.config.ts +1 -1
  292. package/vitest.setup.ts +1 -30
  293. package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
  294. package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
  295. package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
  296. package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
  297. package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
  298. package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
  299. package/.macro-agent/teams/self-driving/team.yaml +0 -103
  300. package/.macro-agent/teams/structured/prompts/developer.md +0 -26
  301. package/.macro-agent/teams/structured/prompts/lead.md +0 -25
  302. package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
  303. package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
  304. package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
  305. package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
  306. package/.macro-agent/teams/structured/team.yaml +0 -89
  307. package/docs/sudocode-integration.md +0 -383
  308. package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
  309. package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
  310. package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
  311. package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
  312. package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
  313. package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
  314. package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
  315. package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
  316. package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
  317. package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
  318. package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
  319. package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
  320. package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
  321. package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
  322. package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
  323. package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
  324. package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
  325. package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
  326. package/src/task/backend/sudocode/backend.ts +0 -1237
  327. package/src/task/backend/sudocode/client.ts +0 -515
  328. package/src/task/backend/sudocode/index.ts +0 -120
  329. package/src/task/backend/sudocode/mapping.ts +0 -93
  330. package/src/task/backend/sudocode/server-client.ts +0 -522
  331. package/src/task/backend/sudocode/standalone-client.ts +0 -623
  332. package/src/task/backend/sudocode/sync-policy.ts +0 -387
  333. package/src/task/backend/sudocode/tools.ts +0 -896
  334. package/src/task/backend/tool-provider.ts +0 -506
  335. package/test_fixtures/fixtures/sudocode/index.ts +0 -29
  336. package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
  337. 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