opencode-swarm 7.144.6 → 7.144.8

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 (51) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +20 -20
  2. package/.opencode/skills/swarm-pr-review/references/findings-persistence-contract.md +110 -0
  3. package/dist/cli/{capability-probe-976tt4ba.js → capability-probe-va4kk8vg.js} +2 -2
  4. package/dist/cli/{config-doctor-4chz0b95.js → config-doctor-zbqfp0v6.js} +2 -2
  5. package/dist/cli/{core-p04nvknr.js → core-pz9gwatq.js} +1 -1
  6. package/dist/cli/{curator-llm-factory-vc1mrc3r.js → curator-llm-factory-3nq3p02z.js} +19 -19
  7. package/dist/cli/{curator-sxeh36gw.js → curator-sk0dyvke.js} +19 -19
  8. package/dist/cli/{evidence-summary-service-spyxcgsx.js → evidence-summary-service-abwrjqd0.js} +7 -7
  9. package/dist/cli/{gate-evidence-nz0bwa15.js → gate-evidence-aa7vvtcd.js} +2 -2
  10. package/dist/cli/{guardrail-explain-ass47kn8.js → guardrail-explain-hvtyr2fz.js} +20 -20
  11. package/dist/cli/{guardrail-log-fyzd55fp.js → guardrail-log-jw5mzs0d.js} +3 -3
  12. package/dist/cli/{hive-promoter-k8gtah3n.js → hive-promoter-m20j63yg.js} +19 -19
  13. package/dist/cli/{index-ckq719fr.js → index-0v1f2sdb.js} +2 -2
  14. package/dist/cli/{index-b44qqqt2.js → index-3g0xk6tk.js} +1 -1
  15. package/dist/cli/{index-ec1kywxg.js → index-3k3nbs52.js} +4 -4
  16. package/dist/cli/{index-ytzz6pq1.js → index-7qb0hn8n.js} +1 -1
  17. package/dist/cli/{index-zy7f84cs.js → index-85gkedsf.js} +14 -5
  18. package/dist/cli/{index-bac12jpv.js → index-8dbzaf0m.js} +1 -1
  19. package/dist/cli/{index-sswzhcqb.js → index-bv44950t.js} +1 -1
  20. package/dist/cli/{index-42ezdzam.js → index-c2rpht77.js} +50 -47
  21. package/dist/cli/{index-zde2mkmg.js → index-cx51wy0c.js} +3 -3
  22. package/dist/cli/{index-h5krb653.js → index-d1dbpxxk.js} +1 -1
  23. package/dist/cli/{index-68mqwvf5.js → index-gfvkttvd.js} +1 -1
  24. package/dist/cli/{index-sqe3nqh5.js → index-jdxnzbah.js} +1 -1
  25. package/dist/cli/{index-dvybg11w.js → index-k7fk9fjs.js} +2 -2
  26. package/dist/cli/{index-dj8cah6s.js → index-nmy6rss1.js} +1 -1
  27. package/dist/cli/{index-01nhedm7.js → index-r14qx363.js} +1 -1
  28. package/dist/cli/{index-7zehmnv1.js → index-r2rkwvzq.js} +2 -2
  29. package/dist/cli/{index-vngs0meh.js → index-sxe5nyq4.js} +3 -3
  30. package/dist/cli/{index-zxr5r9b7.js → index-t2ntgzts.js} +3 -3
  31. package/dist/cli/{index-jqvsh0g3.js → index-t72g4a7y.js} +21 -21
  32. package/dist/cli/{index-q6bhmyxb.js → index-tffg4mwr.js} +1 -1
  33. package/dist/cli/{index-tq89td7b.js → index-xp5g9eps.js} +1 -1
  34. package/dist/cli/{index-n06653nr.js → index-xx8tm58n.js} +5 -5
  35. package/dist/cli/{index-fgdhf6a5.js → index-z4fssj97.js} +7 -4
  36. package/dist/cli/index.js +19 -19
  37. package/dist/cli/{knowledge-escalator-yaxzz0k5.js → knowledge-escalator-mg8qb7tm.js} +6 -6
  38. package/dist/cli/{knowledge-events-rgcwewpn.js → knowledge-events-3zxf8xpb.js} +4 -4
  39. package/dist/cli/{knowledge-store-qf8t25sw.js → knowledge-store-awnm8s6c.js} +1 -1
  40. package/dist/cli/{knowledge-validator-dx6zzcdf.js → knowledge-validator-3ke5scx3.js} +2 -2
  41. package/dist/cli/{scan-cursor-pbcaj8hj.js → scan-cursor-00rbxkb4.js} +2 -2
  42. package/dist/cli/{schema-tzcjwe8j.js → schema-5nmkp1pc.js} +1 -1
  43. package/dist/cli/{scope-persistence-mjg4we75.js → scope-persistence-6m79atw9.js} +4 -4
  44. package/dist/cli/{skill-generator-7jrzbaej.js → skill-generator-gv70s796.js} +7 -7
  45. package/dist/cli/{worktree-isolation-awpkp0yh.js → worktree-isolation-bne0p54w.js} +19 -19
  46. package/dist/git/branch.d.ts +9 -0
  47. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +5 -0
  48. package/dist/hooks/pr-workflow-gate.d.ts +4 -1
  49. package/dist/index.js +7 -5
  50. package/dist/sandbox/executor.d.ts +6 -0
  51. package/package.json +1 -1
