opencode-swarm 7.178.0 → 7.179.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 (117) hide show
  1. package/.opencode/skills/deep-dive/SKILL.md +1 -1
  2. package/.opencode/skills/running-tests/SKILL.md +30 -24
  3. package/.opencode/skills/swarm-plan/SKILL.md +1 -1
  4. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  5. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  6. package/dist/agents/critic.d.ts +6 -6
  7. package/dist/agents/explorer.d.ts +1 -1
  8. package/dist/cli/{coder-settlement-d2bfb25j.js → coder-settlement-7pt3a0y0.js} +12 -12
  9. package/dist/cli/{config-doctor-905x2s1c.js → config-doctor-82w4bp4b.js} +3 -3
  10. package/dist/cli/{core-k7wfx1wx.js → core-9rqzs794.js} +4 -4
  11. package/dist/cli/{curation-policy-n4hd2wsa.js → curation-policy-c7mdsf7m.js} +5 -5
  12. package/dist/cli/{curator-drift-smqmej5v.js → curator-drift-d93pwt8h.js} +5 -5
  13. package/dist/cli/curator-llm-factory-cbm1ny30.js +72 -0
  14. package/dist/cli/{curator-wyadq69k.js → curator-m8act07j.js} +40 -40
  15. package/dist/cli/{dispatch-9yqqqfr6.js → dispatch-3rwdxpp2.js} +1 -1
  16. package/dist/cli/{evidence-summary-service-r3wcprfk.js → evidence-summary-service-a99bgje1.js} +17 -17
  17. package/dist/cli/{explorer-2cv64zfj.js → explorer-z0cf5cz0.js} +1 -1
  18. package/dist/cli/{gate-evidence-tq9rb2aj.js → gate-evidence-yssmxba5.js} +7 -7
  19. package/dist/cli/guardrail-explain-ffwmhf7s.js +73 -0
  20. package/dist/cli/{guardrail-log-m6twga6x.js → guardrail-log-j2wtq7p2.js} +8 -8
  21. package/dist/cli/{guardrail-reset-86esv8cr.js → guardrail-reset-07byr7nr.js} +40 -40
  22. package/dist/cli/{hive-promoter-s87hkb40.js → hive-promoter-ewrz7vh1.js} +40 -40
  23. package/dist/cli/{index-ke3m026z.js → index-09wm3963.js} +14 -7
  24. package/dist/cli/{index-vfc7d22n.js → index-0bc8jdnv.js} +2 -2
  25. package/dist/cli/{index-ffqy30e5.js → index-0h3cr7pn.js} +1 -1
  26. package/dist/cli/{index-fyfbpz4f.js → index-1c1dbwze.js} +1 -0
  27. package/dist/cli/{index-zex7644g.js → index-1rwyfvq2.js} +2 -2
  28. package/dist/cli/{index-18hjycr1.js → index-1sz02k85.js} +30 -2
  29. package/dist/cli/{index-pm7c6f66.js → index-2b0ktpbf.js} +2 -2
  30. package/dist/cli/{index-yj1kr0ft.js → index-34bwqcea.js} +1 -1
  31. package/dist/cli/{index-wkde35ej.js → index-3hne91yd.js} +8 -8
  32. package/dist/cli/{index-2b1whj28.js → index-3pzwsesm.js} +2 -2
  33. package/dist/cli/{index-y74n1sy8.js → index-6r92fw88.js} +7 -7
  34. package/dist/cli/{index-p27az2hc.js → index-6tnkvqr9.js} +4 -4
  35. package/dist/cli/{index-qs8eth8h.js → index-7zmbtxw1.js} +4 -4
  36. package/dist/cli/{index-azy3tw6c.js → index-80q47hpw.js} +2 -2
  37. package/dist/cli/{index-zsm8h8y1.js → index-8815e95e.js} +4 -4
  38. package/dist/cli/{index-gg44hytk.js → index-9p1pqykb.js} +33 -8
  39. package/dist/cli/{index-w4yjy3vp.js → index-a11ztzs5.js} +19 -2
  40. package/dist/cli/{index-sqngtwyq.js → index-amf88k1e.js} +1 -1
  41. package/dist/cli/{index-y6a2bkp1.js → index-cvg402ha.js} +2 -2
  42. package/dist/cli/{index-heg4em8j.js → index-d66zb40k.js} +3499 -2832
  43. package/dist/cli/{index-swxaa0zs.js → index-etmwjgre.js} +40 -40
  44. package/dist/cli/{index-j3rkh9mp.js → index-f2v90gfc.js} +2 -2
  45. package/dist/cli/{index-mpcp6rmj.js → index-g6nyk713.js} +1 -1
  46. package/dist/cli/{index-bfz1jvcn.js → index-h4nh6s8b.js} +1 -1
  47. package/dist/cli/{index-j1v54ahd.js → index-h59vsbch.js} +2 -2
  48. package/dist/cli/{index-29begjkp.js → index-hwcra3y9.js} +8 -8
  49. package/dist/cli/{index-2vhkwy6v.js → index-kanxpgf8.js} +3 -3
  50. package/dist/cli/{index-kfk403mc.js → index-kmhnkn6t.js} +4 -4
  51. package/dist/cli/{index-2mdk6nt9.js → index-ndwbb3xm.js} +7 -7
  52. package/dist/cli/{index-zsp9de3k.js → index-ne9zamcs.js} +7 -7
  53. package/dist/cli/{index-tnjmn0dn.js → index-nzekzzs2.js} +4 -4
  54. package/dist/cli/{index-q9vb5e7n.js → index-pskba939.js} +1 -1
  55. package/dist/cli/{index-qk29b7s4.js → index-pxtye2ng.js} +42 -42
  56. package/dist/cli/{index-wfbh1bx8.js → index-qt0793qm.js} +7 -7
  57. package/dist/cli/{index-at0ygwwp.js → index-qxk5qkfh.js} +5 -5
  58. package/dist/cli/{index-zmb8fjp5.js → index-s4bkey0q.js} +1 -1
  59. package/dist/cli/{index-rp0jk48x.js → index-sv4y1cma.js} +7 -7
  60. package/dist/cli/{index-2bmhe2jn.js → index-tmy46dtd.js} +4 -4
  61. package/dist/cli/{index-wbkxbgk8.js → index-twtez316.js} +2 -2
  62. package/dist/cli/{index-m2n1rhgv.js → index-w872yykk.js} +1 -1
  63. package/dist/cli/{index-jzxeymr0.js → index-wvpsm8ja.js} +93 -227
  64. package/dist/cli/{index-d5dexrv1.js → index-yagqxt2p.js} +4 -4
  65. package/dist/cli/{index-yeh78c1g.js → index-yfpswnjt.js} +2 -2
  66. package/dist/cli/{index-hnvmj9wx.js → index-zgvzbz48.js} +14 -4
  67. package/dist/cli/index.js +41 -41
  68. package/dist/cli/{knowledge-escalator-rgz471df.js → knowledge-escalator-yx97q9c1.js} +13 -13
  69. package/dist/cli/{knowledge-events-4mq0ypx9.js → knowledge-events-p269fyvv.js} +11 -11
  70. package/dist/cli/{knowledge-link-npk50523.js → knowledge-link-gfz47ves.js} +4 -4
  71. package/dist/cli/{knowledge-store-gft25s5t.js → knowledge-store-36zemyqa.js} +5 -5
  72. package/dist/cli/{knowledge-validator-ejqacbx4.js → knowledge-validator-rd20yq41.js} +7 -7
  73. package/dist/cli/{mcp-emaeeq4s.js → mcp-sg9zrkz2.js} +1 -1
  74. package/dist/cli/{model-preflight-kh9dwts2.js → model-preflight-61xgqwcs.js} +1 -1
  75. package/dist/cli/{pending-delegations-4bhkcykk.js → pending-delegations-8p2gf4kt.js} +12 -12
  76. package/dist/cli/{pr-subscriptions-h1n6dbds.js → pr-subscriptions-4dj9r71h.js} +12 -12
  77. package/dist/cli/{pr-workflow-gate-wn6v5za8.js → pr-workflow-gate-8dgz5z1h.js} +42 -40
  78. package/dist/cli/{runner-ffy5ahhz.js → runner-16b691ba.js} +5 -5
  79. package/dist/cli/{scan-cursor-e63t0g5b.js → scan-cursor-nx0jv9ya.js} +6 -6
  80. package/dist/cli/{schema-4k4hr33y.js → schema-q6gsrxwz.js} +2 -2
  81. package/dist/cli/{scope-persistence-qcw3rtxq.js → scope-persistence-1k4xsyh7.js} +20 -16
  82. package/dist/cli/{server-58s1wwap.js → server-shhxq34t.js} +47 -45
  83. package/dist/cli/{skill-generator-fhj13jmq.js → skill-generator-6j7tq2tb.js} +15 -15
  84. package/dist/cli/{snapshot-coordination-init-5fawrj35.js → snapshot-coordination-init-h8n8w1cm.js} +40 -40
  85. package/dist/cli/{telemetry-ca8dmn26.js → telemetry-qxav5cdk.js} +1 -1
  86. package/dist/cli/{workspace-snapshot-v5qyjxg0.js → workspace-snapshot-rfnn80dg.js} +3 -3
  87. package/dist/cli/{worktree-collision-ownership-hjk0jx19.js → worktree-collision-ownership-97jzh4ra.js} +13 -13
  88. package/dist/cli/{worktree-isolation-aj20bs6q.js → worktree-isolation-g4w74ccb.js} +40 -40
  89. package/dist/commands/registry.d.ts +3 -3
  90. package/dist/config/plan-schema.d.ts +23 -0
  91. package/dist/db/coordination-store.d.ts +10 -0
  92. package/dist/evidence/phase-participation.d.ts +3 -2
  93. package/dist/hooks/delegation-gate.d.ts +1 -1
  94. package/dist/hooks/extractors.d.ts +5 -1
  95. package/dist/hooks/pr-workflow-gate.d.ts +15 -6
  96. package/dist/index.js +535 -520
  97. package/dist/memory/index.d.ts +1 -0
  98. package/dist/memory/memory-family-migration.d.ts +35 -3
  99. package/dist/mutation/engine.d.ts +6 -0
  100. package/dist/mutation/equivalence.d.ts +12 -1
  101. package/dist/plan/ledger.d.ts +14 -0
  102. package/dist/plan/manager.d.ts +0 -2
  103. package/dist/plan/parallel-verdict.d.ts +28 -14
  104. package/dist/pr-review/circuit.d.ts +3 -3
  105. package/dist/pr-review/legacy-transcript-adapter.d.ts +7 -10
  106. package/dist/pr-review/persistence.d.ts +36 -0
  107. package/dist/retention/sweep.d.ts +4 -0
  108. package/dist/scope/scope-persistence.d.ts +41 -0
  109. package/dist/tools/mutation-test.d.ts +6 -0
  110. package/dist/tools/plan-conflict-check.d.ts +7 -6
  111. package/dist/tools/prepare-pr-workflow-checkout.d.ts +19 -0
  112. package/dist/tools/repo-map-action-dispositions.d.ts +23 -0
  113. package/dist/tools/test-runner.d.ts +17 -2
  114. package/package.json +1 -1
  115. package/dist/cli/curator-llm-factory-qhhxev17.js +0 -72
  116. package/dist/cli/guardrail-explain-kvgejh24.js +0 -73
  117. package/dist/pr-review/guardrails.d.ts +0 -67
