opencode-swarm 7.193.0 → 7.195.0

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 (116) hide show
  1. package/.opencode/skills/commit-pr/SKILL.md +8 -0
  2. package/.opencode/skills/issue-tracer/references/acceptance-checks.md +20 -0
  3. package/.opencode/skills/issue-tracer/references/full-resolution-contract.md +12 -0
  4. package/.opencode/skills/swarm-pr-feedback/SKILL.md +2 -2
  5. package/.opencode/skills/swarm-pr-feedback/references/operational-gotchas.md +18 -0
  6. package/.opencode/skills/swarm-pr-review/SKILL.md +11 -10
  7. package/.opencode/skills/swarm-pr-review/references/counterbalancing.md +68 -0
  8. package/.opencode/skills/swarm-pr-review/references/findings-persistence-contract.md +21 -0
  9. package/.opencode/skills/swarm-pr-review/references/parser-dry-run.md +11 -0
  10. package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +8 -0
  11. package/README.md +1 -1
  12. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  13. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  14. package/dist/background/pending-delegations.d.ts +8 -0
  15. package/dist/background/pr-review-collection-receipt.d.ts +7 -1
  16. package/dist/background/pr-review-contract.d.ts +10 -0
  17. package/dist/cli/{auto-checkpoint-taay16xe.js → auto-checkpoint-anf21wwa.js} +9 -9
  18. package/dist/cli/{checkpoint-6229g3jq.js → checkpoint-ngdw2qx2.js} +17 -17
  19. package/dist/cli/{coder-settlement-hexmmefv.js → coder-settlement-bqb059y2.js} +13 -13
  20. package/dist/cli/{config-doctor-3ghvthh5.js → config-doctor-vetg215g.js} +16 -16
  21. package/dist/cli/{core-0k7t9fw0.js → core-8qgvsm6x.js} +4 -4
  22. package/dist/cli/{curation-policy-8j6qn6nt.js → curation-policy-5hm6328s.js} +6 -6
  23. package/dist/cli/{curator-drift-a5142x0d.js → curator-drift-3gjycbkv.js} +9 -9
  24. package/dist/cli/{curator-kwwnkyr7.js → curator-hh0n9wgz.js} +43 -43
  25. package/dist/cli/curator-llm-factory-d17ybmgm.js +82 -0
  26. package/dist/cli/{doctor-knowledge-receipt-phase-id-11nsf9tz.js → doctor-knowledge-receipt-phase-id-1d465vkg.js} +9 -9
  27. package/dist/cli/{evidence-summary-service-y2ykc6ta.js → evidence-summary-service-rkd3yc5x.js} +20 -20
  28. package/dist/cli/{gate-evidence-cd5299js.js → gate-evidence-wtjrerkh.js} +8 -8
  29. package/dist/cli/guardrail-explain-8xh3r0dn.js +83 -0
  30. package/dist/cli/{guardrail-log-g6krx0s2.js → guardrail-log-jrey2myg.js} +8 -8
  31. package/dist/cli/{guardrail-reset-a3xv675m.js → guardrail-reset-m5qbg30j.js} +43 -43
  32. package/dist/cli/{hive-promoter-90svfzvs.js → hive-promoter-36yhdfre.js} +43 -43
  33. package/dist/cli/{index-5ev6f1gj.js → index-1hcjxz6w.js} +5 -5
  34. package/dist/cli/{index-6dn16dre.js → index-3k65kdfp.js} +13 -11
  35. package/dist/cli/{index-x2phyvcv.js → index-479kf368.js} +4 -4
  36. package/dist/cli/{index-5rkh69f3.js → index-4gmxdkcd.js} +2 -2
  37. package/dist/cli/{index-bg19b84s.js → index-5gf2wx2c.js} +7 -7
  38. package/dist/cli/{index-qh93qjc2.js → index-6183at3v.js} +2 -2
  39. package/dist/cli/{index-1p24bfn2.js → index-6vpqe4ws.js} +5 -5
  40. package/dist/cli/{index-ma71x1aa.js → index-780g1hht.js} +5 -5
  41. package/dist/cli/{index-jx80ed6g.js → index-7kbpzg05.js} +318 -95
  42. package/dist/cli/{index-mtqwyjrg.js → index-7rtq2t5n.js} +1 -1
  43. package/dist/cli/{index-vbp35frb.js → index-82aj6gaj.js} +3 -3
  44. package/dist/cli/{index-prvancd0.js → index-8448vj9w.js} +2 -2
  45. package/dist/cli/{index-d2emv8ap.js → index-863hst4e.js} +3 -3
  46. package/dist/cli/{index-db786kn6.js → index-9teqkkp4.js} +43 -43
  47. package/dist/cli/{index-bkpyff61.js → index-akb436kn.js} +4 -4
  48. package/dist/cli/{index-0e318vgt.js → index-app2rmxv.js} +1 -1
  49. package/dist/cli/{index-tr47q89d.js → index-bftpd2m5.js} +4 -4
  50. package/dist/cli/{index-rd9th57y.js → index-bpq6z8qe.js} +4 -4
  51. package/dist/cli/{index-cs0p582p.js → index-c4hx57tz.js} +5 -5
  52. package/dist/cli/{index-668npagp.js → index-c5xvm318.js} +1 -1
  53. package/dist/cli/{index-ngk8hpc3.js → index-c6hyd8hg.js} +1 -1
  54. package/dist/cli/{index-vg8sxg12.js → index-crz772sx.js} +1 -1
  55. package/dist/cli/{index-6s3ab22d.js → index-dfrcc46h.js} +2 -2
  56. package/dist/cli/{index-he2nyr7x.js → index-epdzvp4w.js} +11 -11
  57. package/dist/cli/{index-ymnathfr.js → index-fk4j26km.js} +7 -7
  58. package/dist/cli/{index-ndec8akq.js → index-gc0aeth5.js} +2 -2
  59. package/dist/cli/{index-fd6b9f38.js → index-ghckhk16.js} +2 -2
  60. package/dist/cli/{index-4mq8r4be.js → index-gns3gc87.js} +4 -4
  61. package/dist/cli/{index-5n760fzn.js → index-gz16dke1.js} +6 -6
  62. package/dist/cli/{index-3xj89bf0.js → index-h7275akd.js} +45 -45
  63. package/dist/cli/{index-cpt38e0e.js → index-ha8xc5d3.js} +2 -2
  64. package/dist/cli/{index-py8wpe81.js → index-hqrkr9ag.js} +2 -2
  65. package/dist/cli/{index-w2vbaczx.js → index-hy2fqapm.js} +1 -1
  66. package/dist/cli/{index-st80sjg7.js → index-j8t1g5qd.js} +1 -1
  67. package/dist/cli/{index-ntmnse4d.js → index-jatgbm7k.js} +1 -1
  68. package/dist/cli/{index-1dx5zyss.js → index-jn4mmhqc.js} +2 -2
  69. package/dist/cli/{index-nz6ehpjn.js → index-kmvy5fr8.js} +4 -4
  70. package/dist/cli/{index-84k9zzv1.js → index-kphy4we7.js} +1 -1
  71. package/dist/cli/{index-7njm9jk1.js → index-necqa5bj.js} +2 -2
  72. package/dist/cli/{index-bgtfvst1.js → index-peyz4k9k.js} +1 -1
  73. package/dist/cli/{index-3atkcqpb.js → index-ry5g9s8d.js} +1 -1
  74. package/dist/cli/{index-jxs9qnad.js → index-tc8x0zc5.js} +4 -4
  75. package/dist/cli/{index-e8k0v19e.js → index-xmbtwtgw.js} +1 -1
  76. package/dist/cli/{index-nktwf2xm.js → index-xs9cn3c0.js} +6 -6
  77. package/dist/cli/{index-hfssjyxs.js → index-yf2z4j7s.js} +2 -2
  78. package/dist/cli/{index-hfnyykvm.js → index-ypkfhqbc.js} +7 -7
  79. package/dist/cli/{index-r3mffz78.js → index-yryy781f.js} +4 -4
  80. package/dist/cli/{index-4gacy6y6.js → index-z59414gv.js} +2 -2
  81. package/dist/cli/index.js +44 -44
  82. package/dist/cli/{knowledge-escalator-2d7g3hs0.js → knowledge-escalator-6sgrjbcj.js} +15 -15
  83. package/dist/cli/{knowledge-events-hjeaevc9.js → knowledge-events-hztjt63y.js} +13 -13
  84. package/dist/cli/{knowledge-link-srnt95wh.js → knowledge-link-8bn2b7vr.js} +5 -5
  85. package/dist/cli/{knowledge-store-g9cb2m0v.js → knowledge-store-3sd2034v.js} +6 -6
  86. package/dist/cli/{knowledge-validator-dghf9pcj.js → knowledge-validator-3fe82zy4.js} +8 -8
  87. package/dist/cli/{mcp-f5myvd7r.js → mcp-spbx3efe.js} +1 -1
  88. package/dist/cli/{model-preflight-4w4wd6dj.js → model-preflight-k2bw7rt1.js} +43 -43
  89. package/dist/cli/{pending-delegations-adm6gf3n.js → pending-delegations-kcvd9t41.js} +14 -12
  90. package/dist/cli/{pr-subscriptions-n1hks854.js → pr-subscriptions-nqby87en.js} +12 -12
  91. package/dist/cli/{pr-workflow-gate-59cr6gve.js → pr-workflow-gate-cgbc0x1z.js} +59 -43
  92. package/dist/cli/{runner-b2e89cp1.js → runner-rt2smh14.js} +6 -6
  93. package/dist/cli/{scan-cursor-t26xmfhd.js → scan-cursor-sphr9phs.js} +7 -7
  94. package/dist/cli/{schema-cr120ar5.js → schema-x892aatt.js} +2 -2
  95. package/dist/cli/{scope-persistence-mrnz8j43.js → scope-persistence-n9xksct2.js} +16 -16
  96. package/dist/cli/{server-mwk6zn83.js → server-am2y11yn.js} +43 -43
  97. package/dist/cli/{skill-generator-svs4k0g8.js → skill-generator-p71b6h5k.js} +17 -17
  98. package/dist/cli/{snapshot-coordination-init-xzrahhsb.js → snapshot-coordination-init-x9b4t9sk.js} +43 -43
  99. package/dist/cli/{speckit-checkoff-g2qrb1tn.js → speckit-checkoff-xp9vsp9k.js} +5 -5
  100. package/dist/cli/{telemetry-qaymh4gg.js → telemetry-vapc5q4p.js} +1 -1
  101. package/dist/cli/{workspace-snapshot-p69t9zn7.js → workspace-snapshot-e3kw9kpg.js} +3 -3
  102. package/dist/cli/{worktree-collision-ownership-d145wmpg.js → worktree-collision-ownership-2pmyww6g.js} +13 -13
  103. package/dist/cli/{worktree-isolation-pt1rws6p.js → worktree-isolation-379tmkta.js} +43 -43
  104. package/dist/commands/registry.d.ts +1 -1
  105. package/dist/epic/start.d.ts +8 -5
  106. package/dist/hooks/pr-workflow-gate.d.ts +190 -0
  107. package/dist/host/v2/session-client.d.ts +96 -0
  108. package/dist/host/v2/types.d.ts +7 -5
  109. package/dist/index.js +36 -32
  110. package/dist/pr-review/legacy-transcript-adapter.d.ts +54 -0
  111. package/dist/pr-review/render-review-body.d.ts +20 -0
  112. package/dist/tools/dispatch-lanes.d.ts +16 -1
  113. package/dist/tools/pr-workflow-status.d.ts +24 -1
  114. package/package.json +1 -1
  115. package/dist/cli/curator-llm-factory-8gt3mvg9.js +0 -82
  116. package/dist/cli/guardrail-explain-hpgecr7x.js +0 -83