@@ -977,6 +977,14 @@ var init_windows = __esm(() => {
977
977
  function isValidEnvKey(key) {
978
978
  return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key);
979
979
  }
980
+ function isUntrustedEnvKey(key) {
981
+ const upper = key.toUpperCase();
982
+ for (const prefix of UNTRUSTED_ENV_KEY_PREFIXES) {
983
+ if (upper.startsWith(prefix))
984
+ return true;
985
+ }
986
+ return false;
987
+ }
980
988
  async function getExecutor() {
981
989
  if (_cachedExecutorPromise !== undefined) {
982
990
  return _cachedExecutorPromise;
@@ -998,7 +1006,7 @@ async function _createExecutor() {
998
1006
  return null;
999
1007
  }
1000
1008
  async function _createLinuxExecutor() {
1001
- const { SandboxCapabilityProbe, isBubblewrapAvailable } = await import("./capability-probe-976tt4ba.js");
1009
+ const { SandboxCapabilityProbe, isBubblewrapAvailable } = await import("./capability-probe-va4kk8vg.js");
1002
1010
  await new SandboxCapabilityProbe().detect();
1003
1011
  if (!isBubblewrapAvailable()) {
1004
1012
  return null;
@@ -1018,7 +1026,7 @@ async function _createMacOSExecutor() {
1018
1026
  }
1019
1027
  return null;
1020
1028
  }
1021
- const { SandboxCapabilityProbe, isSandboxExecAvailable } = await import("./capability-probe-976tt4ba.js");
1029
+ const { SandboxCapabilityProbe, isSandboxExecAvailable } = await import("./capability-probe-va4kk8vg.js");
1022
1030
  await new SandboxCapabilityProbe().detect();
1023
1031
  if (!isSandboxExecAvailable()) {
1024
1032
  return null;
@@ -1031,7 +1039,7 @@ async function _createMacOSExecutor() {
1031
1039
  }
1032
1040
  }
1033
1041
  async function _createWindowsExecutor() {
1034
- const { SandboxCapabilityProbe, isWindowsSandboxAvailable } = await import("./capability-probe-976tt4ba.js");
1042
+ const { SandboxCapabilityProbe, isWindowsSandboxAvailable } = await import("./capability-probe-va4kk8vg.js");
1035
1043
  await new SandboxCapabilityProbe().detect();
1036
1044
  if (!isWindowsSandboxAvailable()) {
1037
1045
  return null;
@@ -1043,7 +1051,7 @@ async function _createWindowsExecutor() {
1043
1051
  return null;
1044
1052
  }
1045
1053
  }
1046
- var SandboxError, _cachedExecutorPromise, _macosSandboxEnabled = false, _hasWarnedMacOSSandboxDisabledByConfig = false;
1054
+ var SandboxError, UNTRUSTED_ENV_KEY_PREFIXES, _cachedExecutorPromise, _macosSandboxEnabled = false, _hasWarnedMacOSSandboxDisabledByConfig = false;
1047
1055
  var init_executor = __esm(() => {
1048
1056
  init_logger();
1049
1057
  SandboxError = class SandboxError extends Error {
@@ -1054,6 +1062,7 @@ var init_executor = __esm(() => {
1054
1062
  this.name = "SandboxError";
1055
1063
  }
1056
1064
  };
1065
+ UNTRUSTED_ENV_KEY_PREFIXES = ["GIT_", "LD_", "DYLD_"];
1057
1066
  });
1058
1067
 
1059
1068
  // src/sandbox/linux/bubblewrap-executor.ts
@@ -1207,4 +1216,4 @@ var init_bubblewrap_executor = __esm(() => {
1207
1216
  };
1208
1217
  });
1209
1218
 
1210
- export { _internals4 as _internals, init_bubblewrap_executor, _internals as _internals1, init_sandbox_exec_executor, exports_runner_client, init_runner_client, isValidEnvKey, getExecutor, init_executor };
1219
+ export { _internals4 as _internals, init_bubblewrap_executor, _internals as _internals1, init_sandbox_exec_executor, exports_runner_client, init_runner_client, isValidEnvKey, isUntrustedEnvKey, getExecutor, init_executor };
@@ -9,7 +9,7 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-ec1kywxg.js";
12
+ } from "./index-3k3nbs52.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
15
  } from "./index-h1p08s3n.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  redactPath,
4
4
  redactShellCommand
5
- } from "./index-dj8cah6s.js";
5
+ } from "./index-nmy6rss1.js";
6
6
 
7
7
  // src/services/guardrail-log-service.ts
8
8
  import * as fs from "fs/promises";
@@ -1,13 +1,13 @@
1
1
  // @bun
2
2
  import {
3
3
  stableCanonicalStringify
4
- } from "./index-dj8cah6s.js";
4
+ } from "./index-nmy6rss1.js";
5
5
  import {
6
6
  detectStraySwarmDirs,
7
7
  readDoctorArtifact,
8
8
  removeStraySwarmDir,
9
9
  runConfigDoctor
10
- } from "./index-01nhedm7.js";
10
+ } from "./index-r14qx363.js";
11
11
  import {
12
12
  MAX_TRANSIENT_RETRIES,
13
13
  archiveEvidence,
@@ -52,7 +52,7 @@ import {
52
52
  updateTaskStatus,
53
53
  validateProjectRoot,
54
54
  validateSymlinkBoundary
55
- } from "./index-fgdhf6a5.js";
55
+ } from "./index-z4fssj97.js";
56
56
  import {
57
57
  loadDatabaseCtor
58
58
  } from "./index-134d35c1.js";
