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
@@ -662,7 +662,7 @@ describe("Metrics ↔ EventStore Integration", () => {
662
662
  payload: { agent_id: "grinder-1" },
663
663
  } as unknown as Event);
664
664
  events.push({
665
- id: "e3", type: "terminate", timestamp: now - 1000,
665
+ id: "e3", type: "stop", timestamp: now - 1000,
666
666
  source: { agent_id: "grinder-1" },
667
667
  payload: { reason: "completed" },
668
668
  } as unknown as Event);
@@ -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
@@ -26,7 +26,7 @@ import {
26
26
  // Constants
27
27
  // =============================================================================
28
28
 
29
- const TEAMS_DIR = ".macro-agent/teams";
29
+ const TEAMS_DIR = ".multiagent/teams";
30
30
  const MANIFEST_FILE = "team.yaml";
31
31
  const ROLES_DIR = "roles";
32
32
  const PROMPTS_DIR = "prompts";
@@ -40,7 +40,7 @@ const MCP_SERVERS_FILE = "mcp-servers.json";
40
40
  /**
41
41
  * Load a team template from disk and resolve all references.
42
42
  *
43
- * @param teamName - Team name (directory name under .macro-agent/teams/)
43
+ * @param teamName - Team name (directory name under .multiagent/teams/)
44
44
  * @param roleRegistry - Role registry for resolving extends chains
45
45
  * @param basePath - Project root (default: process.cwd())
46
46
  * @returns Fully resolved TeamManifest
@@ -362,6 +362,8 @@ export class TeamRuntime {
362
362
  if (strategyName) {
363
363
  teamEnv.MACRO_INTEGRATION_STRATEGY = strategyName;
364
364
  }
365
+ // Task backend config is propagated by AgentManager.buildMacroAgentMcp()
366
+ // from its taskBackend/openTasksSocketPath config options.
365
367
 
366
368
  return {
367
369
  ...options,
@@ -2,7 +2,7 @@
2
2
 
3
3
  Testing infrastructure for multi-agent orchestration scenarios.
4
4
 
5
- > See spec [s-1zcx](../.sudocode/specs/s-1zcx.md) Multi-Agent Orchestration Testing Strategy
5
+ > Multi-Agent Orchestration Testing Strategy
6
6
 
7
7
  ## Overview
8
8
 
@@ -26,8 +26,7 @@ test_fixtures/
26
26
  │ │ └── typescript-project.ts
27
27
  │ ├── repos/ # Repository utilities
28
28
  │ │ └── temp-repo-factory.ts
29
- │ └── sudocode/ # Sudocode fixtures
30
- │ ├── specs.ts
29
+ │ └── opentasks/ # OpenTasks fixtures
31
30
  │ └── issues.ts
32
31
 
33
32
  ├── harness/ # Test harness implementation
@@ -1,10 +1,7 @@
1
1
  /**
2
2
  * Test Fixtures exports
3
- *
4
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
5
3
  */
6
4
 
7
5
  export * from "./repos/index.js";
8
6
  export * from "./projects/index.js";
9
7
  export * from "./behaviors/index.js";
10
- export * from "./sudocode/index.js";
@@ -1,186 +1,44 @@
1
1
  /**
2
- * Project with Sudocode Specs Fixtures
2
+ * Project Fixtures with Pre-configured Data
3
3
  *
4
- * Projects pre-configured with specs and issues for testing.
5
- *
6
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
7
- * @see i-7f2l Phase 4: Fixtures Library
4
+ * Projects pre-configured with dataplane for testing.
8
5
  */
9
6
 
10
- import type { TempRepoOptions, PartialSpec, PartialIssue } from "../repos/types.js";
7
+ import type { TempRepoOptions } from "../repos/types.js";
11
8
  import { TYPESCRIPT_PROJECT } from "./typescript-project.js";
12
9
 
13
10
  /**
14
- * Sample specs for testing
15
- */
16
- export const SAMPLE_SPECS: PartialSpec[] = [
17
- {
18
- id: "s-auth",
19
- title: "User Authentication System",
20
- description: `## Overview
21
- Implement a secure user authentication system.
22
-
23
- ## Requirements
24
- - Support email/password login
25
- - JWT token management
26
- - Session handling
27
-
28
- ## Acceptance Criteria
29
- - Users can register with email/password
30
- - Users can login and receive JWT
31
- - Invalid credentials return 401`,
32
- },
33
- {
34
- id: "s-api",
35
- title: "REST API Design",
36
- description: `## Overview
37
- Design and implement REST API endpoints.
38
-
39
- ## Endpoints
40
- - GET /users - List users
41
- - POST /users - Create user
42
- - GET /users/:id - Get user
43
- - PUT /users/:id - Update user
44
- - DELETE /users/:id - Delete user
45
-
46
- ## Standards
47
- - Use JSON for request/response
48
- - Follow REST conventions
49
- - Include proper error handling`,
50
- },
51
- ];
52
-
53
- /**
54
- * Sample issues for testing
55
- */
56
- export const SAMPLE_ISSUES: PartialIssue[] = [
57
- {
58
- id: "i-auth-login",
59
- title: "Implement login endpoint",
60
- implements: "s-auth",
61
- },
62
- {
63
- id: "i-auth-jwt",
64
- title: "Add JWT token generation",
65
- implements: "s-auth",
66
- },
67
- {
68
- id: "i-api-users",
69
- title: "Create users CRUD endpoints",
70
- implements: "s-api",
71
- },
72
- ];
73
-
74
- /**
75
- * TypeScript project with sudocode specs and issues
11
+ * TypeScript project with dataplane enabled
76
12
  */
77
13
  export const PROJECT_WITH_SPECS: TempRepoOptions = {
78
14
  initialFiles: TYPESCRIPT_PROJECT,
79
15
  withDataplane: true,
80
- withSudocode: true,
81
- sudocodeSpecs: SAMPLE_SPECS,
82
- sudocodeIssues: SAMPLE_ISSUES,
83
16
  };
84
17
 
85
18
  /**
86
- * Create project with custom specs and issues
19
+ * Create project with dataplane and custom files
87
20
  */
88
21
  export function createProjectWithSpecs(
89
- specs: PartialSpec[],
90
- issues: PartialIssue[],
91
22
  initialFiles: Record<string, string> = TYPESCRIPT_PROJECT
92
23
  ): TempRepoOptions {
93
24
  return {
94
25
  initialFiles,
95
26
  withDataplane: true,
96
- withSudocode: true,
97
- sudocodeSpecs: specs,
98
- sudocodeIssues: issues,
99
27
  };
100
28
  }
101
29
 
102
30
  /**
103
- * Project with hierarchical specs (parent-child relationships)
31
+ * Project with dataplane and branches
104
32
  */
105
33
  export const PROJECT_WITH_HIERARCHICAL_SPECS: TempRepoOptions = {
106
34
  initialFiles: TYPESCRIPT_PROJECT,
107
35
  withDataplane: true,
108
- withSudocode: true,
109
- sudocodeSpecs: [
110
- {
111
- id: "s-main",
112
- title: "Main Feature",
113
- description: "The main feature specification",
114
- },
115
- {
116
- id: "s-sub1",
117
- title: "Sub-feature 1",
118
- description: "First sub-feature",
119
- parent: "s-main",
120
- },
121
- {
122
- id: "s-sub2",
123
- title: "Sub-feature 2",
124
- description: "Second sub-feature",
125
- parent: "s-main",
126
- },
127
- ],
128
- sudocodeIssues: [
129
- {
130
- id: "i-main",
131
- title: "Implement main feature",
132
- implements: "s-main",
133
- },
134
- {
135
- id: "i-sub1",
136
- title: "Implement sub-feature 1",
137
- implements: "s-sub1",
138
- },
139
- {
140
- id: "i-sub2",
141
- title: "Implement sub-feature 2",
142
- implements: "s-sub2",
143
- },
144
- ],
145
36
  };
146
37
 
147
38
  /**
148
- * Project with blocked issues (dependency chain)
39
+ * Project with dataplane for dependency testing
149
40
  */
150
41
  export const PROJECT_WITH_BLOCKED_ISSUES: TempRepoOptions = {
151
42
  initialFiles: TYPESCRIPT_PROJECT,
152
43
  withDataplane: true,
153
- withSudocode: true,
154
- sudocodeSpecs: [
155
- {
156
- id: "s-pipeline",
157
- title: "Data Pipeline",
158
- description: "Build data processing pipeline",
159
- },
160
- ],
161
- sudocodeIssues: [
162
- {
163
- id: "i-setup",
164
- title: "Setup infrastructure",
165
- implements: "s-pipeline",
166
- },
167
- {
168
- id: "i-ingest",
169
- title: "Implement data ingestion",
170
- implements: "s-pipeline",
171
- blockedBy: ["i-setup"],
172
- },
173
- {
174
- id: "i-transform",
175
- title: "Implement data transformation",
176
- implements: "s-pipeline",
177
- blockedBy: ["i-ingest"],
178
- },
179
- {
180
- id: "i-output",
181
- title: "Implement data output",
182
- implements: "s-pipeline",
183
- blockedBy: ["i-transform"],
184
- },
185
- ],
186
44
  };
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * Temp Repo Factory exports
3
- *
4
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
5
3
  */
6
4
 
7
5
  export * from "./types.js";
8
- export { createTempRepo, createSpec, createIssue } from "./temp-repo-factory.js";
6
+ export { createTempRepo } from "./temp-repo-factory.js";
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * TempRepoFactory - Creates temporary git repositories for testing
3
- *
4
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
5
3
  */
6
4
 
7
5
  import * as fs from "fs";
@@ -29,9 +27,6 @@ export async function createTempRepo(
29
27
  bare = false,
30
28
  remoteOrigin,
31
29
  withDataplane = false,
32
- withSudocode = false,
33
- sudocodeSpecs = [],
34
- sudocodeIssues = [],
35
30
  branches = [],
36
31
  } = options;
37
32
 
@@ -123,17 +118,6 @@ export async function createTempRepo(
123
118
  // Initialize dataplane schema (minimal for testing)
124
119
  initializeDataplaneSchema(db);
125
120
 
126
- if (withSudocode) {
127
- initializeSudocodeSchema(db);
128
-
129
- // Create specs and issues
130
- for (const spec of sudocodeSpecs) {
131
- createSpec(db, spec);
132
- }
133
- for (const issue of sudocodeIssues) {
134
- createIssue(db, issue);
135
- }
136
- }
137
121
  }
138
122
 
139
123
  // Build TempRepo object
@@ -313,103 +297,3 @@ function initializeDataplaneSchema(db: Database.Database): void {
313
297
  `);
314
298
  }
315
299
 
316
- /**
317
- * Initialize sudocode schema for testing
318
- */
319
- function initializeSudocodeSchema(db: Database.Database): void {
320
- db.exec(`
321
- -- Specs table
322
- CREATE TABLE IF NOT EXISTS sudocode_specs (
323
- id TEXT PRIMARY KEY,
324
- title TEXT NOT NULL,
325
- description TEXT,
326
- priority INTEGER DEFAULT 2,
327
- tags TEXT,
328
- created_at INTEGER DEFAULT (unixepoch() * 1000),
329
- updated_at INTEGER DEFAULT (unixepoch() * 1000)
330
- );
331
-
332
- -- Issues table
333
- CREATE TABLE IF NOT EXISTS sudocode_issues (
334
- id TEXT PRIMARY KEY,
335
- title TEXT NOT NULL,
336
- description TEXT,
337
- status TEXT DEFAULT 'open',
338
- priority INTEGER DEFAULT 2,
339
- tags TEXT,
340
- created_at INTEGER DEFAULT (unixepoch() * 1000),
341
- updated_at INTEGER DEFAULT (unixepoch() * 1000)
342
- );
343
-
344
- -- Links table
345
- CREATE TABLE IF NOT EXISTS sudocode_links (
346
- from_id TEXT NOT NULL,
347
- to_id TEXT NOT NULL,
348
- type TEXT NOT NULL,
349
- created_at INTEGER DEFAULT (unixepoch() * 1000),
350
- PRIMARY KEY (from_id, to_id, type)
351
- );
352
- `);
353
- }
354
-
355
- /**
356
- * Create a spec in the database
357
- */
358
- function createSpec(
359
- db: Database.Database,
360
- spec: { id?: string; title: string; description?: string; priority?: number; tags?: string[] }
361
- ): string {
362
- const id = spec.id || `s-${Date.now().toString(36)}`;
363
- db.prepare(`
364
- INSERT INTO sudocode_specs (id, title, description, priority, tags)
365
- VALUES (?, ?, ?, ?, ?)
366
- `).run(
367
- id,
368
- spec.title,
369
- spec.description || "",
370
- spec.priority || 2,
371
- JSON.stringify(spec.tags || [])
372
- );
373
- return id;
374
- }
375
-
376
- /**
377
- * Create an issue in the database
378
- */
379
- function createIssue(
380
- db: Database.Database,
381
- issue: {
382
- id?: string;
383
- title: string;
384
- description?: string;
385
- status?: string;
386
- priority?: number;
387
- implements?: string;
388
- tags?: string[];
389
- }
390
- ): string {
391
- const id = issue.id || `i-${Date.now().toString(36)}`;
392
- db.prepare(`
393
- INSERT INTO sudocode_issues (id, title, description, status, priority, tags)
394
- VALUES (?, ?, ?, ?, ?, ?)
395
- `).run(
396
- id,
397
- issue.title,
398
- issue.description || "",
399
- issue.status || "open",
400
- issue.priority || 2,
401
- JSON.stringify(issue.tags || [])
402
- );
403
-
404
- // Create implements link if specified
405
- if (issue.implements) {
406
- db.prepare(`
407
- INSERT INTO sudocode_links (from_id, to_id, type)
408
- VALUES (?, ?, 'implements')
409
- `).run(id, issue.implements);
410
- }
411
-
412
- return id;
413
- }
414
-
415
- export { createSpec, createIssue };
@@ -1,7 +1,5 @@
1
1
  /**
2
2
  * Types for TempRepoFactory
3
- *
4
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
5
3
  */
6
4
 
7
5
  import type Database from "better-sqlite3";
@@ -25,15 +23,6 @@ export interface TempRepoOptions {
25
23
  /** Initialize dataplane schema (creates SQLite database) */
26
24
  withDataplane?: boolean;
27
25
 
28
- /** Initialize sudocode (requires withDataplane) */
29
- withSudocode?: boolean;
30
-
31
- /** Sudocode specs to create */
32
- sudocodeSpecs?: PartialSpec[];
33
-
34
- /** Sudocode issues to create */
35
- sudocodeIssues?: PartialIssue[];
36
-
37
26
  /** Additional branches to create */
38
27
  branches?: BranchConfig[];
39
28
  }
@@ -1,9 +1,7 @@
1
1
  /**
2
2
  * Fixtures Library Tests
3
3
  *
4
- * Tests for project fixtures, behavior fixtures, and sudocode fixtures.
5
- *
6
- * @see s-1zcx Multi-Agent Orchestration Testing Strategy
4
+ * Tests for project fixtures and behavior fixtures.
7
5
  */
8
6
 
9
7
  import { describe, it, expect, afterEach } from "vitest";
@@ -29,12 +27,6 @@ import {
29
27
  SIMPLE_INTEGRATOR,
30
28
  SIMPLE_MONITOR,
31
29
  createWorker,
32
- // Sudocode fixtures
33
- SIMPLE_FEATURE_SPEC,
34
- AUTH_SPEC,
35
- AUTH_ISSUES,
36
- createSpec,
37
- createIssue,
38
30
  } from "../../fixtures/index.js";
39
31
 
40
32
  describe("Fixtures Library", () => {
@@ -97,23 +89,19 @@ describe("Fixtures Library", () => {
97
89
  expect(repo.readFile("index.ts")).toContain("version");
98
90
  });
99
91
 
100
- it("should create project with specs", async () => {
92
+ it("should create project with dataplane", async () => {
101
93
  harness = await createTestHarness();
102
94
  const repo = await harness.createTempRepo(PROJECT_WITH_SPECS);
103
95
 
104
96
  expect(repo.db).toBeDefined();
105
97
 
106
- // Verify specs were created
107
- const specs = repo.db!
108
- .prepare("SELECT * FROM sudocode_specs")
109
- .all() as Array<{ id: string }>;
110
- expect(specs.length).toBeGreaterThan(0);
111
-
112
- // Verify issues were created
113
- const issues = repo.db!
114
- .prepare("SELECT * FROM sudocode_issues")
115
- .all() as Array<{ id: string }>;
116
- expect(issues.length).toBeGreaterThan(0);
98
+ // Verify dataplane tables exist
99
+ const tables = repo.db!
100
+ .prepare(
101
+ "SELECT name FROM sqlite_master WHERE type='table' AND name LIKE 'dataplane_%'"
102
+ )
103
+ .all() as Array<{ name: string }>;
104
+ expect(tables.length).toBeGreaterThan(0);
117
105
  });
118
106
 
119
107
  it("should create custom TypeScript project options", async () => {
@@ -308,77 +296,6 @@ describe("Fixtures Library", () => {
308
296
  });
309
297
  });
310
298
 
311
- // ─────────────────────────────────────────────────────────────────────────
312
- // Sudocode Fixtures
313
- // ─────────────────────────────────────────────────────────────────────────
314
-
315
- describe("Sudocode Fixtures", () => {
316
- let harness: TestHarness;
317
-
318
- afterEach(async () => {
319
- if (harness) {
320
- await harness.cleanup();
321
- }
322
- });
323
-
324
- it("should create project with predefined specs", async () => {
325
- harness = await createTestHarness();
326
- const repo = await harness.createTempRepo({
327
- initialFiles: MINIMAL_PROJECT,
328
- withDataplane: true,
329
- withSudocode: true,
330
- sudocodeSpecs: [SIMPLE_FEATURE_SPEC, AUTH_SPEC],
331
- });
332
-
333
- const specs = repo.db!
334
- .prepare("SELECT * FROM sudocode_specs")
335
- .all() as Array<{ id: string; title: string }>;
336
-
337
- expect(specs.length).toBe(2);
338
- expect(specs.some((s) => s.title === "Simple Feature")).toBe(true);
339
- expect(specs.some((s) => s.title === "User Authentication")).toBe(true);
340
- });
341
-
342
- it("should create project with predefined issues", async () => {
343
- harness = await createTestHarness();
344
- const repo = await harness.createTempRepo({
345
- initialFiles: MINIMAL_PROJECT,
346
- withDataplane: true,
347
- withSudocode: true,
348
- sudocodeSpecs: [AUTH_SPEC],
349
- sudocodeIssues: AUTH_ISSUES,
350
- });
351
-
352
- const issues = repo.db!
353
- .prepare("SELECT * FROM sudocode_issues")
354
- .all() as Array<{ id: string; title: string }>;
355
-
356
- expect(issues.length).toBe(4); // 4 auth issues
357
- });
358
-
359
- it("should create custom spec", () => {
360
- const spec = createSpec("s-custom", "Custom Spec", "Custom description", {
361
- priority: 1,
362
- tags: ["custom"],
363
- });
364
-
365
- expect(spec.id).toBe("s-custom");
366
- expect(spec.title).toBe("Custom Spec");
367
- expect(spec.priority).toBe(1);
368
- });
369
-
370
- it("should create custom issue", () => {
371
- const issue = createIssue("i-custom", "Custom Issue", {
372
- implements: "s-custom",
373
- status: "in_progress",
374
- });
375
-
376
- expect(issue.id).toBe("i-custom");
377
- expect(issue.title).toBe("Custom Issue");
378
- expect(issue.implements).toBe("s-custom");
379
- });
380
- });
381
-
382
299
  // ─────────────────────────────────────────────────────────────────────────
383
300
  // Integration Tests
384
301
  // ─────────────────────────────────────────────────────────────────────────
@@ -395,19 +312,10 @@ describe("Fixtures Library", () => {
395
312
  it("should run complete workflow with fixtures", async () => {
396
313
  harness = await createTestHarness();
397
314
 
398
- // Create project with specs
315
+ // Create project
399
316
  await harness.createTempRepo({
400
317
  initialFiles: TYPESCRIPT_PROJECT,
401
318
  withDataplane: true,
402
- withSudocode: true,
403
- sudocodeSpecs: [SIMPLE_FEATURE_SPEC],
404
- sudocodeIssues: [
405
- {
406
- id: "i-impl",
407
- title: "Implement feature",
408
- implements: "s-simple",
409
- },
410
- ],
411
319
  });
412
320
 
413
321
  // Spawn coordinator that spawns worker
@@ -111,39 +111,6 @@ describe("TempRepoFactory and AgentSimulator", () => {
111
111
  expect(tables.length).toBeGreaterThan(0);
112
112
  });
113
113
 
114
- it("should create repo with sudocode schema and fixtures", async () => {
115
- repo = await createTempRepo({
116
- withDataplane: true,
117
- withSudocode: true,
118
- sudocodeSpecs: [
119
- { id: "s-test", title: "Test Spec", description: "Test description" },
120
- ],
121
- sudocodeIssues: [
122
- { id: "i-test", title: "Test Issue", implements: "s-test" },
123
- ],
124
- });
125
-
126
- // Verify spec was created
127
- const spec = repo.db!
128
- .prepare("SELECT * FROM sudocode_specs WHERE id = ?")
129
- .get("s-test") as { title: string } | undefined;
130
- expect(spec).toBeDefined();
131
- expect(spec!.title).toBe("Test Spec");
132
-
133
- // Verify issue was created
134
- const issue = repo.db!
135
- .prepare("SELECT * FROM sudocode_issues WHERE id = ?")
136
- .get("i-test") as { title: string } | undefined;
137
- expect(issue).toBeDefined();
138
- expect(issue!.title).toBe("Test Issue");
139
-
140
- // Verify link was created
141
- const link = repo.db!
142
- .prepare("SELECT * FROM sudocode_links WHERE from_id = ? AND to_id = ?")
143
- .get("i-test", "s-test") as { type: string } | undefined;
144
- expect(link).toBeDefined();
145
- expect(link!.type).toBe("implements");
146
- });
147
114
  });
148
115
 
149
116
  // ─────────────────────────────────────────────────────────────────────────
@@ -155,9 +155,9 @@ class DefaultAgentSimulator implements AgentSimulator {
155
155
  async stop(): Promise<void> {
156
156
  if (!this.running) return;
157
157
 
158
- // Emit terminate event
158
+ // Emit stop event
159
159
  this.services.eventStore.emit({
160
- type: "terminate",
160
+ type: "stop",
161
161
  source: { agent_id: this.agentId },
162
162
  payload: {
163
163
  agent_id: this.agentId,
@@ -753,9 +753,9 @@ class DefaultAgentSimulator implements AgentSimulator {
753
753
  });
754
754
  }
755
755
 
756
- // Emit terminate event
756
+ // Emit stop event
757
757
  this.services.eventStore.emit({
758
- type: "terminate",
758
+ type: "stop",
759
759
  source: { agent_id: this.agentId },
760
760
  payload: {
761
761
  agent_id: this.agentId,
package/vitest.config.ts CHANGED
@@ -22,7 +22,7 @@ export default defineConfig({
22
22
  },
23
23
  server: {
24
24
  deps: {
25
- // Force inline the sudocode packages to avoid Node.js type stripping issues
25
+ // Force inline external packages to avoid Node.js type stripping issues
26
26
  inline: [/@sudocode-ai\/.*/],
27
27
  },
28
28
  },
@@ -20,7 +20,7 @@ export default defineConfig({
20
20
  fileParallelism: false,
21
21
  server: {
22
22
  deps: {
23
- // Force inline the sudocode packages to avoid Node.js type stripping issues
23
+ // Force inline external packages to avoid Node.js type stripping issues
24
24
  inline: [/@sudocode-ai\/.*/],
25
25
  },
26
26
  },