opencode-swarm 7.200.8 → 7.200.10
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/.opencode/skills/ci-fix-monitor/SKILL.md +49 -0
- package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +11 -2
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/background/completion-observer.d.ts +2 -1
- package/dist/background/pending-delegations.d.ts +9 -1
- package/dist/background/pr-review-contract.d.ts +8 -0
- package/dist/cli/{attest-task-dxrfae0t.js → attest-task-yx2t832n.js} +78 -76
- package/dist/cli/{auto-checkpoint-6sacb90s.js → auto-checkpoint-15mvj9zm.js} +12 -12
- package/dist/cli/{capability-probe-dwqn2609.js → capability-probe-qjndmx6z.js} +1 -1
- package/dist/cli/{checkpoint-nwp1j6zv.js → checkpoint-65whgvwa.js} +23 -23
- package/dist/cli/{coder-settlement-gw7yz6j8.js → coder-settlement-sdg1he8p.js} +14 -13
- package/dist/cli/{config-doctor-9azv1kqx.js → config-doctor-4af2p2y4.js} +19 -19
- package/dist/cli/{core-0qgp0a8j.js → core-8swqc6kw.js} +6 -3
- package/dist/cli/{curation-policy-gy868ec3.js → curation-policy-1a23ftnv.js} +6 -6
- package/dist/cli/{curator-ekthxye6.js → curator-6ze04fz3.js} +53 -52
- package/dist/cli/{curator-drift-45snz8a6.js → curator-drift-ktf137da.js} +10 -10
- package/dist/cli/curator-llm-factory-7vq4rgg7.js +83 -0
- package/dist/cli/{doctor-knowledge-receipt-phase-id-fggff61y.js → doctor-knowledge-receipt-phase-id-0smwq3ar.js} +10 -10
- package/dist/cli/{evidence-summary-service-zc2fc8h1.js → evidence-summary-service-3bhq2gef.js} +26 -25
- package/dist/cli/{gate-evidence-r57ahtp0.js → gate-evidence-gcv0xgfc.js} +10 -9
- package/dist/cli/guardrail-explain-9t3mvm92.js +84 -0
- package/dist/cli/{guardrail-log-hskq7q1w.js → guardrail-log-ehgpan5n.js} +8 -8
- package/dist/cli/{guardrail-reset-ywcnk88z.js → guardrail-reset-q7m265wy.js} +53 -52
- package/dist/cli/{hive-promoter-k66hgffk.js → hive-promoter-857ranjf.js} +53 -52
- package/dist/cli/{index-4krkevgc.js → index-001tkp0j.js} +1 -1
- package/dist/cli/{index-k5h4mmwd.js → index-06sj5bjh.js} +5 -5
- package/dist/cli/{index-sg2sd66b.js → index-2dey2mtg.js} +6 -6
- package/dist/cli/{index-6w1x38yd.js → index-3h5ztpn5.js} +2 -2
- package/dist/cli/{index-kzyw3315.js → index-43zgg04r.js} +5 -5
- package/dist/cli/{index-wfd267ma.js → index-4dvqvn4k.js} +12905 -12414
- package/dist/cli/{index-q7z2yws5.js → index-60m7qnds.js} +8 -8
- package/dist/cli/{index-m6632p7f.js → index-66b4f2qd.js} +18 -13
- package/dist/cli/{index-c2k7q723.js → index-6cppzd9c.js} +1 -1
- package/dist/cli/{index-zjjxe0q5.js → index-6e7jxxys.js} +15 -15
- package/dist/cli/{index-jrpfzv5r.js → index-6ehx0pj4.js} +15 -15
- package/dist/cli/{index-yyrnkc3a.js → index-6m551cng.js} +2 -2
- package/dist/cli/{index-wgwg2b4d.js → index-8c6zshfj.js} +1 -1
- package/dist/cli/{index-8srvdpw6.js → index-8xtdxy91.js} +2 -2
- package/dist/cli/{index-mn75z39t.js → index-9qy3tzt5.js} +1 -1
- package/dist/cli/{index-057y0sbg.js → index-bt3pxs7r.js} +6 -6
- package/dist/cli/{index-0tvkfdwp.js → index-c34tgnwm.js} +7 -7
- package/dist/cli/{index-y7c4hqcj.js → index-ck7jpn0y.js} +1 -1
- package/dist/cli/{index-p2dst45x.js → index-ckq78kq1.js} +1 -1
- package/dist/cli/{index-8mrentmw.js → index-dp6hy23p.js} +58 -53
- package/dist/cli/{index-4fkxdnc7.js → index-erp7fk72.js} +1 -1
- package/dist/cli/{index-16n2s0zf.js → index-ev46f132.js} +8 -8
- package/dist/cli/{index-h7t7hvq3.js → index-fbn2mv67.js} +6 -6
- package/dist/cli/{index-vpxdf79m.js → index-ffm3d4cn.js} +17 -17
- package/dist/cli/{index-kekvdqj6.js → index-gsnj3a0h.js} +4 -4
- package/dist/cli/{index-zvvavx1h.js → index-h9qhy8r6.js} +6 -6
- package/dist/cli/{index-tecp3a77.js → index-kd1n3ne2.js} +9 -9
- package/dist/cli/{index-2wryy5a7.js → index-kxxy7zq4.js} +18 -20
- package/dist/cli/{index-ez0smmcc.js → index-mamw83wm.js} +53 -52
- package/dist/cli/{index-4a3ey5g6.js → index-mx34b7bm.js} +58 -57
- package/dist/cli/{index-wkbdfy1g.js → index-nv8tx9v4.js} +4 -4
- package/dist/cli/{index-q8vfw61p.js → index-pjrx4jkq.js} +1 -1
- package/dist/cli/{index-mhd6kdzr.js → index-qyj4383m.js} +1 -1
- package/dist/cli/{index-x8cac18k.js → index-r3wyt8za.js} +611 -1376
- package/dist/cli/{index-2x015vjy.js → index-rck7v4r4.js} +1 -1
- package/dist/cli/{index-vtpt8yns.js → index-rjsqf4hv.js} +2 -2
- package/dist/cli/{index-z72545mf.js → index-rnm6c33a.js} +5 -5
- package/dist/cli/{index-bk8r4m9j.js → index-rpvp88js.js} +2 -2
- package/dist/cli/{index-v839c9mv.js → index-tggyracy.js} +1 -1
- package/dist/cli/{index-5z4c9acx.js → index-tm6nwe43.js} +29 -29
- package/dist/cli/{index-c5wk61ak.js → index-vajbtn3v.js} +11 -11
- package/dist/cli/{index-4y90ecpz.js → index-vm3j8fvn.js} +201 -33
- package/dist/cli/{index-z1e9b5qk.js → index-vqknke9n.js} +121 -40
- package/dist/cli/{index-4ph7ad0b.js → index-vx1j2t5p.js} +2 -2
- package/dist/cli/{index-7h22y3ew.js → index-w0afnznk.js} +2 -2
- package/dist/cli/{index-76xnddca.js → index-ww5ne0g6.js} +7 -7
- package/dist/cli/index-xkavxqf2.js +1330 -0
- package/dist/cli/{index-tfaf8zy8.js → index-ywwazz81.js} +8 -8
- package/dist/cli/{index-21nbxx1t.js → index-zmp1k0mb.js} +2 -2
- package/dist/cli/index.js +57 -56
- package/dist/cli/{knowledge-escalator-9tz25k7f.js → knowledge-escalator-6p7m6gkc.js} +18 -18
- package/dist/cli/{knowledge-events-dcmpbb23.js → knowledge-events-w3ep12sq.js} +15 -15
- package/dist/cli/{knowledge-link-13t3nfrz.js → knowledge-link-r7e2t5c1.js} +5 -5
- package/dist/cli/{knowledge-store-dxwsme9q.js → knowledge-store-g4cpw0hz.js} +7 -7
- package/dist/cli/{knowledge-validator-7q1w62s7.js → knowledge-validator-zhy6mgxv.js} +9 -9
- package/dist/cli/{mcp-k38cfqtg.js → mcp-j1dy60mx.js} +1 -1
- package/dist/cli/{model-preflight-1tkjtc9z.js → model-preflight-962y2z1d.js} +56 -55
- package/dist/cli/{pending-delegations-q1fksmee.js → pending-delegations-erjwa1y6.js} +14 -14
- package/dist/cli/{pr-subscriptions-pf6mwhwr.js → pr-subscriptions-7fcawjg9.js} +13 -13
- package/dist/cli/{pr-workflow-gate-thazeaa1.js → pr-workflow-gate-j8ee9c6g.js} +53 -52
- package/dist/cli/{runner-q1g9atrv.js → runner-s4422dq4.js} +6 -6
- package/dist/cli/{scan-cursor-8k8rkrcj.js → scan-cursor-msz8j44s.js} +8 -8
- package/dist/cli/{schema-ff9v839b.js → schema-kep9t01t.js} +2 -2
- package/dist/cli/{scope-persistence-mzyqtkwv.js → scope-persistence-tx71g0ac.js} +18 -18
- package/dist/cli/{server-ss4jqd5y.js → server-6enk6sfw.js} +70 -69
- package/dist/cli/{skill-generator-fgk15dd5.js → skill-generator-p9fkx1g3.js} +20 -20
- package/dist/cli/{snapshot-coordination-init-e9gvsaj7.js → snapshot-coordination-init-kgftbdmq.js} +53 -52
- package/dist/cli/{speckit-checkoff-ec4g0hhc.js → speckit-checkoff-jfdwsy5n.js} +5 -5
- package/dist/cli/{telemetry-cr8q16wk.js → telemetry-j7zr1dht.js} +1 -1
- package/dist/cli/workflow-wal-file-xvvwcxr1.js +32 -0
- package/dist/cli/{workspace-snapshot-7hws89e9.js → workspace-snapshot-ksdspd74.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-egc9b97v.js → worktree-collision-ownership-hac3t2xv.js} +15 -15
- package/dist/cli/{worktree-isolation-9evd232c.js → worktree-isolation-tjvxcsr9.js} +53 -52
- package/dist/hooks/delegation-gate/worktree-isolation.d.ts +3 -0
- package/dist/hooks/shell-write-detect.d.ts +10 -0
- package/dist/index.js +686 -684
- package/dist/memory/redaction.d.ts +13 -3
- package/dist/pr-review/legacy-transcript-adapter.d.ts +15 -4
- package/dist/sandbox/macos/sandbox-exec-executor.d.ts +24 -0
- package/dist/workflow/coder-settlement.d.ts +5 -0
- package/dist/worktree/core.d.ts +3 -0
- package/dist/worktree/merge.d.ts +15 -1
- package/dist/worktree/ownership.d.ts +3 -0
- package/dist/worktree/settlement-artifact-lifecycle.d.ts +32 -0
- package/dist/worktree/settlement-source-recovery.d.ts +12 -0
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-ds4y7k0b.js +0 -82
- package/dist/cli/guardrail-explain-bc8garre.js +0 -83
|
@@ -26,9 +26,8 @@ var init_bubblewrap = __esm(() => {
|
|
|
26
26
|
|
|
27
27
|
// src/sandbox/macos/sandbox-exec-executor.ts
|
|
28
28
|
import { spawnSync } from "child_process";
|
|
29
|
-
import { existsSync,
|
|
29
|
+
import { existsSync, realpathSync } from "fs";
|
|
30
30
|
import * as os from "os";
|
|
31
|
-
import * as path from "path";
|
|
32
31
|
function resolveBinary(absolutePath, bareName) {
|
|
33
32
|
try {
|
|
34
33
|
if (_internals.exists(absolutePath)) {
|
|
@@ -43,11 +42,24 @@ function resolveSandboxExecBinary() {
|
|
|
43
42
|
function resolveProbeTargetBinary() {
|
|
44
43
|
return resolveBinary(TRUE_ABSOLUTE, "true");
|
|
45
44
|
}
|
|
45
|
+
function realpathOrSelf(p, fsx = REAL_FS) {
|
|
46
|
+
const match = SYSTEM_LINK_PREFIX.exec(p);
|
|
47
|
+
if (!match)
|
|
48
|
+
return p;
|
|
49
|
+
const target = `/private/${match[1]}`;
|
|
50
|
+
try {
|
|
51
|
+
if (fsx.realpath(`/${match[1]}`) !== target)
|
|
52
|
+
return p;
|
|
53
|
+
} catch {
|
|
54
|
+
return p;
|
|
55
|
+
}
|
|
56
|
+
return `/private${p}`;
|
|
57
|
+
}
|
|
46
58
|
function buildProbeProfile(tempDir) {
|
|
47
59
|
return `(version 1)
|
|
48
60
|
(allow default)
|
|
49
61
|
(deny file-write*)
|
|
50
|
-
(allow file-write* (subpath "${sbplEscapePath(tempDir)}"))`;
|
|
62
|
+
(allow file-write* (subpath "${sbplEscapePath(realpathOrSelf(tempDir))}"))`;
|
|
51
63
|
}
|
|
52
64
|
function probeSandboxExec() {
|
|
53
65
|
try {
|
|
@@ -120,17 +132,17 @@ function buildEnvOverridePrefix(envOverrides) {
|
|
|
120
132
|
}
|
|
121
133
|
return `${parts.join("; ")}; `;
|
|
122
134
|
}
|
|
123
|
-
function sbplEscapePath(
|
|
124
|
-
const withoutControlChars =
|
|
135
|
+
function sbplEscapePath(path) {
|
|
136
|
+
const withoutControlChars = path.split("").filter((ch) => {
|
|
125
137
|
const cp = ch.codePointAt(0);
|
|
126
138
|
return cp >= 32 && cp !== 127;
|
|
127
139
|
}).join("");
|
|
128
140
|
return withoutControlChars.replace(/\\/g, "\\\\").replace(/"/g, "\\\"");
|
|
129
141
|
}
|
|
130
142
|
function buildSandboxProfile(scopePaths, tempDir) {
|
|
131
|
-
const rwPaths =
|
|
143
|
+
const rwPaths = scopePaths.map((p) => realpathOrSelf(p));
|
|
132
144
|
if (tempDir) {
|
|
133
|
-
rwPaths.push(tempDir);
|
|
145
|
+
rwPaths.push(realpathOrSelf(tempDir));
|
|
134
146
|
}
|
|
135
147
|
const rwAllowLines = rwPaths.map((p) => `(allow file-write* (subpath "${sbplEscapePath(p)}"))`).join(`
|
|
136
148
|
`);
|
|
@@ -195,21 +207,11 @@ class MacOSSandboxExecutor {
|
|
|
195
207
|
const temp = tempDir ?? this._tempDir ?? os.tmpdir();
|
|
196
208
|
const allScopes = [...this._scopePaths, ...scopePaths];
|
|
197
209
|
const profile = buildSandboxProfile(allScopes, temp);
|
|
198
|
-
let profilePath;
|
|
199
|
-
try {
|
|
200
|
-
const profileDir = mkdtempSync(path.join(os.tmpdir(), "sandbox-"));
|
|
201
|
-
profilePath = path.join(profileDir, `profile-${process.pid}-${Date.now()}.sb`);
|
|
202
|
-
writeFileSync(profilePath, profile, { mode: 384 });
|
|
203
|
-
} catch (err) {
|
|
204
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
205
|
-
warn(`Sandbox disabled: failed to write profile (${message}). Falling through to tool-layer enforcement.`);
|
|
206
|
-
throw new SandboxError("Sandbox not available", "SANDBOX_UNAVAILABLE");
|
|
207
|
-
}
|
|
208
210
|
const binary = _internals.resolveSandboxExecBinary();
|
|
209
211
|
const envPrefix = buildEnvOverridePrefix(envOverrides);
|
|
210
212
|
const escapedCommand = shellEscape(`${envPrefix}${command}`);
|
|
211
|
-
const
|
|
212
|
-
return `${binary} -
|
|
213
|
+
const escapedProfile = shellEscape(profile);
|
|
214
|
+
return `${binary} -p '${escapedProfile}' bash -c '${escapedCommand}'`;
|
|
213
215
|
}
|
|
214
216
|
getEnvOverrides() {
|
|
215
217
|
return {
|
|
@@ -222,17 +224,20 @@ class MacOSSandboxExecutor {
|
|
|
222
224
|
};
|
|
223
225
|
}
|
|
224
226
|
}
|
|
225
|
-
var SANDBOX_UNAVAILABLE_CODES, SANDBOX_EXEC_ABSOLUTE = "/usr/bin/sandbox-exec", TRUE_ABSOLUTE = "/usr/bin/true", PROBE_FAILURE_TTL_MS = 60000, _probeMemo, _internals;
|
|
227
|
+
var SANDBOX_UNAVAILABLE_CODES, SANDBOX_EXEC_ABSOLUTE = "/usr/bin/sandbox-exec", TRUE_ABSOLUTE = "/usr/bin/true", REAL_FS, SYSTEM_LINK_PREFIX, PROBE_FAILURE_TTL_MS = 60000, _probeMemo, _internals;
|
|
226
228
|
var init_sandbox_exec_executor = __esm(() => {
|
|
227
229
|
init_logger();
|
|
228
230
|
init_executor();
|
|
229
231
|
SANDBOX_UNAVAILABLE_CODES = new Set(["ENOENT", "EACCES", "ENOSPC"]);
|
|
232
|
+
REAL_FS = { realpath: realpathSync };
|
|
233
|
+
SYSTEM_LINK_PREFIX = /^\/(tmp|var|etc)(?=\/|$)/;
|
|
230
234
|
_internals = {
|
|
231
235
|
probeSandboxExec,
|
|
232
236
|
probeSandboxExecMemoized,
|
|
233
237
|
resetProbeMemo,
|
|
234
238
|
buildSandboxProfile,
|
|
235
239
|
buildProbeProfile,
|
|
240
|
+
realpathOrSelf,
|
|
236
241
|
buildEnvOverridePrefix,
|
|
237
242
|
resolveSandboxExecBinary,
|
|
238
243
|
resolveProbeTargetBinary,
|
|
@@ -318,7 +323,7 @@ var init_edge_cases = () => {};
|
|
|
318
323
|
import { Buffer } from "buffer";
|
|
319
324
|
import { spawnSync as spawnSync2 } from "child_process";
|
|
320
325
|
import * as os2 from "os";
|
|
321
|
-
import * as
|
|
326
|
+
import * as path from "path";
|
|
322
327
|
function containsUnsafePathSyntax(value) {
|
|
323
328
|
return [...value].some((character) => character.charCodeAt(0) < 32 || UNSAFE_PATH_CHARACTERS.has(character));
|
|
324
329
|
}
|
|
@@ -327,15 +332,15 @@ function getSafeSystemRoot() {
|
|
|
327
332
|
if (typeof raw !== "string" || !/^[A-Za-z]:[\\/]/.test(raw) || containsUnsafePathSyntax(raw.slice(2)) || raw.slice(3).split(/[\\/]+/).some((segment) => segment === "." || segment === "..")) {
|
|
328
333
|
return DEFAULT_SYSTEM_ROOT;
|
|
329
334
|
}
|
|
330
|
-
const normalized =
|
|
335
|
+
const normalized = path.win32.normalize(raw);
|
|
331
336
|
return normalized.length > 3 ? normalized.replace(/\\+$/, "") : normalized;
|
|
332
337
|
}
|
|
333
338
|
function getWindowsExecutablePaths() {
|
|
334
339
|
const systemRoot = getSafeSystemRoot();
|
|
335
340
|
return {
|
|
336
341
|
systemRoot,
|
|
337
|
-
cmdExe:
|
|
338
|
-
powerShellExe:
|
|
342
|
+
cmdExe: path.win32.join(systemRoot, "System32", "cmd.exe"),
|
|
343
|
+
powerShellExe: path.win32.join(systemRoot, "System32", "WindowsPowerShell", "v1.0", "powershell.exe")
|
|
339
344
|
};
|
|
340
345
|
}
|
|
341
346
|
function probeWindowsSandbox() {
|
|
@@ -371,13 +376,13 @@ function normalizeInheritedPathEntry(rawEntry) {
|
|
|
371
376
|
if (!/^[A-Za-z]:[\\/]/.test(entry) || containsUnsafePathSyntax(entry.slice(2)) || entry.slice(3).split(/[\\/]+/).some((segment) => segment === "." || segment === "..")) {
|
|
372
377
|
return null;
|
|
373
378
|
}
|
|
374
|
-
const normalized =
|
|
379
|
+
const normalized = path.win32.normalize(entry);
|
|
375
380
|
return normalized.length > 3 ? normalized.replace(/\\+$/, "") : normalized;
|
|
376
381
|
}
|
|
377
382
|
function getSafeWindowsPath() {
|
|
378
383
|
const { systemRoot } = getWindowsExecutablePaths();
|
|
379
384
|
const candidates = [
|
|
380
|
-
|
|
385
|
+
path.win32.join(systemRoot, "System32"),
|
|
381
386
|
systemRoot,
|
|
382
387
|
...(process.env.PATH ?? "").split(";")
|
|
383
388
|
];
|
|
@@ -408,7 +413,7 @@ function isPathInScopes(command, scopes) {
|
|
|
408
413
|
const paths = command.match(pathPattern) || [];
|
|
409
414
|
if (paths.length === 0)
|
|
410
415
|
return true;
|
|
411
|
-
const normalizedPaths = paths.map((p) =>
|
|
416
|
+
const normalizedPaths = paths.map((p) => path.win32.resolve(p));
|
|
412
417
|
const normalizedScopes = scopes.map((s) => s.toLowerCase().replace(/\\+$/, ""));
|
|
413
418
|
return normalizedPaths.every((p) => {
|
|
414
419
|
const lower = p.toLowerCase();
|
|
@@ -620,16 +625,16 @@ __export(exports_runner_client, {
|
|
|
620
625
|
import { spawn, spawnSync as spawnSync3 } from "child_process";
|
|
621
626
|
import * as fs from "fs";
|
|
622
627
|
import * as os3 from "os";
|
|
623
|
-
import * as
|
|
628
|
+
import * as path2 from "path";
|
|
624
629
|
import { fileURLToPath } from "url";
|
|
625
630
|
function findRunnerBinary() {
|
|
626
631
|
const arch = process.arch === "x64" ? "x64" : "arm64";
|
|
627
632
|
const platform = "win32";
|
|
628
633
|
const runtimeDir = _internals3.runtimeDir ?? _runtimeDir;
|
|
629
634
|
const packagePaths = [
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
635
|
+
path2.resolve(runtimeDir, "..", "binaries", `${platform}-${arch}`, "swarm-sandbox-runner.exe"),
|
|
636
|
+
path2.resolve(runtimeDir, "..", "..", "..", "binaries", `${platform}-${arch}`, "swarm-sandbox-runner.exe"),
|
|
637
|
+
path2.resolve(runtimeDir, "..", "..", "..", "..", "binaries", `${platform}-${arch}`, "swarm-sandbox-runner.exe")
|
|
633
638
|
];
|
|
634
639
|
for (const p of packagePaths) {
|
|
635
640
|
try {
|
|
@@ -713,7 +718,7 @@ function probe() {
|
|
|
713
718
|
capabilities,
|
|
714
719
|
error: `runner protocol mismatch (got ${reportedProtocol ?? "none"}, expected ${RUNNER_PROTOCOL_SCHEMA_VERSION})`
|
|
715
720
|
};
|
|
716
|
-
criticalWarn(`[sandbox] ${_cachedProbe.error} at ${
|
|
721
|
+
criticalWarn(`[sandbox] ${_cachedProbe.error} at ${path2.basename(binary)} \u2014 stale or foreign runner binary refused; degrading to weak sandbox. Run /swarm diagnose for details.`);
|
|
717
722
|
return _cachedProbe;
|
|
718
723
|
}
|
|
719
724
|
let mode = "none";
|
|
@@ -817,8 +822,8 @@ function _resetProbeCache() {
|
|
|
817
822
|
}
|
|
818
823
|
function buildDefaultPolicy(workspaceRoot, runId) {
|
|
819
824
|
const id = runId ?? `swarm-${crypto.randomUUID?.() ?? Date.now()}`;
|
|
820
|
-
const appData = process.env.LOCALAPPDATA ??
|
|
821
|
-
const tempRoot =
|
|
825
|
+
const appData = process.env.LOCALAPPDATA ?? path2.join(os3.homedir(), "AppData", "Local");
|
|
826
|
+
const tempRoot = path2.join(appData, "opencode-swarm", "sandbox", id, "temp");
|
|
822
827
|
return {
|
|
823
828
|
schema_version: 1,
|
|
824
829
|
run_id: id,
|
|
@@ -872,7 +877,7 @@ var init_runner_client = __esm(() => {
|
|
|
872
877
|
import * as crypto2 from "crypto";
|
|
873
878
|
import * as fs2 from "fs";
|
|
874
879
|
import * as os4 from "os";
|
|
875
|
-
import * as
|
|
880
|
+
import * as path3 from "path";
|
|
876
881
|
|
|
877
882
|
class NativeWindowsSandboxExecutor {
|
|
878
883
|
mechanism;
|
|
@@ -950,11 +955,11 @@ class NativeWindowsSandboxExecutor {
|
|
|
950
955
|
}
|
|
951
956
|
}
|
|
952
957
|
const policyJson = JSON.stringify(policy);
|
|
953
|
-
const policyDir =
|
|
958
|
+
const policyDir = path3.join(os4.tmpdir(), "swarm-sandbox-policies");
|
|
954
959
|
try {
|
|
955
960
|
fs2.mkdirSync(policyDir, { recursive: true });
|
|
956
961
|
} catch {}
|
|
957
|
-
const policyFile =
|
|
962
|
+
const policyFile = path3.join(policyDir, `${runId}.json`);
|
|
958
963
|
fs2.writeFileSync(policyFile, policyJson, "utf-8");
|
|
959
964
|
const mode = this._probeResult.mode === "none" ? "auto" : this._probeResult.mode;
|
|
960
965
|
const escapedBinary = binary.includes(" ") ? `"${binary}"` : binary;
|
|
@@ -1047,7 +1052,7 @@ async function _createExecutor() {
|
|
|
1047
1052
|
return null;
|
|
1048
1053
|
}
|
|
1049
1054
|
async function _createLinuxExecutor() {
|
|
1050
|
-
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isBubblewrapAvailable } = await import("./capability-probe-
|
|
1055
|
+
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isBubblewrapAvailable } = await import("./capability-probe-qjndmx6z.js");
|
|
1051
1056
|
await new SandboxCapabilityProbe2().detect();
|
|
1052
1057
|
if (!isBubblewrapAvailable()) {
|
|
1053
1058
|
return null;
|
|
@@ -1067,7 +1072,7 @@ async function _createMacOSExecutor() {
|
|
|
1067
1072
|
}
|
|
1068
1073
|
return null;
|
|
1069
1074
|
}
|
|
1070
|
-
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isSandboxExecAvailable } = await import("./capability-probe-
|
|
1075
|
+
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isSandboxExecAvailable } = await import("./capability-probe-qjndmx6z.js");
|
|
1071
1076
|
await new SandboxCapabilityProbe2().detect();
|
|
1072
1077
|
if (!isSandboxExecAvailable()) {
|
|
1073
1078
|
return null;
|
|
@@ -1080,7 +1085,7 @@ async function _createMacOSExecutor() {
|
|
|
1080
1085
|
}
|
|
1081
1086
|
}
|
|
1082
1087
|
async function _createWindowsExecutor() {
|
|
1083
|
-
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isWindowsSandboxAvailable } = await import("./capability-probe-
|
|
1088
|
+
const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isWindowsSandboxAvailable } = await import("./capability-probe-qjndmx6z.js");
|
|
1084
1089
|
await new SandboxCapabilityProbe2().detect();
|
|
1085
1090
|
if (!isWindowsSandboxAvailable()) {
|
|
1086
1091
|
return null;
|
|
@@ -1327,7 +1332,7 @@ var init_bubblewrap_executor = __esm(() => {
|
|
|
1327
1332
|
import { execFile, spawnSync as spawnSync5 } from "child_process";
|
|
1328
1333
|
import * as fs3 from "fs";
|
|
1329
1334
|
import * as os5 from "os";
|
|
1330
|
-
import * as
|
|
1335
|
+
import * as path4 from "path";
|
|
1331
1336
|
function assessSandboxRequirements(capability, requirements) {
|
|
1332
1337
|
if (!requirements || requirements.mode !== "required") {
|
|
1333
1338
|
return { satisfied: true, missing: [] };
|
|
@@ -1347,7 +1352,7 @@ function assessSandboxRequirements(capability, requirements) {
|
|
|
1347
1352
|
function fileIdentity(input) {
|
|
1348
1353
|
if (!input)
|
|
1349
1354
|
return "missing";
|
|
1350
|
-
const candidate =
|
|
1355
|
+
const candidate = path4.normalize(input);
|
|
1351
1356
|
try {
|
|
1352
1357
|
const link = fs3.lstatSync(candidate, { bigint: true });
|
|
1353
1358
|
const stat = fs3.statSync(candidate, { bigint: true });
|
|
@@ -1387,11 +1392,11 @@ function resolveWindowsCommandProcessorBinary() {
|
|
|
1387
1392
|
candidates.push(comSpec);
|
|
1388
1393
|
}
|
|
1389
1394
|
const pathEnv = process.env.Path ?? process.env.PATH ?? "";
|
|
1390
|
-
for (const entry of pathEnv.split(
|
|
1395
|
+
for (const entry of pathEnv.split(path4.delimiter)) {
|
|
1391
1396
|
const trimmed = entry.trim();
|
|
1392
1397
|
if (!trimmed)
|
|
1393
1398
|
continue;
|
|
1394
|
-
candidates.push(
|
|
1399
|
+
candidates.push(path4.join(trimmed, "cmd.exe"));
|
|
1395
1400
|
}
|
|
1396
1401
|
for (const candidate of candidates) {
|
|
1397
1402
|
try {
|
|
@@ -1473,10 +1478,10 @@ function runBoundedSync(cmd, args, input) {
|
|
|
1473
1478
|
}
|
|
1474
1479
|
function probeLinuxBehavior() {
|
|
1475
1480
|
const binary = _internals4.resolveBwrapBinary();
|
|
1476
|
-
const tempRoot = fs3.mkdtempSync(
|
|
1477
|
-
const allowedRoot =
|
|
1478
|
-
const inScopeFile =
|
|
1479
|
-
const outOfScopeFile =
|
|
1481
|
+
const tempRoot = fs3.mkdtempSync(path4.join(os5.tmpdir(), "swarm-bwrap-probe-"));
|
|
1482
|
+
const allowedRoot = path4.join(tempRoot, "allowed");
|
|
1483
|
+
const inScopeFile = path4.join(allowedRoot, "inside.txt");
|
|
1484
|
+
const outOfScopeFile = path4.join(tempRoot, "outside.txt");
|
|
1480
1485
|
fs3.mkdirSync(allowedRoot, { recursive: true });
|
|
1481
1486
|
const reasons = [];
|
|
1482
1487
|
let filesystem = "weak";
|
|
@@ -1551,11 +1556,11 @@ function probeLinuxBehavior() {
|
|
|
1551
1556
|
}
|
|
1552
1557
|
function probeMacOSBehavior() {
|
|
1553
1558
|
const binary = _internals.resolveSandboxExecBinary();
|
|
1554
|
-
const tempRoot = fs3.mkdtempSync(
|
|
1555
|
-
const allowedRoot =
|
|
1556
|
-
const sandboxTemp =
|
|
1557
|
-
const inScopeFile =
|
|
1558
|
-
const outOfScopeFile =
|
|
1559
|
+
const tempRoot = fs3.mkdtempSync(path4.join(os5.tmpdir(), "swarm-seatbelt-probe-"));
|
|
1560
|
+
const allowedRoot = path4.join(tempRoot, "allowed");
|
|
1561
|
+
const sandboxTemp = path4.join(tempRoot, "sandbox-tmp");
|
|
1562
|
+
const inScopeFile = path4.join(allowedRoot, "inside.txt");
|
|
1563
|
+
const outOfScopeFile = path4.join(tempRoot, "outside.txt");
|
|
1559
1564
|
fs3.mkdirSync(allowedRoot, { recursive: true });
|
|
1560
1565
|
fs3.mkdirSync(sandboxTemp, { recursive: true });
|
|
1561
1566
|
const profile = _internals.buildSandboxProfile([allowedRoot], sandboxTemp);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
computePlanStructureHash
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-6e7jxxys.js";
|
|
5
5
|
import {
|
|
6
6
|
deleteCoordinationState,
|
|
7
7
|
importCoordinationOnce,
|
|
@@ -9,20 +9,23 @@ import {
|
|
|
9
9
|
transitionCoordinationState,
|
|
10
10
|
transitionCoordinationStateWithinTransaction,
|
|
11
11
|
withCoordinationTransaction
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-rck7v4r4.js";
|
|
13
13
|
import {
|
|
14
14
|
getProjectDb
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-ck7jpn0y.js";
|
|
16
16
|
import {
|
|
17
17
|
canonicalExistingFilesystemPath,
|
|
18
18
|
legacyCanonicalExistingFilesystemPath
|
|
19
19
|
} from "./index-ry16d01s.js";
|
|
20
20
|
import {
|
|
21
21
|
appendCoreEventSync
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-rjsqf4hv.js";
|
|
23
23
|
import {
|
|
24
24
|
derivePlanId
|
|
25
25
|
} from "./index-7pmbnjvj.js";
|
|
26
|
+
import {
|
|
27
|
+
PlanSchema
|
|
28
|
+
} from "./index-3t46mez1.js";
|
|
26
29
|
import {
|
|
27
30
|
init_path_identity,
|
|
28
31
|
unsafePathTextReason
|
|
@@ -36,10 +39,7 @@ import {
|
|
|
36
39
|
import {
|
|
37
40
|
atomicWriteSwarmFile,
|
|
38
41
|
atomicWriteSwarmFileSync
|
|
39
|
-
} from "./index-
|
|
40
|
-
import {
|
|
41
|
-
PlanSchema
|
|
42
|
-
} from "./index-3t46mez1.js";
|
|
42
|
+
} from "./index-9qy3tzt5.js";
|
|
43
43
|
import {
|
|
44
44
|
__toESM
|
|
45
45
|
} from "./index-a76rekgs.js";
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
observeStoreHealth
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-8xtdxy91.js";
|
|
5
|
+
import {
|
|
6
|
+
init_schema,
|
|
7
|
+
stripKnownSwarmPrefix
|
|
8
|
+
} from "./index-06sj5bjh.js";
|
|
5
9
|
import {
|
|
6
10
|
getPathFlavor,
|
|
7
11
|
init_path_identity,
|
|
@@ -14,7 +18,7 @@ import {
|
|
|
14
18
|
} from "./index-9rwhas09.js";
|
|
15
19
|
import {
|
|
16
20
|
telemetry
|
|
17
|
-
} from "./index-
|
|
21
|
+
} from "./index-6cppzd9c.js";
|
|
18
22
|
import {
|
|
19
23
|
init_git_executable,
|
|
20
24
|
resolveGitExecutable
|
|
@@ -26,10 +30,6 @@ import {
|
|
|
26
30
|
init_logger,
|
|
27
31
|
warn
|
|
28
32
|
} from "./index-zgwm4ryv.js";
|
|
29
|
-
import {
|
|
30
|
-
init_schema,
|
|
31
|
-
stripKnownSwarmPrefix
|
|
32
|
-
} from "./index-k5h4mmwd.js";
|
|
33
33
|
import {
|
|
34
34
|
init_constants
|
|
35
35
|
} from "./index-xfzkq1k4.js";
|
|
@@ -4,15 +4,28 @@ import {
|
|
|
4
4
|
ensureTaskCheckpointReceipt,
|
|
5
5
|
loadPlan,
|
|
6
6
|
updateTaskCheckpointReceipt
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-tm6nwe43.js";
|
|
8
8
|
import {
|
|
9
9
|
tool
|
|
10
10
|
} from "./index-9nyqt3kb.js";
|
|
11
|
+
import {
|
|
12
|
+
readLedgerEvents
|
|
13
|
+
} from "./index-6e7jxxys.js";
|
|
11
14
|
import {
|
|
12
15
|
init_executor,
|
|
13
16
|
isUntrustedEnvKey,
|
|
14
17
|
isValidEnvKey
|
|
15
|
-
} from "./index-
|
|
18
|
+
} from "./index-dp6hy23p.js";
|
|
19
|
+
import {
|
|
20
|
+
appendCoreEventSync
|
|
21
|
+
} from "./index-rjsqf4hv.js";
|
|
22
|
+
import {
|
|
23
|
+
derivePlanId,
|
|
24
|
+
derivePlanIdentityHash
|
|
25
|
+
} from "./index-7pmbnjvj.js";
|
|
26
|
+
import {
|
|
27
|
+
loadPluginConfigWithMeta
|
|
28
|
+
} from "./index-ww5ne0g6.js";
|
|
16
29
|
import {
|
|
17
30
|
GitBinaryMissingError,
|
|
18
31
|
GitSpawnCwdError,
|
|
@@ -22,17 +35,7 @@ import {
|
|
|
22
35
|
} from "./index-spggmr30.js";
|
|
23
36
|
import {
|
|
24
37
|
validateSwarmPath
|
|
25
|
-
} from "./index-
|
|
26
|
-
import {
|
|
27
|
-
readLedgerEvents
|
|
28
|
-
} from "./index-zjjxe0q5.js";
|
|
29
|
-
import {
|
|
30
|
-
appendCoreEventSync
|
|
31
|
-
} from "./index-vtpt8yns.js";
|
|
32
|
-
import {
|
|
33
|
-
derivePlanId,
|
|
34
|
-
derivePlanIdentityHash
|
|
35
|
-
} from "./index-7pmbnjvj.js";
|
|
38
|
+
} from "./index-001tkp0j.js";
|
|
36
39
|
import {
|
|
37
40
|
assertProjectRoot,
|
|
38
41
|
hasExplicitProjectBoundary,
|
|
@@ -43,10 +46,7 @@ import {
|
|
|
43
46
|
} from "./index-ejhxgyvm.js";
|
|
44
47
|
import {
|
|
45
48
|
atomicWriteSwarmFileSync
|
|
46
|
-
} from "./index-
|
|
47
|
-
import {
|
|
48
|
-
loadPluginConfigWithMeta
|
|
49
|
-
} from "./index-76xnddca.js";
|
|
49
|
+
} from "./index-9qy3tzt5.js";
|
|
50
50
|
import {
|
|
51
51
|
GIT_BINARY_ENV_VAR,
|
|
52
52
|
describeGitResolution,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
queryHistoricalOutcomes
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-6ehx0pj4.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveHiveEventsPath
|
|
7
7
|
} from "./index-ae75rja9.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveKnowledgeStoreDir
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-erp7fk72.js";
|
|
11
11
|
import {
|
|
12
12
|
atomicWriteFile
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-6m551cng.js";
|
|
14
14
|
import {
|
|
15
15
|
canonicalRootKey
|
|
16
16
|
} from "./index-te9hq2f4.js";
|
|
@@ -708,7 +708,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
|
|
|
708
708
|
}
|
|
709
709
|
let bumps = 0;
|
|
710
710
|
if (deltas.length > 0) {
|
|
711
|
-
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-
|
|
711
|
+
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-g4cpw0hz.js");
|
|
712
712
|
bumps = await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
|
|
713
713
|
}
|
|
714
714
|
return {
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
readKnowledgeEvents,
|
|
4
4
|
recordKnowledgeEvent
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-gsnj3a0h.js";
|
|
6
6
|
import {
|
|
7
7
|
queryHistoricalOutcomes
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-6ehx0pj4.js";
|
|
9
9
|
import {
|
|
10
10
|
jaccardBigram,
|
|
11
11
|
readKnowledge,
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
resolveSwarmKnowledgePath,
|
|
14
14
|
transactKnowledge,
|
|
15
15
|
wordBigrams
|
|
16
|
-
} from "./index-
|
|
16
|
+
} from "./index-vajbtn3v.js";
|
|
17
17
|
import {
|
|
18
18
|
init_knowledge_types,
|
|
19
19
|
isActiveStatus
|
|
@@ -226,11 +226,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
|
|
|
226
226
|
alreadyInactive: true
|
|
227
227
|
};
|
|
228
228
|
}
|
|
229
|
-
const { quarantineEntry } = await import("./knowledge-validator-
|
|
229
|
+
const { quarantineEntry } = await import("./knowledge-validator-zhy6mgxv.js");
|
|
230
230
|
let policyConfig;
|
|
231
231
|
try {
|
|
232
|
-
const { KnowledgeConfigSchema } = await import("./schema-
|
|
233
|
-
const { loadPluginConfigWithMeta } = await import("./index-
|
|
232
|
+
const { KnowledgeConfigSchema } = await import("./schema-kep9t01t.js");
|
|
233
|
+
const { loadPluginConfigWithMeta } = await import("./index-c34tgnwm.js");
|
|
234
234
|
const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
|
|
235
235
|
policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
|
|
236
236
|
} catch {
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import {
|
|
3
|
-
validateSwarmPath
|
|
4
|
-
} from "./index-4krkevgc.js";
|
|
5
2
|
import {
|
|
6
3
|
deleteCoordinationState,
|
|
7
4
|
importCoordinationOnce,
|
|
8
5
|
listCoordinationStates,
|
|
9
6
|
transitionCoordinationState,
|
|
10
7
|
withCoordinationTransaction
|
|
11
|
-
} from "./index-
|
|
8
|
+
} from "./index-rck7v4r4.js";
|
|
12
9
|
import {
|
|
13
10
|
getProjectDb,
|
|
14
11
|
projectDbExists
|
|
15
|
-
} from "./index-
|
|
12
|
+
} from "./index-ck7jpn0y.js";
|
|
16
13
|
import {
|
|
17
14
|
observeStoreHealth
|
|
18
|
-
} from "./index-
|
|
15
|
+
} from "./index-8xtdxy91.js";
|
|
16
|
+
import {
|
|
17
|
+
validateSwarmPath
|
|
18
|
+
} from "./index-001tkp0j.js";
|
|
19
19
|
import {
|
|
20
20
|
withEvidenceLock
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-pjrx4jkq.js";
|
|
22
22
|
import {
|
|
23
23
|
telemetry
|
|
24
|
-
} from "./index-
|
|
24
|
+
} from "./index-6cppzd9c.js";
|
|
25
25
|
import {
|
|
26
26
|
canonicalRootKey,
|
|
27
27
|
canonicalRootKeyFresh,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
} from "./index-te9hq2f4.js";
|
|
30
30
|
import {
|
|
31
31
|
atomicWriteSwarmFileSync
|
|
32
|
-
} from "./index-
|
|
32
|
+
} from "./index-9qy3tzt5.js";
|
|
33
33
|
import {
|
|
34
34
|
log
|
|
35
35
|
} from "./index-zgwm4ryv.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
loadPlanJsonOnly
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-tm6nwe43.js";
|
|
5
5
|
import {
|
|
6
6
|
isCanonicalPathWithinRoot
|
|
7
7
|
} from "./index-6b295cas.js";
|
|
@@ -14,10 +14,7 @@ import {
|
|
|
14
14
|
legacyEpicIssuePath,
|
|
15
15
|
migrateLegacyEpicConfig,
|
|
16
16
|
resolveEpicConfig
|
|
17
|
-
} from "./index-
|
|
18
|
-
import {
|
|
19
|
-
log
|
|
20
|
-
} from "./index-zgwm4ryv.js";
|
|
17
|
+
} from "./index-ww5ne0g6.js";
|
|
21
18
|
import {
|
|
22
19
|
FALLBACK_MODELS_MAX,
|
|
23
20
|
GATE_CONFIG_KNOWN_SECTION_KEYS,
|
|
@@ -28,7 +25,10 @@ import {
|
|
|
28
25
|
init_schema,
|
|
29
26
|
retiredEpicKeyReplacement,
|
|
30
27
|
stripKnownSwarmPrefix
|
|
31
|
-
} from "./index-
|
|
28
|
+
} from "./index-06sj5bjh.js";
|
|
29
|
+
import {
|
|
30
|
+
log
|
|
31
|
+
} from "./index-zgwm4ryv.js";
|
|
32
32
|
import {
|
|
33
33
|
ALL_AGENT_NAMES,
|
|
34
34
|
TOOL_NAME_SET,
|
|
@@ -711,12 +711,15 @@ function levenshteinDistance(a, b) {
|
|
|
711
711
|
}
|
|
712
712
|
return matrix[al][bl];
|
|
713
713
|
}
|
|
714
|
+
function describeValueType(value) {
|
|
715
|
+
return Array.isArray(value) ? "array" : typeof value;
|
|
716
|
+
}
|
|
714
717
|
function emitObjectTypeMismatch(key, value, findings) {
|
|
715
718
|
if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || value === null)) {
|
|
716
719
|
findings.push({
|
|
717
720
|
id: `invalid-${key}-type`,
|
|
718
721
|
title: `Invalid ${key} type`,
|
|
719
|
-
description: `"${key}" must be an object, got ${
|
|
722
|
+
description: `"${key}" must be an object, got ${describeValueType(value)}`,
|
|
720
723
|
severity: "error",
|
|
721
724
|
path: key,
|
|
722
725
|
currentValue: value,
|
|
@@ -1348,21 +1351,16 @@ function validateConfigKey(path2, value) {
|
|
|
1348
1351
|
}
|
|
1349
1352
|
switch (path2) {
|
|
1350
1353
|
case "agents": {
|
|
1351
|
-
if (value !==
|
|
1354
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
1355
|
+
const kind = describeValueType(value);
|
|
1352
1356
|
findings.push({
|
|
1353
|
-
id: "
|
|
1354
|
-
title: "
|
|
1355
|
-
description:
|
|
1356
|
-
severity: "
|
|
1357
|
+
id: "invalid-agents-type",
|
|
1358
|
+
title: "Invalid agents type",
|
|
1359
|
+
description: `"agents" must be an object keyed by agent name, got ${kind}`,
|
|
1360
|
+
severity: "error",
|
|
1357
1361
|
path: "agents",
|
|
1358
1362
|
currentValue: value,
|
|
1359
|
-
autoFixable: false
|
|
1360
|
-
proposedFix: {
|
|
1361
|
-
type: "remove",
|
|
1362
|
-
path: "agents",
|
|
1363
|
-
description: "Remove deprecated agents config - use swarms instead",
|
|
1364
|
-
risk: "low"
|
|
1365
|
-
}
|
|
1363
|
+
autoFixable: false
|
|
1366
1364
|
});
|
|
1367
1365
|
}
|
|
1368
1366
|
break;
|
|
@@ -1571,7 +1569,7 @@ function validateConfigKey(path2, value) {
|
|
|
1571
1569
|
findings.push({
|
|
1572
1570
|
id: "invalid-swarms-type",
|
|
1573
1571
|
title: "Invalid swarms type",
|
|
1574
|
-
description: `"swarms" must be an object, got ${
|
|
1572
|
+
description: `"swarms" must be an object, got ${describeValueType(value)}`,
|
|
1575
1573
|
severity: "error",
|
|
1576
1574
|
path: "swarms",
|
|
1577
1575
|
currentValue: value,
|