opencode-swarm 7.160.1 → 7.160.2

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 (65) hide show
  1. package/.opencode/skills/critic-gate/SKILL.md +8 -1
  2. package/.opencode/skills/execute/SKILL.md +4 -3
  3. package/.opencode/skills/phase-wrap/SKILL.md +2 -0
  4. package/.opencode/skills/running-tests/SKILL.md +6 -0
  5. package/.opencode/skills/swarm-implement/SKILL.md +2 -0
  6. package/.opencode/skills/swarm-pr-review/SKILL.md +1 -0
  7. package/dist/agents/architect.d.ts +1 -1
  8. package/dist/build/command-resolution.d.ts +13 -0
  9. package/dist/build/discovery.d.ts +11 -4
  10. package/dist/cli/{coder-settlement-678ccmnf.js → coder-settlement-gzar5ypz.js} +3 -3
  11. package/dist/cli/{config-doctor-fr8dfrt2.js → config-doctor-ancn1sj7.js} +2 -2
  12. package/dist/cli/{core-4j1hbhey.js → core-bhmqtxev.js} +1 -1
  13. package/dist/cli/{curator-llm-factory-s9s4s0q3.js → curator-llm-factory-6mw01jx1.js} +21 -21
  14. package/dist/cli/{curator-85d97240.js → curator-sgmynbpm.js} +21 -21
  15. package/dist/cli/{dispatch-7r46tfr9.js → dispatch-q4v8x2pk.js} +1 -1
  16. package/dist/cli/{evidence-summary-service-9dyt2kzh.js → evidence-summary-service-1pcfsqhv.js} +7 -7
  17. package/dist/cli/{gate-evidence-a6paafg8.js → gate-evidence-w0kjqmew.js} +2 -2
  18. package/dist/cli/{guardrail-explain-4a2xdtew.js → guardrail-explain-k99eje1y.js} +22 -22
  19. package/dist/cli/{guardrail-log-27nkntrx.js → guardrail-log-md5gcpk7.js} +3 -3
  20. package/dist/cli/{guardrail-reset-xn7k3hn8.js → guardrail-reset-3385eqmq.js} +21 -21
  21. package/dist/cli/{hive-promoter-k57j3kp6.js → hive-promoter-r0ekyn5m.js} +21 -21
  22. package/dist/cli/{index-m84z3aa8.js → index-2123hwbj.js} +1 -1
  23. package/dist/cli/{index-nj6rmyeh.js → index-3146wmgv.js} +352 -149
  24. package/dist/cli/{index-98jmggma.js → index-3a35tt6a.js} +3 -3
  25. package/dist/cli/{index-dq93ar40.js → index-4d8cq6e1.js} +3 -3
  26. package/dist/cli/{index-z0bxbb9g.js → index-4dcz9fpn.js} +1 -1
  27. package/dist/cli/{index-pqjcyj0p.js → index-5th50g17.js} +1 -1
  28. package/dist/cli/{index-ny0g8fdg.js → index-5xfx5sbw.js} +5 -5
  29. package/dist/cli/{index-7npz9n4s.js → index-6scakreq.js} +1 -1
  30. package/dist/cli/{index-bqxffayb.js → index-717pmdce.js} +1 -1
  31. package/dist/cli/{index-7v0ex0jt.js → index-am5bz6mf.js} +1 -1
  32. package/dist/cli/{index-wccdm7jv.js → index-k0qy284k.js} +4 -4
  33. package/dist/cli/{index-61c3d769.js → index-k50kxd3w.js} +1 -1
  34. package/dist/cli/{index-qc53dfzh.js → index-kqzba6ex.js} +1 -1
  35. package/dist/cli/{index-8c9qzpy7.js → index-q8hm27yj.js} +7 -1
  36. package/dist/cli/{index-v8dsmee1.js → index-re338hf1.js} +3 -3
  37. package/dist/cli/{index-zdv914xa.js → index-s7w6ntw6.js} +66 -59
  38. package/dist/cli/{index-e1ygmd4q.js → index-vsy942dt.js} +23 -23
  39. package/dist/cli/{index-zpzvpybn.js → index-vv760pbg.js} +2 -2
  40. package/dist/cli/{index-nnzdayvk.js → index-war2dt6a.js} +4 -4
  41. package/dist/cli/{index-pkz91fwm.js → index-xkmzsfg5.js} +2 -2
  42. package/dist/cli/{index-drqvph47.js → index-xsd7y4hp.js} +2 -2
  43. package/dist/cli/{index-f72612zc.js → index-xtwny1ae.js} +1 -1
  44. package/dist/cli/{index-gjx53y3c.js → index-yd6y4qr7.js} +1 -1
  45. package/dist/cli/{index-jszabr0r.js → index-yp81ebrx.js} +1 -1
  46. package/dist/cli/{index-m1cw9fsh.js → index-zbnf26br.js} +4 -4
  47. package/dist/cli/index.js +21 -21
  48. package/dist/cli/{knowledge-escalator-3q2x34cg.js → knowledge-escalator-saekqp8t.js} +7 -7
  49. package/dist/cli/{knowledge-events-5y34w84b.js → knowledge-events-ej8yz3yq.js} +5 -5
  50. package/dist/cli/{knowledge-store-fqv89q5k.js → knowledge-store-3jamj5n4.js} +1 -1
  51. package/dist/cli/{knowledge-validator-fsdx14tk.js → knowledge-validator-26w2mvqv.js} +2 -2
  52. package/dist/cli/{pending-delegations-6ae7wy5q.js → pending-delegations-7xak7g59.js} +1 -1
  53. package/dist/cli/{pr-review-reentry-authorization-986tk381.js → pr-review-reentry-authorization-v97q63q4.js} +21 -21
  54. package/dist/cli/{scan-cursor-shn926r6.js → scan-cursor-1agr50f8.js} +2 -2
  55. package/dist/cli/{schema-98tdb9h0.js → schema-z0ygrqgy.js} +1 -1
  56. package/dist/cli/{scope-persistence-cn34xnwr.js → scope-persistence-tncg38by.js} +4 -4
  57. package/dist/cli/{skill-generator-kck7087c.js → skill-generator-jq20a09m.js} +8 -8
  58. package/dist/cli/{worktree-collision-ownership-6b3kshcv.js → worktree-collision-ownership-b9cp9zvw.js} +1 -1
  59. package/dist/cli/{worktree-isolation-he01qhss.js → worktree-isolation-dzyxf8hn.js} +21 -21
  60. package/dist/config/evidence-schema.d.ts +18 -0
  61. package/dist/index.js +242 -241
  62. package/dist/lang/default-backend.d.ts +1 -13
  63. package/dist/tools/build-check.d.ts +4 -0
  64. package/dist/tools/test-runner.d.ts +2 -0
  65. package/package.json +1 -1
