@mclawnet/swarm 0.1.11 → 0.1.13
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/dist/__tests__/dynamic-add-integration.test.d.ts +2 -0
- package/dist/__tests__/dynamic-add-integration.test.d.ts.map +1 -0
- package/dist/__tests__/dynamic-add-integration.test.js +108 -0
- package/dist/__tests__/dynamic-add-integration.test.js.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-notbefore.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-notbefore.test.js +47 -0
- package/dist/__tests__/inbox-store-notbefore.test.js.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts +2 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts.map +1 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js +32 -0
- package/dist/__tests__/inbox-store-swarmid-validation.test.js.map +1 -0
- package/dist/__tests__/membership-change.test.d.ts +2 -0
- package/dist/__tests__/membership-change.test.d.ts.map +1 -0
- package/dist/__tests__/membership-change.test.js +132 -0
- package/dist/__tests__/membership-change.test.js.map +1 -0
- package/dist/__tests__/persistence.test.js +93 -4
- package/dist/__tests__/persistence.test.js.map +1 -1
- package/dist/__tests__/phase4-5-e2e.test.js +7 -7
- package/dist/__tests__/phase4-5-e2e.test.js.map +1 -1
- package/dist/__tests__/phase6-7-e2e.test.js +10 -7
- package/dist/__tests__/phase6-7-e2e.test.js.map +1 -1
- package/dist/__tests__/plan-sync.test.d.ts +2 -0
- package/dist/__tests__/plan-sync.test.d.ts.map +1 -0
- package/dist/__tests__/plan-sync.test.js +30 -0
- package/dist/__tests__/plan-sync.test.js.map +1 -0
- package/dist/__tests__/projects-fs.test.js +30 -0
- package/dist/__tests__/projects-fs.test.js.map +1 -1
- package/dist/__tests__/recovery-forwards-to-coordinator.test.js +1 -1
- package/dist/__tests__/recovery-forwards-to-coordinator.test.js.map +1 -1
- package/dist/__tests__/recovery-resume.test.js +15 -5
- package/dist/__tests__/recovery-resume.test.js.map +1 -1
- package/dist/__tests__/role-loader-editor.test.d.ts +2 -0
- package/dist/__tests__/role-loader-editor.test.d.ts.map +1 -0
- package/dist/__tests__/role-loader-editor.test.js +168 -0
- package/dist/__tests__/role-loader-editor.test.js.map +1 -0
- package/dist/__tests__/role-loader.test.js +9 -0
- package/dist/__tests__/role-loader.test.js.map +1 -1
- package/dist/__tests__/spawn-role-injects-briefings.test.js +40 -28
- package/dist/__tests__/spawn-role-injects-briefings.test.js.map +1 -1
- package/dist/__tests__/spawn-role-mutex.test.d.ts +2 -0
- package/dist/__tests__/spawn-role-mutex.test.d.ts.map +1 -0
- package/dist/__tests__/spawn-role-mutex.test.js +158 -0
- package/dist/__tests__/spawn-role-mutex.test.js.map +1 -0
- package/dist/__tests__/spawn-role-rollback.test.d.ts +2 -0
- package/dist/__tests__/spawn-role-rollback.test.d.ts.map +1 -0
- package/dist/__tests__/spawn-role-rollback.test.js +180 -0
- package/dist/__tests__/spawn-role-rollback.test.js.map +1 -0
- package/dist/__tests__/swarm-coordinator-backend.test.d.ts +2 -0
- package/dist/__tests__/swarm-coordinator-backend.test.d.ts.map +1 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js +334 -0
- package/dist/__tests__/swarm-coordinator-backend.test.js.map +1 -0
- package/dist/__tests__/swarm-coordinator-init.test.js +2 -2
- package/dist/__tests__/swarm-coordinator-init.test.js.map +1 -1
- package/dist/__tests__/swarm-coordinator-plan-sync.test.d.ts +2 -0
- package/dist/__tests__/swarm-coordinator-plan-sync.test.d.ts.map +1 -0
- package/dist/__tests__/swarm-coordinator-plan-sync.test.js +263 -0
- package/dist/__tests__/swarm-coordinator-plan-sync.test.js.map +1 -0
- package/dist/__tests__/swarm-coordinator-resume.test.js +27 -17
- package/dist/__tests__/swarm-coordinator-resume.test.js.map +1 -1
- package/dist/__tests__/swarm-coordinator-roleId.test.js +24 -9
- package/dist/__tests__/swarm-coordinator-roleId.test.js.map +1 -1
- package/dist/__tests__/sync-plan-status.test.d.ts +2 -0
- package/dist/__tests__/sync-plan-status.test.d.ts.map +1 -0
- package/dist/__tests__/sync-plan-status.test.js +198 -0
- package/dist/__tests__/sync-plan-status.test.js.map +1 -0
- package/dist/__tests__/template-loader-editor.test.d.ts +2 -0
- package/dist/__tests__/template-loader-editor.test.d.ts.map +1 -0
- package/dist/__tests__/template-loader-editor.test.js +156 -0
- package/dist/__tests__/template-loader-editor.test.js.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts +2 -0
- package/dist/__tests__/wakeup-end-to-end.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-end-to-end.test.js +80 -0
- package/dist/__tests__/wakeup-end-to-end.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js +33 -0
- package/dist/__tests__/wakeup-scheduler-restore-fires.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js +62 -0
- package/dist/__tests__/wakeup-scheduler-restore.test.js.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts +2 -0
- package/dist/__tests__/wakeup-scheduler.test.d.ts.map +1 -0
- package/dist/__tests__/wakeup-scheduler.test.js +65 -0
- package/dist/__tests__/wakeup-scheduler.test.js.map +1 -0
- package/dist/__tests__/watch-manager.test.d.ts +2 -0
- package/dist/__tests__/watch-manager.test.d.ts.map +1 -0
- package/dist/__tests__/watch-manager.test.js +203 -0
- package/dist/__tests__/watch-manager.test.js.map +1 -0
- package/dist/inbox-store.d.ts +7 -0
- package/dist/inbox-store.d.ts.map +1 -1
- package/dist/inbox-store.js +8 -1
- package/dist/inbox-store.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/persistence.d.ts +5 -1
- package/dist/persistence.d.ts.map +1 -1
- package/dist/persistence.js +4 -1
- package/dist/persistence.js.map +1 -1
- package/dist/plan-sync.d.ts +10 -0
- package/dist/plan-sync.d.ts.map +1 -0
- package/dist/plan-sync.js +37 -0
- package/dist/plan-sync.js.map +1 -0
- package/dist/projects-fs.d.ts +2 -0
- package/dist/projects-fs.d.ts.map +1 -1
- package/dist/projects-fs.js +1 -0
- package/dist/projects-fs.js.map +1 -1
- package/dist/recovery.d.ts +1 -1
- package/dist/recovery.js +1 -1
- package/dist/roles/role-loader.d.ts +46 -2
- package/dist/roles/role-loader.d.ts.map +1 -1
- package/dist/roles/role-loader.js +139 -20
- package/dist/roles/role-loader.js.map +1 -1
- package/dist/roles/types.d.ts +13 -0
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/swarm-coordinator.d.ts +87 -9
- package/dist/swarm-coordinator.d.ts.map +1 -1
- package/dist/swarm-coordinator.js +392 -60
- package/dist/swarm-coordinator.js.map +1 -1
- package/dist/templates/template-loader.d.ts +42 -2
- package/dist/templates/template-loader.d.ts.map +1 -1
- package/dist/templates/template-loader.js +138 -17
- package/dist/templates/template-loader.js.map +1 -1
- package/dist/types.d.ts +25 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/wakeup-scheduler.d.ts +36 -0
- package/dist/wakeup-scheduler.d.ts.map +1 -0
- package/dist/wakeup-scheduler.js +107 -0
- package/dist/wakeup-scheduler.js.map +1 -0
- package/dist/watch-manager.d.ts +32 -0
- package/dist/watch-manager.d.ts.map +1 -0
- package/dist/watch-manager.js +153 -0
- package/dist/watch-manager.js.map +1 -0
- package/package.json +6 -6
- package/roles/queen.md +26 -0
- package/dist/message-router.d.ts +0 -37
- package/dist/message-router.d.ts.map +0 -1
- package/dist/message-router.js +0 -60
- package/dist/message-router.js.map +0 -1
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
vi.mock("@mclawnet/logger", () => ({
|
|
6
|
+
createLogger: () => ({
|
|
7
|
+
info: vi.fn(),
|
|
8
|
+
warn: vi.fn(),
|
|
9
|
+
error: vi.fn(),
|
|
10
|
+
debug: vi.fn(),
|
|
11
|
+
}),
|
|
12
|
+
}));
|
|
13
|
+
const loadSwarmSnapshotMock = vi.fn();
|
|
14
|
+
const listRecoverableSwarmIdsMock = vi.fn();
|
|
15
|
+
vi.mock("../persistence.js", () => ({
|
|
16
|
+
saveSwarmSnapshot: vi.fn(),
|
|
17
|
+
deleteSwarmSnapshot: vi.fn(),
|
|
18
|
+
appendMessageLog: vi.fn(),
|
|
19
|
+
loadSwarmSnapshot: (...args) => loadSwarmSnapshotMock(...args),
|
|
20
|
+
listRecoverableSwarmIds: (...args) => listRecoverableSwarmIdsMock(...args),
|
|
21
|
+
readMessageLog: vi.fn(() => []),
|
|
22
|
+
}));
|
|
23
|
+
vi.mock("../retrospective.js", () => ({
|
|
24
|
+
runRetrospective: vi.fn(async () => ({})),
|
|
25
|
+
}));
|
|
26
|
+
import { SwarmCoordinator } from "../swarm-coordinator.js";
|
|
27
|
+
function makeAdapter() {
|
|
28
|
+
const calls = [];
|
|
29
|
+
return {
|
|
30
|
+
calls,
|
|
31
|
+
adapter: {
|
|
32
|
+
createSession: vi.fn(async (options) => {
|
|
33
|
+
calls.push(options);
|
|
34
|
+
return `proc-${options.sessionId}`;
|
|
35
|
+
}),
|
|
36
|
+
sendInput: vi.fn(),
|
|
37
|
+
closeSession: vi.fn(async () => { }),
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
describe("SwarmCoordinator — per-role backend wiring (M3.S4)", () => {
|
|
42
|
+
let sessionAdapter;
|
|
43
|
+
let calls;
|
|
44
|
+
let coordinator;
|
|
45
|
+
let tmpHome;
|
|
46
|
+
beforeEach(() => {
|
|
47
|
+
tmpHome = mkdtempSync(join(tmpdir(), "clawnet-test-"));
|
|
48
|
+
process.env.CLAWNET_HOME = tmpHome;
|
|
49
|
+
loadSwarmSnapshotMock.mockReset();
|
|
50
|
+
listRecoverableSwarmIdsMock.mockReset();
|
|
51
|
+
const a = makeAdapter();
|
|
52
|
+
sessionAdapter = a.adapter;
|
|
53
|
+
calls = a.calls;
|
|
54
|
+
coordinator = new SwarmCoordinator(sessionAdapter, { send: vi.fn() });
|
|
55
|
+
});
|
|
56
|
+
afterEach(() => {
|
|
57
|
+
delete process.env.CLAWNET_HOME;
|
|
58
|
+
rmSync(tmpHome, { recursive: true, force: true });
|
|
59
|
+
});
|
|
60
|
+
it("omits backend (undefined) when role.backend is not set (back-compat)", async () => {
|
|
61
|
+
await coordinator.create("sw-claude", {
|
|
62
|
+
workDir: "/tmp/sw-claude",
|
|
63
|
+
roles: [{ roleName: "queen", count: 1, eager: true }],
|
|
64
|
+
task: "test",
|
|
65
|
+
});
|
|
66
|
+
expect(calls.length).toBeGreaterThan(0);
|
|
67
|
+
expect(calls[0].backend).toBeUndefined();
|
|
68
|
+
});
|
|
69
|
+
it("passes backend='codex' when custom definition declares it", async () => {
|
|
70
|
+
await coordinator.create("sw-mix", {
|
|
71
|
+
workDir: "/tmp/sw-mix",
|
|
72
|
+
roles: [
|
|
73
|
+
{
|
|
74
|
+
roleName: "codex-bot",
|
|
75
|
+
count: 1,
|
|
76
|
+
eager: true,
|
|
77
|
+
customDefinition: {
|
|
78
|
+
name: "codex-bot",
|
|
79
|
+
shortName: "cb",
|
|
80
|
+
description: "codex bot",
|
|
81
|
+
color: "#0ff",
|
|
82
|
+
promptBody: "you are codex",
|
|
83
|
+
backend: "codex",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
task: "test",
|
|
88
|
+
});
|
|
89
|
+
expect(calls.length).toBeGreaterThan(0);
|
|
90
|
+
expect(calls[0].backend).toBe("codex");
|
|
91
|
+
});
|
|
92
|
+
it("passes backend='codex' from per-role override on a builtin role (UI selector path)", async () => {
|
|
93
|
+
await coordinator.create("sw-override", {
|
|
94
|
+
workDir: "/tmp/sw-override",
|
|
95
|
+
roles: [{ roleName: "queen", count: 1, eager: true, backend: "codex" }],
|
|
96
|
+
task: "test",
|
|
97
|
+
});
|
|
98
|
+
expect(calls[0].backend).toBe("codex");
|
|
99
|
+
});
|
|
100
|
+
it("recover() restores per-role backend from snapshot", async () => {
|
|
101
|
+
listRecoverableSwarmIdsMock.mockReturnValue([
|
|
102
|
+
{ workDir: "/tmp/sw-recover", swarmId: "S-recover" },
|
|
103
|
+
]);
|
|
104
|
+
loadSwarmSnapshotMock.mockReturnValue({
|
|
105
|
+
id: "S-recover",
|
|
106
|
+
hubSessionId: "S-recover",
|
|
107
|
+
workDir: "/tmp/sw-recover",
|
|
108
|
+
teamName: "default",
|
|
109
|
+
roles: [
|
|
110
|
+
{
|
|
111
|
+
instanceId: "queen-0",
|
|
112
|
+
roleName: "queen",
|
|
113
|
+
status: "active",
|
|
114
|
+
backendSessionId: "abc",
|
|
115
|
+
backend: "claude",
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
instanceId: "dev-0",
|
|
119
|
+
roleName: "developer",
|
|
120
|
+
status: "active",
|
|
121
|
+
backendSessionId: "def",
|
|
122
|
+
backend: "codex",
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
plan: null,
|
|
126
|
+
nextInstanceSeq: { queen: 1, developer: 1 },
|
|
127
|
+
savedAt: Date.now(),
|
|
128
|
+
status: "paused",
|
|
129
|
+
planStatus: "none",
|
|
130
|
+
});
|
|
131
|
+
await coordinator.recover("S-recover");
|
|
132
|
+
const queenCall = calls.find((c) => c.sessionId.endsWith("::queen-0"));
|
|
133
|
+
const devCall = calls.find((c) => c.sessionId.endsWith("::dev-0"));
|
|
134
|
+
expect(queenCall.backend).toBe("claude");
|
|
135
|
+
expect(devCall.backend).toBe("codex");
|
|
136
|
+
});
|
|
137
|
+
it("swarm.status payload includes per-role backend (prevents DB crewConfig corruption)", async () => {
|
|
138
|
+
// Repro for the bug where dev=codex roles were lost on continuation:
|
|
139
|
+
// buildStatusPayload dropped the backend field, hub overwrote
|
|
140
|
+
// crewConfig.roles in the DB with the lossy payload, and any path that
|
|
141
|
+
// recreated the swarm from crewConfig (e.g. continuation after finish)
|
|
142
|
+
// then spawned roles with default backend=claude.
|
|
143
|
+
const hubCalls = [];
|
|
144
|
+
const hub = {
|
|
145
|
+
send: vi.fn((msg) => {
|
|
146
|
+
hubCalls.push(msg);
|
|
147
|
+
}),
|
|
148
|
+
};
|
|
149
|
+
const a = makeAdapter();
|
|
150
|
+
const c = new SwarmCoordinator(a.adapter, hub);
|
|
151
|
+
await c.create("sw-status-backend", {
|
|
152
|
+
workDir: "/tmp/sw-status-backend",
|
|
153
|
+
roles: [
|
|
154
|
+
{ roleName: "queen", count: 1, eager: true, backend: "claude" },
|
|
155
|
+
{ roleName: "developer", count: 1, eager: true, backend: "codex" },
|
|
156
|
+
],
|
|
157
|
+
task: "test",
|
|
158
|
+
});
|
|
159
|
+
// spawnRole fires sendStatusUpdate after each role spawns.
|
|
160
|
+
const statusMsgs = hubCalls.filter((m) => m.type === "swarm.status");
|
|
161
|
+
expect(statusMsgs.length).toBeGreaterThan(0);
|
|
162
|
+
const lastStatus = statusMsgs[statusMsgs.length - 1];
|
|
163
|
+
const queenRole = lastStatus.roles.find((r) => r.instanceId === "queen-0");
|
|
164
|
+
const devRole = lastStatus.roles.find((r) => r.instanceId === "dev-0");
|
|
165
|
+
expect(queenRole.backend).toBe("claude");
|
|
166
|
+
expect(devRole.backend).toBe("codex");
|
|
167
|
+
});
|
|
168
|
+
it("spawn error includes roleName + instanceId + backend (M3.S5 #5)", async () => {
|
|
169
|
+
// When codex CLI is missing, the underlying adapter throws
|
|
170
|
+
// "Failed to spawn codex CLI: ENOENT". On its own that doesn't tell the
|
|
171
|
+
// user WHICH role needs codex — could be queen-0, dev-1, etc. Wrap with
|
|
172
|
+
// role context so the surfaced error pinpoints the failing role.
|
|
173
|
+
const failingAdapter = {
|
|
174
|
+
createSession: vi.fn(async (options) => {
|
|
175
|
+
if (options.backend === "codex") {
|
|
176
|
+
throw new Error("Failed to spawn codex CLI: spawn codex ENOENT");
|
|
177
|
+
}
|
|
178
|
+
return `proc-${options.sessionId}`;
|
|
179
|
+
}),
|
|
180
|
+
sendInput: vi.fn(),
|
|
181
|
+
closeSession: vi.fn(async () => { }),
|
|
182
|
+
};
|
|
183
|
+
const c = new SwarmCoordinator(failingAdapter, { send: vi.fn() });
|
|
184
|
+
let caught;
|
|
185
|
+
try {
|
|
186
|
+
await c.create("sw-missing-codex", {
|
|
187
|
+
workDir: "/tmp/sw-missing-codex",
|
|
188
|
+
roles: [
|
|
189
|
+
{ roleName: "developer", count: 1, eager: true, backend: "codex" },
|
|
190
|
+
],
|
|
191
|
+
task: "test",
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
caught = err;
|
|
196
|
+
}
|
|
197
|
+
expect(caught).toBeDefined();
|
|
198
|
+
// Must identify the failing role for the user
|
|
199
|
+
expect(caught.message).toContain("developer");
|
|
200
|
+
expect(caught.message).toContain("dev-0");
|
|
201
|
+
expect(caught.message).toContain("codex");
|
|
202
|
+
// Underlying cause preserved
|
|
203
|
+
expect(caught.message).toContain("Failed to spawn codex CLI");
|
|
204
|
+
});
|
|
205
|
+
it("threads per-role sandbox option through to SessionAdapter.createSession", async () => {
|
|
206
|
+
// Per-role sandbox: user can pick read-only / workspace-write /
|
|
207
|
+
// full-access per role. Must propagate from RoleSpec → spawnRole
|
|
208
|
+
// → SessionManager.createSession so each adapter can map to its
|
|
209
|
+
// own permission model.
|
|
210
|
+
await coordinator.create("sw-sandbox", {
|
|
211
|
+
workDir: "/tmp/sw-sandbox",
|
|
212
|
+
roles: [
|
|
213
|
+
{ roleName: "developer", count: 1, eager: true, sandbox: "full-access" },
|
|
214
|
+
],
|
|
215
|
+
task: "test",
|
|
216
|
+
});
|
|
217
|
+
const devCall = calls.find((c) => c.sessionId.endsWith("::dev-0"));
|
|
218
|
+
expect(devCall.sandbox).toBe("full-access");
|
|
219
|
+
});
|
|
220
|
+
it("swarm.status payload includes per-role sandbox (prevents DB crewConfig downgrade)", async () => {
|
|
221
|
+
// Same risk as the backend-downgrade bug from PR #72: hub overwrites
|
|
222
|
+
// crewConfig.roles in DB on each swarm.status push. If sandbox is
|
|
223
|
+
// dropped from the payload, continuation paths would lose it and
|
|
224
|
+
// recreate roles with default sandbox.
|
|
225
|
+
const hubCalls = [];
|
|
226
|
+
const hub = { send: vi.fn((msg) => { hubCalls.push(msg); }) };
|
|
227
|
+
const a = makeAdapter();
|
|
228
|
+
const c = new SwarmCoordinator(a.adapter, hub);
|
|
229
|
+
await c.create("sw-sandbox-status", {
|
|
230
|
+
workDir: "/tmp/sw-sandbox-status",
|
|
231
|
+
roles: [
|
|
232
|
+
{ roleName: "queen", count: 1, eager: true, sandbox: "read-only" },
|
|
233
|
+
{ roleName: "developer", count: 1, eager: true, sandbox: "full-access" },
|
|
234
|
+
],
|
|
235
|
+
task: "test",
|
|
236
|
+
});
|
|
237
|
+
const statusMsgs = hubCalls.filter((m) => m.type === "swarm.status");
|
|
238
|
+
const lastStatus = statusMsgs[statusMsgs.length - 1];
|
|
239
|
+
const queenRole = lastStatus.roles.find((r) => r.instanceId === "queen-0");
|
|
240
|
+
const devRole = lastStatus.roles.find((r) => r.instanceId === "dev-0");
|
|
241
|
+
expect(queenRole.sandbox).toBe("read-only");
|
|
242
|
+
expect(devRole.sandbox).toBe("full-access");
|
|
243
|
+
});
|
|
244
|
+
it("recover() restores per-role sandbox from snapshot", async () => {
|
|
245
|
+
listRecoverableSwarmIdsMock.mockReturnValue([
|
|
246
|
+
{ workDir: "/tmp/sw-sandbox-recover", swarmId: "S-sandbox" },
|
|
247
|
+
]);
|
|
248
|
+
loadSwarmSnapshotMock.mockReturnValue({
|
|
249
|
+
id: "S-sandbox",
|
|
250
|
+
hubSessionId: "S-sandbox",
|
|
251
|
+
workDir: "/tmp/sw-sandbox-recover",
|
|
252
|
+
teamName: "default",
|
|
253
|
+
roles: [
|
|
254
|
+
{ instanceId: "queen-0", roleName: "queen", status: "active", backend: "claude", sandbox: "read-only" },
|
|
255
|
+
{ instanceId: "dev-0", roleName: "developer", status: "active", backend: "codex", sandbox: "full-access" },
|
|
256
|
+
],
|
|
257
|
+
plan: null,
|
|
258
|
+
nextInstanceSeq: { queen: 1, developer: 1 },
|
|
259
|
+
savedAt: Date.now(),
|
|
260
|
+
status: "paused",
|
|
261
|
+
planStatus: "none",
|
|
262
|
+
});
|
|
263
|
+
await coordinator.recover("S-sandbox");
|
|
264
|
+
const queenCall = calls.find((c) => c.sessionId.endsWith("::queen-0"));
|
|
265
|
+
const devCall = calls.find((c) => c.sessionId.endsWith("::dev-0"));
|
|
266
|
+
expect(queenCall.sandbox).toBe("read-only");
|
|
267
|
+
expect(devCall.sandbox).toBe("full-access");
|
|
268
|
+
});
|
|
269
|
+
it("spec.sandbox overrides customDefinition's sandbox (UI selector wins)", async () => {
|
|
270
|
+
// CustomRoleDefinition can carry a static sandbox, but the UI
|
|
271
|
+
// per-spawn selector (spec.sandbox) must take precedence — same
|
|
272
|
+
// precedence rule as backend. Without this test the override path
|
|
273
|
+
// could silently regress (e.g., if someone refactors spawnRole and
|
|
274
|
+
// forgets to apply sandboxOverride before reading definition).
|
|
275
|
+
await coordinator.create("sw-sandbox-override", {
|
|
276
|
+
workDir: "/tmp/sw-sandbox-override",
|
|
277
|
+
roles: [
|
|
278
|
+
{
|
|
279
|
+
roleName: "codex-bot",
|
|
280
|
+
count: 1,
|
|
281
|
+
eager: true,
|
|
282
|
+
sandbox: "read-only", // wins
|
|
283
|
+
customDefinition: {
|
|
284
|
+
name: "codex-bot",
|
|
285
|
+
shortName: "cb",
|
|
286
|
+
description: "x",
|
|
287
|
+
color: "#0ff",
|
|
288
|
+
promptBody: "y",
|
|
289
|
+
sandbox: "full-access", // loses
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
],
|
|
293
|
+
task: "test",
|
|
294
|
+
});
|
|
295
|
+
const devCall = calls.find((c) => c.sessionId.includes("cb-0"));
|
|
296
|
+
expect(devCall.sandbox).toBe("read-only");
|
|
297
|
+
});
|
|
298
|
+
it("overlays UI sandbox onto template roleSpec (regression: sandbox dropped on initial spawn)", async () => {
|
|
299
|
+
// Bug: when the swarm is created from a template (templateName set),
|
|
300
|
+
// the overlay loop in create() merged backend from options.roles into
|
|
301
|
+
// the template's roleSpecs but FORGOT to merge sandbox. Result: the
|
|
302
|
+
// 6 initial roles spawned without the user's per-role sandbox pick
|
|
303
|
+
// and recovery.json had `sandbox: undefined` for every initial role.
|
|
304
|
+
// Only dynamically-added roles (which go through spawnRole directly
|
|
305
|
+
// with sandboxOverride) carried sandbox.
|
|
306
|
+
await coordinator.create("sw-tpl-sandbox", {
|
|
307
|
+
workDir: "/tmp/sw-tpl-sandbox",
|
|
308
|
+
templateName: "dev-team",
|
|
309
|
+
roles: [
|
|
310
|
+
{ roleName: "queen", sandbox: "read-only" },
|
|
311
|
+
{ roleName: "developer", sandbox: "full-access" },
|
|
312
|
+
],
|
|
313
|
+
task: "test",
|
|
314
|
+
});
|
|
315
|
+
const queenCall = calls.find((c) => c.sessionId.endsWith("::queen-0"));
|
|
316
|
+
const devCall = calls.find((c) => c.sessionId.endsWith("::dev-0"));
|
|
317
|
+
expect(queenCall?.sandbox).toBe("read-only");
|
|
318
|
+
expect(devCall?.sandbox).toBe("full-access");
|
|
319
|
+
});
|
|
320
|
+
it("applies DEFAULT_SANDBOX ('workspace-write') when no override is supplied", async () => {
|
|
321
|
+
// Role files don't declare sandbox, and not every caller passes an
|
|
322
|
+
// override. Without a fallback default, recovery.json would carry
|
|
323
|
+
// `sandbox: undefined` and the membership-change envelope would show
|
|
324
|
+
// a fallback string while the actual role state stayed empty.
|
|
325
|
+
await coordinator.create("sw-default-sandbox", {
|
|
326
|
+
workDir: "/tmp/sw-default-sandbox",
|
|
327
|
+
roles: [{ roleName: "developer", count: 1, eager: true }],
|
|
328
|
+
task: "test",
|
|
329
|
+
});
|
|
330
|
+
const devCall = calls.find((c) => c.sessionId.endsWith("::dev-0"));
|
|
331
|
+
expect(devCall?.sandbox).toBe("workspace-write");
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
//# sourceMappingURL=swarm-coordinator-backend.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm-coordinator-backend.test.js","sourceRoot":"","sources":["../../src/__tests__/swarm-coordinator-backend.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -144,9 +144,9 @@ describe("SwarmCoordinator — two-phase initialization", () => {
|
|
|
144
144
|
// queen should receive init-complete system message + user task via sendInput
|
|
145
145
|
const queenInputs = sessionAdapter._inputs.filter((i) => i.sessionId.includes("queen-"));
|
|
146
146
|
expect(queenInputs.length).toBeGreaterThanOrEqual(2);
|
|
147
|
-
// First message should be the init-
|
|
147
|
+
// First message should be the init membership-change notification
|
|
148
148
|
const initMsg = queenInputs[0].input;
|
|
149
|
-
expect(initMsg).toContain("
|
|
149
|
+
expect(initMsg).toContain("成员变更");
|
|
150
150
|
expect(initMsg).toContain("reviewer-0");
|
|
151
151
|
// Second message should be the user task
|
|
152
152
|
const taskMsg = queenInputs[1].input;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-coordinator-init.test.js","sourceRoot":"","sources":["../../src/__tests__/swarm-coordinator-init.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"swarm-coordinator-init.test.js","sourceRoot":"","sources":["../../src/__tests__/swarm-coordinator-init.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm-coordinator-plan-sync.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/swarm-coordinator-plan-sync.test.ts"],"names":[],"mappings":""}
|