opencode-swarm 7.139.6 → 7.139.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 (41) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +62 -6
  2. package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +44 -6
  3. package/dist/agents/explorer.d.ts +1 -1
  4. package/dist/cli/{config-doctor-7v9at76j.js → config-doctor-9p18410e.js} +2 -2
  5. package/dist/cli/{curation-policy-rbrx3kd2.js → curation-policy-csqy6sxv.js} +2 -2
  6. package/dist/cli/{curator-llm-factory-305cfcxz.js → curator-llm-factory-9jx0967z.js} +13 -13
  7. package/dist/cli/{curator-bdc5hssa.js → curator-nm119d34.js} +13 -13
  8. package/dist/cli/{explorer-swjc297z.js → explorer-e9h66egs.js} +1 -1
  9. package/dist/cli/{guardrail-explain-w9rwgz4c.js → guardrail-explain-jcw3c310.js} +14 -14
  10. package/dist/cli/{guardrail-log-4805jgj5.js → guardrail-log-kezxpmcr.js} +3 -3
  11. package/dist/cli/{hive-promoter-jrd4pjb6.js → hive-promoter-pjyx3wy7.js} +13 -13
  12. package/dist/cli/{index-a6v3kzyc.js → index-0gre0ke3.js} +5 -5
  13. package/dist/cli/{index-wv89xmbe.js → index-2y3kqsrj.js} +1 -1
  14. package/dist/cli/{index-8d2d7c6k.js → index-61hxp7jc.js} +2 -2
  15. package/dist/cli/{index-ev72jrxc.js → index-82q5cn2m.js} +1 -1
  16. package/dist/cli/{index-b6k9z88b.js → index-8rzgy9eq.js} +1 -1
  17. package/dist/cli/{index-n3ppm2gt.js → index-bdvbjh9n.js} +1 -1
  18. package/dist/cli/{index-sfbwze80.js → index-c5t1dz4k.js} +15 -15
  19. package/dist/cli/{index-m7xks4r4.js → index-cdkp8p0d.js} +4 -4
  20. package/dist/cli/{index-68gh7p3t.js → index-fsrsvn0j.js} +1 -1
  21. package/dist/cli/{index-t94f72tb.js → index-fzf15czt.js} +2 -2
  22. package/dist/cli/{index-h7ht03c4.js → index-g5dfrs6s.js} +39 -39
  23. package/dist/cli/{index-7qx874pn.js → index-j358ngpt.js} +1 -1
  24. package/dist/cli/{index-fjrt81db.js → index-mejjza6g.js} +1 -1
  25. package/dist/cli/{index-1tw24kcp.js → index-nxfwwsdh.js} +1 -1
  26. package/dist/cli/{index-3fscvmfw.js → index-t3wschfh.js} +3 -3
  27. package/dist/cli/{index-6mjf4vr1.js → index-v2xrer41.js} +16 -29
  28. package/dist/cli/{index-k5z14rb1.js → index-z6je7zhk.js} +2 -2
  29. package/dist/cli/index.js +13 -13
  30. package/dist/cli/{knowledge-escalator-7z9vwqrk.js → knowledge-escalator-tzv6e9cb.js} +3 -3
  31. package/dist/cli/{knowledge-events-vw2cdtnp.js → knowledge-events-g5t9m5y3.js} +1 -1
  32. package/dist/cli/{knowledge-store-ecv0qs7r.js → knowledge-store-azpephvt.js} +1 -1
  33. package/dist/cli/{knowledge-validator-arppnzpb.js → knowledge-validator-eqd7kywp.js} +4 -4
  34. package/dist/cli/{scan-cursor-7740wg6r.js → scan-cursor-mq7g3a95.js} +2 -2
  35. package/dist/cli/{schema-sajt4mcv.js → schema-dcjtwyvf.js} +1 -1
  36. package/dist/cli/{skill-generator-k8qz8ja5.js → skill-generator-npzqnyac.js} +5 -5
  37. package/dist/hooks/compaction-customizer.d.ts +11 -0
  38. package/dist/hooks/pr-workflow-gate.d.ts +2 -2
  39. package/dist/index.js +66 -61
  40. package/dist/tools/dispatch-lanes.d.ts +3 -6
  41. package/package.json +1 -1
@@ -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.139.6",
24
+ version: "7.139.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",
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-t94f72tb.js";
4
+ } from "./index-fzf15czt.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-b6k9z88b.js";
7
+ } from "./index-8rzgy9eq.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -84,20 +84,20 @@ import {
84
84
  handleWriteRetroCommand,
85
85
  normalizeSwarmCommandInput,
86
86
  resolveCommand
87
- } from "./index-h7ht03c4.js";
87
+ } from "./index-g5dfrs6s.js";
88
88
  import"./index-41hkt36g.js";
