opencode-swarm 7.183.1 → 7.184.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 (86) 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/cli/{coder-settlement-rserb0hm.js → coder-settlement-vrc5zxvv.js} +7 -7
  4. package/dist/cli/{config-doctor-r4fmzprn.js → config-doctor-y0bpap07.js} +7 -3
  5. package/dist/cli/{core-rzek3e2n.js → core-7f955h2f.js} +1 -1
  6. package/dist/cli/{curation-policy-g0jjwrg5.js → curation-policy-fa2h82c4.js} +4 -4
  7. package/dist/cli/{curator-drift-a0r5krfx.js → curator-drift-48x02n2m.js} +5 -5
  8. package/dist/cli/{curator-llm-factory-xp4hgd8r.js → curator-llm-factory-g6at4hn6.js} +31 -31
  9. package/dist/cli/{curator-v84tfqcr.js → curator-m7enwwz2.js} +31 -31
  10. package/dist/cli/{evidence-summary-service-t4csk176.js → evidence-summary-service-k8a5vkfk.js} +13 -13
  11. package/dist/cli/{gate-evidence-3z04zprn.js → gate-evidence-nktrs0w2.js} +4 -4
  12. package/dist/cli/{guardrail-explain-j2y5sj4d.js → guardrail-explain-1ccchxdr.js} +32 -32
  13. package/dist/cli/{guardrail-log-cbzdh4qj.js → guardrail-log-dppv6tgn.js} +6 -6
  14. package/dist/cli/{guardrail-reset-5e75rz44.js → guardrail-reset-btzq4ses.js} +31 -31
  15. package/dist/cli/{hive-promoter-f54nrhqn.js → hive-promoter-yp1baj9z.js} +31 -31
  16. package/dist/cli/{index-dg3f2sqq.js → index-01wt209s.js} +1 -1
  17. package/dist/cli/{index-xtysafzj.js → index-079xzcxb.js} +31 -31
  18. package/dist/cli/{index-b26hje53.js → index-152b9c6m.js} +5 -5
  19. package/dist/cli/{index-77650pyg.js → index-1d6ssjcj.js} +1 -1
  20. package/dist/cli/{index-mt0s67hg.js → index-3fhg7pqf.js} +2 -2
  21. package/dist/cli/{index-1hnknn34.js → index-46z4c89b.js} +1 -1
  22. package/dist/cli/{index-raws06d3.js → index-4gr9pj67.js} +1 -1
  23. package/dist/cli/{index-hsvsz3mj.js → index-4t0wd9sv.js} +1 -1
  24. package/dist/cli/{index-bqphhrwf.js → index-51xtrf7g.js} +4 -4
  25. package/dist/cli/{index-qjzbs971.js → index-5wk0etp8.js} +4 -4
  26. package/dist/cli/{index-4xr4gtwd.js → index-6b4vkz6q.js} +1 -1
  27. package/dist/cli/{index-hb1zqz50.js → index-74x26wyj.js} +1 -1
  28. package/dist/cli/{index-nazzb4em.js → index-9yvjwfay.js} +134 -76
  29. package/dist/cli/{index-908k7jhw.js → index-ad3yskxy.js} +3 -3
  30. package/dist/cli/{index-6dm6ettv.js → index-b5mkznms.js} +1 -1
  31. package/dist/cli/{index-w196wb3a.js → index-bf1726rj.js} +33 -33
  32. package/dist/cli/{index-h01p5ygy.js → index-e90m050y.js} +3 -3
  33. package/dist/cli/{index-3qy7v4k1.js → index-edrgc139.js} +2 -2
  34. package/dist/cli/{index-tt705bap.js → index-fbhtb6f5.js} +3 -3
  35. package/dist/cli/{index-ak1dd17g.js → index-fs9y88h1.js} +3 -3
  36. package/dist/cli/{index-4hnk9npg.js → index-j40czc9v.js} +3 -3
  37. package/dist/cli/{index-y5hhkx1n.js → index-me39468k.js} +4 -4
  38. package/dist/cli/{index-wpn7ftw1.js → index-mn5zzmqx.js} +2 -2
  39. package/dist/cli/{index-jb7ywm4w.js → index-njf5pbkm.js} +3 -3
  40. package/dist/cli/{index-bsjwchw7.js → index-nm8ma9xb.js} +4 -4
  41. package/dist/cli/{index-z425p51d.js → index-nvm6mxep.js} +9 -9
  42. package/dist/cli/{index-9f930sy8.js → index-pq6vr26z.js} +3 -3
  43. package/dist/cli/{index-jk05g11c.js → index-qyx53xrz.js} +6 -6
  44. package/dist/cli/{index-31e105jf.js → index-r30xs0wp.js} +80 -2
  45. package/dist/cli/{index-j8ty457v.js → index-rwfmx7vn.js} +2 -2
  46. package/dist/cli/{index-80qhm8aq.js → index-t1swv35d.js} +10 -4
  47. package/dist/cli/{index-8me6m6ew.js → index-t26gj2fh.js} +1 -1
  48. package/dist/cli/{index-5t08vc6m.js → index-v3hpsxvd.js} +1 -1
  49. package/dist/cli/{index-rhw6m7s9.js → index-ysr6n4ca.js} +9 -3
  50. package/dist/cli/{index-gaykghrm.js → index-z3b157ew.js} +7 -7
  51. package/dist/cli/{index-ydefv5fn.js → index-z8smhv7k.js} +1 -1
  52. package/dist/cli/index.js +32 -32
  53. package/dist/cli/{knowledge-escalator-cs7fjgy0.js → knowledge-escalator-4296y1h2.js} +10 -10
  54. package/dist/cli/{knowledge-events-262c1jg2.js → knowledge-events-31nga9yt.js} +8 -8
  55. package/dist/cli/{knowledge-link-8kcms7pj.js → knowledge-link-ydpvzam8.js} +3 -3
  56. package/dist/cli/{knowledge-store-yjrkfens.js → knowledge-store-0qz3zmq3.js} +4 -4
  57. package/dist/cli/{knowledge-validator-t98cvpt5.js → knowledge-validator-vndnwdj6.js} +6 -6
  58. package/dist/cli/{mcp-wj6143vj.js → mcp-taace90a.js} +1 -1
  59. package/dist/cli/{model-preflight-tz4ar9ys.js → model-preflight-bv8nvjjx.js} +31 -31
  60. package/dist/cli/{pending-delegations-vvbkqe24.js → pending-delegations-kwdk8j9d.js} +6 -6
  61. package/dist/cli/{pr-subscriptions-maeppcws.js → pr-subscriptions-w2fwdpkk.js} +6 -6
  62. package/dist/cli/{pr-workflow-gate-en54gabv.js → pr-workflow-gate-sqjc6jmd.js} +31 -31
  63. package/dist/cli/{runner-618229m8.js → runner-r6gxq7m1.js} +4 -4
  64. package/dist/cli/{scan-cursor-sxwh1ax8.js → scan-cursor-f74b9b4k.js} +5 -5
  65. package/dist/cli/{schema-fb8vm14k.js → schema-cyet68tw.js} +3 -1
  66. package/dist/cli/{scope-persistence-sc2zhr15.js → scope-persistence-rg8v0r8q.js} +10 -10
  67. package/dist/cli/{server-7ksq9wr7.js → server-765s4stz.js} +31 -31
  68. package/dist/cli/{skill-generator-ccmq47cm.js → skill-generator-qg5m18k7.js} +12 -12
  69. package/dist/cli/{snapshot-coordination-init-h8eg88w2.js → snapshot-coordination-init-zzs4bkmj.js} +31 -31
  70. package/dist/cli/{speckit-checkoff-vkqn317p.js → speckit-checkoff-2bsm6p0c.js} +3 -3
  71. package/dist/cli/{telemetry-vqyy5nha.js → telemetry-rzvcp2n9.js} +1 -1
  72. package/dist/cli/{worktree-collision-ownership-8hr7aycc.js → worktree-collision-ownership-qf2shp2n.js} +6 -6
  73. package/dist/cli/{worktree-isolation-gwq3y9tf.js → worktree-isolation-0b0jy6dt.js} +31 -31
  74. package/dist/commands/doctor.d.ts +5 -0
  75. package/dist/config/schema.d.ts +15 -0
  76. package/dist/context/role-filter.d.ts +2 -0
  77. package/dist/hooks/final-context-accounting.d.ts +3 -2
  78. package/dist/hooks/host-boundary.d.ts +10 -0
  79. package/dist/hooks/system-enhancer.d.ts +9 -2
  80. package/dist/hooks/system-guidance-carrier.d.ts +18 -0
  81. package/dist/index.js +56 -54
  82. package/dist/services/config-doctor.d.ts +24 -0
  83. package/dist/services/injection-budget.d.ts +56 -8
  84. package/dist/tools/save-plan.d.ts +12 -0
  85. package/opencode-swarm.schema.json +8 -0
  86. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  autoCommitDirty,
