macro-agent 0.1.10 → 0.1.12

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 (111) hide show
  1. package/CLAUDE.md +97 -0
  2. package/dist/acp/macro-agent.d.ts.map +1 -1
  3. package/dist/acp/macro-agent.js +42 -6
  4. package/dist/acp/macro-agent.js.map +1 -1
  5. package/dist/adapters/tasks-adapter.d.ts.map +1 -1
  6. package/dist/adapters/tasks-adapter.js +3 -0
  7. package/dist/adapters/tasks-adapter.js.map +1 -1
  8. package/dist/adapters/types.d.ts +1 -0
  9. package/dist/adapters/types.d.ts.map +1 -1
  10. package/dist/agent/agent-manager-v2.d.ts.map +1 -1
  11. package/dist/agent/agent-manager-v2.js +74 -11
  12. package/dist/agent/agent-manager-v2.js.map +1 -1
  13. package/dist/agent/agent-store.d.ts +10 -0
  14. package/dist/agent/agent-store.d.ts.map +1 -1
  15. package/dist/agent/agent-store.js +22 -0
  16. package/dist/agent/agent-store.js.map +1 -1
  17. package/dist/boot-v2.d.ts +88 -1
  18. package/dist/boot-v2.d.ts.map +1 -1
  19. package/dist/boot-v2.js +343 -7
  20. package/dist/boot-v2.js.map +1 -1
  21. package/dist/cli/acp.js +4 -0
  22. package/dist/cli/acp.js.map +1 -1
  23. package/dist/lifecycle/cascade.d.ts +25 -2
  24. package/dist/lifecycle/cascade.d.ts.map +1 -1
  25. package/dist/lifecycle/cascade.js +70 -2
  26. package/dist/lifecycle/cascade.js.map +1 -1
  27. package/dist/map/cascade-action-handler.d.ts +24 -0
  28. package/dist/map/cascade-action-handler.d.ts.map +1 -0
  29. package/dist/map/cascade-action-handler.js +170 -0
  30. package/dist/map/cascade-action-handler.js.map +1 -0
  31. package/dist/map/cascade-bridge.d.ts.map +1 -1
  32. package/dist/map/cascade-bridge.js +42 -5
  33. package/dist/map/cascade-bridge.js.map +1 -1
  34. package/dist/map/coordination-handler.d.ts.map +1 -1
  35. package/dist/map/coordination-handler.js +12 -1
  36. package/dist/map/coordination-handler.js.map +1 -1
  37. package/dist/map/server.d.ts.map +1 -1
  38. package/dist/map/server.js +172 -1
  39. package/dist/map/server.js.map +1 -1
  40. package/dist/map/sidecar.d.ts.map +1 -1
  41. package/dist/map/sidecar.js +18 -2
  42. package/dist/map/sidecar.js.map +1 -1
  43. package/dist/map/types.d.ts +2 -0
  44. package/dist/map/types.d.ts.map +1 -1
  45. package/dist/teams/seed-defaults.d.ts.map +1 -1
  46. package/dist/teams/seed-defaults.js +6 -2
  47. package/dist/teams/seed-defaults.js.map +1 -1
  48. package/dist/teams/team-loader.d.ts.map +1 -1
  49. package/dist/teams/team-loader.js +17 -1
  50. package/dist/teams/team-loader.js.map +1 -1
  51. package/dist/workspace/git-cascade-adapter.d.ts +1 -1
  52. package/dist/workspace/git-cascade-adapter.d.ts.map +1 -1
  53. package/dist/workspace/git-cascade-adapter.js +26 -0
  54. package/dist/workspace/git-cascade-adapter.js.map +1 -1
  55. package/dist/workspace/landing/merge-to-parent.d.ts.map +1 -1
  56. package/dist/workspace/landing/merge-to-parent.js +1 -0
  57. package/dist/workspace/landing/merge-to-parent.js.map +1 -1
  58. package/dist/workspace/recovery/spawn-resolver.d.ts.map +1 -1
  59. package/dist/workspace/recovery/spawn-resolver.js +8 -1
  60. package/dist/workspace/recovery/spawn-resolver.js.map +1 -1
  61. package/dist/workspace/types-v3.d.ts +7 -0
  62. package/dist/workspace/types-v3.d.ts.map +1 -1
  63. package/dist/workspace/types-v3.js.map +1 -1
  64. package/dist/workspace/types.d.ts +17 -0
  65. package/dist/workspace/types.d.ts.map +1 -1
  66. package/dist/workspace/workspace-manager.d.ts +9 -0
  67. package/dist/workspace/workspace-manager.d.ts.map +1 -1
  68. package/dist/workspace/workspace-manager.js +45 -2
  69. package/dist/workspace/workspace-manager.js.map +1 -1
  70. package/docs/design/task-dispatcher.md +880 -0
  71. package/package.json +3 -3
  72. package/src/__tests__/boot-v2.test.ts +435 -0
  73. package/src/__tests__/e2e/acp-over-map.e2e.test.ts +92 -0
  74. package/src/__tests__/e2e/bootstrap.e2e.test.ts +319 -0
  75. package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +495 -0
  76. package/src/__tests__/e2e/dispatch-live.e2e.test.ts +564 -0
  77. package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +496 -0
  78. package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +456 -0
  79. package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +386 -0
  80. package/src/__tests__/e2e/dispatch.e2e.test.ts +376 -0
  81. package/src/acp/macro-agent.ts +41 -6
  82. package/src/adapters/__tests__/tasks-adapter.test.ts +1 -0
  83. package/src/adapters/tasks-adapter.ts +3 -0
  84. package/src/adapters/types.ts +1 -0
  85. package/src/agent/__tests__/agent-store.test.ts +52 -0
  86. package/src/agent/agent-manager-v2.ts +79 -11
  87. package/src/agent/agent-store.ts +24 -0
  88. package/src/boot-v2.ts +522 -35
  89. package/src/cli/acp.ts +4 -0
  90. package/src/lifecycle/__tests__/cascade-consolidation.test.ts +240 -0
  91. package/src/lifecycle/cascade.ts +77 -2
  92. package/src/map/__tests__/emit-event.test.ts +71 -0
  93. package/src/map/cascade-action-handler.ts +205 -0
  94. package/src/map/cascade-bridge.ts +43 -5
  95. package/src/map/coordination-handler.ts +13 -1
  96. package/src/map/server.ts +178 -1
  97. package/src/map/sidecar.ts +19 -2
  98. package/src/map/types.ts +3 -0
  99. package/src/teams/seed-defaults.ts +6 -2
  100. package/src/teams/team-loader.ts +18 -1
  101. package/src/workspace/__tests__/land-dispatch.test.ts +214 -0
  102. package/src/workspace/__tests__/self-driving-yaml.test.ts +10 -2
  103. package/src/workspace/git-cascade-adapter.ts +30 -3
  104. package/src/workspace/landing/__tests__/strategies.test.ts +42 -0
  105. package/src/workspace/landing/merge-to-parent.ts +1 -0
  106. package/src/workspace/recovery/spawn-resolver.ts +8 -1
  107. package/src/workspace/types-v3.ts +7 -0
  108. package/src/workspace/types.ts +20 -0
  109. package/src/workspace/workspace-manager.ts +61 -2
  110. package/templates/teams/self-driving/team.yaml +142 -0
  111. package/tsconfig.json +2 -1
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,
@@ -105,7 +152,152 @@ export async function bootV2(config = {}) {
105
152
  },
