macro-agent 0.1.8 → 0.1.11

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 (306) hide show
  1. package/CLAUDE.md +263 -33
  2. package/README.md +781 -131
  3. package/dist/acp/claude-code-replay.d.ts +11 -0
  4. package/dist/acp/claude-code-replay.d.ts.map +1 -0
  5. package/dist/acp/claude-code-replay.js +190 -0
  6. package/dist/acp/claude-code-replay.js.map +1 -0
  7. package/dist/acp/macro-agent.d.ts.map +1 -1
  8. package/dist/acp/macro-agent.js +192 -7
  9. package/dist/acp/macro-agent.js.map +1 -1
  10. package/dist/acp/types.d.ts +9 -0
  11. package/dist/acp/types.d.ts.map +1 -1
  12. package/dist/acp/types.js.map +1 -1
  13. package/dist/adapters/tasks-adapter.d.ts.map +1 -1
  14. package/dist/adapters/tasks-adapter.js +3 -0
  15. package/dist/adapters/tasks-adapter.js.map +1 -1
  16. package/dist/adapters/types.d.ts +1 -0
  17. package/dist/adapters/types.d.ts.map +1 -1
  18. package/dist/agent/agent-manager-v2.d.ts +21 -0
  19. package/dist/agent/agent-manager-v2.d.ts.map +1 -1
  20. package/dist/agent/agent-manager-v2.js +308 -54
  21. package/dist/agent/agent-manager-v2.js.map +1 -1
  22. package/dist/agent/agent-manager.d.ts +12 -0
  23. package/dist/agent/agent-manager.d.ts.map +1 -1
  24. package/dist/agent/agent-manager.js.map +1 -1
  25. package/dist/agent/agent-store.d.ts +10 -0
  26. package/dist/agent/agent-store.d.ts.map +1 -1
  27. package/dist/agent/agent-store.js +22 -0
  28. package/dist/agent/agent-store.js.map +1 -1
  29. package/dist/agent/types.d.ts +15 -2
  30. package/dist/agent/types.d.ts.map +1 -1
  31. package/dist/agent/types.js.map +1 -1
  32. package/dist/boot-v2.d.ts +129 -1
  33. package/dist/boot-v2.d.ts.map +1 -1
  34. package/dist/boot-v2.js +359 -8
  35. package/dist/boot-v2.js.map +1 -1
  36. package/dist/cli/acp.js +4 -0
  37. package/dist/cli/acp.js.map +1 -1
  38. package/dist/cli/index.js +56 -0
  39. package/dist/cli/index.js.map +1 -1
  40. package/dist/cognitive/macro-agent-backend.d.ts.map +1 -1
  41. package/dist/cognitive/macro-agent-backend.js +40 -22
  42. package/dist/cognitive/macro-agent-backend.js.map +1 -1
  43. package/dist/integrations/skilltree.d.ts.map +1 -1
  44. package/dist/integrations/skilltree.js +1 -0
  45. package/dist/integrations/skilltree.js.map +1 -1
  46. package/dist/lifecycle/cascade.d.ts +25 -2
  47. package/dist/lifecycle/cascade.d.ts.map +1 -1
  48. package/dist/lifecycle/cascade.js +70 -2
  49. package/dist/lifecycle/cascade.js.map +1 -1
  50. package/dist/lifecycle/cleanup.d.ts +33 -2
  51. package/dist/lifecycle/cleanup.d.ts.map +1 -1
  52. package/dist/lifecycle/cleanup.js +28 -6
  53. package/dist/lifecycle/cleanup.js.map +1 -1
  54. package/dist/lifecycle/handlers-v2.d.ts +7 -0
  55. package/dist/lifecycle/handlers-v2.d.ts.map +1 -1
  56. package/dist/lifecycle/handlers-v2.js +28 -2
  57. package/dist/lifecycle/handlers-v2.js.map +1 -1
  58. package/dist/lifecycle/types.d.ts +11 -0
  59. package/dist/lifecycle/types.d.ts.map +1 -1
  60. package/dist/lifecycle/types.js.map +1 -1
  61. package/dist/map/acp-bridge.d.ts +9 -0
  62. package/dist/map/acp-bridge.d.ts.map +1 -1
  63. package/dist/map/acp-bridge.js +15 -2
  64. package/dist/map/acp-bridge.js.map +1 -1
  65. package/dist/map/cascade-action-handler.d.ts +24 -0
  66. package/dist/map/cascade-action-handler.d.ts.map +1 -0
  67. package/dist/map/cascade-action-handler.js +170 -0
  68. package/dist/map/cascade-action-handler.js.map +1 -0
  69. package/dist/map/cascade-bridge.d.ts +44 -0
  70. package/dist/map/cascade-bridge.d.ts.map +1 -0
  71. package/dist/map/cascade-bridge.js +294 -0
  72. package/dist/map/cascade-bridge.js.map +1 -0
  73. package/dist/map/coordination-handler.d.ts.map +1 -1
  74. package/dist/map/coordination-handler.js +12 -1
  75. package/dist/map/coordination-handler.js.map +1 -1
  76. package/dist/map/lifecycle-bridge.d.ts +1 -1
  77. package/dist/map/lifecycle-bridge.d.ts.map +1 -1
  78. package/dist/map/lifecycle-bridge.js +58 -23
  79. package/dist/map/lifecycle-bridge.js.map +1 -1
  80. package/dist/map/server.d.ts.map +1 -1
  81. package/dist/map/server.js +219 -7
  82. package/dist/map/server.js.map +1 -1
  83. package/dist/map/sidecar.d.ts.map +1 -1
  84. package/dist/map/sidecar.js +49 -2
  85. package/dist/map/sidecar.js.map +1 -1
  86. package/dist/map/types.d.ts +22 -0
  87. package/dist/map/types.d.ts.map +1 -1
  88. package/dist/mcp/tools/done-v2.d.ts.map +1 -1
  89. package/dist/mcp/tools/done-v2.js +8 -0
  90. package/dist/mcp/tools/done-v2.js.map +1 -1
  91. package/dist/teams/team-manager-v2.d.ts.map +1 -1
  92. package/dist/teams/team-manager-v2.js +26 -0
  93. package/dist/teams/team-manager-v2.js.map +1 -1
  94. package/dist/teams/team-runtime-v2.d.ts.map +1 -1
  95. package/dist/teams/team-runtime-v2.js +16 -3
  96. package/dist/teams/team-runtime-v2.js.map +1 -1
  97. package/dist/workspace/config.d.ts +10 -10
  98. package/dist/workspace/config.d.ts.map +1 -1
  99. package/dist/workspace/config.js +4 -4
  100. package/dist/workspace/config.js.map +1 -1
  101. package/dist/workspace/git-cascade-adapter.d.ts +510 -0
  102. package/dist/workspace/git-cascade-adapter.d.ts.map +1 -0
  103. package/dist/workspace/git-cascade-adapter.js +934 -0
  104. package/dist/workspace/git-cascade-adapter.js.map +1 -0
  105. package/dist/workspace/index.d.ts +3 -3
  106. package/dist/workspace/index.d.ts.map +1 -1
  107. package/dist/workspace/index.js +4 -4
  108. package/dist/workspace/index.js.map +1 -1
  109. package/dist/workspace/landing/direct-push.d.ts +20 -0
  110. package/dist/workspace/landing/direct-push.d.ts.map +1 -0
  111. package/dist/workspace/landing/direct-push.js +74 -0
  112. package/dist/workspace/landing/direct-push.js.map +1 -0
  113. package/dist/workspace/landing/index.d.ts +29 -0
  114. package/dist/workspace/landing/index.d.ts.map +1 -0
  115. package/dist/workspace/landing/index.js +37 -0
  116. package/dist/workspace/landing/index.js.map +1 -0
  117. package/dist/workspace/landing/merge-to-parent.d.ts +41 -0
  118. package/dist/workspace/landing/merge-to-parent.d.ts.map +1 -0
  119. package/dist/workspace/landing/merge-to-parent.js +186 -0
  120. package/dist/workspace/landing/merge-to-parent.js.map +1 -0
  121. package/dist/workspace/landing/optimistic-push.d.ts +16 -0
  122. package/dist/workspace/landing/optimistic-push.d.ts.map +1 -0
  123. package/dist/workspace/landing/optimistic-push.js +27 -0
  124. package/dist/workspace/landing/optimistic-push.js.map +1 -0
  125. package/dist/workspace/landing/queue-to-branch.d.ts +24 -0
  126. package/dist/workspace/landing/queue-to-branch.d.ts.map +1 -0
  127. package/dist/workspace/landing/queue-to-branch.js +79 -0
  128. package/dist/workspace/landing/queue-to-branch.js.map +1 -0
  129. package/dist/workspace/merge-queue/merge-queue.d.ts +10 -0
  130. package/dist/workspace/merge-queue/merge-queue.d.ts.map +1 -1
  131. package/dist/workspace/merge-queue/merge-queue.js +10 -0
  132. package/dist/workspace/merge-queue/merge-queue.js.map +1 -1
  133. package/dist/workspace/merge-queue/types.d.ts +16 -2
  134. package/dist/workspace/merge-queue/types.d.ts.map +1 -1
  135. package/dist/workspace/merge-queue/types.js +9 -0
  136. package/dist/workspace/merge-queue/types.js.map +1 -1
  137. package/dist/workspace/pool/types.d.ts +1 -0
  138. package/dist/workspace/pool/types.d.ts.map +1 -1
  139. package/dist/workspace/pool/worktree-pool.d.ts.map +1 -1
  140. package/dist/workspace/pool/worktree-pool.js +1 -0
  141. package/dist/workspace/pool/worktree-pool.js.map +1 -1
  142. package/dist/workspace/recovery/abandon.d.ts +15 -0
  143. package/dist/workspace/recovery/abandon.d.ts.map +1 -0
  144. package/dist/workspace/recovery/abandon.js +45 -0
  145. package/dist/workspace/recovery/abandon.js.map +1 -0
  146. package/dist/workspace/recovery/auto-resolve.d.ts +27 -0
  147. package/dist/workspace/recovery/auto-resolve.d.ts.map +1 -0
  148. package/dist/workspace/recovery/auto-resolve.js +99 -0
  149. package/dist/workspace/recovery/auto-resolve.js.map +1 -0
  150. package/dist/workspace/recovery/defer.d.ts +15 -0
  151. package/dist/workspace/recovery/defer.d.ts.map +1 -0
  152. package/dist/workspace/recovery/defer.js +16 -0
  153. package/dist/workspace/recovery/defer.js.map +1 -0
  154. package/dist/workspace/recovery/escalate.d.ts +16 -0
  155. package/dist/workspace/recovery/escalate.d.ts.map +1 -0
  156. package/dist/workspace/recovery/escalate.js +24 -0
  157. package/dist/workspace/recovery/escalate.js.map +1 -0
  158. package/dist/workspace/recovery/index.d.ts +32 -0
  159. package/dist/workspace/recovery/index.d.ts.map +1 -0
  160. package/dist/workspace/recovery/index.js +45 -0
  161. package/dist/workspace/recovery/index.js.map +1 -0
  162. package/dist/workspace/recovery/spawn-resolver.d.ts +45 -0
  163. package/dist/workspace/recovery/spawn-resolver.d.ts.map +1 -0
  164. package/dist/workspace/recovery/spawn-resolver.js +118 -0
  165. package/dist/workspace/recovery/spawn-resolver.js.map +1 -0
  166. package/dist/workspace/recovery/types.d.ts +63 -0
  167. package/dist/workspace/recovery/types.d.ts.map +1 -0
  168. package/dist/workspace/recovery/types.js +12 -0
  169. package/dist/workspace/recovery/types.js.map +1 -0
  170. package/dist/workspace/topology/index.d.ts +9 -0
  171. package/dist/workspace/topology/index.d.ts.map +1 -0
  172. package/dist/workspace/topology/index.js +8 -0
  173. package/dist/workspace/topology/index.js.map +1 -0
  174. package/dist/workspace/topology/no-workspace.d.ts +18 -0
  175. package/dist/workspace/topology/no-workspace.d.ts.map +1 -0
  176. package/dist/workspace/topology/no-workspace.js +25 -0
  177. package/dist/workspace/topology/no-workspace.js.map +1 -0
  178. package/dist/workspace/topology/types.d.ts +97 -0
  179. package/dist/workspace/topology/types.d.ts.map +1 -0
  180. package/dist/workspace/topology/types.js +20 -0
  181. package/dist/workspace/topology/types.js.map +1 -0
  182. package/dist/workspace/topology/yaml-driven.d.ts +69 -0
  183. package/dist/workspace/topology/yaml-driven.d.ts.map +1 -0
  184. package/dist/workspace/topology/yaml-driven.js +273 -0
  185. package/dist/workspace/topology/yaml-driven.js.map +1 -0
  186. package/dist/workspace/types-v3.d.ts +117 -0
  187. package/dist/workspace/types-v3.d.ts.map +1 -0
  188. package/dist/workspace/types-v3.js +20 -0
  189. package/dist/workspace/types-v3.js.map +1 -0
  190. package/dist/workspace/types.d.ts +162 -17
  191. package/dist/workspace/types.d.ts.map +1 -1
  192. package/dist/workspace/workspace-manager.d.ts +101 -13
  193. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  194. package/dist/workspace/workspace-manager.js +416 -13
  195. package/dist/workspace/workspace-manager.js.map +1 -1
  196. package/dist/workspace/yaml-schema.d.ts +254 -0
  197. package/dist/workspace/yaml-schema.d.ts.map +1 -0
  198. package/dist/workspace/yaml-schema.js +170 -0
  199. package/dist/workspace/yaml-schema.js.map +1 -0
  200. package/docs/conflict-recovery.md +472 -0
  201. package/docs/design/task-dispatcher.md +880 -0
  202. package/docs/git-cascade-integration-gaps.md +678 -0
  203. package/docs/workspace-interfaces.md +731 -0
  204. package/docs/workspace-redesign-plan.md +302 -0
  205. package/package.json +6 -5
  206. package/src/__tests__/boot-v2.test.ts +435 -0
  207. package/src/__tests__/e2e/acp-over-map.e2e.test.ts +92 -0
  208. package/src/__tests__/e2e/auto-sync.e2e.test.ts +257 -0
  209. package/src/__tests__/e2e/bootstrap.e2e.test.ts +319 -0
  210. package/src/__tests__/e2e/cascade-rebase.e2e.test.ts +254 -0
  211. package/src/__tests__/e2e/cli-run.e2e.test.ts +167 -0
  212. package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +495 -0
  213. package/src/__tests__/e2e/dispatch-live.e2e.test.ts +564 -0
  214. package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +496 -0
  215. package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +456 -0
  216. package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +386 -0
  217. package/src/__tests__/e2e/dispatch.e2e.test.ts +376 -0
  218. package/src/__tests__/e2e/self-driving-v3.e2e.test.ts +197 -0
  219. package/src/__tests__/e2e/spawn-resolver.e2e.test.ts +200 -0
  220. package/src/__tests__/e2e/workspace-lifecycle.e2e.test.ts +30 -22
  221. package/src/__tests__/e2e/workspace-v3.e2e.test.ts +413 -0
  222. package/src/acp/__tests__/claude-code-replay.test.ts +225 -0
  223. package/src/acp/__tests__/macro-agent.test.ts +39 -1
  224. package/src/acp/claude-code-replay.ts +208 -0
  225. package/src/acp/macro-agent.ts +203 -10
  226. package/src/acp/types.ts +10 -0
  227. package/src/adapters/__tests__/tasks-adapter.test.ts +1 -0
  228. package/src/adapters/tasks-adapter.ts +3 -0
  229. package/src/adapters/types.ts +1 -0
  230. package/src/agent/__tests__/agent-manager-topology.test.ts +73 -0
  231. package/src/agent/__tests__/agent-manager-v2.test.ts +66 -0
  232. package/src/agent/__tests__/agent-store.test.ts +52 -0
  233. package/src/agent/__tests__/task-ref-resolution.test.ts +231 -0
  234. package/src/agent/agent-manager-v2.ts +372 -59
  235. package/src/agent/agent-manager.ts +14 -0
  236. package/src/agent/agent-store.ts +24 -0
  237. package/src/agent/types.ts +16 -2
  238. package/src/boot-v2.ts +589 -35
  239. package/src/cli/acp.ts +4 -0
  240. package/src/cli/index.ts +61 -0
  241. package/src/cognitive/macro-agent-backend.ts +45 -29
  242. package/src/integrations/skilltree.ts +1 -0
  243. package/src/lifecycle/__tests__/cascade-consolidation.test.ts +240 -0
  244. package/src/lifecycle/cascade.ts +77 -2
  245. package/src/lifecycle/cleanup.ts +52 -3
  246. package/src/lifecycle/handlers-v2.ts +40 -3
  247. package/src/lifecycle/types.ts +12 -0
  248. package/src/map/__tests__/cascade-bridge.test.ts +229 -0
  249. package/src/map/__tests__/emit-event.test.ts +71 -0
  250. package/src/map/__tests__/lifecycle-bridge.test.ts +86 -10
  251. package/src/map/acp-bridge.ts +26 -3
  252. package/src/map/cascade-action-handler.ts +205 -0
  253. package/src/map/cascade-bridge.ts +339 -0
  254. package/src/map/coordination-handler.ts +13 -1
  255. package/src/map/lifecycle-bridge.ts +52 -17
  256. package/src/map/server.ts +225 -7
  257. package/src/map/sidecar.ts +48 -1
  258. package/src/map/types.ts +23 -0
  259. package/src/mcp/tools/done-v2.ts +9 -0
  260. package/src/teams/team-manager-v2.ts +37 -0
  261. package/src/teams/team-runtime-v2.ts +23 -3
  262. package/src/workspace/__tests__/{dataplane-adapter.test.ts → git-cascade-adapter.test.ts} +209 -14
  263. package/src/workspace/__tests__/land-dispatch.test.ts +214 -0
  264. package/src/workspace/__tests__/self-driving-yaml.test.ts +114 -0
  265. package/src/workspace/__tests__/shared-worktree-refcount.test.ts +154 -0
  266. package/src/workspace/__tests__/standalone-mode.test.ts +118 -0
  267. package/src/workspace/__tests__/workspace-manager-v3.test.ts +245 -0
  268. package/src/workspace/__tests__/yaml-schema.test.ts +210 -0
  269. package/src/workspace/config.ts +11 -11
  270. package/src/workspace/git-cascade-adapter.ts +1213 -0
  271. package/src/workspace/index.ts +11 -11
  272. package/src/workspace/landing/__tests__/strategies.test.ts +184 -0
  273. package/src/workspace/landing/direct-push.ts +91 -0
  274. package/src/workspace/landing/index.ts +40 -0
  275. package/src/workspace/landing/merge-to-parent.ts +229 -0
  276. package/src/workspace/landing/optimistic-push.ts +36 -0
  277. package/src/workspace/landing/queue-to-branch.ts +108 -0
  278. package/src/workspace/merge-queue/merge-queue.ts +10 -0
  279. package/src/workspace/merge-queue/types.ts +16 -2
  280. package/src/workspace/pool/__tests__/worktree-pool.integration.test.ts +5 -5
  281. package/src/workspace/pool/types.ts +1 -0
  282. package/src/workspace/pool/worktree-pool.ts +1 -0
  283. package/src/workspace/recovery/__tests__/auto-resolve-integration.test.ts +127 -0
  284. package/src/workspace/recovery/__tests__/spawn-resolver.test.ts +139 -0
  285. package/src/workspace/recovery/__tests__/strategies.test.ts +145 -0
  286. package/src/workspace/recovery/abandon.ts +51 -0
  287. package/src/workspace/recovery/auto-resolve.ts +119 -0
  288. package/src/workspace/recovery/defer.ts +23 -0
  289. package/src/workspace/recovery/escalate.ts +30 -0
  290. package/src/workspace/recovery/index.ts +58 -0
  291. package/src/workspace/recovery/spawn-resolver.ts +152 -0
  292. package/src/workspace/recovery/types.ts +54 -0
  293. package/src/workspace/topology/__tests__/yaml-driven.test.ts +345 -0
  294. package/src/workspace/topology/index.ts +18 -0
  295. package/src/workspace/topology/no-workspace.ts +39 -0
  296. package/src/workspace/topology/types.ts +116 -0
  297. package/src/workspace/topology/yaml-driven.ts +316 -0
  298. package/src/workspace/types-v3.ts +162 -0
  299. package/src/workspace/types.ts +211 -20
  300. package/src/workspace/workspace-manager.ts +533 -19
  301. package/src/workspace/yaml-schema.ts +216 -0
  302. package/dist/workspace/dataplane-adapter.d.ts +0 -260
  303. package/dist/workspace/dataplane-adapter.d.ts.map +0 -1
  304. package/dist/workspace/dataplane-adapter.js +0 -416
  305. package/dist/workspace/dataplane-adapter.js.map +0 -1
  306. package/src/workspace/dataplane-adapter.ts +0 -546