4
4
  cleanUntrackedFiles
5
- } from "./index-raws06d3.js";
5
+ } from "./index-4gr9pj67.js";
6
6
  import {
7
7
  validateSwarmPath
8
8
  } from "./index-nmh0s6dg.js";
@@ -15,10 +15,10 @@ import {
15
15
  atomicWriteFile,
16
16
  taskEvidencePath,
17
17
  withTaskEvidenceLock
18
- } from "./index-dg3f2sqq.js";
18
+ } from "./index-01wt209s.js";
19
19
  import {
20
20
  telemetry
21
- } from "./index-tt705bap.js";
21
+ } from "./index-fbhtb6f5.js";
22
22
  import {
23
23
  advisoryWarn,
24
24
  init_git_executable,
@@ -4,7 +4,7 @@ import {
4
4
  readShellAuditTail,
5
5
  redactPath,
6
6
  redactShellCommand
7
- } from "./index-9f930sy8.js";
7
+ } from "./index-pq6vr26z.js";
8
8
 
9
9
  // src/services/guardrail-log-service.ts
10
10
  var BLOCK_TYPES = new Set([
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailLog
4
- } from "./index-6dm6ettv.js";
4
+ } from "./index-b5mkznms.js";
5
5
  import {
6
6
  handleGuardrailExplain
7
- } from "./index-j8ty457v.js";
7
+ } from "./index-rwfmx7vn.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  DEFAULT_CI_DEADLINE_MS,
@@ -97,69 +97,69 @@ import {
97
97
  handleWriteRetroCommand,
98
98
  normalizeSwarmCommandInput,
99
99
  resolveCommand
100
- } from "./index-nazzb4em.js";
101
- import"./index-9f930sy8.js";
100
+ } from "./index-9yvjwfay.js";
101
+ import"./index-pq6vr26z.js";
102
102
  import"./index-hamqvzqn.js";
