opencode-swarm 7.129.2 → 7.129.4

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 (36) hide show
  1. package/dist/background/workspace-snapshot.d.ts +30 -0
  2. package/dist/cli/{curation-policy-vn1ybh31.js → curation-policy-s08pg90f.js} +2 -2
  3. package/dist/cli/{curator-rtpbkffc.js → curator-6ggzktne.js} +11 -11
  4. package/dist/cli/{curator-llm-factory-5dcetzsz.js → curator-llm-factory-w6ep20tm.js} +11 -11
  5. package/dist/cli/{dispatch-f4hj1cj7.js → dispatch-3mhgqj2x.js} +1 -1
  6. package/dist/cli/{guardrail-explain-27xbz1h2.js → guardrail-explain-0gr9wkj0.js} +12 -12
  7. package/dist/cli/{hive-promoter-7x33c575.js → hive-promoter-4x3470c9.js} +11 -11
  8. package/dist/cli/{index-s7tsx4v9.js → index-803bqrzq.js} +12 -12
  9. package/dist/cli/{index-wy5jy3m9.js → index-8fy8q1px.js} +3 -3
  10. package/dist/cli/{index-6n2jpz7x.js → index-9f71ye47.js} +2 -2
  11. package/dist/cli/{index-kj86tyrs.js → index-bz814zsm.js} +1 -1
  12. package/dist/cli/{index-40zn444p.js → index-f2y46pda.js} +179 -1
  13. package/dist/cli/{index-5fnc76da.js → index-hbbj7ktj.js} +1 -1
  14. package/dist/cli/{index-vpjvqkdq.js → index-hn1dxcr3.js} +1 -1
  15. package/dist/cli/{index-ate4rw9q.js → index-jke1z4f2.js} +59 -43
  16. package/dist/cli/{index-m8vrw3pt.js → index-mgz9nm4a.js} +4 -4
  17. package/dist/cli/{index-w2kp2zvf.js → index-n08cksd6.js} +3 -3
  18. package/dist/cli/{index-kxw2sx1d.js → index-nbdge8b6.js} +1 -1
  19. package/dist/cli/{index-pgyp3tta.js → index-nhexgq4a.js} +1 -1
  20. package/dist/cli/{index-waqvy9a5.js → index-x7wt1g4w.js} +2 -2
  21. package/dist/cli/{index-6w02qz7t.js → index-yxz0c97p.js} +10 -8
  22. package/dist/cli/index.js +11 -11
  23. package/dist/cli/{knowledge-escalator-5ytt2y9n.js → knowledge-escalator-jjyn29ht.js} +3 -3
  24. package/dist/cli/{knowledge-events-qnyfrsfv.js → knowledge-events-f75n3916.js} +1 -1
  25. package/dist/cli/{knowledge-store-yeybvcqw.js → knowledge-store-7sahm702.js} +1 -1
  26. package/dist/cli/{knowledge-validator-g2c4mbwa.js → knowledge-validator-rjwvafv3.js} +4 -4
  27. package/dist/cli/{scan-cursor-c5mcce5r.js → scan-cursor-518rhxyd.js} +2 -2
  28. package/dist/cli/{skill-generator-c77e0y98.js → skill-generator-hk6mc7pc.js} +5 -5
  29. package/dist/cli/{workspace-snapshot-aa0ggevw.js → workspace-snapshot-jwkjg790.js} +21 -1
  30. package/dist/hooks/pr-workflow-gate.d.ts +11 -3
  31. package/dist/index.js +13 -11
  32. package/dist/services/directive-predicate-runner.d.ts +6 -0
  33. package/dist/tools/dispatch-lanes.d.ts +3 -3
  34. package/dist/tools/run-pr-feedback-stage-a.d.ts +5 -1
  35. package/package.json +1 -1
  36. package/dist/config/loader-recovery.d.ts +0 -95