@@ -15,13 +15,13 @@ import {
15
15
  protectedRoots,
16
16
  redactDecisionLineForArchive,
17
17
  stableCanonicalStringify
18
- } from "./index-m84z3aa8.js";
18
+ } from "./index-2123hwbj.js";
19
19
  import {
20
20
  detectStraySwarmDirs,
21
21
  readDoctorArtifact,
22
22
  removeStraySwarmDir,
23
23
  runConfigDoctor
24
- } from "./index-f72612zc.js";
24
+ } from "./index-xtwny1ae.js";
25
25
  import {
26
26
  MAX_TRANSIENT_RETRIES,
27
27
  archiveEvidence,
@@ -68,7 +68,7 @@ import {
68
68
  validateProjectRoot,
69
69
  validateSymlinkBoundary,
70
70
  validateTargetWithinRoot
71
- } from "./index-m1cw9fsh.js";
71
+ } from "./index-zbnf26br.js";
72
72
  import {
73
73
  EvaluationTaskV1Schema,
74
74
  GateAuditManifestV1Schema,
@@ -107,8 +107,9 @@ import {
107
107
  buildNativeTargetCommand,
108
108
  getProfileForFile,
109
109
  isCommandAvailable,
110
+ resolveLocalNodeTool,
110
111
  tool
111
- } from "./index-nj6rmyeh.js";
112
+ } from "./index-3146wmgv.js";
112
113
  import {
113
114
  BUNDLED_PROJECT_SKILL_ROOT,
114
115
  DEFAULT_SKILL_MIN_CONFIDENCE,
@@ -129,15 +130,15 @@ import {
129
130
  retireSkill,
130
131
  selectCandidateEntries,
131
132
  syncBundledProjectSkillsIfMissingAsync
132
- } from "./index-v8dsmee1.js";
133
+ } from "./index-re338hf1.js";
133
134
  import {
134
135
  readRecentEscalations
135
- } from "./index-ny0g8fdg.js";
136
+ } from "./index-5xfx5sbw.js";
136
137
  import {
137
138
  alreadyCuratedThisGeneration,
138
139
  claimNextScanBatch,
139
140
  resolveCohortId
140
- } from "./index-7v0ex0jt.js";
141
+ } from "./index-am5bz6mf.js";
141
142
  import {
142
143
  CURATOR_INIT_PROMPT,
143
144
  CURATOR_PHASE_PROMPT,
@@ -173,7 +174,7 @@ import {
173
174
  listCoderSettlementWalStates,
174
175
  recoverCoderSettlement,
175
176
  recoverStaleCoderSettlements
176
- } from "./index-dq93ar40.js";
177
+ } from "./index-4d8cq6e1.js";
177
178
  import {
178
179
  parsePorcelainV2Snapshot,
179
180
  resolveCommitCountSince,
@@ -217,7 +218,7 @@ import {
217
218
  validateActionableFields,
218
219
  validateLesson,
219
220
  validateSkillPath
220
- } from "./index-jszabr0r.js";
221
+ } from "./index-yp81ebrx.js";
221
222
  import {
222
223
  authorizeCuration,
223
224
  buildConfigFingerprintInput
@@ -252,12 +253,12 @@ import {
252
253
  transitionTaskWorkflowEvidence,
253
254
  withTaskEvidenceTransaction,
254
255
  writeWorkflowWalFile
255
- } from "./index-z0bxbb9g.js";
256
+ } from "./index-4dcz9fpn.js";
256
257
  import {
257
258
  makeWorktreeBranchName,
258
259
  provisionWorktree,
259
260
  removeWorktree
260
- } from "./index-qc53dfzh.js";
261
+ } from "./index-kqzba6ex.js";
261
262
  import {
262
263
  DEFAULT_STALE_DELEGATION_TIMEOUT_MS,
263
264
  DELEGATION_COMPACTION_HIGH_WATER_BYTES,
@@ -285,7 +286,7 @@ import {
285
286
  scanBackgroundCoderReservationsForAdmission,
286
287
  scanDelegationsForRecovery,
287
288
  sweepStaleDelegations
288
- } from "./index-61c3d769.js";
289
+ } from "./index-k50kxd3w.js";
289
290
  import {
290
291
  compositeSessionKey,
291
292
  sessionKeySuffix
@@ -296,7 +297,7 @@ import {
296
297
  clearAllScopes,
297
298
  clearScopeBindingFromDisk,
298
299
  clearScopeBindings
299
- } from "./index-drqvph47.js";
300
+ } from "./index-xsd7y4hp.js";
300
301
  import {
301
302
  appendLedgerEvent,
302
303
  computePlanHash,
@@ -311,7 +312,7 @@ import {
311
312
  readPlanEpochIdentity,
312
313
  replayFromLedgerWithStatus,
313
314
  takeSnapshotEvent
314
- } from "./index-pqjcyj0p.js";
315
+ } from "./index-5th50g17.js";
315
316
  import {
316
317
  CORE_EVENT_LOCKED,
317
318
  appendCoreEventSync,
@@ -370,7 +371,7 @@ import {
370
371
  transactFile,
371
372
  transactKnowledge,
372
373
  wordBigrams
373
- } from "./index-nnzdayvk.js";
374
+ } from "./index-war2dt6a.js";
374
375
  import {
375
376
  MAX_EVENT_LOG_ENTRIES,
376
377
  _internals as _internals2,
@@ -386,13 +387,13 @@ import {
386
387
  recordKnowledgeEvent,
387
388
  recordPhaseCloseIntent,
388
389
  resolveKnowledgeEventsPath
389
- } from "./index-98jmggma.js";
390
+ } from "./index-3a35tt6a.js";
390
391
  import {
391
392
  resolveWorktreeIsolationConfig
392
- } from "./index-pkz91fwm.js";
393
+ } from "./index-xkmzsfg5.js";
393
394
  import {
394
395
  RetrospectiveEvidenceSchema
395
- } from "./index-8c9qzpy7.js";
396
+ } from "./index-q8hm27yj.js";
396
397
  import {
397
398
  estimateTokens,
398
399
  readSwarmFileAsync,
@@ -412,7 +413,7 @@ import {
412
413
  init_loader,
413
414
  loadPluginConfig,
414
415
  loadPluginConfigWithMeta
415
- } from "./index-bqxffayb.js";
416
+ } from "./index-717pmdce.js";
416
417
  import {
417
418
  DEFAULT_HARNESS_EVOLUTION_CONFIG,
418
419
  DEFAULT_PR_REVIEW_RESILIENCE_CONFIG,
@@ -428,7 +429,7 @@ import {
428
429
  package_default,
429
430
  resolveAutoReviewConfig,
430
431
  stripKnownSwarmPrefix
431
- } from "./index-7npz9n4s.js";
432
+ } from "./index-6scakreq.js";
432
433
  import {
433
434
  init_git_executable,
434
435
  resolveGitExecutable,
@@ -21323,7 +21324,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
21323
21324
  };