103
- import"./index-hsvsz3mj.js";
104
- import"./index-1hnknn34.js";
105
- import"./index-31e105jf.js";
106
- import"./index-z425p51d.js";
107
- import"./index-ydefv5fn.js";
103
+ import"./index-4t0wd9sv.js";
104
+ import"./index-46z4c89b.js";
105
+ import"./index-r30xs0wp.js";
106
+ import"./index-nvm6mxep.js";
107
+ import"./index-z8smhv7k.js";
108
108
  import"./index-txdagbh7.js";
109
- import"./index-4xr4gtwd.js";
109
+ import"./index-6b4vkz6q.js";
110
110
  import"./index-6b295cas.js";
111
- import"./index-4hnk9npg.js";
112
- import"./index-b26hje53.js";
113
- import"./index-mt0s67hg.js";
111
+ import"./index-j40czc9v.js";
112
+ import"./index-152b9c6m.js";
113
+ import"./index-3fhg7pqf.js";
114
114
  import"./index-rdec0y3z.js";
115
- import"./index-h01p5ygy.js";
115
+ import"./index-e90m050y.js";
116
116
  import"./index-cjapb4hy.js";
117
117
  import"./index-zsrtt42s.js";
118
- import"./index-y5hhkx1n.js";
118
+ import"./index-me39468k.js";
119
119
  import"./index-6h81yvyc.js";
120
120
  import"./index-0bpr8vag.js";
121
121
  import"./index-pt7h91zc.js";
122
122
  import"./index-q7sjgr1y.js";
123
- import"./index-8me6m6ew.js";
124
- import"./index-908k7jhw.js";
125
- import"./index-raws06d3.js";
126
- import"./index-bsjwchw7.js";
127
- import"./index-gaykghrm.js";
123
+ import"./index-t26gj2fh.js";
124
+ import"./index-ad3yskxy.js";
125
+ import"./index-4gr9pj67.js";
126
+ import"./index-nm8ma9xb.js";
127
+ import"./index-z3b157ew.js";
128
128
  import"./index-nmh0s6dg.js";
129
129
  import"./index-2s7dvzff.js";
130
- import"./index-qjzbs971.js";
131
- import"./index-5t08vc6m.js";
130
+ import"./index-5wk0etp8.js";
131
+ import"./index-v3hpsxvd.js";
132
132
  import"./index-rtry5xyf.js";
133
- import"./index-3qy7v4k1.js";
133
+ import"./index-edrgc139.js";
134
134
  import"./index-frcemc0b.js";
135
135
  import"./index-0725jpp7.js";
136
- import"./index-jb7ywm4w.js";
137
- import"./index-bqphhrwf.js";
138
- import"./index-wpn7ftw1.js";
136
+ import"./index-njf5pbkm.js";
137
+ import"./index-51xtrf7g.js";
138
+ import"./index-mn5zzmqx.js";
139
139
  import"./index-w81jmdkt.js";
140
140
  import"./index-3rb5gs4w.js";
141
141
  import"./index-08x7gsnf.js";
142
142
  import"./index-rdm3px0g.js";
143
143
  import"./index-ry16d01s.js";
144
- import"./index-77650pyg.js";
145
- import"./index-jk05g11c.js";
144
+ import"./index-1d6ssjcj.js";
145
+ import"./index-qyx53xrz.js";
146
146
  import"./index-vzm6zre7.js";
147
147
  import"./index-ae75rja9.js";
148
- import"./index-hb1zqz50.js";
149
- import"./index-dg3f2sqq.js";
150
- import"./index-tt705bap.js";
148
+ import"./index-74x26wyj.js";
149
+ import"./index-01wt209s.js";
150
+ import"./index-fbhtb6f5.js";
151
151
  import"./index-1xnse449.js";
152
152
  import"./index-c1ggtmpm.js";
153
153
  import"./index-ejhxgyvm.js";
154
154
  import"./index-7g4c7s5r.js";
155
155
  import"./index-5cve9g2b.js";
156
156
  import"./index-gx2vp8gx.js";
157
- import"./index-80qhm8aq.js";
157
+ import"./index-t1swv35d.js";
158
158
  import"./index-zxdawwc7.js";