106
153
  });
107
154
  await triggerSystem.start();
108
- // 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)
109
301
  const controlServer = new ControlServer(agentManager, {
110
302
  socketPath: controlSocketPath,
111
303
  });
@@ -211,8 +403,12 @@ export async function bootV2(config = {}) {
211
403
  // 12. Swarmkit integrations (minimem, skill-tree, sessionlog)
212
404
  agentManager.setIntegrationConfigs({
213
405
  minimem: config.minimem?.enabled ? config.minimem : undefined,
214
- skilltree: config.skilltree?.enabled ? config.skilltree : undefined,
215
- 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,
216
412
  });
217
413
  // 12b. Skill-tree loadout compilation (if enabled)
218
414
  if (config.skilltree?.enabled) {
@@ -266,6 +462,17 @@ export async function bootV2(config = {}) {
266
462
  await mapSidecar.start();
267
463
  // Wire sidecar into agent manager for session-end checkpoints
268
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
+ }
269
476
  // Attach to shared system ref so ACP/MAP handlers can access it
270
477
  systemRef.mapSidecar = mapSidecar;
271
478
  }
@@ -274,7 +481,133 @@ export async function bootV2(config = {}) {
274
481
  console.warn(`[boot-v2] MAP sidecar failed to start: ${err.message}`);
275
482
  }
276
483
  }
