opencode-swarm 7.187.3 → 7.188.1

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 (92) hide show
  1. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  2. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  3. package/dist/background/delegation-lifecycle.d.ts +4 -0
  4. package/dist/cli/{auto-checkpoint-521fehr3.js → auto-checkpoint-w2mjh5m3.js} +7 -7
  5. package/dist/cli/{checkpoint-czx5eken.js → checkpoint-eac282hg.js} +12 -12
  6. package/dist/cli/{coder-settlement-skfkfgt7.js → coder-settlement-40qspmep.js} +8 -8
  7. package/dist/cli/{config-doctor-t88fd5ra.js → config-doctor-p21xsvfn.js} +11 -11
  8. package/dist/cli/{core-fap9x47g.js → core-z7qs8s32.js} +1 -1
  9. package/dist/cli/{curation-policy-e1ce7ha8.js → curation-policy-v64ctcbd.js} +5 -5
  10. package/dist/cli/{curator-b7zzsv98.js → curator-csg36d2a.js} +35 -35
  11. package/dist/cli/{curator-drift-ea11apaw.js → curator-drift-z6c2ctqr.js} +5 -5
  12. package/dist/cli/{curator-llm-factory-758hynyn.js → curator-llm-factory-dtyyh77f.js} +35 -35
  13. package/dist/cli/{doctor-knowledge-receipt-phase-id-5768wb0n.js → doctor-knowledge-receipt-phase-id-gps8dpqr.js} +6 -6
  14. package/dist/cli/{evidence-summary-service-z2yj87tn.js → evidence-summary-service-txbkchx6.js} +15 -15
  15. package/dist/cli/{gate-evidence-m90ynftc.js → gate-evidence-bwyxrk3z.js} +5 -5
  16. package/dist/cli/{guardrail-explain-y2g82gqv.js → guardrail-explain-gxzdr8w4.js} +36 -36
  17. package/dist/cli/{guardrail-log-c50qd8sf.js → guardrail-log-ra5qbb4b.js} +6 -6
  18. package/dist/cli/{guardrail-reset-h7g9a90e.js → guardrail-reset-b0s11ban.js} +35 -35
  19. package/dist/cli/{hive-promoter-wpcn3wyz.js → hive-promoter-avvddtgc.js} +35 -35
  20. package/dist/cli/{index-bkcd3nwh.js → index-0v2svrev.js} +1 -1
  21. package/dist/cli/{index-by488z8m.js → index-41v699sv.js} +3 -3
  22. package/dist/cli/{index-sec8fwf1.js → index-4htcpbs4.js} +67 -48
  23. package/dist/cli/{index-h03j41jw.js → index-4m6k2r0v.js} +4 -4
  24. package/dist/cli/{index-naxtsh2e.js → index-4rjw95qw.js} +4 -4
  25. package/dist/cli/{index-4tmk29gc.js → index-5m06enb0.js} +1 -1
  26. package/dist/cli/{index-by7x4ty3.js → index-61pxv4sk.js} +35 -35
  27. package/dist/cli/{index-xpj149rz.js → index-7sbyvk99.js} +1 -1
  28. package/dist/cli/{index-japwz660.js → index-8pbtv6ea.js} +1 -1
  29. package/dist/cli/{index-w3xapqjq.js → index-9007eaeh.js} +3 -3
  30. package/dist/cli/{index-5ktekhxk.js → index-936d3ny7.js} +1 -1
  31. package/dist/cli/{index-02nzb100.js → index-9bjf0bhd.js} +2 -2
  32. package/dist/cli/{index-mh3nsv7v.js → index-a1tpp2fs.js} +2 -2
  33. package/dist/cli/{index-5x8zhfsq.js → index-aqe9x8ga.js} +3 -3
  34. package/dist/cli/{index-hrxr48p5.js → index-b9pz70d0.js} +2 -2
  35. package/dist/cli/{index-468s960k.js → index-c66ywect.js} +1 -1
  36. package/dist/cli/{index-a5pjm9zc.js → index-cb72p9w2.js} +2 -2
  37. package/dist/cli/{index-m3dcecc5.js → index-cdakr0yh.js} +37 -37
  38. package/dist/cli/{index-npkxp81s.js → index-cs6g43qy.js} +14 -9
  39. package/dist/cli/{index-7fekgghd.js → index-dxhd7dsr.js} +7 -7
  40. package/dist/cli/{index-ksvm96bz.js → index-edaj9qxn.js} +1 -1
  41. package/dist/cli/{index-zbv9t6p2.js → index-fdx38afm.js} +6 -6
  42. package/dist/cli/{index-45d3vpry.js → index-gy57hcy2.js} +1 -1
  43. package/dist/cli/{index-fk7s8btv.js → index-jd3hvnqn.js} +2 -2
  44. package/dist/cli/{index-ez4kkgcd.js → index-jn08bcaa.js} +3 -3
  45. package/dist/cli/{index-7ba0hdg4.js → index-mb1reyw3.js} +1 -1
  46. package/dist/cli/{index-h7p78r0w.js → index-mdbqm6w1.js} +4 -4
  47. package/dist/cli/{index-mdxrk3az.js → index-pswvtgdx.js} +3 -3
  48. package/dist/cli/{index-6551m2st.js → index-qgvmq92m.js} +2 -2
  49. package/dist/cli/{index-nsvm2j4x.js → index-rwabrcsg.js} +1 -1
  50. package/dist/cli/{index-w9p41945.js → index-swagbt0g.js} +1 -1
  51. package/dist/cli/{index-10h0jx4e.js → index-w4q0sw5g.js} +4 -4
  52. package/dist/cli/{index-6rdajskg.js → index-wkxhhyej.js} +138 -102
  53. package/dist/cli/{index-e3vbyy10.js → index-x73e0zkb.js} +1 -1
  54. package/dist/cli/{index-7t15ybzn.js → index-xrsfbr31.js} +3 -3
  55. package/dist/cli/{index-yk9vs9pw.js → index-z4zznftq.js} +2 -2
  56. package/dist/cli/{index-wvkbp1qr.js → index-zhnywrhs.js} +6 -6
  57. package/dist/cli/{index-zzgv4jy6.js → index-ztq5ag7q.js} +4 -4
  58. package/dist/cli/{index-v8ytrkrg.js → index-zvrfvtp3.js} +77 -11
  59. package/dist/cli/{index-q0am9gm3.js → index-zwgh0gty.js} +1 -1
  60. package/dist/cli/index.js +36 -36
  61. package/dist/cli/{knowledge-escalator-wzsxp6yg.js → knowledge-escalator-02z57h57.js} +12 -12
  62. package/dist/cli/{knowledge-events-dcchq50n.js → knowledge-events-yqfwghad.js} +10 -10
  63. package/dist/cli/{knowledge-link-zh9rzesj.js → knowledge-link-9gx2djyd.js} +4 -4
  64. package/dist/cli/{knowledge-store-p27r8wa9.js → knowledge-store-85rcyme4.js} +5 -5
  65. package/dist/cli/{knowledge-validator-rmtymth5.js → knowledge-validator-0fax9dq4.js} +7 -7
  66. package/dist/cli/{mcp-jr1rr2zd.js → mcp-rt2qxyc1.js} +1 -1
  67. package/dist/cli/{model-preflight-xzy5x4rt.js → model-preflight-yf57x1x7.js} +35 -35
  68. package/dist/cli/{pending-delegations-4k740a2c.js → pending-delegations-3emmnz2y.js} +7 -7
  69. package/dist/cli/{pr-subscriptions-515xdgjj.js → pr-subscriptions-mpwtbpdd.js} +7 -7
  70. package/dist/cli/{pr-workflow-gate-srpa0mds.js → pr-workflow-gate-0qzc2dbr.js} +35 -35
  71. package/dist/cli/{runner-tk1cmgzt.js → runner-x8sbydkw.js} +5 -5
  72. package/dist/cli/{scan-cursor-w89sck5y.js → scan-cursor-w0m9zjrr.js} +6 -6
  73. package/dist/cli/{schema-1mwgvrv7.js → schema-0w9q2h6j.js} +1 -1
  74. package/dist/cli/{scope-persistence-qen27qx7.js → scope-persistence-3mc615t3.js} +11 -11
  75. package/dist/cli/{server-rhz44ye9.js → server-h36cgr2m.js} +35 -35
  76. package/dist/cli/{skill-generator-05mxym3d.js → skill-generator-qaskynvt.js} +14 -14
  77. package/dist/cli/{snapshot-coordination-init-jjegs3v5.js → snapshot-coordination-init-j226zrvz.js} +35 -35
  78. package/dist/cli/{speckit-checkoff-3m04ks95.js → speckit-checkoff-6xa1f1qr.js} +3 -3
  79. package/dist/cli/{telemetry-vwxbsnye.js → telemetry-d0j31j5d.js} +1 -1
  80. package/dist/cli/{worktree-collision-ownership-0d73y8h0.js → worktree-collision-ownership-frtjkhms.js} +7 -7
  81. package/dist/cli/{worktree-isolation-d0vn38wb.js → worktree-isolation-c07qk28m.js} +35 -35
  82. package/dist/commands/close/align-stage.d.ts +26 -0
  83. package/dist/commands/close/context.d.ts +8 -0
  84. package/dist/commands/close/internals.d.ts +1 -1
  85. package/dist/commands/destructive-purge.d.ts +55 -27
  86. package/dist/commands/registry.d.ts +1 -1
  87. package/dist/hooks/knowledge-validator.d.ts +18 -1
  88. package/dist/index.js +20 -19
  89. package/dist/observability/catalog.d.ts +3 -3
  90. package/dist/telemetry.d.ts +15 -1
  91. package/dist/tools/repo-map.d.ts +4 -0
  92. package/package.json +1 -1