159
159
  import {
160
160
  init_schema,
161
161
  stripKnownSwarmPrefix
162
- } from "./index-rhw6m7s9.js";
162
+ } from "./index-ysr6n4ca.js";
163
163
  import {
164
164
  AGENT_TOOL_MAP,
165
165
  ORCHESTRATOR_NAME,
@@ -15,13 +15,13 @@ import {
15
15
  } from "./index-08x7gsnf.js";
16
16
  import {
17
17
  observeStoreHealth
18
- } from "./index-77650pyg.js";
18
+ } from "./index-1d6ssjcj.js";
19
19
  import {
20
20
  withEvidenceLock
21
- } from "./index-dg3f2sqq.js";
21
+ } from "./index-01wt209s.js";
22
22
  import {
23
23
  telemetry
24
- } from "./index-tt705bap.js";
24
+ } from "./index-fbhtb6f5.js";
25
25
  import {
26
26
  canonicalRootKey,
27
27
  canonicalRootKeyFresh,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  init_loader,
4
4
  loadPluginConfigWithMeta
5
- } from "./index-80qhm8aq.js";
5
+ } from "./index-t1swv35d.js";
6
6
  import {
7
7
  init_schema
8
- } from "./index-rhw6m7s9.js";
8
+ } from "./index-ysr6n4ca.js";
9
9
  import {
10
10
  DEFAULT_WORKTREE_ISOLATION_CONFIG,
11
11
  init_constants
@@ -236,7 +236,7 @@ var CATALOG_SOURCE = [
236
236
  category: "delegation",
237
237
  severity: "info",
238
238
  privacyClass: "pseudonymous",
239
- producer: "src/index.ts:881",
239
+ producer: "src/index.ts:935",
240
240
  consumers: CONSUMER_COST_CORRECTION,
241
241
  retentionOwnerIssue: ISSUE_COST_RETENTION,
242
242
  requiredWorkflowIds: REQUIRE_SESSION_AND_TASK,
@@ -249,7 +249,7 @@ var CATALOG_SOURCE = [
249
249
  category: "delegation",
250
250
  severity: "info",
251
251
  privacyClass: "pseudonymous",
252
- producer: "src/index.ts:1901",
252
+ producer: "src/index.ts:1973",
253
253
  consumers: NO_CONSUMERS,
254
254
  futureOwnerIssue: ISSUE_SINK,
255
255
  retentionOwnerIssue: ISSUE_COST_RETENTION,
@@ -263,7 +263,7 @@ var CATALOG_SOURCE = [
263
263
  category: "delegation",
264
264
  severity: "notice",
265
265
  privacyClass: "pseudonymous",
266
- producer: "src/index.ts:1921",
266
+ producer: "src/index.ts:1993",
267
267
  consumers: CONSUMER_COST_JOIN,
268
268
  retentionOwnerIssue: ISSUE_COST_RETENTION,
269
269
  requiredWorkflowIds: REQUIRE_SESSION,
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  _internals,
4
4
  resolveWorktreeIsolationConfig
5
- } from "./index-3qy7v4k1.js";
5
+ } from "./index-edrgc139.js";
6
6
  import {
7
7
  ApprovalEvidenceSchema,
8
8
  BaseEvidenceSchema,
@@ -46,7 +46,7 @@ import {
46
46
  loadPluginConfigWithMeta,
47
47
  loadPluginConfigWithMetaAsync,
48
48
  resetConfigAdvisoryDedup
49
- } from "./index-80qhm8aq.js";
49
+ } from "./index-t1swv35d.js";
50
50
  import"./index-zxdawwc7.js";
51
51
  import {
52
52
  AUTO_REVIEW_V8_BURN_IN_DECISION,
@@ -72,7 +72,7 @@ import {
72
72
  TurboConfigSchema,
73
73
  WorktreeIsolationConfigSchema,
74
74
  resolveAutoReviewConfig
75
- } from "./index-rhw6m7s9.js";
75
+ } from "./index-ysr6n4ca.js";
76
76
  import {
77
77
  ALL_AGENT_NAMES,
78
78
  ALL_SUBAGENT_NAMES,
@@ -5,18 +5,18 @@ import {
5
5
  import {
6
6
  effectiveRetrievalOutcomes,
7
7
  readAuthoritativeKnowledgeCounterRollups
8
- } from "./index-gaykghrm.js";
8
+ } from "./index-z3b157ew.js";
9
9
  import {
10
10
  ALLOWED_SKILL_PATH_PREFIXES,
11
11
  validateSkillPath
12
- } from "./index-qjzbs971.js";
12
+ } from "./index-5wk0etp8.js";
13
13
  import {
14
14
  computeOutcomeSignal,
15
15
  readKnowledge,
16
16
  resolveHiveKnowledgePath,
17
17
  resolveSwarmKnowledgePath,
18
18
  transactKnowledge
19
- } from "./index-jk05g11c.js";
19
+ } from "./index-qyx53xrz.js";
20
20
  import {
21
21
  appendCappedJsonl,
22
22
  resolveRetentionCap
@@ -14,13 +14,13 @@ import {
14
14
  reconcileLandedMerge,
15
15
  withTaskEvidenceTransaction,
16
16
  writeWorkflowWalFile
17
- } from "./index-908k7jhw.js";
17
+ } from "./index-ad3yskxy.js";
18
18
  import {
19
19
  validateSwarmPath
20
20
  } from "./index-nmh0s6dg.js";
21
21
  import {
22
22
  appendCoreEventSync
23
- } from "./index-wpn7ftw1.js";
23
+ } from "./index-mn5zzmqx.js";
24
24
  import {
25
25
  canonicalRootKeyFresh
26
26
  } from "./index-1xnse449.js";