@@ -8,6 +8,8 @@ import {
8
8
  flushScopeBindingMaintenance,
9
9
  persistAndRegisterScopeBinding,
10
10
  pruneScopeBindingTombstones,
11
+ readAuthoritativeScopeBindingSet,
12
+ readDeclaredScopeFilesFromBindings,
11
13
  readPlanScope,
12
14
  readScopeBindingFromDisk,
13
15
  readScopeFromDisk,
@@ -23,30 +25,30 @@ import {
23
25
  tombstoneScopeBinding,
24
26
  writeScopeBindingToDisk,
25
27
  writeScopeToDisk
26
- } from "./index-gg44hytk.js";
27
- import"./index-ke3m026z.js";
28
- import"./index-j1v54ahd.js";
29
- import"./index-y6a2bkp1.js";
30
- import"./index-w4yjy3vp.js";
31
- import"./index-tnjmn0dn.js";
32
- import"./index-rdm3px0g.js";
28
+ } from "./index-9p1pqykb.js";
29
+ import"./index-09wm3963.js";
30
+ import"./index-h59vsbch.js";
31
+ import"./index-cvg402ha.js";
32
+ import"./index-a11ztzs5.js";
33
+ import"./index-nzekzzs2.js";
33
34
  import"./index-ry16d01s.js";
