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.
- package/CLAUDE.md +97 -0
- package/dist/acp/macro-agent.d.ts.map +1 -1
- package/dist/acp/macro-agent.js +42 -6
- package/dist/acp/macro-agent.js.map +1 -1
- package/dist/adapters/tasks-adapter.d.ts.map +1 -1
- package/dist/adapters/tasks-adapter.js +3 -0
- package/dist/adapters/tasks-adapter.js.map +1 -1
- package/dist/adapters/types.d.ts +1 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/agent/agent-manager-v2.d.ts.map +1 -1
- package/dist/agent/agent-manager-v2.js +74 -11
- package/dist/agent/agent-manager-v2.js.map +1 -1
- package/dist/agent/agent-store.d.ts +10 -0
- package/dist/agent/agent-store.d.ts.map +1 -1
- package/dist/agent/agent-store.js +22 -0
- package/dist/agent/agent-store.js.map +1 -1
- package/dist/boot-v2.d.ts +88 -1
- package/dist/boot-v2.d.ts.map +1 -1
- package/dist/boot-v2.js +343 -7
- package/dist/boot-v2.js.map +1 -1
- package/dist/cli/acp.js +4 -0
- package/dist/cli/acp.js.map +1 -1
- package/dist/lifecycle/cascade.d.ts +25 -2
- package/dist/lifecycle/cascade.d.ts.map +1 -1
- package/dist/lifecycle/cascade.js +70 -2
- package/dist/lifecycle/cascade.js.map +1 -1
- package/dist/map/cascade-action-handler.d.ts +24 -0
- package/dist/map/cascade-action-handler.d.ts.map +1 -0
- package/dist/map/cascade-action-handler.js +170 -0
- package/dist/map/cascade-action-handler.js.map +1 -0
- package/dist/map/cascade-bridge.d.ts.map +1 -1
- package/dist/map/cascade-bridge.js +42 -5
- package/dist/map/cascade-bridge.js.map +1 -1
- package/dist/map/coordination-handler.d.ts.map +1 -1
- package/dist/map/coordination-handler.js +12 -1
- package/dist/map/coordination-handler.js.map +1 -1
- package/dist/map/server.d.ts.map +1 -1
- package/dist/map/server.js +172 -1
- package/dist/map/server.js.map +1 -1
- package/dist/map/sidecar.d.ts.map +1 -1
- package/dist/map/sidecar.js +18 -2
- package/dist/map/sidecar.js.map +1 -1
- package/dist/map/types.d.ts +2 -0
- package/dist/map/types.d.ts.map +1 -1
- package/dist/teams/seed-defaults.d.ts.map +1 -1
- package/dist/teams/seed-defaults.js +6 -2
- package/dist/teams/seed-defaults.js.map +1 -1
- package/dist/teams/team-loader.d.ts.map +1 -1
- package/dist/teams/team-loader.js +17 -1
- package/dist/teams/team-loader.js.map +1 -1
- package/dist/workspace/git-cascade-adapter.d.ts +1 -1
- package/dist/workspace/git-cascade-adapter.d.ts.map +1 -1
- package/dist/workspace/git-cascade-adapter.js +26 -0
- package/dist/workspace/git-cascade-adapter.js.map +1 -1
- package/dist/workspace/landing/merge-to-parent.d.ts.map +1 -1
- package/dist/workspace/landing/merge-to-parent.js +1 -0
- package/dist/workspace/landing/merge-to-parent.js.map +1 -1
- package/dist/workspace/recovery/spawn-resolver.d.ts.map +1 -1
- package/dist/workspace/recovery/spawn-resolver.js +8 -1
- package/dist/workspace/recovery/spawn-resolver.js.map +1 -1
- package/dist/workspace/types-v3.d.ts +7 -0
- package/dist/workspace/types-v3.d.ts.map +1 -1
- package/dist/workspace/types-v3.js.map +1 -1
- package/dist/workspace/types.d.ts +17 -0
- package/dist/workspace/types.d.ts.map +1 -1
- package/dist/workspace/workspace-manager.d.ts +9 -0
- package/dist/workspace/workspace-manager.d.ts.map +1 -1
- package/dist/workspace/workspace-manager.js +45 -2
- package/dist/workspace/workspace-manager.js.map +1 -1
- package/docs/design/task-dispatcher.md +880 -0
- package/package.json +3 -3
- package/src/__tests__/boot-v2.test.ts +435 -0
- package/src/__tests__/e2e/acp-over-map.e2e.test.ts +92 -0
- package/src/__tests__/e2e/bootstrap.e2e.test.ts +319 -0
- package/src/__tests__/e2e/dispatch-coordination.e2e.test.ts +495 -0
- package/src/__tests__/e2e/dispatch-live.e2e.test.ts +564 -0
- package/src/__tests__/e2e/dispatch-opentasks.e2e.test.ts +496 -0
- package/src/__tests__/e2e/dispatch-phase2-live.e2e.test.ts +456 -0
- package/src/__tests__/e2e/dispatch-phase2.e2e.test.ts +386 -0
- package/src/__tests__/e2e/dispatch.e2e.test.ts +376 -0
- package/src/acp/macro-agent.ts +41 -6
- package/src/adapters/__tests__/tasks-adapter.test.ts +1 -0
- package/src/adapters/tasks-adapter.ts +3 -0
- package/src/adapters/types.ts +1 -0
- package/src/agent/__tests__/agent-store.test.ts +52 -0
- package/src/agent/agent-manager-v2.ts +79 -11
- package/src/agent/agent-store.ts +24 -0
- package/src/boot-v2.ts +522 -35
- package/src/cli/acp.ts +4 -0
- package/src/lifecycle/__tests__/cascade-consolidation.test.ts +240 -0
- package/src/lifecycle/cascade.ts +77 -2
- package/src/map/__tests__/emit-event.test.ts +71 -0
- package/src/map/cascade-action-handler.ts +205 -0
- package/src/map/cascade-bridge.ts +43 -5
- package/src/map/coordination-handler.ts +13 -1
- package/src/map/server.ts +178 -1
- package/src/map/sidecar.ts +19 -2
- package/src/map/types.ts +3 -0
- package/src/teams/seed-defaults.ts +6 -2
- package/src/teams/team-loader.ts +18 -1
- package/src/workspace/__tests__/land-dispatch.test.ts +214 -0
- package/src/workspace/__tests__/self-driving-yaml.test.ts +10 -2
- package/src/workspace/git-cascade-adapter.ts +30 -3
- package/src/workspace/landing/__tests__/strategies.test.ts +42 -0
- package/src/workspace/landing/merge-to-parent.ts +1 -0
- package/src/workspace/recovery/spawn-resolver.ts +8 -1
- package/src/workspace/types-v3.ts +7 -0
- package/src/workspace/types.ts +20 -0
- package/src/workspace/workspace-manager.ts +61 -2
- package/templates/teams/self-driving/team.yaml +142 -0
- 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
|
-
|
|
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
|
-
//
|
|
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
|
|
215
|
-
|
|
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.
|
|
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)
|
package/dist/boot-v2.js.map
CHANGED
|
@@ -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
|
? {
|
package/dist/cli/acp.js.map
CHANGED
|
@@ -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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"}
|
|
@@ -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
|
|
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,
|
|
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);
|