package/dist/boot-v2.js CHANGED
@@ -21,6 +21,7 @@
21
21
  import * as path from "path";
22
22
  import * as os from "os";
23
23
  import * as fs from "fs";
24
+ import * as crypto from "crypto";
24
25
  import { AgentStore } from "./agent/agent-store.js";
25
26
  import { DefaultInboxAdapter, } from "./adapters/inbox-adapter.js";
26
27
  import { DefaultTasksAdapter, } from "./adapters/tasks-adapter.js";
@@ -33,15 +34,61 @@ import { DefaultRoleRegistry } from "./roles/registry.js";
33
34
  // =============================================================================
34
35
  export async function bootV2(config = {}) {
35
36
  const cwd = config.cwd ?? process.cwd();
36
- const baseDir = config.baseDir ?? path.join(os.homedir(), ".macro-agent");
37
+ // Resolve the instance id with three-tier precedence so the on-disk layout
38
+ // stays meaningful across standalone, MAP-connected, and hosted runs:
39
+ //
40
+ // 1. Explicit `instanceId` — caller-chosen, human-readable.
41
+ // 2. `map.swarmId` — the MAP identity when the caller has pre-registered
42
+ // one. This ties macro-agent's local store to its hub identity, so a
43
+ // swarm with swarm_id=X always resumes its own state.
44
+ // 3. A stable hash of the resolved cwd — the last-resort fallback so two
45
+ // processes in different projects never collide on agents.db, inbox.db,
46
+ // or the control socket. Reruns in the same project reuse their store.
47
+ //
48
+ // Hosts that manage their own storage layout (e.g. openswarm spawning
49
+ // per-swarm instances under a unique data dir) still win by passing
50
+ // `baseDir` directly. Legacy `~/.macro-agent/*.db` from pre-instancing
51
+ // versions is left alone — new boots start fresh under their own subdir.
52
+ const instanceId = config.instanceId
53
+ ?? config.map?.swarmId
54
+ ?? ("inst_" + crypto.createHash("sha256").update(path.resolve(cwd)).digest("hex").slice(0, 12));
55
+ const baseDir = config.baseDir ?? path.join(os.homedir(), ".macro-agent", instanceId);
56
+ // Env-var bridge for hosts that pass through bootConfig with a fixed
57
+ // whitelist (e.g. openswarm). Translates MACRO_BOOTSTRAP_COORDINATOR /
58
+ // MACRO_BOOTSTRAP_CWD / MACRO_BOOTSTRAP_REHYDRATE into the structured
59
+ // bootstrap field if not already set programmatically. Programmatic
60
+ // config wins per field.
61
+ if (process.env.MACRO_BOOTSTRAP_COORDINATOR === "true" &&
62
+ !config.bootstrap?.coordinator) {
63
+ const envCwd = process.env.MACRO_BOOTSTRAP_CWD;
64
+ config = {
65
+ ...config,
66
+ bootstrap: {
67
+ ...(config.bootstrap ?? {}),
68
+ coordinator: envCwd ? { cwd: envCwd } : true,
69
+ },
70
+ };
71
+ }
72
+ const envRehydrate = process.env.MACRO_BOOTSTRAP_REHYDRATE;
73
+ if ((envRehydrate === "none" ||
74
+ envRehydrate === "coordinators" ||
75
+ envRehydrate === "all") &&
76
+ config.bootstrap?.rehydrate === undefined) {
77
+ config = {
78
+ ...config,
79
+ bootstrap: {
80
+ ...(config.bootstrap ?? {}),
81
+ rehydrate: envRehydrate,
82
+ },
83
+ };
84
+ }
37
85
  // Ensure base directory exists
38
86
  fs.mkdirSync(baseDir, { recursive: true });
39
87
  // 1. Agent Store (minimal SQLite)
40
88
  const agentStorePath = path.join(baseDir, "agents.db");
41
89
  const agentStore = new AgentStore(agentStorePath);
42
90
  // 2. Inbox Adapter (embedded agent-inbox, hybrid mode)
43
- const inboxSocketPath = config.inbox?.socketPath ??
44
- path.join(baseDir, "inbox.sock");
91
+ const inboxSocketPath = config.inbox?.socketPath ?? path.join(baseDir, "inbox.sock");
45
92
  const inboxSqlitePath = path.join(baseDir, "inbox.db");
46
93
  const inboxAdapter = new DefaultInboxAdapter({
47
94
  socketPath: inboxSocketPath,
@@ -84,6 +131,8 @@ export async function bootV2(config = {}) {
84
131
  serverUrl: config.serverUrl,
85
132
  serverToken: config.serverToken,
86
133
  controlSocketPath,
134
+ taskResourceId: config.cascade?.taskResourceId,
135
+ resolveTaskRef: config.cascade?.resolveTaskRef,
87
136
  });
88
137
  // 6. Federation (cross-instance communication)
89
138
  let federationCleanup = null;
@@ -103,7 +152,152 @@ export async function bootV2(config = {}) {
103
152
  },
104
153
  });