@@ -8,14 +8,14 @@ import {
8
8
  protectedRoots,
9
9
  redactDecisionLineForArchive,
10
10
  stableCanonicalStringify
11
- } from "./index-ez4kkgcd.js";
11
+ } from "./index-jn08bcaa.js";
12
12
  import {
13
13
  detectStraySwarmDirs,
14
14
  readDoctorArtifact,
15
15
  removeStraySwarmDir,
16
16
  resolvePlanParallelizationFlag,
17
17
  runConfigDoctor
18
- } from "./index-6551m2st.js";
18
+ } from "./index-qgvmq92m.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-7t15ybzn.js";
30
+ } from "./index-xrsfbr31.js";
31
31
  import {
32
32
  JAVA_SYMBOL_GRAMMAR,
33
33
  LANGUAGE_REGISTRY,
@@ -48,7 +48,7 @@ import {
48
48
  runEvaluation,
49
49
  runExternalTool,
50
50
  withDisposableWorktree
51
- } from "./index-e3vbyy10.js";
51
+ } from "./index-x73e0zkb.js";
52
52
  import {
53
53
  EvaluationTaskV1Schema,
54
54
  GateAuditManifestV1Schema,
@@ -65,7 +65,7 @@ import {
65
65
  saveGateAuditResult,
66
66
  savePromotionDecision,
67
67
  saveTaskSetSnapshot
68
- } from "./index-fk7s8btv.js";
68
+ } from "./index-jd3hvnqn.js";
69
69
  import {
70
70
  canonicalHash,
71
71
  canonicalJson,
@@ -81,7 +81,7 @@ import {
81
81
  alreadyCuratedThisGeneration,
82
82
  claimNextScanBatch,
83
83
  resolveCohortId
84
- } from "./index-yk9vs9pw.js";
84
+ } from "./index-z4zznftq.js";
85
85
  import {
86
86
  CURATOR_CONSOLIDATION_PROMPT,
87
87
  CURATOR_INIT_PROMPT,
@@ -100,13 +100,13 @@ import {
100
100
  getGroupCommitWriter,
101
101
  importLegacyJsonl,
102
102
  readPriorDriftReports
103
- } from "./index-45d3vpry.js";
103
+ } from "./index-gy57hcy2.js";
104
104
  import {
105
105
  assertNoUnsettledCoderDispatch,
106
106
  listCoderSettlementWalStates,
107
107
  recoverCoderSettlement,
108
108
  recoverStaleCoderSettlements
109
- } from "./index-zzgv4jy6.js";
109
+ } from "./index-ztq5ag7q.js";
110
110
  import {
111
111
  BUNDLED_PROJECT_SKILL_ROOT,
112
112
  DEFAULT_SKILL_MIN_CONFIDENCE,
@@ -127,11 +127,11 @@ import {
127
127
  retireSkill,
128
128
  selectCandidateEntries,
129
129
  syncBundledProjectSkillsIfMissingAsync
130
- } from "./index-5x8zhfsq.js";
130
+ } from "./index-aqe9x8ga.js";
131
131
  import {
132
132
  buildEscalationBriefing,
133
133
  readRecentEscalations
134
- } from "./index-wvkbp1qr.js";
134
+ } from "./index-zhnywrhs.js";
135
135
  import {
136
136
  parsePorcelainV2Snapshot,
137
137
  resolveCommitCountSince,
@@ -180,7 +180,7 @@ import {
180
180
  sweepStale,
181
181
  unsubscribe,
182
182
  updateSnapshot
183
- } from "./index-by488z8m.js";
183
+ } from "./index-41v699sv.js";
184
184
  import {
185
185
  WORKTREE_LIFECYCLE_LOCK_FILE,
186
186
  recordWorktreeProvisioningOwner,
@@ -195,6 +195,7 @@ import {
195
195
  yieldToEventLoop
196
196
  } from "./index-q7sjgr1y.js";
197
197
  import {
198
+ GIT_STATUS_ARGS,
198
199
  ROLLBACK_GIT_KIND,
199
200
  ROLLBACK_PHASE_KIND,
200
201
  backupSwarmStateBeforeReset,
@@ -204,11 +205,13 @@ import {
204
205
  executeDestructivePurge,
205
206
  issueConfirmToken,
206
207
  measureGitDestruction,
208
+ parseTrackedDirtyPaths,
207
209
  previewDestructivePurge,
210
+ recheckBeforeDestructive,
208
211
  resolveWorkingDirectory,
209
212
  swarmOverwriteCandidates,
210
213
  trackedDirtyCandidates
211
- } from "./index-v8ytrkrg.js";
214
+ } from "./index-zvrfvtp3.js";
212
215
  import {
213
216
  MAX_TRANSIENT_RETRIES,
214
217
  PlanRecoverySupersededError,
@@ -235,7 +238,7 @@ import {
235
238
  transientBackoff,
236
239
  updateTaskStatus,
237
240
  withPlanLifecycleLock
238
- } from "./index-7fekgghd.js";
241
+ } from "./index-dxhd7dsr.js";
239
242
  import {
240
243
  containsControlChars,
241
244
  containsPathTraversal,
@@ -251,7 +254,7 @@ import {
251
254
  resolveSpeckitProjection,
252
255
  validateSpeckit,
253
256
  writeProjectedSpecSync
254
- } from "./index-w9p41945.js";
257
+ } from "./index-swagbt0g.js";
255
258
  import {
256
259
  clearWorktreeMergeStatus,
257
260
  getAllWorktreeMergeFailures,
@@ -282,7 +285,7 @@ import {
282
285
  transitionTaskWorkflowEvidenceWithStatus,
283
286
  withTaskEvidenceTransaction,
284
287
  writeWorkflowWalFile
285
- } from "./index-w3xapqjq.js";
288
+ } from "./index-9007eaeh.js";
286
289
  import {
287
290
  isPathUnderSwarmWorktreeBase,
288
291
  listLiveLaneOwners,
@@ -291,7 +294,7 @@ import {
291
294
  recordLiveLaneOwner,
292
295
  removeWorktree,
293
296
  resolveWorktreeBaseDir
294
- } from "./index-ksvm96bz.js";
297
+ } from "./index-edaj9qxn.js";
295
298
  import {
296
299
  DEFAULT_STALE_DELEGATION_TIMEOUT_MS,
297
300
  DELEGATION_COMPACTION_HIGH_WATER_BYTES,
@@ -325,7 +328,7 @@ import {
325
328
  scanBackgroundCoderReservationsForAdmission,
326
329
  scanDelegationsForRecovery,
327
330
  sweepStaleDelegations
328
- } from "./index-10h0jx4e.js";
331
+ } from "./index-w4q0sw5g.js";
329
332
  import {
330
333
  MAX_EVENT_LOG_ENTRIES,
331
334
  _internals,
@@ -337,7 +340,7 @@ import {
337
340
  recordHiveKnowledgeEvent,
338
341
  recordKnowledgeEvent,
339
342
  resolveKnowledgeEventsPath
340
- } from "./index-h7p78r0w.js";
343
+ } from "./index-mdbqm6w1.js";
341
344
  import {
342
345
  commitDisplayedMembership,
343
346
  commitEmptyRetrieval,
@@ -350,7 +353,7 @@ import {
350
353
  queryLiveMemberships,
351
354
  reconcilePhaseClose,
352
355
  recordPhaseCloseIntent
353
- } from "./index-h03j41jw.js";
356
+ } from "./index-4m6k2r0v.js";
354
357
  import {
355
358
  sanitizeContextText
356
359
  } from "./index-m9zzj4ee.js";
@@ -381,18 +384,18 @@ import {
381
384
  validateActionableFields,
382
385
  validateLesson,
383
386
  validateSkillPath
384
- } from "./index-npkxp81s.js";
387
+ } from "./index-cs6g43qy.js";
385
388
  import {
386
389
  MAX_CURATION_PROPOSALS,
387
390
  authorizeCuration,
388
391
  buildConfigFingerprintInput
389
- } from "./index-nsvm2j4x.js";
392
+ } from "./index-rwabrcsg.js";
390
393
  import {
391
394
  cohortConfigFingerprint
392
395
  } from "./index-rtry5xyf.js";
