opencode-swarm 7.164.4 → 7.164.6

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 (91) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +12 -12
  2. package/dist/background/pending-delegations.d.ts +9 -2
  3. package/dist/background/pr-review-contract.d.ts +9 -0
  4. package/dist/cli/{coder-settlement-zzy2egsx.js → coder-settlement-6qgvzx40.js} +11 -11
  5. package/dist/cli/{config-doctor-62xd5far.js → config-doctor-d1cbh67h.js} +2 -2
  6. package/dist/cli/{core-7kdmc7h9.js → core-g0cvvj3b.js} +1 -1
  7. package/dist/cli/{curation-policy-913dnxqq.js → curation-policy-7f8x9yg6.js} +6 -6
  8. package/dist/cli/{curator-drift-3s3q4wsy.js → curator-drift-0r0scc8r.js} +4 -4
  9. package/dist/cli/curator-llm-factory-dw7md4nr.js +66 -0
  10. package/dist/cli/{curator-4s6ekk85.js → curator-q3qn89wn.js} +34 -34
  11. package/dist/cli/{evidence-summary-service-gw936xgz.js → evidence-summary-service-3meyb8rc.js} +15 -15
  12. package/dist/cli/{gate-evidence-4we18rhr.js → gate-evidence-mhc0w7vp.js} +7 -7
  13. package/dist/cli/guardrail-explain-6cbszhw1.js +67 -0
  14. package/dist/cli/{guardrail-log-9d4f09qt.js → guardrail-log-0nd1eqvz.js} +7 -7
  15. package/dist/cli/{guardrail-reset-1hpd6bkj.js → guardrail-reset-mzeyd6jh.js} +34 -34
  16. package/dist/cli/{hive-promoter-nr8dsxhe.js → hive-promoter-w7g879cm.js} +34 -34
  17. package/dist/cli/{index-pztdbtgw.js → index-12xzj0hm.js} +3 -3
  18. package/dist/cli/{index-k1m9214q.js → index-1dz8hv7p.js} +3 -3
  19. package/dist/cli/{index-rz87mx1c.js → index-2c3np82d.js} +1 -1
  20. package/dist/cli/{index-08e6x59x.js → index-4k16cz8r.js} +7 -7
  21. package/dist/cli/{index-4tgtbptw.js → index-59hvr3f4.js} +4 -4
  22. package/dist/cli/{index-wzmchqry.js → index-5p1tzpwh.js} +31 -52
  23. package/dist/cli/{index-x63jqvj3.js → index-6f9yvd67.js} +2 -2
  24. package/dist/cli/{index-x9ayhkkx.js → index-7v3bb0h3.js} +1 -1
  25. package/dist/cli/{index-qkwx4rrc.js → index-935ww10s.js} +185 -102
  26. package/dist/cli/{index-jba9jgse.js → index-9qvmsyab.js} +2 -2
  27. package/dist/cli/{index-nwpg81ke.js → index-ay9cr8tr.js} +1 -1
  28. package/dist/cli/{index-xj4kbtdw.js → index-b0m3efpf.js} +2 -2
  29. package/dist/cli/{index-tfa2p4y4.js → index-cyhw0der.js} +1 -1
  30. package/dist/cli/{index-vx28633q.js → index-ew99d4y6.js} +75 -23
  31. package/dist/cli/{index-gt6p21cs.js → index-fxxja498.js} +1 -1
  32. package/dist/cli/{index-0m94jsss.js → index-g5714mpv.js} +5 -5
  33. package/dist/cli/{index-ne38vr77.js → index-g94qqwnz.js} +2 -2
  34. package/dist/cli/{index-7zbk1e24.js → index-gwg7a00b.js} +9 -9
  35. package/dist/cli/{index-v7a8e7rv.js → index-hdapetg1.js} +2 -2
  36. package/dist/cli/{index-q9yz8da4.js → index-j3hsjynw.js} +5 -5
  37. package/dist/cli/{index-yx3xqb0w.js → index-j645xpsm.js} +3 -3
  38. package/dist/cli/{index-t2tqbq62.js → index-jzvrvdmr.js} +4 -4
  39. package/dist/cli/{index-k8vy89vm.js → index-kvb4dwgf.js} +1 -1
  40. package/dist/cli/{index-stj85yx1.js → index-p56xc59p.js} +2 -2
  41. package/dist/cli/{index-z408nj03.js → index-pvp5tnn2.js} +2 -2
  42. package/dist/cli/{index-cf54ftj1.js → index-qdbgc16x.js} +40 -7
  43. package/dist/cli/{index-eh2k07pp.js → index-rysxqae0.js} +7 -7
  44. package/dist/cli/{index-8fjx6k2s.js → index-t1nkr7cz.js} +1 -1
  45. package/dist/cli/{index-qfrrcdhj.js → index-tegp2mny.js} +1 -1
  46. package/dist/cli/{index-a0jhxx5q.js → index-ty3vtqe2.js} +12 -4
  47. package/dist/cli/{index-prammvxb.js → index-x6zyc38w.js} +1 -1
  48. package/dist/cli/{index-vzs3st30.js → index-x76mprg2.js} +10 -10
  49. package/dist/cli/{index-et9y4ga8.js → index-y4z0rhsa.js} +36 -36
  50. package/dist/cli/{index-1f4nandk.js → index-yh8wxegw.js} +1 -1
  51. package/dist/cli/{index-5k226hxp.js → index-ze5zyv28.js} +2 -2
  52. package/dist/cli/{index-tme2kjvq.js → index-zfwd65c2.js} +5 -5
  53. package/dist/cli/{index-0zbze3n6.js → index-zjg5ajf5.js} +1 -1
  54. package/dist/cli/{index-xjw7j7et.js → index-zypacgjc.js} +5 -5
  55. package/dist/cli/index.js +34 -34
  56. package/dist/cli/{knowledge-escalator-hp1ctjpe.js → knowledge-escalator-aca0nhqg.js} +13 -13
  57. package/dist/cli/{knowledge-events-0qrenmng.js → knowledge-events-n5t313ht.js} +11 -11
  58. package/dist/cli/{knowledge-link-f5g5d171.js → knowledge-link-8ea4ksda.js} +5 -5
  59. package/dist/cli/{knowledge-store-8er824g9.js → knowledge-store-j97ejf6a.js} +6 -6
  60. package/dist/cli/{knowledge-validator-0jd3htcj.js → knowledge-validator-01evhydg.js} +8 -8
  61. package/dist/cli/{pending-delegations-d1n5faxg.js → pending-delegations-w73abdk3.js} +6 -6
  62. package/dist/cli/{pr-subscriptions-s2b2yvbd.js → pr-subscriptions-05dzvavk.js} +6 -6
  63. package/dist/cli/{pr-workflow-gate-51s842yy.js → pr-workflow-gate-t0tnkx5f.js} +36 -34
  64. package/dist/cli/{runner-nkh65pcm.js → runner-fh7t0mn9.js} +6 -6
  65. package/dist/cli/{scan-cursor-gt55f3d6.js → scan-cursor-63zx2qd8.js} +7 -7
  66. package/dist/cli/{schema-rpdz901j.js → schema-t1scx08g.js} +5 -1
  67. package/dist/cli/{scope-persistence-js1ywq04.js → scope-persistence-1a5qmchf.js} +9 -9
  68. package/dist/cli/{skill-generator-xsxes2w0.js → skill-generator-7werbwgv.js} +15 -15
  69. package/dist/cli/{telemetry-9tfts5q2.js → telemetry-j14cj552.js} +1 -1
  70. package/dist/cli/{worktree-collision-ownership-54ca6mb8.js → worktree-collision-ownership-wzdzky33.js} +7 -7
  71. package/dist/cli/{worktree-isolation-haesnft8.js → worktree-isolation-m02ay3kg.js} +34 -34
  72. package/dist/config/index.d.ts +3 -3
  73. package/dist/config/loader.d.ts +34 -1
  74. package/dist/config/schema.d.ts +61 -7
  75. package/dist/hooks/delegation-gate.d.ts +3 -1
  76. package/dist/hooks/pr-workflow-gate.d.ts +10 -2
  77. package/dist/index.js +80 -77
  78. package/dist/pr-review/authorization.d.ts +13 -3
  79. package/dist/tools/authorize-pr-review-reentry.d.ts +5 -4
  80. package/dist/tools/build-check.d.ts +8 -0
  81. package/dist/tools/dispatch-lanes.d.ts +1 -0
  82. package/dist/tools/placeholder-scan.d.ts +10 -1
  83. package/dist/tools/pr-workflow-status.d.ts +2 -0
  84. package/dist/tools/pre-check-batch.d.ts +20 -8
  85. package/dist/tools/quality-budget.d.ts +2 -0
  86. package/dist/tools/sast-scan.d.ts +10 -2
  87. package/dist/tools/sbom-generate.d.ts +14 -0
  88. package/dist/tools/syntax-check.d.ts +11 -3
  89. package/package.json +1 -1
  90. package/dist/cli/curator-llm-factory-q3t3r632.js +0 -66
  91. package/dist/cli/guardrail-explain-jjbnrcqn.js +0 -67
