mister-wolf 2.19.0 → 2.20.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/README.md +12 -1
  2. package/README.ru.md +19 -2
  3. package/dist/adapters/cli/commands/memory-doctor.d.ts.map +1 -1
  4. package/dist/adapters/cli/commands/memory-doctor.js.map +1 -1
  5. package/dist/adapters/cli/commands/memory-uninstall.d.ts.map +1 -1
  6. package/dist/adapters/cli/commands/memory-uninstall.js.map +1 -1
  7. package/dist/adapters/cli/commands/memory-upgrade.d.ts +143 -2
  8. package/dist/adapters/cli/commands/memory-upgrade.d.ts.map +1 -1
  9. package/dist/adapters/cli/commands/memory-upgrade.js +887 -41
  10. package/dist/adapters/cli/commands/memory-upgrade.js.map +1 -1
  11. package/dist/adapters/cli/commands/upgrade-projects.d.ts +4 -2
  12. package/dist/adapters/cli/commands/upgrade-projects.d.ts.map +1 -1
  13. package/dist/adapters/cli/commands/upgrade-projects.js +17 -7
  14. package/dist/adapters/cli/commands/upgrade-projects.js.map +1 -1
  15. package/dist/adapters/platforms/index.d.ts.map +1 -1
  16. package/dist/adapters/platforms/index.js +2 -1
  17. package/dist/adapters/platforms/index.js.map +1 -1
  18. package/dist/adapters/platforms/opencode-adapter.d.ts +13 -4
  19. package/dist/adapters/platforms/opencode-adapter.d.ts.map +1 -1
  20. package/dist/adapters/platforms/opencode-adapter.js +278 -55
  21. package/dist/adapters/platforms/opencode-adapter.js.map +1 -1
  22. package/dist/adapters/platforms/opencode-config-keys.d.ts +78 -0
  23. package/dist/adapters/platforms/opencode-config-keys.d.ts.map +1 -0
  24. package/dist/adapters/platforms/opencode-config-keys.js +169 -0
  25. package/dist/adapters/platforms/opencode-config-keys.js.map +1 -0
  26. package/dist/adapters/render/opencode/opencode-renderer.d.ts +35 -7
  27. package/dist/adapters/render/opencode/opencode-renderer.d.ts.map +1 -1
  28. package/dist/adapters/render/opencode/opencode-renderer.js +395 -115
  29. package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -1
  30. package/dist/adapters/render/stamp.d.ts +2 -0
  31. package/dist/adapters/render/stamp.d.ts.map +1 -1
  32. package/dist/adapters/render/stamp.js +9 -1
  33. package/dist/adapters/render/stamp.js.map +1 -1
  34. package/dist/adapters/render/sync-state.d.ts +15 -3
  35. package/dist/adapters/render/sync-state.d.ts.map +1 -1
  36. package/dist/adapters/render/sync-state.js +52 -8
  37. package/dist/adapters/render/sync-state.js.map +1 -1
  38. package/dist/app/use-cases/decisions.d.ts +247 -0
  39. package/dist/app/use-cases/decisions.d.ts.map +1 -0
  40. package/dist/app/use-cases/decisions.js +528 -0
  41. package/dist/app/use-cases/decisions.js.map +1 -0
  42. package/dist/app/use-cases/doctor.d.ts.map +1 -1
  43. package/dist/app/use-cases/doctor.js +6 -0
  44. package/dist/app/use-cases/doctor.js.map +1 -1
  45. package/dist/app/use-cases/init-project.d.ts.map +1 -1
  46. package/dist/app/use-cases/init-project.js +39 -3
  47. package/dist/app/use-cases/init-project.js.map +1 -1
  48. package/dist/app/use-cases/platform-mismatch.d.ts +2 -1
  49. package/dist/app/use-cases/platform-mismatch.d.ts.map +1 -1
  50. package/dist/app/use-cases/platform-mismatch.js.map +1 -1
  51. package/dist/app/use-cases/project-step.d.ts +20 -1
  52. package/dist/app/use-cases/project-step.d.ts.map +1 -1
  53. package/dist/app/use-cases/project-step.js +101 -15
  54. package/dist/app/use-cases/project-step.js.map +1 -1
  55. package/dist/app/use-cases/repair-platform.d.ts +2 -1
  56. package/dist/app/use-cases/repair-platform.d.ts.map +1 -1
  57. package/dist/app/use-cases/repair-platform.js +4 -1
  58. package/dist/app/use-cases/repair-platform.js.map +1 -1
  59. package/dist/app/use-cases/sync-base-set.d.ts +4 -2
  60. package/dist/app/use-cases/sync-base-set.d.ts.map +1 -1
  61. package/dist/app/use-cases/sync-base-set.js +4 -2
  62. package/dist/app/use-cases/sync-base-set.js.map +1 -1
  63. package/dist/app/use-cases/tool-librarian.d.ts.map +1 -1
  64. package/dist/app/use-cases/tool-librarian.js +3 -1
  65. package/dist/app/use-cases/tool-librarian.js.map +1 -1
  66. package/dist/app/use-cases/uninstall.d.ts +2 -1
  67. package/dist/app/use-cases/uninstall.d.ts.map +1 -1
  68. package/dist/app/use-cases/uninstall.js.map +1 -1
  69. package/dist/app/use-cases/upgrade-projects.d.ts +30 -0
  70. package/dist/app/use-cases/upgrade-projects.d.ts.map +1 -1
  71. package/dist/app/use-cases/upgrade-projects.js +119 -4
  72. package/dist/app/use-cases/upgrade-projects.js.map +1 -1
  73. package/dist/app/use-cases/verify-against-map.d.ts +5 -1
  74. package/dist/app/use-cases/verify-against-map.d.ts.map +1 -1
  75. package/dist/app/use-cases/verify-against-map.js +34 -6
  76. package/dist/app/use-cases/verify-against-map.js.map +1 -1
  77. package/dist/domain/line-diff.d.ts +36 -0
  78. package/dist/domain/line-diff.d.ts.map +1 -0
  79. package/dist/domain/line-diff.js +175 -0
  80. package/dist/domain/line-diff.js.map +1 -0
  81. package/dist/domain/protect-key.d.ts +21 -0
  82. package/dist/domain/protect-key.d.ts.map +1 -0
  83. package/dist/domain/protect-key.js +112 -0
  84. package/dist/domain/protect-key.js.map +1 -0
  85. package/dist/ports/base-set-renderer.port.d.ts +51 -3
  86. package/dist/ports/base-set-renderer.port.d.ts.map +1 -1
  87. package/dist/ports/platform-adapter.port.d.ts +8 -2
  88. package/dist/ports/platform-adapter.port.d.ts.map +1 -1
  89. package/package.json +1 -1
  90. package/templates/.wolf/router.log +1 -1
  91. package/templates/base/AGENTS.md +6 -3
  92. package/update-map.json +2 -2