393
396
  import {
394
397
  resolveWorktreeIsolationConfig
395
- } from "./index-a5pjm9zc.js";
398
+ } from "./index-cb72p9w2.js";
396
399
  import {
397
400
  RetrospectiveEvidenceSchema
398
401
  } from "./index-kbkk7vnh.js";
@@ -404,7 +407,7 @@ import {
404
407
  clearScopeBindings,
405
408
  readAuthoritativeScopeBindingSet,
406
409
  readDeclaredScopeFilesFromBindings
407
- } from "./index-02nzb100.js";
410
+ } from "./index-9bjf0bhd.js";
408
411
  import {
409
412
  clearPlanLedgerForReset,
410
413
  computePlanStructureHash,
@@ -420,7 +423,7 @@ import {
420
423
  replayFromLedgerWithStatus,
421
424
  resolvePlanningProfile,
422
425
  takeSnapshotEvent
423
- } from "./index-naxtsh2e.js";
426
+ } from "./index-4rjw95qw.js";
424
427
  import {
425
428
  CORE_EVENT_LOCKED,
426
429
  appendCoreEventSync,
@@ -430,7 +433,7 @@ import {
430
433
  hasSpecDriftAuditEvent,
431
434
  hasTaskRepairAuditEvent,
432
435
  readCoreEvents
433
- } from "./index-hrxr48p5.js";
436
+ } from "./index-b9pz70d0.js";
434
437
  import {
435
438
  DEFAULT_QA_GATES,
436
439
  computeProfileHash,
@@ -478,7 +481,7 @@ import {
478
481
  observeModelLimitResolution,
479
482
  observeStoreHealth,
480
483
  readLearningHealth
481
- } from "./index-7ba0hdg4.js";
484
+ } from "./index-mb1reyw3.js";
482
485
  import {
483
486
  appendKnowledge,
484
487
  appendRejectedLesson,
@@ -509,7 +512,7 @@ import {
509
512
  transactFile,
510
513
  transactKnowledge,
511
514
  wordBigrams
512
- } from "./index-zbv9t6p2.js";
515
+ } from "./index-fdx38afm.js";
513
516
  import {
514
517
  readTailJsonl,
515
518
  readTailJsonlDetailed,
@@ -530,13 +533,13 @@ import {
530
533
  resolveLinkDir,
531
534
  sanitizeLinkId,
532
535
  writeLinkPointer
533
- } from "./index-q0am9gm3.js";
536
+ } from "./index-zwgh0gty.js";
534
537
  import {
535
538
  atomicWriteFile
536
- } from "./index-xpj149rz.js";
539
+ } from "./index-7sbyvk99.js";
537
540
  import {
538
541
  withEvidenceLock
539
- } from "./index-bkcd3nwh.js";
542
+ } from "./index-0v2svrev.js";
540
543
  import {
541
544
  assertProjectRoot
542
545
  } from "./index-t7hmqgjy.js";