105
154
  await triggerSystem.start();
106
- // 7. Control Server (lifecycle RPC for MCP subprocesses)
155
+ // 7a. Task Dispatch (opt-in autonomous task dispatch mode)
156
+ let taskDispatcher = null;
157
+ if (config.dispatch?.enabled && tasksAdapter) {
158
+ const { createOrchestrator, createOpenTasksSource, createAgentInboxPort } = await import("swarm-dispatch");
159
+ const { getStableInstanceId } = await import("./cli/stable-instance-id.js");
160
+ const claimantId = `${os.hostname()}:${process.pid}:${getStableInstanceId(cwd)}`;
161
+ const dispatchAgentId = `dispatcher:${claimantId}`;
162
+ // Adapt opentasks client → DispatchTaskSource
163
+ const opentasksClient = tasksAdapter.client;
164
+ const source = opentasksClient
165
+ ? createOpenTasksSource(opentasksClient)
166
+ : {
167
+ // Fallback adapter when opentasks client is available via TasksAdapter methods
168
+ queryReady: async (opts) => tasksAdapter.queryReady(opts),
169
+ claim: async (taskId, claimantIdArg) => {
170
+ try {
171
+ await tasksAdapter.assignTask(taskId, claimantIdArg);
172
+ return { success: true };
173
+ }
174
+ catch {
175
+ return { success: false };
176
+ }
177
+ },
178
+ release: async (taskId) => tasksAdapter.unclaimTask(taskId),
179
+ transition: async (taskId, action) => tasksAdapter.transitionTask(taskId, action),
180
+ getTask: async (taskId) => tasksAdapter.getTask(taskId),
181
+ listInProgress: async () => tasksAdapter.listTasks({ status: "in_progress" }),
182
+ };
183
+ // Adapt AgentManagerV2 → DispatchAgentRuntime
184
+ const runtime = {
185
+ spawn: async (opts) => {
186
+ const spawned = await agentManager.spawn({
187
+ task: opts.prompt,
188
+ task_id: opts.taskId,
189
+ role: opts.role,
190
+ parent: null,
191
+ });
192
+ return { id: spawned.id };
193
+ },
194
+ terminate: async (agentId, reason) => {
195
+ await agentManager.terminate(agentId, (reason ?? "cancelled"));
196
+ },
197
+ onStopped: (callback) => agentManager.onLifecycleEvent((event) => {
198
+ if (event.type === "stopped") {
199
+ callback(event.agent.id, event.reason);
200
+ }
201
+ }),
202
+ };
203
+ // Phase 2: Wire MessagePort via agent-inbox for mail-based work routing
204
+ let messagePort;
205
+ if (config.dispatch.enableMailRouting !== false) {
206
+ const inbox = inboxAdapter.getInbox();
207
+ messagePort = createAgentInboxPort(inbox.router, inbox.events, {
208
+ dispatcherAgentId: dispatchAgentId,
209
+ classifyMessage: (msg) => {
210
+ // Classify inbox messages as dispatchable work when they carry
211
+ // the x-dispatch/work schema. Other messages are ignored.
212
+ const content = msg.content;
213
+ if (content?.schema !== "x-dispatch/work")
214
+ return null;
215
+ const data = content.data;
216
+ if (!data?.taskId)
217
+ return null;
218
+ return {
219
+ messageId: msg.id,
220
+ correlationId: msg.thread_tag ?? msg.id,
221
+ replyTo: msg.sender_id ? { agentId: msg.sender_id } : undefined,
222
+ task: {
223
+ id: data.taskId,
224
+ title: data.title ?? `Delegated: ${data.taskId}`,
225
+ status: "open",
226
+ content: data.prompt ?? data.content,
227
+ tags: data.tags,
228
+ metadata: {
229
+ ...data.metadata,
230
+ role: data.role,
231
+ },
232
+ },
233
+ };
234
+ },
235
+ });
236
+ // Register the dispatcher as an agent in the inbox so it can receive messages
237
+ await inboxAdapter.registerAgent(dispatchAgentId, {
238
+ role: "dispatcher",
239
+ scope: "default",
240
+ });
241
+ }
242
+ // Phase 2: Wire AgentRoster via inbox agent listing for route-first dispatch
243
+ let roster;
244
+ if (config.dispatch.enableRoster !== false) {
245
+ const inbox = inboxAdapter.getInbox();
246
+ roster = {
247
+ async findAvailable(criteria) {
248
+ // List agents from inbox storage, filter by role and idle state
249
+ const agents = inbox.storage.listAgents();
250
+ return agents
251
+ .filter((a) => {
252
+ if (a.agentId === dispatchAgentId)
253
+ return false;
254
+ if (criteria.role && a.role && a.role !== criteria.role)
255
+ return false;
256
+ if (criteria.notBusy && a.status === "busy")
257
+ return false;
258
+ return true;
259
+ })
260
+ .map((a) => ({
261
+ agentId: a.agentId ?? a.agent_id ?? a.id,
262
+ host: a.host,
263
+ }));
264
+ },
265
+ };
266
+ }
267
+ // Determine dispatch mode
268
+ const hasRouting = !!messagePort && !!roster;
269
+ const dispatchMode = config.dispatch.dispatchMode ??
270
+ (hasRouting ? "prefer-route" : "spawn-only");
271
+ taskDispatcher = createOrchestrator(source, runtime, {
272
+ claimantId,
273
+ pollIntervalMs: config.dispatch.pollIntervalMs ?? 15_000,
274
+ defaultRole: config.dispatch.defaultRole ?? "worker",
275
+ concurrency: { global: config.dispatch.maxConcurrent ?? 3 },
276
+ retry: {
277
+ maxRetries: config.dispatch.maxRetries ?? 3,
278
+ baseDelayMs: config.dispatch.retryBaseDelayMs ?? 10_000,
279
+ maxDelayMs: config.dispatch.retryMaxDelayMs ?? 300_000,
280
+ },
281
+ eligibility: config.dispatch.eligibility,
282
+ tags: config.dispatch.tags,
283
+ reconcile: {
284
+ enabled: config.dispatch.reconcile?.enabled ?? true,
285
+ intervalMs: config.dispatch.reconcile?.intervalMs ?? 60_000,
286
+ stallTimeoutMs: config.dispatch.reconcile?.stallTimeoutMs,
287
+ },
288
+ ...(config.dispatch.continuation && {
289
+ continuation: {
290
+ delayMs: config.dispatch.continuation.delayMs ?? 1_000,
291
+ maxTurns: config.dispatch.continuation.maxTurns ?? 20,
292
+ },
293
+ }),
294
+ messagePort,
295
+ roster,
296
+ dispatchMode,
297
+ });
298
+ await taskDispatcher.start();
299
+ }
300
+ // 7b. Control Server (lifecycle RPC for MCP subprocesses)
107
301
  const controlServer = new ControlServer(agentManager, {
108
302
  socketPath: controlSocketPath,
109
303
  });