@@ -6,10 +6,18 @@ import { basename, join } from 'path';
6
6
  import { parseJsonc } from './jsonc.js';
7
7
  import { writeFileAtomic } from '../fs/markdown-memory-store.js';
8
8
  import { UserFacingError } from '../../domain/errors.js';
9
- /** Дефолтный агент Wolf в opencode (§6.1). */
10
- export const DEFAULT_AGENT = 'mr-wolf';
11
- /** Глубина субагентов: executor-lead спавнит worker-* (трёхуровневая схема). */
12
- export const SUBAGENT_DEPTH = 2;
9
+ import { parseStamp } from '../render/stamp.js';
10
+ import yaml from 'js-yaml';
11
+ import { DEFAULT_AGENT, DEFAULT_AGENT_KEY, MCP_KEY, MCP_ROOT, MCP_SERVERS, SUBAGENT_DEPTH, SUBAGENT_DEPTH_KEY, WOLF_MCP_COMMAND, deletePath, getPath, getRecordAt, isWolfMcpEntry, legacyPathOf, blockedSegment, mcpEntryNative, pathWritable, readWolfMcp, setPath, } from './opencode-config-keys.js';
12
+ export { DEFAULT_AGENT, SUBAGENT_DEPTH };
13
+ /** Каноническая команда wolf: removeWolf/configIssues не получают cmd, ownership проверяем ею. */
14
+ const WOLF_CMD = WOLF_MCP_COMMAND;
15
+ /** Значение глубины в действующем месте — наше или совместимое (>= SUBAGENT_DEPTH). */
16
+ function depthIsOurs(value) {
17
+ return typeof value === 'number' && value >= SUBAGENT_DEPTH;
18
+ }
19
+ const dotted = (key) => key.writePath.join('.');
20
+ const leaf = (key) => key.writePath[key.writePath.length - 1];
13
21
  const execFileAsync = promisify(execFile);
14
22
  /** Минимальная поддержанная v1 (порог диапазона). */
15
23
  const V1_MIN_MINOR = 18;
@@ -17,6 +25,9 @@ const V1_MIN_PATCH = 29;
17
25
  /**
18
26
  * Чистый парсер `opencode --version`. Эмпирика форматов: v1 печатает `1.18.35`,
19
27
  * v2 — `opencode v2.0.24`; regex вытаскивает M.m.p из обоих.
28
+ *
29
+ * Нативная форма `mcp.servers.<name>` принимается opencode >= 1.18.29 (v2-compat hoist),
30
+ * а порог v1 в коде — ровно 1.18.29: ветвление по версии для выбора формы не нужно.
20
31
  */