89
89
  import"./index-1m1ksyqt.js";
90
- import"./index-ev72jrxc.js";
91
- import"./index-7qx874pn.js";
90
+ import"./index-82q5cn2m.js";
91
+ import"./index-j358ngpt.js";
92
92
  import"./index-brh827g0.js";
93
93
  import"./index-yyyk63kk.js";
94
94
  import"./index-y8552snf.js";
95
95
  import"./index-4905hd2m.js";
96
96
  import"./index-134d35c1.js";
97
- import"./index-3fscvmfw.js";
98
- import"./index-a6v3kzyc.js";
99
- import"./index-wv89xmbe.js";
100
- import"./index-6mjf4vr1.js";
97
+ import"./index-t3wschfh.js";
98
+ import"./index-0gre0ke3.js";
99
+ import"./index-2y3kqsrj.js";
100
+ import"./index-v2xrer41.js";
101
101
  import"./index-c8s9a3zh.js";
102
102
  import"./index-9ss2m4rs.js";
103
103
  import"./index-jfjnn408.js";
@@ -114,11 +114,11 @@ import"./index-74hpm6sh.js";
114
114
  import"./index-n0pja0qs.js";
115
115
  import"./index-8fwhhayc.js";
116
116
  import"./index-q1exe2b3.js";
117
- import"./index-8d2d7c6k.js";
118
- import"./index-1tw24kcp.js";
117
+ import"./index-61hxp7jc.js";
118
+ import"./index-nxfwwsdh.js";
119
119
  import"./index-rtry5xyf.js";
120
- import"./index-m7xks4r4.js";
121
- import"./index-68gh7p3t.js";
120
+ import"./index-cdkp8p0d.js";
121
+ import"./index-fsrsvn0j.js";
122
122
  import"./index-ae75rja9.js";
123
123
  import"./index-rs1f1bh0.js";
124
124
  import"./index-h2waehqq.js";
@@ -126,7 +126,7 @@ import"./index-ed5ykebp.js";
126
126
  import"./index-hfvxhk4z.js";
127
127
  import"./index-7g4c7s5r.js";
128
128
  import"./index-4nt52yr9.js";
129
- import"./index-fjrt81db.js";
129
+ import"./index-mejjza6g.js";
130
130
  import"./index-gprxjmm7.js";
131
131
  import"./index-n832052r.js";
132
132
  import"./index-d181x9zr.js";
@@ -135,7 +135,7 @@ import"./index-zgwm4ryv.js";
135
135
  import {
136
136
  init_schema,
137
137
  stripKnownSwarmPrefix
138
- } from "./index-n3ppm2gt.js";
138
+ } from "./index-bdvbjh9n.js";
139
139
  import {
140
140
  AGENT_TOOL_MAP,
141
141
  ORCHESTRATOR_NAME,
@@ -702,7 +702,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
702
702
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
703
703
  if (atFloor.length === 0 && recovered.length === 0)
704
704
  return;
705
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-vw2cdtnp.js");
705
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-g5t9m5y3.js");
706
706
  const rollups = await readKnowledgeCounterRollups(directory);
707
707
  const flagIds = new Set;
708
708
  for (const e of atFloor) {
@@ -769,11 +769,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
769
769
  });
770
770
  }
771
771
  if (action === "quarantine" && toQuarantine.length > 0) {
772
- const { quarantineEntry } = await import("./knowledge-validator-arppnzpb.js");
773
- const { KnowledgeConfigSchema } = await import("./schema-sajt4mcv.js");
772
+ const { quarantineEntry } = await import("./knowledge-validator-eqd7kywp.js");
773
+ const { KnowledgeConfigSchema } = await import("./schema-dcjtwyvf.js");
774
774
  let config;
775
775
  try {
776
- const { loadPluginConfigWithMeta } = await import("./index-k5z14rb1.js");
776
+ const { loadPluginConfigWithMeta } = await import("./index-z6je7zhk.js");
777
777
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
778
778
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
779
779
  } catch {
@@ -628,7 +628,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
628
628
  deltas.push({ id, delta });
629
629
  }
630
630
  if (deltas.length > 0) {
631
- const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-ecv0qs7r.js");
631
+ const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-azpephvt.js");
632
632
  await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
633
633
  }
634
634
  return {
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-h7ht03c4.js";
15
+ } from "./index-g5dfrs6s.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-ev72jrxc.js";
22
+ } from "./index-82q5cn2m.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -16,13 +16,13 @@ import {
16
16
  } from "./index-1m1ksyqt.js";