@@ -12,7 +12,7 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-ate4rw9q.js";
15
+ } from "./index-jke1z4f2.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
@@ -74,7 +74,7 @@ import {
74
74
  getProfileForFile,
75
75
  isCommandAvailable,
76
76
  tool
77
- } from "./index-6n2jpz7x.js";
77
+ } from "./index-9f71ye47.js";
78
78
  import {
79
79
  BUNDLED_PROJECT_SKILL_ROOT,
80
80
  DEFAULT_SKILL_MIN_CONFIDENCE,
@@ -94,15 +94,15 @@ import {
94
94
  retireSkill,
95
95
  selectCandidateEntries,
96
96
  syncBundledProjectSkillsIfMissingAsync
97
- } from "./index-wy5jy3m9.js";
97
+ } from "./index-8fy8q1px.js";
98
98
  import {
99
99
  readRecentEscalations
100
- } from "./index-m8vrw3pt.js";
100
+ } from "./index-mgz9nm4a.js";
101
101
  import {
102
102
  alreadyCuratedThisGeneration,
103
103
  claimNextScanBatch,
104
104
  resolveCohortId
105
- } from "./index-5fnc76da.js";
105
+ } from "./index-hbbj7ktj.js";
106
106
  import {
107
107
  CURATOR_INIT_PROMPT,
108
108
  CURATOR_PHASE_PROMPT,
@@ -135,11 +135,11 @@ import {
135
135
  validateActionability,
136
136
  validateActionableFields,
137
137
  validateLesson
138
- } from "./index-waqvy9a5.js";
138
+ } from "./index-x7wt1g4w.js";
139
139
  import {
140
140
  authorizeCuration,
141
141
  buildConfigFingerprintInput
142
- } from "./index-pgyp3tta.js";
142
+ } from "./index-nhexgq4a.js";
143
143
  import {
144
144
  cohortConfigFingerprint
145
145
  } from "./index-rtry5xyf.js";
@@ -169,7 +169,7 @@ import {
169
169
  transactFile,
170
170
  transactKnowledge,
171
171
  wordBigrams
172
- } from "./index-w2kp2zvf.js";
172
+ } from "./index-n08cksd6.js";
173
173
  import {
174
174
  MAX_EVENT_LOG_ENTRIES,
175
175
  _internals,
@@ -179,7 +179,7 @@ import {
179
179
  recordHiveKnowledgeEvent,
180
180
  recordKnowledgeEvent,
181
181
  resolveKnowledgeEventsPath
182
- } from "./index-kj86tyrs.js";
182
+ } from "./index-bz814zsm.js";
183
183
  import {
184
184
  resolveHiveDataDir,
185
185
  resolveHiveEventsPath,
@@ -201,7 +201,7 @@ import {
201
201
  init_loader,
202
202
  loadPluginConfig,
203
203
  loadPluginConfigWithMeta
204
- } from "./index-6w02qz7t.js";
204
+ } from "./index-yxz0c97p.js";
205
205
  import {
206
206
  RetrospectiveEvidenceSchema
207
207
  } from "./index-k5jrywpr.js";
@@ -268,16 +268,24 @@ import {
268
268
  } from "./index-zgwm4ryv.js";
269
269
  import {
270
270
  resolveCommitCountSince,
271
+ resolveCommitCountSinceAsync,
271
272
  resolveCurrentGitHead,
273
+ resolveCurrentGitHeadAsync,
272
274
  resolveCurrentUpstreamPushTarget,
275
+ resolveCurrentUpstreamPushTargetAsync,
273
276
  resolveCurrentUpstreamRemoteRef,
274
277
  resolveExactRemoteBranchHead,
278
+ resolveExactRemoteBranchHeadAsync,
275
279
  resolveIsExactSingleChildCommit,
280
+ resolveIsExactSingleChildCommitAsync,
276
281
  resolveIsWorkingTreeClean,
282
+ resolveIsWorkingTreeCleanAsync,
277
283
  resolvePrReviewDiffStats,
284
+ resolvePrReviewDiffStatsAsync,
278
285
  resolvePrWorkflowRevisionDigest,
279
- resolveRemoteRefsContainingHead
280
- } from "./index-40zn444p.js";
286
+ resolveRemoteRefsContainingHead,
287
+ resolveRemoteRefsContainingHeadAsync
288
+ } from "./index-f2y46pda.js";
281
289
  import {
282
290
  atomicWriteFile
283
291
  } from "./index-7mkpsw6g.js";