@@ -105,7 +105,7 @@ import {
105
105
  alreadyCuratedThisGeneration,
106
106
  claimNextScanBatch,
107
107
  resolveCohortId
108
- } from "./index-h5krb653.js";
108
+ } from "./index-d1dbpxxk.js";
109
109
  import {
110
110
  CURATOR_INIT_PROMPT,
111
111
  CURATOR_PHASE_PROMPT,
@@ -175,10 +175,10 @@ import {
175
175
  retireSkill,
176
176
  selectCandidateEntries,
177
177
  syncBundledProjectSkillsIfMissingAsync
178
- } from "./index-vngs0meh.js";
178
+ } from "./index-sxe5nyq4.js";
179
179
  import {
180
180
  readRecentEscalations
181
- } from "./index-n06653nr.js";
181
+ } from "./index-xx8tm58n.js";
182
182
  import {
183
183
  appendUnactionable,
184
184
  quarantineEntry,
@@ -189,7 +189,7 @@ import {
189
189
  validateActionableFields,
190
190
  validateLesson,
191
191
  validateSkillPath
192
- } from "./index-bac12jpv.js";
192
+ } from "./index-8dbzaf0m.js";
193
193
  import {
194
194
  authorizeCuration,
195
195
  buildConfigFingerprintInput
@@ -242,18 +242,18 @@ import {
242
242
  startupOrphanRecovery,
243
243
  withTaskEvidenceTransaction,
244
244
  writeWorkflowWalFile
245
- } from "./index-sqe3nqh5.js";
245
+ } from "./index-jdxnzbah.js";
246
246
  import {
247
247
  provisionWorktree,
248
248
  removeWorktree
249
- } from "./index-tq89td7b.js";
249
+ } from "./index-xp5g9eps.js";
250
250
  import {
251
251
  MAX_PENDING_SCOPE_BINDINGS,
252
252
  canonicalWorkspaceIdentity,
253
253
  clearAllScopes,
254
254
  clearScopeBindingFromDisk,
255
255
  clearScopeBindings
256
- } from "./index-dvybg11w.js";
256
+ } from "./index-k7fk9fjs.js";
257
257
  import {
258
258
  appendLedgerEvent,
259
259
  computePlanHash,
@@ -266,7 +266,7 @@ import {
266
266
  readPlanEpochIdentity,
267
267
  replayFromLedgerWithStatus,
268
268
  takeSnapshotEvent
269
- } from "./index-q6bhmyxb.js";
269
+ } from "./index-tffg4mwr.js";
270
270
  import {
271
271
  isPathWithinDeclaredScope,
272
272
  sanitizeDiagnosticText
@@ -281,12 +281,13 @@ import {
281
281
  import {
282
282
  SandboxCapabilityProbe,
283
283
  init_capability_probe
284
- } from "./index-b44qqqt2.js";
284
+ } from "./index-3g0xk6tk.js";
285
285
  import {
286
286
  getExecutor,
287
287
  init_executor,
288
+ isUntrustedEnvKey,
288
289
  isValidEnvKey
289
- } from "./index-zy7f84cs.js";
290
+ } from "./index-85gkedsf.js";
290
291
  import {
291
292
  appendKnowledge,
292
293
  appendRejectedLesson,
@@ -316,7 +317,7 @@ import {
316
317
  transactFile,
317
318
  transactKnowledge,
318
319
  wordBigrams
319
- } from "./index-ec1kywxg.js";
320
+ } from "./index-3k3nbs52.js";
320
321
  import {
321
322
  MAX_EVENT_LOG_ENTRIES,
322
323
  _internals as _internals2,
@@ -330,10 +331,10 @@ import {
330
331
  recordKnowledgeEvent,
331
332
  recordPhaseCloseIntent,
332
333
  resolveKnowledgeEventsPath
333
- } from "./index-zde2mkmg.js";
334
+ } from "./index-cx51wy0c.js";
334
335
  import {
335
336
  resolveWorktreeIsolationConfig
336
- } from "./index-ckq719fr.js";
337
+ } from "./index-0v1f2sdb.js";
337
338
  import {
338
339
  RetrospectiveEvidenceSchema
339
340
  } from "./index-gprxjmm7.js";