@@ -499,7 +499,7 @@ async function cleanupRecoveredWorktree(directory, descriptor, options) {
499
499
  awaitingMergeByCallID,
500
500
  cleanupStandardWorktreeForCallId,
501
501
  standardWorktreeByCallID
502
- } = await import("./worktree-isolation-gwq3y9tf.js");
502
+ } = await import("./worktree-isolation-0b0jy6dt.js");
503
503
  standardWorktreeByCallID.delete(descriptor.callID);
504
504
  if (hasResidue)
505
505
  awaitingMergeByCallID.set(descriptor.callID, {
@@ -631,7 +631,7 @@ async function recoverCoderSettlement(directory, taskId) {
631
631
  awaitingMergeByCallID,
632
632
  finishStandardWorktreeDispatch,
633
633
  standardWorktreeByCallID
634
- } = await import("./worktree-isolation-gwq3y9tf.js");
634
+ } = await import("./worktree-isolation-0b0jy6dt.js");
635
635
  const descriptor = wal.worktree;
636
636
  const reconstructedDispatch = {
637
637
  callID: descriptor.callID,
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  observeStoreHealth
4
- } from "./index-77650pyg.js";
4
+ } from "./index-1d6ssjcj.js";
5
5
  import {
6
6
  telemetry
7
- } from "./index-tt705bap.js";
7
+ } from "./index-fbhtb6f5.js";
8
8
  import {
9
9
  init_logger,
10
10
  warn
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  computePlanStructureHash
4
- } from "./index-bqphhrwf.js";
4
+ } from "./index-51xtrf7g.js";
5
5
  import {
6
6
  appendCoreEventSync
7
- } from "./index-wpn7ftw1.js";
7
+ } from "./index-mn5zzmqx.js";
8
8
  import {
9
9
  deleteCoordinationState,
10
10
  derivePlanId,
@@ -23,7 +23,7 @@ import {
23
23
  } from "./index-ry16d01s.js";
24
24
  import {
25
25
  assertProjectRoot
26
- } from "./index-dg3f2sqq.js";
26
+ } from "./index-01wt209s.js";
27
27
  import {
28
28
  require_proper_lockfile
29
29
  } from "./index-7g4c7s5r.js";
@@ -25,14 +25,14 @@ import {
25
25
  } from "./index-08x7gsnf.js";
26
26
  import {
27
27
  observeDelegationLedgerPressure
28
- } from "./index-77650pyg.js";
28
+ } from "./index-1d6ssjcj.js";
29
29
  import {
30
30
  EvidenceLockTimeoutError,
31
31
  withEvidenceLock
32
- } from "./index-dg3f2sqq.js";
32
+ } from "./index-01wt209s.js";
33
33
  import {
34
34
  telemetry
35
- } from "./index-tt705bap.js";
35
+ } from "./index-fbhtb6f5.js";
36
36
  import {
37
37
  canonicalRootKeyFresh,
38
38
  sameProjectRoot
@@ -4669,7 +4669,7 @@ async function reconcileLegacyCoderSettlements(directory, maxRecords, onReconcil
4669
4669
  const candidates = readDelegations(directory).filter((record) => record.normalizedAgent === "coder" && Boolean(record.legacyCoderSettlementTransfer) && Boolean(record.terminalResult)).slice(0, maxRecords);
4670
4670
  if (candidates.length === 0)
4671
4671
  return 0;
4672
- const { transferCoderSettlementToBackground } = await import("./coder-settlement-rserb0hm.js");
4672
+ const { transferCoderSettlementToBackground } = await import("./coder-settlement-vrc5zxvv.js");
4673
4673
  let transferred = 0;
4674
4674
  for (const record of candidates) {
4675
4675
  try {
@@ -3,10 +3,10 @@ import {
3
3
  EvaluationRunV1Schema,
4
4
  GateAuditResultV1Schema,
5
5
  getProtectedEvaluationRunIds
6
- } from "./index-ydefv5fn.js";
6
+ } from "./index-z8smhv7k.js";
7
7
  import {
8
8
  readEffectiveSpecSync
9
- } from "./index-4xr4gtwd.js";
9
+ } from "./index-6b4vkz6q.js";
10
10
  import {
11
11
  validateWorkspaceRoot
12
12
  } from "./index-6b295cas.js";
@@ -23,7 +23,7 @@ import {
23
23
  readTaskEvidence,
24
24
  readTaskEvidenceRaw,
25
25
  sanitizeTaskId
26
- } from "./index-908k7jhw.js";
26
+ } from "./index-ad3yskxy.js";
27
27
  import {
28
28
  estimateCharsForTokens,
29
29
  estimateTokens,
@@ -58,10 +58,10 @@ import {
58
58
  replayFromLedgerWithStatus,
59
59
  takeSnapshotEvent,
60
60
  takeSnapshotWithRetry
61
- } from "./index-bqphhrwf.js";
61
+ } from "./index-51xtrf7g.js";
62
62
  import {
63
63
  appendCoreEventSync
64
- } from "./index-wpn7ftw1.js";
64
+ } from "./index-mn5zzmqx.js";
65
65
  import {
66
66
  derivePlanId,
67
67
  derivePlanIdentityHash,
@@ -79,10 +79,10 @@ import {
79
79
  import {
80
80
  assertProjectRoot,
81
81
  withEvidenceLock
82
- } from "./index-dg3f2sqq.js";
82
+ } from "./index-01wt209s.js";
83
83
  import {
84
84
  emit
85
- } from "./index-tt705bap.js";
85
+ } from "./index-fbhtb6f5.js";
86
86
  import {
87
87
  canonicalRootKeyFresh
88
88
  } from "./index-1xnse449.js";
