opencode-swarm 7.192.1 → 7.192.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/.opencode/skills/critic-gate/SKILL.md +2 -1
  2. package/.opencode/skills/execute/SKILL.md +1 -1
  3. package/README.md +5 -3
  4. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  5. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  6. package/dist/agents/critic.d.ts +2 -2
  7. package/dist/cli/{auto-checkpoint-kkakqktp.js → auto-checkpoint-8c7hpz0z.js} +8 -8
  8. package/dist/cli/{capability-probe-3mgxcfr9.js → capability-probe-rty1315z.js} +1 -1
  9. package/dist/cli/{checkpoint-cefw75xe.js → checkpoint-98h7ftn4.js} +16 -16
  10. package/dist/cli/{coder-settlement-tgdjczyp.js → coder-settlement-0nhsjfh1.js} +12 -12
  11. package/dist/cli/{config-doctor-sns7gbj2.js → config-doctor-ah661gsm.js} +15 -15
  12. package/dist/cli/{core-q8xvp8bw.js → core-eyk369jx.js} +3 -3
  13. package/dist/cli/{curation-policy-2q5xs0xg.js → curation-policy-yzdznz4z.js} +6 -6
  14. package/dist/cli/{curator-drift-1n3akmda.js → curator-drift-k6f7mnj5.js} +8 -8
  15. package/dist/cli/curator-llm-factory-9g9p90jz.js +82 -0
  16. package/dist/cli/{curator-mgdsxrpv.js → curator-t9cwtz64.js} +43 -43
  17. package/dist/cli/{doctor-knowledge-receipt-phase-id-33bp8fcs.js → doctor-knowledge-receipt-phase-id-dwygxv2m.js} +8 -8
  18. package/dist/cli/{evidence-summary-service-sb888pg8.js → evidence-summary-service-b9xq092m.js} +19 -19
  19. package/dist/cli/{gate-evidence-rmk87c6m.js → gate-evidence-g3qpsr62.js} +7 -7
  20. package/dist/cli/guardrail-explain-784a2m4p.js +83 -0
  21. package/dist/cli/{guardrail-log-d18dcweh.js → guardrail-log-b862hykr.js} +7 -7
  22. package/dist/cli/{guardrail-reset-1xeeetk7.js → guardrail-reset-avehjarw.js} +43 -43
  23. package/dist/cli/{hive-promoter-44grgbq4.js → hive-promoter-0zv095rz.js} +43 -43
  24. package/dist/cli/{index-cje7tt58.js → index-043r3t12.js} +1 -1
  25. package/dist/cli/{index-b79a8pc2.js → index-04knttpn.js} +2 -2
  26. package/dist/cli/{index-xjqa26fs.js → index-0e1nxkte.js} +1 -1
  27. package/dist/cli/{index-63v3gmgr.js → index-1n7sf9gz.js} +2 -2
  28. package/dist/cli/{index-km4x7yfb.js → index-31bd6hrm.js} +11 -11
  29. package/dist/cli/{index-95hc7xn4.js → index-3bst6f3c.js} +3 -3
  30. package/dist/cli/{index-edk2sgse.js → index-4bpnf2eg.js} +2 -2
  31. package/dist/cli/{index-w52xyp9v.js → index-4e8xcgkx.js} +2 -2
  32. package/dist/cli/{index-advcaree.js → index-4g39c948.js} +4 -4
  33. package/dist/cli/{index-k6h66zm3.js → index-4twjbsfw.js} +2 -2
  34. package/dist/cli/{index-xw19x0t7.js → index-5dws7eyb.js} +1 -1
  35. package/dist/cli/{index-t0se5zwe.js → index-5gy5dc2n.js} +2 -2
  36. package/dist/cli/{index-vt8hk0pt.js → index-5m64x65w.js} +244 -106
  37. package/dist/cli/{index-af3nmk6c.js → index-5mrvx2vm.js} +7 -7
  38. package/dist/cli/{index-v3bmeqqh.js → index-6a4t4p4p.js} +12 -7
  39. package/dist/cli/{index-f32hs2vt.js → index-83swjsyd.js} +4 -4
  40. package/dist/cli/{index-nb1c3342.js → index-8z8cj2rz.js} +7 -7
  41. package/dist/cli/{index-ga1pcs49.js → index-8zj647hc.js} +1 -1
  42. package/dist/cli/{index-d4cjbm4p.js → index-a9m7h5v0.js} +2 -2
  43. package/dist/cli/{index-fsm9gv1p.js → index-aqvsxjwn.js} +43 -43
  44. package/dist/cli/{index-pkgbrrn7.js → index-azr0092e.js} +1 -1
  45. package/dist/cli/{index-ysazjncb.js → index-b67200rm.js} +6 -6
  46. package/dist/cli/{index-ajp4dabz.js → index-b7nb6c0p.js} +5 -5
  47. package/dist/cli/{index-6shk3n43.js → index-bccf3c0h.js} +2 -2
  48. package/dist/cli/{index-kvtwwj8b.js → index-bgzpw6ge.js} +1 -1
  49. package/dist/cli/{index-vf6pqke0.js → index-bxtyg46p.js} +45 -45
  50. package/dist/cli/{index-sgxbqba0.js → index-bzfn85kq.js} +119 -55
  51. package/dist/cli/{index-r3gphy10.js → index-cme96pja.js} +5 -5
  52. package/dist/cli/{index-4cm1p2kj.js → index-dt4cjxbz.js} +1 -1
  53. package/dist/cli/{index-f6e44xh2.js → index-dtet46e6.js} +7 -7
  54. package/dist/cli/{index-8bx6vhzk.js → index-e8k0v19e.js} +1 -1
  55. package/dist/cli/{index-mhqh2dc9.js → index-eaess7dm.js} +1 -1
  56. package/dist/cli/{index-yfmgbhwz.js → index-ef0tgsgj.js} +20 -6
  57. package/dist/cli/{index-0yrsvwdf.js → index-f6am4ypq.js} +6 -6
  58. package/dist/cli/{index-ejfmgkt0.js → index-fayfa263.js} +3 -3
  59. package/dist/cli/{index-bwh9196c.js → index-fzcr2s01.js} +7 -7
  60. package/dist/cli/{index-t433r606.js → index-fzqn2kk8.js} +2 -2
  61. package/dist/cli/{index-jdw63xyd.js → index-g7vd2azv.js} +2 -2
  62. package/dist/cli/{index-28zgn6sm.js → index-g8jd3h4r.js} +2 -2
  63. package/dist/cli/{index-2wps5fec.js → index-hmgx2bsy.js} +3 -3
  64. package/dist/cli/{index-9b6bxe9b.js → index-mbn4vn3z.js} +1 -1
  65. package/dist/cli/{index-7vnr5cmp.js → index-mtqwyjrg.js} +1 -1
  66. package/dist/cli/{index-867d9dhf.js → index-nd4kkbjw.js} +3 -3
  67. package/dist/cli/{index-025wg2re.js → index-nwswxes7.js} +3 -3
  68. package/dist/cli/{index-s81tvz98.js → index-pq5962z7.js} +3 -3
  69. package/dist/cli/{index-ney8qpg3.js → index-rhjzq6kw.js} +1 -1
  70. package/dist/cli/{index-3txrbsa1.js → index-yc8v81ab.js} +4 -4
  71. package/dist/cli/{index-50b8f6qz.js → index-zdt5m9n2.js} +4 -4
  72. package/dist/cli/index.d.ts +2 -2
  73. package/dist/cli/index.js +60 -54
  74. package/dist/cli/{knowledge-escalator-naq700x5.js → knowledge-escalator-y879xx4c.js} +14 -14
  75. package/dist/cli/{knowledge-events-mmh5cya6.js → knowledge-events-07vpvmmr.js} +12 -12
  76. package/dist/cli/{knowledge-link-76egdqc9.js → knowledge-link-a5tvjqdt.js} +5 -5
  77. package/dist/cli/{knowledge-store-9dxr9jb9.js → knowledge-store-wae6s3ef.js} +6 -6
  78. package/dist/cli/{knowledge-validator-eze3s6fn.js → knowledge-validator-v13cjze1.js} +8 -8
  79. package/dist/cli/{mcp-1x2tpk71.js → mcp-5ns32ees.js} +1 -1
  80. package/dist/cli/{model-preflight-hgb7kf5d.js → model-preflight-06jexzsa.js} +43 -43
  81. package/dist/cli/{pending-delegations-zg4q1k5q.js → pending-delegations-8g7nne79.js} +12 -12
  82. package/dist/cli/{pr-subscriptions-zw8aev5s.js → pr-subscriptions-yp71fzeb.js} +12 -12
  83. package/dist/cli/{pr-workflow-gate-dcbpd451.js → pr-workflow-gate-rcfwt8jd.js} +43 -43
  84. package/dist/cli/{runner-y529qa4d.js → runner-8qybgy4n.js} +6 -6
  85. package/dist/cli/{scan-cursor-pdxmndd0.js → scan-cursor-9xqrqgbs.js} +7 -7
  86. package/dist/cli/{schema-hzz32642.js → schema-qxgn4xzy.js} +1 -1
  87. package/dist/cli/{scope-persistence-h4b6p951.js → scope-persistence-9dscq6a2.js} +15 -15
  88. package/dist/cli/{server-7gd7tqt5.js → server-v1s76pa3.js} +43 -43
  89. package/dist/cli/{skill-generator-7g7sca90.js → skill-generator-yjeam2kn.js} +16 -16
  90. package/dist/cli/{snapshot-coordination-init-4q5ykq22.js → snapshot-coordination-init-jqkew1cw.js} +43 -43
  91. package/dist/cli/{speckit-checkoff-5bfxs8r7.js → speckit-checkoff-atm1ftz7.js} +4 -4
  92. package/dist/cli/{telemetry-9szfdfqv.js → telemetry-qaymh4gg.js} +1 -1
  93. package/dist/cli/{workspace-snapshot-nre732xt.js → workspace-snapshot-vfpnxjsp.js} +3 -3
  94. package/dist/cli/{worktree-collision-ownership-327d06qw.js → worktree-collision-ownership-ftg1bnx6.js} +13 -13
  95. package/dist/cli/{worktree-isolation-zqzs3wkk.js → worktree-isolation-ttqkatgg.js} +49 -43
  96. package/dist/commands/turbo.d.ts +4 -3
  97. package/dist/config/constants.d.ts +2 -2
  98. package/dist/config/plan-schema.d.ts +16 -0
  99. package/dist/epic/phase-readiness.d.ts +4 -2
  100. package/dist/evaluation/ephemeral-agent-dispatcher.d.ts +11 -0
  101. package/dist/failures/provider-message-error.d.ts +32 -0
  102. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +40 -0
  103. package/dist/hooks/delegation-gate.d.ts +13 -0
  104. package/dist/hooks/extractors.d.ts +2 -0
  105. package/dist/hooks/guardrails/index.d.ts +2 -0
  106. package/dist/hooks/guardrails/parallel-gate-attribution.d.ts +10 -0
  107. package/dist/index.js +415 -412
  108. package/dist/plan/ledger.d.ts +21 -3
  109. package/dist/sandbox/linux/bubblewrap-executor.d.ts +24 -0
  110. package/dist/services/skill-optimizer/store.d.ts +2 -2
  111. package/dist/tools/phase-complete.d.ts +4 -0
  112. package/dist/turbo/lean/runner.d.ts +2 -0
  113. package/opencode-swarm.schema.json +1 -1
  114. package/package.json +1 -1
  115. package/dist/cli/curator-llm-factory-tfn0cp68.js +0 -82
  116. package/dist/cli/guardrail-explain-n9ndp99q.js +0 -83