34
- import"./index-yeh78c1g.js";
35
- import"./index-2mdk6nt9.js";
35
+ import"./index-rdm3px0g.js";
36
+ import"./index-yfpswnjt.js";
37
+ import"./index-ndwbb3xm.js";
36
38
  import"./index-vzm6zre7.js";
37
39
  import"./index-ae75rja9.js";
38
- import"./index-yj1kr0ft.js";
39
- import"./index-j3rkh9mp.js";
40
+ import"./index-34bwqcea.js";
41
+ import"./index-f2v90gfc.js";
40
42
  import"./index-7g4c7s5r.js";
41
- import"./index-wfbh1bx8.js";
42
- import"./index-zsp9de3k.js";
43
+ import"./index-qt0793qm.js";
44
+ import"./index-ne9zamcs.js";
43
45
  import"./index-1xnse449.js";
44
46
  import"./index-c1ggtmpm.js";
45
- import"./index-18hjycr1.js";
47
+ import"./index-1sz02k85.js";
46
48
  import"./index-zz7gzw57.js";
47
49
  import"./index-4ddpvd5c.js";
48
- import"./index-wbkxbgk8.js";
49
- import"./index-m2n1rhgv.js";
50
+ import"./index-twtez316.js";
51
+ import"./index-w872yykk.js";
50
52
  import"./index-bk5tah7q.js";
51
53
  import"./index-gknz3bv1.js";
52
54
  import"./index-zpsr8rpc.js";
@@ -69,6 +71,8 @@ export {
69
71
  readScopeFromDisk,
70
72
  readScopeBindingFromDisk,
71
73
  readPlanScope,
74
+ readDeclaredScopeFilesFromBindings,
75
+ readAuthoritativeScopeBindingSet,
72
76
  pruneScopeBindingTombstones,
73
77
  persistAndRegisterScopeBinding,
74
78
  flushScopeBindingMaintenance,
@@ -25,26 +25,26 @@ import {
25
25
  redactSecrets,
26
26
  resolveWriteTargets,
27
27
  symbols
28
- } from "./index-heg4em8j.js";
28
+ } from "./index-d66zb40k.js";
29
29
  import {
30
30
  getProfileForFile
31
- } from "./index-hnvmj9wx.js";
31
+ } from "./index-zgvzbz48.js";
32
32
  import {
33
33
  pLimit
34
- } from "./index-q9vb5e7n.js";
34
+ } from "./index-pskba939.js";
35
35
  import {
36
36
  checkFileAuthority,
37
37
  checkWriteTargetForSymlink
38
- } from "./index-qs8eth8h.js";
39
- import"./index-bfz1jvcn.js";
40
- import"./index-vfc7d22n.js";
38
+ } from "./index-7zmbtxw1.js";
39
+ import"./index-h4nh6s8b.js";
40
+ import"./index-0bc8jdnv.js";
41
41
  import {
42
42
  _internals,
43
43
  loadPlan,
44
44
  loadPlanJsonOnly,
45
45
  saveEvidence
46
- } from "./index-jzxeymr0.js";
47
- import"./index-mpcp6rmj.js";
46
+ } from "./index-wvpsm8ja.js";
47
+ import"./index-g6nyk713.js";
48
48
  import"./index-txdagbh7.js";
49
49
  import"./index-n1tcj1q7.js";
50
50
  import {
@@ -55,58 +55,58 @@ import {
55
55
  validateTargetWithinRoot,
56
56
  validateWorkspaceRoot
57
57
  } from "./index-6b295cas.js";
58
- import"./index-zsm8h8y1.js";
59
- import"./index-at0ygwwp.js";
58
+ import"./index-8815e95e.js";
59
+ import"./index-qxk5qkfh.js";
60
60
  import {
61
61
  resolveCohortId
62
- } from "./index-zex7644g.js";
63
- import"./index-fyfbpz4f.js";
64
- import"./index-y74n1sy8.js";
62
+ } from "./index-1rwyfvq2.js";
63
+ import"./index-1c1dbwze.js";
64
+ import"./index-6r92fw88.js";
65
65
  import"./index-549wxbe1.js";
66
66
  import"./index-zsrtt42s.js";
67
- import"./index-wkde35ej.js";
68
- import"./index-pm7c6f66.js";
69
- import"./index-2b1whj28.js";
67
+ import"./index-3hne91yd.js";
68
+ import"./index-2b0ktpbf.js";
69
+ import"./index-3pzwsesm.js";
70
70
  import {
71
71
  getLanguageForExtension,
72
72
  getParserForFile
73
73
  } from "./index-pt7h91zc.js";
74
74
  import"./index-q7sjgr1y.js";