@@ -348,7 +349,7 @@ import {
348
349
  init_loader,
349
350
  loadPluginConfig,
350
351
  loadPluginConfigWithMeta
351
- } from "./index-ytzz6pq1.js";
352
+ } from "./index-7qb0hn8n.js";
352
353
  import {
353
354
  DEFAULT_SKILL_OPT_CONFIG,
354
355
  FALLBACK_MODELS_MAX,
@@ -362,7 +363,7 @@ import {
362
363
  package_default,
363
364
  resolveAutoReviewConfig,
364
365
  stripKnownSwarmPrefix
365
- } from "./index-68mqwvf5.js";
366
+ } from "./index-gfvkttvd.js";
366
367
  import {
367
368
  AGENT_TOOL_MAP,
368
369
  ALL_AGENT_NAMES,
@@ -4182,7 +4183,7 @@ async function cleanupRecoveredWorktree(directory, descriptor) {
4182
4183
  awaitingMergeByCallID,
4183
4184
  cleanupStandardWorktreeForCallId,
4184
4185
  standardWorktreeByCallID
4185
- } = await import("./worktree-isolation-awpkp0yh.js");
4186
+ } = await import("./worktree-isolation-bne0p54w.js");
4186
4187
  standardWorktreeByCallID.delete(descriptor.callID);
4187
4188
  if (hasResidue)