@@ -1047,7 +1047,7 @@ async function _createExecutor() {
1047
1047
  return null;
1048
1048
  }
1049
1049
  async function _createLinuxExecutor() {
1050
- const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isBubblewrapAvailable } = await import("./capability-probe-3mgxcfr9.js");
1050
+ const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isBubblewrapAvailable } = await import("./capability-probe-rty1315z.js");
1051
1051
  await new SandboxCapabilityProbe2().detect();
1052
1052
  if (!isBubblewrapAvailable()) {
1053
1053
  return null;
@@ -1067,7 +1067,7 @@ async function _createMacOSExecutor() {
1067
1067
  }
1068
1068
  return null;
1069
1069
  }
1070
- const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isSandboxExecAvailable } = await import("./capability-probe-3mgxcfr9.js");
1070
+ const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isSandboxExecAvailable } = await import("./capability-probe-rty1315z.js");
1071
1071
  await new SandboxCapabilityProbe2().detect();
1072
1072
  if (!isSandboxExecAvailable()) {
1073
1073
  return null;
@@ -1080,7 +1080,7 @@ async function _createMacOSExecutor() {
1080
1080
  }
1081
1081
  }
1082
1082
  async function _createWindowsExecutor() {
1083
- const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isWindowsSandboxAvailable } = await import("./capability-probe-3mgxcfr9.js");
1083
+ const { SandboxCapabilityProbe: SandboxCapabilityProbe2, isWindowsSandboxAvailable } = await import("./capability-probe-rty1315z.js");
1084
1084
  await new SandboxCapabilityProbe2().detect();