@@ -2940,7 +2940,7 @@ async function updateTaskStatus(directory, taskId, status, options) {
2940
2940
  if (status === "completed") {
2941
2941
  try {
2942
2942
  const completedTask = updatedPlan.phases.flatMap((phase) => phase.tasks).find((candidate) => candidate.id === taskId);
2943
- const { maybePropagateSpeckitCheckoff } = await import("./speckit-checkoff-vkqn317p.js");
2943
+ const { maybePropagateSpeckitCheckoff } = await import("./speckit-checkoff-2bsm6p0c.js");
2944
2944
  await maybePropagateSpeckitCheckoff(directory, {
2945
2945
  taskId,
2946
2946
  frRefs: completedTask?.fr_refs ?? [],
@@ -2965,7 +2965,7 @@ async function updateTaskStatus(directory, taskId, status, options) {
2965
2965
  break;
2966
2966
  }
2967
2967
  }
2968
- const { readDeclaredScopeFilesFromBindings } = await import("./scope-persistence-sc2zhr15.js");
2968
+ const { readDeclaredScopeFilesFromBindings } = await import("./scope-persistence-rg8v0r8q.js");
2969
2969
  const canonicalScope = readDeclaredScopeFilesFromBindings({
2970
2970
  directory,
2971
2971
  taskId,
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  observeStoreHealth
4
- } from "./index-77650pyg.js";
4
+ } from "./index-1d6ssjcj.js";
5
5
  import {
6
6
  telemetry
7
- } from "./index-tt705bap.js";
7
+ } from "./index-fbhtb6f5.js";
8
8
  import {
9
9
  init_schema,
10
10
  stripKnownSwarmPrefix
11
- } from "./index-rhw6m7s9.js";
11
+ } from "./index-ysr6n4ca.js";
12
12
  import {
13
13
  init_constants
14
14
  } from "./index-wzec3c4g.js";
@@ -11,10 +11,10 @@ import {
11
11
  } from "./index-ae75rja9.js";
12
12
  import {
13
13
  resolveKnowledgeStoreDir
14
- } from "./index-hb1zqz50.js";
14
+ } from "./index-74x26wyj.js";
15
15
  import {
16
16
  atomicWriteFile
17
- } from "./index-dg3f2sqq.js";
17
+ } from "./index-01wt209s.js";
18
18
  import {
19
19
  require_proper_lockfile
20
20
  } from "./index-7g4c7s5r.js";
@@ -739,7 +739,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
739
739
  const {
740
740
  readAuthoritativeKnowledgeCounterRollups,
741
741
  effectiveRetrievalOutcomes
742
- } = await import("./knowledge-events-262c1jg2.js");
742
+ } = await import("./knowledge-events-31nga9yt.js");
743
743
  const rollups = await readAuthoritativeKnowledgeCounterRollups(directory);
744
744
  const flagIds = new Set;
745
745
  for (const e of atFloor) {
@@ -806,11 +806,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
806
806
  });
807
807
  }
808
808
  if (action === "quarantine" && toQuarantine.length > 0) {
809
- const { quarantineEntry } = await import("./knowledge-validator-t98cvpt5.js");
810
- const { KnowledgeConfigSchema } = await import("./schema-fb8vm14k.js");
809
+ const { quarantineEntry } = await import("./knowledge-validator-vndnwdj6.js");
810
+ const { KnowledgeConfigSchema } = await import("./schema-cyet68tw.js");
811
811
  let config;
812
812
  try {
813
- const { loadPluginConfigWithMeta } = await import("./index-ak1dd17g.js");
813
+ const { loadPluginConfigWithMeta } = await import("./index-fs9y88h1.js");
814
814
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
815
815
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
816
816
  } catch {
@@ -12,7 +12,7 @@ import {
12
12
  PluginConfigSchema,
13
13
  init_schema,
14
14
  stripKnownSwarmPrefix
15
- } from "./index-rhw6m7s9.js";
15
+ } from "./index-ysr6n4ca.js";
16
16
  import {
17
17
  ALL_AGENT_NAMES,
18
18
  TOOL_NAME_SET,
@@ -75,6 +75,27 @@ var DEPRECATED_FIELDS = new Map([
75
75
  }
76
76
  ]
77
77
  ]);