@@ -209,8 +403,12 @@ export async function bootV2(config = {}) {
209
403
  // 12. Swarmkit integrations (minimem, skill-tree, sessionlog)
210
404
  agentManager.setIntegrationConfigs({
211
405
  minimem: config.minimem?.enabled ? config.minimem : undefined,
212
- skilltree: config.skilltree?.enabled ? config.skilltree : undefined,
213
- sessionlog: config.sessionlog?.enabled ? config.sessionlog : undefined,
406
+ skilltree: config.skilltree?.enabled
407
+ ? config.skilltree
408
+ : undefined,
409
+ sessionlog: config.sessionlog?.enabled
410
+ ? config.sessionlog
411
+ : undefined,
214
412
  });
215
413
  // 12b. Skill-tree loadout compilation (if enabled)
216
414
  if (config.skilltree?.enabled) {
@@ -235,7 +433,20 @@ export async function bootV2(config = {}) {
235
433
  if (config.map?.enabled && config.map.server) {
236
434
  try {
237
435
  const { createMAPSidecar } = await import("./map/sidecar.js");
238
- mapSidecar = createMAPSidecar({ agentManager, agentStore, inboxAdapter, tasksAdapter }, {
436
+ // If a workspace manager is present, pull out its GitCascadeAdapter
437
+ // so the sidecar can forward cascade events to the hub.
438
+ const wsMgr = config.workspaceManager;
439
+ const gitCascadeAdapter = wsMgr?.getGitCascadeAdapter?.();
440
+ mapSidecar = createMAPSidecar({
441
+ agentManager,
442
+ agentStore,
443
+ inboxAdapter,
444
+ tasksAdapter,
445
+ getLocalMapId: mapServerInstance
446
+ ? (id) => mapServerInstance.getLocalMapId(id)
447
+ : undefined,
448
+ gitCascadeAdapter,
449
+ }, {
239
450
  server: config.map.server,
240
451
  token: config.map.token,
241
452
  scope: config.map.scope,
@@ -251,6 +462,17 @@ export async function bootV2(config = {}) {
251
462
  await mapSidecar.start();
252
463
  // Wire sidecar into agent manager for session-end checkpoints
253
464
  agentManager.setSidecar(mapSidecar);
465
+ // Bridge dispatch events to MAP for observability. Spread the source
466
+ // event first, then namespace the `type` field — otherwise tsc warns
467
+ // about the literal key being overwritten by the spread.
468
+ if (taskDispatcher && mapSidecar.emitEvent) {
469
+ taskDispatcher.onEvent((event) => {
470
+ mapSidecar.emitEvent({
471
+ ...event,
472
+ type: `dispatch.${event.type}`,
473
+ });
474
+ });
475
+ }
254
476
  // Attach to shared system ref so ACP/MAP handlers can access it
255
477
  systemRef.mapSidecar = mapSidecar;
256
478
  }
@@ -259,7 +481,133 @@ export async function bootV2(config = {}) {
259
481
  console.warn(`[boot-v2] MAP sidecar failed to start: ${err.message}`);
260
482
  }
261
483
  }
262
- // 13. Return system handle
484
+ // 13. Boot-time agents (opt-in)
485
+ // Fire after all subsystems are wired so the agent's lifecycle events
486
+ // (spawned/started) flow through the lifecycle bridge → MAP hub. Non-
487
+ // blocking: don't gate boot completion on agent process startup, which
488
+ // takes seconds. Failures are logged but do not abort boot.
489
+ //
490
+ // Rehydration on restart: the agent-store persists across process
491
+ // restarts. When we boot into a workspace that already has one or more
492
+ // coordinators (e.g. openhive spawned this swarm previously + auto-
493
+ // revived it), resume THOSE agents instead of spawning a brand-new one.
494
+ // Otherwise the UI shows a different coordinator name after every
495
+ // server restart — the prior conversations still exist on disk but get
496
+ // buried under stale, state='stopped' records that the UI treats as
497
+ // dead.
498
+ if (config.bootstrap?.coordinator) {
499
+ const opts = config.bootstrap.coordinator === true
500
+ ? {}
501
+ : config.bootstrap.coordinator;
502
+ const bootstrapCwd = opts.cwd ?? cwd;
503
+ const policy = config.bootstrap.rehydrate ?? "coordinators";
504
+ // Build the revival set based on policy:
505
+ // - 'none' → empty set (always fall through to fresh spawn)
506
+ // - 'coordinators' → root coordinators at this cwd, running or stopped
507
+ // - 'all' → every agent at this cwd, running or stopped
508
+ //
509
+ // Both 'running' and 'stopped' count as revival candidates. The
510
+ // hosted-swarm graceful-restart path transitions agents to 'stopped'
511
+ // on shutdown; an abrupt parent crash leaves them as 'running'.
512
+ // Either way, the workspace intent survives the restart and we want
513
+ // the same coordinators + their children back. Agents that a user
514
+ // explicitly terminated are tracked with a distinct `stop_reason`
515
+ // and — since explicit termination clears them from the cascade — do
516
+ // not appear in the listAgents result at a cwd they no longer
517
+ // inhabit. The `state='failed'` set is also excluded.
518
+ let priors = [];
519
+ if (policy === "coordinators") {
520
+ priors = agentStore
521
+ .listAgents({ parent_id: null, role: "coordinator" })
522
+ .filter((a) => a.cwd === bootstrapCwd &&
523
+ (a.state === "running" || a.state === "stopped"));
524
+ }
525
+ else if (policy === "all") {
526
+ priors = agentStore
527
+ .listAgents()
528
+ .filter((a) => a.cwd === bootstrapCwd &&
529
+ (a.state === "running" || a.state === "stopped"));
530
+ }
531
+ const rehydrateOrSpawn = async () => {
532
+ if (priors.length > 0) {
533
+ // Parent-first ordering so a child's `resume()` sees its parent
534
+ // already back (lineage bookkeeping, inbox subscriptions). Depth
535
+ // = lineage.length: roots are 0, direct children of roots are 1.
536
+ const byDepth = new Map();
537
+ for (const p of priors) {
538
+ const d = p.lineage.length;
539
+ if (!byDepth.has(d))
540
+ byDepth.set(d, []);
541
+ byDepth.get(d).push(p);
542
+ }
543
+ const depths = Array.from(byDepth.keys()).sort((a, b) => a - b);
544
+ const priorIds = new Set(priors.map((p) => p.id));
545
+ const resumed = new Set();
546
+ const failed = new Set();
547
+ // Stagger spawns — each resume fires a Claude Code subprocess and
548
+ // we don't want a coordinator + five workers all booting at once.
549
+ const CONCURRENCY = 2;
550
+ for (const depth of depths) {
551
+ const atDepth = byDepth.get(depth);
552
+ const eligible = atDepth.filter((a) => {
553
+ if (!a.parent_id)
554
+ return true; // roots are always eligible
555
+ // Skip children whose parent isn't being revived at all
556
+ // (deliberately stopped, or out of scope for this policy).
557
+ if (!priorIds.has(a.parent_id)) {
558
+ console.warn(`[boot-v2] Skipping ${a.role} ${a.id}: parent ${a.parent_id} not in revival set`);
559
+ return false;
560
+ }
561
+ // Skip children whose parent resume failed.
562
+ if (failed.has(a.parent_id)) {
563
+ console.warn(`[boot-v2] Skipping ${a.role} ${a.id}: parent ${a.parent_id} failed to resume`);
564
+ return false;
565
+ }
566
+ return resumed.has(a.parent_id);
567
+ });
568
+ for (let i = 0; i < eligible.length; i += CONCURRENCY) {
569
+ const batch = eligible.slice(i, i + CONCURRENCY);
570
+ await Promise.all(batch.map(async (prior) => {
571
+ try {
572
+ const r = await agentManager.resume(prior.id);
573
+ resumed.add(prior.id);
574
+ console.log(`[boot-v2] Rehydrated ${prior.role}: ${r.name ?? r.id} at ${prior.cwd}`);
575
+ }
576
+ catch (err) {
577
+ const msg = err.message;
578
+ if (/ALREADY_RUNNING/i.test(msg)) {
579
+ // Rare lifecycle race — treat as success so children
580
+ // aren't held back waiting on a parent that's actually
581
+ // already alive.
582
+ resumed.add(prior.id);
583
+ }
584
+ else {
585
+ failed.add(prior.id);
586
+ console.warn(`[boot-v2] Failed to rehydrate ${prior.role} ${prior.id}: ${msg}`);
587
+ }
588
+ }
589
+ }));
590
+ }
591
+ }
592
+ return;
593
+ }
594
+ // No priors matched the policy → fresh spawn (first boot, or 'none').
595
+ const spawned = await agentManager.spawn({
596
+ role: "coordinator",
597
+ parent: null,
598
+ cwd: bootstrapCwd,
599
+ task: opts.task ?? "Default coordinator (auto-spawn on boot)",
600
+ permissionMode: opts.permissionMode,
601
+ agentType: opts.agentType,
602
+ customPrompt: opts.customPrompt,
603
+ });
604
+ console.log(`[boot-v2] Bootstrap coordinator spawned: ${spawned.name ?? spawned.id} at ${bootstrapCwd}`);
605
+ };
606
+ rehydrateOrSpawn().catch((err) => {
607
+ console.warn(`[boot-v2] Bootstrap coordinator init failed: ${err.message}`);
608
+ });
609
+ }
610
+ // 14. Return system handle
263
611
  return {
264
612
  agentManager,
265
613
  agentStore,
@@ -269,6 +617,7 @@ export async function bootV2(config = {}) {
269
617
  controlServer,
270
618
  roleRegistry,
271
619
  controlSocketPath,
620
+ ...(taskDispatcher ? { taskDispatcher } : {}),
272
621
  ...(apiServer ? { apiServer } : {}),
273
622
  ...(acpServer ? { acpServer } : {}),
274
623
  ...(mapServerInstance ? { mapServerInstance } : {}),
@@ -276,6 +625,8 @@ export async function bootV2(config = {}) {
276
625
  _sessionlogSyncLevel: config.sessionlog?.sync ?? config.map?.trajectorySyncLevel ?? "full",
277
626
  async shutdown() {
278
627
  clearInterval(healthCheckTimer);
628
+ if (taskDispatcher)
629
+ await taskDispatcher.stop();
279
630
  if (mapSidecar)
280
631
  await mapSidecar.stop();
281
632
  if (mapServerInstance)
@@ -1 +1 @@
1
- {"version":3,"file":"boot-v2.js","sourceRoot":"","sources":["../src/boot-v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"boot-v2.js","sourceRoot":"","sources":["../src/boot-v2.ts"],"names":[],"mappings":"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"}
package/dist/cli/acp.js CHANGED
@@ -29,6 +29,10 @@ async function main() {
29
29
  try {
30
30
  const system = await bootV2({
31
31
  cwd: defaultCwd,
32
+ // `--instance-id` picks the on-disk compartment under ~/.macro-agent/
33
+ // so multiple runs with the same id share state. Omit to auto-derive
34
+ // from the cwd hash. See `BootV2Config.instanceId`.
35
+ ...(options.instanceId ? { instanceId: options.instanceId } : {}),
32
36
  // Enable ACP WebSocket server if port is specified (server mode)
33
37
  ...(options.port
34
38
  ? {
@@ -1 +1 @@
1
- {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/cli/acp.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,kDAAkD;AAClD,OAAO,EAAE,SAAS,EAAyB,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,oEAAoE;AACpE,mBAAmB;AACnB,oEAAoE;AAEpE,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;IAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,GAAG,EAAE,UAAU;YACf,iEAAiE;YACjE,GAAG,CAAC,OAAO,CAAC,IAAI;gBACd,CAAC,CAAC;oBACE,GAAG,EAAE;wBACH,OAAO,EAAE,IAAI;wBACb,IAAI,EAAE,OAAO,CAAC,IAAI;wBAClB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;qBAClC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS;YAC7B,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,MAAM;YAC3D,CAAC,CAAC,IAAI,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;QAEF,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,8DAA8D;YAC9D,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;gBACjC,MAAM,OAAO,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,wCAAwC;YACxC,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC3D,MAAM,IAAI,OAAO,CAAO,GAAG,EAAE;gBAC3B,oDAAoD;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/cli/acp.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -433,6 +433,62 @@ program
433
433
  }
434
434
  });
435
435
  // ─────────────────────────────────────────────────────────────────
436
+ // Run Team Command (Phase 10)
437
+ // ─────────────────────────────────────────────────────────────────
438
+ program
439
+ .command("run <teamName>")
440
+ .description("Boot the system, start a team by name, and optionally prompt the root agent")
441
+ .option("--task <task>", "Task to prompt the root agent with")
442
+ .option("--cwd <path>", "Working directory for agents")
443
+ .option("--base-path <path>", "Base path for team YAML lookup (default: cwd)")
444
+ .action(async (teamName, options) => {
445
+ const cwd = options.cwd ?? process.cwd();
446
+ console.log(chalk.blue(`Booting macro-agent and starting team: ${teamName}`));
447
+ let system = null;
448
+ try {
449
+ system = await bootV2({ cwd });
450
+ console.log(chalk.green("System booted."));
451
+ // Construct & install a TeamManagerV2; start the requested team.
452
+ const { TeamManagerV2 } = await import("../teams/team-manager-v2.js");
453
+ const teamManager = new TeamManagerV2({
454
+ agentManager: system.agentManager,
455
+ inboxAdapter: system.inboxAdapter,
456
+ tasksAdapter: system.tasksAdapter,
457
+ });
458
+ teamManager.install();
459
+ const instanceId = await teamManager.startTeam(teamName, options.basePath ?? cwd);
460
+ console.log(chalk.green(`Team started: ${teamName} (instance ${instanceId})`));
461
+ // Find the root agent (first spawned agent in the instance)
462
+ const agents = system.agentStore.listAgents({ state: "running" });
463
+ const root = agents[0];
464
+ if (options.task && root) {
465
+ console.log(chalk.gray(`Prompting root agent (${root.id}) with task...`));
466
+ const iter = system.agentManager.prompt(root.id, options.task);
467
+ for await (const chunk of iter) {
468
+ process.stdout.write(typeof chunk === "string" ? chunk : JSON.stringify(chunk));
469
+ }
470
+ console.log();
471
+ }
472
+ else if (!root) {
473
+ console.log(chalk.yellow("No root agent found to prompt."));
474
+ }
475
+ console.log(chalk.gray("Press Ctrl+C to shut down."));
476
+ // Graceful shutdown on SIGINT
477
+ process.on("SIGINT", async () => {
478
+ console.log(chalk.yellow("\nShutting down..."));
479
+ if (system)
480
+ await system.shutdown();
481
+ process.exit(0);
482
+ });
483
+ }
484
+ catch (error) {
485
+ console.error(chalk.red(`Failed to run team: ${error}`));
486
+ if (system)
487
+ await system.shutdown();
488
+ process.exit(1);
489
+ }
490
+ });
491
+ // ─────────────────────────────────────────────────────────────────
436
492
  // Parse and Run
437
493
  // ─────────────────────────────────────────────────────────────────
438
494
  program.parse();