1085
1085
  if (!isWindowsSandboxAvailable()) {
1086
1086
  return null;
@@ -1111,6 +1111,7 @@ var init_executor = __esm(() => {
1111
1111
  // src/sandbox/linux/bubblewrap-executor.ts
1112
1112
  import { spawnSync as spawnSync4 } from "child_process";
1113
1113
  import { existsSync as existsSync3 } from "fs";
1114
+ import { tmpdir as tmpdir5 } from "os";
1114
1115
  function resolveBwrapBinary() {
1115
1116
  try {
1116
1117
  if (existsSync3(BWRAP_ABSOLUTE)) {
@@ -1119,10 +1120,84 @@ function resolveBwrapBinary() {
1119
1120
  } catch {}
1120
1121
  return "bwrap";
1121
1122
  }
1123
+ function shellQuote(s) {
1124
+ return `'${shellEscape2(s)}'`;
1125
+ }
1126
+ function buildBwrapArgs(input) {
1127
+ const { quote } = input;
1128
+ const roBindArgs = input.readonlyRoots.flatMap((p) => [
1129
+ "--ro-bind",
1130
+ quote(p),
1131
+ quote(p)
1132
+ ]);
1133
+ const bindArgs = input.scopes.flatMap((p) => ["--bind", quote(p), quote(p)]);
1134
+ const args = [
1135
+ "--unshare-user",
1136
+ "--unshare-ipc",
1137
+ "--die-with-parent",
1138
+ "--new-session",
1139
+ "--cap-drop",
1140
+ "ALL",
1141
+ ...roBindArgs,
1142
+ ...bindArgs,
1143
+ "--dev",
1144
+ "/dev",
1145
+ "--size",
1146
+ String(TMPFS_SIZE_BYTES),
1147
+ "--tmpfs",
1148
+ quote(input.temp),
1149
+ "--ro-bind",
1150
+ "/etc",
1151
+ "/etc",
1152
+ "--ro-bind",
1153
+ "/usr",
1154
+ "/usr",
1155
+ "--ro-bind",
1156
+ "/lib",
1157
+ "/lib",
1158
+ "--ro-bind",
1159
+ "/lib64",
1160
+ "/lib64",
1161
+ "--proc",
1162
+ "/proc",
1163
+ "--unshare-pid",
1164
+ ...input.envArgs,
1165
+ "--",
1166
+ "bash",
1167
+ "-c",
1168
+ quote(input.command)
1169
+ ];
1170
+ if ((input.networkMode ?? "off") === "off") {
1171
+ args.splice(1, 0, "--unshare-net");
1172
+ }
1173
+ return args;
1174
+ }
1175
+ function probeBwrapNamespace(binary) {
1176
+ try {
1177
+ const result = spawnSync4(binary, [...BWRAP_NAMESPACE_SMOKE_ARGS], {
1178
+ cwd: tmpdir5(),
1179
+ windowsHide: true,
1180
+ encoding: "utf-8",
1181
+ timeout: 5000,
1182
+ stdio: ["ignore", "ignore", "pipe"]
1183
+ });
1184
+ if (!result.error && result.status === 0)
1185
+ return { ok: true };
1186
+ const reason = result.error?.message ?? (result.stderr?.trim().split(`
1187
+ `)[0] || `exit ${result.status}`);
1188
+ return { ok: false, reason };
1189
+ } catch (err) {
1190
+ return {
1191
+ ok: false,
1192
+ reason: err instanceof Error ? err.message : String(err)
1193
+ };
1194
+ }
1195
+ }
1122
1196
  function probeBwrap() {
1123
1197
  try {
1124
1198
  const binary = _internals4.resolveBwrapBinary();
1125
1199
  const result = spawnSync4(binary, ["--version"], {
1200
+ cwd: tmpdir5(),
1126
1201
  windowsHide: true,
1127
1202
  encoding: "utf-8",
1128
1203
  timeout: 5000,
@@ -1137,7 +1212,15 @@ function probeBwrap() {
1137
1212
  warn(`Sandbox disabled: bwrap spawn error (${result.error.message}). Falling through to tool-layer enforcement.`);
1138
1213
  return false;
1139
1214
  }
1140
- return result.status === BWRAP_VERSION_EXIT && result.stdout.trim().length > 0;
1215
+ if (result.status !== BWRAP_VERSION_EXIT || result.stdout.trim().length === 0) {
1216
+ return false;
1217
+ }
1218
+ const smoke = _internals4.probeBwrapNamespace(binary);
1219
+ if (!smoke.ok) {
1220
+ warn(`Sandbox disabled: bwrap cannot create a sandbox on this host (${smoke.reason}). ` + "Unprivileged user namespaces may be restricted (Ubuntu 24.04+: " + "kernel.apparmor_restrict_unprivileged_userns=1). Falling through to tool-layer enforcement.");
1221
+ return false;
1222
+ }
1223
+ return true;
1141
1224
  } catch (err) {
1142
1225
  const message = err instanceof Error ? err.message : String(err);
1143
1226
  warn(`Sandbox disabled: probe threw (${message}). Falling through to tool-layer enforcement.`);
@@ -1190,16 +1273,6 @@ class BubblewrapSandboxExecutor {
1190
1273
  const readonlyRoots = [
1191
1274
  ...new Set((policy?.readonly_roots ?? []).filter((p) => typeof p === "string" && p.startsWith("/") && p !== "/"))
1192
1275
  ];
1193
- const roBindArgs = readonlyRoots.flatMap((p) => [
1194
- "--ro-bind",
1195
- `'${shellEscape2(p)}'`,
1196
- `'${shellEscape2(p)}'`
1197
- ]);
1198
- const bindArgs = allScopes.flatMap((p) => [
1199
- "--bind",
1200
- `'${shellEscape2(p)}'`,
1201
- `'${shellEscape2(p)}'`
1202
- ]);
1203
1276
  const envArgs = [];
1204
1277
  if (envOverrides) {
1205
1278
  for (const [key, value] of Object.entries(envOverrides)) {
@@ -1209,49 +1282,19 @@ class BubblewrapSandboxExecutor {
1209
1282
  if (value === null) {
1210
1283
  envArgs.push("--unsetenv", key);
1211
1284
  } else {
1212
- envArgs.push("--setenv", key, `'${shellEscape2(value)}'`);
1285
+ envArgs.push("--setenv", key, shellQuote(value));
1213
1286
  }
1214
1287
  }
1215
1288
  }
1216
- const args = [
1217
- "--unshare-user",
1218
- "--unshare-ipc",
1219
- "--die-with-parent",
1220
- "--new-session",
1221
- "--cap-drop",
1222
- "ALL",
1223
- ...roBindArgs,
1224
- ...bindArgs,
1225
- "--dev",
1226
- "/dev",
1227
- "--size",
1228
- String(TMPFS_SIZE_BYTES),
1229
- "--tmpfs",
1230
- `'${shellEscape2(temp)}'`,
1231
- "--ro-bind",
1232
- "/etc",
1233
- "/etc",
1234
- "--ro-bind",
1235
- "/usr",
1236
- "/usr",
1237
- "--ro-bind",
1238
- "/lib",
1239
- "/lib",
1240
- "--ro-bind",
1241
- "/lib64",
1242
- "/lib64",
1243
- "--proc",
1244
- "/proc",
1245
- "--unshare-pid",
1246
- ...envArgs,
1247
- "--",
1248
- "bash",
1249
- "-c",
1250
- `'${shellEscape2(command)}'`
1251
- ];
1252
- if ((policy?.network_mode ?? "off") === "off") {
1253
- args.splice(1, 0, "--unshare-net");
1254
- }
1289
+ const args = buildBwrapArgs({
1290
+ quote: shellQuote,
1291
+ temp,
1292
+ readonlyRoots,
1293
+ scopes: allScopes,
1294
+ envArgs,
1295
+ networkMode: policy?.network_mode,
1296
+ command
1297
+ });
1255
1298
  const binary = _internals4.resolveBwrapBinary();
1256
1299
  return `${binary} ${args.join(" ")}`;
1257
1300
  }
@@ -1259,13 +1302,23 @@ class BubblewrapSandboxExecutor {
1259
1302
  return {};
1260
1303
  }
1261
1304
  }
1262
- var BWRAP_VERSION_EXIT = 0, BWRAP_UNAVAILABLE_CODES, BWRAP_ABSOLUTE = "/usr/bin/bwrap", TMPFS_SIZE_BYTES = 524288000, _internals4;
1305
+ var BWRAP_VERSION_EXIT = 0, BWRAP_UNAVAILABLE_CODES, BWRAP_ABSOLUTE = "/usr/bin/bwrap", TMPFS_SIZE_BYTES = 524288000, BWRAP_NAMESPACE_SMOKE_ARGS, _internals4;
1263
1306
  var init_bubblewrap_executor = __esm(() => {
1264
1307
  init_logger();
1265
1308
  init_executor();
1266
1309
  BWRAP_UNAVAILABLE_CODES = new Set(["ENOENT", "EACCES", "ENOSPC"]);
1310
+ BWRAP_NAMESPACE_SMOKE_ARGS = buildBwrapArgs({
1311
+ quote: (value) => value,
1312
+ temp: "/tmp",
1313
+ readonlyRoots: [],
1314
+ scopes: [],
1315
+ envArgs: [],
1316
+ networkMode: "off",
1317
+ command: "true"
1318
+ });
1267
1319
  _internals4 = {
1268
1320
  probeBwrap,
1321
+ probeBwrapNamespace,
1269
1322
  resolveBwrapBinary
1270
1323
  };
1271
1324
  });
@@ -1604,6 +1657,17 @@ async function probeLinux() {
1604
1657
  const binary = _internals4.resolveBwrapBinary();
1605
1658
  const output = await _internals5.withProbeTimeout(binary, ["--version"], 2000);
1606
1659
  if (output.length > 0) {
1660
+ try {
1661
+ await _internals5.withProbeTimeout(binary, [...BWRAP_NAMESPACE_SMOKE_ARGS], 2000);
1662
+ } catch (smokeError) {
1663
+ const detail = smokeError instanceof Error ? smokeError.message : String(smokeError);
1664
+ return {
1665
+ status: "disabled",
1666
+ mechanism: "Bubblewrap",
1667
+ platform: "linux",
1668
+ error: `bwrap cannot create a sandbox on this host (unprivileged user namespaces may be restricted): ${detail}`
1669
+ };
1670
+ }
1607
1671
  return {
1608
1672
  status: "enabled",
1609
1673
  strength: "strong",
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  computePlanStructureHash
4
- } from "./index-yfmgbhwz.js";
4
+ } from "./index-ef0tgsgj.js";
5
5
  import {
6
6
  appendCoreEventSync
7
- } from "./index-d4cjbm4p.js";
7
+ } from "./index-a9m7h5v0.js";
8
8
  import {
9
9
  deleteCoordinationState,
10
10
  importCoordinationOnce,
@@ -12,10 +12,10 @@ import {
12
12
  transitionCoordinationState,
13
13
  transitionCoordinationStateWithinTransaction,
14
14
  withCoordinationTransaction
15
- } from "./index-9b6bxe9b.js";
15
+ } from "./index-mbn4vn3z.js";
16
16
  import {
17
17
  getProjectDb
18
- } from "./index-ga1pcs49.js";
18
+ } from "./index-8zj647hc.js";
19
19
  import {
20
20
  canonicalExistingFilesystemPath,
21
21
  legacyCanonicalExistingFilesystemPath
@@ -32,7 +32,7 @@ import {
32
32
  import {
33
33
  atomicWriteSwarmFile,
34
34
  atomicWriteSwarmFileSync
35
- } from "./index-025wg2re.js";
35
+ } from "./index-nwswxes7.js";
36
36
  import {
37
37
  PlanSchema
38
38
  } from "./index-gx2vp8gx.js";
@@ -4,7 +4,7 @@ import {
4
4
  getProjectDb,
5
5
  projectDbExists,
6
6
  withImmediateTransaction
7
- } from "./index-ga1pcs49.js";
7
+ } from "./index-8zj647hc.js";
8
8
  import {
9
9
  derivePlanId,
10
10
  derivePlanIdentityHash
@@ -1,27 +1,27 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  deleteCoordinationState,
7
7
  importCoordinationOnce,
8
8
  listCoordinationStates,
9
9
  transitionCoordinationState,
10
10
  withCoordinationTransaction
11
- } from "./index-9b6bxe9b.js";
11
+ } from "./index-mbn4vn3z.js";
12
12
  import {
13
13
  getProjectDb,
14
14
  projectDbExists
15
- } from "./index-ga1pcs49.js";
15
+ } from "./index-8zj647hc.js";
16
16
  import {
17
17
  observeStoreHealth
18
- } from "./index-k6h66zm3.js";
18
+ } from "./index-4twjbsfw.js";
19
19
  import {
20
20
  withEvidenceLock
21
- } from "./index-8bx6vhzk.js";
21
+ } from "./index-e8k0v19e.js";
22
22
  import {
23
23
  telemetry
24
- } from "./index-7vnr5cmp.js";
24
+ } from "./index-mtqwyjrg.js";
25
25
  import {
26
26
  canonicalRootKey,
27
27
  canonicalRootKeyFresh,
@@ -29,7 +29,7 @@ import {
29
29
  } from "./index-fzpt2djt.js";
30
30
  import {
31
31
  atomicWriteSwarmFileSync
32
- } from "./index-025wg2re.js";
32
+ } from "./index-nwswxes7.js";
33
33
  import {
34
34
  exports_external,
35
35
  init_zod
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-t7hmqgjy.js";
5
5
  import {
6
6
  emit
7
- } from "./index-7vnr5cmp.js";
7
+ } from "./index-mtqwyjrg.js";
8
8
  import {
9
9
  tryAcquireLock
10
10
  } from "./index-ejhxgyvm.js";
@@ -10,7 +10,7 @@ import {
10
10
  readCachedTextFile,
11
11
  wasObservedToExist,
12
12
  wasRecentlyWrittenByThisProcess
13
- } from "./index-025wg2re.js";
13
+ } from "./index-nwswxes7.js";
14
14
  import {
15
15
  warn
16
16
  } from "./index-zgwm4ryv.js";
@@ -4,20 +4,20 @@ import {
4
4
  projectDbExists,
5
5
  withImmediateTransaction,
6
6
  withProjectDbReadOnly
7
- } from "./index-ga1pcs49.js";
7
+ } from "./index-8zj647hc.js";
8
8
  import {
9
9
  derivePlanId,
10
10
  derivePlanIdentityHash
11
11
  } from "./index-7pmbnjvj.js";
12
12
  import {
13
13
  withEvidenceLock
14
- } from "./index-8bx6vhzk.js";
14
+ } from "./index-e8k0v19e.js";
15
15
  import {
16
16
  assertProjectRoot
17
17
  } from "./index-t7hmqgjy.js";