4188
4189
  awaitingMergeByCallID.set(descriptor.callID, {
@@ -4284,7 +4285,7 @@ async function recoverCoderSettlement(directory, taskId) {
4284
4285
  awaitingMergeByCallID,
4285
4286
  finishStandardWorktreeDispatch,
4286
4287
  standardWorktreeByCallID
4287
- } = await import("./worktree-isolation-awpkp0yh.js");
4288
+ } = await import("./worktree-isolation-bne0p54w.js");
4288
4289
  const descriptor = wal.worktree;
4289
4290
  const reconstructedDispatch = {
4290
4291
  callID: descriptor.callID,
@@ -15547,7 +15548,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
15547
15548
  };
15548
15549
  }
15549
15550
  async function sweepActiveNearDuplicates(directory, options = {}) {
15550
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-zxr5r9b7.js");
15551
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-t2ntgzts.js");
15551
15552
  const { config } = loadPluginConfigWithMeta2(directory);
15552
15553
  const sweepConfig = config.learning?.dedup_sweep;
15553
15554
  if (sweepConfig?.enabled === false)
@@ -16631,7 +16632,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
16631
16632
  }
16632
16633
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
16633
16634
  try {
16634
- const skillModule = await import("./skill-generator-7jrzbaej.js");
16635
+ const skillModule = await import("./skill-generator-gv70s796.js");
16635
16636
  for (const cand of skillCandidates) {
16636
16637
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
16637
16638
  continue;
@@ -17091,7 +17092,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
17091
17092
  } catch {}
17092
17093
  }