78
+ var CURRENT_CONFIG_FORMAT_VERSION = 3;
79
+ var DEFAULT_FLIPS = [
80
+ {
81
+ field: "auto_review.enabled",
82
+ v7Default: "false (opt-in)",
83
+ v8Default: "release-gated true (advisory) \u2014 activates on the first 8.x release",
84
+ killSwitch: "auto_review.enabled: false",
85
+ preset: "conservative",
86
+ sinceVersion: 3,
87
+ evidence: "docs/defaults-governance.md"
88
+ },
89
+ {
90
+ field: "execution_profile.parallelization_enabled",
91
+ v7Default: "false (serial)",
92
+ v8Default: "true for new plans (since v7.132.0, gate-enforced serial fallback)",
93
+ killSwitch: "execution_profile.parallelization_enabled: false (per plan)",
94
+ preset: "conservative",
95
+ sinceVersion: 3,
96
+ evidence: "docs/defaults-governance.md"
97
+ }
98
+ ];
78
99
  function levenshteinDistance(a, b) {
79
100
  const al = a.length;
80
101
  const bl = b.length;
@@ -651,6 +672,20 @@ function validateConfigKey(path2, value) {
651
672
  }
652
673
  break;
653
674
  }
675
+ case "preset": {
676
+ if (value !== "default" && value !== "conservative") {
677
+ findings.push({
678
+ id: "type-mismatch",
679
+ title: `Config field "${path2}" has wrong type`,
680
+ description: `Expected "default" or "conservative", got ${JSON.stringify(value)}`,
681
+ severity: "error",
682
+ path: path2,
683
+ currentValue: value,
684
+ autoFixable: false
685
+ });
686
+ }
687
+ break;
688
+ }
654
689
  case "guardrails.enabled": {
655
690
  if (value === false) {
656
691
  findings.push({
@@ -1480,6 +1515,22 @@ function runConfigDoctor(config, directory) {
1480
1515
  });
1481
1516
  }
1482
1517
  }
1518
+ for (const flip of DEFAULT_FLIPS) {
1519
+ if (configVersion < flip.sinceVersion) {
1520
+ findings.push({
1521
+ id: "defaults-flip",
1522
+ title: `v8 default change pending for "${flip.field}"`,
1523
+ description: `Default flips from ${flip.v7Default} to ${flip.v8Default}. ` + `Kill switch: set ${flip.killSwitch}. ` + `Restore all v7 defaults with preset: "${flip.preset}". ` + `Evidence and rollback: ${flip.evidence} (#2504).`,
1524
+ severity: "info",
1525
+ path: flip.field,
1526
+ currentValue: "v7 default",
1527
+ autoFixable: false
1528
+ });
1529
+ }
1530
+ }
1531
+ summary.info = findings.filter((f) => f.severity === "info").length;
1532
+ summary.warn = findings.filter((f) => f.severity === "warn").length;
1533
+ summary.error = findings.filter((f) => f.severity === "error").length;
1483
1534
  return {
1484
1535
  findings,
1485
1536
  summary,
@@ -1763,6 +1814,33 @@ async function runConfigDoctorWithFixes(directory, config, autoFix = false, opti
1763
1814
  backupPath = writeBackupArtifact(directory, backup);
1764
1815
  }
1765
1816
  const { appliedFixes, updatedConfigPath } = applySafeAutoFixes(directory, result, options);
1817
+ const hasDefaultsFlipFindings = result.findings.some((finding) => finding.id === "defaults-flip");
1818
+ if (options.applyLossy === true && (appliedFixes.length > 0 || hasDefaultsFlipFindings)) {
1819
+ try {
1820
+ const {
1821
+ userConfigPath: stampUserPath,
1822
+ projectConfigPath: stampProjectPath
1823
+ } = getConfigPaths(directory);
1824
+ const stampPath = fs.existsSync(stampProjectPath) ? stampProjectPath : fs.existsSync(stampUserPath) ? stampUserPath : null;
1825
+ if (stampPath) {
1826
+ const stampContent = fs.readFileSync(stampPath, "utf-8");
1827
+ const sanitizedStampContent = stampContent.charCodeAt(0) === 65279 ? stampContent.slice(1) : stampContent;
1828
+ const stampConfig = JSON.parse(sanitizedStampContent);
1829
+ const currentVersion = stampConfig.config_format_version;
1830
+ const shouldStamp = typeof currentVersion !== "number" || !Number.isInteger(currentVersion) || currentVersion < 0 || currentVersion < CURRENT_CONFIG_FORMAT_VERSION;
1831
+ if (shouldStamp) {
1832
+ stampConfig.config_format_version = CURRENT_CONFIG_FORMAT_VERSION;
1833
+ const stampDir = path.dirname(stampPath);
1834
+ if (!fs.existsSync(stampDir)) {
1835
+ fs.mkdirSync(stampDir, { recursive: true });
1836
+ }
1837
+ atomicWriteFileSync(stampPath, JSON.stringify(stampConfig, null, 2));
1838
+ }
1839
+ }
1840
+ } catch (stampError) {
1841
+ log(`[ConfigDoctor] acknowledgment stamp failed (non-fatal): ${stampError instanceof Error ? stampError.message : String(stampError)}`);
1842
+ }
1843
+ }
1766
1844
  if (appliedFixes.length > 0) {
1767
1845
  const freshConfig = readConfigFromFile(directory);
1768
1846
  if (freshConfig) {
@@ -1887,4 +1965,4 @@ function removeStraySwarmDir(projectRoot, strayPath) {
1887
1965
  }
1888
1966
  }
1889
1967
 
1890
- export { LEAN_TURBO_GATE_PRODUCERS, collectLeanTurboGateSatisfiabilityFindings, getConfigPaths, createConfigBackup, writeBackupArtifact, restoreFromBackup, runConfigDoctor, applySafeAutoFixes, readDoctorArtifact, writeDoctorArtifact, shouldRunOnStartup, runConfigDoctorWithFixes, detectStraySwarmDirs, removeStraySwarmDir };
1968
+ export { CURRENT_CONFIG_FORMAT_VERSION, DEFAULT_FLIPS, LEAN_TURBO_GATE_PRODUCERS, collectLeanTurboGateSatisfiabilityFindings, getConfigPaths, createConfigBackup, writeBackupArtifact, restoreFromBackup, runConfigDoctor, applySafeAutoFixes, readDoctorArtifact, writeDoctorArtifact, shouldRunOnStartup, runConfigDoctorWithFixes, detectStraySwarmDirs, removeStraySwarmDir };
@@ -14,14 +14,14 @@ import {
14
14
  detectWindowsWrites,
15
15
  getSharedClassifierGuardrailBlock,
16
16
  resolveWriteTargets
17
- } from "./index-nazzb4em.js";
17
+ } from "./index-9yvjwfay.js";
18
18
  import {
19
19
  checkFileAuthority,
20
20
  classifyFile,
21
21
  isInDeclaredScope,
22
22
  redactPath,
23
23
  redactShellCommand
24
- } from "./index-9f930sy8.js";
24
+ } from "./index-pq6vr26z.js";
25
25
 
26
26
  // src/services/guardrail-explain-service.ts
27
27
  import path from "path";
@@ -6,13 +6,14 @@ import {
6
6
  init_warning_buffer
7
7
  } from "./index-zxdawwc7.js";
8
8
  import {
9
+ CONSERVATIVE_PRESET_BASE,
9
10
  ExternalSkillsConfigSchema,
10
11
  GATE_CONFIG_KNOWN_SECTION_KEYS,
11
12
  GateConfigSchema,
12
13
  PluginConfigSchema,
13
14
  init_schema,
14
15
  resolveExternalSkillsConfig
15
- } from "./index-rhw6m7s9.js";
16
+ } from "./index-ysr6n4ca.js";
16
17
  import {
17
18
  DangerousMergeKeyError,
18
19
  MAX_MERGE_DEPTH,
@@ -315,7 +316,7 @@ function migratePresetsConfig(raw) {
315
316
  return migrated;
316
317
  }
317
318
  }