18
18
  import {
19
19
  emit
20
- } from "./index-7vnr5cmp.js";
20
+ } from "./index-mtqwyjrg.js";
21
21
  import {
22
22
  ExecutionProfileSchema,
23
23
  PlanSchema,
@@ -27,11 +27,11 @@ import {
27
27
  import {
28
28
  init_loader,
29
29
  loadPluginConfig
30
- } from "./index-ney8qpg3.js";
30
+ } from "./index-rhjzq6kw.js";
31
31
  import {
32
32
  init_package,
33
33
  package_default
34
- } from "./index-b79a8pc2.js";
34
+ } from "./index-04knttpn.js";
35
35
  import {
36
36
  criticalWarn,
37
37
  init_logger,
@@ -1976,6 +1976,20 @@ async function loadLastApprovedPlan(directory, expectedPlanId) {
1976
1976
  const integrity = await readLedgerEventsWithIntegrity(directory);
1977
1977
  return findLastApprovedSnapshot(integrity.events, expectedPlanId);
1978
1978
  }
1979
+ function approvedSnapshotCoversPlan(approved, plan) {
1980
+ const current = computePlanStructureHash(plan);
1981
+ if (approved.payloadHash === current)
1982
+ return true;
1983
+ if (approved.plan.current_phase === plan.current_phase)
1984
+ return false;
1985
+ if (computePlanStructureHash(approved.plan) !== approved.payloadHash) {
1986
+ return false;
1987
+ }
1988
+ return computePlanStructureHash({
1989
+ ...approved.plan,
1990
+ current_phase: plan.current_phase
1991
+ }) === current;
1992
+ }
1979
1993
  async function loadLastPlanCriticApprovedSnapshot(directory, expectedPlanId) {
1980
1994
  const integrity = await readLedgerEventsWithIntegrity(directory);
1981
1995
  return findLastApprovedSnapshot(integrity.events, expectedPlanId, (payload) => payload.approval?.source === "plan_critic_gate");
@@ -2050,4 +2064,4 @@ var _internals = {
2050
2064
  randomUUID: () => crypto.randomUUID()
2051
2065
  };
2052
2066
 
2053
- export { renderPlanningProfileDirective, resolvePlanningProfile, normalizeExecutionProfileForHash, LedgerStaleWriterError, computePlanLedgerHash, computePlanStructureHash, computeCurrentPlanHash, ledgerExists, getLatestLedgerSeq, readLedgerEvents, initLedger, readPlanEpochIdentity, getOrAdoptPlanEpochUnderLock, appendLedgerEvent, takeSnapshotWithRetry, takeSnapshotEvent, replaceTruncatedLedgerWithRecoveryRoot, clearPlanLedgerForReset, replacePlanLedgerWithRoot, replayFromLedger, peekPlanFromLedger, replayFromLedgerWithStatus, readLedgerEventsWithIntegrity, loadLastApprovedPlan, loadLastPlanCriticApprovedSnapshot };
2067
+ export { renderPlanningProfileDirective, resolvePlanningProfile, normalizeExecutionProfileForHash, LedgerStaleWriterError, computePlanLedgerHash, computePlanStructureHash, computeCurrentPlanHash, ledgerExists, getLatestLedgerSeq, readLedgerEvents, initLedger, readPlanEpochIdentity, getOrAdoptPlanEpochUnderLock, appendLedgerEvent, takeSnapshotWithRetry, takeSnapshotEvent, replaceTruncatedLedgerWithRecoveryRoot, clearPlanLedgerForReset, replacePlanLedgerWithRoot, replayFromLedger, peekPlanFromLedger, replayFromLedgerWithStatus, readLedgerEventsWithIntegrity, loadLastApprovedPlan, approvedSnapshotCoversPlan, loadLastPlanCriticApprovedSnapshot };
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  readKnowledgeEvents,
4
4
  recordKnowledgeEvent
5
- } from "./index-advcaree.js";
5
+ } from "./index-4g39c948.js";
6
6
  import {
7
7
  queryHistoricalOutcomes
8
- } from "./index-v3bmeqqh.js";
8
+ } from "./index-6a4t4p4p.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-af3nmk6c.js";
16
+ } from "./index-5mrvx2vm.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-eze3s6fn.js");
229
+ const { quarantineEntry } = await import("./knowledge-validator-v13cjze1.js");
230
230
  let policyConfig;