@@ -550,7 +553,7 @@ import {
550
553
  pseudonymousRef,
551
554
  resolveLineageSalt,
552
555
  telemetry
553
- } from "./index-sec8fwf1.js";
556
+ } from "./index-4htcpbs4.js";
554
557
  import {
555
558
  SESSION_KEY_SEPARATOR,
556
559
  canonicalRootKey,
@@ -590,7 +593,7 @@ import {
590
593
  loadGateOverrides,
591
594
  loadPluginConfig,
592
595
  loadPluginConfigWithMeta
593
- } from "./index-5ktekhxk.js";
596
+ } from "./index-936d3ny7.js";
594
597
  import {
595
598
  addDeferredWarning,
596
599
  advisoryWarn,
@@ -622,7 +625,7 @@ import {
622
625
  resolveContextWindow,
623
626
  resolveGeneratedAgentRole,
624
627
  stripKnownSwarmPrefix
625
- } from "./index-4tmk29gc.js";
628
+ } from "./index-5m06enb0.js";
626
629
  import {
627
630
  AGENT_TOOL_MAP,
628
631
  ALL_AGENT_NAMES,
@@ -3411,7 +3414,7 @@ async function importLegacyPrWorkflowGateStateIfNeeded(directory, sessionID, all
3411
3414
  return null;
3412
3415
  throw error2;
3413
3416
  }
3414
- const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-srpa0mds.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3417
+ const legacy = allowSalvagedImport ? (await (await import("./pr-workflow-gate-0qzc2dbr.js")).readPrWorkflowGateStateForRecovery(directory, sessionID))?.state ?? null : await readPrWorkflowGateStateFileFromDisk(filePath, sessionID);
3415
3418
  if (!legacy)
3416
3419
  return null;
3417
3420
  const namespace = workflowGateStateCoordinationNamespace(sessionID);
@@ -3498,7 +3501,7 @@ async function deleteStateWhileLocked(directory, sessionID, options = {}) {
3498
3501
  let recoveryState = null;
3499
3502
  if (!currentAuthoritative) {
3500
3503
  if (options.allowSalvagedRead) {
3501
- const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-srpa0mds.js");
3504
+ const { readPrWorkflowGateStateForRecovery } = await import("./pr-workflow-gate-0qzc2dbr.js");
3502
3505
  recoveryState = (await readPrWorkflowGateStateForRecovery(directory, normalizedSessionID))?.state ?? null;
3503
3506
  }
3504
3507
  if (!recoveryState) {
@@ -15071,7 +15074,7 @@ function isLaneOwnedByCurrentSession(branchName, expectedSessionId) {
15071
15074
  return extracted === expectedSessionId;
15072
15075
  }
15073
15076
  async function inspectStandardWorktreeCollisionOwnership(identity) {
15074
- const collisionOwnership = await import("./worktree-collision-ownership-0d73y8h0.js");
15077
+ const collisionOwnership = await import("./worktree-collision-ownership-frtjkhms.js");
15075
15078
  return collisionOwnership.inspectStandardWorktreeCollisionOwnership(identity);
15076
15079
  }
15077
15080
  async function runRecoveryGit(directory, args, timeoutMs = 15000) {
@@ -15497,7 +15500,7 @@ async function precreateStandardWorktreeSession(args) {
15497
15500
  const laneProfile = computeLaneRuntimeProfile(worktreeConfig.runtime_isolation, laneIndex, handle.worktreePath);
15498
15501
  if (laneProfile) {
15499
15502
  try {
15500
- const { writeLaneProfileToDiskReal } = await import("./core-fap9x47g.js");
15503
+ const { writeLaneProfileToDiskReal } = await import("./core-z7qs8s32.js");
15501
15504
  await writeLaneProfileToDiskReal(handle.worktreePath, laneProfile.laneIndex, laneProfile.envOverrides);
15502
15505
  } catch {}
15503
15506
  }
@@ -16476,7 +16479,7 @@ async function finishStandardWorktreeDispatch(directory, dispatch, config, callI
16476
16479
  }
16477
16480
  clearWorktreeMergeStatus(statusKey);
16478
16481
  try {
16479
- const { removeLaneProfileFromDiskReal } = await import("./core-fap9x47g.js");
16482
+ const { removeLaneProfileFromDiskReal } = await import("./core-z7qs8s32.js");
16480
16483
  await removeLaneProfileFromDiskReal(dispatch.handle.worktreePath, dispatch.laneIndex);
16481
16484
  } catch {}
16482
16485
  const state = serializationStateBySessionID.get(dispatch.parentSessionID);
@@ -24043,7 +24046,7 @@ function clearCriticalShownIds(sessionID) {
24043
24046
  async function rehydratePrSubscriptions(sessionID, directory) {
24044
24047
  const map = new Map;
24045
24048
  try {
24046
- const { listActive: listActive2 } = await import("./pr-subscriptions-515xdgjj.js");
24049
+ const { listActive: listActive2 } = await import("./pr-subscriptions-mpwtbpdd.js");
24047
24050
  const records = await listActive2(directory);
24048
24051
  for (const record of records) {
24049
24052
  if (record.sessionID !== sessionID)
@@ -36654,6 +36657,9 @@ async function handleClarifyCommand(_directory2, args) {
36654
36657
  return "[MODE: CLARIFY-SPEC] Please enter MODE: CLARIFY-SPEC and clarify the existing spec.";
36655
36658
  }
36656
36659
 
36660
+ // src/commands/close/align-stage.ts
36661
+ init_logger();
36662
+
36657
36663
  // src/commands/close/internals.ts
36658
36664
  import * as fsSync2 from "fs";
36659
36665
  import { promises as fs23 } from "fs";
@@ -37071,6 +37077,36 @@ var _internals38 = {
37071
37077
  };
37072
37078
 
37073
37079
  // src/commands/close/align-stage.ts
37080
+ function renderRecheckRefusal(reason, newDirtyPaths) {
37081
+ const listed = newDirtyPaths.slice(0, 10);
37082
+ const overflow = newDirtyPaths.length - listed.length;
37083
+ const swarmHint = newDirtyPaths.some((p) => p.startsWith(".swarm/")) ? "One or more changed paths are under .swarm/ \u2014 this project tracks swarm runtime state in git. Consider `git rm -r --cached .swarm/` and re-adding `.swarm/` to .git/info/exclude; close never confirms runtime state as destructive scope." : undefined;
37084
+ return [
37085
+ `\uD83D\uDED1 Git alignment aborted (fail-closed): ${reason} \u2014 this destructive scope was never confirmed${listed[0] ? ` (first: ${listed[0]})` : ""}.`,
37086
+ ...listed.map((p) => ` - ${p}`),
37087
+ ...overflow > 0 ? [` \u2026 and ${overflow} more`] : [],
37088
+ ...swarmHint ? [swarmHint] : [],
37089
+ "Nothing was reset or checked out; the session is finalized (finalize/archive/clean completed). Complete git alignment manually if still wanted."
37090
+ ].join(`
37091
+ `);
37092
+ }
37093
+ async function guardResetWithRecheck(real, cwd, options) {
37094
+ const recheck = recheckBeforeDestructive(cwd, options?.expectedDirtyPaths ?? []);
37095
+ if (recheck.ok) {
37096
+ return real(cwd, { pruneBranches: options?.pruneBranches });
37097
+ }
37098
+ log(`[close-align] re-check refused destructive reset: ${recheck.reason} (${recheck.newDirtyPaths.length} newly-dirty path(s))`);
37099
+ return {
37100
+ success: false,
37101
+ targetBranch: "",
37102
+ previousBranch: "",
37103
+ message: renderRecheckRefusal(recheck.reason, recheck.newDirtyPaths),
37104
+ branchDeleted: false,
37105
+ changesDiscarded: false,
37106
+ warnings: [],
37107
+ recheckRefused: true
37108
+ };
37109
+ }
37074
37110
  async function runAlignStage(ctx) {
37075
37111
  const pruneBranches = ctx.args.includes("--prune-branches");
37076
37112
  let gitAlignResult = "";
@@ -37078,8 +37114,14 @@ async function runAlignStage(ctx) {
37078
37114
  const gitStatus = _internals38.getGitRepositoryStatus(ctx.directory);
37079
37115
  if (gitStatus.isRepo) {
37080
37116
  const aggressiveResult = await _internals38.resetToMainAfterMerge(ctx.directory, {
37081
- pruneBranches
37117
+ pruneBranches,
37118
+ expectedDirtyPaths: ctx.purgeGateDirtyPaths ?? []
37082
37119
  });
37120
+ if (aggressiveResult.recheckRefused) {
37121
+ gitAlignResult = aggressiveResult.message;
37122
+ ctx.warnings.push(aggressiveResult.message);
37123
+ return { gitAlignResult, prunedBranches };
37124
+ }
37083
37125
  if (aggressiveResult.success) {
37084
37126
  gitAlignResult = aggressiveResult.message;
37085
37127
  for (const w of aggressiveResult.warnings) {
@@ -40551,9 +40593,9 @@ function hashContent(content) {
40551
40593
  return createHash27("sha1").update(content).digest("hex");
40552
40594
  }
40553
40595
  async function loadConfigForPolicyCurator(directory) {
40554
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-1mwgvrv7.js");
40596
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0w9q2h6j.js");
40555
40597
  try {
40556
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-mdxrk3az.js");
40598
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-pswvtgdx.js");
40557
40599
  const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
40558
40600
  return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
40559
40601
  } catch {
@@ -43611,7 +43653,7 @@ async function resolveCuratorLLMDelegate(directory, mode, sessionId) {
43611
43653
  const seam = _internals38.createCuratorLLMDelegate;
43612
43654
  if (seam)
43613
43655
  return seam(directory, mode, sessionId);
43614
- const { createCuratorLLMDelegate } = await import("./curator-llm-factory-758hynyn.js");
43656
+ const { createCuratorLLMDelegate } = await import("./curator-llm-factory-dtyyh77f.js");
43615
43657
  return createCuratorLLMDelegate(directory, mode, sessionId);
43616
43658
  }
43617
43659
  async function reconcileCloseTerminalStateForPlan(directory, targetPlan, options) {
@@ -44006,7 +44048,7 @@ async function runFinalizeStage(ctx) {
44006
44048
  }
44007
44049
  }
44008
44050
  try {
44009
- const { CuratorConfigSchema: CCS } = await import("./schema-1mwgvrv7.js");
44051
+ const { CuratorConfigSchema: CCS } = await import("./schema-0w9q2h6j.js");
44010
44052
  const { config: pmLoadedConfig } = _internals38.loadPluginConfigWithMeta(ctx.directory);
44011
44053
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
44012
44054
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -46192,7 +46234,7 @@ function serializeAgentSession(s) {
46192
46234
  }
46193
46235
  async function writeSnapshot(directory, state) {
46194
46236
  try {
46195
- const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-jjegs3v5.js");
46237
+ const { ensureSnapshotCoordinationReady } = await import("./snapshot-coordination-init-j226zrvz.js");
46196
46238
  await ensureSnapshotCoordinationReady(directory);
46197
46239
  const snapshot = {
46198
46240
  version: 3,
@@ -46701,6 +46743,16 @@ function isReadinessEntryClosing(entry) {
46701
46743
  }
46702
46744
  var entries = new Map;
46703
46745
  var nextAttemptId = 1;
46746
+ var supersessionStats = { count: 0 };
46747
+ function recordSupersession(trigger) {
46748
+ supersessionStats.count += 1;
46749
+ try {
46750
+ telemetry.planRecoverySuperseded({
46751
+ count: supersessionStats.count,
46752
+ trigger
46753
+ });
46754
+ } catch {}
46755
+ }
46704
46756
  function isRetryableArchiveError(error2) {
46705
46757
  const code = error2?.code;
46706
46758
  return code === "EBUSY" || code === "EPERM" || code === "EACCES";
@@ -46859,6 +46911,7 @@ function startSnapshotCoordinationInitialization(directory) {
46859
46911
  if (outcome === "superseded") {
46860
46912
  entry.state = "superseded";
46861
46913
  entry.error = "coordination initialization superseded by a newer hydration generation";
46914
+ recordSupersession("coordination_fence");
46862
46915
  return;
46863
46916
  }
46864
46917
  entry.state = "succeeded";
@@ -46867,6 +46920,7 @@ function startSnapshotCoordinationInitialization(directory) {
46867
46920
  if (entry.state !== "closing" && entries.get(root) === entry) {
46868
46921
  entry.state = "superseded";
46869
46922
  entry.error = error2.message;
46923
+ recordSupersession("plan_recovery");
46870
46924
  }
46871
46925
  } else {
46872
46926
  entry.state = "failed";
@@ -46879,7 +46933,7 @@ function startSnapshotCoordinationInitialization(directory) {
46879
46933
  entry.underlying = underlying;
46880
46934
  entries.set(root, entry);
46881
46935
  withTimeout(underlying, _snapshotCoordinationInternals.timeoutMs, new Error("coordination initialization timed out")).catch((error2) => {
46882
- if (!entry.settled && entries.get(root) === entry) {
46936
+ if (!entry.settled && entry.state !== "closing" && entries.get(root) === entry) {
46883
46937
  entry.state = "timed_out";
46884
46938
  entry.error = error2 instanceof Error ? error2.message : String(error2);
46885
46939
  advisoryWarn("[opencode-swarm] SQLite coordination initialization is still running; authority operations remain fail-closed.");
@@ -47021,6 +47075,7 @@ function runCloseGateGit(args, cwd) {
47021
47075
  cwd,
47022
47076
  encoding: "utf8",
47023
47077
  timeout: 1e4,
47078
+ maxBuffer: 1024 * 1024,
47024
47079
  windowsHide: true,
47025
47080
  stdio: ["ignore", "pipe", "pipe"]
47026
47081
  });
@@ -47039,28 +47094,8 @@ function isRealGitRepository(directory) {
47039
47094
  return fsSync7.existsSync(path59.join(directory, ".git", "HEAD"));
47040
47095
  }
47041
47096
  function evaluateClosePurgeGate(directory, swarmDir) {
47042
- const statusOutput = _closeGateInternals.runGit(["status", "--porcelain"], directory);
47043
- const dirtyPaths = [];
47044
- if (statusOutput !== null) {
47045
- for (const line of statusOutput.split(`
47046
- `)) {
47047
- if (!line)
47048
- continue;
47049
- if (line.startsWith("??"))
47050
- continue;
47051
- const filePath = line.slice(3).trim().replace(/^"|"$/g, "");
47052
- if (!filePath)
47053
- continue;
47054
- if (line.startsWith("R") && filePath.includes(" -> ")) {
47055
- for (const side of filePath.split(" -> ")) {
47056
- if (side)
47057
- dirtyPaths.push(side);
47058
- }
47059
- } else {
47060
- dirtyPaths.push(filePath);
47061
- }
47062
- }
47063
- }
47097
+ const statusOutput = _closeGateInternals.runGit([...GIT_STATUS_ARGS], directory);
47098
+ const dirtyPaths = statusOutput === null ? [] : parseTrackedDirtyPaths(statusOutput);
47064
47099
  const candidates = dirtyPaths.map((p) => ({
47065
47100
  path: path59.join(directory, p),
47066
47101
  reason: "uncommitted tracked change \u2014 discarded by git alignment"
@@ -47259,7 +47294,8 @@ This project was already finalized in a previous /swarm close run. The plan has
47259
47294
  timestamp: "",
47260
47295
  archiveDir: "",
47261
47296
  archiveSuffix: "",
47262
- args
47297
+ args,
47298
+ purgeGateDirtyPaths: purgeGate.dirtyPaths
47263
47299
  };
47264
47300
  ctx.fullAuto = options.sessionID ? _internals38.detectFullAuto(directory, options.sessionID) : false;
47265
47301
  await runFinalizeStage(ctx);
@@ -49208,7 +49244,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
49208
49244
  };
49209
49245
  }
49210
49246
  async function sweepActiveNearDuplicates(directory, options = {}) {
49211
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-mdxrk3az.js");
49247
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-pswvtgdx.js");
49212
49248
  const { config } = loadPluginConfigWithMeta2(directory);
49213
49249
  const sweepConfig = config.learning?.dedup_sweep;
49214
49250
  if (sweepConfig?.enabled === false)
@@ -50332,7 +50368,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
50332
50368
  }
50333
50369
  if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
50334
50370
  try {
50335
- const skillModule = await import("./skill-generator-05mxym3d.js");
50371
+ const skillModule = await import("./skill-generator-qaskynvt.js");
50336
50372
  for (const cand of skillCandidates) {
50337
50373
  if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
50338
50374
  continue;
@@ -50804,7 +50840,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
50804
50840
  } catch {}
50805
50841
  }
50806
50842
  if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
50807
- const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-wzsxp6yg.js");
50843
+ const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-02z57h57.js");
50808
50844
  for (const { id } of contradictedEntries) {
50809
50845
  try {
50810
50846
  await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
@@ -51636,7 +51672,7 @@ async function runCuratorPostMortem(directory, options = {}) {
51636
51672
  warnings.push("Failed to collect knowledge summary.");
51637
51673
  }
51638
51674
  try {
51639
- const { getScanStatus } = await import("./scan-cursor-w89sck5y.js");
51675
+ const { getScanStatus } = await import("./scan-cursor-w0m9zjrr.js");
51640
51676
  const scanStatus = await getScanStatus(directory);
51641
51677
  if (scanStatus.remaining_estimate > 0) {
51642
51678
  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.`);
@@ -51808,9 +51844,9 @@ var _internals56 = {
51808
51844
  verifyPostMortemKnowledgeActions,
51809
51845
  repairPostMortemActions,
51810
51846
  loadDefaultKnowledgeConfig: async (directory) => {
51811
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-1mwgvrv7.js");
51847
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0w9q2h6j.js");
51812
51848
  try {
51813
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-mdxrk3az.js");
51849
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-pswvtgdx.js");
51814
51850
  const loaded = loadPluginConfigWithMeta2(directory);
51815
51851
  return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
51816
51852
  } catch {
@@ -51818,11 +51854,11 @@ var _internals56 = {
51818
51854
  }
51819
51855
  },
51820
51856
  applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
51821
- const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-b7zzsv98.js");
51857
+ const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-csg36d2a.js");
51822
51858
  return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
51823
51859
  },
51824
51860
  checkHivePromotions: async (entries2, knowledgeConfig, directory) => {
51825
- const { checkHivePromotions } = await import("./hive-promoter-wpcn3wyz.js");
51861
+ const { checkHivePromotions } = await import("./hive-promoter-avvddtgc.js");
51826
51862
  return checkHivePromotions(entries2, knowledgeConfig, directory);
51827
51863
  },
51828
51864
  applyProposalTriage: async (directory, triage) => {
@@ -51831,7 +51867,7 @@ var _internals56 = {
51831
51867
  activateProposal,
51832
51868
  listSkills: listSkills2,
51833
51869
  sanitizeSlug
51834
- } = await import("./skill-generator-05mxym3d.js");
51870
+ } = await import("./skill-generator-qaskynvt.js");
51835
51871
  const result = {
51836
51872
  approved: [],
51837
51873
  rejected: [],
@@ -51873,7 +51909,7 @@ var _internals56 = {
51873
51909
  return result;
51874
51910
  },
51875
51911
  readPriorDriftReports: async (directory) => {
51876
- const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-ea11apaw.js");
51912
+ const { readPriorDriftReports: readPriorDriftReports2 } = await import("./curator-drift-z6c2ctqr.js");
51877
51913
  return readPriorDriftReports2(directory);
51878
51914
  },
51879
51915
  readSwarmKnowledge: (directory) => readKnowledge(resolveSwarmKnowledgePath(directory))
@@ -60306,7 +60342,7 @@ function wireCloseInternals() {
60306
60342
  sleep,
60307
60343
  collectGarbageBestEffort,
60308
60344
  getGitRepositoryStatus,
60309
- resetToMainAfterMerge,
60345
+ resetToMainAfterMerge: (cwd, options) => guardResetWithRecheck(resetToMainAfterMerge, cwd, options),
60310
60346
  resetToRemoteBranch,
60311
60347
  loadPluginConfigWithMeta,
60312
60348
  curateAndStoreSwarm,
@@ -60317,7 +60353,7 @@ function wireCloseInternals() {
60317
60353
  archiveEvidence,
60318
60354
  endAgentSession,
60319
60355
  flushAndDrainTelemetry: async () => {
60320
- const { flushAndDrainTelemetry } = await import("./telemetry-vwxbsnye.js");
60356
+ const { flushAndDrainTelemetry } = await import("./telemetry-d0j31j5d.js");
60321
60357
  return flushAndDrainTelemetry();
60322
60358
  },
60323
60359
  finalizeContextTelemetry,
@@ -61676,9 +61712,9 @@ var _internals66 = {
61676
61712
  loadPluginConfigWithMeta,
61677
61713
  loadCuratorDeps: async () => {
61678
61714
  const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate }] = await Promise.all([
61679
- import("./schema-1mwgvrv7.js"),
61680
- import("./curator-b7zzsv98.js"),
61681
- import("./curator-llm-factory-758hynyn.js")
61715
+ import("./schema-0w9q2h6j.js"),
61716
+ import("./curator-csg36d2a.js"),
61717
+ import("./curator-llm-factory-dtyyh77f.js")
61682
61718
  ]);
61683
61719
  return { CuratorConfigSchema, curator, createCuratorLLMDelegate };
61684
61720
  }
@@ -64076,7 +64112,7 @@ async function computeCurationDiagnostics(directory, entries2) {
64076
64112
  let scanCompleted = false;
64077
64113
  let scanRemaining = 0;
64078
64114
  try {
64079
- const { getScanStatus } = await import("./scan-cursor-w89sck5y.js");
64115
+ const { getScanStatus } = await import("./scan-cursor-w0m9zjrr.js");
64080
64116
  const status = await getScanStatus(directory);
64081
64117
  scanGeneration = status.generation;
64082
64118
  scanCompleted = status.completed;
@@ -64084,19 +64120,19 @@ async function computeCurationDiagnostics(directory, entries2) {
64084
64120
  } catch {}
64085
64121
  let configMatch = null;
64086
64122
  try {
64087
- const { isLinked: isLinked2 } = await import("./knowledge-link-zh9rzesj.js");
64123
+ const { isLinked: isLinked2 } = await import("./knowledge-link-9gx2djyd.js");
64088
64124
  if (isLinked2(directory)) {
64089
- const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-1mwgvrv7.js");
64125
+ const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-0w9q2h6j.js");
64090
64126
  let config;
64091
64127
  try {
64092
- const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-mdxrk3az.js");
64128
+ const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-pswvtgdx.js");
64093
64129
  const loaded = loadPluginConfigWithMeta2(directory);
64094
64130
  config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
64095
64131
  } catch {
64096
64132
  config = KnowledgeConfigSchema2.parse({});
64097
64133
  }
64098
64134
  const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
64099
- const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-e1ce7ha8.js");
64135
+ const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-v64ctcbd.js");
64100
64136
  const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
64101
64137
  const cohortFp = await readCohortConfigFingerprint(directory);
64102
64138
  configMatch = cohortFp === null ? null : currentFp === cohortFp;
@@ -65545,7 +65581,7 @@ async function handleDoctorCommand(directory, args) {
65545
65581
  const result = runConfigDoctor(config, directory, planParallelizationEnabled);
65546
65582
  let output;
65547
65583
  if (enableAutoFix && result.hasAutoFixableIssues) {
65548
- const { runConfigDoctorWithFixes } = await import("./config-doctor-t88fd5ra.js");
65584
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-p21xsvfn.js");
65549
65585
  const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
65550
65586
  applyLossy: true
65551
65587
  });
@@ -65583,7 +65619,7 @@ async function handleDoctorCommand(directory, args) {
65583
65619
  `;
65584
65620
  }
65585
65621
  try {
65586
- const { runModelPreflight } = await import("./model-preflight-xzy5x4rt.js");
65622
+ const { runModelPreflight } = await import("./model-preflight-yf57x1x7.js");
65587
65623
  const preflight = await runModelPreflight(config, swarmState.opencodeClient, { generatedAgentNames: swarmState.generatedAgentNames });
65588
65624
  const missingSelection = preflight.resolutions.filter((resolution) => resolution.status === "missing-selection");
65589
65625
  const unresolved = preflight.catalogAvailable ? preflight.resolutions.filter((resolution) => resolution.status === "unresolved") : [];
@@ -65617,7 +65653,7 @@ async function handleDoctorCommand(directory, args) {
65617
65653
  }
65618
65654
  } catch {}
65619
65655
  try {
65620
- const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-5768wb0n.js");
65656
+ const { renderKnowledgeReceiptPhaseIdSection } = await import("./doctor-knowledge-receipt-phase-id-gps8dpqr.js");
65621
65657
  output += await renderKnowledgeReceiptPhaseIdSection(directory, enableAutoFix);
65622
65658
  } catch {}
65623
65659
  const strayDirs = detectStraySwarmDirs(directory);
@@ -66514,7 +66550,7 @@ async function handleEvidenceCommand(directory, args) {
66514
66550
  return formatTaskEvidenceMarkdown(evidenceData);
66515
66551
  }
66516
66552
  async function handleEvidenceSummaryCommand(directory) {
66517
- const { buildEvidenceSummary } = await import("./evidence-summary-service-z2yj87tn.js");
66553
+ const { buildEvidenceSummary } = await import("./evidence-summary-service-txbkchx6.js");
66518
66554
  const artifact = await buildEvidenceSummary(directory);
66519
66555
  if (!artifact) {
66520
66556
  return "No plan found. Run `/swarm plan` to check plan status.";
@@ -90965,7 +91001,7 @@ function createCuratorLLMDelegate(directory, mode = "init", sessionId) {
90965
91001
  }
90966
91002
  const sdkOpts = signal ? { signal } : {};
90967
91003
  try {
90968
- const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-by7x4ty3.js");
91004
+ const { getSwarmAgents: getSwarmAgents2, resolveFallbackModel: resolveFallbackModel2 } = await import("./index-61pxv4sk.js");
90969
91005
  const createResult = await client.session.create({
90970
91006
  ...sessionId ? {
90971
91007
  body: {
@@ -93302,7 +93338,7 @@ async function cancelPrFeedbackLoopUnlocked(directory, sessionID, reason) {
93302
93338
  clearedEvents: []
93303
93339
  };
93304
93340
  try {
93305
- const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-srpa0mds.js");
93341
+ const { cancelPrFeedbackPublication: cancelPrFeedbackPublication2 } = await import("./pr-workflow-gate-0qzc2dbr.js");
93306
93342
  await cancelPrFeedbackPublication2(directory, sessionID, reason);
93307
93343
  } catch (err) {
93308
93344
  warn(`[pr-feedback-loop] cancelPrFeedbackPublication failed (fail-open): ${err instanceof Error ? err.message : String(err)}`);
@@ -107043,7 +107079,7 @@ async function runValidationWithTransientRetry(input, candidateContent, baseline
107043
107079
  if (!input.dispatcher) {
107044
107080
  throw new Error("no evaluation dispatcher available (cannot run validation)");
107045
107081
  }
107046
- const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-tk1cmgzt.js");
107082
+ const { createModelEvaluationExecutor: createModelEvaluationExecutor2 } = await import("./runner-x8sbydkw.js");
107047
107083
  const executor = createModelEvaluationExecutor2(input.dispatcher, input.sessionId);
107048
107084
  const result = await withProtectedSetIntegrity([evalInputRoot, ...protectedRoots(input.directory)], () => _internals128.evaluateCandidateV1({
107049
107085
  projectRoot: input.directory,
@@ -109672,7 +109708,7 @@ function buildDetailedHelp(commandName, entry) {
109672
109708
  async function handleHelpCommand(ctx) {
109673
109709
  const targetCommand = ctx.args.join(" ");
109674
109710
  if (!targetCommand) {
109675
- const { buildHelpText } = await import("./index-m3dcecc5.js");
109711
+ const { buildHelpText } = await import("./index-cdakr0yh.js");
109676
109712
  return buildHelpText();
109677
109713
  }
109678
109714
  const tokens = targetCommand.split(/\s+/);
@@ -109686,7 +109722,7 @@ async function handleHelpCommand(ctx) {
109686
109722
  > Note: \`/swarm ${resolved.key}\` is a deprecated alias for \`/swarm ${aliasTarget}\`.` : detailed;
109687
109723
  }
109688
109724
  const similar = _internals27.findSimilarCommands(targetCommand);
109689
- const { buildHelpText: fullHelp } = await import("./index-m3dcecc5.js");
109725
+ const { buildHelpText: fullHelp } = await import("./index-cdakr0yh.js");
109690
109726
  if (similar.length > 0) {
109691
109727
  return `Command '/swarm ${targetCommand}' not found.
109692
109728
 
@@ -110014,7 +110050,7 @@ var COMMAND_REGISTRY = {
110014
110050
  },
110015
110051
  "guardrail explain": {
110016
110052
  handler: async (ctx) => {
110017
- const { handleGuardrailExplain } = await import("./guardrail-explain-y2g82gqv.js");
110053
+ const { handleGuardrailExplain } = await import("./guardrail-explain-gxzdr8w4.js");
110018
110054
  return handleGuardrailExplain(ctx.directory, ctx.args);
110019
110055
  },
110020
110056
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -110024,7 +110060,7 @@ var COMMAND_REGISTRY = {
110024
110060
  },
110025
110061
  "guardrail reset": {
110026
110062
  handler: async (ctx) => {
110027
- const { handleGuardrailReset } = await import("./guardrail-reset-h7g9a90e.js");
110063
+ const { handleGuardrailReset } = await import("./guardrail-reset-b0s11ban.js");
110028
110064
  return handleGuardrailReset(ctx.args, ctx.sessionID);
110029
110065
  },
110030
110066
  description: "Reset one exact active invocation/action circuit after repair",
@@ -110045,7 +110081,7 @@ var COMMAND_REGISTRY = {
110045
110081
  },
110046
110082
  "guardrail-log": {
110047
110083
  handler: async (ctx) => {
110048
- const { handleGuardrailLog } = await import("./guardrail-log-c50qd8sf.js");
110084
+ const { handleGuardrailLog } = await import("./guardrail-log-ra5qbb4b.js");
110049
110085
  return handleGuardrailLog(ctx.directory, ctx.args);
110050
110086
  },
110051
110087
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
@@ -110455,7 +110491,7 @@ var COMMAND_REGISTRY = {
110455
110491
  sessionID: ctx.sessionID
110456
110492
  }),
110457
110493
  description: "Use /swarm finalize to finalize the swarm project and archive evidence",
110458
- details: "Idempotent 4-stage terminal finalization: (1) finalize writes retrospectives for in-progress phases, (2) archive creates timestamped bundle of swarm artifacts and evidence, (3) clean removes active-state files for a clean slate, (4) align performs aggressive git reset --hard to the default remote branch, discarding uncommitted changes and gitignored build artifacts (user-created untracked files are preserved); falls back to a cautious reset that preserves uncommitted changes when the aggressive path cannot proceed. WARNING: alignment discards local changes and gitignored files. Resets agent sessions, delegation chains, and active-agent mappings. Reads .swarm/close-lessons.md for explicit lessons and runs curation. Cleanup: knowledge.jsonl is preserved; plan.json, plan.md, events.jsonl, handoff.*, run-memory.jsonl, and summaries/ are removed. Use --skill-review to run the quota-bounded skill_improver in proposal mode. Use --dry-run to preview what finalize would archive, clean, and align without taking the lock or changing anything.",
110494
+ details: "Idempotent 4-stage terminal finalization: (1) finalize writes retrospectives for in-progress phases, (2) archive creates timestamped bundle of swarm artifacts and evidence, (3) clean removes active-state files for a clean slate, (4) align performs aggressive git reset --hard to the default remote branch, discarding uncommitted changes and gitignored build artifacts (user-created untracked files are preserved); falls back to a cautious reset that preserves uncommitted changes when the aggressive path cannot proceed. Alignment re-verifies the tracked tree immediately before its destructive reset and aborts fail-closed (leaving alignment undone) when tracked files changed after the close gate was verified or the status cannot be re-read (#2953). WARNING: alignment discards local changes and gitignored files. Resets agent sessions, delegation chains, and active-agent mappings. Reads .swarm/close-lessons.md for explicit lessons and runs curation. Cleanup: knowledge.jsonl is preserved; plan.json, plan.md, events.jsonl, handoff.*, run-memory.jsonl, and summaries/ are removed. Use --skill-review to run the quota-bounded skill_improver in proposal mode. Use --dry-run to preview what finalize would archive, clean, and align without taking the lock or changing anything.",
110459
110495
  args: "--prune-branches, --skill-review, --dry-run",
110460
110496
  category: "core",
110461
110497
  toolPolicy: "none"