21324
21325
  }
21325
21326
  async function sweepActiveNearDuplicates(directory, options = {}) {
21326
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-wccdm7jv.js");
21327
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k0qy284k.js");
21327
21328
  const { config } = loadPluginConfigWithMeta2(directory);
21328
21329
  const sweepConfig = config.learning?.dedup_sweep;
21329
21330
  if (sweepConfig?.enabled === false)
@@ -22460,7 +22461,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
22460
22461
  }
22461
22462
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
22462
22463
  try {
22463
- const skillModule = await import("./skill-generator-kck7087c.js");
22464
+ const skillModule = await import("./skill-generator-jq20a09m.js");
22464
22465
  for (const cand of skillCandidates) {
22465
22466
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
22466
22467
  continue;
@@ -22932,7 +22933,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
22932
22933
  } catch {}
22933
22934
  }
22934
22935
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
22935
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-3q2x34cg.js");
22936
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-saekqp8t.js");
22936
22937
  for (const { id } of contradictedEntries) {
22937
22938
  try {
22938
22939
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -23751,7 +23752,7 @@ async function runCuratorPostMortem(directory, options = {}) {
23751
23752
  warnings.push("Failed to collect knowledge summary.");
23752
23753
  }
23753
23754
  try {
23754
- const { getScanStatus } = await import("./scan-cursor-shn926r6.js");
23755
+ const { getScanStatus } = await import("./scan-cursor-1agr50f8.js");
23755
23756
  const scanStatus = await getScanStatus(directory);
23756
23757
  if (scanStatus.remaining_estimate > 0) {
23757
23758
  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.`);
@@ -23923,9 +23924,9 @@ var _internals27 = {
23923
23924
  verifyPostMortemKnowledgeActions,
23924
23925
  repairPostMortemActions,
23925
23926
  loadDefaultKnowledgeConfig: async (directory) => {
23926
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-98tdb9h0.js");
23927
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-z0ygrqgy.js");
23927
23928
  try {
23928
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-wccdm7jv.js");
23929
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k0qy284k.js");
23929
23930
  const loaded = loadPluginConfigWithMeta2(directory);
23930
23931
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
23931
23932
  } catch {
@@ -23933,11 +23934,11 @@ var _internals27 = {
23933
23934
  }
23934
23935
  },
23935
23936
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
23936
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-85d97240.js");
23937
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-sgmynbpm.js");
23937
23938
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
23938
23939
  },
23939
23940
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
23940
- const { checkHivePromotions } = await import("./hive-promoter-k57j3kp6.js");
23941
+ const { checkHivePromotions } = await import("./hive-promoter-r0ekyn5m.js");
23941
23942
  return checkHivePromotions(entries, knowledgeConfig, directory);
23942
23943
  },
23943
23944
  applyProposalTriage: async (directory, triage) => {
@@ -23946,7 +23947,7 @@ var _internals27 = {
23946
23947
  activateProposal,
23947
23948
  listSkills: listSkills2,
23948
23949
  sanitizeSlug
23949
- } = await import("./skill-generator-kck7087c.js");
23950
+ } = await import("./skill-generator-jq20a09m.js");
23950
23951
  const result = {
23951
23952
  approved: [],
23952
23953
  rejected: [],
@@ -25276,9 +25277,9 @@ function hashContent(content) {
25276
25277
  return createHash13("sha1").update(content).digest("hex");
25277
25278
  }
25278
25279
  async function loadConfigForPolicyCurator(directory) {
25279
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-98tdb9h0.js");
25280
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-z0ygrqgy.js");
25280
25281
  try {
25281
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-wccdm7jv.js");
25282
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k0qy284k.js");
25282
25283
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
25283
25284
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
25284
25285
  } catch {
@@ -37583,7 +37584,7 @@ async function runFinalizeStage(ctx) {
37583
37584
  }
37584
37585
  }
37585
37586
  try {
37586
- const { CuratorConfigSchema: CCS } = await import("./schema-98tdb9h0.js");
37587
+ const { CuratorConfigSchema: CCS } = await import("./schema-z0ygrqgy.js");
37587
37588
  const { config: pmLoadedConfig } = _internals41.loadPluginConfigWithMeta(ctx.directory);
37588
37589
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
37589
37590
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -39807,9 +39808,9 @@ var _internals45 = {
39807
39808
  loadPluginConfigWithMeta,
39808
39809
  loadCuratorDeps: async () => {
39809
39810
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
39810
- import("./schema-98tdb9h0.js"),
39811
- import("./curator-85d97240.js"),
39812
- import("./curator-llm-factory-s9s4s0q3.js")
39811
+ import("./schema-z0ygrqgy.js"),
39812
+ import("./curator-sgmynbpm.js"),
39813
+ import("./curator-llm-factory-6mw01jx1.js")
39813
39814
  ]);
39814
39815
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
39815
39816
  }
@@ -40818,7 +40819,7 @@ async function computeCurationDiagnostics(directory, entries) {
40818
40819
  let scanCompleted = false;
40819
40820
  let scanRemaining = 0;
40820
40821
  try {
40821
- const { getScanStatus } = await import("./scan-cursor-shn926r6.js");
40822
+ const { getScanStatus } = await import("./scan-cursor-1agr50f8.js");
40822
40823
  const status = await getScanStatus(directory);
40823
40824
  scanGeneration = status.generation;
40824
40825
  scanCompleted = status.completed;
@@ -40828,10 +40829,10 @@ async function computeCurationDiagnostics(directory, entries) {
40828
40829
  try {
40829
40830
  const { isLinked: isLinked2 } = await import("./knowledge-link-xezm8hr3.js");
40830
40831
  if (isLinked2(directory)) {
40831
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-98tdb9h0.js");
40832
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-z0ygrqgy.js");
40832
40833
  let config;
40833
40834
  try {
40834
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-wccdm7jv.js");
40835
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-k0qy284k.js");
40835
40836
  const loaded = loadPluginConfigWithMeta2(directory);
40836
40837
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
40837
40838
  } catch {
@@ -42179,7 +42180,7 @@ async function handleDoctorCommand(directory, args) {
42179
42180
  const result = runConfigDoctor(config, directory);
42180
42181
  let output;
42181
42182
  if (enableAutoFix && result.hasAutoFixableIssues) {
42182
- const { runConfigDoctorWithFixes } = await import("./config-doctor-fr8dfrt2.js");
42183
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-ancn1sj7.js");
42183
42184
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
42184
42185
  applyLossy: true
42185
42186
  });
@@ -43119,7 +43120,7 @@ async function handleEvidenceCommand(directory, args) {
43119
43120
  return formatTaskEvidenceMarkdown(evidenceData);
43120
43121
  }
43121
43122
  async function handleEvidenceSummaryCommand(directory) {
43122
- const { buildEvidenceSummary } = await import("./evidence-summary-service-9dyt2kzh.js");
43123
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-1pcfsqhv.js");
43123
43124
  const artifact = await buildEvidenceSummary(directory);
43124
43125
  if (!artifact) {
43125
43126
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -67620,7 +67621,7 @@ var DISPATCH_FRAMEWORK_MAP = {
67620
67621
  };
67621
67622
  async function detectTestFrameworkViaDispatch(cwd) {
67622
67623
  try {
67623
- const { pickBackend } = await import("./dispatch-7r46tfr9.js");
67624
+ const { pickBackend } = await import("./dispatch-q4v8x2pk.js");
67624
67625
  const backend = await pickBackend(cwd);
67625
67626
  if (!backend?.selectTestFramework)
67626
67627
  return "none";
@@ -67636,7 +67637,7 @@ async function buildTestCommandViaDispatch(framework, scope, files, coverage, ba
67636
67637
  if (framework === "none")
67637
67638
  return null;
67638
67639
  try {
67639
- const { pickBackend } = await import("./dispatch-7r46tfr9.js");
67640
+ const { pickBackend } = await import("./dispatch-q4v8x2pk.js");
67640
67641
  const backend = await pickBackend(baseDir);
67641
67642
  if (backend?.buildTestCommand) {
67642
67643
  const cmd = backend.buildTestCommand(framework, files, baseDir, {
@@ -67658,7 +67659,7 @@ async function parseTestOutputViaDispatch(framework, output, baseDir) {
67658
67659
  if (framework === "none")
67659
67660
  return null;
67660
67661
  try {
67661
- const { pickBackend } = await import("./dispatch-7r46tfr9.js");
67662
+ const { pickBackend } = await import("./dispatch-q4v8x2pk.js");
67662
67663
  const backend = await pickBackend(baseDir);
67663
67664
  if (!backend?.parseTestOutput)
67664
67665
  return null;
@@ -68066,14 +68067,14 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
68066
68067
  return args;
68067
68068
  }
68068
68069
  case "vitest": {
68069
- const args = [
68070
- "npx",
68071
- "vitest",
68070
+ const args = _internals80.resolveLocalNodeTool("vitest", [
68072
68071
  "run",
68073
68072
  "--reporter=json",
68074
68073
  "--outputFile",
68075
68074
  VITEST_JSON_OUTPUT_RELATIVE_PATH
68076
- ];
68075
+ ], baseDir, process.platform, _internals80.isCommandAvailable);
68076
+ if (!args)
68077
+ return null;
68077
68078
  if (coverage)
68078
68079
  args.push("--coverage");
68079
68080
  if (bail)
@@ -68084,7 +68085,9 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
68084
68085
  return args;
68085
68086
  }
68086
68087
  case "jest": {
68087
- const args = ["npx", "jest", "--json"];
68088
+ const args = _internals80.resolveLocalNodeTool("jest", ["--json"], baseDir, process.platform, _internals80.isCommandAvailable);
68089
+ if (!args)
68090
+ return null;
68088
68091
  if (coverage)
68089
68092
  args.push("--coverage");
68090
68093
  if (bail)
@@ -68095,7 +68098,9 @@ function buildTestCommand(framework, scope, files, coverage, baseDir, bail, targ
68095
68098
  return args;
68096
68099
  }
68097
68100
  case "mocha": {
68098
- const args = ["npx", "mocha"];
68101
+ const args = _internals80.resolveLocalNodeTool("mocha", [], baseDir, process.platform, _internals80.isCommandAvailable);
68102
+ if (!args)
68103
+ return null;
68099
68104
  if (bail)
68100
68105
  args.push("--bail");
68101
68106
  if (scope !== "all" && files.length > 0) {
@@ -69443,6 +69448,7 @@ var _internals80 = {
69443
69448
  existsSync: fs37.existsSync,
69444
69449
  readdirSync: fs37.readdirSync,
69445
69450
  readFileSync: fs37.readFileSync,
69451
+ resolveLocalNodeTool,
69446
69452
  bunSpawn,
69447
69453
  buildNativeTargetCommand,
69448
69454
  formatNativeHistoryTestFile,
@@ -80598,7 +80604,7 @@ function buildDetailedHelp(commandName, entry) {
80598
80604
  async function handleHelpCommand(ctx) {
80599
80605
  const targetCommand = ctx.args.join(" ");
80600
80606
  if (!targetCommand) {
80601
- const { buildHelpText } = await import("./index-e1ygmd4q.js");
80607
+ const { buildHelpText } = await import("./index-vsy942dt.js");
80602
80608
  return buildHelpText();
80603
80609
  }
80604
80610
  const tokens = targetCommand.split(/\s+/);
@@ -80607,7 +80613,7 @@ async function handleHelpCommand(ctx) {
80607
80613
  return _internals101.buildDetailedHelp(resolved.key, resolved.entry);
80608
80614
  }
80609
80615
  const similar = _internals101.findSimilarCommands(targetCommand);
80610
- const { buildHelpText: fullHelp } = await import("./index-e1ygmd4q.js");
80616
+ const { buildHelpText: fullHelp } = await import("./index-vsy942dt.js");
80611
80617
  if (similar.length > 0) {
80612
80618
  return `Command '/swarm ${targetCommand}' not found.
80613
80619
 
@@ -80938,7 +80944,7 @@ var COMMAND_REGISTRY = {
80938
80944
  },
80939
80945
  "guardrail explain": {
80940
80946
  handler: async (ctx) => {
80941
- const { handleGuardrailExplain } = await import("./guardrail-explain-4a2xdtew.js");
80947
+ const { handleGuardrailExplain } = await import("./guardrail-explain-k99eje1y.js");
80942
80948
  return handleGuardrailExplain(ctx.directory, ctx.args);
80943
80949
  },
80944
80950
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -80948,7 +80954,7 @@ var COMMAND_REGISTRY = {
80948
80954
  },
80949
80955
  "guardrail reset": {
80950
80956
  handler: async (ctx) => {
80951
- const { handleGuardrailReset } = await import("./guardrail-reset-xn7k3hn8.js");
80957
+ const { handleGuardrailReset } = await import("./guardrail-reset-3385eqmq.js");
80952
80958
  return handleGuardrailReset(ctx.args, ctx.sessionID);
80953
80959
  },
80954
80960
  description: "Reset one exact active invocation/action circuit after repair",
@@ -80957,7 +80963,7 @@ var COMMAND_REGISTRY = {
80957
80963
  },
80958
80964
  "guardrail-explain": {
80959
80965
  handler: async (ctx) => {
80960
- const { handleGuardrailExplain } = await import("./guardrail-explain-4a2xdtew.js");
80966
+ const { handleGuardrailExplain } = await import("./guardrail-explain-k99eje1y.js");
80961
80967
  return handleGuardrailExplain(ctx.directory, ctx.args);
80962
80968
  },
80963
80969
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -80967,7 +80973,7 @@ var COMMAND_REGISTRY = {
80967
80973
  },
80968
80974
  "guardrail-reset": {
80969
80975
  handler: async (ctx) => {
80970
- const { handleGuardrailReset } = await import("./guardrail-reset-xn7k3hn8.js");
80976
+ const { handleGuardrailReset } = await import("./guardrail-reset-3385eqmq.js");
80971
80977
  return handleGuardrailReset(ctx.args, ctx.sessionID);
80972
80978
  },
80973
80979
  description: "Reset one exact active invocation/action circuit after repair",
@@ -80977,7 +80983,7 @@ var COMMAND_REGISTRY = {
80977
80983
  },
80978
80984
  "guardrail-log": {
80979
80985
  handler: async (ctx) => {
80980
- const { handleGuardrailLog } = await import("./guardrail-log-27nkntrx.js");
80986
+ const { handleGuardrailLog } = await import("./guardrail-log-md5gcpk7.js");
80981
80987
  return handleGuardrailLog(ctx.directory, ctx.args);
80982
80988
  },
80983
80989
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -82303,6 +82309,7 @@ diff \u2192 syntax_check \u2192 placeholder_scan \u2192 imports \u2192 lint fix
82303
82309
  Stage A tools return pass/fail. Fix failures by returning to coder.
82304
82310
  Stage A passing means: code compiles, parses, no secrets, no placeholders, no lint errors.
82305
82311
  Stage A passing does NOT mean: code is correct, secure, tested, or reviewed.
82312
+ placeholder_scan DIFF SCOPING: pass added_lines (workspace-relative file path \u2192 task-added line numbers from a git diff -U0 HEAD on the task files; the coder's edits are uncommitted, so a commit-range diff returns zero added lines here) so only task-added lines drive the verdict; omit a file from the map when its added lines are unknown or empty \u2014 the tool scans it unfiltered (fail-closed) \u2014 and cross-check that file's findings against the diff yourself before bouncing the coder. Never pass an empty line array or guess line numbers: either silently suppresses findings.
82306
82313
  PREFERRED AGGREGATOR: pre_check_batch runs lint:check + secretscan + sast_scan + quality_budget in PARALLEL (up to 4 concurrent). Prefer calling pre_check_batch over running those four tools individually \u2014 it produces the same verdicts faster and is the recommended approach for post-implementation verification. NOTE: pre_check_batch does NOT expose capture_baseline, changed_files scoping, or per-tool severity_threshold parameters. When you need SAST baseline capture or file-scoped scanning, call sast_scan or secretscan directly.
82307
82314
 
82308
82315
  VERIFICATION PROTOCOL: After the coder reports DONE, and before running Stage B gates:
@@ -87418,7 +87425,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
87418
87425
  return extracted === expectedSessionId;
87419
87426
  }
87420
87427
  async function inspectStandardWorktreeCollisionOwnership(identity) {
87421
- const collisionOwnership = await import("./worktree-collision-ownership-6b3kshcv.js");
87428
+ const collisionOwnership = await import("./worktree-collision-ownership-b9cp9zvw.js");
87422
87429
  return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
87423
87430
  }
87424
87431
  async function runRecoveryGit(directory, args, timeoutMs = 15000) {
@@ -87827,7 +87834,7 @@ async function precreateStandardWorktreeSession(args) {
87827
87834
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
87828
87835
  if (laneProfile) {
87829
87836
  try {
87830
- const { writeLaneProfileToDiskReal } = await import("./core-4j1hbhey.js");
87837
+ const { writeLaneProfileToDiskReal } = await import("./core-bhmqtxev.js");
87831
87838
  await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
87832
87839
  } catch {}
87833
87840
  }
@@ -88752,7 +88759,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
88752
88759
  }
88753
88760
  clearWorktreeMergeStatus(statusKey);
88754
88761
  try {
88755
- const { removeLaneProfileFromDiskReal } = await import("./core-4j1hbhey.js");
88762
+ const { removeLaneProfileFromDiskReal } = await import("./core-bhmqtxev.js");
88756
88763
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
88757
88764
  } catch {}
88758
88765
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-zpzvpybn.js";
4
+ } from "./index-vv760pbg.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-gjx53y3c.js";
7
+ } from "./index-yd6y4qr7.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -94,53 +94,53 @@ import {
94
94
  handleWriteRetroCommand,
95
95
  normalizeSwarmCommandInput,
96
96
  resolveCommand
97
- } from "./index-zdv914xa.js";
97
+ } from "./index-s7w6ntw6.js";
98
98
  import"./index-j3ss86kf.js";
99
- import"./index-m84z3aa8.js";
100
- import"./index-f72612zc.js";
101
- import"./index-m1cw9fsh.js";
99
+ import"./index-2123hwbj.js";
100
+ import"./index-xtwny1ae.js";
101
+ import"./index-zbnf26br.js";
102
102
  import"./index-nk498mx6.js";
103
103
  import"./index-txdagbh7.js";
104
104
  import"./index-134d35c1.js";
105
- import"./index-nj6rmyeh.js";
106
- import"./index-v8dsmee1.js";
107
- import"./index-ny0g8fdg.js";
108
- import"./index-7v0ex0jt.js";
105
+ import"./index-3146wmgv.js";
106
+ import"./index-re338hf1.js";
107
+ import"./index-5xfx5sbw.js";
108
+ import"./index-am5bz6mf.js";
109
109
  import"./index-70ha9e09.js";
110
110
  import"./index-c8s9a3zh.js";
111
111
  import"./index-9ss2m4rs.js";
112
112
  import"./index-497a3hhj.js";
113
113
  import"./index-zsrtt42s.js";
114
- import"./index-dq93ar40.js";
114
+ import"./index-4d8cq6e1.js";
115
115
  import"./index-3f7hqtgg.js";
116
116
  import"./index-awjx0wgk.js";
117
- import"./index-jszabr0r.js";
117
+ import"./index-yp81ebrx.js";
118
118
  import"./index-znf683sm.js";
119
119
  import"./index-rtry5xyf.js";
120
- import"./index-z0bxbb9g.js";
121
- import"./index-qc53dfzh.js";
122
- import"./index-61c3d769.js";
120
+ import"./index-4dcz9fpn.js";
121
+ import"./index-kqzba6ex.js";
122
+ import"./index-k50kxd3w.js";
123
123
  import"./index-ddszzne4.js";
124
- import"./index-drqvph47.js";
125
- import"./index-pqjcyj0p.js";
124
+ import"./index-xsd7y4hp.js";
125
+ import"./index-5th50g17.js";
126
126
  import"./index-7h2armwf.js";
127
127
  import"./index-556ja8an.js";
128
128
  import"./index-4fwbbad3.js";
129
129
  import"./index-b43rt5ph.js";
130
130
  import"./index-q7sjgr1y.js";
131
- import"./index-nnzdayvk.js";
132
- import"./index-98jmggma.js";
133
- import"./index-pkz91fwm.js";
134
- import"./index-8c9qzpy7.js";
131
+ import"./index-war2dt6a.js";
132
+ import"./index-3a35tt6a.js";
133
+ import"./index-xkmzsfg5.js";
134
+ import"./index-q8hm27yj.js";
135
135
  import"./index-n832052r.js";
136
136
  import"./index-dtn0pne5.js";
137
137
  import"./index-z6xqpmqg.js";
138
138
  import"./index-r3mvsbtq.js";
139
- import"./index-bqxffayb.js";
139
+ import"./index-717pmdce.js";
140
140
  import {
141
141
  init_schema,
142
142
  stripKnownSwarmPrefix
143
- } from "./index-7npz9n4s.js";
143
+ } from "./index-6scakreq.js";
144
144
  import"./index-9e6fdz2h.js";
145
145
  import"./index-4rhhvd1a.js";
146
146
  import"./index-mmr96pwr.js";
@@ -14,14 +14,14 @@ import {
14
14
  detectWindowsWrites,
15
15
  getSharedClassifierGuardrailBlock,
16
16
  resolveWriteTargets
17
- } from "./index-zdv914xa.js";
17
+ } from "./index-s7w6ntw6.js";
18
18
  import {
19
19
  checkFileAuthority,
20
20
  classifyFile,
21
21
  isInDeclaredScope,
22
22
  redactPath,
23
23
  redactShellCommand
24
- } from "./index-m84z3aa8.js";
24
+ } from "./index-2123hwbj.js";
25
25
 
26
26
  // src/services/guardrail-explain-service.ts
27
27
  import path from "path";
@@ -713,7 +713,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
713
713
  const {
714
714
  readAuthoritativeKnowledgeCounterRollups,
715
715
  effectiveRetrievalOutcomes
716
- } = await import("./knowledge-events-5y34w84b.js");
716
+ } = await import("./knowledge-events-ej8yz3yq.js");
717
717
  const rollups = await readAuthoritativeKnowledgeCounterRollups(directory);
718
718
  const flagIds = new Set;
719
719
  for (const e of atFloor) {
@@ -780,11 +780,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
780
780
  });
781
781
  }