231
231
  try {
232
- const { KnowledgeConfigSchema } = await import("./schema-hzz32642.js");
233
- const { loadPluginConfigWithMeta } = await import("./index-s81tvz98.js");
232
+ const { KnowledgeConfigSchema } = await import("./schema-qxgn4xzy.js");
233
+ const { loadPluginConfigWithMeta } = await import("./index-pq5962z7.js");
234
234
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
235
235
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
236
236
  } catch {
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  bunSpawn
7
7
  } from "./index-2s7dvzff.js";
@@ -10,7 +10,7 @@ import {
10
10
  } from "./index-fzpt2djt.js";
11
11
  import {
12
12
  atomicWriteSwarmFileSync
13
- } from "./index-025wg2re.js";
13
+ } from "./index-nwswxes7.js";
14
14
  import {
15
15
  advisoryWarn,
16
16
  init_git_executable,
@@ -242,7 +242,7 @@ var _internals2 = {
242
242
  symlinkSync: fs2.symlinkSync
243
243
  },
244
244
  writeScopeToDisk: async (directory, taskId, files) => {
245
- const { writeScopeToDisk: realWrite } = await import("./scope-persistence-h4b6p951.js");
245
+ const { writeScopeToDisk: realWrite } = await import("./scope-persistence-9dscq6a2.js");
246
246
  return realWrite(directory, taskId, files);
247
247
  },
248
248
  writeLaneProfileToDisk: async (_worktreePath, _laneIndex, _envOverrides) => {
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  bunWrite
7
7
  } from "./index-2s7dvzff.js";
@@ -18,21 +18,21 @@ import {
18
18
  releaseCoordinationLease,
19
19
  transitionCoordinationState,
20
20
  withCoordinationTransaction
21
- } from "./index-9b6bxe9b.js";
21
+ } from "./index-mbn4vn3z.js";
22
22
  import {
23
23
  getProjectDb,
24
24
  projectDbExists
25
- } from "./index-ga1pcs49.js";
25
+ } from "./index-8zj647hc.js";
26
26
  import {
27
27
  observeDelegationLedgerPressure
28
- } from "./index-k6h66zm3.js";
28
+ } from "./index-4twjbsfw.js";
29
29
  import {
30
30
  EvidenceLockTimeoutError,
31
31
  withEvidenceLock
32
- } from "./index-8bx6vhzk.js";
32
+ } from "./index-e8k0v19e.js";
33
33
  import {
34
34
  telemetry
35
- } from "./index-7vnr5cmp.js";
35
+ } from "./index-mtqwyjrg.js";
36
36
  import {
37
37
  canonicalRootKeyFresh,
38
38
  sameProjectRoot
@@ -4735,7 +4735,7 @@ async function reconcileLegacyCoderSettlements(directory, maxRecords, onReconcil
4735
4735
  const candidates = readDelegations(directory).filter((record) => record.normalizedAgent === "coder" && Boolean(record.legacyCoderSettlementTransfer) && Boolean(record.terminalResult)).slice(0, maxRecords);
4736
4736
  if (candidates.length === 0)
4737
4737
  return 0;
4738
- const { transferCoderSettlementToBackground } = await import("./coder-settlement-tgdjczyp.js");
4738
+ const { transferCoderSettlementToBackground } = await import("./coder-settlement-0nhsjfh1.js");
4739
4739
  let transferred = 0;
4740
4740
  for (const record of candidates) {
4741
4741
  try {
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  bunSpawn
7
7
  } from "./index-2s7dvzff.js";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./index-fzpt2djt.js";
12
12
  import {
13
13
  atomicWriteSwarmFile
14
- } from "./index-025wg2re.js";
14
+ } from "./index-nwswxes7.js";
15
15
  import {
16
16
  init_git_executable,
17
17
  resolveGitExecutable
@@ -5,11 +5,11 @@ import {
5
5
  import {
6
6
  atomicWriteFileAnyRoot,
7
7
  atomicWriteSwarmFileSync
8
- } from "./index-025wg2re.js";
8
+ } from "./index-nwswxes7.js";
9
9
  import {
10
10
  init_loader,
11
11
  loadPluginConfig
12
- } from "./index-ney8qpg3.js";
12
+ } from "./index-rhjzq6kw.js";
13
13
  import {
14
14
  init_logger,
15
15
  log,
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  validateSwarmPath
4
- } from "./index-mhqh2dc9.js";
4
+ } from "./index-eaess7dm.js";
5
5
  import {
6
6
  atomicWriteSwarmFileSync
7
- } from "./index-025wg2re.js";
7
+ } from "./index-nwswxes7.js";
8
8
 