@@ -6,7 +6,7 @@ import {
6
6
  resolveExecutableFromPath,
7
7
  runEvaluation,
8
8
  runExternalTool
9
- } from "./index-x9ayhkkx.js";
9
+ } from "./index-7v3bb0h3.js";
10
10
  import {
11
11
  finalizeShellAuditForClose,
12
12
  isPolicyProtectedPath,
@@ -15,13 +15,13 @@ import {
15
15
  protectedRoots,
16
16
  redactDecisionLineForArchive,
17
17
  stableCanonicalStringify
18
- } from "./index-pztdbtgw.js";
18
+ } from "./index-12xzj0hm.js";
19
19
  import {
20
20
  detectStraySwarmDirs,
21
21
  readDoctorArtifact,
22
22
  removeStraySwarmDir,
23
23
  runConfigDoctor
24
- } from "./index-k8vy89vm.js";
24
+ } from "./index-kvb4dwgf.js";
25
25
  import {
26
26
  MAX_TRANSIENT_RETRIES,
27
27
  archiveEvidence,
@@ -65,7 +65,7 @@ import {
65
65
  validateProjectRoot,
66
66
  validateSymlinkBoundary,
67
67
  validateTargetWithinRoot
68
- } from "./index-vzs3st30.js";
68
+ } from "./index-x76mprg2.js";
69
69
  import {
70
70
  EvaluationTaskV1Schema,
71
71
  GateAuditManifestV1Schema,
@@ -82,7 +82,7 @@ import {
82
82
  saveGateAuditResult,
83
83
  savePromotionDecision,
84
84
  saveTaskSetSnapshot
85
- } from "./index-jba9jgse.js";
85
+ } from "./index-9qvmsyab.js";
86
86
  import {
87
87
  canonicalHash,
88
88
  canonicalJson,
@@ -124,15 +124,15 @@ import {
124
124
  retireSkill,
125
125
  selectCandidateEntries,
126
126
  syncBundledProjectSkillsIfMissingAsync
127
- } from "./index-4tgtbptw.js";
127
+ } from "./index-59hvr3f4.js";
128
128
  import {
129
129
  readRecentEscalations
130
- } from "./index-xjw7j7et.js";
130
+ } from "./index-zypacgjc.js";
131
131
  import {
132
132
  alreadyCuratedThisGeneration,
133
133
  claimNextScanBatch,
134
134
  resolveCohortId
135
- } from "./index-x63jqvj3.js";
135
+ } from "./index-6f9yvd67.js";
136
136
  import {
137
137
  CURATOR_INIT_PROMPT,
138
138
  CURATOR_PHASE_PROMPT,
@@ -143,7 +143,7 @@ import {
143
143
  getGlobalEventBus,
144
144
  getGroupCommitWriter,
145
145
  importLegacyJsonl
146
- } from "./index-1f4nandk.js";
146
+ } from "./index-yh8wxegw.js";
147
147
  import {
148
148
  DURABILITY_CLASSES,
149
149
  applySynchronousForClass,
@@ -159,7 +159,7 @@ import {
159
159
  resolveSpeckitProjection,
160
160
  validateSpeckit,
161
161
  writeProjectedSpecSync
162
- } from "./index-0zbze3n6.js";
162
+ } from "./index-zjg5ajf5.js";
163
163
  import {
164
164
  loadDatabaseCtor
165
165
  } from "./index-zaab1wz9.js";
@@ -169,7 +169,7 @@ import {
169
169
  listActive,
170
170
  subscribe,
171
171
  unsubscribe
172
- } from "./index-tme2kjvq.js";
172
+ } from "./index-zfwd65c2.js";
173
173
  import {
174
174
  clearWorktreeMergeStatus,
175
175
  getAllWorktreeMergeFailures,
@@ -181,7 +181,7 @@ import {
181
181
  listCoderSettlementWalStates,
182
182
  recoverCoderSettlement,
183
183
  recoverStaleCoderSettlements
184
- } from "./index-08e6x59x.js";
184
+ } from "./index-4k16cz8r.js";
185
185
  import {
186
186
  parsePorcelainV2Snapshot,
187
187
  resolveCommitCountSince,
@@ -214,7 +214,7 @@ import {
214
214
  WORKTREE_LIFECYCLE_LOCK_FILE,
215
215
  recordWorktreeProvisioningOwner,
216
216
  removeWorktreeProvisioningOwner
217
- } from "./index-xj4kbtdw.js";
217
+ } from "./index-b0m3efpf.js";
218
218
  import {
219
219
  appendUnactionable,
220
220
  quarantineEntry,
@@ -225,11 +225,11 @@ import {
225
225
  validateActionableFields,
226
226
  validateLesson,
227
227
  validateSkillPath
228
- } from "./index-t2tqbq62.js";
228
+ } from "./index-jzvrvdmr.js";
229
229
  import {
230
230
  authorizeCuration,
231
231
  buildConfigFingerprintInput
232
- } from "./index-prammvxb.js";
232
+ } from "./index-x6zyc38w.js";
233
233
  import {
234
234
  cohortConfigFingerprint
235
235
  } from "./index-rtry5xyf.js";
@@ -260,12 +260,12 @@ import {
260
260
  transitionTaskWorkflowEvidence,
261
261
  withTaskEvidenceTransaction,
262
262
  writeWorkflowWalFile
263
- } from "./index-0m94jsss.js";
263
+ } from "./index-g5714mpv.js";
264
264
  import {
265
265
  makeWorktreeBranchName,
266
266
  provisionWorktree,
267
267
  removeWorktree
268
- } from "./index-8fjx6k2s.js";
268
+ } from "./index-t1nkr7cz.js";
269
269
  import {
270
270
  DEFAULT_STALE_DELEGATION_TIMEOUT_MS,
271
271
  DELEGATION_COMPACTION_HIGH_WATER_BYTES,
@@ -284,6 +284,7 @@ import {
284
284
  PrReviewReviewerVerdictFieldsSchema,
285
285
  PrReviewRunIdSchema,
286
286
  collectDelegationLedgerHealth,
287
+ decodePrReviewWorkflowBinding,
287
288
  findByBatchId,
288
289
  generatePrReviewRunId,
289
290
  maintainBackgroundDelegations,
@@ -298,7 +299,7 @@ import {
298
299
  scanBackgroundCoderReservationsForAdmission,
299
300
  scanDelegationsForRecovery,
300
301
  sweepStaleDelegations
301
- } from "./index-cf54ftj1.js";
302
+ } from "./index-qdbgc16x.js";
302
303
  import {
303
304
  compositeSessionKey,
304
305
  sessionKeySuffix
@@ -309,7 +310,7 @@ import {
309
310
  clearAllScopes,
310
311
  clearScopeBindingFromDisk,
311
312
  clearScopeBindings
312
- } from "./index-q9yz8da4.js";
313
+ } from "./index-j3hsjynw.js";
313
314
  import {
314
315
  appendLedgerEvent,
315
316
  computePlanLedgerHash,
@@ -324,7 +325,7 @@ import {
324
325
  readPlanEpochIdentity,
325
326
  replayFromLedgerWithStatus,
326
327
  takeSnapshotEvent
327
- } from "./index-yx3xqb0w.js";
328
+ } from "./index-j645xpsm.js";
328
329
  import {
329
330
  CORE_EVENT_LOCKED,
330
331
  appendCoreEventSync,
@@ -334,7 +335,7 @@ import {
334
335
  hasSpecDriftAuditEvent,
335
336
  hasTaskRepairAuditEvent,
336
337
  readCoreEvents
337
- } from "./index-z408nj03.js";
338
+ } from "./index-pvp5tnn2.js";
338
339
  import {
339
340
  sanitizeDiagnosticText
340
341
  } from "./index-556ja8an.js";
@@ -383,7 +384,7 @@ import {
383
384
  transactFile,
384
385
  transactKnowledge,
385
386
  wordBigrams
386
- } from "./index-eh2k07pp.js";
387
+ } from "./index-rysxqae0.js";
387
388
  import {
388
389
  MAX_EVENT_LOG_ENTRIES,
389
390
  _internals as _internals2,
@@ -399,10 +400,10 @@ import {
399
400
  recordKnowledgeEvent,
400
401
  recordPhaseCloseIntent,
401
402
  resolveKnowledgeEventsPath
402
- } from "./index-7zbk1e24.js";
403
+ } from "./index-gwg7a00b.js";
403
404
  import {
404
405
  resolveWorktreeIsolationConfig
405
- } from "./index-v7a8e7rv.js";
406
+ } from "./index-hdapetg1.js";
406
407
  import {
407
408
  RetrospectiveEvidenceSchema
408
409
  } from "./index-zg9d392c.js";
@@ -411,7 +412,7 @@ import {
411
412
  readSwarmFileAsync,
412
413
  safeHook,
413
414
  validateSwarmPath
414
- } from "./index-rz87mx1c.js";
415
+ } from "./index-2c3np82d.js";
415
416
  import {
416
417
  bunSpawn,
417
418
  bunSpawnSync,
@@ -423,9 +424,10 @@ import {
423
424
  PlanSchema,
424
425
  exports_loader,
425
426
  init_loader,
427
+ loadGateOverrides,
426
428
  loadPluginConfig,
427
429
  loadPluginConfigWithMeta
428
- } from "./index-vx28633q.js";
430
+ } from "./index-ew99d4y6.js";
429
431
  import {
430
432
  DEFAULT_HARNESS_EVOLUTION_CONFIG,
431
433
  DEFAULT_PR_REVIEW_RESILIENCE_CONFIG,
@@ -442,7 +444,7 @@ import {
442
444
  resolveAutoReviewConfig,
443
445
  resolveGeneratedAgentRole,
444
446
  stripKnownSwarmPrefix
445
- } from "./index-wzmchqry.js";
447
+ } from "./index-5p1tzpwh.js";
446
448
  import {
447
449
  init_git_executable,
448
450
  resolveGitExecutable,
@@ -458,7 +460,7 @@ import {
458
460
  observeCuratorCompliance,
459
461
  observeStoreHealth,
460
462
  readLearningHealth
461
- } from "./index-stj85yx1.js";
463
+ } from "./index-p56xc59p.js";
462
464
  import {
463
465
  AGENT_TOOL_MAP,
464
466
  ALL_AGENT_NAMES,
@@ -489,10 +491,10 @@ import {
489
491
  resolveLinkDir,
490
492
  sanitizeLinkId,
491
493
  writeLinkPointer
492
- } from "./index-qfrrcdhj.js";
494
+ } from "./index-tegp2mny.js";
493
495
  import {
494
496
  atomicWriteFile
495
- } from "./index-5k226hxp.js";
497
+ } from "./index-ze5zyv28.js";
496
498
  import {
497
499
  KNOWLEDGE_SCHEMA_VERSION,
498
500
  OUTCOME_BLOCK_THRESHOLD,
@@ -506,7 +508,7 @@ import {
506
508
  listActiveLocks,
507
509
  tryAcquireLock,
508
510
  withEvidenceLock
509
- } from "./index-gt6p21cs.js";
511
+ } from "./index-fxxja498.js";
510
512
  import {
511
513
  atomicWriteSwarmFile,
512
514
  atomicWriteSwarmFileSync,
@@ -514,12 +516,12 @@ import {
514
516
  matchTempGrammar,
515
517
  parseTargetBasename,
516
518
  resetSwarmArtifactCache
517
- } from "./index-tfa2p4y4.js";
519
+ } from "./index-cyhw0der.js";
518
520
  import {
519
521
  emit,
520
522
  getLastHeartbeat,
521
523
  telemetry
522
- } from "./index-k1m9214q.js";
524
+ } from "./index-1dz8hv7p.js";
523
525
  import {
524
526
  require_proper_lockfile
525
527
  } from "./index-7g4c7s5r.js";