782
782
  if (action === "quarantine" && toQuarantine.length > 0) {
783
- const { quarantineEntry } = await import("./knowledge-validator-fsdx14tk.js");
784
- const { KnowledgeConfigSchema } = await import("./schema-98tdb9h0.js");
783
+ const { quarantineEntry } = await import("./knowledge-validator-26w2mvqv.js");
784
+ const { KnowledgeConfigSchema } = await import("./schema-z0ygrqgy.js");
785
785
  let config;
786
786
  try {
787
- const { loadPluginConfigWithMeta } = await import("./index-wccdm7jv.js");
787
+ const { loadPluginConfigWithMeta } = await import("./index-k0qy284k.js");
788
788
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
789
789
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
790
790
  } catch {
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  init_loader,
4
4
  loadPluginConfigWithMeta
5
- } from "./index-bqxffayb.js";
5
+ } from "./index-717pmdce.js";
6
6
  import {
7
7
  init_schema
8
- } from "./index-7npz9n4s.js";
8
+ } from "./index-6scakreq.js";
9
9
  import {
10
10
  DEFAULT_WORKTREE_ISOLATION_CONFIG,
11
11
  init_constants
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  computePlanStructureHash,
4
4
  derivePlanId
5
- } from "./index-pqjcyj0p.js";
5
+ } from "./index-5th50g17.js";
6
6
  import {
7
7
  appendCoreEventSync
8
8
  } from "./index-7h2armwf.js";
@@ -11,7 +11,7 @@ import {
11
11
  } from "./index-556ja8an.js";
12
12
  import {
13
13
  PlanSchema
14
- } from "./index-bqxffayb.js";
14
+ } from "./index-717pmdce.js";
15
15
  import {
16
16
  assertProjectRoot
17
17
  } from "./index-b5adxpy6.js";
@@ -6,7 +6,7 @@ import {
6
6
  PluginConfigSchema,
7
7
  init_schema,
8
8
  stripKnownSwarmPrefix
9
- } from "./index-7npz9n4s.js";
9
+ } from "./index-6scakreq.js";
10
10
  import {
11
11
  ALL_AGENT_NAMES,
12
12
  init_constants
@@ -4,7 +4,7 @@ import {
4
4
  readShellAuditTail,
5
5
  redactPath,
6
6
  redactShellCommand
7
- } from "./index-m84z3aa8.js";
7
+ } from "./index-2123hwbj.js";
8
8
 
9
9
  // src/services/guardrail-log-service.ts
10
10
  var BLOCK_TYPES = new Set([
@@ -9,7 +9,7 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-nnzdayvk.js";
12
+ } from "./index-war2dt6a.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
15
  } from "./index-prv20xq6.js";