9
9
  // src/hooks/delegation-gate/worktree-provisioning-owner.ts
10
10
  import { createHash } from "crypto";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  readEffectiveSpecSync
4
- } from "./index-pkgbrrn7.js";
4
+ } from "./index-azr0092e.js";
5
5
  import {
6
6
  readSwarmFileAsync
7
- } from "./index-mhqh2dc9.js";
7
+ } from "./index-eaess7dm.js";
8
8
  import {
9
9
  DURABILITY_CLASSES,
10
10
  DbWriteError,
@@ -13,7 +13,7 @@ import {
13
13
  classifyDbWriteError,
14
14
  getProjectDb,
15
15
  projectDbExists
16
- } from "./index-ga1pcs49.js";
16
+ } from "./index-8zj647hc.js";
17
17
  import {
18
18
  _internals,
19
19
  canonicalRootKeyFresh
@@ -4,7 +4,7 @@ import {
4
4
  getProjectDb,
5
5
  projectDbExists,
6
6
  withImmediateTransaction
7
- } from "./index-ga1pcs49.js";
7
+ } from "./index-8zj647hc.js";
8
8
 
9
9
  // src/db/coordination-store.ts
10
10
  import { createHash } from "crypto";
@@ -761,7 +761,7 @@ var CATALOG_SOURCE = [
761
761
  category: "plan",
762
762
  severity: "error",
763
763
  privacyClass: "sensitive",
764
- producer: "src/plan/ledger.ts:1620",
764
+ producer: "src/plan/ledger.ts:1623",
765
765
  consumers: NO_CONSUMERS,
766
766
  futureOwnerIssue: ISSUE_SINK,
767
767
  retentionOwnerIssue: ISSUE_PLAN_EVIDENCE_RETENTION,
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  observeStoreHealth
4
- } from "./index-k6h66zm3.js";
4
+ } from "./index-4twjbsfw.js";
5
5
  import {
6
6
  telemetry
7
- } from "./index-7vnr5cmp.js";
7
+ } from "./index-mtqwyjrg.js";
8
8
  import {
9
9
  init_schema,
10
10
  stripKnownSwarmPrefix
11
- } from "./index-b79a8pc2.js";
11
+ } from "./index-04knttpn.js";
12
12
  import {
13
13
  init_constants
14
14
  } from "./index-py8wpe81.js";