@@ -8,14 +8,14 @@ import {
8
8
  protectedRoots,
9
9
  redactDecisionLineForArchive,
10
10
  stableCanonicalStringify
11
- } from "./index-bkpyff61.js";
11
+ } from "./index-akb436kn.js";
12
12
  import {
13
13
  detectStraySwarmDirs,
14
14
  readDoctorArtifact,
15
15
  removeStraySwarmDir,
16
16
  resolvePlanParallelizationFlag,
17
17
  runConfigDoctor
18
- } from "./index-4mq8r4be.js";
18
+ } from "./index-gns3gc87.js";
19
19
  import {
20
20
  archiveEvidence,
21
21
  checkRequirementCoverage,
@@ -27,7 +27,7 @@ import {
27
27
  sanitizeTaskId,
28
28
  saveEvidence,
29
29
  validateProjectRoot
30
- } from "./index-ma71x1aa.js";
30
+ } from "./index-780g1hht.js";
31
31
  import {
32
32
  JAVA_SYMBOL_GRAMMAR,
33
33
  LANGUAGE_REGISTRY,
@@ -56,7 +56,7 @@ import {
56
56
  runEvaluation,
57
57
  runExternalTool,
58
58
  withDisposableWorktree
59
- } from "./index-668npagp.js";
59
+ } from "./index-c5xvm318.js";
60
60
  import {
61
61
  EvaluationTaskV1Schema,
62
62
  GateAuditManifestV1Schema,
@@ -73,7 +73,7 @@ import {
73
73
  saveGateAuditResult,
74
74
  savePromotionDecision,
75
75
  saveTaskSetSnapshot
76
- } from "./index-7njm9jk1.js";
76
+ } from "./index-necqa5bj.js";
77
77
  import {
78
78
  canonicalHash,
79
79
  canonicalJson,
@@ -89,7 +89,7 @@ import {
89
89
  alreadyCuratedThisGeneration,
90
90
  claimNextScanBatch,
91
91
  resolveCohortId
92
- } from "./index-prvancd0.js";
92
+ } from "./index-8448vj9w.js";
93
93
  import {
94
94
  CURATOR_CONSOLIDATION_PROMPT,
95
95
  CURATOR_INIT_PROMPT,
@@ -108,13 +108,13 @@ import {
108
108
  getGroupCommitWriter,
109
109
  importLegacyJsonl,
110
110
  readPriorDriftReports
111
- } from "./index-d2emv8ap.js";
111
+ } from "./index-863hst4e.js";
112
112
  import {
113
113
  assertNoUnsettledCoderDispatch,
114
114
  listCoderSettlementWalStates,
115
115
  recoverCoderSettlement,
116
116
  recoverStaleCoderSettlements
117
- } from "./index-ymnathfr.js";
117
+ } from "./index-fk4j26km.js";
118
118
  import {
119
119
  BUNDLED_PROJECT_SKILL_ROOT,
120
120
  DEFAULT_SKILL_MIN_CONFIDENCE,
@@ -135,11 +135,11 @@ import {
135
135
  retireSkill,
136
136
  selectCandidateEntries,
137
137
  syncBundledProjectSkillsIfMissingAsync
138
- } from "./index-r3mffz78.js";
138
+ } from "./index-yryy781f.js";
139
139
  import {
140
140
  buildEscalationBriefing,
141
141
  readRecentEscalations
142
- } from "./index-5n760fzn.js";
142
+ } from "./index-gz16dke1.js";
143
143
  import {
144
144
  parsePorcelainV2Snapshot,
145
145
  resolveCommitCountSince,
@@ -167,7 +167,7 @@ import {
167
167
  resolveRemoteUrlIdentity,
168
168
  resolveRemoteUrlIdentityAsync,
169
169
  switchPrFeedbackTrackingCandidateAsync
170
- } from "./index-fd6b9f38.js";
170
+ } from "./index-ghckhk16.js";
171
171
  import {
172
172
  buildCorrelationId,
173
173
  buildIssueUrl,
@@ -188,13 +188,13 @@ import {
188
188
  sweepStale,
189
189
  unsubscribe,
190
190
  updateSnapshot
191
- } from "./index-hfnyykvm.js";
191
+ } from "./index-ypkfhqbc.js";
192
192
  import {
193
193
  WORKTREE_LIFECYCLE_LOCK_FILE,
194
194
  recordWorktreeProvisioningOwner,
195
195
  removeWorktreeProvisioningOwner,
196
196
  scanWorktreeProvisioningOwnersForRecovery
197
- } from "./index-6s3ab22d.js";
197
+ } from "./index-dfrcc46h.js";
198
198
  import {
199
199
  getLanguageForExtension
200
200
  } from "./index-pt7h91zc.js";
@@ -223,7 +223,7 @@ import {
223
223
  swarmOverwriteCandidates,
224
224
  trackedDirtyCandidates,
225
225
  transientBackoff
226
- } from "./index-nktwf2xm.js";
226
+ } from "./index-xs9cn3c0.js";
227
227
  import {
228
228
  EPIC_MODE_CONFIG_DISABLED_MESSAGE,
229
229
  PlanRecoverySupersededError,
@@ -255,7 +255,7 @@ import {
255
255
  updateEpicRecord,
256
256
  updateTaskStatus,
257
257
  withPlanLifecycleLock
258
- } from "./index-he2nyr7x.js";
258
+ } from "./index-epdzvp4w.js";
259
259
  import {
260
260
  containsControlChars,
261
261
  containsPathTraversal,
@@ -271,7 +271,7 @@ import {
271
271
  resolveSpeckitProjection,
272
272
  validateSpeckit,
273
273
  writeProjectedSpecSync
274
- } from "./index-bgtfvst1.js";
274
+ } from "./index-peyz4k9k.js";
275
275
  import {
276
276
  clearWorktreeMergeStatus,
277
277
  getAllWorktreeMergeFailures,
@@ -303,7 +303,7 @@ import {
303
303
  transitionTaskWorkflowEvidenceWithStatus,
304
304
  withTaskEvidenceTransaction,
305
305
  writeWorkflowWalFile
306
- } from "./index-nz6ehpjn.js";
306
+ } from "./index-kmvy5fr8.js";
307
307
  import {
308
308
  isPathUnderSwarmWorktreeBase,
309
309
  listLiveLaneOwners,
@@ -312,7 +312,7 @@ import {
312
312
  recordLiveLaneOwner,
313
313
  removeWorktree,
314
314
  resolveWorktreeBaseDir
315
- } from "./index-x2phyvcv.js";
315
+ } from "./index-479kf368.js";
316
316
  import {
317
317
  GitBinaryMissingError,
318
318
  GitSpawnCwdError,
@@ -354,7 +354,7 @@ import {
354
354
  scanBackgroundCoderReservationsForAdmission,
355
355
  scanDelegationsForRecovery,
356
356
  sweepStaleDelegations
357
- } from "./index-6dn16dre.js";
357
+ } from "./index-3k65kdfp.js";
358
358
  import {
359
359
  MAX_EVENT_LOG_ENTRIES,
360
360
  _internals,
@@ -366,7 +366,7 @@ import {
366
366
  recordHiveKnowledgeEvent,
367
367
  recordKnowledgeEvent,
368
368
  resolveKnowledgeEventsPath
369
- } from "./index-tr47q89d.js";
369
+ } from "./index-bftpd2m5.js";
370
370
  import {
371
371
  commitDisplayedMembership,
372
372
  commitEmptyRetrieval,
@@ -379,7 +379,7 @@ import {
379
379
  queryLiveMemberships,
380
380
  reconcilePhaseClose,
381
381
  recordPhaseCloseIntent
382
- } from "./index-cs0p582p.js";
382
+ } from "./index-c4hx57tz.js";
383
383
  import {
384
384
  sanitizeContextText
385
385
  } from "./index-m9zzj4ee.js";
@@ -390,7 +390,7 @@ import {
390
390
  readSwarmFileAsync,
391
391
  safeHook,
392
392
  validateSwarmPath
393
- } from "./index-84k9zzv1.js";
393
+ } from "./index-kphy4we7.js";
394
394
  import {
395
395
  bunFile,
396
396
  bunSpawn,
@@ -410,18 +410,18 @@ import {
410
410
  validateActionableFields,
411
411
  validateLesson,
412
412
  validateSkillPath
413
- } from "./index-jxs9qnad.js";
413
+ } from "./index-tc8x0zc5.js";
414
414
  import {
415
415
  MAX_CURATION_PROPOSALS,
416
416
  authorizeCuration,
417
417
  buildConfigFingerprintInput
418
- } from "./index-w2vbaczx.js";
418
+ } from "./index-hy2fqapm.js";
419
419
  import {
420
420
  cohortConfigFingerprint
421
421
  } from "./index-rtry5xyf.js";
422
422
  import {
423
423
  resolveWorktreeIsolationConfig
424
- } from "./index-vbp35frb.js";
424
+ } from "./index-82aj6gaj.js";
425
425
  import {
426
426
  RetrospectiveEvidenceSchema
427
427
  } from "./index-g22dps7x.js";
@@ -433,7 +433,7 @@ import {
433
433
  clearScopeBindings,
434
434
  readAuthoritativeScopeBindingSet,
435
435
  readDeclaredScopeFilesFromBindings
436
- } from "./index-1p24bfn2.js";
436
+ } from "./index-6vpqe4ws.js";
437
437
  import {
438
438
  approvedSnapshotCoversPlan,
439
439
  clearPlanLedgerForReset,
@@ -450,7 +450,7 @@ import {
450
450
  replayFromLedgerWithStatus,
451
451
  resolvePlanningProfile,
452
452
  takeSnapshotEvent
453
- } from "./index-5ev6f1gj.js";
453
+ } from "./index-1hcjxz6w.js";
454
454
  import {
455
455
  CORE_EVENT_LOCKED,
456
456
  appendCoreEventSync,
@@ -460,7 +460,7 @@ import {
460
460
  hasSpecDriftAuditEvent,
461
461
  hasTaskRepairAuditEvent,
462
462
  readCoreEvents
463
- } from "./index-qh93qjc2.js";
463
+ } from "./index-6183at3v.js";
464
464
  import {
465
465
  DEFAULT_QA_GATES,
466
466
  computeProfileHash,
@@ -468,7 +468,7 @@ import {
468
468
  getEffectiveGates,
469
469
  getProfileLookupForIdentity,
470
470
  setGatesForIdentity
471
- } from "./index-st80sjg7.js";
471
+ } from "./index-j8t1g5qd.js";
472
472
  import {
473
473
  MAX_COORDINATION_STATE_LIST_ROWS,
474
474
  deleteCoordinationImports,
@@ -479,7 +479,7 @@ import {
479
479
  listCoordinationStates,
480
480
  transitionCoordinationState,
481
481
  withCoordinationTransaction
482
- } from "./index-vg8sxg12.js";
482
+ } from "./index-crz772sx.js";
483
483
  import {
484
484
  DURABILITY_CLASSES,
485
485
  closeAllProjectDbs,
@@ -488,7 +488,7 @@ import {
488
488
  projectDbExists,
489
489
  projectDbPath,
490
490
  withImmediateTransaction
491
- } from "./index-0e318vgt.js";
491
+ } from "./index-app2rmxv.js";
492
492
  import {
493
493
  canonicalExistingFilesystemPath,
494
494
  canonicalPathForFutureIo,
@@ -508,7 +508,7 @@ import {
508
508
  observeModelLimitResolution,
509
509
  observeStoreHealth,
510
510
  readLearningHealth
511
- } from "./index-ndec8akq.js";
511
+ } from "./index-gc0aeth5.js";
512
512
  import {
513
513
  appendKnowledge,
514
514
  appendRejectedLesson,
@@ -539,7 +539,7 @@ import {
539
539
  transactFile,
540
540
  transactKnowledge,
541
541
  wordBigrams
542
- } from "./index-bg19b84s.js";
542
+ } from "./index-5gf2wx2c.js";
543
543
  import {
544
544
  readTailJsonl,
545
545
  readTailJsonlDetailed,
@@ -560,13 +560,13 @@ import {
560
560
  resolveLinkDir,
561
561
  sanitizeLinkId,
562
562
  writeLinkPointer
563
- } from "./index-3atkcqpb.js";
563
+ } from "./index-ry5g9s8d.js";
564
564
  import {
565
565
  atomicWriteFile
566
- } from "./index-5rkh69f3.js";
566
+ } from "./index-4gmxdkcd.js";
567
567
  import {
568
568
  withEvidenceLock
569
- } from "./index-e8k0v19e.js";
569
+ } from "./index-xmbtwtgw.js";
570
570
  import {
571
571
  assertProjectRoot
572
572
  } from "./index-t7hmqgjy.js";