75
- import"./index-kfk403mc.js";
76
- import"./index-p27az2hc.js";
77
- import"./index-rp0jk48x.js";
75
+ import"./index-kmhnkn6t.js";
76
+ import"./index-6tnkvqr9.js";
77
+ import"./index-sv4y1cma.js";
78
78
  import {
79
79
  effectiveRetrievalOutcomes,
80
80
  newTraceId,
81
81
  readAuthoritativeKnowledgeCounterRollups,
82
82
  recordKnowledgeEvent
83
- } from "./index-29begjkp.js";
84
- import"./index-zmb8fjp5.js";
83
+ } from "./index-hwcra3y9.js";
84
+ import"./index-s4bkey0q.js";
85
85
  import"./index-2s7dvzff.js";
86
86
  import {
87
87
  appendUnactionable,
88
88
  validateActionability,
89
89
  validateActionableFields,
90
90
  validateLesson
91
- } from "./index-d5dexrv1.js";
91
+ } from "./index-yagqxt2p.js";
92
92
  import {
93
93
  resolveWorktreeId
94
- } from "./index-ffqy30e5.js";
94
+ } from "./index-0h3cr7pn.js";
95
95
  import"./index-rtry5xyf.js";
96
- import"./index-2vhkwy6v.js";
96
+ import"./index-kanxpgf8.js";
97
97
  import"./index-frcemc0b.js";
98
98
  import"./index-wrt875kh.js";
99
99
  import {
100
100
  normalizeScopeFiles
101
- } from "./index-gg44hytk.js";
102
- import"./index-ke3m026z.js";
103
- import"./index-j1v54ahd.js";
104
- import"./index-y6a2bkp1.js";
105
- import"./index-w4yjy3vp.js";
106
- import"./index-tnjmn0dn.js";
107
- import"./index-rdm3px0g.js";
101
+ } from "./index-9p1pqykb.js";
102
+ import"./index-09wm3963.js";
103
+ import"./index-h59vsbch.js";
104
+ import"./index-cvg402ha.js";
105
+ import"./index-a11ztzs5.js";
106
+ import"./index-nzekzzs2.js";
108
107
  import"./index-ry16d01s.js";
109
- import"./index-yeh78c1g.js";
108
+ import"./index-rdm3px0g.js";
109
+ import"./index-yfpswnjt.js";
110
110
  import {
111
111
  computeContentHash,
112
112
  computeOutcomeSignal,
@@ -123,19 +123,19 @@ import {
123
123
  resolveSwarmKnowledgePath,
124
124
  transactKnowledge,
125
125
  wordBigrams
126
- } from "./index-2mdk6nt9.js";
126
+ } from "./index-ndwbb3xm.js";
127
127
  import"./index-vzm6zre7.js";
128
128
  import"./index-ae75rja9.js";
129
- import"./index-yj1kr0ft.js";
129
+ import"./index-34bwqcea.js";
130
130
  import {
131
131
  tryAcquireLock
132
- } from "./index-j3rkh9mp.js";
132
+ } from "./index-f2v90gfc.js";
133
133
  import"./index-7g4c7s5r.js";
134
- import"./index-wfbh1bx8.js";
134
+ import"./index-qt0793qm.js";
135
135
  import {
136
136
  assertSwarmContainedTarget,
137
137
  atomicWriteSwarmFile
138
- } from "./index-zsp9de3k.js";
138
+ } from "./index-ne9zamcs.js";
139
139
  import {
140
140
  canonicalRootKeyFresh
141
141
  } from "./index-1xnse449.js";