@@ -245,9 +245,9 @@ var SWARM_TEMP_GRAMMARS = [
245
245
  "src/hooks/review-receipt.ts:894",
246
246
  "src/knowledge/identity.ts:234",
247
247
  "src/evidence/phase-participation.ts (pre-#2035; migrated-to=src/evidence/phase-participation.ts:atomicWriteBytes)",
248
- "src/turbo/lean/integration.ts:428",
248
+ "src/turbo/lean/integration.ts:429",
249
249
  "src/turbo/lean/reviewer.ts:403",
250
- "src/plan/ledger.ts:1471",
250
+ "src/plan/ledger.ts:1474",
251
251
  "src/services/synonym-map.ts:389",
252
252
  "src/services/skill-optimizer/store.ts:340",
253
253
  "src/services/skill-optimizer/store.ts:503",
@@ -422,7 +422,7 @@ var SWARM_TEMP_GRAMMARS = [
422
422
  "src/hooks/skill-usage-pending.ts:817",
423
423
  "src/parallel/file-locks.ts:113",
424
424
  "src/plan/ledger.ts:607",
425
- "src/plan/ledger.ts:1793"
425
+ "src/plan/ledger.ts:1796"
426
426
  ],
427
427
  note: "constant-name temps: reported when stale, never auto-quarantined. file-locks meta sidecars live under the scanner-skipped .swarm/locks/ subtree; the ledger reconcile temp embeds instance tokens but its .tmp-suffix shape maps here (conservatively report-only)"
428
428
  }