@@ -10130,10 +10132,18 @@ async function writeAuthorizationFile(filePath, file) {
10130
10132
  }
10131
10133
  }
10132
10134
  function pruneAuthorizations(records, nowMs) {
10133
- const unexpired = records.filter((record) => Date.parse(record.expiresAt) > nowMs).sort((left, right) => right.createdAt.localeCompare(left.createdAt));
10134
- const unconsumed = unexpired.filter((record) => !record.consumedAt);
10135
- const consumed = unexpired.filter((record) => record.consumedAt).slice(0, Math.max(0, MAX_PERSISTED_AUTHORIZATIONS - unconsumed.length));
10136
- return [...unconsumed.slice(0, MAX_PERSISTED_AUTHORIZATIONS), ...consumed];
10135
+ const unexpired = records.filter((record) => Date.parse(record.expiresAt) > nowMs);
10136
+ const newest = (left, right) => {
10137
+ const leftAt = left.consumedAt ?? left.createdAt;
10138
+ const rightAt = right.consumedAt ?? right.createdAt;
10139
+ return leftAt === rightAt ? 0 : leftAt > rightAt ? -1 : 1;
10140
+ };
10141
+ const live = unexpired.filter((record) => !record.consumedAt).sort(newest);
10142
+ const consumed = unexpired.filter((record) => Boolean(record.consumedAt)).sort(newest);
10143
+ return [
10144
+ ...live,
10145
+ ...consumed.slice(0, Math.max(0, MAX_PERSISTED_AUTHORIZATIONS - live.length))
10146
+ ];
10137
10147
  }
10138
10148
  var lf = import_proper_lockfile3.default;