17
17
  import {
18
18
  stableCanonicalStringify
19
- } from "./index-ev72jrxc.js";
19
+ } from "./index-82q5cn2m.js";
20
20
  import {
21
21
  detectStraySwarmDirs,
22
22
  readDoctorArtifact,
23
23
  removeStraySwarmDir,
24
24
  runConfigDoctor
25
- } from "./index-7qx874pn.js";
25
+ } from "./index-j358ngpt.js";
26
26
  import {
27
27
  MAX_TRANSIENT_RETRIES,
28
28
  archiveEvidence,
@@ -122,20 +122,20 @@ import {
122
122
  retireSkill,
123
123
  selectCandidateEntries,
124
124
  syncBundledProjectSkillsIfMissingAsync
125
- } from "./index-3fscvmfw.js";
125
+ } from "./index-t3wschfh.js";
126
126
  import {
127
127
  readRecentEscalations
128
- } from "./index-a6v3kzyc.js";
128
+ } from "./index-0gre0ke3.js";
129
129
  import {
130
130
  alreadyCuratedThisGeneration,
131
131
  claimNextScanBatch,
132
132
  resolveCohortId
133
- } from "./index-wv89xmbe.js";
133
+ } from "./index-2y3kqsrj.js";
134
134
  import {
135
135
  CURATOR_INIT_PROMPT,
136
136
  CURATOR_PHASE_PROMPT,
137
137
  READ_ONLY_LANE_GUIDANCE
138
- } from "./index-6mjf4vr1.js";
138
+ } from "./index-v2xrer41.js";
139
139
  import {
140
140
  getGlobalEventBus
141
141
  } from "./index-c8s9a3zh.js";
@@ -222,11 +222,11 @@ import {
222
222
  validateActionableFields,
223
223
  validateLesson,
224
224
  validateSkillPath
225
- } from "./index-8d2d7c6k.js";
225
+ } from "./index-61hxp7jc.js";
226
226
  import {
227
227
  authorizeCuration,
228
228
  buildConfigFingerprintInput
229
- } from "./index-1tw24kcp.js";
229
+ } from "./index-nxfwwsdh.js";
230
230
  import {
231
231
  cohortConfigFingerprint
232
232
  } from "./index-rtry5xyf.js";
@@ -259,7 +259,7 @@ import {
259
259
  transactFile,
260
260
  transactKnowledge,
261
261
  wordBigrams
262
- } from "./index-m7xks4r4.js";
262
+ } from "./index-cdkp8p0d.js";
263
263
  import {
264
264
  MAX_EVENT_LOG_ENTRIES,
265
265
  _internals,
@@ -269,7 +269,7 @@ import {
269
269
  recordHiveKnowledgeEvent,
270
270
  recordKnowledgeEvent,
271
271
  resolveKnowledgeEventsPath
272
- } from "./index-68gh7p3t.js";
272
+ } from "./index-fsrsvn0j.js";
273
273
  import {
274
274
  resolveHiveDataDir,
275
275
  resolveHiveEventsPath,
@@ -313,7 +313,7 @@ import {
313
313
  init_loader,
314
314
  loadPluginConfig,
315
315
  loadPluginConfigWithMeta
316
- } from "./index-fjrt81db.js";
316
+ } from "./index-mejjza6g.js";
317
317
  import {
318
318
  RetrospectiveEvidenceSchema
319
319
  } from "./index-gprxjmm7.js";
@@ -345,7 +345,7 @@ import {
345
345
  package_default,
346
346
  resolveAutoReviewConfig,
347
347
  stripKnownSwarmPrefix
348
- } from "./index-n3ppm2gt.js";
348
+ } from "./index-bdvbjh9n.js";
349
349
  import {
350
350
  AGENT_TOOL_MAP,
351
351
  ALL_AGENT_NAMES,
@@ -21991,7 +21991,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
21991
21991
  };
21992
21992
  }
21993
21993
  async function sweepActiveNearDuplicates(directory, options = {}) {
21994
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k5z14rb1.js");
21994
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-z6je7zhk.js");
21995
21995
  const { config } = loadPluginConfigWithMeta2(directory);
21996
21996
  const sweepConfig = config.learning?.dedup_sweep;
21997
21997
  if (sweepConfig?.enabled === false)
@@ -23075,7 +23075,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
23075
23075
  }
23076
23076
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
23077
23077
  try {
23078
- const skillModule = await import("./skill-generator-k8qz8ja5.js");
23078
+ const skillModule = await import("./skill-generator-npzqnyac.js");
23079
23079
  for (const cand of skillCandidates) {
23080
23080
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
23081
23081
  continue;
@@ -23535,7 +23535,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
23535
23535
  } catch {}
23536
23536
  }