@@ -535,7 +543,7 @@ async function activatePrWorkflow(directory, sessionID, mode, options = {}) {
535
543
  if (existing) {
536
544
  throw new Error(`BLOCKED: session "${normalizedSessionID}" already has an active ${existing.mode} workflow; complete it before starting ${mode}`);
537
545
  }
538
- const initialHead = options.prHeadSha ? assertCurrentCheckoutHead(directory, options.prHeadSha) : undefined;
546
+ const initialHead = options.prHeadSha ? await assertCurrentCheckoutHead(directory, options.prHeadSha) : undefined;
539
547
  const timestamp = isoNow();
540
548
  const nextState = {
541
549
  schemaVersion: GATE_SCHEMA_VERSION,
@@ -618,11 +626,11 @@ async function abortPrWorkflow(directory, sessionID, options = {}) {
618
626
  async function bindPrWorkflowHead(directory, sessionID, prHeadSha) {
619
627
  const state = await requireAnyActiveState(directory, sessionID);
620
628
  const normalizedHead = normalizePrHeadSha(prHeadSha);
621
- assertCurrentCheckoutHead(directory, normalizedHead);
629
+ await assertCurrentCheckoutHead(directory, normalizedHead);
622
630
  if (!state.prHeadSha)
623
- assertPrReviewCleanCheckout(directory, state.mode);
631
+ await assertPrReviewCleanCheckout(directory, state.mode);
624
632
  if (!state.prHeadSha && state.mode === "PR_FEEDBACK") {
625
- assertPrFeedbackTrackingCheckout(directory, normalizedHead);
633
+ await assertPrFeedbackTrackingCheckout(directory, normalizedHead);
626
634
  }
627
635
  if (state.prHeadSha && state.prHeadSha !== normalizedHead) {
628
636
  throw new Error(`BLOCKED: active ${state.mode} workflow is bound to PR head "${state.prHeadSha}"; received "${normalizedHead}"`);
@@ -637,9 +645,9 @@ async function bindPrWorkflowHead(directory, sessionID, prHeadSha) {
637
645
  await persistState(directory, nextState);
638
646
  return nextState;
639
647
  }
640
- function assertCurrentCheckoutHead(directory, expectedHead) {
648
+ async function assertCurrentCheckoutHead(directory, expectedHead) {
641
649
  const normalizedExpected = normalizePrHeadSha(expectedHead);
642
- const currentHead = _test_exports.resolveCurrentGitHead(directory)?.trim();
650
+ const currentHead = (await _test_exports.resolveCurrentGitHeadAsync(directory))?.trim();
643
651
  if (!currentHead) {
644
652
  throw new Error(`BLOCKED: cannot resolve the current Git HEAD in "${directory}" to verify against PR head "${normalizedExpected}". ` + `This means Git could not resolve HEAD (the working directory may not be a Git repository, ` + `HEAD may be unborn, the commit object may be missing in a shallow clone, the Git binary may not be on PATH, ` + `or the bounded Git invocation may have timed out). ` + `Verify with: git -C "${directory}" rev-parse --verify HEAD^{commit}`);
645
653
  }
@@ -648,17 +656,17 @@ function assertCurrentCheckoutHead(directory, expectedHead) {
648
656
  }
649
657
  return normalizedExpected;
650
658
  }
651
- function assertPrReviewCleanCheckout(directory, mode = "PR_REVIEW") {
652
- if (_test_exports.resolveIsWorkingTreeClean(directory) !== true) {
659
+ async function assertPrReviewCleanCheckout(directory, mode = "PR_REVIEW") {
660
+ if (await _test_exports.resolveIsWorkingTreeCleanAsync(directory) !== true) {
653
661
  throw new Error(`BLOCKED: ${mode} requires a clean index and working tree at the exact PR head`);
654
662
  }
655
663
  }
656
- function assertPrFeedbackTrackingCheckout(directory, prHeadSha) {
657
- const upstream = _test_exports.resolveCurrentUpstreamPushTarget(directory);
664
+ async function assertPrFeedbackTrackingCheckout(directory, prHeadSha) {
665
+ const upstream = await _test_exports.resolveCurrentUpstreamPushTargetAsync(directory);
658
666
  if (!upstream) {
659
667
  throw new Error("BLOCKED: PR_FEEDBACK requires a current local branch bound to an exact remote name, remote branch ref, and remote-tracking ref before the first head bind; detached or non-tracking checkouts are not allowed");
660
668
  }
661
- const matchingRemoteRefs = _test_exports.resolveRemoteRefsContainingHead(directory, prHeadSha);
669
+ const matchingRemoteRefs = await _test_exports.resolveRemoteRefsContainingHeadAsync(directory, prHeadSha);
662
670
  if (!matchingRemoteRefs?.includes(upstream.remoteTrackingRef)) {
663
671
  throw new Error(`BLOCKED: PR_FEEDBACK upstream "${upstream.remoteTrackingRef}" must point to the exact intake PR head "${prHeadSha}" before the first head bind`);
664
672
  }
@@ -673,15 +681,23 @@ var _test_exports = {
673
681
  },
674
682
  beforeTerminalClear: undefined,
675
683
  resolveCurrentGitHead,
684
+ resolveCurrentGitHeadAsync,
676
685
  resolveCurrentUpstreamPushTarget,
686
+ resolveCurrentUpstreamPushTargetAsync,
677
687
  resolveCurrentUpstreamRemoteRef,
678
688
  resolveExactRemoteBranchHead,
689
+ resolveExactRemoteBranchHeadAsync,
679
690
  resolveCommitCountSince,
691
+ resolveCommitCountSinceAsync,
680
692
  resolveIsWorkingTreeClean,
693
+ resolveIsWorkingTreeCleanAsync,
681
694
  resolveIsExactSingleChildCommit,
695
+ resolveIsExactSingleChildCommitAsync,
682
696
  resolvePrReviewDiffStats,
697
+ resolvePrReviewDiffStatsAsync,
683
698
  resolvePrWorkflowRevisionDigest,
684
699
  resolveRemoteRefsContainingHead,
700
+ resolveRemoteRefsContainingHeadAsync,
685
701
  parseCriticVerdict,
686
702
  isProcessAlive,
687
703
  rename: fsp.rename,
@@ -14255,7 +14271,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
14255
14271
  }
14256
14272
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
14257
14273
  try {
14258
- const skillModule = await import("./skill-generator-c77e0y98.js");
14274
+ const skillModule = await import("./skill-generator-hk6mc7pc.js");
14259
14275
  for (const cand of skillCandidates) {
14260
14276
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
14261
14277
  continue;
@@ -14592,7 +14608,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
14592
14608
  } catch {}
14593
14609
  }
14594
14610
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
14595
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-5ytt2y9n.js");
14611
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-jjyn29ht.js");
14596
14612
  for (const { id } of contradictedEntries) {
14597
14613
  try {
14598
14614
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -15391,7 +15407,7 @@ async function runCuratorPostMortem(directory, options = {}) {
15391
15407
  warnings.push("Failed to collect knowledge summary.");
15392
15408
  }
15393
15409
  try {
15394
- const { getScanStatus } = await import("./scan-cursor-c5mcce5r.js");
15410
+ const { getScanStatus } = await import("./scan-cursor-518rhxyd.js");
15395
15411
  const scanStatus = await getScanStatus(directory);
15396
15412
  if (scanStatus.remaining_estimate > 0) {
15397
15413
  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.`);
@@ -15565,7 +15581,7 @@ var _internals19 = {
15565
15581
  loadDefaultKnowledgeConfig: async (directory) => {
15566
15582
  const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-2x7wsb0n.js");
15567
15583
  try {
15568
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-kxw2sx1d.js");
15584
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-nbdge8b6.js");
15569
15585
  const loaded = loadPluginConfigWithMeta2(directory);
15570
15586
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
15571
15587
  } catch {
@@ -15573,11 +15589,11 @@ var _internals19 = {
15573
15589
  }
15574
15590
  },
15575
15591
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
15576
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-rtpbkffc.js");
15592
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-6ggzktne.js");
15577
15593
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
15578
15594
  },
15579
15595
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
15580
- const { checkHivePromotions } = await import("./hive-promoter-7x33c575.js");
15596
+ const { checkHivePromotions } = await import("./hive-promoter-4x3470c9.js");
15581
15597
  return checkHivePromotions(entries, knowledgeConfig, directory);
15582
15598
  },
15583
15599
  applyProposalTriage: async (directory, triage) => {
@@ -15586,7 +15602,7 @@ var _internals19 = {
15586
15602
  activateProposal,
15587
15603
  listSkills: listSkills2,
15588
15604
  sanitizeSlug
15589
- } = await import("./skill-generator-c77e0y98.js");
15605
+ } = await import("./skill-generator-hk6mc7pc.js");
15590
15606
  const result = {
15591
15607
  approved: [],
15592
15608
  rejected: [],
@@ -18110,7 +18126,7 @@ function hashContent(content) {
18110
18126
  async function loadConfigForPolicyCurator(directory) {
18111
18127
  const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-2x7wsb0n.js");
18112
18128
  try {
18113
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-kxw2sx1d.js");
18129
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-nbdge8b6.js");
18114
18130
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
18115
18131
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
18116
18132
  } catch {
@@ -23482,8 +23498,8 @@ var _internals32 = {
23482
23498
  loadCuratorDeps: async () => {
23483
23499
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
23484
23500
  import("./schema-2x7wsb0n.js"),
23485
- import("./curator-rtpbkffc.js"),
23486
- import("./curator-llm-factory-5dcetzsz.js")
23501
+ import("./curator-6ggzktne.js"),
23502
+ import("./curator-llm-factory-w6ep20tm.js")
23487
23503
  ]);
23488
23504
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
23489
23505
  }
@@ -23982,7 +23998,7 @@ import { fileURLToPath } from "url";
23982
23998
  // package.json
23983
23999
  var package_default = {
23984
24000
  name: "opencode-swarm",
23985
- version: "7.129.2",
24001
+ version: "7.129.4",
23986
24002
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
23987
24003
  main: "dist/index.js",
23988
24004
  types: "dist/index.d.ts",
@@ -24504,7 +24520,7 @@ async function computeCurationDiagnostics(directory, entries) {
24504
24520
  let scanCompleted = false;
24505
24521
  let scanRemaining = 0;
24506
24522
  try {
24507
- const { getScanStatus } = await import("./scan-cursor-c5mcce5r.js");
24523
+ const { getScanStatus } = await import("./scan-cursor-518rhxyd.js");
24508
24524
  const status = await getScanStatus(directory);
24509
24525
  scanGeneration = status.generation;
24510
24526
  scanCompleted = status.completed;
@@ -24517,14 +24533,14 @@ async function computeCurationDiagnostics(directory, entries) {
24517
24533
  const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-2x7wsb0n.js");
24518
24534
  let config;
24519
24535
  try {
24520
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-kxw2sx1d.js");
24536
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-nbdge8b6.js");
24521
24537
  const loaded = loadPluginConfigWithMeta2(directory);
24522
24538
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
24523
24539
  } catch {
24524
24540
  config = KnowledgeConfigSchema2.parse({});
24525
24541
  }
24526
24542
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
24527
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-vn1ybh31.js");
24543
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-s08pg90f.js");
24528
24544
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
24529
24545
  const cohortFp = await readCohortConfigFingerprint(directory);
24530
24546
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -38460,7 +38476,7 @@ var DISPATCH_FRAMEWORK_MAP = {
38460
38476
  };
38461
38477
  async function detectTestFrameworkViaDispatch(cwd) {
38462
38478
  try {
38463
- const { pickBackend } = await import("./dispatch-f4hj1cj7.js");
38479
+ const { pickBackend } = await import("./dispatch-3mhgqj2x.js");
38464
38480
  const backend = await pickBackend(cwd);
38465
38481
  if (!backend?.selectTestFramework)
38466
38482
  return "none";
@@ -38476,7 +38492,7 @@ async function buildTestCommandViaDispatch(framework, scope, files, coverage, ba
38476
38492
  if (framework === "none")
38477
38493
  return null;
38478
38494
  try {
38479
- const { pickBackend } = await import("./dispatch-f4hj1cj7.js");
38495
+ const { pickBackend } = await import("./dispatch-3mhgqj2x.js");
38480
38496
  const backend = await pickBackend(baseDir);
38481
38497
  if (backend?.buildTestCommand) {
38482
38498
  const cmd = backend.buildTestCommand(framework, files, baseDir, {
@@ -38496,7 +38512,7 @@ async function parseTestOutputViaDispatch(framework, output, baseDir) {
38496
38512
  if (framework === "none")
38497
38513
  return null;
38498
38514
  try {
38499
- const { pickBackend } = await import("./dispatch-f4hj1cj7.js");
38515
+ const { pickBackend } = await import("./dispatch-3mhgqj2x.js");
38500
38516
  const backend = await pickBackend(baseDir);
38501
38517
  if (!backend?.parseTestOutput)
38502
38518
  return null;
@@ -44374,7 +44390,7 @@ function buildDetailedHelp(commandName, entry) {
44374
44390
  async function handleHelpCommand(ctx) {
44375
44391
  const targetCommand = ctx.args.join(" ");
44376
44392
  if (!targetCommand) {
44377
- const { buildHelpText } = await import("./index-s7tsx4v9.js");
44393
+ const { buildHelpText } = await import("./index-803bqrzq.js");
44378
44394
  return buildHelpText();
44379
44395
  }
44380
44396
  const tokens = targetCommand.split(/\s+/);
@@ -44383,7 +44399,7 @@ async function handleHelpCommand(ctx) {
44383
44399
  return _internals9.buildDetailedHelp(resolved.key, resolved.entry);
44384
44400
  }
44385
44401
  const similar = _internals9.findSimilarCommands(targetCommand);
44386
- const { buildHelpText: fullHelp } = await import("./index-s7tsx4v9.js");
44402
+ const { buildHelpText: fullHelp } = await import("./index-803bqrzq.js");
44387
44403
  if (similar.length > 0) {
44388
44404
  return `Command '/swarm ${targetCommand}' not found.
44389
44405
 
@@ -44522,7 +44538,7 @@ var COMMAND_REGISTRY = {
44522
44538
  },
44523
44539
  "guardrail explain": {
44524
44540
  handler: async (ctx) => {
44525
- const { handleGuardrailExplain } = await import("./guardrail-explain-27xbz1h2.js");
44541
+ const { handleGuardrailExplain } = await import("./guardrail-explain-0gr9wkj0.js");
44526
44542
  return handleGuardrailExplain(ctx.directory, ctx.args);
44527
44543
  },
44528
44544
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -44532,7 +44548,7 @@ var COMMAND_REGISTRY = {
44532
44548
  },
44533
44549
  "guardrail-explain": {
44534
44550
  handler: async (ctx) => {
44535
- const { handleGuardrailExplain } = await import("./guardrail-explain-27xbz1h2.js");
44551
+ const { handleGuardrailExplain } = await import("./guardrail-explain-0gr9wkj0.js");
44536
44552
  return handleGuardrailExplain(ctx.directory, ctx.args);
44537
44553
  },
44538
44554
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -6,13 +6,13 @@ import {
6
6
  resolveSwarmKnowledgePath,
7
7
  transactKnowledge,
8
8
  wordBigrams
9
- } from "./index-w2kp2zvf.js";
9
+ } from "./index-n08cksd6.js";
10
10
  import {
11
11
  countEntryContradictionsInWindow,
12
12
  countEntryViolationsInWindow,
13
13
  readKnowledgeEvents,
14
14
  recordKnowledgeEvent
15
- } from "./index-kj86tyrs.js";
15
+ } from "./index-bz814zsm.js";
16
16
  import {
17
17
  init_knowledge_types,
18
18
  isActiveStatus
@@ -190,11 +190,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
190
190
  alreadyInactive: true
191
191
  };
192
192
  }
193
- const { quarantineEntry } = await import("./knowledge-validator-g2c4mbwa.js");
193
+ const { quarantineEntry } = await import("./knowledge-validator-rjwvafv3.js");
194
194
  let policyConfig;
195
195
  try {
196
196
  const { KnowledgeConfigSchema } = await import("./schema-2x7wsb0n.js");
197
- const { loadPluginConfigWithMeta } = await import("./index-kxw2sx1d.js");
197
+ const { loadPluginConfigWithMeta } = await import("./index-nbdge8b6.js");
198
198
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
199
199
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
200
200
  } catch {
@@ -650,7 +650,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
650
650
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
651
651
  if (atFloor.length === 0 && recovered.length === 0)
652
652
  return;
653
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-qnyfrsfv.js");
653
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-f75n3916.js");
654
654
  const rollups = await readKnowledgeCounterRollups(directory);
655
655
  const flagIds = new Set;
656
656
  for (const e of atFloor) {
@@ -717,11 +717,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
717
717
  });
718
718
  }
719
719
  if (action === "quarantine" && toQuarantine.length > 0) {
720
- const { quarantineEntry } = await import("./knowledge-validator-g2c4mbwa.js");
720
+ const { quarantineEntry } = await import("./knowledge-validator-rjwvafv3.js");
721
721
  const { KnowledgeConfigSchema } = await import("./schema-2x7wsb0n.js");
722
722
  let config;
723
723
  try {
724
- const { loadPluginConfigWithMeta } = await import("./index-kxw2sx1d.js");
724
+ const { loadPluginConfigWithMeta } = await import("./index-nbdge8b6.js");
725
725
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
726
726
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
727
727
  } catch {
@@ -7,7 +7,7 @@ import {
7
7
  loadPluginConfigWithMeta,
8
8
  loadPluginConfigWithMetaAsync,
9
9
  resolveWorktreeIsolationConfig
10
- } from "./index-6w02qz7t.js";
10
+ } from "./index-yxz0c97p.js";
11
11
  import {
12
12
  ApprovalEvidenceSchema,
13
13
  BaseEvidenceSchema,
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-rtry5xyf.js";
5
5
  import {
6
6
  readKnowledgeEvents
7
- } from "./index-kj86tyrs.js";
7
+ } from "./index-bz814zsm.js";
8
8
  import {
9
9
  isLinked,
10
10
  readLinkPointer,
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  authorizeCuration
4
- } from "./index-pgyp3tta.js";
4
+ } from "./index-nhexgq4a.js";
5
5
  import {
6
6
  findNearDuplicate,
7
7
  inferTags,
@@ -9,7 +9,7 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-w2kp2zvf.js";
12
+ } from "./index-n08cksd6.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
15
  } from "./index-q27bajqb.js";
@@ -527,20 +527,22 @@ function buildConfigWithMeta(rawUserConfig, rawProjectConfig, loadedFromFile, co
527
527
  ...gatesStripped,
528
528
  ...valueRecovery.recoveryWarnings.map((w) => w.section)
529
529
  ];
530
- advisoryWarn(`[opencode-swarm] Ignored ${removedKeys.length} invalid or unrecognized config key(s): ${removedKeys.join(", ")}. The rest of your configuration was preserved. Fix or remove these keys.`);
531
- const secureConfig = PluginConfigSchema.parse({
530
+ const secureParse = PluginConfigSchema.safeParse({
532
531
  ...recoveredParse.data,
533
532
  guardrails: {
534
533
  ...recoveredParse.data.guardrails,
535
534
  enabled: true
536
535
  }
537
536
  });
538
- return {
539
- config: secure(secureConfig),
540
- recovery: "sanitized_values",
541
- removedKeys,
542
- warnings: []
543
- };
537
+ if (secureParse.success) {
538
+ advisoryWarn(`[opencode-swarm] Ignored ${removedKeys.length} invalid or unrecognized config key(s): ${removedKeys.join(", ")}. The rest of your configuration was preserved. Fix or remove these keys.`);
539
+ return {
540
+ config: secure(secureParse.data),
541
+ recovery: "sanitized_values",
542
+ removedKeys,
543
+ warnings: []
544
+ };
545
+ }
544
546
  }
545
547
  }
546
548
  }
package/dist/cli/index.js CHANGED
@@ -7,28 +7,28 @@ import {
7
7
  getPluginLockFilePaths,
8
8
  package_default,
9
9
  resolveCommand
10
- } from "./index-ate4rw9q.js";
10
+ } from "./index-jke1z4f2.js";
11
11
  import"./index-v4n224r1.js";
12
12
  import"./index-cpssctv1.js";
13
13
  import"./index-kzvwb2se.js";
14
14
  import"./index-4905hd2m.js";
15
15
  import"./index-134d35c1.js";
16
- import"./index-6n2jpz7x.js";
17
- import"./index-wy5jy3m9.js";
18
- import"./index-m8vrw3pt.js";
19
- import"./index-5fnc76da.js";
16
+ import"./index-9f71ye47.js";
17
+ import"./index-8fy8q1px.js";
18
+ import"./index-mgz9nm4a.js";
19
+ import"./index-hbbj7ktj.js";
20
20
  import"./index-vxv732ex.js";
21
21
  import"./index-c8s9a3zh.js";
22
22
  import"./index-9ss2m4rs.js";
23
23
  import"./index-g4mnf3p5.js";
24
- import"./index-waqvy9a5.js";
25
- import"./index-pgyp3tta.js";
24
+ import"./index-x7wt1g4w.js";
25
+ import"./index-nhexgq4a.js";
26
26
  import"./index-rtry5xyf.js";
27
- import"./index-w2kp2zvf.js";
28
- import"./index-kj86tyrs.js";
27
+ import"./index-n08cksd6.js";
28
+ import"./index-bz814zsm.js";
29
29
  import"./index-ae75rja9.js";
30
30
  import"./index-q27bajqb.js";
31
- import"./index-6w02qz7t.js";
31
+ import"./index-yxz0c97p.js";
32
32
  import"./index-k5jrywpr.js";
33
33
  import"./index-n832052r.js";
34
34
  import {
@@ -48,7 +48,7 @@ import"./index-s80bsjkj.js";
48
48
  import"./index-z6xqpmqg.js";
49
49
  import"./index-zjygnfay.js";
50
50
  import"./index-zgwm4ryv.js";
51
- import"./index-40zn444p.js";
51
+ import"./index-f2y46pda.js";
52
52
  import"./index-3x761jqv.js";
53
53
  import"./index-7mkpsw6g.js";
54
54
  import"./index-fsrp8wp3.js";
@@ -8,9 +8,9 @@ import {
8
8
  maybeEscalateOnViolation,
9
9
  maybeQuarantineOnContradiction,
10
10
  readRecentEscalations
11
- } from "./index-m8vrw3pt.js";
12
- import"./index-w2kp2zvf.js";
13
- import"./index-kj86tyrs.js";
11
+ } from "./index-mgz9nm4a.js";
12
+ import"./index-n08cksd6.js";
13
+ import"./index-bz814zsm.js";
14
14
  import"./index-ae75rja9.js";
15
15
  import"./index-q27bajqb.js";
16
16
  import"./index-bk5tah7q.js";
@@ -26,7 +26,7 @@ import {
26
26
  resolveKnowledgeCounterBaselinePath,
27
27
  resolveKnowledgeEventsPath,
28
28
  resolveLegacyApplicationLogPath
29
- } from "./index-kj86tyrs.js";
29
+ } from "./index-bz814zsm.js";
30
30
  import"./index-ae75rja9.js";
31
31
  import"./index-q27bajqb.js";
32
32
  import"./index-zgwm4ryv.js";
@@ -40,7 +40,7 @@ import {
40
40
  transactKnowledge,
41
41
  transactKnowledgeWithCas,
42
42
  wordBigrams
43
- } from "./index-w2kp2zvf.js";
43
+ } from "./index-n08cksd6.js";
44
44
  import {
45
45
  resolveHiveDataDir
46
46
  } from "./index-ae75rja9.js";
@@ -23,11 +23,11 @@ import {
23
23
  validateLesson,
24
24
  validateSkillCandidatePath,
25
25
  validateSkillPath
26
- } from "./index-waqvy9a5.js";
27
- import"./index-pgyp3tta.js";
26
+ } from "./index-x7wt1g4w.js";
27
+ import"./index-nhexgq4a.js";
28
28
  import"./index-rtry5xyf.js";
29
- import"./index-w2kp2zvf.js";
30
- import"./index-kj86tyrs.js";
29
+ import"./index-n08cksd6.js";
30
+ import"./index-bz814zsm.js";
31
31
  import"./index-ae75rja9.js";
32
32
  import"./index-q27bajqb.js";
33
33
  import"./index-bk5tah7q.js";
@@ -4,8 +4,8 @@ import {
4
4
  alreadyCuratedThisGeneration,
5
5
  claimNextScanBatch,
6
6
  getScanStatus
7
- } from "./index-5fnc76da.js";
8
- import"./index-w2kp2zvf.js";
7
+ } from "./index-hbbj7ktj.js";
8
+ import"./index-n08cksd6.js";
9
9
  import"./index-ae75rja9.js";
10
10
  import"./index-q27bajqb.js";
11
11
  import"./index-bk5tah7q.js";
@@ -33,12 +33,12 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-wy5jy3m9.js";
37
- import"./index-waqvy9a5.js";
38
- import"./index-pgyp3tta.js";
36
+ } from "./index-8fy8q1px.js";
37
+ import"./index-x7wt1g4w.js";
38
+ import"./index-nhexgq4a.js";
39
39
  import"./index-rtry5xyf.js";
40
- import"./index-w2kp2zvf.js";
41
- import"./index-kj86tyrs.js";
40
+ import"./index-n08cksd6.js";
41
+ import"./index-bz814zsm.js";
42
42
  import"./index-ae75rja9.js";
43
43
  import"./index-q27bajqb.js";
44
44
  import"./index-bk5tah7q.js";