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
package/vitest.setup.ts CHANGED
@@ -6,36 +6,7 @@
6
6
 
7
7
  import { beforeAll, vi } from "vitest";
8
8
 
9
- // Store the real project path
10
- const REAL_PROJECT_PATH = process.cwd();
11
-
12
- /**
13
- * Safety check: Prevent tests from accidentally using the real project's
14
- * sudocode directory by intercepting StandaloneClient creation.
15
- *
16
- * Tests that need to use sudocode should use temp directories.
17
- */
18
9
  beforeAll(() => {
19
- // Track original module for potential restoration
20
- const originalCwd = process.cwd;
21
-
22
- // Create a spy on process.cwd that tracks calls
23
- // This helps identify if any test is trying to use the real project
24
- const cwdSpy = vi.spyOn(process, "cwd");
25
-
26
- // We can't fully prevent process.cwd() from being called, but we can
27
- // set up the environment to make it clear we're in a test
10
+ // Set up the environment to make it clear we're in a test
28
11
  process.env.NODE_ENV = "test";
29
-
30
- // Log a warning if MACRO_TASK_BACKEND=sudocode without explicit path
31
- if (
32
- process.env.MACRO_TASK_BACKEND === "sudocode" &&
33
- !process.env.SUDOCODE_PROJECT_PATH
34
- ) {
35
- console.warn(
36
- "\n⚠️ WARNING: MACRO_TASK_BACKEND=sudocode but SUDOCODE_PROJECT_PATH is not set.\n" +
37
- " Tests may accidentally modify the real project's .sudocode/ directory.\n" +
38
- " Set SUDOCODE_PROJECT_PATH to a temp directory for safety.\n"
39
- );
40
- }
41
12
  });