@@ -580,7 +580,7 @@ import {
580
580
  pseudonymousRef,
581
581
  resolveLineageSalt,
582
582
  telemetry
583
- } from "./index-mtqwyjrg.js";
583
+ } from "./index-7rtq2t5n.js";
584
584
  import {
585
585
  SESSION_KEY_SEPARATOR,
586
586
  canonicalRootKey,
@@ -606,7 +606,7 @@ import {
606
606
  matchTempGrammar,
607
607
  parseTargetBasename,
608
608
  resetSwarmArtifactCache
609
- } from "./index-hfssjyxs.js";
609
+ } from "./index-yf2z4j7s.js";
610
610
  import {
611
611
  PlanSchema,
612
612
  TaskStatusSchema,
@@ -624,7 +624,7 @@ import {
624
624
  loadPluginConfig,
625
625
  loadPluginConfigWithMeta,
626
626
  resolveEpicConfig
627
- } from "./index-ngk8hpc3.js";
627
+ } from "./index-c6hyd8hg.js";
628
628
  import {
629
629
  GIT_BINARY_ENV_VAR,
630
630
  addDeferredWarning,
@@ -657,7 +657,7 @@ import {
657
657
  resolveContextWindow,
658
658
  resolveGeneratedAgentRole,
659
659
  stripKnownSwarmPrefix
660
- } from "./index-1dx5zyss.js";
660
+ } from "./index-jn4mmhqc.js";
661
661
  import {
662
662
  AGENT_TOOL_MAP,
663
663
  ALL_AGENT_NAMES,
@@ -683,7 +683,7 @@ import {
683
683
  init_agent_names,
684
684
  init_constants,
685
685
  init_tool_metadata
686
- } from "./index-py8wpe81.js";
686
+ } from "./index-hqrkr9ag.js";
687
687
  import {
688
688
  KNOWLEDGE_SCHEMA_VERSION,
689
689
  OUTCOME_BLOCK_THRESHOLD,
@@ -3457,7 +3457,7 @@ async function importLegacyPrWorkflowGateStateIfNeeded(directory, sessionID, all
3457
3457
  return null;
3458
3458
  throw error2;
3459
3459
  }
3460
- const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-59cr6gve.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3460
+ const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-cgbc0x1z.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3461
3461
  if (!legacy)
3462
3462
  return null;
3463
3463
  const namespace = workflowGateStateCoordinationNamespace(sessionID);
@@ -3544,7 +3544,7 @@ async function deleteStateWhileLocked(directory, sessionID, options = {}) {
3544
3544
  let recoveryState = null;
3545
3545
  if (!currentAuthoritative) {
3546
3546
  if (options.allowSalvagedRead) {
3547
- const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-59cr6gve.js");
3547
+ const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-cgbc0x1z.js");
3548
3548
  recoveryState = (await readPrWorkflowGateStateForRecovery(directory, normalizedSessionID))?.state ?? null;
3549
3549
  }
3550
3550
  if (!recoveryState) {
@@ -4840,6 +4840,35 @@ function composePrReviewPhaseVerdicts(directory, state, phase, ctx, exhaustive =
4840
4840
  const diagnostics = [];
4841
4841
  const satisfiedObligations = new Set;
4842
4842
  const scannedBatches = [];
4843
+ const laneFailureReasons = new Map;
4844
+ const orderObservations = phase === "reviewer" ? new Map : undefined;
4845
+ const orderObservingBatchIds = new Set;
4846
+ const recordOrderObservations = (batchId, coherence, parsed) => {
4847
+ const order = coherence?.presentationOrder;
4848
+ if (!order || !orderObservations)
4849
+ return 0;
4850
+ let recorded = 0;
4851
+ for (const [itemId, verdict] of parsed) {
4852
+ if (coherence && !coherence.validatedInventory.includes(itemId)) {
4853
+ continue;
4854
+ }
4855
+ let perItem = orderObservations.get(itemId);
4856
+ if (!perItem) {
4857
+ perItem = new Map;
4858
+ orderObservations.set(itemId, perItem);
4859
+ }
4860
+ if (!perItem.has(order)) {
4861
+ perItem.set(order, {
4862
+ classification: verdict.classification,
4863
+ severity: verdict.severity
4864
+ });
4865
+ recorded += 1;
4866
+ }
4867
+ }
4868
+ if (recorded > 0)
4869
+ orderObservingBatchIds.add(batchId);
4870
+ return recorded;
4871
+ };
4843
4872
  for (const batch of [...window].reverse()) {
4844
4873
  scannedBatches.push(batch);
4845
4874
  if (!batchMayContributeClaims(directory, state, batch, phase, requiredInventory, forbiddenSubagentSessionIds, reviewerClaims, ctx)) {
@@ -4849,15 +4878,21 @@ function composePrReviewPhaseVerdicts(directory, state, phase, ctx, exhaustive =
4849
4878
  const coherence = state.prReviewBatchCoherence?.[batch.batchId];
4850
4879
  let contributed = false;
4851
4880
  for (const qualified of recordsPassingBatchIntegrity(directory, state, batch.batchId, batch.lanes, expectedMode, batch.validatedAt, true, forbiddenSubagentSessionIds)) {
4852
- const artifact = loadArtifactPassingLaneIntegrity(directory, state, qualified.record, expectedMode, qualified.expectedWorkflowLane, ctx.revisionDigest);
4853
- if (!artifact)
4881
+ const integrityDiagnostics = [];
4882
+ const artifact = loadArtifactPassingLaneIntegrity(directory, state, qualified.record, expectedMode, qualified.expectedWorkflowLane, ctx.revisionDigest, integrityDiagnostics);
4883
+ if (!artifact) {
4884
+ const reason = integrityDiagnostics.at(-1);
4885
+ if (reason)
4886
+ laneFailureReasons.set(qualified.expectedWorkflowLane, reason);
4854
4887
  continue;
4888
+ }
4855
4889
  const declaredItems = qualified.expectedLane.reviewItemIds ?? [];
4856
4890
  const { markerRows, parsed } = parsePrReviewVerdictRows(artifact.text, declaredItems, phase, reviewerClaims);
4857
4891
  if (!verdictRowsContainOnlyAssignedIds(markerRows, declaredItems)) {
4858
4892
  appendCompositionDiagnostic(diagnostics, `${phase} lane "${qualified.expectedLane.laneId}" contains an unassigned verdict row; it contributes no claims`);
4859
4893
  continue;
4860
4894
  }
4895
+ recordOrderObservations(batch.batchId, coherence, parsed);
4861
4896
  if (declaredItems.length > 0 && parsed.size === declaredItems.length) {
4862
4897
  satisfiedObligations.add(qualified.expectedWorkflowLane);
4863
4898
  }
@@ -4884,16 +4919,56 @@ function composePrReviewPhaseVerdicts(directory, state, phase, ctx, exhaustive =
4884
4919
  if (!exhaustive && claims.size === requiredSet.size)
4885
4920
  break;
4886
4921
  }
4922
+ if (phase === "reviewer" && orderObservations) {
4923
+ const scanned = new Set(scannedBatches.map((batch) => batch.batchId));
4924
+ for (const batch of [...window].reverse()) {
4925
+ if (scanned.has(batch.batchId))
4926
+ continue;
4927
+ if (!batchMayContributeClaims(directory, state, batch, phase, requiredInventory, forbiddenSubagentSessionIds, reviewerClaims, ctx)) {
4928
+ continue;
4929
+ }
4930
+ const coherence = state.prReviewBatchCoherence?.[batch.batchId];
4931
+ if (!coherence?.presentationOrder)
4932
+ continue;
4933
+ for (const qualified of recordsPassingBatchIntegrity(directory, state, batch.batchId, batch.lanes, expectedMode, batch.validatedAt, true, forbiddenSubagentSessionIds)) {
4934
+ const artifact = loadArtifactPassingLaneIntegrity(directory, state, qualified.record, expectedMode, qualified.expectedWorkflowLane, ctx.revisionDigest);
4935
+ if (!artifact)
4936
+ continue;
4937
+ const declaredItems = qualified.expectedLane.reviewItemIds ?? [];
4938
+ const { markerRows, parsed } = parsePrReviewVerdictRows(artifact.text, declaredItems, phase, reviewerClaims);
4939
+ if (!verdictRowsContainOnlyAssignedIds(markerRows, declaredItems)) {
4940
+ continue;
4941
+ }
4942
+ recordOrderObservations(batch.batchId, coherence, parsed);
4943
+ }
4944
+ }
4945
+ }
4946
+ if (phase === "reviewer" && orderObservations) {
4947
+ for (const [itemId, claim] of claims) {
4948
+ const perItem = orderObservations.get(itemId);
4949
+ const orderA = perItem?.get("A");
4950
+ const orderB = perItem?.get("B");
4951
+ claim.orderAgreement = orderA && orderB ? orderA.classification === orderB.classification && orderA.severity === orderB.severity ? "agree" : "disagree" : "single";
4952
+ }
4953
+ }
4887
4954
  for (const obligation of new Set(scannedBatches.flatMap((batch) => batch.lanes.map((lane) => lane.workflowLane)))) {
4888
4955
  if (satisfiedObligations.has(obligation))
4889
4956
  continue;
4890
- appendCompositionDiagnostic(diagnostics, `declared ${phase} lane "${obligation}" produced no successful exact artifact`);
4957
+ const failureReason = laneFailureReasons.get(obligation);
4958
+ const laneIds = scannedBatches.flatMap((batch) => batch.lanes).filter((lane) => lane.workflowLane === obligation).map((lane) => lane.laneId);
4959
+ const journalMessage = state.prReviewVerdictRejections?.length ? requireBoundHelpers().latestPrReviewVerdictRejectionForLane(state, {
4960
+ workflowLane: obligation,
4961
+ laneIds,
4962
+ boundary: phase === "reviewer" ? "post_reviewer" : phase === "critic" ? "post_critic" : "post_explorer"
4963
+ }) : undefined;
4964
+ appendCompositionDiagnostic(diagnostics, `declared ${phase} lane "${obligation}" produced no successful exact artifact${journalMessage ? `; last rejected write_pr_review_artifact: ${journalMessage}` : ""}${failureReason ? `: ${failureReason}` : ""}`);
4891
4965
  }
4892
4966
  const composition = {
4893
4967
  claims,
4894
4968
  requiredInventory,
4895
4969
  unclaimed: requiredInventory.filter((itemId) => !claims.has(itemId)),
4896
4970
  contributingBatchIds,
4971
+ orderObservingBatchIds: phase === "reviewer" ? [...orderObservingBatchIds] : [],
4897
4972
  diagnostics
4898
4973
  };
4899
4974
  if (!exhaustive) {
@@ -11267,7 +11342,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
11267
11342
  return extracted === expectedSessionId;
11268
11343
  }
11269
11344
  async function inspectStandardWorktreeCollisionOwnership(identity) {
11270
- const collisionOwnership = await import("./worktree-collision-ownership-d145wmpg.js");
11345
+ const collisionOwnership = await import("./worktree-collision-ownership-2pmyww6g.js");
11271
11346
  return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
11272
11347
  }
11273
11348
  async function runRecoveryGit(directory, args, timeoutMs = 15000) {
@@ -11695,7 +11770,7 @@ async function precreateStandardWorktreeSession(args) {
11695
11770
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
11696
11771
  if (laneProfile) {
11697
11772
  try {
11698
- const { writeLaneProfileToDiskReal } = await import("./core-0k7t9fw0.js");
11773
+ const { writeLaneProfileToDiskReal } = await import("./core-8qgvsm6x.js");
11699
11774
  await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
11700
11775
  } catch {}
11701
11776
  }
@@ -12689,7 +12764,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
12689
12764
  }
12690
12765
  clearWorktreeMergeStatus(statusKey);
12691
12766
  try {
12692
- const { removeLaneProfileFromDiskReal } = await import("./core-0k7t9fw0.js");
12767
+ const { removeLaneProfileFromDiskReal } = await import("./core-8qgvsm6x.js");
12693
12768
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
12694
12769
  } catch {}
12695
12770
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -29031,7 +29106,7 @@ function clearCriticalShownIds(sessionID) {
29031
29106
  async function rehydratePrSubscriptions(sessionID, directory) {
29032
29107
  const map = new Map;
29033
29108
  try {
29034
- const { listActive: listActive2 } = await import("./pr-subscriptions-n1hks854.js");
29109
+ const { listActive: listActive2 } = await import("./pr-subscriptions-nqby87en.js");
29035
29110
  const records = await listActive2(directory);
29036
29111
  for (const record of records) {
29037
29112
  if (record.sessionID !== sessionID)
@@ -29161,6 +29236,7 @@ var MAX_PUSH_ATTEMPT_DIAGNOSTIC_CHARS = 500;
29161
29236
  var PUBLICATION_SCHEMA_VERSION = 1;
29162
29237
  var PUBLICATION_URL_CREDENTIALS_PATTERN = /\b([a-zA-Z][a-zA-Z0-9+.-]*:\/\/)[^\s/@:]+:[^\s/@]+@/g;
29163
29238
  var MAX_PR_REVIEW_SUBMIT_REJECTIONS = 24;
29239
+ var MAX_PR_REVIEW_VERDICT_REJECTIONS = 24;
29164
29240
  var GATE_SCHEMA_VERSION = 1;
29165
29241
  var MAX_WORKFLOW_BATCHES = 128;
29166
29242
  var MAX_PR_REVIEW_BASE_LANES_PER_BATCH = PR_REVIEW_BASE_DIMENSION_IDS.length;
@@ -29389,7 +29465,9 @@ var PrReviewMicroFamilyDispatchRecordSchema = exports_external.object({
29389
29465
  var PrReviewBatchCoherenceRecordSchema = exports_external.object({
29390
29466
  validatedInventory: exports_external.array(exports_external.string().min(1)),
29391
29467
  reviewerItemBindings: exports_external.record(exports_external.string().min(1), exports_external.string().regex(/^[0-9a-f]{64}$/)).optional(),
29392
- reviewerItemBindingKeyEncoding: exports_external.literal("prefixed-v1").optional()
29468
+ reviewerItemBindingKeyEncoding: exports_external.literal("prefixed-v1").optional(),
29469
+ presentationOrder: exports_external.enum(["A", "B"]).optional(),
29470
+ orderUnstableItemIds: exports_external.array(exports_external.string().min(1)).optional()
29393
29471
  }).passthrough();
29394
29472
  var PrFeedbackScopeDeclarationRecordSchema = exports_external.object({
29395
29473
  taskId: exports_external.string().regex(/^\d+\.\d+(?:\.\d+)*$/),
@@ -29474,6 +29552,14 @@ var PrWorkflowGateStateSchema = exports_external.object({
29474
29552
  at: exports_external.number(),
29475
29553
  message: exports_external.string().min(1).max(300)
29476
29554
  }).strict()).max(MAX_PR_REVIEW_SUBMIT_REJECTIONS).optional(),
29555
+ prReviewVerdictRejections: exports_external.array(exports_external.object({
29556
+ sessionId: exports_external.string().min(1).max(200),
29557
+ laneId: exports_external.string().min(1).max(200).optional(),
29558
+ workflowLane: exports_external.string().min(1).max(200).optional(),
29559
+ boundary: exports_external.enum(["post_explorer", "post_reviewer", "post_critic"]).optional(),
29560
+ at: exports_external.number(),
29561
+ message: exports_external.string().min(1).max(300)
29562
+ }).passthrough()).max(MAX_PR_REVIEW_VERDICT_REJECTIONS).optional(),
29477
29563
  prReviewArtifactBoundaries: exports_external.array(exports_external.enum(["post_explorer", "post_reviewer", "post_critic"])).max(3).optional(),
29478
29564
  prReviewHandoffPath: exports_external.string().min(1).optional(),
29479
29565
  prReviewHandoffRequired: exports_external.boolean().optional(),
@@ -29685,6 +29771,73 @@ function latestPrReviewSubmitRejectionMessage(state, childSessionId) {
29685
29771
  }
29686
29772
  return;
29687
29773
  }
29774
+ async function recordPrReviewVerdictRejection(directory, sessionID, message, attribution) {
29775
+ try {
29776
+ const session = sessionID.trim();
29777
+ if (!session)
29778
+ return;
29779
+ const laneId = attribution?.laneId?.trim();
29780
+ const workflowLane = attribution?.workflowLane?.trim();
29781
+ const boundary = attribution?.boundary;
29782
+ const existing = await readPrWorkflowGateStateFromDisk3(directory, session);
29783
+ if (!existing || existing.mode !== "PR_REVIEW")
29784
+ return;
29785
+ const bounded = redactSecrets(message.replace(PUBLICATION_URL_CREDENTIALS_PATTERN, "$1[REDACTED:url_credentials]@")).slice(0, 300);
29786
+ await withSessionStateMutation(directory, session, async () => {
29787
+ const locked = await readPrWorkflowGateStateFromDisk3(directory, session);
29788
+ if (!locked || locked.mode !== "PR_REVIEW")
29789
+ return;
29790
+ const prior = locked.prReviewVerdictRejections ?? [];
29791
+ const newestForSession = prior.filter((entry) => entry.sessionId === session).at(-1);
29792
+ if (newestForSession?.message === bounded && newestForSession?.boundary === boundary)
29793
+ return;
29794
+ const journal = [
29795
+ ...prior,
29796
+ {
29797
+ sessionId: session,
29798
+ ...laneId ? { laneId } : {},
29799
+ ...workflowLane ? { workflowLane } : {},
29800
+ ...boundary ? { boundary } : {},
29801
+ at: Date.now(),
29802
+ message: bounded
29803
+ }
29804
+ ].slice(-MAX_PR_REVIEW_VERDICT_REJECTIONS);
29805
+ await writeStateWhileLocked(directory, {
29806
+ ...locked,
29807
+ prReviewVerdictRejections: journal,
29808
+ updatedAt: isoNow()
29809
+ });
29810
+ });
29811
+ } catch {}
29812
+ }
29813
+ function latestPrReviewVerdictRejectionForLane(state, matchers) {
29814
+ const journal = state.prReviewVerdictRejections;
29815
+ if (!journal?.length)
29816
+ return;
29817
+ const laneIds = matchers.laneIds?.length ? new Set(matchers.laneIds) : undefined;
29818
+ for (let index = journal.length - 1;index >= 0; index--) {
29819
+ const entry = journal[index];
29820
+ if (!entry)
29821
+ continue;
29822
+ if (matchers.workflowLane && entry.workflowLane === matchers.workflowLane)
29823
+ return entry.message;
29824
+ if (laneIds && entry.laneId && laneIds.has(entry.laneId))
29825
+ return entry.message;
29826
+ }
29827
+ if (matchers.boundary) {
29828
+ for (let index = journal.length - 1;index >= 0; index--) {
29829
+ const entry = journal[index];
29830
+ if (entry?.boundary === matchers.boundary)
29831
+ return entry.message;
29832
+ }
29833
+ }
29834
+ for (let index = journal.length - 1;index >= 0; index--) {
29835
+ const entry = journal[index];
29836
+ if (entry && !entry.boundary)
29837
+ return entry.message;
29838
+ }
29839
+ return;
29840
+ }
29688
29841
  async function submitPrReviewResultCore(directory, childSessionId, input) {
29689
29842
  const child = childSessionId.trim();
29690
29843
  const parsedResult = PrReviewLaneResultEnvelopeSchema.safeParse(input.result);
@@ -31806,13 +31959,15 @@ function pruneWorkflowBatches(directory, state, revisionDigest) {
31806
31959
  for (const batch of validationBatches) {
31807
31960
  newestBatchIdByPhase.set(batch.phase, batch.batchId);
31808
31961
  }
31809
- const contributingReviewerBatchIds = new Set(composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx, true).contributingBatchIds);
31962
+ const exhaustiveReviewerComposition = composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx, true);
31963
+ const contributingReviewerBatchIds = new Set(exhaustiveReviewerComposition.contributingBatchIds);
31964
+ const orderObservingReviewerBatchIds = new Set(exhaustiveReviewerComposition.orderObservingBatchIds);
31810
31965
  const survivingValidation = validationBatches.filter((batch) => {
31811
31966
  if (batch.phase === "council" || batch.phase === "critic")
31812
31967
  return true;
31813
31968
  if (newestBatchIdByPhase.get(batch.phase) === batch.batchId)
31814
31969
  return true;
31815
- return contributingReviewerBatchIds.has(batch.batchId);
31970
+ return contributingReviewerBatchIds.has(batch.batchId) || orderObservingReviewerBatchIds.has(batch.batchId);
31816
31971
  });
31817
31972
  if (survivingBase.length === baseBatches.length && survivingValidation.length === validationBatches.length) {
31818
31973
  return null;
@@ -31911,6 +32066,11 @@ async function recordPrReviewMicroFamilyDispatch(directory, sessionID, lanes, op
31911
32066
  await persistState(directory, nextState);
31912
32067
  return nextState;
31913
32068
  }
32069
+ function derivePrReviewOrderUnstableItemsForState(directory, state, ctx, assignedItems) {
32070
+ const assigned = new Set(assignedItems);
32071
+ const composition = composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx);
32072
+ return [...composition.claims.entries()].filter(([itemId, claim]) => claim.orderAgreement === "disagree" && assigned.has(itemId)).map(([itemId]) => itemId).sort();
32073
+ }
31914
32074
  async function recordPrReviewValidationBatch(directory, sessionID, phase, lanes, options) {
31915
32075
  let state = await bindPrWorkflowHead(directory, sessionID, options.prHeadSha);
31916
32076
  if (state.mode !== "PR_REVIEW")
@@ -31958,9 +32118,20 @@ async function recordPrReviewValidationBatch(directory, sessionID, phase, lanes,
31958
32118
  const retained = phase === "reviewer" ? previous.filter((batch) => batch.phase !== "critic" || Boolean(state.prReviewBatchCoherence?.[batch.batchId]?.reviewerItemBindings)) : previous;
31959
32119
  const retainedIds = new Set(retained.map((batch) => batch.batchId));
31960
32120
  const coherence = Object.fromEntries(Object.entries(state.prReviewBatchCoherence ?? {}).filter(([id]) => retainedIds.has(id)));
32121
+ const retainedState = {
32122
+ ...state,
32123
+ prReviewValidationBatches: retained
32124
+ };
32125
+ const presentationOrder = phase === "reviewer" ? prReviewPhaseWindow2(retainedState, "reviewer").length % 2 === 0 ? "A" : "B" : undefined;
32126
+ if (phase === "reviewer" && options.expectedPresentationOrder !== undefined && options.expectedPresentationOrder !== presentationOrder) {
32127
+ throw new Error(`BLOCKED: PR_REVIEW reviewer presentation order derives as "${presentationOrder}" but the dispatch prompt was built for "${options.expectedPresentationOrder}"; re-derive the order and retry the dispatch`);
32128
+ }
32129
+ const orderUnstableItemIds = phase === "critic" ? derivePrReviewOrderUnstableItemsForState(directory, retainedState, ctx, normalizedLanes.flatMap((lane) => lane.reviewItemIds ?? [])) : undefined;
31961
32130
  if (validatedInventory) {
31962
32131
  coherence[batchId] = {
31963
32132
  validatedInventory,
32133
+ ...presentationOrder ? { presentationOrder } : {},
32134
+ ...orderUnstableItemIds?.length ? { orderUnstableItemIds } : {},
31964
32135
  ...reviewerItemBindings ? {
31965
32136
  reviewerItemBindings,
31966
32137
  reviewerItemBindingKeyEncoding: "prefixed-v1"
@@ -35247,7 +35418,8 @@ bindPrReviewTranscriptAdapterHelpers({
35247
35418
  prReviewPhaseWindow: prReviewPhaseWindow2,
35248
35419
  batchMayContributeClaims: batchMayContributeClaims2,
35249
35420
  recordsPassingBatchIntegrity: recordsPassingBatchIntegrity3,
35250
- loadArtifactPassingLaneIntegrity: loadArtifactPassingLaneIntegrity2
35421
+ loadArtifactPassingLaneIntegrity: loadArtifactPassingLaneIntegrity2,
35422
+ latestPrReviewVerdictRejectionForLane
35251
35423
  });
35252
35424
  function noActiveGateError(sessionID) {
35253
35425
  return new Error(`BLOCKED: no active PR workflow gate for session "${normalizeSessionID(sessionID)}". ` + `The gate is activated by running \`/swarm pr-review <pr-ref>\` (PR_REVIEW) or \`/swarm pr-feedback <pr-ref>\` (PR_FEEDBACK), ` + `or by the first dispatch_lanes_async call with mode "swarm-pr-review:*" / "swarm-pr-feedback:*".`);
@@ -36175,6 +36347,29 @@ function derivePrReviewCandidateInventory2(directory, state, ctx) {
36175
36347
  ctx.candidateInventory = candidateIds.length > 0 ? candidateIds.sort() : [PR_REVIEW_CLEAN_SENTINEL_ID];
36176
36348
  return ctx.candidateInventory;
36177
36349
  }
36350
+ var PR_REVIEW_STATUS_REASON_MAX_CHARS = 240;
36351
+ function boundPrReviewStatusReason(error2) {
36352
+ const message = error2 instanceof Error ? error2.message : String(error2 ?? "unknown error");
36353
+ const cleaned = message.replace(/[\p{Cc}]/gu, " ").replace(/[`<>]/g, " ").replace(/\s+/g, " ").trim();
36354
+ return cleaned.length > PR_REVIEW_STATUS_REASON_MAX_CHARS ? `${cleaned.slice(0, PR_REVIEW_STATUS_REASON_MAX_CHARS)}\u2026` : cleaned;
36355
+ }
36356
+ async function derivePrReviewCandidateInventoryForStatus(directory, state) {
36357
+ if (!state.prHeadSha) {
36358
+ return {
36359
+ state: "unavailable",
36360
+ reason: "active PR_REVIEW workflow is not bound to a PR head"
36361
+ };
36362
+ }
36363
+ try {
36364
+ const ctx = await createPrReviewGateContext2(directory, state);
36365
+ return {
36366
+ state: "available",
36367
+ inventory: derivePrReviewCandidateInventory2(directory, state, ctx)
36368
+ };
36369
+ } catch (error2) {
36370
+ return { state: "unavailable", reason: boundPrReviewStatusReason(error2) };
36371
+ }
36372
+ }
36178
36373
  function appendBoundedCandidateIssue(issues, message) {
36179
36374
  if (issues.length < MAX_CANDIDATE_ISSUES_PER_ARTIFACT - 1) {
36180
36375
  issues.push(message.slice(0, MAX_BASE_COVERAGE_DIAGNOSTIC_CHARS2));
@@ -36471,6 +36666,33 @@ async function readAuthoritativePrReviewCriticVerdicts(directory, sessionID) {
36471
36666
  const ctx = await createPrReviewGateContext2(directory, state);
36472
36667
  return authoritativeCriticVerdictsForGate(directory, state, ctx, "write_pr_review_artifact critic settlement");
36473
36668
  }
36669
+ async function derivePrReviewPresentationOrder(directory, sessionID) {
36670
+ const state = await requireBoundState2(directory, sessionID, "PR_REVIEW");
36671
+ const previous = state.prReviewValidationBatches ?? [];
36672
+ const effective = previous.length >= MAX_WORKFLOW_BATCHES ? await prunePrWorkflowBatchesForCapacity(directory, state, undefined) : state;
36673
+ return prReviewPhaseWindow2(effective, "reviewer").length % 2 === 0 ? "A" : "B";
36674
+ }
36675
+ async function derivePrReviewOrderUnstableItems(directory, sessionID) {
36676
+ const state = await requireBoundState2(directory, sessionID, "PR_REVIEW");
36677
+ const ctx = await createPrReviewGateContext2(directory, state);
36678
+ const composition = composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx);
36679
+ const newestStampedBatchId = [...state.prReviewValidationBatches ?? []].reverse().find((batch) => (state.prReviewBatchCoherence?.[batch.batchId]?.orderUnstableItemIds?.length ?? 0) > 0)?.batchId;
36680
+ const stamped = newestStampedBatchId ? state.prReviewBatchCoherence?.[newestStampedBatchId]?.orderUnstableItemIds : undefined;
36681
+ if (stamped && stamped.length > 0)
36682
+ return [...new Set(stamped)].sort();
36683
+ return [...composition.claims.entries()].filter(([, claim]) => claim.orderAgreement === "disagree").map(([itemId]) => itemId).sort();
36684
+ }
36685
+ async function readAuthoritativePrReviewOrderAgreement(directory, sessionID) {
36686
+ const state = await requireBoundState2(directory, sessionID, "PR_REVIEW");
36687
+ const ctx = await createPrReviewGateContext2(directory, state);
36688
+ const composition = composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx);
36689
+ const agreements = new Map;
36690
+ for (const [itemId, claim] of composition.claims) {
36691
+ if (claim.orderAgreement)
36692
+ agreements.set(itemId, claim.orderAgreement);
36693
+ }
36694
+ return agreements;
36695
+ }
36474
36696
  function derivePrReviewCriticInventoryForCoverageGate(directory, state, ctx, origin) {
36475
36697
  const reviewer = composePrReviewPhaseVerdicts(directory, state, "reviewer", ctx);
36476
36698
  if (reviewer.unclaimed.length > 0) {
@@ -37492,7 +37714,8 @@ async function readPrWorkflowGateStateForRecovery(directory, sessionID) {
37492
37714
  schemaErrors,
37493
37715
  disclosure,
37494
37716
  revisionSalvageable: salvagedRevision.success,
37495
- armedShapeUnreadable
37717
+ armedShapeUnreadable,
37718
+ prReviewProjectionDropped: true
37496
37719
  };
37497
37720
  }
37498
37721
 
@@ -45885,9 +46108,9 @@ function hashContent(content) {
45885
46108
  return createHash30("sha1").update(content).digest("hex");
45886
46109
  }
45887
46110
  async function loadConfigForPolicyCurator(directory) {
45888
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-cr120ar5.js");
46111
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-x892aatt.js");
45889
46112
  try {
45890
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-rd9th57y.js");
46113
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-bpq6z8qe.js");
45891
46114
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
45892
46115
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
45893
46116
  } catch {
@@ -48945,7 +49168,7 @@ async function resolveCuratorLLMDelegate(directory, mode, sessionId) {
48945
49168
  const seam = _internals50.createCuratorLLMDelegate;
48946
49169
  if (seam)
48947
49170
  return seam(directory, mode, sessionId);
48948
- const { createCuratorLLMDelegate } = await import("./curator-llm-factory-8gt3mvg9.js");
49171
+ const { createCuratorLLMDelegate } = await import("./curator-llm-factory-d17ybmgm.js");
48949
49172
  return createCuratorLLMDelegate(directory, mode, sessionId);
48950
49173
  }
48951
49174
  async function reconcileCloseTerminalStateForPlan(directory, targetPlan, options) {
@@ -49340,7 +49563,7 @@ async function runFinalizeStage(ctx) {
49340
49563
  }
49341
49564
  }
49342
49565
  try {
49343
- const { CuratorConfigSchema: CCS } = await import("./schema-cr120ar5.js");
49566
+ const { CuratorConfigSchema: CCS } = await import("./schema-x892aatt.js");
49344
49567
  const { config: pmLoadedConfig } = _internals50.loadPluginConfigWithMeta(ctx.directory);
49345
49568
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
49346
49569
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -53373,7 +53596,7 @@ function serializeAgentSession(s) {
53373
53596
  }
53374
53597
  async function writeSnapshot(directory, state) {
53375
53598
  try {
53376
- const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-xzrahhsb.js");
53599
+ const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-x9b4t9sk.js");
53377
53600
  await ensureSnapshotCoordinationReady(directory);
53378
53601
  const snapshot = {
53379
53602
  version: 3,
@@ -56394,7 +56617,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
56394
56617
  };
56395
56618
  }
56396
56619
  async function sweepActiveNearDuplicates(directory, options = {}) {
56397
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-rd9th57y.js");
56620
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-bpq6z8qe.js");
56398
56621
  const { config } = loadPluginConfigWithMeta2(directory);
56399
56622
  const sweepConfig = config.learning?.dedup_sweep;
56400
56623
  if (sweepConfig?.enabled === false)
@@ -57518,7 +57741,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
57518
57741
  }
57519
57742
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
57520
57743
  try {
57521
- const skillModule = await import("./skill-generator-svs4k0g8.js");
57744
+ const skillModule = await import("./skill-generator-p71b6h5k.js");
57522
57745
  for (const cand of skillCandidates) {
57523
57746
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
57524
57747
  continue;
@@ -57990,7 +58213,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
57990
58213
  } catch {}
57991
58214
  }
57992
58215
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
57993
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-2d7g3hs0.js");
58216
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-6sgrjbcj.js");
57994
58217
  for (const { id } of contradictedEntries) {
57995
58218
  try {
57996
58219
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -58822,7 +59045,7 @@ async function runCuratorPostMortem(directory, options = {}) {
58822
59045
  warnings.push("Failed to collect knowledge summary.");
58823
59046
  }
58824
59047
  try {
58825
- const { getScanStatus } = await import("./scan-cursor-t26xmfhd.js");
59048
+ const { getScanStatus } = await import("./scan-cursor-sphr9phs.js");
58826
59049
  const scanStatus = await getScanStatus(directory);
58827
59050
  if (scanStatus.remaining_estimate > 0) {
58828
59051
  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.`);
@@ -58994,9 +59217,9 @@ var _internals72 = {
58994
59217
  verifyPostMortemKnowledgeActions,
58995
59218
  repairPostMortemActions,
58996
59219
  loadDefaultKnowledgeConfig: async (directory) => {
58997
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-cr120ar5.js");
59220
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-x892aatt.js");
58998
59221
  try {
58999
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-rd9th57y.js");
59222
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-bpq6z8qe.js");
59000
59223
  const loaded = loadPluginConfigWithMeta2(directory);
59001
59224
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
59002
59225
  } catch {
@@ -59004,11 +59227,11 @@ var _internals72 = {
59004
59227
  }
59005
59228
  },
59006
59229
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
59007
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-kwwnkyr7.js");
59230
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-hh0n9wgz.js");
59008
59231
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
59009
59232
  },
59010
59233
  checkHivePromotions: async (entries2, knowledgeConfig, directory) => {
59011
- const { checkHivePromotions } = await import("./hive-promoter-90svfzvs.js");
59234
+ const { checkHivePromotions } = await import("./hive-promoter-36yhdfre.js");
59012
59235
  return checkHivePromotions(entries2, knowledgeConfig, directory);
59013
59236
  },
59014
59237
  applyProposalTriage: async (directory, triage) => {
@@ -59017,7 +59240,7 @@ var _internals72 = {
59017
59240
  activateProposal,
59018
59241
  listSkills: listSkills2,
59019
59242
  sanitizeSlug
59020
- } = await import("./skill-generator-svs4k0g8.js");
59243
+ } = await import("./skill-generator-p71b6h5k.js");
59021
59244
  const result = {
59022
59245
  approved: [],
59023
59246
  rejected: [],
@@ -59059,7 +59282,7 @@ var _internals72 = {
59059
59282
  return result;
59060
59283
  },
59061
59284
  readPriorDriftReports: async (directory) => {
59062
- const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-a5142x0d.js");
59285
+ const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-3gjycbkv.js");
59063
59286
  return readPriorDriftReports2(directory);
59064
59287
  },
59065
59288
  readSwarmKnowledge: (directory) => readKnowledge(resolveSwarmKnowledgePath(directory))
@@ -67503,7 +67726,7 @@ function wireCloseInternals() {
67503
67726
  archiveEvidence,
67504
67727
  endAgentSession,
67505
67728
  flushAndDrainTelemetry: async () => {
67506
- const { flushAndDrainTelemetry } = await import("./telemetry-qaymh4gg.js");
67729
+ const { flushAndDrainTelemetry } = await import("./telemetry-vapc5q4p.js");
67507
67730
  return flushAndDrainTelemetry();
67508
67731
  },
67509
67732
  finalizeContextTelemetry,
@@ -69329,9 +69552,9 @@ var _internals80 = {
69329
69552
  loadPluginConfigWithMeta,
69330
69553
  loadCuratorDeps: async () => {
69331
69554
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate }] = await Promise.all([
69332
- import("./schema-cr120ar5.js"),
69333
- import("./curator-kwwnkyr7.js"),
69334
- import("./curator-llm-factory-8gt3mvg9.js")
69555
+ import("./schema-x892aatt.js"),
69556
+ import("./curator-hh0n9wgz.js"),
69557
+ import("./curator-llm-factory-d17ybmgm.js")
69335
69558
  ]);
69336
69559
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate };
69337
69560
  }
@@ -71781,7 +72004,7 @@ async function computeCurationDiagnostics(directory, entries2) {
71781
72004
  let scanCompleted = false;
71782
72005
  let scanRemaining = 0;
71783
72006
  try {
71784
- const { getScanStatus } = await import("./scan-cursor-t26xmfhd.js");
72007
+ const { getScanStatus } = await import("./scan-cursor-sphr9phs.js");
71785
72008
  const status = await getScanStatus(directory);
71786
72009
  scanGeneration = status.generation;
71787
72010
  scanCompleted = status.completed;
@@ -71789,19 +72012,19 @@ async function computeCurationDiagnostics(directory, entries2) {
71789
72012
  } catch {}
71790
72013
  let configMatch = null;
71791
72014
  try {
71792
- const { isLinked: isLinked2 } = await import("./knowledge-link-srnt95wh.js");
72015
+ const { isLinked: isLinked2 } = await import("./knowledge-link-8bn2b7vr.js");
71793
72016
  if (isLinked2(directory)) {
71794
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-cr120ar5.js");
72017
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-x892aatt.js");
71795
72018
  let config;
71796
72019
  try {
71797
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-rd9th57y.js");
72020
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-bpq6z8qe.js");
71798
72021
  const loaded = loadPluginConfigWithMeta2(directory);
71799
72022
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
71800
72023
  } catch {
71801
72024
  config = KnowledgeConfigSchema2.parse({});
71802
72025
  }
71803
72026
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
71804
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-8j6qn6nt.js");
72027
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-5hm6328s.js");
71805
72028
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
71806
72029
  const cohortFp = await readCohortConfigFingerprint(directory);
71807
72030
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -73250,7 +73473,7 @@ async function handleDoctorCommand(directory, args) {
73250
73473
  const result = runConfigDoctor(config, directory, planParallelizationEnabled);
73251
73474
  let output;
73252
73475
  if (enableAutoFix && result.hasAutoFixableIssues) {
73253
- const { runConfigDoctorWithFixes } = await import("./config-doctor-3ghvthh5.js");
73476
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-vetg215g.js");
73254
73477
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
73255
73478
  applyLossy: true
73256
73479
  });
@@ -73288,7 +73511,7 @@ async function handleDoctorCommand(directory, args) {
73288
73511
  `;
73289
73512
  }
73290
73513
  try {
73291
- const { runModelPreflight } = await import("./model-preflight-4w4wd6dj.js");
73514
+ const { runModelPreflight } = await import("./model-preflight-k2bw7rt1.js");
73292
73515
  const preflight = await runModelPreflight(config, swarmState.opencodeClient, { generatedAgentNames: swarmState.generatedAgentNames });
73293
73516
  const missingSelection = preflight.resolutions.filter((resolution) => resolution.status === "missing-selection");
73294
73517
  const unresolved = preflight.catalogAvailable ? preflight.resolutions.filter((resolution) => resolution.status === "unresolved") : [];
@@ -73322,7 +73545,7 @@ async function handleDoctorCommand(directory, args) {
73322
73545
  }
73323
73546
  } catch {}
73324
73547
  try {
73325
- const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-11nsf9tz.js");
73548
+ const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-1d465vkg.js");
73326
73549
  output += await renderKnowledgeReceiptPhaseIdSection(directory, enableAutoFix);
73327
73550
  } catch {}
73328
73551
  const strayDirs = detectStraySwarmDirs(directory);
@@ -73818,7 +74041,7 @@ var BACKGROUND_DELEGATION_NAMESPACE = "background.pending-delegation";
73818
74041
  var LEGACY_LEAN_STATE_FILE = "turbo-state.json";
73819
74042
  var MAX_LEGACY_LEAN_STATE_BYTES = 4 * 1024 * 1024;
73820
74043
  var UNSETTLED_WAL_STATES2 = new Set(["DISPATCHED", "PREPARED", "unreadable"]);
73821
- var EPIC_HOST_UNSUPPORTED_MESSAGE = "This OpenCode host gives the plugin no SDK client (OpenCode 2 does not yet, see docs/host/v2-hook-inventory.md). Epic needs it for worktree-isolated coders and for the epic_phase_review reviewer/critic, so an epic here could neither run its coders nor complete a phase. Run the plan in Balanced, or use an OpenCode 1.x host (1.18.29+).";
74044
+ var EPIC_HOST_UNSUPPORTED_MESSAGE = "This OpenCode host gives the plugin no SDK client. Epic needs it for worktree-isolated coders and for the epic_phase_review reviewer/critic, so an epic here could neither run its coders nor complete a phase. Run the plan in Balanced, or use an OpenCode 1.x host (1.18.29+). (On OpenCode 2 the v2 adapter now ships a session-capable client, so this refusal no longer fires there \u2014 Epic on v2 is held by the #3169 child-session placement work instead.)";
73822
74045
  function refused2(reason, details, sizing) {
73823
74046
  return { status: "refused", reason, details, sizing };
73824
74047
  }
@@ -75339,7 +75562,7 @@ async function handleEvidenceCommand(directory, args) {
75339
75562
  return formatTaskEvidenceMarkdown(evidenceData);
75340
75563
  }
75341
75564
  async function handleEvidenceSummaryCommand(directory) {
75342
- const { buildEvidenceSummary } = await import("./evidence-summary-service-y2ykc6ta.js");
75565
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-rkd3yc5x.js");
75343
75566
  const artifact = await buildEvidenceSummary(directory);
75344
75567
  if (!artifact) {
75345
75568
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -99805,7 +100028,7 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
99805
100028
  }
99806
100029
  const sdkOpts = signal ? { signal } : {};
99807
100030
  try {
99808
- const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-db786kn6.js");
100031
+ const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-9teqkkp4.js");
99809
100032
  const createResult = await client.session.create({
99810
100033
  ...sessionId ? {
99811
100034
  body: {
@@ -101903,7 +102126,7 @@ async function cancelPrFeedbackLoopUnlocked(directory, sessionID, reason) {
101903
102126
  clearedEvents: []
101904
102127
  };
101905
102128
  try {
101906
- const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-59cr6gve.js");
102129
+ const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-cgbc0x1z.js");
101907
102130
  await cancelPrFeedbackPublication2(directory, sessionID, reason);
101908
102131
  } catch (err) {
101909
102132
  warn(`[pr-feedback-loop] cancelPrFeedbackPublication failed (fail-open): ${err instanceof Error ? err.message : String(err)}`);
@@ -115776,7 +115999,7 @@ async function runValidationWithTransientRetry(input, candidateContent, baseline
115776
115999
  if (!input.dispatcher) {
115777
116000
  throw new Error("no evaluation dispatcher available (cannot run validation)");
115778
116001
  }
115779
- const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-b2e89cp1.js");
116002
+ const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-rt2smh14.js");
115780
116003
  const executor = createModelEvaluationExecutor2(input.dispatcher, input.sessionId);
115781
116004
  const result = await withProtectedSetIntegrity([evalInputRoot, ...protectedRoots(input.directory)], () => _internals144.evaluateCandidateV1({
115782
116005
  projectRoot: input.directory,
@@ -118369,7 +118592,7 @@ function buildDetailedHelp(commandName, entry) {
118369
118592
  async function handleHelpCommand(ctx) {
118370
118593
  const targetCommand = ctx.args.join(" ");
118371
118594
  if (!targetCommand) {
118372
- const { buildHelpText } = await import("./index-3xj89bf0.js");
118595
+ const { buildHelpText } = await import("./index-h7275akd.js");
118373
118596
  return buildHelpText();
118374
118597
  }
118375
118598
  const tokens = targetCommand.split(/\s+/);
@@ -118383,7 +118606,7 @@ async function handleHelpCommand(ctx) {
118383
118606
  > Note: \`/swarm ${resolved.key}\` is a deprecated alias for \`/swarm ${aliasTarget}\`.` : detailed;
118384
118607
  }
118385
118608
  const similar = _internals39.findSimilarCommands(targetCommand);
118386
- const { buildHelpText: fullHelp } = await import("./index-3xj89bf0.js");
118609
+ const { buildHelpText: fullHelp } = await import("./index-h7275akd.js");
118387
118610
  if (similar.length > 0) {
118388
118611
  return `Command '/swarm ${targetCommand}' not found.
118389
118612
 
@@ -118711,7 +118934,7 @@ var COMMAND_REGISTRY = {
118711
118934
  },
118712
118935
  "guardrail explain": {
118713
118936
  handler: async (ctx) => {
118714
- const { handleGuardrailExplain } = await import("./guardrail-explain-hpgecr7x.js");
118937
+ const { handleGuardrailExplain } = await import("./guardrail-explain-8xh3r0dn.js");
118715
118938
  return handleGuardrailExplain(ctx.directory, ctx.args);
118716
118939
  },
118717
118940
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -118721,7 +118944,7 @@ var COMMAND_REGISTRY = {
118721
118944
  },
118722
118945
  "guardrail reset": {
118723
118946
  handler: async (ctx) => {
118724
- const { handleGuardrailReset } = await import("./guardrail-reset-a3xv675m.js");
118947
+ const { handleGuardrailReset } = await import("./guardrail-reset-m5qbg30j.js");
118725
118948
  return handleGuardrailReset(ctx.args, ctx.sessionID);
118726
118949
  },
118727
118950
  description: "Reset one exact active invocation/action circuit after repair",
@@ -118742,7 +118965,7 @@ var COMMAND_REGISTRY = {
118742
118965
  },
118743
118966
  "guardrail-log": {
118744
118967
  handler: async (ctx) => {
118745
- const { handleGuardrailLog } = await import("./guardrail-log-g6krx0s2.js");
118968
+ const { handleGuardrailLog } = await import("./guardrail-log-jrey2myg.js");
118746
118969
  return handleGuardrailLog(ctx.directory, ctx.args);
118747
118970
  },
118748
118971
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -119140,7 +119363,7 @@ var COMMAND_REGISTRY = {
119140
119363
  epic: {
119141
119364
  handler: (ctx) => handleEpicCommand(ctx.directory, ctx.args, ctx.sessionID),
119142
119365
  description: "Open, inspect, and close a plan-scoped epic (coupling-aware parallel execution of the current plan)",
119143
- details: "An epic is bound to ONE plan: `start` opens it for the current plan, `close` ends it. Requires `epic.mode.enabled: true` in config (top-level `epic` block; no `turbo` block needed \u2014 the legacy `turbo.epic` path is still accepted and migrated). `start [--force]` refuses, in order: epic-disabled-by-config, host-unsupported (the host gives the plugin no OpenCode SDK client \u2014 OpenCode 2 does not yet \u2014 so worktree-isolated coders and the phase review cannot run), no-plan / plan-ledger-unreadable, epic-already-open (idempotent for the same plan) / epic-open-for-other-plan, turbo-active (config turbo_mode, a session with Turbo on, or a running Lean run \u2014 Epic enables neither Lean nor Turbo and never waives per-task QA), dirty-baseline (git: uncommitted changes outside .swarm/), detached-head / epic-branch-exists (epic-branch policy), in-flight-coders (any coder dispatch, background delegation, unsettled settlement, or preserved/recovery lane), not-epic-sized (too few pending tasks, insufficient scope coverage, or insufficient effective speedup \u2014 run it in Balanced, or reshape it with the plan-shaping suggestions shown; `--force` overrides and is recorded). Non-git projects run an epic serially (one task per wave). Git epics default to `epic.commit_policy: \"epic-branch\"`: start checks out `swarm/epic/<epicKey>` and every Epic commit goes there (epic_next_wave blocks with epic-branch-mismatch, and no landing or residue is committed, while HEAD is elsewhere); `current-branch` keeps commits on the starting branch. In a git epic every coder runs in an isolated worktree (refused EPIC_ISOLATION_DEGRADED when isolation is unavailable) and lands as a `swarm(task <id>): \u2026` merge commit; main-tree files a non-coder writer (test_engineer, docs) wrote for a task are committed as residue of that task; update_task_status writes nothing to git; wave close records the commit of each task as `refs/swarm/epics/<epicKey>/tasks/<id>` (deleted at close unless `epic.retain_refs`; never pushed by default). While open, the architect calls epic_next_wave and does what its status says: it issues one wave at a time (tasks with non-conflicting declared scopes \u2014 exclusive tasks alone, at most one task per densely coupled component; phases strictly in order), the architect dispatches one Task per taskId in ONE message and runs per-task QA (pre_check_batch \u2192 reviewer + test_engineer \u2192 update_task_status(completed)), and the next epic_next_wave closes the wave (recording outcomes and declared-vs-actual divergence) and issues the next; when a phase is done it returns phase-ready-for-review \u2192 epic_phase_review \u2192 phase_complete. `close [--abandon] [--land squash|merge|none]` refuses while tasks are pending (or the epic is orphaned / unreadable) unless `--abandon`, refuses a dirty tree before landing, writes a close report (epic-report-v2, embedding the epic scorecard) to .swarm/epic/reports/ and .swarm/epic-prior/reports/ (newest 50 kept), and lands the epic branch onto the original branch: squash (default \u2014 staged, uncommitted changes for you to review and commit), merge (a --no-ff merge commit), or none (switch back only). The epic branch is kept (remove it with `git branch -D` once committed). A landing conflict is rolled back (the attempted squash or merge is undone) and the epic stays closing \u2014 rerun close to resume. `--abandon` never lands; it switches back to the original branch when the tree is clean. `status [--repair-refs]` (also bare /swarm epic) shows the epic, its waves, phases, the task components recorded with the latest wave and recorded divergence, orphan detection (plan renamed or replaced), sentinel/row repair, recorded worktree merge failures, and retires legacy Epic v1 session state once; `--repair-refs` re-adopts task commits a rebase or amend made unreachable from HEAD. `report [<key>|last] [--format json]` shows the epic scorecard: live for the open epic (bare `report`), else from the close report of a past epic in .swarm/epic-prior/reports/ (`last` = newest; `<key>` = a report or epic key) \u2014 tasks completed in the epic, waves (count, width), time over closed waves (wave span, task issue\u2192resolve time, and their ratio, a concurrency factor that is NOT a speedup: it includes queueing behind serialized QA), conflicts (merge-back failures, undeclared writes), rework (extra generations, reopens), first-pass gate rates (upper bounds: the failure history is bounded), forced/sizing at start and learned hot files. Epics learn from their outcomes: undeclared writes teach learned co-writes (a task declaring D that also wrote f makes later tasks declaring D conflict with tasks on f \u2014 planner analysis only, never write authorization) and incidents (undeclared writes, merge conflicts, Stage B failures, rework, reopens) in excess of clean exposures make a file hot (a task declaring it runs alone) \u2014 undeclared writes its strongest learned co-writer explains are discounted (expansion already separates them), so one declarer writing a file is not heat; an empty history learns nothing (neutral start). Each wave close updates the posterior of the epic; close merges it into the project prior .swarm/epic-prior/learning.json (decayed per epic and by age; kept across /swarm close; `epic.learning.*`). `learning` shows what the planner learned and uses now; `prior [show]` shows the project prior; `prior reset` previews and prints a single-use confirm token (15 minutes); `prior reset --confirm=<token>` clears it. Also: clear-merge-failure <taskId> [--confirm]. The former `on` / `off` toggles, the `decide` / `last` subcommands and `calibration` (renamed `learning`) were removed.",
119366
+ details: "An epic is bound to ONE plan: `start` opens it for the current plan, `close` ends it. Requires `epic.mode.enabled: true` in config (top-level `epic` block; no `turbo` block needed \u2014 the legacy `turbo.epic` path is still accepted and migrated). `start [--force]` refuses, in order: epic-disabled-by-config, host-unsupported (the host gives the plugin no OpenCode SDK client; on OpenCode 2 the v2 adapter now ships one, so this refusal no longer fires there \u2014 v2 is held by the child-session placement work instead), no-plan / plan-ledger-unreadable, epic-already-open (idempotent for the same plan) / epic-open-for-other-plan, turbo-active (config turbo_mode, a session with Turbo on, or a running Lean run \u2014 Epic enables neither Lean nor Turbo and never waives per-task QA), dirty-baseline (git: uncommitted changes outside .swarm/), detached-head / epic-branch-exists (epic-branch policy), in-flight-coders (any coder dispatch, background delegation, unsettled settlement, or preserved/recovery lane), not-epic-sized (too few pending tasks, insufficient scope coverage, or insufficient effective speedup \u2014 run it in Balanced, or reshape it with the plan-shaping suggestions shown; `--force` overrides and is recorded). Non-git projects run an epic serially (one task per wave). Git epics default to `epic.commit_policy: \"epic-branch\"`: start checks out `swarm/epic/<epicKey>` and every Epic commit goes there (epic_next_wave blocks with epic-branch-mismatch, and no landing or residue is committed, while HEAD is elsewhere); `current-branch` keeps commits on the starting branch. In a git epic every coder runs in an isolated worktree (refused EPIC_ISOLATION_DEGRADED when isolation is unavailable) and lands as a `swarm(task <id>): \u2026` merge commit; main-tree files a non-coder writer (test_engineer, docs) wrote for a task are committed as residue of that task; update_task_status writes nothing to git; wave close records the commit of each task as `refs/swarm/epics/<epicKey>/tasks/<id>` (deleted at close unless `epic.retain_refs`; never pushed by default). While open, the architect calls epic_next_wave and does what its status says: it issues one wave at a time (tasks with non-conflicting declared scopes \u2014 exclusive tasks alone, at most one task per densely coupled component; phases strictly in order), the architect dispatches one Task per taskId in ONE message and runs per-task QA (pre_check_batch \u2192 reviewer + test_engineer \u2192 update_task_status(completed)), and the next epic_next_wave closes the wave (recording outcomes and declared-vs-actual divergence) and issues the next; when a phase is done it returns phase-ready-for-review \u2192 epic_phase_review \u2192 phase_complete. `close [--abandon] [--land squash|merge|none]` refuses while tasks are pending (or the epic is orphaned / unreadable) unless `--abandon`, refuses a dirty tree before landing, writes a close report (epic-report-v2, embedding the epic scorecard) to .swarm/epic/reports/ and .swarm/epic-prior/reports/ (newest 50 kept), and lands the epic branch onto the original branch: squash (default \u2014 staged, uncommitted changes for you to review and commit), merge (a --no-ff merge commit), or none (switch back only). The epic branch is kept (remove it with `git branch -D` once committed). A landing conflict is rolled back (the attempted squash or merge is undone) and the epic stays closing \u2014 rerun close to resume. `--abandon` never lands; it switches back to the original branch when the tree is clean. `status [--repair-refs]` (also bare /swarm epic) shows the epic, its waves, phases, the task components recorded with the latest wave and recorded divergence, orphan detection (plan renamed or replaced), sentinel/row repair, recorded worktree merge failures, and retires legacy Epic v1 session state once; `--repair-refs` re-adopts task commits a rebase or amend made unreachable from HEAD. `report [<key>|last] [--format json]` shows the epic scorecard: live for the open epic (bare `report`), else from the close report of a past epic in .swarm/epic-prior/reports/ (`last` = newest; `<key>` = a report or epic key) \u2014 tasks completed in the epic, waves (count, width), time over closed waves (wave span, task issue\u2192resolve time, and their ratio, a concurrency factor that is NOT a speedup: it includes queueing behind serialized QA), conflicts (merge-back failures, undeclared writes), rework (extra generations, reopens), first-pass gate rates (upper bounds: the failure history is bounded), forced/sizing at start and learned hot files. Epics learn from their outcomes: undeclared writes teach learned co-writes (a task declaring D that also wrote f makes later tasks declaring D conflict with tasks on f \u2014 planner analysis only, never write authorization) and incidents (undeclared writes, merge conflicts, Stage B failures, rework, reopens) in excess of clean exposures make a file hot (a task declaring it runs alone) \u2014 undeclared writes its strongest learned co-writer explains are discounted (expansion already separates them), so one declarer writing a file is not heat; an empty history learns nothing (neutral start). Each wave close updates the posterior of the epic; close merges it into the project prior .swarm/epic-prior/learning.json (decayed per epic and by age; kept across /swarm close; `epic.learning.*`). `learning` shows what the planner learned and uses now; `prior [show]` shows the project prior; `prior reset` previews and prints a single-use confirm token (15 minutes); `prior reset --confirm=<token>` clears it. Also: clear-merge-failure <taskId> [--confirm]. The former `on` / `off` toggles, the `decide` / `last` subcommands and `calibration` (renamed `learning`) were removed.",
119144
119367
  args: "start [--force] | close [--abandon] [--land squash|merge|none] | status [--repair-refs] | report [<key>|last] [--format json] | learning | prior [show|reset [--confirm=<token>]] | clear-merge-failure <taskId> [--confirm]",
119145
119368
  category: "diagnostics",
119146
119369
  toolPolicy: "human-only"
@@ -120887,7 +121110,7 @@ HARD CONSTRAINTS (apply regardless of skill load success):
120887
121110
  - 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.
120888
121111
  - 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.
120889
121112
  - 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.
120890
- - 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.
121113
+ - 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. Settle ONLY on an exact-row artifact: one row per assigned review item id, marked \`[REVIEWED]\` (reviewer) or \`[CRITIC]\` (critic), exact ids. Any trailing row naming an id you were not assigned fails settlement and voids the whole artifact; free-text epilogues are ignored.
120891
121114
  - 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.
120892
121115
  - 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.
120893
121116
  - Honor any free-text instructions that follow the closing bracket of the signal as additional reviewer focus, without weakening the validation ladder above.
@@ -124066,4 +124289,4 @@ function getAgentConfigs(config, directory, sessionId, projectContext) {
124066
124289
  return result;
124067
124290
  }
124068
124291
 
124069
- export { resetActionCircuitExternally, getBlockingActionCircuit, resolveConfiguredAgentModel, resolveRegisteredAgentModel, resolveEffectiveAgentOverride, MAX_PARALLEL_VERDICT_TASKS, computeParallelVerdict, declaresWindowsWrapperLoose, dcNormalizeCommand, dcUnwrapWrappers, dcSplitSegments, dcExtractRecursiveRmTargets, dcEvaluateRecursiveDeleteTargets, dcCheckJunctionCreation, dcExtractWindowsCmdTargets, dcExtractPowerShellTargets, getSharedClassifierGuardrailBlock, classifyCommand, resetArchitectPromptBudgetAdvisories, createArchitectAgent, createCoderAgent, GENERALIST_COUNCIL_PROMPT, SKEPTIC_COUNCIL_PROMPT, DOMAIN_EXPERT_COUNCIL_PROMPT, createCriticAgent, createCuratorAgent, createDesignerAgent, createDocsAgent, createResearcherAgent, SECURITY_CATEGORIES, createReviewerAgent, createSMEAgent, createTestEngineerAgent, _internals147 as _internals, stripSwarmPrefix, extractSwarmIdFromAgentName, resolveFallbackModel, getSwarmAgents, createAgents, resolvePrimaryAgentNames, getAgentConfigs, SWARM_COMMAND_TOOL_COMMANDS, SWARM_COMMAND_TOOL_ALLOWLIST, HUMAN_ONLY_SWARM_COMMANDS, classifySwarmCommandToolUse, classifySwarmCommandChatFallbackUse, mergeWriteAnalyses, isPowerShellShaped, isPowerShellReadOnlyPipeline, detectPosixWrites, detectWindowsWrites, resolveWriteTargets, resolveWindowsWriteAuthority, getAgentSession, parseLeanLaneIndex, computeLaneRuntimeProfile, MAX_TRACKED_STANDARD_WORKTREE_CALLS, awaitingMergeByCallID, standardWorktreeByCallID, standardWorktreeSerializationSessions, laneChildSessionAgents, recordLaneChildSession, assertTaskIdNotForeignLaneSession, getStandardWorktreeDegradationReason, resetStandardWorktreeIsolationState, checkStandardWorktreeSerializationRelease, sanitizeWorktreeTaskId, preProvisionCollisionCheck, isLaneOwnedByCurrentSession, precreateStandardWorktreeSession, preserveBackgroundWorktreeOwnershipForCallId, preserveDirtyWorktreeForCallId, preserveDirtyWorktreeAtPath, cleanupStandardWorktreeForCallId, abortStandardWorktreeDispatch, runSerializedWithMergeBacks, finishStandardWorktreeDispatch, readLaneEnvFileFromDisk, _internals24 as _internals1, redactSecrets, 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_REVIEW_SUBMIT_REJECTIONS, MAX_PR_FEEDBACK_INVENTORY_AMENDMENTS, activatePrWorkflow, appendPrWorkflowSkillContractAdvisories, readPrWorkflowGateState, recordPrReviewSubmitRejection, latestPrReviewSubmitRejectionMessage, submitPrReviewResult, withPrWorkflowCheckoutPreparationLock, withInactivePrWorkflowCheckoutRestoreLock, clearPrWorkflowGateState, terminalizePrWorkflowGateForSession2 as terminalizePrWorkflowGateForSession, PR_WORKFLOW_PROBE_SKIPPED_NO_BUDGET_REASON, collectPrWorkflowPendingLaneLiveness, settlePresumedStalePrWorkflowLanes, abortPrWorkflow, recoverArmedPrWorkflow, bindPrWorkflowHead, rebindPrFeedbackHead, bindPrReviewBase, assertCurrentCheckoutHead, assertPrReviewCleanCheckout, enforcePrWorkflowDispatchLanesAsync, PrReviewResilienceCircuitOpenError, PrReviewResilienceRetryExhaustedError, enforcePrReviewBaseDimensions, rollbackPrReviewBaseAdmissionIfUnlaunched, admitPrReviewPartialBaseCoverage2 as admitPrReviewPartialBaseCoverage, assertPrReviewBaseCoverageSettled2 as assertPrReviewBaseCoverageSettled, recordPrReviewMicroFamilyDispatch, recordPrReviewValidationBatch, assertPrReviewValidationSettled, declarePrFeedbackInventory, enforcePrFeedbackVerificationOwnership, assertPrFeedbackVerificationSettled, recordPrFeedbackStageA, recordPrFeedbackGateBatch, assertPrFeedbackGatePhaseSettled, assertPrFeedbackReadyToPublish, invalidatePrFeedbackPublication, describePrWorkflowPublicationSection, findDanglingLivePublicationGeneration, recordPrFeedbackPushAttemptResult, cancelPrFeedbackPublication, resolvePrReviewWriterRunId, markPrReviewTriggerEvaluationComplete, bindPrReviewTriggerLedger, assertPrReviewArtifactBoundary, assertPrReviewArtifactRecordsMatchAuthoritativeVerdicts, markPrReviewArtifactBoundary, markPrReviewHandoffComplete, readPrReviewFinalFindingPolicyForReport, transitionPrReviewToFeedback, declarePrFeedbackScope, resolvePrFeedbackScopeDeclaration, consumePrFeedbackScopeDeclaration, validatePrFeedbackScopeBinding, enforcePrWorkflowToolBefore, readPrReviewReentryBindingContext, hasActivePrReviewReentryAuthorization, reserveActivePrReviewReentryAuthorization, completePrWorkflow, _test_exports2 as _test_exports, normalizePrWorkflowShellCommand, describePrWorkflowRevisionDigestFailure, readPrReviewVerdictSettlementReceiptItems, readPrReviewVerdictSettlementEffectiveIds, readAuthoritativePrReviewCriticSettlements, readAuthoritativePrReviewCriticVerdicts, formatPrReviewLaneValidationFailure, validateExactStructuredReceiptCoverage2 as validateExactStructuredReceiptCoverage, validatePrReviewDiscoveryLaneCompletion2 as validatePrReviewDiscoveryLaneCompletion, validatePrWorkflowTransportRecovery, prReviewDiscoveryArtifactCoversLane, MAX_SALVAGED_SCHEMA_ERROR_CHARS, readPrWorkflowGateStateForRecovery, handleAcknowledgeSpecDriftCommand, handleAgentsCommand, handleAnalyzeCommand, handleApproveWriteCommand, handleArchiveCommand, handleAutoProceedCommand, handleBenchmarkCommand, handleBrainstormCommand, handleCheckpointCommand, DEFAULT_CI_DEADLINE_MS2 as DEFAULT_CI_DEADLINE_MS, createSignalCancellation, handleCiCommand, handleCiSimulateCommand, handleClarifyCommand, safeRealpathSync, createCuratorLLMDelegate, getCoChangePairs, startSnapshotCoordinationInitialization, ensureSnapshotCoordinationReady, retrySnapshotCoordinationInitialization, getSnapshotCoordinationStatus, beginSnapshotCoordinationReset, closeSnapshotCoordinationInitialization, markSnapshotCoordinationClosing, _snapshotCoordinationInternals, handleCloseCommand, _internals71 as _internals2, normalizeRecommendationEntryIdToken, parseKnowledgeRecommendations, parseKnowledgeRecommendationsWithDiagnostics, parseStructuredCuratorBlocks, readCuratorSummary, writeCuratorSummary, appendCuratorRecommendation, mergeCuratorPhaseSummary, filterPhaseEvents, checkPhaseCompliance, runCuratorInit, runCuratorPhase, applyCuratorKnowledgeUpdates, isHiveEligible, countDistinctProjects, checkHivePromotions, _internals75 as _internals3, createHivePromoterHook, promoteToHive, promoteFromSwarm, createMemoryGateway, handleCodebaseReviewCommand, handleConcurrencyCommand, handleConfigCommand, handleConsolidateCommand, handleCostsCommand, handleCouncilCommand, handleCurateCommand, handleDarkMatterCommand, handleDeepDiveCommand, handleDeepResearchCommand, getHostConfigDir, getPluginCachePaths, getPluginLockFilePaths, VERSION_PINNED_LEAF, discoverVersionPinnedCachePaths, readCachePackageVersion, handleDiagnoseCommand, handleDoctorCommand, handleEvidenceCommand, handleEvidenceSummaryCommand, handleExportCommand, handleFullAutoCommand, computeQualityBudget, computeSastScan, handleGateAuditCommand, handleGateStatsCommand, handleHandoffCommand, handleBlueprintValidateCommand, handleBlueprintCurrentCommand, handleBlueprintHistoryCommand, handleBlueprintDiffCommand, handleBlueprintExportCommand, handleHarnessCandidateValidateCommand, handleHarnessCandidateShowCommand, handleHarnessCandidateDiffCommand, handleHistoryCommand, handleKnowledgeQuarantineCommand, handleKnowledgeRestoreCommand, handleKnowledgeMigrateCommand, handleKnowledgeListCommand, handleKnowledgeUnactionableCommand, handleKnowledgeRetryHardeningCommand, handleLearningCommand, handleLinkCommand, searchKnowledge, symbols, 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, isCommandFailure, COMMAND_REGISTRY, VALID_COMMANDS, _internals39 as _internals4, resolveCommand, normalizeSwarmCommandInput, canonicalCommandKey, formatCommandNotFound, executeSwarmCommand };
124292
+ export { resetActionCircuitExternally, getBlockingActionCircuit, resolveConfiguredAgentModel, resolveRegisteredAgentModel, resolveEffectiveAgentOverride, MAX_PARALLEL_VERDICT_TASKS, computeParallelVerdict, declaresWindowsWrapperLoose, dcNormalizeCommand, dcUnwrapWrappers, dcSplitSegments, dcExtractRecursiveRmTargets, dcEvaluateRecursiveDeleteTargets, dcCheckJunctionCreation, dcExtractWindowsCmdTargets, dcExtractPowerShellTargets, getSharedClassifierGuardrailBlock, classifyCommand, resetArchitectPromptBudgetAdvisories, createArchitectAgent, createCoderAgent, GENERALIST_COUNCIL_PROMPT, SKEPTIC_COUNCIL_PROMPT, DOMAIN_EXPERT_COUNCIL_PROMPT, createCriticAgent, createCuratorAgent, createDesignerAgent, createDocsAgent, createResearcherAgent, SECURITY_CATEGORIES, createReviewerAgent, createSMEAgent, createTestEngineerAgent, _internals147 as _internals, stripSwarmPrefix, extractSwarmIdFromAgentName, resolveFallbackModel, getSwarmAgents, createAgents, resolvePrimaryAgentNames, getAgentConfigs, SWARM_COMMAND_TOOL_COMMANDS, SWARM_COMMAND_TOOL_ALLOWLIST, HUMAN_ONLY_SWARM_COMMANDS, classifySwarmCommandToolUse, classifySwarmCommandChatFallbackUse, mergeWriteAnalyses, isPowerShellShaped, isPowerShellReadOnlyPipeline, detectPosixWrites, detectWindowsWrites, resolveWriteTargets, resolveWindowsWriteAuthority, getAgentSession, parseLeanLaneIndex, computeLaneRuntimeProfile, MAX_TRACKED_STANDARD_WORKTREE_CALLS, awaitingMergeByCallID, standardWorktreeByCallID, standardWorktreeSerializationSessions, laneChildSessionAgents, recordLaneChildSession, assertTaskIdNotForeignLaneSession, getStandardWorktreeDegradationReason, resetStandardWorktreeIsolationState, checkStandardWorktreeSerializationRelease, sanitizeWorktreeTaskId, preProvisionCollisionCheck, isLaneOwnedByCurrentSession, precreateStandardWorktreeSession, preserveBackgroundWorktreeOwnershipForCallId, preserveDirtyWorktreeForCallId, preserveDirtyWorktreeAtPath, cleanupStandardWorktreeForCallId, abortStandardWorktreeDispatch, runSerializedWithMergeBacks, finishStandardWorktreeDispatch, readLaneEnvFileFromDisk, _internals24 as _internals1, redactSecrets, 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_REVIEW_SUBMIT_REJECTIONS, MAX_PR_REVIEW_VERDICT_REJECTIONS, MAX_PR_FEEDBACK_INVENTORY_AMENDMENTS, activatePrWorkflow, appendPrWorkflowSkillContractAdvisories, readPrWorkflowGateState, recordPrReviewSubmitRejection, latestPrReviewSubmitRejectionMessage, recordPrReviewVerdictRejection, latestPrReviewVerdictRejectionForLane, submitPrReviewResult, withPrWorkflowCheckoutPreparationLock, withInactivePrWorkflowCheckoutRestoreLock, clearPrWorkflowGateState, terminalizePrWorkflowGateForSession2 as terminalizePrWorkflowGateForSession, PR_WORKFLOW_PROBE_SKIPPED_NO_BUDGET_REASON, collectPrWorkflowPendingLaneLiveness, settlePresumedStalePrWorkflowLanes, abortPrWorkflow, recoverArmedPrWorkflow, bindPrWorkflowHead, rebindPrFeedbackHead, bindPrReviewBase, assertCurrentCheckoutHead, assertPrReviewCleanCheckout, enforcePrWorkflowDispatchLanesAsync, PrReviewResilienceCircuitOpenError, PrReviewResilienceRetryExhaustedError, enforcePrReviewBaseDimensions, rollbackPrReviewBaseAdmissionIfUnlaunched, admitPrReviewPartialBaseCoverage2 as admitPrReviewPartialBaseCoverage, assertPrReviewBaseCoverageSettled2 as assertPrReviewBaseCoverageSettled, recordPrReviewMicroFamilyDispatch, recordPrReviewValidationBatch, assertPrReviewValidationSettled, declarePrFeedbackInventory, enforcePrFeedbackVerificationOwnership, assertPrFeedbackVerificationSettled, recordPrFeedbackStageA, recordPrFeedbackGateBatch, assertPrFeedbackGatePhaseSettled, assertPrFeedbackReadyToPublish, invalidatePrFeedbackPublication, describePrWorkflowPublicationSection, findDanglingLivePublicationGeneration, recordPrFeedbackPushAttemptResult, cancelPrFeedbackPublication, resolvePrReviewWriterRunId, markPrReviewTriggerEvaluationComplete, bindPrReviewTriggerLedger, assertPrReviewArtifactBoundary, assertPrReviewArtifactRecordsMatchAuthoritativeVerdicts, markPrReviewArtifactBoundary, markPrReviewHandoffComplete, readAuthoritativeFindingPolicy, readPrReviewFinalFindingPolicyForReport, transitionPrReviewToFeedback, declarePrFeedbackScope, resolvePrFeedbackScopeDeclaration, consumePrFeedbackScopeDeclaration, validatePrFeedbackScopeBinding, enforcePrWorkflowToolBefore, readPrReviewReentryBindingContext, hasActivePrReviewReentryAuthorization, reserveActivePrReviewReentryAuthorization, completePrWorkflow, _test_exports2 as _test_exports, normalizePrWorkflowShellCommand, describePrWorkflowRevisionDigestFailure, derivePrReviewCandidateInventoryForStatus, readPrReviewVerdictSettlementReceiptItems, readPrReviewVerdictSettlementEffectiveIds, readAuthoritativePrReviewCriticSettlements, readAuthoritativePrReviewCriticVerdicts, derivePrReviewPresentationOrder, derivePrReviewOrderUnstableItems, readAuthoritativePrReviewOrderAgreement, formatPrReviewLaneValidationFailure, validateExactStructuredReceiptCoverage2 as validateExactStructuredReceiptCoverage, validatePrReviewDiscoveryLaneCompletion2 as validatePrReviewDiscoveryLaneCompletion, validatePrWorkflowTransportRecovery, prReviewDiscoveryArtifactCoversLane, MAX_SALVAGED_SCHEMA_ERROR_CHARS, readPrWorkflowGateStateForRecovery, handleAcknowledgeSpecDriftCommand, handleAgentsCommand, handleAnalyzeCommand, handleApproveWriteCommand, handleArchiveCommand, handleAutoProceedCommand, handleBenchmarkCommand, handleBrainstormCommand, handleCheckpointCommand, DEFAULT_CI_DEADLINE_MS2 as DEFAULT_CI_DEADLINE_MS, createSignalCancellation, handleCiCommand, handleCiSimulateCommand, handleClarifyCommand, safeRealpathSync, createCuratorLLMDelegate, getCoChangePairs, startSnapshotCoordinationInitialization, ensureSnapshotCoordinationReady, retrySnapshotCoordinationInitialization, getSnapshotCoordinationStatus, beginSnapshotCoordinationReset, closeSnapshotCoordinationInitialization, markSnapshotCoordinationClosing, _snapshotCoordinationInternals, handleCloseCommand, _internals71 as _internals2, normalizeRecommendationEntryIdToken, parseKnowledgeRecommendations, parseKnowledgeRecommendationsWithDiagnostics, parseStructuredCuratorBlocks, readCuratorSummary, writeCuratorSummary, appendCuratorRecommendation, mergeCuratorPhaseSummary, filterPhaseEvents, checkPhaseCompliance, runCuratorInit, runCuratorPhase, applyCuratorKnowledgeUpdates, isHiveEligible, countDistinctProjects, checkHivePromotions, _internals75 as _internals3, createHivePromoterHook, promoteToHive, promoteFromSwarm, createMemoryGateway, handleCodebaseReviewCommand, handleConcurrencyCommand, handleConfigCommand, handleConsolidateCommand, handleCostsCommand, handleCouncilCommand, handleCurateCommand, handleDarkMatterCommand, handleDeepDiveCommand, handleDeepResearchCommand, getHostConfigDir, getPluginCachePaths, getPluginLockFilePaths, VERSION_PINNED_LEAF, discoverVersionPinnedCachePaths, readCachePackageVersion, handleDiagnoseCommand, handleDoctorCommand, handleEvidenceCommand, handleEvidenceSummaryCommand, handleExportCommand, handleFullAutoCommand, computeQualityBudget, computeSastScan, handleGateAuditCommand, handleGateStatsCommand, handleHandoffCommand, handleBlueprintValidateCommand, handleBlueprintCurrentCommand, handleBlueprintHistoryCommand, handleBlueprintDiffCommand, handleBlueprintExportCommand, handleHarnessCandidateValidateCommand, handleHarnessCandidateShowCommand, handleHarnessCandidateDiffCommand, handleHistoryCommand, handleKnowledgeQuarantineCommand, handleKnowledgeRestoreCommand, handleKnowledgeMigrateCommand, handleKnowledgeListCommand, handleKnowledgeUnactionableCommand, handleKnowledgeRetryHardeningCommand, handleLearningCommand, handleLinkCommand, searchKnowledge, symbols, 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, isCommandFailure, COMMAND_REGISTRY, VALID_COMMANDS, _internals39 as _internals4, resolveCommand, normalizeSwarmCommandInput, canonicalCommandKey, formatCommandNotFound, executeSwarmCommand };