277
- // 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
278
611
  return {
279
612
  agentManager,
280
613
  agentStore,
@@ -284,6 +617,7 @@ export async function bootV2(config = {}) {
284
617
  controlServer,
285
618
  roleRegistry,
286
619
  controlSocketPath,
620
+ ...(taskDispatcher ? { taskDispatcher } : {}),
287
621
  ...(apiServer ? { apiServer } : {}),
288
622
  ...(acpServer ? { acpServer } : {}),
289
623
  ...(mapServerInstance ? { mapServerInstance } : {}),
@@ -291,6 +625,8 @@ export async function bootV2(config = {}) {
291
625
  _sessionlogSyncLevel: config.sessionlog?.sync ?? config.map?.trajectorySyncLevel ?? "full",
292
626
  async shutdown() {
293
627
  clearInterval(healthCheckTimer);
628
+ if (taskDispatcher)
629
+ await taskDispatcher.stop();
294
630
  if (mapSidecar)
295
631
  await mapSidecar.stop();
296
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":";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,sEAAsE;YACtE,qEAAqE;YACrE,oDAAoD;YACpD,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,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"}
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import type { AgentId } from "../store/types/index.js";
14
14
  import type { CascadeOptions, CascadeResult, ConsolidationResult, ConsolidationOptions } from "./types.js";
15
- import type { Workspace } from "../workspace/types.js";
15
+ import type { Workspace, WorkspaceManager } from "../workspace/types.js";
16
16
  /**
17
17
  * Minimal agent interface for cascade operations
18
18
  */
@@ -56,14 +56,37 @@ export interface WorkspaceProvider {
56
56
  * If a merge conflict occurs, the merge is aborted and the child is
57
57
  * terminated with a "merge_conflict" reason.
58
58
  *
59
+ * When a `workspaceManager` is provided AND both workspaces carry stream
60
+ * ids, the merge is routed through `workspaceManager.mergeStream()` so
61
+ * it flows through git-cascade's tracker — gaining a `stream.merged`
62
+ * cascade event that propagates to the hub via CascadeBridge. This is
63
+ * the primary observability win of A3 in the integration plan.
64
+ *
65
+ * Falls back to raw `attemptMerge` (unchanged behavior) when either
66
+ * workspace lacks a stream id or no manager is passed — so
67
+ * programmatic/legacy callers keep working unchanged.
68
+ *
59
69
  * @param childId - Child agent to terminate
60
70
  * @param parentId - Parent agent to consolidate changes into
61
71
  * @param agentManager - Agent manager for operations
62
72
  * @param workspaceProvider - Optional workspace provider for getting agent workspaces
63
73
  * @param options - Optional consolidation options
74
+ * @param workspaceManager - Optional workspace manager; enables cascade-
75
+ * event emission on the consolidation merge when both workspaces are
76
+ * stream-backed.
64
77
  * @returns ConsolidationResult indicating success or failure
65
78
  */
66
- export declare function terminateWithChangeConsolidation(childId: AgentId, parentId: AgentId, agentManager: CascadeAgentManager, workspaceProvider?: WorkspaceProvider, options?: ConsolidationOptions): Promise<ConsolidationResult>;
79
+ export declare function terminateWithChangeConsolidation(childId: AgentId, parentId: AgentId, agentManager: CascadeAgentManager, workspaceProvider?: WorkspaceProvider, options?: ConsolidationOptions, workspaceManager?: WorkspaceManager,
80
+ /**
81
+ * Optional task reference inherited from the parent agent's metadata.
82
+ * When provided + routing through the tracker, threaded into the
83
+ * `x-cascade/stream.merged` emit so the hub's cascade_merges row records
84
+ * which task drove the consolidation.
85
+ */
86
+ taskRef?: {
87
+ resource_id: string;
88
+ node_id: string;
89
+ }): Promise<ConsolidationResult>;
67
90
  /**
68
91
  * Get all descendants of an agent (children, grandchildren, etc.)
69
92
  */
@@ -1 +1 @@
1
- {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../src/lifecycle/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,uBAAuB,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAAC;IAE9C,yBAAyB;IACzB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAMD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,EACjC,OAAO,GAAE,cAA6C,GACrD,OAAO,CAAC,aAAa,CAAC,CA4CxB;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,mBAAmB,EACjC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CA8E9B;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,GAChC,YAAY,EAAE,CAYhB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAKT"}
1
+ {"version":3,"file":"cascade.d.ts","sourceRoot":"","sources":["../../src/lifecycle/cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAAC;IAE9C,yBAAyB;IACzB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAMD;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,EACjC,OAAO,GAAE,cAA6C,GACrD,OAAO,CAAC,aAAa,CAAC,CA4CxB;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,mBAAmB,EACjC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,OAAO,CAAC,EAAE,oBAAoB,EAC9B,gBAAgB,CAAC,EAAE,gBAAgB;AACnC;;;;;GAKG;AACH,OAAO,CAAC,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,mBAAmB,CAAC,CAoI9B;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,GAChC,YAAY,EAAE,CAYhB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAKT"}
@@ -67,14 +67,34 @@ export async function cascadeTerminateChildren(agentId, agentManager, options =
67
67
  * If a merge conflict occurs, the merge is aborted and the child is
68
68
  * terminated with a "merge_conflict" reason.
69
69
  *
70
+ * When a `workspaceManager` is provided AND both workspaces carry stream
71
+ * ids, the merge is routed through `workspaceManager.mergeStream()` so
72
+ * it flows through git-cascade's tracker — gaining a `stream.merged`
73
+ * cascade event that propagates to the hub via CascadeBridge. This is
74
+ * the primary observability win of A3 in the integration plan.
75
+ *
76
+ * Falls back to raw `attemptMerge` (unchanged behavior) when either
77
+ * workspace lacks a stream id or no manager is passed — so
78
+ * programmatic/legacy callers keep working unchanged.
79
+ *
70
80
  * @param childId - Child agent to terminate
71
81
  * @param parentId - Parent agent to consolidate changes into
72
82
  * @param agentManager - Agent manager for operations
73
83
  * @param workspaceProvider - Optional workspace provider for getting agent workspaces
74
84
  * @param options - Optional consolidation options
85
+ * @param workspaceManager - Optional workspace manager; enables cascade-
86
+ * event emission on the consolidation merge when both workspaces are
87
+ * stream-backed.
75
88
  * @returns ConsolidationResult indicating success or failure
76
89
  */
77
- export async function terminateWithChangeConsolidation(childId, parentId, agentManager, workspaceProvider, options) {
90
+ export async function terminateWithChangeConsolidation(childId, parentId, agentManager, workspaceProvider, options, workspaceManager,
91
+ /**
92
+ * Optional task reference inherited from the parent agent's metadata.
93
+ * When provided + routing through the tracker, threaded into the
94
+ * `x-cascade/stream.merged` emit so the hub's cascade_merges row records
95
+ * which task drove the consolidation.
96
+ */
97
+ taskRef) {
78
98
  // If no workspace provider, just terminate normally
79
99
  if (!workspaceProvider) {
80
100
  await agentManager.terminate(childId, "parent_stopped");
@@ -96,7 +116,55 @@ export async function terminateWithChangeConsolidation(childId, parentId, agentM
96
116
  console.warn(`[cascade] Parent worktree is on '${currentParentBranch}' but expected '${parentWorkspace.branch}'`);
97
117
  // Continue with merge anyway - use the actual current branch
98
118
  }
99
- // Attempt to merge child branch into parent's worktree
119
+ // Attempt to merge child branch into parent's worktree.
120
+ //
121
+ // Preferred path: route through workspaceManager.mergeStream when both
122
+ // workspaces have stream ids. Goes via git-cascade's tracker.mergeStream,
123
+ // which fires `x-cascade/stream.merged` with source/target stream ids so
124
+ // the hub's cascade projection + the source stream's `merged` status
125
+ // update in lockstep with the actual git operation.
126
+ if (workspaceManager &&
127
+ childWorkspace.streamId &&
128
+ parentWorkspace.streamId) {
129
+ try {
130
+ const result = workspaceManager.mergeStream({
131
+ sourceStreamId: childWorkspace.streamId,
132
+ targetStreamId: parentWorkspace.streamId,
133
+ agentId: parentId,
134
+ worktree: parentWorkspace.path,
135
+ metadata: taskRef ? { task_ref: taskRef } : undefined,
136
+ });
137
+ if (result.success) {
138
+ await agentManager.terminate(childId, "changes_consolidated");
139
+ return {
140
+ success: true,
141
+ merged: true,
142
+ mergeCommit: result.newHead,
143
+ };
144
+ }
145
+ if (result.conflicts && result.conflicts.length > 0) {
146
+ // Tracker already aborted; emit and terminate with conflict reason.
147
+ console.warn(`[cascade] Merge conflict consolidating ${childId} -> ${parentId} via tracker: ${result.conflicts.join(", ")}`);
148
+ await agentManager.terminate(childId, "merge_conflict");
149
+ return {
150
+ success: false,
151
+ merged: false,
152
+ conflicts: result.conflicts,
153
+ };
154
+ }
155
+ // Tracker returned a non-conflict failure — fall through to raw
156
+ // git path so we don't regress the consolidation semantics for
157
+ // cases the tracker can't handle (e.g., stream in unexpected
158
+ // status, detached HEAD, branch-name mismatches).
159
+ }
160
+ catch (err) {
161
+ console.warn(`[cascade] tracker.mergeStream failed consolidating ${childId} -> ${parentId}; falling back to raw git: ${err instanceof Error ? err.message : String(err)}`);
162
+ // Fall through to raw-git path below.
163
+ }
164
+ }
165
+ // Fallback: raw git merge. Preserves pre-A3 behavior when streams
166
+ // aren't available (programmatic callers, legacy role-shaped
167
+ // workspaces) or when the tracker path bailed.
100
168
  const mergeMessage = options?.mergeMessage ??
101
169
  `Merge changes from ${childId} (${childBranch})`;
102
170
  const mergeResult = attemptMerge(childBranch, parentWorkspace.path, mergeMessage);