17093
17094
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
17094
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-yaxzz0k5.js");
17095
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-mg8qb7tm.js");
17095
17096
  for (const { id } of contradictedEntries) {
17096
17097
  try {
17097
17098
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -17910,7 +17911,7 @@ async function runCuratorPostMortem(directory, options = {}) {
17910
17911
  warnings.push("Failed to collect knowledge summary.");
17911
17912
  }
17912
17913
  try {
17913
- const { getScanStatus } = await import("./scan-cursor-pbcaj8hj.js");
17914
+ const { getScanStatus } = await import("./scan-cursor-00rbxkb4.js");
17914
17915
  const scanStatus = await getScanStatus(directory);
17915
17916
  if (scanStatus.remaining_estimate > 0) {
17916
17917
  warnings.push(`Fair scan: reviewed ${knowledgeSummary.length} entries this sweep (generation ${scanStatus.generation}); ${scanStatus.remaining_estimate} more eligible entries will be visited in future curation sweeps.`);
@@ -18082,9 +18083,9 @@ var _internals24 = {
18082
18083
  verifyPostMortemKnowledgeActions,
18083
18084
  repairPostMortemActions,
18084
18085
  loadDefaultKnowledgeConfig: async (directory) => {
18085
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-tzcjwe8j.js");
18086
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-5nmkp1pc.js");
18086
18087
  try {
18087
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-zxr5r9b7.js");
18088
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-t2ntgzts.js");
18088
18089
  const loaded = loadPluginConfigWithMeta2(directory);
18089
18090
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
18090
18091
  } catch {
@@ -18092,11 +18093,11 @@ var _internals24 = {
18092
18093
  }
18093
18094
  },
18094
18095
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
18095
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-sxeh36gw.js");
18096
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-sk0dyvke.js");
18096
18097
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
18097
18098
  },
18098
18099
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
18099
- const { checkHivePromotions } = await import("./hive-promoter-k8gtah3n.js");
18100
+ const { checkHivePromotions } = await import("./hive-promoter-m20j63yg.js");
18100
18101
  return checkHivePromotions(entries, knowledgeConfig, directory);
18101
18102
  },
18102
18103
  applyProposalTriage: async (directory, triage) => {
@@ -18105,7 +18106,7 @@ var _internals24 = {
18105
18106
  activateProposal,
18106
18107
  listSkills: listSkills2,
18107
18108
  sanitizeSlug
18108
- } = await import("./skill-generator-7jrzbaej.js");
18109
+ } = await import("./skill-generator-gv70s796.js");
18109
18110
  const result = {
18110
18111
  approved: [],
18111
18112
  rejected: [],
@@ -19441,9 +19442,9 @@ function hashContent(content) {
19441
19442
  return createHash7("sha1").update(content).digest("hex");
19442
19443
  }
19443
19444
  async function loadConfigForPolicyCurator(directory) {
19444
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-tzcjwe8j.js");
19445
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-5nmkp1pc.js");
19445
19446
  try {
19446
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-zxr5r9b7.js");
19447
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-t2ntgzts.js");
19447
19448
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
19448
19449
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
19449
19450
  } catch {
@@ -29105,7 +29106,7 @@ async function runFinalizeStage(ctx) {
29105
29106
  }
29106
29107
  }
29107
29108
  try {
29108
- const { CuratorConfigSchema: CCS } = await import("./schema-tzcjwe8j.js");
29109
+ const { CuratorConfigSchema: CCS } = await import("./schema-5nmkp1pc.js");
29109
29110
  const { config: pmLoadedConfig } = _internals37.loadPluginConfigWithMeta(ctx.directory);
29110
29111
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
29111
29112
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -31385,9 +31386,9 @@ var _internals42 = {
31385
31386
  loadPluginConfigWithMeta,
31386
31387
  loadCuratorDeps: async () => {
31387
31388
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
31388
- import("./schema-tzcjwe8j.js"),
31389
- import("./curator-sxeh36gw.js"),
31390
- import("./curator-llm-factory-vc1mrc3r.js")
31389
+ import("./schema-5nmkp1pc.js"),
31390
+ import("./curator-sk0dyvke.js"),
31391
+ import("./curator-llm-factory-3nq3p02z.js")
31391
31392
  ]);
31392
31393
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
31393
31394
  }
@@ -32341,7 +32342,7 @@ async function computeCurationDiagnostics(directory, entries) {
32341
32342
  let scanCompleted = false;
32342
32343
  let scanRemaining = 0;
32343
32344
  try {
32344
- const { getScanStatus } = await import("./scan-cursor-pbcaj8hj.js");
32345
+ const { getScanStatus } = await import("./scan-cursor-00rbxkb4.js");
32345
32346
  const status = await getScanStatus(directory);
32346
32347
  scanGeneration = status.generation;
32347
32348
  scanCompleted = status.completed;
@@ -32351,10 +32352,10 @@ async function computeCurationDiagnostics(directory, entries) {
32351
32352
  try {
32352
32353
  const { isLinked: isLinked2 } = await import("./knowledge-link-4cg4776a.js");
32353
32354
  if (isLinked2(directory)) {
32354
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-tzcjwe8j.js");
32355
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-5nmkp1pc.js");
32355
32356
  let config;
32356
32357
  try {
32357
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-zxr5r9b7.js");
32358
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-t2ntgzts.js");
32358
32359
  const loaded = loadPluginConfigWithMeta2(directory);
32359
32360
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
32360
32361
  } catch {
@@ -33611,7 +33612,7 @@ async function handleDoctorCommand(directory, args) {
33611
33612
  const result = runConfigDoctor(config, directory);
33612
33613
  let output;
33613
33614
  if (enableAutoFix && result.hasAutoFixableIssues) {
33614
- const { runConfigDoctorWithFixes } = await import("./config-doctor-4chz0b95.js");
33615
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-zbqfp0v6.js");
33615
33616
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
33616
33617
  applyLossy: true
33617
33618
  });
@@ -34448,7 +34449,7 @@ async function handleEvidenceCommand(directory, args) {
34448
34449
  return formatTaskEvidenceMarkdown(evidenceData);
34449
34450
  }
34450
34451
  async function handleEvidenceSummaryCommand(directory) {
34451
- const { buildEvidenceSummary } = await import("./evidence-summary-service-spyxcgsx.js");
34452
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-abwrjqd0.js");
34452
34453
  const artifact = await buildEvidenceSummary(directory);
34453
34454
  if (!artifact) {
34454
34455
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -63678,7 +63679,7 @@ function buildDetailedHelp(commandName, entry) {
63678
63679
  async function handleHelpCommand(ctx) {
63679
63680
  const targetCommand = ctx.args.join(" ");
63680
63681
  if (!targetCommand) {
63681
- const { buildHelpText } = await import("./index-jqvsh0g3.js");
63682
+ const { buildHelpText } = await import("./index-t72g4a7y.js");
63682
63683
  return buildHelpText();
63683
63684
  }
63684
63685
  const tokens = targetCommand.split(/\s+/);
@@ -63687,7 +63688,7 @@ async function handleHelpCommand(ctx) {
63687
63688
  return _internals93.buildDetailedHelp(resolved.key, resolved.entry);
63688
63689
  }
63689
63690
  const similar = _internals93.findSimilarCommands(targetCommand);
63690
- const { buildHelpText: fullHelp } = await import("./index-jqvsh0g3.js");
63691
+ const { buildHelpText: fullHelp } = await import("./index-t72g4a7y.js");
63691
63692
  if (similar.length > 0) {
63692
63693
  return `Command '/swarm ${targetCommand}' not found.
63693
63694
 
@@ -63864,7 +63865,7 @@ var COMMAND_REGISTRY = {
63864
63865
  },
63865
63866
  "guardrail explain": {
63866
63867
  handler: async (ctx) => {
63867
- const { handleGuardrailExplain } = await import("./guardrail-explain-ass47kn8.js");
63868
+ const { handleGuardrailExplain } = await import("./guardrail-explain-hvtyr2fz.js");
63868
63869
  return handleGuardrailExplain(ctx.directory, ctx.args);
63869
63870
  },
63870
63871
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -63874,7 +63875,7 @@ var COMMAND_REGISTRY = {
63874
63875
  },
63875
63876
  "guardrail-explain": {
63876
63877
  handler: async (ctx) => {
63877
- const { handleGuardrailExplain } = await import("./guardrail-explain-ass47kn8.js");
63878
+ const { handleGuardrailExplain } = await import("./guardrail-explain-hvtyr2fz.js");
63878
63879
  return handleGuardrailExplain(ctx.directory, ctx.args);
63879
63880
  },
63880
63881
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -63884,7 +63885,7 @@ var COMMAND_REGISTRY = {
63884
63885
  },
63885
63886
  "guardrail-log": {
63886
63887
  handler: async (ctx) => {
63887
- const { handleGuardrailLog } = await import("./guardrail-log-fyzd55fp.js");
63888
+ const { handleGuardrailLog } = await import("./guardrail-log-jw5mzs0d.js");
63888
63889
  return handleGuardrailLog(ctx.directory, ctx.args);
63889
63890
  },
63890
63891
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -71431,7 +71432,7 @@ async function precreateStandardWorktreeSession(args) {
71431
71432
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, provisionResult.worktreePath);
71432
71433
  if (laneProfile) {
71433
71434
  try {
71434
- const { writeLaneProfileToDiskReal } = await import("./core-p04nvknr.js");
71435
+ const { writeLaneProfileToDiskReal } = await import("./core-pz9gwatq.js");
71435
71436
  await writeLaneProfileToDiskReal(provisionResult.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
71436
71437
  } catch {}
71437
71438
  }
@@ -72087,7 +72088,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
72087
72088
  }
72088
72089
  clearWorktreeMergeStatus(statusKey);
72089
72090
  try {
72090
- const { removeLaneProfileFromDiskReal } = await import("./core-p04nvknr.js");
72091
+ const { removeLaneProfileFromDiskReal } = await import("./core-pz9gwatq.js");
72091
72092
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
72092
72093
  } catch {}
72093
72094
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -72199,6 +72200,8 @@ async function readLaneEnvFileFromDisk(worktreePath, laneIndex) {
72199
72200
  const v = line.slice(eqIdx + 1);
72200
72201
  if (!isValidEnvKey(k))
72201
72202
  continue;
72203
+ if (isUntrustedEnvKey(k))
72204
+ continue;
72202
72205
  result[k] = v;
72203
72206
  }
72204
72207
  return result;
@@ -4,11 +4,11 @@ import {
4
4
  } from "./index-fv0s19g9.js";
5
5
  import {
6
6
  loadPluginConfigWithMeta
7
- } from "./index-ytzz6pq1.js";
7
+ } from "./index-7qb0hn8n.js";
8
8
  import {
9
9
  KnowledgeConfigSchema,
10
10
  init_schema
11
- } from "./index-68mqwvf5.js";
11
+ } from "./index-gfvkttvd.js";
12
12
  import {
13
13
  resolveHiveEventsPath
14
14
  } from "./index-ae75rja9.js";
@@ -2545,7 +2545,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
2545
2545
  }
2546
2546
  let bumps = 0;
2547
2547
  if (deltas.length > 0) {
2548
- const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-qf8t25sw.js");
2548
+ const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-awnm8s6c.js");
2549
2549
  bumps = await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
2550
2550
  }
2551
2551
  return {
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readKnowledge,
4
4
  transactKnowledge
5
- } from "./index-ec1kywxg.js";
5
+ } from "./index-3k3nbs52.js";
6
6
  import {
7
7
  init_git_executable,
8
8
  resolveGitExecutableAsync
@@ -21,7 +21,7 @@ var package_default;
21
21
  var init_package = __esm(() => {
22
22
  package_default = {
23
23
  name: "opencode-swarm",
24
- version: "7.144.6",
24
+ version: "7.144.8",
25
25
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
26
26
  main: "dist/index.js",
27
27
  types: "dist/index.d.ts",
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  autoCommitDirty,
4
4
  cleanUntrackedFiles
5
- } from "./index-tq89td7b.js";
5
+ } from "./index-xp5g9eps.js";
6
6
  import {
7
7
  isPathWithinDeclaredScope,
8
8
  unsafePathTextReason
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  computePlanStructureHash,
4
4
  derivePlanId
5
- } from "./index-q6bhmyxb.js";
5
+ } from "./index-tffg4mwr.js";
6
6
  import {
7
7
  unsafePathTextReason
8
8
  } from "./index-556ja8an.js";
9
9
  import {
10
10
  PlanSchema
11
- } from "./index-ytzz6pq1.js";
11
+ } from "./index-7qb0hn8n.js";
12
12
  import {
13
13
  assertProjectRoot
14
14
  } from "./index-f9vvg5xb.js";
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  init_schema,
13
13
  stripKnownSwarmPrefix
14
- } from "./index-68mqwvf5.js";
14
+ } from "./index-gfvkttvd.js";
15
15
  import {
16
16
  init_constants
17
17
  } from "./index-v3y3qg48.js";
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  stripKnownSwarmPrefix
9
- } from "./index-68mqwvf5.js";
9
+ } from "./index-gfvkttvd.js";
10
10
  import {
11
11
  ALL_AGENT_NAMES,
12
12
  init_constants
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-42ezdzam.js";
15
+ } from "./index-c2rpht77.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-dj8cah6s.js";
22
+ } from "./index-nmy6rss1.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  ALLOWED_SKILL_PATH_PREFIXES,
4
4
  validateSkillPath
5
- } from "./index-bac12jpv.js";
5
+ } from "./index-8dbzaf0m.js";
6
6
  import {
7
7
  computeOutcomeSignal,
8
8
  readKnowledge,
9
9
  resolveHiveKnowledgePath,
10
10
  resolveSwarmKnowledgePath,
11
11
  transactKnowledge
12
- } from "./index-ec1kywxg.js";
12
+ } from "./index-3k3nbs52.js";
13
13
  import {
14
14
  effectiveRetrievalOutcomes,
15
15
  readAuthoritativeKnowledgeCounterRollups
16
- } from "./index-zde2mkmg.js";
16
+ } from "./index-cx51wy0c.js";
17
17
  import {
18
18
  advisoryWarn,
19
19
  init_warning_buffer
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  _internals,
4
4
  resolveWorktreeIsolationConfig
5
- } from "./index-ckq719fr.js";
5
+ } from "./index-0v1f2sdb.js";
6
6
  import {
7
7
  ApprovalEvidenceSchema,
8
8
  BaseEvidenceSchema,
@@ -42,7 +42,7 @@ import {
42
42
  loadPluginConfig,
43
43
  loadPluginConfigWithMeta,
44
44
  loadPluginConfigWithMetaAsync
45
- } from "./index-ytzz6pq1.js";
45
+ } from "./index-7qb0hn8n.js";
46
46
  import {
47
47
  AUTO_REVIEW_V8_BURN_IN_DECISION,
48
48
  AgentOverrideConfigSchema,
@@ -64,7 +64,7 @@ import {
64
64
  TurboConfigSchema,
65
65
  WorktreeIsolationConfigSchema,
66
66
  resolveAutoReviewConfig
67
- } from "./index-68mqwvf5.js";
67
+ } from "./index-gfvkttvd.js";
68
68
  import {
69
69
  ALL_AGENT_NAMES,
70
70
  ALL_SUBAGENT_NAMES,