318
- const dormantLegacyKeys = ["preset", "presets", "swarm_mode"].filter((key) => (key in raw));
319
+ const dormantLegacyKeys = ["preset", "presets", "swarm_mode"].filter((key) => (key in raw) && (key !== "preset" || raw.preset !== "default" && raw.preset !== "conservative"));
319
320
  if (dormantLegacyKeys.length > 0 && raw.agents) {
320
321
  const cleaned = { ...raw };
321
322
  for (const key of dormantLegacyKeys) {
@@ -514,6 +515,9 @@ function buildConfigWithMeta(rawUserConfig, rawProjectConfig, loadedFromFile, co
514
515
  mergedRaw = { ...mergedRaw, full_auto: { ...fa, locked: true } };
515
516
  }
516
517
  mergedRaw = migratePresetsConfig(mergedRaw);
518
+ if (mergedRaw.preset === "conservative") {
519
+ mergedRaw = deepMerge(CONSERVATIVE_PRESET_BASE, mergedRaw);
520
+ }
517
521
  const {
518
522
  result: sanitized,
519
523
  strippedKeys: gatesStripped,
@@ -574,7 +578,9 @@ function buildConfigWithMeta(rawUserConfig, rawProjectConfig, loadedFromFile, co
574
578
  strippedKeys: userGatesStripped,
575
579
  rawGates: userRawGates
576
580
  } = sanitizeSectionConfigs(rawUserConfig);
577
- const userParseResult = PluginConfigSchema.safeParse(userSanitized);
581
+ const userPresetMigrated = migratePresetsConfig(userSanitized);
582
+ const userPresetReady = userPresetMigrated.preset === "conservative" ? deepMerge(CONSERVATIVE_PRESET_BASE, userPresetMigrated) : userPresetMigrated;
583
+ const userParseResult = PluginConfigSchema.safeParse(userPresetReady);
578
584
  if (userParseResult.success) {
579
585
  advisoryWarn("[opencode-swarm] Project config ignored due to validation errors. Using user config.");
580
586
  return {
@@ -587,7 +593,7 @@ function buildConfigWithMeta(rawUserConfig, rawProjectConfig, loadedFromFile, co
587
593
  rawGates: userRawGates
588
594
  };
589
595
  }
590
- const userStripped = stripUnrecognizedKeys(userSanitized, userParseResult.error);
596
+ const userStripped = stripUnrecognizedKeys(userPresetReady, userParseResult.error);
591
597
  if (userStripped.removed.length > 0) {
592
598
  const userRecovered = PluginConfigSchema.safeParse(userStripped.cleaned);
593
599
  if (userRecovered.success) {