@@ -145,7 +145,7 @@ import {
145
145
  import {
146
146
  loadGateOverrides,
147
147
  loadPluginConfigWithMeta
148
- } from "./index-18hjycr1.js";
148
+ } from "./index-1sz02k85.js";
149
149
  import {
150
150
  init_git_executable,
151
151
  resolveGitExecutableAsync
@@ -155,11 +155,11 @@ import {
155
155
  KnowledgeConfigSchema,
156
156
  init_schema,
157
157
  stripKnownSwarmPrefix
158
- } from "./index-wbkxbgk8.js";
158
+ } from "./index-twtez316.js";
159
159
  import {
160
160
  TOOL_METADATA,
161
161
  init_tool_metadata
162
- } from "./index-m2n1rhgv.js";
162
+ } from "./index-w872yykk.js";
163
163
  import {
164
164
  KNOWLEDGE_SCHEMA_VERSION,
165
165
  init_knowledge_types,
@@ -18982,12 +18982,13 @@ var plan_conflict_check_args = {
18982
18982
  async function executePlanConflictCheck(args, directory) {
18983
18983
  const useCochange = args.use_cochange === true;
18984
18984
  let planLoaded = false;
18985
+ let loadedPlan = null;
18985
18986
  const knownTaskIds = new Set;
18986
18987
  try {
18987
- const plan = await loadPlanJsonOnly(directory);
18988
- if (plan) {
18988
+ loadedPlan = await loadPlanJsonOnly(directory);
18989
+ if (loadedPlan) {
18989
18990
  planLoaded = true;
18990
- for (const phase of plan.phases) {
18991
+ for (const phase of loadedPlan.phases) {
18991
18992
  for (const task of phase.tasks)
18992
18993
  knownTaskIds.add(task.id);
18993
18994
  }
@@ -19007,7 +19008,8 @@ async function executePlanConflictCheck(args, directory) {
19007
19008
  }
19008
19009
  const verdict = computeParallelVerdict(directory, requestedIds, {
19009
19010
  useCochange,
19010
- cochangePairs
19011
+ cochangePairs,
19012
+ plan: loadedPlan ?? undefined
19011
19013
  });
19012
19014
  return {
19013
19015
  verdict: verdict.verdict,
@@ -19023,7 +19025,7 @@ async function executePlanConflictCheck(args, directory) {
19023
19025
  }
19024
19026
  var plan_conflict_check = createSwarmTool({
19025
19027
  allowWorkingDirectoryOverride: true,
19026
- description: "Read-only advisory check (#1656): compute a pairwise file-conflict matrix for N proposed parallel task groups " + "using declared scopes (`.swarm/scopes/scope-<taskId>.json`) and optional git co-change signal. Returns a " + "verdict (all_disjoint / conflicts_present / unknown_scopes), per-pair evidence, and a suggested serialization " + "order. Writes nothing \u2014 the execution gate independently recomputes the verdict inline at dispatch time via " + "the same helper. Use this BEFORE attempting parallel dispatch to confirm disjointness.",
19028
+ description: "Read-only advisory check (#1656): compute a pairwise file-conflict matrix for N proposed parallel task groups " + "using the currently declared v2 scope bindings (the same authority declare_scope writes, #2532) and optional " + "git co-change signal. Returns a " + "verdict (all_disjoint / conflicts_present / unknown_scopes), per-pair evidence, and a suggested serialization " + "order. Writes nothing \u2014 the execution gate independently recomputes the verdict inline at dispatch time via " + "the same helper. Use this BEFORE attempting parallel dispatch to confirm disjointness.",
19027
19029
  args: plan_conflict_check_args,
19028
19030
  execute: async (args, directory) => {
19029
19031
  const typedArgs = args;
@@ -33,33 +33,33 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-zsm8h8y1.js";
36
+ } from "./index-8815e95e.js";
37
37
  import"./index-q7sjgr1y.js";
38
- import"./index-29begjkp.js";
39
- import"./index-zmb8fjp5.js";
38
+ import"./index-hwcra3y9.js";
39
+ import"./index-s4bkey0q.js";
40
40
  import"./index-2s7dvzff.js";
41
- import"./index-d5dexrv1.js";
42
- import"./index-ffqy30e5.js";
41
+ import"./index-yagqxt2p.js";
42
+ import"./index-0h3cr7pn.js";
43
43
  import"./index-rtry5xyf.js";
44
- import"./index-2vhkwy6v.js";
44
+ import"./index-kanxpgf8.js";
45
45
  import"./index-frcemc0b.js";
46
46
  import"./index-wrt875kh.js";
47
- import"./index-yeh78c1g.js";
48
- import"./index-2mdk6nt9.js";
47
+ import"./index-yfpswnjt.js";
48
+ import"./index-ndwbb3xm.js";
49
49
  import"./index-vzm6zre7.js";
50
50
  import"./index-ae75rja9.js";
51
- import"./index-yj1kr0ft.js";
52
- import"./index-j3rkh9mp.js";
51
+ import"./index-34bwqcea.js";
52
+ import"./index-f2v90gfc.js";
53
53
  import"./index-7g4c7s5r.js";
54
- import"./index-wfbh1bx8.js";
55
- import"./index-zsp9de3k.js";
54
+ import"./index-qt0793qm.js";
55
+ import"./index-ne9zamcs.js";
56
56
  import"./index-1xnse449.js";
57
57
  import"./index-c1ggtmpm.js";
58
- import"./index-18hjycr1.js";
58
+ import"./index-1sz02k85.js";
59
59
  import"./index-zz7gzw57.js";
60
60
  import"./index-4ddpvd5c.js";
61
- import"./index-wbkxbgk8.js";
62
- import"./index-m2n1rhgv.js";
61
+ import"./index-twtez316.js";
62
+ import"./index-w872yykk.js";
63
63
  import"./index-bk5tah7q.js";
64
64
  import"./index-gknz3bv1.js";
65
65
  import"./index-zpsr8rpc.js";
@@ -8,65 +8,65 @@ import {
8
8
  markSnapshotCoordinationClosing,
9
9
  retrySnapshotCoordinationInitialization,
10
10
  startSnapshotCoordinationInitialization
11
- } from "./index-heg4em8j.js";
12
- import"./index-hnvmj9wx.js";
13
- import"./index-q9vb5e7n.js";
14
- import"./index-qs8eth8h.js";
15
- import"./index-bfz1jvcn.js";
16
- import"./index-vfc7d22n.js";
17
- import"./index-jzxeymr0.js";
18
- import"./index-mpcp6rmj.js";
11
+ } from "./index-d66zb40k.js";
12
+ import"./index-zgvzbz48.js";
13
+ import"./index-pskba939.js";
14
+ import"./index-7zmbtxw1.js";
15
+ import"./index-h4nh6s8b.js";
16
+ import"./index-0bc8jdnv.js";
17
+ import"./index-wvpsm8ja.js";
18
+ import"./index-g6nyk713.js";
19
19
  import"./index-txdagbh7.js";
20
20
  import"./index-n1tcj1q7.js";
21
21
  import"./index-6b295cas.js";
22
- import"./index-zsm8h8y1.js";
23
- import"./index-at0ygwwp.js";
24
- import"./index-zex7644g.js";
25
- import"./index-fyfbpz4f.js";
26
- import"./index-y74n1sy8.js";
22
+ import"./index-8815e95e.js";
23
+ import"./index-qxk5qkfh.js";
24
+ import"./index-1rwyfvq2.js";
25
+ import"./index-1c1dbwze.js";
26
+ import"./index-6r92fw88.js";
27
27
  import"./index-549wxbe1.js";
28
28
  import"./index-zsrtt42s.js";
29
- import"./index-wkde35ej.js";
30
- import"./index-pm7c6f66.js";
31
- import"./index-2b1whj28.js";
29
+ import"./index-3hne91yd.js";
30
+ import"./index-2b0ktpbf.js";
31
+ import"./index-3pzwsesm.js";
32
32
  import"./index-pt7h91zc.js";
33
33
  import"./index-q7sjgr1y.js";
34
- import"./index-kfk403mc.js";
35
- import"./index-p27az2hc.js";
36
- import"./index-rp0jk48x.js";
37
- import"./index-29begjkp.js";
38
- import"./index-zmb8fjp5.js";
34
+ import"./index-kmhnkn6t.js";
35
+ import"./index-6tnkvqr9.js";
36
+ import"./index-sv4y1cma.js";
37
+ import"./index-hwcra3y9.js";
38
+ import"./index-s4bkey0q.js";
39
39
  import"./index-2s7dvzff.js";
40
- import"./index-d5dexrv1.js";
41
- import"./index-ffqy30e5.js";
40
+ import"./index-yagqxt2p.js";
41
+ import"./index-0h3cr7pn.js";
42
42
  import"./index-rtry5xyf.js";
43
- import"./index-2vhkwy6v.js";
43
+ import"./index-kanxpgf8.js";
44
44
  import"./index-frcemc0b.js";
45
45
  import"./index-wrt875kh.js";
46
- import"./index-gg44hytk.js";
47
- import"./index-ke3m026z.js";
48
- import"./index-j1v54ahd.js";
49
- import"./index-y6a2bkp1.js";
50
- import"./index-w4yjy3vp.js";
51
- import"./index-tnjmn0dn.js";
52
- import"./index-rdm3px0g.js";
46
+ import"./index-9p1pqykb.js";
47
+ import"./index-09wm3963.js";
48
+ import"./index-h59vsbch.js";
49
+ import"./index-cvg402ha.js";
50
+ import"./index-a11ztzs5.js";
51
+ import"./index-nzekzzs2.js";
53
52
  import"./index-ry16d01s.js";
54
- import"./index-yeh78c1g.js";
55
- import"./index-2mdk6nt9.js";
53
+ import"./index-rdm3px0g.js";
54
+ import"./index-yfpswnjt.js";
55
+ import"./index-ndwbb3xm.js";
56
56
  import"./index-vzm6zre7.js";
57
57
  import"./index-ae75rja9.js";
58
- import"./index-yj1kr0ft.js";
59
- import"./index-j3rkh9mp.js";
58
+ import"./index-34bwqcea.js";
59
+ import"./index-f2v90gfc.js";
60
60
  import"./index-7g4c7s5r.js";
61
- import"./index-wfbh1bx8.js";
62
- import"./index-zsp9de3k.js";
61
+ import"./index-qt0793qm.js";
62
+ import"./index-ne9zamcs.js";
63
63
  import"./index-1xnse449.js";
64
64
  import"./index-c1ggtmpm.js";
65
- import"./index-18hjycr1.js";
65
+ import"./index-1sz02k85.js";
66
66
  import"./index-zz7gzw57.js";
67
67
  import"./index-4ddpvd5c.js";
68
- import"./index-wbkxbgk8.js";
69
- import"./index-m2n1rhgv.js";
68
+ import"./index-twtez316.js";
69
+ import"./index-w872yykk.js";
70
70
  import"./index-bk5tah7q.js";
71
71
  import"./index-gknz3bv1.js";
72
72
  import"./index-zpsr8rpc.js";
@@ -14,7 +14,7 @@ import {
14
14
  startHeartbeatTracking,
15
15
  stopHeartbeatTracking,
16
16
  telemetry
17
- } from "./index-wfbh1bx8.js";
17
+ } from "./index-qt0793qm.js";
18
18
  import"./index-1xnse449.js";
19
19
  import"./index-c1ggtmpm.js";
20
20
  import"./index-gknz3bv1.js";
@@ -45,10 +45,10 @@ import {
45
45
  shouldSkipSnapshot,
46
46
  switchPrFeedbackTrackingCandidateAsync,
47
47
  workspaceSnapshotMatches
48
- } from "./index-pm7c6f66.js";
49
- import"./index-zmb8fjp5.js";
48
+ } from "./index-2b0ktpbf.js";
49
+ import"./index-s4bkey0q.js";
50
50
  import"./index-2s7dvzff.js";
51
- import"./index-zsp9de3k.js";
51
+ import"./index-ne9zamcs.js";
52
52
  import"./index-1xnse449.js";
53
53
  import"./index-c1ggtmpm.js";
54
54
  import"./index-zz7gzw57.js";
@@ -9,27 +9,27 @@ import {
9
9
  WORKTREE_PROVISIONING_OWNER_LEASE_MS,
10
10
  removeWorktreeProvisioningOwner,
11
11
  scanWorktreeProvisioningOwnersForRecovery
12
- } from "./index-2b1whj28.js";
12
+ } from "./index-3pzwsesm.js";
13
13
  import {
14
14
  scanDelegationFallbacksForRecovery,
15
15
  scanDelegationsForRecovery
16
- } from "./index-rp0jk48x.js";
17
- import"./index-zmb8fjp5.js";
16
+ } from "./index-sv4y1cma.js";
17
+ import"./index-s4bkey0q.js";
18
18
  import"./index-2s7dvzff.js";
19
- import"./index-y6a2bkp1.js";
20
- import"./index-w4yjy3vp.js";
21
- import"./index-tnjmn0dn.js";
22
- import"./index-rdm3px0g.js";
19
+ import"./index-cvg402ha.js";
20
+ import"./index-a11ztzs5.js";
21
+ import"./index-nzekzzs2.js";
23
22
  import"./index-ry16d01s.js";
24
- import"./index-yeh78c1g.js";
25
- import"./index-2mdk6nt9.js";
23
+ import"./index-rdm3px0g.js";
24
+ import"./index-yfpswnjt.js";
25
+ import"./index-ndwbb3xm.js";
26
26
  import"./index-vzm6zre7.js";
27
27
  import"./index-ae75rja9.js";
28
- import"./index-yj1kr0ft.js";
29
- import"./index-j3rkh9mp.js";
28
+ import"./index-34bwqcea.js";
29
+ import"./index-f2v90gfc.js";
30
30
  import"./index-7g4c7s5r.js";
31
- import"./index-wfbh1bx8.js";
32
- import"./index-zsp9de3k.js";
31
+ import"./index-qt0793qm.js";
32
+ import"./index-ne9zamcs.js";
33
33
  import {
34
34
  canonicalRootKeyFresh
35
35
  } from "./index-1xnse449.js";
@@ -21,67 +21,67 @@ import {
21
21
  sanitizeWorktreeTaskId,
22
22
  standardWorktreeByCallID,
23
23
  standardWorktreeSerializationSessions
24
- } from "./index-heg4em8j.js";
25
- import"./index-hnvmj9wx.js";
26
- import"./index-q9vb5e7n.js";
27
- import"./index-qs8eth8h.js";
28
- import"./index-bfz1jvcn.js";
29
- import"./index-vfc7d22n.js";
30
- import"./index-jzxeymr0.js";
31
- import"./index-mpcp6rmj.js";
24
+ } from "./index-d66zb40k.js";
25
+ import"./index-zgvzbz48.js";
26
+ import"./index-pskba939.js";
27
+ import"./index-7zmbtxw1.js";
28
+ import"./index-h4nh6s8b.js";
29
+ import"./index-0bc8jdnv.js";
30
+ import"./index-wvpsm8ja.js";
31
+ import"./index-g6nyk713.js";
32
32
  import"./index-txdagbh7.js";
33
33
  import"./index-n1tcj1q7.js";
34
34
  import"./index-6b295cas.js";
35
- import"./index-zsm8h8y1.js";
36
- import"./index-at0ygwwp.js";
37
- import"./index-zex7644g.js";
38
- import"./index-fyfbpz4f.js";
39
- import"./index-y74n1sy8.js";
35
+ import"./index-8815e95e.js";
36
+ import"./index-qxk5qkfh.js";
37
+ import"./index-1rwyfvq2.js";
38
+ import"./index-1c1dbwze.js";
39
+ import"./index-6r92fw88.js";
40
40
  import"./index-549wxbe1.js";
41
41
  import"./index-zsrtt42s.js";
42
- import"./index-wkde35ej.js";
43
- import"./index-pm7c6f66.js";
44
- import"./index-2b1whj28.js";
42
+ import"./index-3hne91yd.js";
43
+ import"./index-2b0ktpbf.js";
44
+ import"./index-3pzwsesm.js";
45
45
  import"./index-pt7h91zc.js";
46
46
  import"./index-q7sjgr1y.js";
47
- import"./index-kfk403mc.js";
48
- import"./index-p27az2hc.js";
49
- import"./index-rp0jk48x.js";
50
- import"./index-29begjkp.js";
51
- import"./index-zmb8fjp5.js";
47
+ import"./index-kmhnkn6t.js";
48
+ import"./index-6tnkvqr9.js";
49
+ import"./index-sv4y1cma.js";
50
+ import"./index-hwcra3y9.js";
51
+ import"./index-s4bkey0q.js";
52
52
  import"./index-2s7dvzff.js";
53
- import"./index-d5dexrv1.js";
54
- import"./index-ffqy30e5.js";
53
+ import"./index-yagqxt2p.js";
54
+ import"./index-0h3cr7pn.js";
55
55
  import"./index-rtry5xyf.js";
56
56
  import {
57
57
  resolveWorktreeIsolationConfig
58
- } from "./index-2vhkwy6v.js";
58
+ } from "./index-kanxpgf8.js";
59
59
  import"./index-frcemc0b.js";
60
60
  import"./index-wrt875kh.js";
61
- import"./index-gg44hytk.js";
62
- import"./index-ke3m026z.js";
63
- import"./index-j1v54ahd.js";
64
- import"./index-y6a2bkp1.js";
65
- import"./index-w4yjy3vp.js";
66
- import"./index-tnjmn0dn.js";
67
- import"./index-rdm3px0g.js";
61
+ import"./index-9p1pqykb.js";
62
+ import"./index-09wm3963.js";
63
+ import"./index-h59vsbch.js";
64
+ import"./index-cvg402ha.js";
65
+ import"./index-a11ztzs5.js";
66
+ import"./index-nzekzzs2.js";
68
67
  import"./index-ry16d01s.js";
69
- import"./index-yeh78c1g.js";
70
- import"./index-2mdk6nt9.js";
68
+ import"./index-rdm3px0g.js";
69
+ import"./index-yfpswnjt.js";
70
+ import"./index-ndwbb3xm.js";
71
71
  import"./index-vzm6zre7.js";
72
72
  import"./index-ae75rja9.js";
73
- import"./index-yj1kr0ft.js";
74
- import"./index-j3rkh9mp.js";
73
+ import"./index-34bwqcea.js";
74
+ import"./index-f2v90gfc.js";
75
75
  import"./index-7g4c7s5r.js";
76
- import"./index-wfbh1bx8.js";
77
- import"./index-zsp9de3k.js";
76
+ import"./index-qt0793qm.js";
77
+ import"./index-ne9zamcs.js";
78
78
  import"./index-1xnse449.js";
79
79
  import"./index-c1ggtmpm.js";
80
- import"./index-18hjycr1.js";
80
+ import"./index-1sz02k85.js";
81
81
  import"./index-zz7gzw57.js";
82
82
  import"./index-4ddpvd5c.js";
83
- import"./index-wbkxbgk8.js";
84
- import"./index-m2n1rhgv.js";
83
+ import"./index-twtez316.js";
84
+ import"./index-w872yykk.js";
85
85
  import"./index-bk5tah7q.js";
86
86
  import"./index-gknz3bv1.js";
87
87
  import"./index-zpsr8rpc.js";
@@ -804,9 +804,9 @@ export declare const COMMAND_REGISTRY: {
804
804
  };
805
805
  readonly 'abort-pr-workflow': {
806
806
  readonly handler: (ctx: CommandContext) => Promise<string>;
807
- readonly description: "Clear a stuck PR_REVIEW/PR_FEEDBACK mechanical gate and stop the auto-resume loop [mode] [reason]";
808
- readonly args: "[PR_REVIEW|PR_FEEDBACK] [reason...]";
809
- readonly details: "Human-only escape hatch for an unrecoverable PR_REVIEW or PR_FEEDBACK mechanical gate. When the architect cannot reach complete_pr_workflow — for example a compound `git fetch && git checkout` was rejected as read-only shell syntax, the PR head cannot be fetched, or the working tree is on the wrong branch — running this clears the durable gate state for the current session and stops the auto-resume loop without depending on the trapped model. The agent itself cannot run this command; it must call the abort_pr_workflow tool (or ask you to run this command). Both paths funnel into the same fail-closed abortPrWorkflow hook, which refuses while the workflow is armed for publication or while PR workflow lanes are still in flight. Issue #2108 adds the two audited exits from an armed publication window: the invalidate_pr_feedback_publication tool (change approved content every approval of the generation is superseded and the full ladder re-runs) and the abort_pr_workflow tool kind \"cancel-publication\" with cancel_publication: true and a reason (terminal no-publish cancellation; never grants push authority). A plain recovery or force abort never clears an armed window. This human-only force path has exactly one exception to the lane refusal (issue #2251): when the ONLY lanes still blocking are ones past the 30-minute staleness horizon that the liveness probe reports as still running — a lane nothing will ever settle on a schedule — it clears the gate anyway, names exactly which lanes it overrode, and finalizes their delegation records so the session can start a new PR workflow. Those sessions are NOT stopped and their output is NOT collected. A lane with a fresh updatedAt still blocks even under force, and any delegation record that still keeps the session blocked is named in the warning. When checkout preparation preserved a stash, the result instructs the caller to run prepare_pr_workflow_checkout operation=restore after the clear. An audit event is appended to .swarm/events.jsonl.";
807
+ readonly description: "Clear a stuck PR_REVIEW/PR_FEEDBACK mechanical gate and stop the auto-resume loop [mode] [reason] or PR_FEEDBACK --cancel-publication <reason...> (cancelled_without_publication)";
808
+ readonly args: "[PR_REVIEW|PR_FEEDBACK] [reason...] | PR_FEEDBACK --cancel-publication <reason...>";
809
+ readonly details: "Human-only escape hatch for an unrecoverable PR_REVIEW or PR_FEEDBACK mechanical gate. When the architect cannot reach complete_pr_workflow — for example a compound `git fetch && git checkout` was rejected as read-only shell syntax, the PR head cannot be fetched, or the working tree is on the wrong branch — running this clears the durable gate state for the current session and stops the auto-resume loop without depending on the trapped model. The agent itself cannot run this command; it must call the abort_pr_workflow tool (or ask you to run this command). Both paths funnel into the same fail-closed abortPrWorkflow hook, which refuses while the workflow is armed for publication or while PR workflow lanes are still in flight. To cancel an armed PR_FEEDBACK publication without publishing, use the exact human syntax `PR_FEEDBACK --cancel-publication <reason...>`; it requires a non-empty reason, records the terminal `cancelled_without_publication` status with the observed remote head, and never grants push authority. A plain recovery or force abort never clears an armed window. This human-only force path has exactly one exception to the lane refusal (issue #2251): when the ONLY lanes still blocking are ones past the 30-minute staleness horizon that the liveness probe reports as still running — a lane nothing will ever settle on a schedule — it clears the gate anyway, names exactly which lanes it overrode, and finalizes their delegation records so the session can start a new PR workflow. Those sessions are NOT stopped and their output is NOT collected. A lane with a fresh updatedAt still blocks even under force, and any delegation record that still keeps the session blocked is named in the warning. When checkout preparation preserved a stash, the result instructs the caller to run prepare_pr_workflow_checkout operation=restore after the clear. An audit event is appended to .swarm/events.jsonl.";
810
810
  readonly category: "utility";
811
811
  readonly toolPolicy: "restricted";
812
812
  };
@@ -227,6 +227,29 @@ export type RuntimePlan = Plan & {
227
227
  * @returns Phase number of first in-progress phase, or first phase if none
228
228
  */
229
229
  export declare function findFirstActivePhase(phases: Phase[]): number | undefined;
230
+ /**
231
+ * Resolve the plan's active phase id (issue #2532 / PLAN-4).
232
+ *
233
+ * Contract: the stored `current_phase` is authoritative when it points at a
234
+ * NON-terminal phase (this is what preserves the active phase across plan
235
+ * revisions); otherwise the cursor derives from phase statuses — the first
236
+ * non-terminal phase — so a completed (or removed) phase can never hold the
237
+ * cursor. A fully-terminal plan keeps its last phase id.
238
+ *
239
+ * This is the single canonical derivation shared by the persist-side writer
240
+ * (`normalizeCurrentPhaseInPlace`, applied in `savePlan` /
241
+ * `closePlanTerminalState`), ledger replay (`reconstructPlanFromEvents`), and
242
+ * every consumer that must agree on "the current phase" (plan.md header,
243
+ * summary extractor, preflight, delegation-gate active-phase selection).
244
+ */
245
+ export declare function resolveActivePhaseId(plan: Plan): number;
246
+ /**
247
+ * Normalize the stored phase cursor in place (issue #2532 / PLAN-4): the ONE
248
+ * durable advancing writer applied at every plan-persist funnel. Must run
249
+ * BEFORE any plan hash is computed so ledger/projection/snapshot surfaces
250
+ * record the normalized state.
251
+ */
252
+ export declare function normalizeCurrentPhaseInPlace(plan: Plan): void;
230
253
  /**
231
254
  * Get the current phase from a plan, with fallback inference.
232
255
  * @param plan - The plan object