21
32
  export function parseOpencodeVersion(raw) {
22
33
  const trimmed = raw.trim();
@@ -79,41 +90,103 @@ export class OpencodeAdapter {
79
90
  async writeConfig(projectRoot, cmd) {
80
91
  const file = this.configFile(projectRoot);
81
92
  const cfg = (await this.readConfig(projectRoot)) ?? {};
82
- const mcp = asRecord(cfg.mcp) ?? {};
83
- // каноническая проекция McpCommand в формат opencode: command — массив
84
- const desired = { type: 'local', command: [cmd.command, ...cmd.args], enabled: true };
85
- const mcpOk = JSON.stringify(mcp.wolf) === JSON.stringify(desired);
86
- // §6.1: default_agent и subagent_depth мерджатся рядом с mcp.wolf
87
- const da = cfg.default_agent;
88
- const sd = cfg.subagent_depth;
93
+ // 6.3: пишем нативную форму mcp.servers.wolf, легаси mcp.wolf снимаем только если он наш
94
+ const desired = mcpEntryNative(cmd);
95
+ const mcpWritable = pathWritable(cfg, MCP_KEY.writePath);
96
+ const nativeEntry = getPath(cfg, MCP_KEY.writePath);
97
+ const mcpOk = mcpWritable && JSON.stringify(nativeEntry) === JSON.stringify(desired);
98
+ const legacyMcpPath = legacyPathOf(MCP_KEY);
99
+ const legacyMcp = getRecordAt(cfg, legacyMcpPath);
100
+ const legacyMcpOurs = legacyMcp !== undefined && isWolfMcpEntry(legacyMcp, cmd);
89
101
  const reasons = [];
102
+ const mcpBlocked = blockedSegment(cfg, MCP_KEY.writePath);
103
+ if (mcpBlocked !== undefined) {
104
+ reasons.push(`${mcpBlocked} is not an object; ${MCP_KEY.label} is not written — fix the conflicting key manually`);
105
+ }
106
+ // §6.1: default_agent и experimental.subagent_depth мерджатся рядом с mcp.servers.wolf
107
+ const da = getPath(cfg, DEFAULT_AGENT_KEY.writePath);
90
108
  if (da !== undefined && da !== DEFAULT_AGENT) {
91
- reasons.push(`default_agent=${da} is taken; mr-wolf not assigned`);
109
+ reasons.push(`${DEFAULT_AGENT_KEY.label}=${da} is taken; ${DEFAULT_AGENT} not assigned`);
110
+ }
111
+ if (legacyMcp !== undefined) {
112
+ if (legacyMcpOurs) {
113
+ reasons.push(`removed deprecated top-level ${legacyMcpPath.join('.')} (migrated to ${MCP_KEY.label})`);
114
+ }
115
+ else {
116
+ reasons.push(`top-level ${legacyMcpPath.join('.')} is deprecated and foreign (command differs); ${MCP_KEY.label} is used`);
117
+ }
118
+ }
119
+ const migrateLegacyMcp = legacyMcpOurs;
120
+ const replaced = nativeEntry !== undefined && !mcpOk;
121
+ if (replaced)
122
+ reasons.push(`replaced non-canonical ${MCP_KEY.label} entry with the canonical Wolf entry`);
123
+ // opencode v2: действует только experimental.subagent_depth. Верхнеуровневый ключ —
124
+ // deprecated: наше точное значение мигрируем, чужое не трогаем и сообщаем.
125
+ const depthPath = SUBAGENT_DEPTH_KEY.writePath;
126
+ const depthLeaf = leaf(SUBAGENT_DEPTH_KEY);
127
+ const depthLabel = dotted(SUBAGENT_DEPTH_KEY);
128
+ const legacyDepthPath = legacyPathOf(SUBAGENT_DEPTH_KEY);
129
+ const experimental = getRecordAt(cfg, depthPath.slice(0, -1));
130
+ const expSd = experimental?.[depthLeaf];
131
+ const legacySd = getPath(cfg, legacyDepthPath);
132
+ const depthOk = depthIsOurs(expSd);
133
+ const legacyOurs = legacySd === SUBAGENT_DEPTH;
134
+ let setDepth = false;
135
+ let dropLegacy = false;
136
+ const depthWritable = pathWritable(cfg, depthPath);
137
+ if (!depthWritable) {
138
+ reasons.push(`experimental is not an object; ${depthLeaf} is not written — set ${depthLabel}: ${SUBAGENT_DEPTH} manually`);
139
+ }
140
+ else if (depthOk) {
141
+ if (legacyOurs) {
142
+ dropLegacy = true; // оба ключа наши: легаси — только шум, убираем
143
+ reasons.push(`removed deprecated top-level ${depthLeaf}=${SUBAGENT_DEPTH} (ignored by opencode v2)`);
144
+ }
145
+ else if (legacySd !== undefined) {
146
+ reasons.push(`top-level ${depthLeaf}=${legacySd} is deprecated and ignored by opencode v2; ${depthLabel} is used`);
147
+ }
148
+ }
149
+ else if (expSd !== undefined) {
150
+ reasons.push(`${depthLabel}=${expSd} is taken; the three-level scheme will not work, set >=2`);
92
151
  }
93
- if (sd !== undefined && !(typeof sd === 'number' && sd >= SUBAGENT_DEPTH)) {
94
- reasons.push(`subagent_depth=${sd} is taken; the three-level scheme will not work, set >=2`);
152
+ else if (legacyOurs) {
153
+ setDepth = true;
154
+ dropLegacy = true;
155
+ reasons.push(`migrated ${depthLeaf} to ${depthLabel}`);
156
+ }
157
+ else if (legacySd !== undefined) {
158
+ reasons.push(`top-level ${depthLeaf}=${legacySd} is taken; the key is deprecated and ignored by opencode v2 — set ${depthLabel} >=${SUBAGENT_DEPTH}`);
159
+ }
160
+ else {
161
+ setDepth = true;
95
162
  }
96
163
  const reason = reasons.length > 0 ? reasons.join('; ') : undefined;
97
164
  // F6 (спека 2.1.0 §2.4): фактические wolf-ключи после ensured — только наши
98
- // (mcp.wolf в обоих ветках ниже каноничен; default_agent/subagent_depth — если ключ наш, не занят чужим значением)
165
+ // (mcp.servers.wolf каноничен; default_agent/subagent_depth — если ключ наш, не занят чужим значением)
99
166
  const ours = () => {
100
- const keys = ['mcp.wolf'];
101
- if (cfg.default_agent === DEFAULT_AGENT)
102
- keys.push(`default_agent=${DEFAULT_AGENT}`);
103
- if (typeof cfg.subagent_depth === 'number' && cfg.subagent_depth >= SUBAGENT_DEPTH)
104
- keys.push(`subagent_depth=${cfg.subagent_depth}`);
167
+ const keys = mcpWritable ? [MCP_KEY.label] : [];
168
+ if (getPath(cfg, DEFAULT_AGENT_KEY.writePath) === DEFAULT_AGENT)
169
+ keys.push(`${DEFAULT_AGENT_KEY.label}=${DEFAULT_AGENT}`);
170
+ const sd = getRecordAt(cfg, depthPath.slice(0, -1))?.[depthLeaf];
171
+ if (depthIsOurs(sd))
172
+ keys.push(`${depthLeaf}=${sd}`);
105
173
  return keys;
106
174
  };
107
- // unchanged — по ВСЕМ ключам: корректный mcp.wolf не маскирует отсутствие default_agent/subagent_depth
108
- if (mcpOk && da !== undefined && sd !== undefined)
175
+ // unchanged — по ВСЕМ ключам: корректный mcp.servers.wolf не маскирует отсутствие default_agent/subagent_depth;
176
+ // занятое чужим значением место depth тоже settled (не перезаписываем — только reason);
177
+ // наш легаси mcp.wolf — не settled: его надо снять записью.
178
+ if ((mcpOk || !mcpWritable) && da !== undefined && !setDepth && !dropLegacy && !migrateLegacyMcp)
109
179
  return { action: 'unchanged', reason, configFile: basename(file), keys: ours() };
110
- const replaced = mcp.wolf !== undefined && !mcpOk;
111
- mcp.wolf = desired;
112
- cfg.mcp = mcp;
180
+ if (mcpWritable)
181
+ setPath(cfg, MCP_KEY.writePath, desired);
182
+ if (migrateLegacyMcp)
183
+ deletePath(cfg, legacyMcpPath);
113
184
  if (da === undefined)
114
- cfg.default_agent = DEFAULT_AGENT; // конфликтный ключ не трогаем
115
- if (sd === undefined)
116
- cfg.subagent_depth = SUBAGENT_DEPTH; // конфликтный ключ не трогаем
185
+ setPath(cfg, DEFAULT_AGENT_KEY.writePath, DEFAULT_AGENT); // конфликтный ключ не трогаем
186
+ if (setDepth)
187
+ setPath(cfg, depthPath, SUBAGENT_DEPTH);
188
+ if (dropLegacy)
189
+ deletePath(cfg, legacyDepthPath);
117
190
  await writeFileAtomic(file, JSON.stringify(cfg, null, 2) + '\n');
118
191
  return { action: replaced ? 'replaced' : 'written', reason, configFile: basename(file), keys: ours() };
119
192
  }
@@ -122,20 +195,28 @@ export class OpencodeAdapter {
122
195
  const cfg = await this.readConfig(projectRoot);
123
196
  if (cfg === null)
124
197
  return false;
125
- const mcp = asRecord(cfg.mcp);
126
- if (mcp === undefined || mcp.wolf === undefined)
198
+ const legacyMcpPath = legacyPathOf(MCP_KEY);
199
+ const nativeEntry = getPath(cfg, MCP_KEY.writePath);
200
+ const legacyEntry = getPath(cfg, legacyMcpPath);
201
+ let removed = false;
202
+ if (nativeEntry !== undefined && isWolfMcpEntry(nativeEntry, WOLF_CMD)) {
203
+ deletePath(cfg, MCP_KEY.writePath);
204
+ removed = true;
205
+ }
206
+ if (legacyEntry !== undefined && isWolfMcpEntry(legacyEntry, WOLF_CMD)) {
207
+ deletePath(cfg, legacyMcpPath);
208
+ removed = true;
209
+ }
210
+ if (!removed)
127
211
  return false;
128
- delete mcp.wolf;
129
- if (Object.keys(mcp).length === 0)
130
- delete cfg.mcp;
131
- else
132
- cfg.mcp = mcp;
133
212
  await writeFileAtomic(file, JSON.stringify(cfg, null, 2) + '\n');
134
213
  return true;
135
214
  }
136
215
  /**
137
216
  * 2.16.2 (uninstall, F-07): только wolf-ключи с точным нашим значением.
138
217
  * Пользовательские default_agent/subagent_depth (не наши точные значения) не трогаем.
218
+ * Глубина: `experimental.subagent_depth === 2` (действующий путь) + легаси верхнеуровневый.
219
+ * 6.3: удаляем обе формы MCP (нативную и легаси) — только если запись наша.
139
220
  */
140
221
  async removeWolfKeys(projectRoot) {
141
222
  const file = this.configFile(projectRoot);
@@ -143,23 +224,36 @@ export class OpencodeAdapter {
143
224
  if (cfg === null)
144
225
  return { action: 'skipped', reason: `no ${basename(file)}`, configFile: basename(file) };
145
226
  const removed = [];
146
- const mcp = asRecord(cfg.mcp);
147
- if (mcp !== undefined && mcp.wolf !== undefined) {
148
- delete mcp.wolf;
149
- if (Object.keys(mcp).length === 0)
150
- delete cfg.mcp;
151
- else
152
- cfg.mcp = mcp;
153
- removed.push('mcp.wolf');
154
- }
155
- if (cfg.default_agent === DEFAULT_AGENT) {
156
- delete cfg.default_agent;
157
- removed.push(`default_agent=${DEFAULT_AGENT}`);
158
- }
159
- if (cfg.subagent_depth === SUBAGENT_DEPTH) {
160
- delete cfg.subagent_depth;
161
- removed.push(`subagent_depth=${SUBAGENT_DEPTH}`);
227
+ const legacyMcpPath = legacyPathOf(MCP_KEY);
228
+ const nativeEntry = getPath(cfg, MCP_KEY.writePath);
229
+ const legacyEntry = getPath(cfg, legacyMcpPath);
230
+ if (nativeEntry !== undefined && isWolfMcpEntry(nativeEntry, WOLF_CMD)) {
231
+ deletePath(cfg, MCP_KEY.writePath);
232
+ removed.push(MCP_KEY.label);
233
+ }
234
+ if (legacyEntry !== undefined && isWolfMcpEntry(legacyEntry, WOLF_CMD)) {
235
+ deletePath(cfg, legacyMcpPath);
236
+ if (!removed.includes(MCP_KEY.label))
237
+ removed.push(MCP_KEY.label);
162
238
  }
239
+ if (getPath(cfg, DEFAULT_AGENT_KEY.writePath) === DEFAULT_AGENT) {
240
+ deletePath(cfg, DEFAULT_AGENT_KEY.writePath);
241
+ removed.push(`${DEFAULT_AGENT_KEY.label}=${DEFAULT_AGENT}`);
242
+ }
243
+ const depthLeaf = leaf(SUBAGENT_DEPTH_KEY);
244
+ const legacyDepthPath = legacyPathOf(SUBAGENT_DEPTH_KEY);
245
+ let depthRemoved = false;
246
+ if (getPath(cfg, SUBAGENT_DEPTH_KEY.writePath) === SUBAGENT_DEPTH) {
247
+ deletePath(cfg, SUBAGENT_DEPTH_KEY.writePath);
248
+ depthRemoved = true;
249
+ }
250
+ if (getPath(cfg, legacyDepthPath) === SUBAGENT_DEPTH) {
251
+ // легаси верхнеуровневый ключ (deprecated в opencode v2) — тоже наш
252
+ deletePath(cfg, legacyDepthPath);
253
+ depthRemoved = true;
254
+ }
255
+ if (depthRemoved)
256
+ removed.push(`${depthLeaf}=${SUBAGENT_DEPTH}`);
163
257
  if (removed.length === 0) {
164
258
  return {
165
259
  action: 'unchanged',
@@ -171,11 +265,135 @@ export class OpencodeAdapter {
171
265
  await writeFileAtomic(file, JSON.stringify(cfg, null, 2) + '\n');
172
266
  return { action: 'removed', configFile: basename(file), keys: removed };
173
267
  }
268
+ /**
269
+ * 6.1/6.3/6.4: doctor-проверки, которые знает только opencode-адаптер —
270
+ * все ключи, которые Wolf пишет, + смешанный frontmatter managed-агентов.
271
+ * Строки идут в общий `issues` проекта и маскируются doctor'ом как обычно.
272
+ */
273
+ async configIssues(projectRoot) {
274
+ let cfg;
275
+ try {
276
+ cfg = await this.readConfig(projectRoot);
277
+ }
278
+ catch (err) {
279
+ // «missing» советовал бы init, который честно скипает такой конфиг; различаем
280
+ // битый JSONC и валидный JSON не-объект (массив/строка) — советы разные по смыслу.
281
+ const message = err instanceof Error ? err.message : String(err);
282
+ const kind = message.includes('not valid JSONC') ? 'not valid JSONC' : 'not a JSON object';
283
+ return [`${this.id}: config is ${kind} — fix it or remove the file, then run wolf init`];
284
+ }
285
+ if (cfg === null)
286
+ return [`${this.id}: wolf entry missing — run wolf init`];
287
+ return [
288
+ ...mcpIssues(cfg),
289
+ ...defaultAgentIssues(cfg),
290
+ ...depthIssues(cfg),
291
+ ...(await mixedFrontmatterIssues(projectRoot, this.id)),
292
+ ];
293
+ }
174
294
  }
175
- function asRecord(value) {
176
- return value !== null && typeof value === 'object' && !Array.isArray(value)
177
- ? value
178
- : undefined;
295
+ /** 6.3: wolf-сервер отсутствует в обеих формах / легаси-форма подлежит миграции. */
296
+ function mcpIssues(cfg) {
297
+ // запись невозможна: init не вылечит такой конфиг — не советуем его
298
+ const blocked = blockedSegment(cfg, MCP_KEY.writePath);
299
+ if (blocked !== undefined)
300
+ return [`opencode: ${blocked} is not an object — ${MCP_KEY.label} is not written; fix it manually`];
301
+ const wolf = readWolfMcp(cfg, WOLF_CMD);
302
+ if (wolf.form === 'none')
303
+ return [`opencode: wolf entry missing — run wolf init`];
304
+ if (wolf.legacyEntry === undefined)
305
+ return [];
306
+ const legacyPath = legacyPathOf(MCP_KEY);
307
+ return [
308
+ wolf.legacyOurs
309
+ ? `opencode: wolf entry is in the deprecated top-level ${legacyPath.join('.')} form — run wolf init to migrate it to ${MCP_KEY.label}`
310
+ : `opencode: top-level ${legacyPath.join('.')} is foreign and deprecated (opencode v2 reads ${MCP_ROOT}.${MCP_SERVERS}) — wolf leaves it untouched`,
311
+ ];
312
+ }
313
+ /** 6.1: default_agent === mr-wolf, иначе L0 стартует не тем агентом. */
314
+ function defaultAgentIssues(cfg) {
315
+ const da = getPath(cfg, DEFAULT_AGENT_KEY.writePath);
316
+ if (da === undefined)
317
+ return [
318
+ `opencode: ${DEFAULT_AGENT_KEY.label} is not set — ${DEFAULT_AGENT} is not the default agent; run wolf init`,
319
+ ];
320
+ if (da !== DEFAULT_AGENT)
321
+ return [
322
+ `opencode: ${DEFAULT_AGENT_KEY.label}=${String(da)} is taken; ${DEFAULT_AGENT} is not assigned (foreign value is never overwritten)`,
323
+ ];
324
+ return [];
325
+ }
326
+ /** 6.1: experimental.subagent_depth >= 2 + deprecated верхнеуровневый ключ. */
327
+ function depthIssues(cfg) {
328
+ const out = [];
329
+ const depthPath = SUBAGENT_DEPTH_KEY.writePath;
330
+ const parentPath = depthPath.slice(0, -1);
331
+ const depthLabel = depthPath.join('.');
332
+ const depthLeaf = depthPath[depthPath.length - 1];
333
+ const parentRaw = getPath(cfg, parentPath);
334
+ const experimental = getRecordAt(cfg, parentPath);
335
+ const depth = experimental?.[depthLeaf];
336
+ if (parentRaw !== undefined && experimental === undefined) {
337
+ out.push(`opencode: ${parentPath.join('.')} is not an object — ${depthLabel} is not set; set it to ${SUBAGENT_DEPTH} manually`);
338
+ }
339
+ else if (depth === undefined) {
340
+ out.push(`opencode: ${depthLabel} is not set — the three-level scheme needs >=${SUBAGENT_DEPTH}; run wolf init`);
341
+ }
342
+ else if (typeof depth !== 'number' || depth < SUBAGENT_DEPTH) {
343
+ out.push(`opencode: ${depthLabel}=${String(depth)} — the three-level scheme needs >=${SUBAGENT_DEPTH}; foreign value is never overwritten`);
344
+ }
345
+ const legacyPath = legacyPathOf(SUBAGENT_DEPTH_KEY);
346
+ const legacy = getPath(cfg, legacyPath);
347
+ if (legacy !== undefined) {
348
+ out.push(legacy === SUBAGENT_DEPTH
349
+ ? `opencode: top-level ${legacyPath.join('.')}=${SUBAGENT_DEPTH} is deprecated and ignored by opencode v2 — run wolf init to migrate it to ${depthLabel}`
350
+ : `opencode: top-level ${legacyPath.join('.')}=${String(legacy)} is deprecated and ignored by opencode v2 — foreign value, set ${depthLabel} >=${SUBAGENT_DEPTH} manually`);
351
+ }
352
+ return out;
353
+ }
354
+ /** v2-поля агента: их появление включает чтение файла по схеме V2. */
355
+ const V2_AGENT_FIELDS = ['permissions', 'request', 'system', 'disabled'];
356
+ /** v1-поля агента: в V2-режиме молча игнорируются (6.4). */
357
+ const V1_AGENT_FIELDS = ['permission', 'temperature', 'mode'];
358
+ /**
359
+ * 6.4: managed-агент (есть штамп Wolf) со смешанным frontmatter читается как V2,
360
+ * и v1-правила (`permission.task: deny`) исчезают — предупреждаем, не правим файл.
361
+ */
362
+ async function mixedFrontmatterIssues(projectRoot, platformId) {
363
+ const dir = join(projectRoot, '.opencode', 'agents');
364
+ const names = await fs.readdir(dir).catch(() => []);
365
+ const out = [];
366
+ for (const name of names) {
367
+ if (!name.endsWith('.md'))
368
+ continue;
369
+ const raw = await fs.readFile(join(dir, name), 'utf-8').catch(() => null);
370
+ if (raw === null || parseStamp(raw) === null)
371
+ continue; // чужой файл — не наш scope
372
+ const front = frontmatterOf(raw);
373
+ if (front === undefined)
374
+ continue;
375
+ const v2 = V2_AGENT_FIELDS.filter((field) => front[field] !== undefined);
376
+ const v1 = V1_AGENT_FIELDS.filter((field) => front[field] !== undefined);
377
+ if (v2.length === 0 || v1.length === 0)
378
+ continue;
379
+ out.push(`${platformId}: ${join('.opencode', 'agents', name)} mixes v2 (${v2.join(', ')}) and v1 (${v1.join(', ')}) frontmatter — the file is read as V2 and v1 fields are ignored; do not mix formats in one file`);
380
+ }
381
+ return out;
382
+ }
383
+ /** YAML-frontmatter файла агента; нет блока/битый YAML — undefined. */
384
+ function frontmatterOf(raw) {
385
+ const match = /^---\r?\n([\s\S]*?)\r?\n---/.exec(raw);
386
+ if (match === null)
387
+ return undefined;
388
+ try {
389
+ const parsed = yaml.load(match[1]);
390
+ return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
391
+ ? parsed
392
+ : undefined;
393
+ }
394
+ catch {
395
+ return undefined;
396
+ }
179
397
  }
180
398
  function asConfig(value, file) {
181
399
  const cfg = asRecord(value);
@@ -184,4 +402,9 @@ function asConfig(value, file) {
184
402
  }
185
403
  return cfg;
186
404
  }
405
+ function asRecord(value) {
406
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
407
+ ? value
408
+ : undefined;
409
+ }
187
410
  //# sourceMappingURL=opencode-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-adapter.js","sourceRoot":"","sources":["../../../src/adapters/platforms/opencode-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-adapter.js","sourceRoot":"","sources":["../../../src/adapters/platforms/opencode-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ /** Контейнер MCP: плоская v1-мапа `mcp.<name>` и v2 `mcp.servers.<name>`. */
2
+ export declare const MCP_ROOT = "mcp";
3
+ /** v2-контейнер серверов. */
4
+ export declare const MCP_SERVERS = "servers";
5
+ /** Имя wolf-сервера в MCP-конфиге. */
6
+ export declare const MCP_SERVER_NAME = "wolf";
7
+ /** Дефолтный агент Wolf в opencode (§6.1). */
8
+ export declare const DEFAULT_AGENT = "mr-wolf";
9
+ /** Глубина субагентов: executor-lead спавнит worker-* (трёхуровневая схема). */
10
+ export declare const SUBAGENT_DEPTH = 2;
11
+ export interface ConfigKeySpec {
12
+ id: 'mcp' | 'default_agent' | 'subagent_depth';
13
+ /** путь, которым Wolf пишет (канонический путь v2) */
14
+ writePath: readonly string[];
15
+ /** канонический путь v2 (== writePath; инвариант тестом) */
16
+ canonicalPath: readonly string[];
17
+ /** легаси/устаревшие пути, которые читаем и снимаем, если значение наше */
18
+ legacyPaths: readonly (readonly string[])[];
19
+ /** 'both' — читаем обе формы, 'native' — только v2 */
20
+ forms: 'both' | 'native';
21
+ /** метка ключа для логов/keys: 'mcp.servers.wolf' | 'default_agent' | 'subagent_depth' */
22
+ label: string;
23
+ }
24
+ /** MCP-сервер wolf: пишем `mcp.servers.wolf`, читаем/снимаем и `mcp.wolf`. */
25
+ export declare const MCP_KEY: ConfigKeySpec;
26
+ /** `default_agent` — форма одна в обеих ветках opencode. */
27
+ export declare const DEFAULT_AGENT_KEY: ConfigKeySpec;
28
+ /**
29
+ * `experimental.subagent_depth`: действует и в v1 >= 1.18.29 (compat-подъём), и в v2.
30
+ * Верхнеуровневый `subagent_depth` (legacy) читаем только чтобы снять своё значение.
31
+ */
32
+ export declare const SUBAGENT_DEPTH_KEY: ConfigKeySpec;
33
+ export declare const CONFIG_KEYS: readonly ConfigKeySpec[];
34
+ /** Легаси-путь для чтения/снятия (первый объявленный). */
35
+ export declare function legacyPathOf(key: ConfigKeySpec): readonly string[] | undefined;
36
+ export declare function getPath(obj: Record<string, unknown>, path: readonly string[]): unknown;
37
+ export declare function getRecordAt(obj: Record<string, unknown>, path: readonly string[]): Record<string, unknown> | undefined;
38
+ /** Пишет значение; отсутствующие промежуточные объекты создаёт, чужое не-объектное не перетирает. */
39
+ export declare function setPath(obj: Record<string, unknown>, path: readonly string[], value: unknown): void;
40
+ /** true если путь существовал; пустые родительские объекты (mcp.servers, mcp, experimental) удаляются. */
41
+ export declare function deletePath(obj: Record<string, unknown>, path: readonly string[]): boolean;
42
+ /** Каноническая команда wolf MCP: единственный источник для записи и ownership-проверок. */
43
+ export declare const WOLF_MCP_COMMAND: {
44
+ command: string;
45
+ args: string[];
46
+ };
47
+ /**
48
+ * Первый сегмент пути, занятый не-объектом (для сообщений): `mcp`, `mcp.servers`,
49
+ * `experimental`. undefined — путь записываем (промежуточные создаются).
50
+ */
51
+ export declare function blockedSegment(obj: Record<string, unknown>, path: readonly string[]): string | undefined;
52
+ /**
53
+ * true, если путь можно записать: каждый промежуточный сегмент либо отсутствует,
54
+ * либо объект. Занятый чужим не-объектом сегмент — конфликт, а не молчаливый no-op.
55
+ */
56
+ export declare function pathWritable(obj: Record<string, unknown>, path: readonly string[]): boolean;
57
+ /** Нативная запись MCP: { type: 'local', command: [cmd.command, ...cmd.args], disabled: false }. Без codemode. */
58
+ export declare function mcpEntryNative(cmd: {
59
+ command: string;
60
+ args: string[];
61
+ }): Record<string, unknown>;
62
+ /** «Наше» значение: type local + command совпадает с канонической командой wolf (лишние поля допустимы). */
63
+ export declare function isWolfMcpEntry(value: unknown, cmd: {
64
+ command: string;
65
+ args: string[];
66
+ }): boolean;
67
+ /** Двухформенное чтение: нативная приоритетна; ownership считается по точной команде wolf. */
68
+ export declare function readWolfMcp(cfg: Record<string, unknown>, cmd: {
69
+ command: string;
70
+ args: string[];
71
+ }): {
72
+ form: 'native' | 'legacy' | 'both' | 'none';
73
+ entry?: Record<string, unknown>;
74
+ legacyEntry?: Record<string, unknown>;
75
+ ours: boolean;
76
+ legacyOurs: boolean;
77
+ };
78
+ //# sourceMappingURL=opencode-config-keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-config-keys.d.ts","sourceRoot":"","sources":["../../../src/adapters/platforms/opencode-config-keys.ts"],"names":[],"mappings":"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"}