23537
23537
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
23538
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-7z9vwqrk.js");
23538
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-tzv6e9cb.js");
23539
23539
  for (const { id } of contradictedEntries) {
23540
23540
  try {
23541
23541
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -24354,7 +24354,7 @@ async function runCuratorPostMortem(directory, options = {}) {
24354
24354
  warnings.push("Failed to collect knowledge summary.");
24355
24355
  }
24356
24356
  try {
24357
- const { getScanStatus } = await import("./scan-cursor-7740wg6r.js");
24357
+ const { getScanStatus } = await import("./scan-cursor-mq7g3a95.js");
24358
24358
  const scanStatus = await getScanStatus(directory);
24359
24359
  if (scanStatus.remaining_estimate > 0) {
24360
24360
  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.`);
@@ -24396,7 +24396,7 @@ async function runCuratorPostMortem(directory, options = {}) {
24396
24396
  let actionResult;
24397
24397
  if (options.llmDelegate) {
24398
24398
  try {
24399
- const { CURATOR_POSTMORTEM_PROMPT } = await import("./explorer-swjc297z.js");
24399
+ const { CURATOR_POSTMORTEM_PROMPT } = await import("./explorer-e9h66egs.js");
24400
24400
  const userInput = assembleLLMInput(effectivePlanId, scope, options.sessionID, planSummary, knowledgeSummary, curatorDigest, proposals, unactionable, retrospectives, driftReports);
24401
24401
  const ac = new AbortController;
24402
24402
  const timer = setTimeout(() => ac.abort(), options.llmTimeoutMs ?? 300000);
@@ -24526,9 +24526,9 @@ var _internals28 = {
24526
24526
  verifyPostMortemKnowledgeActions,
24527
24527
  repairPostMortemActions,
24528
24528
  loadDefaultKnowledgeConfig: async (directory) => {
24529
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-sajt4mcv.js");
24529
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-dcjtwyvf.js");
24530
24530
  try {
24531
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k5z14rb1.js");
24531
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-z6je7zhk.js");
24532
24532
  const loaded = loadPluginConfigWithMeta2(directory);
24533
24533
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
24534
24534
  } catch {
@@ -24536,11 +24536,11 @@ var _internals28 = {
24536
24536
  }
24537
24537
  },
24538
24538
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
24539
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-bdc5hssa.js");
24539
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-nm119d34.js");
24540
24540
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
24541
24541
  },
24542
24542
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
24543
- const { checkHivePromotions } = await import("./hive-promoter-jrd4pjb6.js");
24543
+ const { checkHivePromotions } = await import("./hive-promoter-pjyx3wy7.js");
24544
24544
  return checkHivePromotions(entries, knowledgeConfig, directory);
24545
24545
  },
24546
24546
  applyProposalTriage: async (directory, triage) => {
@@ -24549,7 +24549,7 @@ var _internals28 = {
24549
24549
  activateProposal,
24550
24550
  listSkills: listSkills2,
24551
24551
  sanitizeSlug
24552
- } = await import("./skill-generator-k8qz8ja5.js");
24552
+ } = await import("./skill-generator-npzqnyac.js");
24553
24553
  const result = {
24554
24554
  approved: [],
24555
24555
  rejected: [],
@@ -25774,9 +25774,9 @@ function hashContent(content) {
25774
25774
  return createHash9("sha1").update(content).digest("hex");
25775
25775
  }
25776
25776
  async function loadConfigForPolicyCurator(directory) {
25777
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-sajt4mcv.js");
25777
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-dcjtwyvf.js");
25778
25778
  try {
25779
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k5z14rb1.js");
25779
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-z6je7zhk.js");
25780
25780
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
25781
25781
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
25782
25782
  } catch {
@@ -29785,7 +29785,7 @@ async function runFinalizeStage(ctx) {
29785
29785
  }
29786
29786
  }
29787
29787
  try {
29788
- const { CuratorConfigSchema: CCS } = await import("./schema-sajt4mcv.js");
29788
+ const { CuratorConfigSchema: CCS } = await import("./schema-dcjtwyvf.js");
29789
29789
  const { config: pmLoadedConfig } = _internals39.loadPluginConfigWithMeta(ctx.directory);
29790
29790
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
29791
29791
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -32058,9 +32058,9 @@ var _internals44 = {
32058
32058
  loadPluginConfigWithMeta,
32059
32059
  loadCuratorDeps: async () => {
32060
32060
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
32061
- import("./schema-sajt4mcv.js"),
32062
- import("./curator-bdc5hssa.js"),
32063
- import("./curator-llm-factory-305cfcxz.js")
32061
+ import("./schema-dcjtwyvf.js"),
32062
+ import("./curator-nm119d34.js"),
32063
+ import("./curator-llm-factory-9jx0967z.js")
32064
32064
  ]);
32065
32065
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
32066
32066
  }
@@ -32965,7 +32965,7 @@ async function computeCurationDiagnostics(directory, entries) {
32965
32965
  let scanCompleted = false;
32966
32966
  let scanRemaining = 0;
32967
32967
  try {
32968
- const { getScanStatus } = await import("./scan-cursor-7740wg6r.js");
32968
+ const { getScanStatus } = await import("./scan-cursor-mq7g3a95.js");
32969
32969
  const status = await getScanStatus(directory);
32970
32970
  scanGeneration = status.generation;
32971
32971
  scanCompleted = status.completed;
@@ -32975,17 +32975,17 @@ async function computeCurationDiagnostics(directory, entries) {
32975
32975
  try {
32976
32976
  const { isLinked: isLinked2 } = await import("./knowledge-link-q46k9adx.js");
32977
32977
  if (isLinked2(directory)) {
32978
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-sajt4mcv.js");
32978
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-dcjtwyvf.js");
32979
32979
  let config;
32980
32980
  try {
32981
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k5z14rb1.js");
32981
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-z6je7zhk.js");
32982
32982
  const loaded = loadPluginConfigWithMeta2(directory);
32983
32983
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
32984
32984
  } catch {
32985
32985
  config = KnowledgeConfigSchema2.parse({});
32986
32986
  }
32987
32987
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
32988
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-rbrx3kd2.js");
32988
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-csqy6sxv.js");
32989
32989
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
32990
32990
  const cohortFp = await readCohortConfigFingerprint(directory);
32991
32991
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -34196,7 +34196,7 @@ async function handleDoctorCommand(directory, args) {
34196
34196
  const result = runConfigDoctor(config, directory);
34197
34197
  let output;
34198
34198
  if (enableAutoFix && result.hasAutoFixableIssues) {
34199
- const { runConfigDoctorWithFixes } = await import("./config-doctor-7v9at76j.js");
34199
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-9p18410e.js");
34200
34200
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
34201
34201
  applyLossy: true
34202
34202
  });
@@ -57533,7 +57533,7 @@ function buildDetailedHelp(commandName, entry) {
57533
57533
  async function handleHelpCommand(ctx) {
57534
57534
  const targetCommand = ctx.args.join(" ");
57535
57535
  if (!targetCommand) {
57536
- const { buildHelpText } = await import("./index-sfbwze80.js");
57536
+ const { buildHelpText } = await import("./index-c5t1dz4k.js");
57537
57537
  return buildHelpText();
57538
57538
  }
57539
57539
  const tokens = targetCommand.split(/\s+/);
@@ -57542,7 +57542,7 @@ async function handleHelpCommand(ctx) {
57542
57542
  return _internals18.buildDetailedHelp(resolved.key, resolved.entry);
57543
57543
  }
57544
57544
  const similar = _internals18.findSimilarCommands(targetCommand);
57545
- const { buildHelpText: fullHelp } = await import("./index-sfbwze80.js");
57545
+ const { buildHelpText: fullHelp } = await import("./index-c5t1dz4k.js");
57546
57546
  if (similar.length > 0) {
57547
57547
  return `Command '/swarm ${targetCommand}' not found.
57548
57548
 
@@ -57719,7 +57719,7 @@ var COMMAND_REGISTRY = {
57719
57719
  },
57720
57720
  "guardrail explain": {
57721
57721
  handler: async (ctx) => {
57722
- const { handleGuardrailExplain } = await import("./guardrail-explain-w9rwgz4c.js");
57722
+ const { handleGuardrailExplain } = await import("./guardrail-explain-jcw3c310.js");
57723
57723
  return handleGuardrailExplain(ctx.directory, ctx.args);
57724
57724
  },
57725
57725
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -57729,7 +57729,7 @@ var COMMAND_REGISTRY = {
57729
57729
  },
57730
57730
  "guardrail-explain": {
57731
57731
  handler: async (ctx) => {
57732
- const { handleGuardrailExplain } = await import("./guardrail-explain-w9rwgz4c.js");
57732
+ const { handleGuardrailExplain } = await import("./guardrail-explain-jcw3c310.js");
57733
57733
  return handleGuardrailExplain(ctx.directory, ctx.args);
57734
57734
  },
57735
57735
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -57739,7 +57739,7 @@ var COMMAND_REGISTRY = {
57739
57739
  },
57740
57740
  "guardrail-log": {
57741
57741
  handler: async (ctx) => {
57742
- const { handleGuardrailLog } = await import("./guardrail-log-4805jgj5.js");
57742
+ const { handleGuardrailLog } = await import("./guardrail-log-kezxpmcr.js");
57743
57743
  return handleGuardrailLog(ctx.directory, ctx.args);
57744
57744
  },
57745
57745
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -59633,7 +59633,7 @@ HARD CONSTRAINTS (apply regardless of skill load success):
59633
59633
  - RUN ALL BASE LANES: the default PR_REVIEW path always launches exactly six repository-agnostic base check-type lanes from the skill. Use \`mode: "swarm-pr-review:base"\` and the exact six \`workflow_lane\` identifiers. The runtime rejects partial, duplicate, or mislabelled waves. Do not collapse, omit, or scale down the base lanes for a small, docs-only, or CI-only PR.
59634
59634
  - RETRY STRUCTURALLY: retry only failed base obligations in later \`swarm-pr-review:base\` async batches with the same exact \`pr_head_sha\`. Blocking \`dispatch_lanes\` and direct Task explorer/reviewer/critic dispatch are not provenance-equivalent and are rejected.
59635
59635
  - USE ASYNC DISPATCH WITHOUT IDLING: launch the base lanes with one \`dispatch_lanes_async\` call when available, record the \`batch_id\`, then keep doing non-dependent architect work while they run. Poll with \`collect_lane_results\` without \`wait\` (or \`wait: false\`) to process settled lanes and continue independent work between polls; use \`wait: true\` only as the final join when no independent work remains.
59636
- - EVALUATE ALL RISK FAMILIES: after the base explorer lanes settle, evaluate every repository-agnostic trigger row against the exact diff/context pack. Record applicable families as \`MATCHED\` and inapplicable families as provenance-free \`NOT_TRIGGERED\` with concrete absence evidence; \`unclassified-risk\` always remains \`MATCHED\`. Launch \`swarm-pr-review:micro\` lanes only for the \`MATCHED\` IDs, pass the complete exact eleven-row \`trigger_evaluation\` to every batch, and use each dispatched trigger ID as \`workflow_lane\`. Missing an evaluation row or a matched-family attestation is BLOCKED; a \`NOT_TRIGGERED\` family must not create a micro artifact.
59636
+ - EVALUATE ALL RISK FAMILIES: after the base explorer lanes settle, evaluate every repository-agnostic trigger row against the exact diff/context pack. Record applicable families as \`MATCHED\` and inapplicable families as provenance-free \`NOT_TRIGGERED\` with concrete absence evidence; \`unclassified-risk\` always remains \`MATCHED\`. Launch \`swarm-pr-review:micro\` lanes only for the \`MATCHED\` IDs. The first micro dispatch MUST pass the complete exact eleven-row \`trigger_evaluation\`, which freezes it for this session; any subsequent same-session micro batch may omit it and reuse the frozen ledger, while an explicitly supplied copy must remain exactly identical. Use each dispatched trigger ID as \`workflow_lane\`. Missing an evaluation row or a matched-family attestation is BLOCKED; a \`NOT_TRIGGERED\` family must not create a micro artifact.
59637
59637
  - RUN HEAD-BOUND VALIDATION: dispatch independent reviewers with \`mode: "swarm-pr-review:reviewer"\` and critics with \`mode: "swarm-pr-review:critic"\`, unique \`workflow_lane\` obligations, role-correct agents, and the same exact \`pr_head_sha\`. Critic dispatch is blocked until all declared reviewer obligations have successful artifacts.
59638
59638
  - COMPLETE EXPLICITLY: after final artifacts and synthesis, call \`complete_pr_workflow\` with \`mode: "PR_REVIEW"\` and the bound \`pr_head_sha\`; never leave the session trapped in a stale workflow gate.
59639
59639
  - ABORT IF UNRECOVERABLE: if the PR head cannot be fetched/checked out (the working tree stays on the wrong branch), a compound \`git fetch && git checkout\` keeps being rejected as read-only shell syntax (run them as TWO separate standalone commands first), or the merge-base bind is unreachable for any reason, call \`abort_pr_workflow\` with \`mode: "PR_REVIEW"\` and a one-line \`reason\` instead of looping. The tool refuses while PR workflow lanes are in flight (collect their results first). Aborting clears the durable gate and stops the auto-resume loop; the user can also run \`/swarm abort-pr-workflow\`. Do NOT abort as a shortcut to avoid coverage obligations \u2014 only when the bind/checkout path is genuinely unreachable.
@@ -9,7 +9,7 @@ import {
9
9
  PluginConfigSchema,
10
10
  init_schema,
11
11
  stripKnownSwarmPrefix
12
- } from "./index-n3ppm2gt.js";
12
+ } from "./index-bdvbjh9n.js";
13
13
  import {
14
14
  ALL_AGENT_NAMES,
15
15
  init_constants
@@ -10,7 +10,7 @@ import {
10
10
  PluginConfigSchema,
11
11
  init_schema,
12
12
  resolveExternalSkillsConfig
13
- } from "./index-n3ppm2gt.js";
13
+ } from "./index-bdvbjh9n.js";
14
14
  import {
15
15
  DEFAULT_WORKTREE_ISOLATION_CONFIG,
16
16
  init_constants
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-rtry5xyf.js";
5
5
  import {
6
6
  readKnowledgeEvents
7
- } from "./index-68gh7p3t.js";
7
+ } from "./index-fsrsvn0j.js";
8
8
  import {
9
9
  isLinked,
10
10
  readLinkPointer,
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  ALLOWED_SKILL_PATH_PREFIXES,
4
4
  validateSkillPath
5
- } from "./index-8d2d7c6k.js";
5
+ } from "./index-61hxp7jc.js";
6
6
  import {
7
7
  computeOutcomeSignal,
8
8
  readKnowledge,
9
9
  resolveHiveKnowledgePath,
10
10
  resolveSwarmKnowledgePath,
11
11
  transactKnowledge
12
- } from "./index-m7xks4r4.js";
12
+ } from "./index-cdkp8p0d.js";
13
13
  import {
14
14
  effectiveRetrievalOutcomes,
15
15
  readKnowledgeCounterRollups
16
- } from "./index-68gh7p3t.js";
16
+ } from "./index-fsrsvn0j.js";
17
17
  import {
18
18
  advisoryWarn,
19
19
  init_warning_buffer
@@ -126,37 +126,24 @@ src/tools/declare-scope.ts \u2014 function has 12 parameters, consider splitting
126
126
  Activates when your prompt contains "[CANDIDATE]" anywhere in its text.
127
127
 
128
128
  When active, replace the default OUTPUT FORMAT above with structured pipe-delimited
129
- candidate rows. Emit the marker-bearing header, then exactly one unprefixed data
130
- row per finding:
131
-
132
- [CANDIDATE] | candidate_id | lane | severity | category | file:line | claim | evidence_summary | impact_context | confidence
133
-
134
- Field rules:
135
- - candidate_id: unique within this lane (e.g. C-001, C-002)
136
- - lane: your lane name or focus area
137
- - severity: INFO | LOW | MEDIUM | HIGH | CRITICAL
138
- - category: short category tag (e.g. null-safety, async-ordering, injection)
139
- - file:line: exact file path and line number (e.g. src/utils/cache.ts:142)
140
- - claim: one-sentence description of the issue
141
- - evidence_summary: what you observed in the code that supports the claim
142
- - impact_context: who or what is affected downstream
143
- - confidence: LOW | MEDIUM | HIGH
144
-
145
- Emit a header row first, then one unprefixed data row per finding. Use pipe (|) to
146
- separate fields; escape literal pipe characters inside field values as \\|.
147
-
148
- If either a standard explorer or a micro-lane finds zero issues, emit the
149
- header followed by exactly the matching family form:
150
- [CLEAN] | lane | coverage_scope | evidence
151
- [CLEAN] | micro_lane | coverage_scope | evidence
152
- Replace lane or micro_lane with the exact controller-assigned value and fill
153
- the remaining fields with the checks completed and concrete negative evidence.
154
- Header-only output is unattested. Do NOT fall back to the default
129
+ candidate rows. Treat the exact header supplied by the caller or controller as
130
+ the single authoritative schema. Copy the marker-bearing header verbatim, then
131
+ emit exactly one unprefixed data row per finding. Do not merge fields from
132
+ another candidate family or invent a trailing field.
133
+
134
+ Use the exact caller-assigned lane identity. Candidate severity is INFO, LOW,
135
+ MEDIUM, HIGH, or CRITICAL; confidence is exactly LOW, MEDIUM, or HIGH. Escape a
136
+ literal pipe inside a field as \\|. Emit machine rows as plain text, never inside
137
+ Markdown code fences.
138
+
139
+ For zero findings, copy the exact matching [CLEAN] template supplied by the
140
+ caller and replace its placeholders with the controller-assigned lane, a
141
+ substantive coverage scope, and concrete negative evidence. A CLEAN row has no
142
+ confidence or trailing field. Header-only output is unattested. If the prompt
143
+ contains the marker but no exact candidate header and CLEAN template, report the
144
+ missing contract instead of guessing. Do NOT fall back to the default
155
145
  PROJECT/STRUCTURE format.
156
146
 
157
- For micro-lane dispatches, use the micro-lane variant:
158
- [CANDIDATE] | candidate_id | micro_lane | severity | category | file:line | claim | invariant_violated | evidence_summary | confidence
159
-
160
147
  Do NOT use CONFIRMED, DISPROVED, or PRE_EXISTING \u2014 those are reviewer verdicts.
161
148
 
162
149
  ## INTEGRATION IMPACT ANALYSIS MODE
@@ -7,7 +7,7 @@ import {
7
7
  loadPluginConfigWithMeta,
8
8
  loadPluginConfigWithMetaAsync,
9
9
  resolveWorktreeIsolationConfig
10
- } from "./index-fjrt81db.js";
10
+ } from "./index-mejjza6g.js";
11
11
  import {
12
12
  ApprovalEvidenceSchema,
13
13
  BaseEvidenceSchema,
@@ -65,7 +65,7 @@ import {
65
65
  TurboConfigSchema,
66
66
  WorktreeIsolationConfigSchema,
67
67
  resolveAutoReviewConfig
68
- } from "./index-n3ppm2gt.js";
68
+ } from "./index-bdvbjh9n.js";
69
69
  import {
70
70
  ALL_AGENT_NAMES,
71
71
  ALL_SUBAGENT_NAMES,
package/dist/cli/index.js CHANGED
@@ -6,20 +6,20 @@ import {
6
6
  getPluginConfigDir,
7
7
  getPluginLockFilePaths,
8
8
  resolveCommand
9
- } from "./index-h7ht03c4.js";
9
+ } from "./index-g5dfrs6s.js";
10
10
  import"./index-41hkt36g.js";
11
11
  import"./index-1m1ksyqt.js";
12
- import"./index-ev72jrxc.js";
13
- import"./index-7qx874pn.js";
12
+ import"./index-82q5cn2m.js";
13
+ import"./index-j358ngpt.js";
14
14
  import"./index-brh827g0.js";
15
15
  import"./index-yyyk63kk.js";
16
16
  import"./index-y8552snf.js";
17
17
  import"./index-4905hd2m.js";
18
18
  import"./index-134d35c1.js";
19
- import"./index-3fscvmfw.js";
20
- import"./index-a6v3kzyc.js";
21
- import"./index-wv89xmbe.js";
22
- import"./index-6mjf4vr1.js";
19
+ import"./index-t3wschfh.js";
20
+ import"./index-0gre0ke3.js";
21
+ import"./index-2y3kqsrj.js";
22
+ import"./index-v2xrer41.js";
23
23
  import"./index-c8s9a3zh.js";
24
24
  import"./index-9ss2m4rs.js";
25
25
  import"./index-jfjnn408.js";
@@ -36,11 +36,11 @@ import"./index-74hpm6sh.js";
36
36
  import"./index-n0pja0qs.js";
37
37
  import"./index-8fwhhayc.js";
38
38
  import"./index-q1exe2b3.js";
39
- import"./index-8d2d7c6k.js";
40
- import"./index-1tw24kcp.js";
39
+ import"./index-61hxp7jc.js";
40
+ import"./index-nxfwwsdh.js";
41
41
  import"./index-rtry5xyf.js";
42
- import"./index-m7xks4r4.js";
43
- import"./index-68gh7p3t.js";
42
+ import"./index-cdkp8p0d.js";
43
+ import"./index-fsrsvn0j.js";
44
44
  import"./index-ae75rja9.js";
45
45
  import"./index-rs1f1bh0.js";
46
46
  import"./index-h2waehqq.js";
@@ -48,7 +48,7 @@ import"./index-ed5ykebp.js";
48
48
  import"./index-hfvxhk4z.js";
49
49
  import"./index-7g4c7s5r.js";
50
50
  import"./index-4nt52yr9.js";
51
- import"./index-fjrt81db.js";
51
+ import"./index-mejjza6g.js";
52
52
  import"./index-gprxjmm7.js";
53
53
  import"./index-n832052r.js";
54
54
  import"./index-d181x9zr.js";
@@ -57,7 +57,7 @@ import"./index-zgwm4ryv.js";
57
57
  import {
58
58
  init_package,
59
59
  package_default
60
- } from "./index-n3ppm2gt.js";
60
+ } from "./index-bdvbjh9n.js";
61
61
  import {
62
62
  DEFAULT_AGENT_CONFIGS,
63
63
  init_constants
@@ -8,9 +8,9 @@ import {
8
8
  maybeEscalateOnViolation,
9
9
  maybeQuarantineOnContradiction,
10
10
  readRecentEscalations
11
- } from "./index-a6v3kzyc.js";
12
- import"./index-m7xks4r4.js";
13
- import"./index-68gh7p3t.js";
11
+ } from "./index-0gre0ke3.js";
12
+ import"./index-cdkp8p0d.js";
13
+ import"./index-fsrsvn0j.js";
14
14
  import"./index-ae75rja9.js";
15
15
  import"./index-rs1f1bh0.js";
16
16
  import"./index-h2waehqq.js";
@@ -28,7 +28,7 @@ import {
28
28
  resolveKnowledgeCounterBaselinePath,
29
29
  resolveKnowledgeEventsPath,
30
30
  resolveLegacyApplicationLogPath
31
- } from "./index-68gh7p3t.js";
31
+ } from "./index-fsrsvn0j.js";
32
32
  import"./index-ae75rja9.js";
33
33
  import"./index-rs1f1bh0.js";
34
34
  import"./index-h2waehqq.js";