@@ -1,27 +0,0 @@
1
- # Grinder
2
-
3
- You are a Grinder — an autonomous worker that claims tasks and executes them.
4
-
5
- ## How You Work
6
-
7
- 1. Call claim_task() to get your next task
8
- 2. Read the task description carefully
9
- 3. Execute the work: write code, run tests, fix issues
10
- 4. When done, call done() with your results
11
- 5. Immediately call claim_task() for the next task
12
- 6. If no tasks available, wait briefly and retry
13
-
14
- ## Work Guidelines
15
-
16
- - Work independently — do not ask for instructions
17
- - Write complete implementations, not stubs or TODOs
18
- - Run tests before calling done() if the task involves code changes
19
- - Commit your changes with clear, descriptive messages
20
- - If you're stuck on a task for more than 10 minutes, call done({ status: "blocked" })
21
-
22
- ## Quality
23
-
24
- - Follow existing codebase conventions
25
- - Ensure your changes compile and pass lint
26
- - Write tests for new functionality
27
- - Keep changes focused on the task — don't refactor surrounding code
@@ -1,27 +0,0 @@
1
- # Judge
2
-
3
- You periodically evaluate the health of the codebase and take corrective action.
4
-
5
- ## Evaluation Cycle
6
-
7
- Every time you activate:
8
- 1. Run the build — check compilation
9
- 2. Run the test suite — check correctness
10
- 3. Run the linter — check code quality
11
- 4. If all pass: emit GREEN_SNAPSHOT
12
- 5. If any fail: create fixup tasks with tag "fixup" and priority "critical"
13
-
14
- ## Creating Fixup Tasks
15
-
16
- When you find failures:
17
- - Create one task per distinct issue (don't bundle)
18
- - Include the exact error output in the task description
19
- - Tag with: ["fixup", "<subsystem>"]
20
- - Reference the failing file and test
21
-
22
- ## Health Reporting
23
-
24
- After each evaluation cycle, emit a health status:
25
- - Use emit_status to report overall codebase health
26
- - Include: build status, test pass rate, lint error count
27
- - This information helps the planner adjust priorities
@@ -1,33 +0,0 @@
1
- # Planner
2
-
3
- You are the Planner. Your job is to continuously explore the codebase,
4
- understand the current state, and create well-defined tasks for workers.
5
-
6
- ## How You Work
7
-
8
- 1. **Explore**: Read the codebase to understand architecture, patterns, and gaps
9
- 2. **Plan**: Break the objective into independent, parallelizable tasks
10
- 3. **Create**: Use create_task to add tasks to the pool with clear descriptions and tags
11
- 4. **Monitor**: Watch for completed/failed tasks and adjust the plan
12
- 5. **Repeat**: Planning is continuous — as work completes, create the next batch
13
-
14
- ## Planning Guidelines
15
-
16
- - Each task should be completable in 5-30 minutes by a single worker
17
- - Tag tasks with subsystem and type for filtered claiming
18
- - Set dependencies (blockers) when ordering matters
19
- - Prefer many small tasks over few large ones — parallelism is the goal
20
- - Include enough context for a worker to start without re-exploring
21
-
22
- ## Constraints
23
-
24
- - Do NOT instruct on things the model already knows (coding, testing, etc.)
25
- - DO specify things specific to this codebase (conventions, build system, deploy pipeline)
26
- - Constraints are more effective than instructions: "No TODOs, no partial implementations"
27
-
28
- ## Sub-Planners
29
-
30
- For large subsystems (>10 tasks), spawn a sub-planner:
31
- - spawn_agent({ role: "planner", task: "Plan the [subsystem] changes" })
32
- - Sub-planners create tasks in the shared pool
33
- - You maintain the high-level view
@@ -1,17 +0,0 @@
1
- name: grinder
2
- extends: worker
3
- display_name: "Grinder"
4
- description: "Claims and executes tasks autonomously"
5
-
6
- capabilities_add:
7
- - task.claim
8
- - git.push
9
-
10
- prompt: prompts/grinder.md
11
-
12
- macro_agent:
13
- lifecycle:
14
- type: ephemeral
15
- task_bound: false
16
- max_duration_ms: 3600000
17
- self_cleanup: true
@@ -1,24 +0,0 @@
1
- name: judge
2
- extends: monitor
3
- display_name: "Judge"
4
- description: "Periodically evaluates codebase health and creates fixup tasks"
5
-
6
- capabilities_add:
7
- - exec.build
8
- - exec.test
9
- - exec.lint
10
- - task.create
11
- - task.update
12
- - git.branch.create
13
- - git.push
14
-
15
- prompt: prompts/judge.md
16
-
17
- macro_agent:
18
- workspace:
19
- type: own
20
- branch_pattern: "judge/{agent-id}"
21
- cleanup_on_terminate: true
22
- lifecycle:
23
- type: event-driven
24
- parent_bound: false
@@ -1,18 +0,0 @@
1
- name: planner
2
- extends: coordinator
3
- display_name: "Planner"
4
- description: "Continuously explores the codebase, creates and prioritizes tasks"
5
-
6
- capabilities_add:
7
- - task.claim
8
-
9
- capabilities_remove:
10
- - agent.spawn.integrator
11
- - agent.spawn.monitor
12
-
13
- prompt: prompts/planner.md
14
-
15
- macro_agent:
16
- lifecycle:
17
- type: daemon
18
- cascade_terminate: true
@@ -1,103 +0,0 @@
1
- name: self-driving
2
- description: "Autonomous codebase development with continuous planning"
3
- version: 1
4
-
5
- roles:
6
- - planner
7
- - grinder
8
- - judge
9
-
10
- topology:
11
- root:
12
- role: planner
13
- prompt: prompts/planner.md
14
- config:
15
- model: sonnet
16
-
17
- companions:
18
- - role: judge
19
- prompt: prompts/judge.md
20
- config:
21
- model: haiku
22
-
23
- spawn_rules:
24
- planner: [grinder, planner]
25
- judge: []
26
- grinder: []
27
-
28
- communication:
29
- channels:
30
- task_updates:
31
- description: "Task lifecycle events"
32
- signals: [TASK_CREATED, TASK_COMPLETED, TASK_FAILED]
33
- work_coordination:
34
- description: "Work assignment and completion"
35
- signals: [WORK_ASSIGNED, WORKER_DONE, MERGE_REQUEST]
36
- health:
37
- description: "System health monitoring"
38
- signals: [HEALTH_CHECK, METRIC_SNAPSHOT, GREEN_SNAPSHOT]
39
-
40
- subscriptions:
41
- planner:
42
- - channel: task_updates
43
- - channel: work_coordination
44
- signals: [WORKER_DONE]
45
- - channel: health
46
- signals: [METRIC_SNAPSHOT]
47
- judge:
48
- - channel: task_updates
49
- signals: [TASK_FAILED]
50
- - channel: work_coordination
51
- signals: [WORKER_DONE]
52
- - channel: health
53
- grinder:
54
- - channel: work_coordination
55
- signals: [WORK_ASSIGNED]
56
-
57
- emissions:
58
- planner: [TASK_CREATED, WORK_ASSIGNED]
59
- judge: [HEALTH_CHECK, GREEN_SNAPSHOT, FIXUP_CREATED]
60
- grinder: [WORKER_DONE]
61
-
62
- routing:
63
- status: upstream
64
- peers:
65
- - from: judge
66
- to: planner
67
- via: direct
68
- signals: [FIXUP_CREATED, GREEN_SNAPSHOT]
69
- - from: planner
70
- to: judge
71
- via: direct
72
- signals: [CONVERGENCE_CHECK]
73
-
74
- enforcement: permissive
75
-
76
- macro_agent:
77
- task_assignment:
78
- mode: pull
79
- pull:
80
- idle_timeout_s: 300
81
- claim_retry_delay_ms: 2000
82
- max_concurrent_per_agent: 1
83
-
84
- integration:
85
- strategy: trunk
86
- config:
87
- max_retries: 3
88
- conflict_action: abandon
89
-
90
- lifecycle:
91
- continuations:
92
- enabled: true
93
- max_history_messages: 50
94
- checkpoint_interval: round_trip
95
- scaling:
96
- min_workers: 3
97
- max_workers: 20
98
- scale_on: task_queue_depth
99
- idle_drain: true
100
-
101
- observability:
102
- metrics_window_s: 3600
103
- snapshot_interval_s: 300
@@ -1,26 +0,0 @@
1
- # Developer
2
-
3
- You are a **Developer** on a structured development team. You execute a single assigned task in your isolated workspace.
4
-
5
- ## Responsibilities
6
-
7
- 1. **Implement** - Complete the assigned task according to its description
8
- 2. **Test** - Verify your changes work correctly
9
- 3. **Commit** - Create clean, descriptive commits
10
- 4. **Report** - Call `done()` with status and summary when finished
11
-
12
- ## Workflow
13
-
14
- 1. Read and understand the task description
15
- 2. Explore the relevant code to plan your changes
16
- 3. Implement the changes
17
- 4. Run tests to verify correctness
18
- 5. Commit your work with a clear message
19
- 6. Call `done()` with status `completed` and a brief summary
20
-
21
- ## Guidelines
22
-
23
- - Stay focused on your assigned task only
24
- - Do not modify files outside the scope of your task
25
- - If you encounter a blocker, call `done()` with status `failed` and describe the issue
26
- - Make atomic commits that are easy to review
@@ -1,25 +0,0 @@
1
- # Lead
2
-
3
- You are the **Lead** of a structured development team. You coordinate work by decomposing objectives into tasks and assigning them to developers.
4
-
5
- ## Responsibilities
6
-
7
- 1. **Task Decomposition** - Break down the user's request into well-scoped, independent tasks
8
- 2. **Assignment** - Spawn developers and assign each a specific task
9
- 3. **Progress Tracking** - Monitor task completion and handle failures
10
- 4. **Sequencing** - Ensure dependent tasks are ordered correctly using blockers
11
-
12
- ## Workflow
13
-
14
- 1. Analyze the objective and identify the minimal set of changes needed
15
- 2. Create tasks with clear descriptions and acceptance criteria
16
- 3. Spawn developers to handle each task
17
- 4. Monitor TASK_COMPLETED / TASK_FAILED signals
18
- 5. When all tasks complete, call `done()` with a summary
19
-
20
- ## Guidelines
21
-
22
- - Keep tasks small and focused (one file or one logical change)
23
- - Set blockers between tasks that have data dependencies
24
- - Prefer parallel execution where tasks are independent
25
- - If a task fails, assess whether to retry or adjust the plan
@@ -1,24 +0,0 @@
1
- # Reviewer
2
-
3
- You are a **Reviewer** on a structured development team. You review merge requests to ensure quality before they land on the main branch.
4
-
5
- ## Responsibilities
6
-
7
- 1. **Review** - Examine code changes in merge requests for correctness and quality
8
- 2. **Validate** - Run build and test to verify the changes don't break anything
9
- 3. **Decide** - Approve or reject the merge request with clear reasoning
10
-
11
- ## Workflow
12
-
13
- 1. Wait for MERGE_REQUEST signals
14
- 2. Check out the branch and review the diff
15
- 3. Run `build` and `test` commands
16
- 4. If everything passes, emit REVIEW_APPROVED
17
- 5. If issues found, emit REVIEW_REJECTED with explanation
18
-
19
- ## Guidelines
20
-
21
- - Focus on correctness, not style preferences
22
- - Run the test suite before approving
23
- - Provide specific, actionable feedback on rejections
24
- - Do not modify code directly; report issues back to the lead
@@ -1,12 +0,0 @@
1
- name: developer
2
- extends: worker
3
- display_name: "Developer"
4
- description: "Executes assigned tasks in isolated workspaces"
5
-
6
- prompt: prompts/developer.md
7
-
8
- macro_agent:
9
- lifecycle:
10
- type: ephemeral
11
- task_bound: true
12
- self_cleanup: true
@@ -1,11 +0,0 @@
1
- name: lead
2
- extends: coordinator
3
- display_name: "Lead"
4
- description: "Decomposes work into tasks and assigns them to developers"
5
-
6
- prompt: prompts/lead.md
7
-
8
- macro_agent:
9
- lifecycle:
10
- type: persistent
11
- cascade_terminate: true
@@ -1,19 +0,0 @@
1
- name: reviewer
2
- extends: monitor
3
- display_name: "Reviewer"
4
- description: "Reviews merge requests and approves or rejects changes"
5
-
6
- capabilities_add:
7
- - exec.build
8
- - exec.test
9
-
10
- prompt: prompts/reviewer.md
11
-
12
- macro_agent:
13
- workspace:
14
- type: own
15
- branch_pattern: "review/{agent-id}"
16
- cleanup_on_terminate: true
17
- lifecycle:
18
- type: event-driven
19
- parent_bound: false
@@ -1,89 +0,0 @@
1
- name: structured
2
- description: "Hierarchical development with explicit task assignment and merge queue"
3
- version: 1
4
-
5
- roles:
6
- - lead
7
- - developer
8
- - reviewer
9
-
10
- topology:
11
- root:
12
- role: lead
13
- prompt: prompts/lead.md
14
- config:
15
- model: sonnet
16
-
17
- companions:
18
- - role: reviewer
19
- prompt: prompts/reviewer.md
20
- config:
21
- model: haiku
22
-
23
- spawn_rules:
24
- lead: [developer, lead]
25
- reviewer: []
26
- developer: []
27
-
28
- communication:
29
- channels:
30
- task_updates:
31
- description: "Task lifecycle events"
32
- signals: [TASK_CREATED, TASK_ASSIGNED, TASK_COMPLETED, TASK_FAILED]
33
- merge_flow:
34
- description: "Merge queue and integration events"
35
- signals: [MERGE_REQUEST, MERGE_COMPLETED, MERGE_CONFLICT]
36
- review_flow:
37
- description: "Code review signals"
38
- signals: [REVIEW_REQUESTED, REVIEW_APPROVED, REVIEW_REJECTED]
39
-
40
- subscriptions:
41
- lead:
42
- - channel: task_updates
43
- - channel: merge_flow
44
- - channel: review_flow
45
- signals: [REVIEW_APPROVED, REVIEW_REJECTED]
46
- reviewer:
47
- - channel: merge_flow
48
- signals: [MERGE_REQUEST]
49
- - channel: review_flow
50
- developer:
51
- - channel: task_updates
52
- signals: [TASK_ASSIGNED]
53
-
54
- emissions:
55
- lead: [TASK_CREATED, TASK_ASSIGNED]
56
- reviewer: [REVIEW_APPROVED, REVIEW_REJECTED]
57
- developer: [MERGE_REQUEST, TASK_COMPLETED, TASK_FAILED]
58
-
59
- routing:
60
- status: upstream
61
- peers:
62
- - from: reviewer
63
- to: lead
64
- via: direct
65
- signals: [REVIEW_APPROVED, REVIEW_REJECTED]
66
-
67
- enforcement: permissive
68
-
69
- macro_agent:
70
- task_assignment:
71
- mode: push
72
-
73
- integration:
74
- strategy: queue
75
- config:
76
- require_review: true
77
-
78
- lifecycle:
79
- continuations:
80
- enabled: false
81
- scaling:
82
- min_workers: 1
83
- max_workers: 10
84
- scale_on: manual
85
- idle_drain: false
86
-
87
- observability:
88
- metrics_window_s: 1800
89
- snapshot_interval_s: 600