10139
10149
  async function withAuthorizationLock(filePath, write) {
@@ -10156,6 +10166,30 @@ async function withAuthorizationLock(filePath, write) {
10156
10166
  function authorizationMatchesBinding(record, binding) {
10157
10167
  return binding.prHeadSha === record.prHeadSha && binding.revisionDigest === record.revisionDigest && binding.generation === record.generation && binding.workflowInstanceId === record.workflowInstanceId && binding.runId === record.runId;
10158
10168
  }
10169
+ async function hasPrReviewReentryAuthorizationAgainstBinding(directory, sessionID, request, binding) {
10170
+ const trimmedSession = sessionID.trim();
10171
+ if (!trimmedSession)
10172
+ return false;
10173
+ const filePath = reentryAuthorizationFilePath(directory, trimmedSession);
10174
+ try {
10175
+ return await withAuthorizationLock(filePath, async () => {
10176
+ const existing = await readAuthorizationFile(filePath);
10177
+ if (!existing)
10178
+ return false;
10179
+ const nowMs = Date.now();
10180
+ const records = pruneAuthorizations(existing.authorizations, nowMs);
10181
+ if (records.length !== existing.authorizations.length) {
10182
+ await writeAuthorizationFile(filePath, {
10183
+ ...existing,
10184
+ authorizations: records
10185
+ });
10186
+ }
10187
+ return records.some((record) => !record.consumedAt && record.role === request.role && record.sessionId === trimmedSession && authorizationMatchesBinding(record, binding));
10188
+ });
10189
+ } catch {
10190
+ return false;
10191
+ }
10192
+ }
10159
10193
  async function reservePrReviewReentryAuthorizationAgainstBinding(directory, sessionID, request, binding) {
10160
10194
  const trimmedSession = sessionID.trim();
10161
10195
  if (!trimmedSession)
@@ -10207,6 +10241,7 @@ var _internals17 = {
10207
10241
  reentryAuthorizationFilePath,
10208
10242
  pruneAuthorizations,
10209
10243
  authorizationMatchesBinding,
10244
+ hasPrReviewReentryAuthorizationAgainstBinding,
10210
10245
  renameImpl: (from, to) => fsp3.rename(from, to),
10211
10246
  renameRetryDelaysMs: RENAME_RETRY_DELAYS_MS,
10212
10247
  renameWithRetryAsync,
@@ -10726,7 +10761,7 @@ function hasRevisionIndependentDiscoverySemantics(directory, qualified, state) {
10726
10761
  gitHead: state.prHeadSha ?? "",
10727
10762
  revisionDigest: artifact.revisionDigest,
10728
10763
  workflowInstanceId: state.workflowInstanceId,
10729
- workflowRevision: state.revision,
10764
+ workflowRevision: qualified.record.workflowGeneration,
10730
10765
  baseSha: state.prReviewBaseSha,
10731
10766
  reviewScope: state.prReviewBaseSha && state.prHeadSha ? `complete PR diff ${state.prReviewBaseSha}...${state.prHeadSha}` : undefined
10732
10767
  }
@@ -10817,7 +10852,7 @@ function latestStructuredReceiptUnresolvedForBaseDimension(directory, state, rev
10817
10852
  gitHead: state.prHeadSha ?? "",
10818
10853
  revisionDigest,
10819
10854
  workflowInstanceId: state.workflowInstanceId,
10820
- workflowRevision: state.revision,
10855
+ workflowRevision: record.workflowGeneration,
10821
10856
  baseSha: state.prReviewBaseSha,
10822
10857
  reviewScope
10823
10858
  }
@@ -12254,7 +12289,7 @@ async function submitPrReviewResult(directory, childSessionId, input) {
12254
12289
  reason: "invalid child session or result envelope"
12255
12290
  };
12256
12291
  }
12257
- const preliminary = readDelegations(directory).filter((record) => record.subagentSessionId === child && record.batchId === input.batchId && record.laneId === input.laneId);
12292
+ const preliminary = readDelegations(directory).filter((record2) => record2.subagentSessionId === child && record2.correlationId === child && (record2.mode === "swarm-pr-review:base" || record2.mode === "swarm-pr-review:micro"));
12258
12293
  if (preliminary.length !== 1) {
12259
12294
  return {
12260
12295
  status: "rejected",
@@ -12262,6 +12297,21 @@ async function submitPrReviewResult(directory, childSessionId, input) {
12262
12297
  };
12263
12298
  }
12264
12299
  const parentSessionId = preliminary[0].parentSessionId;
12300
+ const record = preliminary[0];
12301
+ if (!record.batchId || !record.laneId) {
12302
+ return {
12303
+ status: "rejected",
12304
+ reason: "delegation batch/lane provenance is missing"
12305
+ };
12306
+ }
12307
+ if (input.batchId !== undefined && input.batchId !== record.batchId || input.laneId !== undefined && input.laneId !== record.laneId) {
12308
+ return {
12309
+ status: "rejected",
12310
+ reason: "delegation batch/lane identity mismatch"
12311
+ };
12312
+ }
12313
+ const batchId = record.batchId;
12314
+ const laneId = record.laneId;
12265
12315
  return withSessionStateMutation(directory, parentSessionId, async () => {
12266
12316
  const state = await readPrWorkflowGateStateFromDisk3(directory, parentSessionId);
12267
12317
  if (!state || state.mode !== "PR_REVIEW" || !state.workflowInstanceId || !state.prHeadSha || !state.prReviewBaseSha) {
@@ -12274,7 +12324,17 @@ async function submitPrReviewResult(directory, childSessionId, input) {
12274
12324
  if (ctx.revisionDigest !== input.revisionDigest) {
12275
12325
  return { status: "rejected", reason: "stale dispatch revision digest" };
12276
12326
  }
12277
- const record = preliminary[0];
12327
+ const dispatchWorkflowInstanceId = decodePrReviewWorkflowBinding(record.jobId);
12328
+ const dispatchWorkflowRevision = record.workflowGeneration;
12329
+ if (!dispatchWorkflowInstanceId || dispatchWorkflowRevision === undefined) {
12330
+ return {
12331
+ status: "rejected",
12332
+ reason: "delegation workflow binding provenance is missing"
12333
+ };
12334
+ }
12335
+ if (dispatchWorkflowInstanceId !== state.workflowInstanceId) {
12336
+ return { status: "rejected", reason: "stale workflow instance binding" };
12337
+ }
12278
12338
  if (record.mode !== "swarm-pr-review:base" && record.mode !== "swarm-pr-review:micro" || path15.resolve(record.workspace?.directory ?? "") !== path15.resolve(directory)) {
12279
12339
  return {
12280
12340
  status: "rejected",
@@ -12289,8 +12349,8 @@ async function submitPrReviewResult(directory, childSessionId, input) {
12289
12349
  const existingReceiptDigest = record.result?.prReviewResultReceipt?.semanticEnvelopeDigest;
12290
12350
  const submission = reducePrReviewEvent(state, {
12291
12351
  type: "lane_structured_result_submitted",
12292
- batchId: input.batchId,
12293
- laneId: input.laneId,
12352
+ batchId,
12353
+ laneId,
12294
12354
  generation: state.revision,
12295
12355
  semanticEnvelopeDigest,
12296
12356
  outcome: parsedResult.data.outcome,
@@ -12305,18 +12365,18 @@ async function submitPrReviewResult(directory, childSessionId, input) {
12305
12365
  const published = await publishPrReviewResultReceipt(directory, {
12306
12366
  parentSessionId,
12307
12367
  childSessionId: child,
12308
- batchId: input.batchId,
12309
- laneId: input.laneId,
12368
+ batchId,
12369
+ laneId,
12310
12370
  expectedWorkflowInstanceId: state.workflowInstanceId,
12311
- expectedWorkflowRevision: state.revision,
12371
+ expectedWorkflowRevision: dispatchWorkflowRevision,
12312
12372
  expectedBaseSha: state.prReviewBaseSha,
12313
12373
  receipt: {
12314
12374
  schemaVersion: 1,
12315
12375
  mode: record.mode,
12316
- workflowInstanceId: state.workflowInstanceId,
12317
- workflowRevision: state.revision,
12318
- batchId: input.batchId,
12319
- laneId: input.laneId,
12376
+ workflowInstanceId: dispatchWorkflowInstanceId,
12377
+ workflowRevision: dispatchWorkflowRevision,
12378
+ batchId,
12379
+ laneId,
12320
12380
  workflowLane: record.workflowLane,
12321
12381
  ownedWorkflowLanes,
12322
12382
  baseSha: state.prReviewBaseSha,
@@ -16499,10 +16559,9 @@ async function enforcePrWorkflowToolBefore(directory, sessionID, toolName, args,
16499
16559
  if (state.mode === "PR_REVIEW") {
16500
16560
  let hasAuthorizedDirectReentry = false;
16501
16561
  if (isDirectAgentTask && requestedAgentFields.length === 1 && requestedAgentFields[0] === "subagent_type" && requestedRoles.length === 1 && (requestedRoles[0] === "reviewer" || requestedRoles[0] === "test_engineer") && callID) {
16502
- hasAuthorizedDirectReentry = Boolean(await reserveActivePrReviewReentryAuthorization(directory, sessionID, {
16503
- role: requestedRoles[0],
16504
- callID
16505
- }));
16562
+ hasAuthorizedDirectReentry = await hasActivePrReviewReentryAuthorization(directory, sessionID, {
16563
+ role: requestedRoles[0]
16564
+ });
16506
16565
  }
16507
16566
  const isAllowedReviewTool = isInternalWorkflowTool || hasAuthorizedDirectReentry || isNamedReadOnlyTool || isReadOnlyShell && (!isShellCheckout || isCanonicalReviewCheckout);
16508
16567
  if (!isAllowedReviewTool || Boolean(state.prHeadSha) && (isRemoteCheckoutTool || isShellCheckout)) {
@@ -16603,6 +16662,18 @@ async function prReviewReentryBindingFromState(directory, state) {
16603
16662
  } : {}
16604
16663
  };
16605
16664
  }
16665
+ async function hasActivePrReviewReentryAuthorization(directory, sessionID, request) {
16666
+ const normalizedSessionID = normalizeSessionID(sessionID);
16667
+ return withSessionStateMutation(directory, normalizedSessionID, async () => {
16668
+ const state = await readPrWorkflowGateStateFromDisk3(directory, normalizedSessionID);
16669
+ if (!state)
16670
+ return false;
16671
+ const binding = await prReviewReentryBindingFromState(directory, state);
16672
+ if (!binding)
16673
+ return false;
16674
+ return hasPrReviewReentryAuthorizationAgainstBinding(directory, normalizedSessionID, request, binding);
16675
+ });
16676
+ }
16606
16677
  async function reserveActivePrReviewReentryAuthorization(directory, sessionID, request) {
16607
16678
  const normalizedSessionID = normalizeSessionID(sessionID);
16608
16679
  return withSessionStateMutation(directory, normalizedSessionID, async () => {
@@ -18203,7 +18274,7 @@ function successfulObligationsFromExactBatch2(directory, state, batchId, expecte
18203
18274
  gitHead: state.prHeadSha ?? "",
18204
18275
  revisionDigest: expectedRevisionDigest ?? "",
18205
18276
  workflowInstanceId: state.workflowInstanceId,
18206
- workflowRevision: state.revision,
18277
+ workflowRevision: qualified.record.workflowGeneration,
18207
18278
  baseSha: state.prReviewBaseSha,
18208
18279
  reviewScope: state.mode === "PR_REVIEW" && state.prReviewBaseSha && state.prHeadSha ? `complete PR diff ${state.prReviewBaseSha}...${state.prHeadSha}` : undefined
18209
18280
  }
@@ -18260,8 +18331,10 @@ function validateExactStructuredReceiptCoverage2(input) {
18260
18331
  };
18261
18332
  }
18262
18333
  const receipt = parsedReceipt2.data;
18334
+ const recordWorkflowInstanceId = decodePrReviewWorkflowBinding(input.record.jobId);
18335
+ const recordWorkflowRevision = input.record.workflowGeneration;
18263
18336
  const ownedWorkflowLanes = input.expected.ownedWorkflowLanes?.length ? [...input.expected.ownedWorkflowLanes] : [input.expected.workflowLane];
18264
- if (receipt.mode !== input.expected.mode || receipt.workflowInstanceId !== input.expected.workflowInstanceId || receipt.workflowRevision !== input.expected.workflowRevision || receipt.baseSha !== input.expected.baseSha || receipt.batchId !== input.record.batchId || receipt.laneId !== input.record.laneId || receipt.childSessionId !== input.record.subagentSessionId || receipt.workflowLane !== input.expected.workflowLane || !ownedLaneSetsEqual(receipt.ownedWorkflowLanes, ownedWorkflowLanes) || receipt.headSha !== input.expected.prHeadSha || receipt.dispatchRevisionDigest !== input.expected.revisionDigest) {
18337
+ if (!recordWorkflowInstanceId || recordWorkflowRevision === undefined || recordWorkflowInstanceId !== input.expected.workflowInstanceId || recordWorkflowRevision !== input.expected.workflowRevision || receipt.mode !== input.expected.mode || receipt.workflowInstanceId !== recordWorkflowInstanceId || receipt.workflowRevision !== recordWorkflowRevision || receipt.baseSha !== input.expected.baseSha || receipt.batchId !== input.record.batchId || receipt.laneId !== input.record.laneId || receipt.childSessionId !== input.record.subagentSessionId || receipt.workflowLane !== input.expected.workflowLane || !ownedLaneSetsEqual(receipt.ownedWorkflowLanes, ownedWorkflowLanes) || receipt.headSha !== input.expected.prHeadSha || receipt.dispatchRevisionDigest !== input.expected.revisionDigest) {
18265
18338
  return {
18266
18339
  status: "rejected",
18267
18340
  failure: failedLaneValidation("discovery.coverage", "exact child/workflow/revision-bound structured receipt", "mismatched structured receipt").failure
@@ -18397,7 +18470,7 @@ function workflowArtifactHasContractMarker(directory, state, record, expectedMod
18397
18470
  gitHead: state.prHeadSha ?? "",
18398
18471
  revisionDigest: expectedRevisionDigest ?? "",
18399
18472
  workflowInstanceId: state.workflowInstanceId,
18400
- workflowRevision: state.revision,
18473
+ workflowRevision: record.workflowGeneration,
18401
18474
  baseSha: state.prReviewBaseSha,
18402
18475
  reviewScope
18403
18476
  }
@@ -26104,7 +26177,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
26104
26177
  };
26105
26178
  }
26106
26179
  async function sweepActiveNearDuplicates(directory, options = {}) {
26107
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-a0jhxx5q.js");
26180
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ty3vtqe2.js");
26108
26181
  const { config } = loadPluginConfigWithMeta2(directory);
26109
26182
  const sweepConfig = config.learning?.dedup_sweep;
26110
26183
  if (sweepConfig?.enabled === false)
@@ -27241,7 +27314,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
27241
27314
  }
27242
27315
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
27243
27316
  try {
27244
- const skillModule = await import("./skill-generator-xsxes2w0.js");
27317
+ const skillModule = await import("./skill-generator-7werbwgv.js");
27245
27318
  for (const cand of skillCandidates) {
27246
27319
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
27247
27320
  continue;
@@ -27713,7 +27786,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
27713
27786
  } catch {}
27714
27787
  }
27715
27788
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
27716
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-hp1ctjpe.js");
27789
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-aca0nhqg.js");
27717
27790
  for (const { id } of contradictedEntries) {
27718
27791
  try {
27719
27792
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -28545,7 +28618,7 @@ async function runCuratorPostMortem(directory, options = {}) {
28545
28618
  warnings.push("Failed to collect knowledge summary.");
28546
28619
  }
28547
28620
  try {
28548
- const { getScanStatus } = await import("./scan-cursor-gt55f3d6.js");
28621
+ const { getScanStatus } = await import("./scan-cursor-63zx2qd8.js");
28549
28622
  const scanStatus = await getScanStatus(directory);
28550
28623
  if (scanStatus.remaining_estimate > 0) {
28551
28624
  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.`);
@@ -28717,9 +28790,9 @@ var _internals28 = {
28717
28790
  verifyPostMortemKnowledgeActions,
28718
28791
  repairPostMortemActions,
28719
28792
  loadDefaultKnowledgeConfig: async (directory) => {
28720
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-rpdz901j.js");
28793
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-t1scx08g.js");
28721
28794
  try {
28722
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-a0jhxx5q.js");
28795
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ty3vtqe2.js");
28723
28796
  const loaded = loadPluginConfigWithMeta2(directory);
28724
28797
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
28725
28798
  } catch {
@@ -28727,11 +28800,11 @@ var _internals28 = {
28727
28800
  }
28728
28801
  },
28729
28802
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
28730
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-4s6ekk85.js");
28803
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-q3qn89wn.js");
28731
28804
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
28732
28805
  },
28733
28806
  checkHivePromotions: async (entries, knowledgeConfig, directory) => {
28734
- const { checkHivePromotions } = await import("./hive-promoter-nr8dsxhe.js");
28807
+ const { checkHivePromotions } = await import("./hive-promoter-w7g879cm.js");
28735
28808
  return checkHivePromotions(entries, knowledgeConfig, directory);
28736
28809
  },
28737
28810
  applyProposalTriage: async (directory, triage) => {
@@ -28740,7 +28813,7 @@ var _internals28 = {
28740
28813
  activateProposal,
28741
28814
  listSkills: listSkills2,
28742
28815
  sanitizeSlug
28743
- } = await import("./skill-generator-xsxes2w0.js");
28816
+ } = await import("./skill-generator-7werbwgv.js");
28744
28817
  const result = {
28745
28818
  approved: [],
28746
28819
  rejected: [],
@@ -28782,7 +28855,7 @@ var _internals28 = {
28782
28855
  return result;
28783
28856
  },
28784
28857
  readPriorDriftReports: async (directory) => {
28785
- const { readPriorDriftReports } = await import("./curator-drift-3s3q4wsy.js");
28858
+ const { readPriorDriftReports } = await import("./curator-drift-0r0scc8r.js");
28786
28859
  return readPriorDriftReports(directory);
28787
28860
  },
28788
28861
  readSwarmKnowledge: (directory) => readKnowledge(resolveSwarmKnowledgePath(directory))
@@ -30069,9 +30142,9 @@ function hashContent(content) {
30069
30142
  return createHash17("sha1").update(content).digest("hex");
30070
30143
  }
30071
30144
  async function loadConfigForPolicyCurator(directory) {
30072
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-rpdz901j.js");
30145
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-t1scx08g.js");
30073
30146
  try {
30074
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-a0jhxx5q.js");
30147
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ty3vtqe2.js");
30075
30148
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
30076
30149
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
30077
30150
  } catch {
@@ -42734,7 +42807,7 @@ async function runFinalizeStage(ctx) {
42734
42807
  }
42735
42808
  }
42736
42809
  try {
42737
- const { CuratorConfigSchema: CCS } = await import("./schema-rpdz901j.js");
42810
+ const { CuratorConfigSchema: CCS } = await import("./schema-t1scx08g.js");
42738
42811
  const { config: pmLoadedConfig } = _internals42.loadPluginConfigWithMeta(ctx.directory);
42739
42812
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
42740
42813
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -43623,7 +43696,7 @@ var _internals42 = {
43623
43696
  closePlanTerminalState: reconcileCloseTerminalStateForPlan,
43624
43697
  endAgentSession,
43625
43698
  flushAndDrainTelemetry: async () => {
43626
- const { flushAndDrainTelemetry } = await import("./telemetry-9tfts5q2.js");
43699
+ const { flushAndDrainTelemetry } = await import("./telemetry-j14cj552.js");
43627
43700
  return flushAndDrainTelemetry();
43628
43701
  },
43629
43702
  finalizeContextTelemetry: (directory) => {
@@ -44961,9 +45034,9 @@ var _internals46 = {
44961
45034
  loadPluginConfigWithMeta,
44962
45035
  loadCuratorDeps: async () => {
44963
45036
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
44964
- import("./schema-rpdz901j.js"),
44965
- import("./curator-4s6ekk85.js"),
44966
- import("./curator-llm-factory-q3t3r632.js")
45037
+ import("./schema-t1scx08g.js"),
45038
+ import("./curator-q3qn89wn.js"),
45039
+ import("./curator-llm-factory-dw7md4nr.js")
44967
45040
  ]);
44968
45041
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
44969
45042
  }
@@ -46006,7 +46079,7 @@ async function computeCurationDiagnostics(directory, entries) {
46006
46079
  let scanCompleted = false;
46007
46080
  let scanRemaining = 0;
46008
46081
  try {
46009
- const { getScanStatus } = await import("./scan-cursor-gt55f3d6.js");
46082
+ const { getScanStatus } = await import("./scan-cursor-63zx2qd8.js");
46010
46083
  const status = await getScanStatus(directory);
46011
46084
  scanGeneration = status.generation;
46012
46085
  scanCompleted = status.completed;
@@ -46014,19 +46087,19 @@ async function computeCurationDiagnostics(directory, entries) {
46014
46087
  } catch {}
46015
46088
  let configMatch = null;
46016
46089
  try {
46017
- const { isLinked: isLinked2 } = await import("./knowledge-link-f5g5d171.js");
46090
+ const { isLinked: isLinked2 } = await import("./knowledge-link-8ea4ksda.js");
46018
46091
  if (isLinked2(directory)) {
46019
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-rpdz901j.js");
46092
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-t1scx08g.js");
46020
46093
  let config;
46021
46094
  try {
46022
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-a0jhxx5q.js");
46095
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-ty3vtqe2.js");
46023
46096
  const loaded = loadPluginConfigWithMeta2(directory);
46024
46097
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
46025
46098
  } catch {
46026
46099
  config = KnowledgeConfigSchema2.parse({});
46027
46100
  }
46028
46101
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
46029
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-913dnxqq.js");
46102
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-7f8x9yg6.js");
46030
46103
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
46031
46104
  const cohortFp = await readCohortConfigFingerprint(directory);
46032
46105
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -47415,7 +47488,7 @@ async function handleDoctorCommand(directory, args) {
47415
47488
  const result = runConfigDoctor(config, directory);
47416
47489
  let output;
47417
47490
  if (enableAutoFix && result.hasAutoFixableIssues) {
47418
- const { runConfigDoctorWithFixes } = await import("./config-doctor-62xd5far.js");
47491
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-d1cbh67h.js");
47419
47492
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
47420
47493
  applyLossy: true
47421
47494
  });
@@ -48355,7 +48428,7 @@ async function handleEvidenceCommand(directory, args) {
48355
48428
  return formatTaskEvidenceMarkdown(evidenceData);
48356
48429
  }
48357
48430
  async function handleEvidenceSummaryCommand(directory) {
48358
- const { buildEvidenceSummary } = await import("./evidence-summary-service-gw936xgz.js");
48431
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-3meyb8rc.js");
48359
48432
  const artifact = await buildEvidenceSummary(directory);
48360
48433
  if (!artifact) {
48361
48434
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -51024,13 +51097,21 @@ var quality_budget = createSwarmTool({
51024
51097
  }).optional().describe("Quality budget thresholds")
51025
51098
  },
51026
51099
  async execute(args, directory, ctx) {
51027
- const result = await _internals55.qualityBudget(args, directory, ctx?.abort);
51100
+ const typedArgs = args;
51101
+ const fileOverrides = _internals55.loadGateOverrides(directory)?.quality_budget;
51102
+ const mergedConfig = {
51103
+ ...fileOverrides,
51104
+ ...typedArgs.config,
51105
+ ...fileOverrides?.enabled === false ? { enabled: false } : {}
51106
+ };
51107
+ const result = await _internals55.qualityBudget({ changed_files: typedArgs.changed_files, config: mergedConfig }, directory, ctx?.abort);
51028
51108
  return JSON.stringify(result);
51029
51109
  }
51030
51110
  });
51031
51111
  var _internals55 = {
51032
51112
  qualityBudget,
51033
- computeQualityMetrics
51113
+ computeQualityMetrics,
51114
+ loadGateOverrides
51034
51115
  };
51035
51116
 
51036
51117
  // src/tools/sast-scan.ts
@@ -53745,7 +53826,7 @@ function scanFileWithTierA(filePath, language) {
53745
53826
  return [];
53746
53827
  }
53747
53828
  }
53748
- async function sastScan(input, directory, config) {
53829
+ async function sastScan(input, directory, gates) {
53749
53830
  const {
53750
53831
  changed_files,
53751
53832
  severity_threshold = "medium",
@@ -53754,11 +53835,12 @@ async function sastScan(input, directory, config) {
53754
53835
  offline_only = false,
53755
53836
  abort_signal
53756
53837
  } = input;
53757
- if (config?.gates?.sast_scan?.enabled === false) {
53838
+ if (gates?.sast_scan?.enabled === false) {
53758
53839
  return {
53759
53840
  verdict: "pass",
53760
53841
  findings: [],
53761
53842
  summary: {
53843
+ disabled_reason: "sast_scan disabled by configuration",
53762
53844
  engine: "tier_a",
53763
53845
  files_scanned: 0,
53764
53846
  findings_count: 0,
@@ -54193,7 +54275,7 @@ var sast_scan = createSwarmTool({
54193
54275
  session_id: ctx?.sessionID,
54194
54276
  abort_signal: ctx?.abort
54195
54277
  };
54196
- const result = await _internals58.sastScan(input, directory);
54278
+ const result = await _internals58.sastScan(input, directory, _internals58.loadGateOverrides(directory));
54197
54279
  return JSON.stringify(result, null, 2);
54198
54280
  }
54199
54281
  });
@@ -54202,7 +54284,8 @@ var _internals58 = {
54202
54284
  sast_scan,
54203
54285
  checkSemgrepAvailable: (directory, abortSignal) => checkSemgrepAvailable(directory, abortSignal),
54204
54286
  isSemgrepAvailable: () => isSemgrepAvailable(),
54205
- runSemgrep: (options) => runSemgrep(options)
54287
+ runSemgrep: (options) => runSemgrep(options),
54288
+ loadGateOverrides
54206
54289
  };
54207
54290
 
54208
54291
  // src/evaluation/gate-audit.ts
@@ -83734,7 +83817,7 @@ async function runValidationWithTransientRetry(input, candidateContent, baseline
83734
83817
  if (!input.dispatcher) {
83735
83818
  throw new Error("no evaluation dispatcher available (cannot run validation)");
83736
83819
  }
83737
- const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-nkh65pcm.js");
83820
+ const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-fh7t0mn9.js");
83738
83821
  const executor = createModelEvaluationExecutor2(input.dispatcher, input.sessionId);
83739
83822
  const result = await withProtectedSetIntegrity([evalInputRoot, ...protectedRoots(input.directory)], () => _internals99.evaluateCandidateV1({
83740
83823
  projectRoot: input.directory,
@@ -85869,7 +85952,7 @@ function buildDetailedHelp(commandName, entry) {
85869
85952
  async function handleHelpCommand(ctx) {
85870
85953
  const targetCommand = ctx.args.join(" ");
85871
85954
  if (!targetCommand) {
85872
- const { buildHelpText } = await import("./index-et9y4ga8.js");
85955
+ const { buildHelpText } = await import("./index-y4z0rhsa.js");
85873
85956
  return buildHelpText();
85874
85957
  }
85875
85958
  const tokens = targetCommand.split(/\s+/);
@@ -85878,7 +85961,7 @@ async function handleHelpCommand(ctx) {
85878
85961
  return _internals102.buildDetailedHelp(resolved.key, resolved.entry);
85879
85962
  }
85880
85963
  const similar = _internals102.findSimilarCommands(targetCommand);
85881
- const { buildHelpText: fullHelp } = await import("./index-et9y4ga8.js");
85964
+ const { buildHelpText: fullHelp } = await import("./index-y4z0rhsa.js");
85882
85965
  if (similar.length > 0) {
85883
85966
  return `Command '/swarm ${targetCommand}' not found.
85884
85967
 
@@ -86209,7 +86292,7 @@ var COMMAND_REGISTRY = {
86209
86292
  },
86210
86293
  "guardrail explain": {
86211
86294
  handler: async (ctx) => {
86212
- const { handleGuardrailExplain } = await import("./guardrail-explain-jjbnrcqn.js");
86295
+ const { handleGuardrailExplain } = await import("./guardrail-explain-6cbszhw1.js");
86213
86296
  return handleGuardrailExplain(ctx.directory, ctx.args);
86214
86297
  },
86215
86298
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -86219,7 +86302,7 @@ var COMMAND_REGISTRY = {
86219
86302
  },
86220
86303
  "guardrail reset": {
86221
86304
  handler: async (ctx) => {
86222
- const { handleGuardrailReset } = await import("./guardrail-reset-1hpd6bkj.js");
86305
+ const { handleGuardrailReset } = await import("./guardrail-reset-mzeyd6jh.js");
86223
86306
  return handleGuardrailReset(ctx.args, ctx.sessionID);
86224
86307
  },
86225
86308
  description: "Reset one exact active invocation/action circuit after repair",
@@ -86228,7 +86311,7 @@ var COMMAND_REGISTRY = {
86228
86311
  },
86229
86312
  "guardrail-explain": {
86230
86313
  handler: async (ctx) => {
86231
- const { handleGuardrailExplain } = await import("./guardrail-explain-jjbnrcqn.js");
86314
+ const { handleGuardrailExplain } = await import("./guardrail-explain-6cbszhw1.js");
86232
86315
  return handleGuardrailExplain(ctx.directory, ctx.args);
86233
86316
  },
86234
86317
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -86238,7 +86321,7 @@ var COMMAND_REGISTRY = {
86238
86321
  },
86239
86322
  "guardrail-reset": {
86240
86323
  handler: async (ctx) => {
86241
- const { handleGuardrailReset } = await import("./guardrail-reset-1hpd6bkj.js");
86324
+ const { handleGuardrailReset } = await import("./guardrail-reset-mzeyd6jh.js");
86242
86325
  return handleGuardrailReset(ctx.args, ctx.sessionID);
86243
86326
  },
86244
86327
  description: "Reset one exact active invocation/action circuit after repair",
@@ -86248,7 +86331,7 @@ var COMMAND_REGISTRY = {
86248
86331
  },
86249
86332
  "guardrail-log": {
86250
86333
  handler: async (ctx) => {
86251
- const { handleGuardrailLog } = await import("./guardrail-log-9d4f09qt.js");
86334
+ const { handleGuardrailLog } = await import("./guardrail-log-0nd1eqvz.js");
86252
86335
  return handleGuardrailLog(ctx.directory, ctx.args);
86253
86336
  },
86254
86337
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -88196,13 +88279,13 @@ HARD CONSTRAINTS (apply regardless of skill load success):
88196
88279
  - Treat the controller Git-state result as final for the attempt: \`clean\` proceeds; \`stashable\` permits one preparation call; \`recovery-required\` or \`indeterminate\` means report the typed \`required_action\`, abort/clear any already-active gate, and STOP unless \`retryable: true\`. Never loop on stash against an unmerged index or in-progress Git operation.
88197
88280
  - RUN ALL BASE LANES: the default PR_REVIEW path covers all six repository-agnostic base dimensions from the skill on every PR. Use \`mode: "swarm-pr-review:base"\`, the exact \`workflow_lane\` identifiers, and the exact bound \`pr_head_sha\`. \`pr_review_resilience\` is DISABLED by default, so the legacy one-wave base dispatch is the default path at every depth tier \u2014 do not emit \`pr_review_wave_stage\` or \`pr_review_wave_attempt\` unless a project has explicitly enabled it. Only when a project explicitly sets \`pr_review_resilience.enabled: true\` must depth tier M/L stage attempt 0 as one singleton \`pr_review_wave_stage: "canary"\` batch followed by a \`"fanout"\` batch whose combined canary+fanout ownership partitions all six dimensions exactly once; tier L still requires six singleton combined lanes, and tier S keeps the legacy one-wave path regardless. The runtime rejects omitted stage metadata, partial, duplicate, mislabelled, or structurally invalid waves.
88198
88281
  - SETTLE DISCOVERY LANES STRUCTURED-FIRST: for Profile A base and micro discovery lanes, require exactly one \`submit_pr_review_result\` call and then stop. Deprecated transcript \`[CANDIDATE]\` / \`[CLEAN]\` rows are legacy-only compatibility for lanes whose snapped \`pr_review_legacy_transcript_compatibility\` contract explicitly enables them; they are OFF by default for new config and must never be duplicated after the structured submission.
88199
- - RETRY STRUCTURALLY: retry only unresolved failed base obligations in later \`swarm-pr-review:base\` async batches with the same exact \`pr_head_sha\`. Under staged resilience, attempts are numbered by \`pr_review_wave_attempt\`: attempt 0 plus at most two retry attempts (1 and 2), each with one singleton canary batch and then its matching fanout batch when obligations remain. Blocking \`dispatch_lanes\` and direct Task explorer/reviewer/critic dispatch are not provenance-equivalent and are rejected. If the runtime returns typed \`retry_exhausted\` or \`circuit_open\`, or if the second retry still cannot close coverage, collect every lane to settlement, do not probe downstream writers or micro lanes, call \`abort_pr_workflow\` with \`mode: "PR_REVIEW"\`, \`kind: "recovery"\`, and a non-empty one-line \`reason\` naming the failed lane or correlated failure and exhausted retries, then call \`prepare_pr_workflow_checkout\` with \`operation: "restore"\` before reporting the blocker.
88282
+ - RETRY STRUCTURALLY: retry only unresolved failed base obligations in later \`swarm-pr-review:base\` async batches with the same exact \`pr_head_sha\`. Under staged resilience, attempts are numbered by \`pr_review_wave_attempt\`: attempt 0 plus at most two retry attempts (1 and 2), each with one singleton canary batch and then its matching fanout batch when obligations remain. Blocking \`dispatch_lanes\` and direct Task explorer/reviewer/critic dispatch are not provenance-equivalent and are rejected. If the runtime returns typed \`retry_exhausted\` or \`circuit_open\`, or if the second retry still cannot close coverage, collect every lane to settlement, do not probe downstream writers or micro lanes, and settle N-of-6 truthfully with \`partial_base_coverage\` when coverage remains incomplete. Call \`prepare_pr_workflow_checkout\` with \`operation: "restore"\` only when the settlement reports checkout restoration is required.
88200
88283
  - RECOVER CONTRACT FAILURES EXPLICITLY: when collection reports \`workflow_lane_failure_class: "contract"\`, retry that one singleton base dimension once with \`pr_review_contract_retry: true\`; this retry is outside staged \`pr_review_wave_attempt\` accounting and cannot be combined with stage metadata. When fewer than six base dimensions settle but every launched lane is terminal or explicitly cancelled, the \`post_explorer\` findings write may explicitly submit \`partial_base_coverage: { unresolved_dimensions: [<exactly the uncovered dimensions>] }\` (issue #2383 N-of-6 settlement). Never infer or omit dimensions from this disclosure: the runtime derives each dimension's terminal state from lane evidence, persists an immutable coverage receipt, and rejects any declaration that does not exactly match the derived settlement.
88201
88284
  - USE ASYNC DISPATCH WITHOUT IDLING: each admissible base wave uses one \`dispatch_lanes_async\` call. With enabled tier-M/L staged resilience, this means one singleton canary call followed by one unresolved-only fanout call after canary admission; it never means one legacy call carrying the whole initial base wave. Record each \`batch_id\`, then keep doing non-dependent architect work while its lanes 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.
88202
88285
  - 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.
88203
88286
  - 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.
88204
88287
  - COMPLETE EXPLICITLY: after final artifacts and synthesis, call \`complete_pr_workflow\` with \`mode: "PR_REVIEW"\`, the bound \`pr_head_sha\`, and the terminal \`report_verdict\` the coverage kind allows (issue #2383): COMPLETE may APPROVE, REQUEST_CHANGES, or INCOMPLETE; PARTIAL only REQUEST_CHANGES or INCOMPLETE; NO_COVERAGE must be INCOMPLETE and skips the findings ladder entirely. Never leave the session trapped in a stale workflow gate. When completion reports checkout restoration is required, call \`prepare_pr_workflow_checkout\` with \`operation: "restore"\` before returning to the user. For a publication-armed workflow whose exact publication cannot proceed, \`abort_pr_workflow\` with \`kind: "armed_recovery"\` plus the armed-recovery identity fields is the audited escape that preserves validated work.
88205
- - 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), the merge-base bind is unreachable, or the bounded lane retries above are exhausted, call \`abort_pr_workflow\` with \`mode: "PR_REVIEW"\`, \`kind: "recovery"\`, and a one-line \`reason\` instead of looping. The tool accepts unbound and bound workflows but 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 force-clear via \`/swarm abort-pr-workflow\`. Do NOT abort while useful bounded recovery work remains.
88288
+ - 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, call \`abort_pr_workflow\` with \`mode: "PR_REVIEW"\`, \`kind: "recovery"\`, and a one-line \`reason\` instead of looping. The tool accepts unbound and bound workflows but 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 force-clear via \`/swarm abort-pr-workflow\`. Do NOT abort while useful bounded recovery or N-of-6 settlement work remains.
88206
88289
  - Honor any free-text instructions that follow the closing bracket of the signal as additional reviewer focus, without weakening the validation ladder above.
88207
88290
 
88208
88291
  ### MODE: PR_FEEDBACK
@@ -92247,7 +92330,7 @@ function getDisplayFinalPromptPressure() {
92247
92330
  async function rehydratePrSubscriptions(sessionID, directory) {
92248
92331
  const map = new Map;
92249
92332
  try {
92250
- const { listActive: listActive2 } = await import("./pr-subscriptions-s2b2yvbd.js");
92333
+ const { listActive: listActive2 } = await import("./pr-subscriptions-05dzvavk.js");
92251
92334
  const records = await listActive2(directory);
92252
92335
  for (const record of records) {
92253
92336
  if (record.sessionID !== sessionID)
@@ -92693,7 +92776,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
92693
92776
  return extracted === expectedSessionId;
92694
92777
  }
92695
92778
  async function inspectStandardWorktreeCollisionOwnership(identity) {
92696
- const collisionOwnership = await import("./worktree-collision-ownership-54ca6mb8.js");
92779
+ const collisionOwnership = await import("./worktree-collision-ownership-wzdzky33.js");
92697
92780
  return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
92698
92781
  }
92699
92782
  async function runRecoveryGit(directory, args, timeoutMs = 15000) {
@@ -93102,7 +93185,7 @@ async function precreateStandardWorktreeSession(args) {
93102
93185
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
93103
93186
  if (laneProfile) {
93104
93187
  try {
93105
- const { writeLaneProfileToDiskReal } = await import("./core-7kdmc7h9.js");
93188
+ const { writeLaneProfileToDiskReal } = await import("./core-g0cvvj3b.js");
93106
93189
  await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
93107
93190
  } catch {}
93108
93191
  }
@@ -94027,7 +94110,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
94027
94110
  }
94028
94111
  clearWorktreeMergeStatus(statusKey);
94029
94112
  try {
94030
- const { removeLaneProfileFromDiskReal } = await import("./core-7kdmc7h9.js");
94113
+ const { removeLaneProfileFromDiskReal } = await import("./core-g0cvvj3b.js");
94031
94114
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
94032
94115
  } catch {}
94033
94116
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -94230,4 +94313,4 @@ var _internals104 = {
94230
94313
  resolveGitExecutable
94231
94314
  };
94232
94315
 
94233
- export { resetActionCircuitExternally, getBlockingActionCircuit, dcNormalizeCommand, dcUnwrapWrappers, dcSplitSegments, dcExtractRecursiveRmTargets, dcEvaluateRecursiveDeleteTargets, dcCheckJunctionCreation, dcExtractWindowsCmdTargets, dcExtractPowerShellTargets, getSharedClassifierGuardrailBlock, classifyCommand, normalizeSwarmCommandInput, canonicalCommandKey, formatCommandNotFound, executeSwarmCommand, SWARM_COMMAND_TOOL_COMMANDS, SWARM_COMMAND_TOOL_ALLOWLIST, HUMAN_ONLY_SWARM_COMMANDS, classifySwarmCommandToolUse, classifySwarmCommandChatFallbackUse, detectPosixWrites, detectWindowsWrites, resolveWriteTargets, getAgentSession, parseLeanLaneIndex, computeLaneRuntimeProfile, MAX_TRACKED_STANDARD_WORKTREE_CALLS, awaitingMergeByCallID, standardWorktreeByCallID, standardWorktreeSerializationSessions, getStandardWorktreeDegradationReason, resetStandardWorktreeIsolationState, checkStandardWorktreeSerializationRelease, sanitizeWorktreeTaskId, preProvisionCollisionCheck, isLaneOwnedByCurrentSession, precreateStandardWorktreeSession, preserveBackgroundWorktreeOwnershipForCallId, preserveDirtyWorktreeForCallId, preserveDirtyWorktreeAtPath, cleanupStandardWorktreeForCallId, abortStandardWorktreeDispatch, finishStandardWorktreeDispatch, readLaneEnvFileFromDisk, _internals104 as _internals, prWorkflowSessionFileStem, ensurePrWorkflowSafeParentDirectory, writePrWorkflowAtomicJson, PrWorkflowCheckoutMutationTimeoutError, withPrWorkflowCheckoutMutationLock, PR_REVIEW_REPORT_VERDICTS, allowedPrReviewReportVerdicts, normalizePrReviewPartialBaseCoverageRecord, rollbackPrReviewPartialBaseCoverageAdmission, readPrReviewTerminalCoverageForReport, PR_REVIEW_REQUIRED_MICRO_LANE_IDS, PR_REVIEW_DEPTH_TIER_THRESHOLDS, PR_REVIEW_BASE_LANE_FLOORS, PR_REVIEW_TIER_L_CONSOLIDATED_LANE_FLOOR, PR_REVIEW_MICRO_LANE_FLOORS, computePrReviewDepthTier, MAX_PR_FEEDBACK_INVENTORY_AMENDMENTS, activatePrWorkflow, readPrWorkflowGateState, submitPrReviewResult, withPrWorkflowCheckoutPreparationLock, withInactivePrWorkflowCheckoutRestoreLock, clearPrWorkflowGateState, collectPrWorkflowPendingLaneLiveness, settlePresumedStalePrWorkflowLanes, abortPrWorkflow, recoverArmedPrWorkflow, bindPrWorkflowHead, rebindPrFeedbackHead, bindPrReviewBase, assertCurrentCheckoutHead, assertPrReviewCleanCheckout, enforcePrWorkflowDispatchLanesAsync, PrReviewResilienceCircuitOpenError, PrReviewResilienceRetryExhaustedError, enforcePrReviewBaseDimensions, rollbackPrReviewBaseAdmissionIfUnlaunched, admitPrReviewPartialBaseCoverage2 as admitPrReviewPartialBaseCoverage, assertPrReviewBaseCoverageSettled2 as assertPrReviewBaseCoverageSettled, recordPrReviewValidationBatch, assertPrReviewValidationSettled, declarePrFeedbackInventory, enforcePrFeedbackVerificationOwnership, assertPrFeedbackVerificationSettled, recordPrFeedbackStageA, recordPrFeedbackGateBatch, assertPrFeedbackGatePhaseSettled, assertPrFeedbackReadyToPublish, invalidatePrFeedbackPublication, describePrWorkflowPublicationSection, findDanglingLivePublicationGeneration, recordPrFeedbackPushAttemptResult, resolvePrReviewWriterRunId, markPrReviewTriggerEvaluationComplete, bindPrReviewTriggerLedger, assertPrReviewArtifactBoundary, assertPrReviewArtifactRecordsMatchAuthoritativeVerdicts, markPrReviewArtifactBoundary, markPrReviewHandoffComplete, transitionPrReviewToFeedback, declarePrFeedbackScope, resolvePrFeedbackScopeDeclaration, consumePrFeedbackScopeDeclaration, validatePrFeedbackScopeBinding, enforcePrWorkflowToolBefore, readPrReviewReentryBindingContext, reserveActivePrReviewReentryAuthorization, completePrWorkflow, _test_exports2 as _test_exports, normalizePrWorkflowShellCommand, describePrWorkflowRevisionDigestFailure, formatPrReviewLaneValidationFailure, validatePrReviewDiscoveryLaneCompletion2 as validatePrReviewDiscoveryLaneCompletion, validatePrWorkflowTransportRecovery, prReviewDiscoveryArtifactCoversLane, MAX_SALVAGED_SCHEMA_ERROR_CHARS, readPrWorkflowGateStateForRecovery, handleAcknowledgeSpecDriftCommand, handleAgentsCommand, handleAnalyzeCommand, handleApproveWriteCommand, handleArchiveCommand, handleAutoProceedCommand, handleBenchmarkCommand, handleBrainstormCommand, handleCheckpointCommand, handleCiSimulateCommand, handleClarifyCommand, createCuratorLLMDelegate, _internals27 as _internals1, normalizeRecommendationEntryIdToken, parseKnowledgeRecommendations, parseKnowledgeRecommendationsWithDiagnostics, parseStructuredCuratorBlocks, readCuratorSummary, writeCuratorSummary, appendCuratorRecommendation, mergeCuratorPhaseSummary, filterPhaseEvents, checkPhaseCompliance, runCuratorInit, runCuratorPhase, applyCuratorKnowledgeUpdates, isHiveEligible, countDistinctProjects, checkHivePromotions, _internals31 as _internals2, createHivePromoterHook, promoteToHive, promoteFromSwarm, safeRealpathSync, handleCloseCommand, handleCodebaseReviewCommand, handleConcurrencyCommand, handleConfigCommand, handleConsolidateCommand, handleCostsCommand, handleCouncilCommand, handleCurateCommand, handleDarkMatterCommand, handleDeepDiveCommand, handleDeepResearchCommand, getPluginConfigDir, getPluginCachePaths, getPluginLockFilePaths, VERSION_PINNED_LEAF, discoverVersionPinnedCachePaths, readCachePackageVersion, handleDiagnoseCommand, handleDoctorCommand, handleEvidenceCommand, handleEvidenceSummaryCommand, handleExportCommand, handleFullAutoCommand, handleGateAuditCommand, handleGateStatsCommand, handleHandoffCommand, handleBlueprintValidateCommand, handleBlueprintCurrentCommand, handleBlueprintHistoryCommand, handleBlueprintDiffCommand, handleBlueprintExportCommand, handleHarnessCandidateValidateCommand, handleHarnessCandidateShowCommand, handleHarnessCandidateDiffCommand, handleHistoryCommand, handleKnowledgeQuarantineCommand, handleKnowledgeRestoreCommand, handleKnowledgeMigrateCommand, handleKnowledgeListCommand, handleKnowledgeUnactionableCommand, handleKnowledgeRetryHardeningCommand, handleLearningCommand, handleLinkCommand, handleMemoryCommand, handleMemoryStatusCommand, handleMemoryValueLogCommand, handleMemoryMigrateCommand, handleMemoryImportCommand, handleMemoryExportCommand, handlePlanCommand, handlePreflightCommand, handlePromoteCommand, handleQaGatesCommand, handleRecoverCommand, handleResetCommand, handleResetSessionCommand, handleRetrieveCommand, handleReviewCommand, handleRollbackCommand, handleSddStatusCommand, handleSddValidateCommand, handleSddProjectCommand, handleSddCommand, handleSimulateCommand, handleSpecifyCommand, handleStatusCommand, handleSyncPlanCommand, handleTurboCommand, handleUnlinkCommand, handleWriteRetroCommand, handleHelpCommand, COMMAND_REGISTRY, VALID_COMMANDS, _internals102 as _internals3, resolveCommand };
94316
+ export { resetActionCircuitExternally, getBlockingActionCircuit, dcNormalizeCommand, dcUnwrapWrappers, dcSplitSegments, dcExtractRecursiveRmTargets, dcEvaluateRecursiveDeleteTargets, dcCheckJunctionCreation, dcExtractWindowsCmdTargets, dcExtractPowerShellTargets, getSharedClassifierGuardrailBlock, classifyCommand, normalizeSwarmCommandInput, canonicalCommandKey, formatCommandNotFound, executeSwarmCommand, SWARM_COMMAND_TOOL_COMMANDS, SWARM_COMMAND_TOOL_ALLOWLIST, HUMAN_ONLY_SWARM_COMMANDS, classifySwarmCommandToolUse, classifySwarmCommandChatFallbackUse, detectPosixWrites, detectWindowsWrites, resolveWriteTargets, getAgentSession, parseLeanLaneIndex, computeLaneRuntimeProfile, MAX_TRACKED_STANDARD_WORKTREE_CALLS, awaitingMergeByCallID, standardWorktreeByCallID, standardWorktreeSerializationSessions, getStandardWorktreeDegradationReason, resetStandardWorktreeIsolationState, checkStandardWorktreeSerializationRelease, sanitizeWorktreeTaskId, preProvisionCollisionCheck, isLaneOwnedByCurrentSession, precreateStandardWorktreeSession, preserveBackgroundWorktreeOwnershipForCallId, preserveDirtyWorktreeForCallId, preserveDirtyWorktreeAtPath, cleanupStandardWorktreeForCallId, abortStandardWorktreeDispatch, finishStandardWorktreeDispatch, readLaneEnvFileFromDisk, _internals104 as _internals, prWorkflowSessionFileStem, ensurePrWorkflowSafeParentDirectory, writePrWorkflowAtomicJson, PrWorkflowCheckoutMutationTimeoutError, withPrWorkflowCheckoutMutationLock, PR_REVIEW_REPORT_VERDICTS, allowedPrReviewReportVerdicts, normalizePrReviewPartialBaseCoverageRecord, rollbackPrReviewPartialBaseCoverageAdmission, readPrReviewTerminalCoverageForReport, PR_REVIEW_REQUIRED_MICRO_LANE_IDS, PR_REVIEW_DEPTH_TIER_THRESHOLDS, PR_REVIEW_BASE_LANE_FLOORS, PR_REVIEW_TIER_L_CONSOLIDATED_LANE_FLOOR, PR_REVIEW_MICRO_LANE_FLOORS, computePrReviewDepthTier, MAX_PR_FEEDBACK_INVENTORY_AMENDMENTS, activatePrWorkflow, readPrWorkflowGateState, submitPrReviewResult, withPrWorkflowCheckoutPreparationLock, withInactivePrWorkflowCheckoutRestoreLock, clearPrWorkflowGateState, collectPrWorkflowPendingLaneLiveness, settlePresumedStalePrWorkflowLanes, abortPrWorkflow, recoverArmedPrWorkflow, bindPrWorkflowHead, rebindPrFeedbackHead, bindPrReviewBase, assertCurrentCheckoutHead, assertPrReviewCleanCheckout, enforcePrWorkflowDispatchLanesAsync, PrReviewResilienceCircuitOpenError, PrReviewResilienceRetryExhaustedError, enforcePrReviewBaseDimensions, rollbackPrReviewBaseAdmissionIfUnlaunched, admitPrReviewPartialBaseCoverage2 as admitPrReviewPartialBaseCoverage, assertPrReviewBaseCoverageSettled2 as assertPrReviewBaseCoverageSettled, recordPrReviewValidationBatch, assertPrReviewValidationSettled, declarePrFeedbackInventory, enforcePrFeedbackVerificationOwnership, assertPrFeedbackVerificationSettled, recordPrFeedbackStageA, recordPrFeedbackGateBatch, assertPrFeedbackGatePhaseSettled, assertPrFeedbackReadyToPublish, invalidatePrFeedbackPublication, describePrWorkflowPublicationSection, findDanglingLivePublicationGeneration, recordPrFeedbackPushAttemptResult, resolvePrReviewWriterRunId, markPrReviewTriggerEvaluationComplete, bindPrReviewTriggerLedger, assertPrReviewArtifactBoundary, assertPrReviewArtifactRecordsMatchAuthoritativeVerdicts, markPrReviewArtifactBoundary, markPrReviewHandoffComplete, transitionPrReviewToFeedback, declarePrFeedbackScope, resolvePrFeedbackScopeDeclaration, consumePrFeedbackScopeDeclaration, validatePrFeedbackScopeBinding, enforcePrWorkflowToolBefore, readPrReviewReentryBindingContext, hasActivePrReviewReentryAuthorization, reserveActivePrReviewReentryAuthorization, completePrWorkflow, _test_exports2 as _test_exports, normalizePrWorkflowShellCommand, describePrWorkflowRevisionDigestFailure, formatPrReviewLaneValidationFailure, validatePrReviewDiscoveryLaneCompletion2 as validatePrReviewDiscoveryLaneCompletion, validatePrWorkflowTransportRecovery, prReviewDiscoveryArtifactCoversLane, MAX_SALVAGED_SCHEMA_ERROR_CHARS, readPrWorkflowGateStateForRecovery, handleAcknowledgeSpecDriftCommand, handleAgentsCommand, handleAnalyzeCommand, handleApproveWriteCommand, handleArchiveCommand, handleAutoProceedCommand, handleBenchmarkCommand, handleBrainstormCommand, handleCheckpointCommand, handleCiSimulateCommand, handleClarifyCommand, createCuratorLLMDelegate, _internals27 as _internals1, normalizeRecommendationEntryIdToken, parseKnowledgeRecommendations, parseKnowledgeRecommendationsWithDiagnostics, parseStructuredCuratorBlocks, readCuratorSummary, writeCuratorSummary, appendCuratorRecommendation, mergeCuratorPhaseSummary, filterPhaseEvents, checkPhaseCompliance, runCuratorInit, runCuratorPhase, applyCuratorKnowledgeUpdates, isHiveEligible, countDistinctProjects, checkHivePromotions, _internals31 as _internals2, createHivePromoterHook, promoteToHive, promoteFromSwarm, safeRealpathSync, handleCloseCommand, handleCodebaseReviewCommand, handleConcurrencyCommand, handleConfigCommand, handleConsolidateCommand, handleCostsCommand, handleCouncilCommand, handleCurateCommand, handleDarkMatterCommand, handleDeepDiveCommand, handleDeepResearchCommand, getPluginConfigDir, getPluginCachePaths, getPluginLockFilePaths, VERSION_PINNED_LEAF, discoverVersionPinnedCachePaths, readCachePackageVersion, handleDiagnoseCommand, handleDoctorCommand, handleEvidenceCommand, handleEvidenceSummaryCommand, handleExportCommand, handleFullAutoCommand, handleGateAuditCommand, handleGateStatsCommand, handleHandoffCommand, handleBlueprintValidateCommand, handleBlueprintCurrentCommand, handleBlueprintHistoryCommand, handleBlueprintDiffCommand, handleBlueprintExportCommand, handleHarnessCandidateValidateCommand, handleHarnessCandidateShowCommand, handleHarnessCandidateDiffCommand, handleHistoryCommand, handleKnowledgeQuarantineCommand, handleKnowledgeRestoreCommand, handleKnowledgeMigrateCommand, handleKnowledgeListCommand, handleKnowledgeUnactionableCommand, handleKnowledgeRetryHardeningCommand, handleLearningCommand, handleLinkCommand, handleMemoryCommand, handleMemoryStatusCommand, handleMemoryValueLogCommand, handleMemoryMigrateCommand, handleMemoryImportCommand, handleMemoryExportCommand, handlePlanCommand, handlePreflightCommand, handlePromoteCommand, handleQaGatesCommand, handleRecoverCommand, handleResetCommand, handleResetSessionCommand, handleRetrieveCommand, handleReviewCommand, handleRollbackCommand, handleSddStatusCommand, handleSddValidateCommand, handleSddProjectCommand, handleSddCommand, handleSimulateCommand, handleSpecifyCommand, handleStatusCommand, handleSyncPlanCommand, handleTurboCommand, handleUnlinkCommand, handleWriteRetroCommand, handleHelpCommand, COMMAND_REGISTRY, VALID_COMMANDS, _internals102 as _internals3, resolveCommand };