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
@@ -0,0 +1,528 @@
1
+ // src/app/use-cases/decisions.ts
2
+ // T7 (волна 2.20.0, REQ-06/REQ-05 AC3, design §4.7/§4.8/§4.12/§4.17):
3
+ // реестр решений владельца (read-only сбор + нумерация), разбор `--resolve`
4
+ // (грамматика, область целей, матрица «глагол × класс», двухфазная валидация)
5
+ // и применение решений (take/keep/protect/pin) с бэкапом локального контента.
6
+ // Сбор и валидация ничего не пишут; запись — только applyResolutions, после
7
+ // того как все ошибки собраны (AC3 «к другим файлам ничего не применено»).
8
+ import { existsSync, readFileSync, readdirSync, statSync } from 'fs';
9
+ import { mkdir } from 'fs/promises';
10
+ import { basename, dirname, join } from 'path';
11
+ import { dedupeByRealpath } from '../../adapters/fs/projects-registry.js';
12
+ import { loadSyncState, saveSyncState, sha256 } from '../../adapters/render/sync-state.js';
13
+ import { parseStamp } from '../../adapters/render/stamp.js';
14
+ import { writeFileAtomic } from '../../adapters/fs/markdown-memory-store.js';
15
+ import { insertProtect, normalizeManaged, parseProtect, removeProtect } from '../../domain/protect-key.js';
16
+ import { projectPath } from './verify-against-map.js';
17
+ import { planOf } from './upgrade-projects.js';
18
+ import { backupLocalFile } from './project-step.js';
19
+ const KIND_OF = {
20
+ agent: 'agent',
21
+ skill: 'skill',
22
+ command: 'command',
23
+ plugin: 'plugin',
24
+ };
25
+ /** Каталоги base-set (LAYOUT рендерера): область wolf-управляемых файлов. */
26
+ const BASE_DIRS = ['.opencode/agents', '.opencode/skills', '.opencode/command', '.opencode/plugins'];
27
+ /**
28
+ * Тело шаблона лица — то же извлечение, что в `seed-base-playbooks.ts`
29
+ * (единственный источник предиката diverged: живое лицо сравнивается с телом
30
+ * шаблона, дрейф при initiator вне seed/migration — зона Стюарда).
31
+ */
32
+ function templateBody(raw) {
33
+ const m = raw.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
34
+ return m ? m[2] : raw;
35
+ }
36
+ async function divergedFaces(root, map, deps) {
37
+ if (!deps.liveFaces)
38
+ return [];
39
+ const live = await deps.liveFaces(root);
40
+ const out = [];
41
+ const seen = new Set();
42
+ for (const face of map.faces) {
43
+ if (!face.seed || seen.has(face.owner_skill))
44
+ continue;
45
+ seen.add(face.owner_skill);
46
+ const tpl = deps.faceTemplates?.get(basename(face.template));
47
+ if (tpl === undefined)
48
+ continue;
49
+ const active = live.find((f) => f.ownerSkill === face.owner_skill);
50
+ if (!active)
51
+ continue; // лица нет — штатный посев прохода, не решение владельца
52
+ if (active.body === templateBody(tpl))
53
+ continue; // совпало с шаблоном
54
+ if (active.initiator === 'seed' || active.initiator === 'migration')
55
+ continue; // штатное отставание
56
+ out.push({
57
+ project: basename(root),
58
+ file: `faces/${face.owner_skill}.md`,
59
+ ownerSkill: face.owner_skill,
60
+ version: active.version ?? null,
61
+ });
62
+ }
63
+ return out;
64
+ }
65
+ /**
66
+ * Реестр решений (design §4.7): строго read-only — `inspectBaseSet` +
67
+ * свидетель + чтение лиц. Порядок: реестр проектов → цели карты в порядке
68
+ * `map.files` → AGENTS.md; нумерация сквозная 1-based и стабильна при
69
+ * неизменном состоянии (NFR-06). `removed`-цели не нумеруются (их решает
70
+ * проход, адресация — только по пути), `deprecated` — тоже: они report-only
71
+ * (design §4.6/§4.7), orphan-дрейф — тоже (решается путём).
72
+ */
73
+ export async function collectDecisions(deps) {
74
+ const map = deps.loadMap();
75
+ const projects = [];
76
+ const skippedProjects = [];
77
+ if (deps.here !== undefined) {
78
+ projects.push({ name: basename(deps.here), root: deps.here });
79
+ }
80
+ else {
81
+ const registered = deps.registry ? await deps.registry.listStrict() : [];
82
+ const { unique } = dedupeByRealpath(registered);
83
+ for (const entry of unique) {
84
+ const plan = planOf(entry);
85
+ if (plan.status !== null) {
86
+ skippedProjects.push({ name: plan.name, reason: plan.status });
87
+ continue;
88
+ }
89
+ projects.push({ name: plan.name, root: plan.path });
90
+ }
91
+ }
92
+ const targets = [];
93
+ const diverged = [];
94
+ for (const project of projects) {
95
+ const outcomes = await deps.inspect(project.root);
96
+ const byFile = new Map(outcomes.map((o) => [o.file, o]));
97
+ const add = (file, kind, code) => {
98
+ targets.push({ n: targets.length + 1, project: project.name, root: project.root, file, kind, code });
99
+ };
100
+ // `foreign` с `detail` — наблюдение (сломанные onboarding-маркеры), а не
101
+ // решение: design §4.5 «needs-decision НЕ выставляется», причина — полем.
102
+ const decisionCode = (outcome) => {
103
+ if (outcome === undefined)
104
+ return null;
105
+ if (outcome.action === 'mutated')
106
+ return 'mutated';
107
+ if (outcome.action === 'foreign' && outcome.detail === undefined)
108
+ return 'conflict';
109
+ return null;
110
+ };
111
+ for (const entry of map.files) {
112
+ // deprecated — report-only (design §4.6/§4.7): как и removed, не решение;
113
+ // адресуется только путём (матрица §4.8, цель карты по пути).
114
+ if (entry.category === 'removed' || entry.category === 'deprecated')
115
+ continue;
116
+ const rel = projectPath(entry);
117
+ const code = decisionCode(byFile.get(rel));
118
+ if (code !== null)
119
+ add(rel, KIND_OF[entry.kind], code);
120
+ }
121
+ const agentsCode = decisionCode(byFile.get('AGENTS.md'));
122
+ if (agentsCode !== null)
123
+ add('AGENTS.md', 'agents-md', agentsCode);
124
+ diverged.push(...(await divergedFaces(project.root, map, deps)));
125
+ }
126
+ return { targets, diverged, skippedProjects, projects };
127
+ }
128
+ export const emptyPlan = () => ({
129
+ projects: 0,
130
+ new: 0,
131
+ changed: 0,
132
+ deprecated: 0,
133
+ removed: 0,
134
+ faces: 0,
135
+ });
136
+ export const jsonDecisions = (reg) => reg.targets.map((t) => ({ n: t.n, project: t.project, path: t.file, code: t.code }));
137
+ export const jsonDiverged = (reg) => reg.diverged.map((d) => ({ project: d.project, face: d.file, version: d.version, ownerSkill: d.ownerSkill }));
138
+ export const jsonProtections = (entries) => entries.map((e) => ({
139
+ project: basename(e.project),
140
+ path: e.file,
141
+ value: e.value,
142
+ recognized: e.recognized,
143
+ behind: e.behind,
144
+ }));
145
+ /** Похожие цели (§4.9, критерий «все к похожим»): та же пара `kind` + `code`. */
146
+ export function similarTargets(reg, target) {
147
+ return reg.targets.filter((t) => t.n !== target.n && t.kind === target.kind && t.code === target.code);
148
+ }
149
+ const VERBS = ['take', 'keep', 'protect', 'pin'];
150
+ const EXPECTED = '--resolve: expected <file|N>=take|keep|protect|pin';
151
+ /** Грамматика CLI: повторяемый флаг, в значении допускается список через запятую. */
152
+ export function parseResolveValues(values) {
153
+ const requests = [];
154
+ const errors = [];
155
+ for (const raw of values) {
156
+ for (const item of raw.split(',')) {
157
+ const text = item.trim();
158
+ if (text === '') {
159
+ errors.push(EXPECTED);
160
+ continue;
161
+ }
162
+ const eq = text.lastIndexOf('=');
163
+ if (eq <= 0 || eq === text.length - 1) {
164
+ errors.push(`${EXPECTED} (got "${text}")`);
165
+ continue;
166
+ }
167
+ const target = text.slice(0, eq).trim();
168
+ const verb = text.slice(eq + 1).trim();
169
+ if (target === '' || verb === '') {
170
+ errors.push(`${EXPECTED} (got "${text}")`);
171
+ continue;
172
+ }
173
+ if (!VERBS.includes(verb)) {
174
+ errors.push(`unknown verb "${verb}" — expected ${VERBS.join('|')}`);
175
+ continue;
176
+ }
177
+ requests.push({ target, verb: verb });
178
+ }
179
+ }
180
+ return { requests, errors };
181
+ }
182
+ const normRel = (raw) => {
183
+ let rel = raw.trim().replace(/\\/g, '/');
184
+ while (rel.startsWith('./'))
185
+ rel = rel.slice(2);
186
+ return rel.replace(/\/+$/, '');
187
+ };
188
+ function walkAll(dir, root, out) {
189
+ if (!existsSync(dir))
190
+ return;
191
+ for (const entry of readdirSync(dir)) {
192
+ const abs = join(dir, entry);
193
+ if (statSync(abs).isDirectory())
194
+ walkAll(abs, root, out);
195
+ else
196
+ out.push(abs.slice(root.length + 1).replace(/\\/g, '/'));
197
+ }
198
+ }
199
+ /** Управляемые цели проекта: карта → AGENTS.md → orphan-файлы base-set (алфавит). */
200
+ function managedTargets(root, map) {
201
+ const out = [];
202
+ const seen = new Set();
203
+ for (const entry of map.files) {
204
+ const rel = projectPath(entry);
205
+ if (seen.has(rel))
206
+ continue;
207
+ seen.add(rel);
208
+ out.push(rel);
209
+ }
210
+ if (!seen.has('AGENTS.md')) {
211
+ seen.add('AGENTS.md');
212
+ out.push('AGENTS.md');
213
+ }
214
+ const orphans = [];
215
+ for (const dir of BASE_DIRS) {
216
+ const found = [];
217
+ walkAll(join(root, dir), root, found);
218
+ for (const rel of found.sort()) {
219
+ if (seen.has(rel))
220
+ continue;
221
+ seen.add(rel);
222
+ orphans.push(rel);
223
+ }
224
+ }
225
+ out.push(...orphans);
226
+ return out;
227
+ }
228
+ /** Матрица «глагол × класс» (design §4.8): `true` — можно, строка — причина отказа. */
229
+ const MATRIX = {
230
+ mutated: { take: true, keep: true, protect: true, pin: true },
231
+ conflict: {
232
+ take: true,
233
+ keep: 'conflict stays: use protect (hold) or take (base)',
234
+ protect: true,
235
+ pin: true,
236
+ },
237
+ protected: { take: true, keep: true, protect: true, pin: true },
238
+ kept: { take: true, keep: true, protect: true, pin: true },
239
+ orphan: {
240
+ take: 'no base for a file outside the update map',
241
+ keep: 'conflict comes from the map, not the witness — use protect',
242
+ protect: true,
243
+ pin: true,
244
+ },
245
+ 'agents-stamped': {
246
+ take: true,
247
+ keep: true,
248
+ protect: 'AGENTS.md has no YAML frontmatter',
249
+ pin: 'AGENTS.md has no YAML frontmatter',
250
+ },
251
+ 'agents-block': {
252
+ take: true,
253
+ keep: true,
254
+ protect: 'AGENTS.md has no YAML frontmatter',
255
+ pin: 'AGENTS.md has no YAML frontmatter',
256
+ },
257
+ removed: { take: 'no base for a file outside the update map', keep: true, protect: true, pin: true },
258
+ plain: { take: true, keep: true, protect: true, pin: true },
259
+ missing: {
260
+ take: true,
261
+ keep: 'nothing to keep: the file does not exist — use take',
262
+ protect: 'cannot protect the file: no YAML frontmatter — add one or use keep',
263
+ pin: 'cannot protect the file: no YAML frontmatter — add one or use keep',
264
+ },
265
+ };
266
+ const NO_FRONTMATTER = 'no YAML frontmatter — add one or use keep';
267
+ /** Класс цели по фактическому состоянию (порядок: AGENTS.md → категория карты →
268
+ * решение реестра → защита/keep → plain). */
269
+ function classifyTarget(root, file, map, reg) {
270
+ const abs = join(root, file);
271
+ if (file === 'AGENTS.md') {
272
+ if (!existsSync(abs))
273
+ return 'missing';
274
+ return parseStamp(readFileSync(abs, 'utf-8')) !== null ? 'agents-stamped' : 'agents-block';
275
+ }
276
+ const entry = map.files.find((e) => projectPath(e) === file);
277
+ if (!entry)
278
+ return 'orphan';
279
+ if (entry.category === 'removed')
280
+ return 'removed';
281
+ const target = reg.targets.find((t) => t.root === root && t.file === file);
282
+ if (target)
283
+ return target.code;
284
+ if (!existsSync(abs))
285
+ return 'missing';
286
+ const current = readFileSync(abs, 'utf-8');
287
+ if (parseProtect(current).held)
288
+ return 'protected';
289
+ const entryState = loadSyncState(root).files[file];
290
+ if (entryState !== undefined &&
291
+ typeof entryState === 'object' &&
292
+ entryState.origin === 'keep' &&
293
+ entryState.hash === sha256(normalizeManaged(current))) {
294
+ return 'kept';
295
+ }
296
+ return 'plain';
297
+ }
298
+ /** Проверка глагола по матрице + структурная проверка вставки ключа ДО записи. */
299
+ function verbError(op, root, map) {
300
+ const verdict = MATRIX[op.cls][op.verb];
301
+ if (verdict !== true)
302
+ return `cannot ${op.verb} ${op.file}: ${verdict}`;
303
+ if (op.verb !== 'protect' && op.verb !== 'pin')
304
+ return null;
305
+ const abs = join(root, op.file);
306
+ if (!existsSync(abs))
307
+ return `cannot ${op.verb} ${op.file}: ${NO_FRONTMATTER}`;
308
+ const current = readFileSync(abs, 'utf-8');
309
+ const probe = insertProtect(current, op.verb === 'protect' ? 'true' : map.version);
310
+ if (probe.error === 'no-yaml-frontmatter')
311
+ return `cannot ${op.verb} ${op.file}: ${NO_FRONTMATTER}`;
312
+ if (probe.error)
313
+ return `cannot ${op.verb} ${op.file}: frontmatter would break`;
314
+ return null;
315
+ }
316
+ /** Адресация пути: `--here` — от cwd, парк — `<project>/<rel>` или уникальный `<rel>`. */
317
+ function pathCandidates(reg, map, raw, here) {
318
+ const rel = normRel(raw);
319
+ if (rel === '')
320
+ return { candidates: [], error: `unknown target ${raw}` };
321
+ if (here) {
322
+ const project = reg.projects[0];
323
+ if (!project)
324
+ return { candidates: [], error: `unknown target ${raw}` };
325
+ const managed = managedTargets(project.root, map);
326
+ if (managed.includes(rel) || reg.targets.some((t) => t.root === project.root && t.file === rel)) {
327
+ return { candidates: [{ root: project.root, project: project.name, file: rel }] };
328
+ }
329
+ return { candidates: [], error: `unknown target ${raw}` };
330
+ }
331
+ const [head, ...rest] = rel.split('/');
332
+ const explicit = reg.projects.find((p) => p.name === head);
333
+ if (explicit && rest.length > 0) {
334
+ const file = rest.join('/');
335
+ const managed = managedTargets(explicit.root, map);
336
+ if (managed.includes(file) || reg.targets.some((t) => t.root === explicit.root && t.file === file)) {
337
+ return { candidates: [{ root: explicit.root, project: explicit.name, file }] };
338
+ }
339
+ return { candidates: [], error: `unknown target ${raw}` };
340
+ }
341
+ const candidates = [];
342
+ for (const project of reg.projects) {
343
+ const managed = managedTargets(project.root, map);
344
+ if (managed.includes(rel) || reg.targets.some((t) => t.root === project.root && t.file === rel)) {
345
+ candidates.push({ root: project.root, project: project.name, file: rel });
346
+ }
347
+ }
348
+ if (candidates.length === 0)
349
+ return { candidates: [], error: `unknown target ${raw}` };
350
+ if (candidates.length > 1) {
351
+ const list = candidates.map((c) => `${c.project}/${c.file}`).join(', ');
352
+ return { candidates: [], error: `ambiguous target ${raw}: ${list} (use <project>/<path>)` };
353
+ }
354
+ return { candidates };
355
+ }
356
+ /** Одна цель по адресу: `N` — только запись реестра; путь — §4.8 область целей. */
357
+ function candidateFor(reg, map, raw, opts) {
358
+ if (/^\d+$/.test(raw)) {
359
+ const n = Number(raw);
360
+ const target = reg.targets.find((t) => t.n === n);
361
+ if (!target) {
362
+ return { error: `unknown target ${raw} (the decision list has ${reg.targets.length} entries)` };
363
+ }
364
+ return { candidate: { root: target.root, project: target.project, file: target.file } };
365
+ }
366
+ const found = pathCandidates(reg, map, raw, opts.here);
367
+ if (found.error !== undefined)
368
+ return { error: found.error };
369
+ return { candidate: found.candidates[0] };
370
+ }
371
+ export function resolveShowTarget(reg, map, raw, opts) {
372
+ const found = candidateFor(reg, map, raw, opts);
373
+ if (found.candidate === undefined)
374
+ return { error: found.error };
375
+ const { root, project, file } = found.candidate;
376
+ const target = reg.targets.find((t) => t.root === root && t.file === file);
377
+ return {
378
+ target: {
379
+ root,
380
+ project,
381
+ file,
382
+ kind: target ? target.kind : file === 'AGENTS.md' ? 'agents-md' : 'unknown',
383
+ cls: classifyTarget(root, file, map, reg),
384
+ },
385
+ };
386
+ }
387
+ /**
388
+ * Разбор и валидация ВСЕХ аргументов (design §4.8, шаг 2): ошибки собираются
389
+ * полностью, ни одна не пишет; `ops` — только при пустом списке ошибок.
390
+ * Порядок применения — порядок реестра (карта → AGENTS.md → orphan), не ввода.
391
+ */
392
+ export function planResolutions(reg, map, requests, opts) {
393
+ const errors = [];
394
+ const resolved = [];
395
+ const seen = new Set();
396
+ // Глобальный порядок целей: проект (порядок реестра) × managed-порядок.
397
+ const order = new Map();
398
+ let index = 0;
399
+ for (const project of reg.projects) {
400
+ for (const file of managedTargets(project.root, map))
401
+ order.set(`${project.root}\u0000${file}`, index++);
402
+ }
403
+ for (const request of requests) {
404
+ const found = candidateFor(reg, map, request.target, opts);
405
+ if (found.candidate === undefined) {
406
+ errors.push(found.error);
407
+ continue;
408
+ }
409
+ const candidate = found.candidate;
410
+ const key = `${candidate.root}\u0000${candidate.file}`;
411
+ if (seen.has(key)) {
412
+ errors.push(`target listed twice: ${request.target}`);
413
+ continue;
414
+ }
415
+ seen.add(key);
416
+ const target = reg.targets.find((t) => t.root === candidate.root && t.file === candidate.file);
417
+ const op = {
418
+ root: candidate.root,
419
+ project: candidate.project,
420
+ file: candidate.file,
421
+ kind: target ? target.kind : candidate.file === 'AGENTS.md' ? 'agents-md' : 'unknown',
422
+ cls: classifyTarget(candidate.root, candidate.file, map, reg),
423
+ verb: request.verb,
424
+ };
425
+ const error = verbError(op, candidate.root, map);
426
+ if (error !== null) {
427
+ errors.push(error);
428
+ continue;
429
+ }
430
+ resolved.push(op);
431
+ }
432
+ resolved.sort((a, b) => (order.get(`${a.root}\u0000${a.file}`) ?? 0) - (order.get(`${b.root}\u0000${b.file}`) ?? 0));
433
+ return { ops: errors.length > 0 ? [] : resolved, errors };
434
+ }
435
+ const entryEquals = (a, b) => a !== undefined && typeof a === 'object' && a.hash === b.hash && a.origin === b.origin && a.base === b.base;
436
+ /**
437
+ * Применение решений в порядке реестра. Каждая операция: бэкап (если нужен) →
438
+ * атомарная запись файла → атомарная запись свидетеля. Сбой k-й операции
439
+ * останавливает обход (`applied` 1..k−1 сохраняются), ошибка возвращается
440
+ * вызывающему для exit 1.
441
+ */
442
+ export async function applyResolutions(ops, deps) {
443
+ const now = deps.now ?? Date.now;
444
+ const applied = [];
445
+ const backups = [];
446
+ const errors = [];
447
+ for (const op of ops) {
448
+ try {
449
+ const abs = join(op.root, op.file);
450
+ const state = loadSyncState(op.root);
451
+ const current = existsSync(abs) ? readFileSync(abs, 'utf-8') : null;
452
+ let nextContent = current;
453
+ let entry;
454
+ let backupPath;
455
+ switch (op.verb) {
456
+ case 'take': {
457
+ const fresh = deps.renderer.renderFreshFile(op.root, op.file);
458
+ if (fresh === null)
459
+ throw new Error('no base for a file outside the update map');
460
+ if (current !== null && normalizeManaged(current) !== fresh) {
461
+ backupPath = (await backupLocalFile(op.root, op.file, current, new Date(now()))).path;
462
+ }
463
+ nextContent = fresh;
464
+ entry = { hash: sha256(normalizeManaged(fresh)), origin: 'render', base: deps.map.version };
465
+ break;
466
+ }
467
+ case 'keep': {
468
+ // блочный AGENTS.md живёт вне синка: keep — законный no-op без записи
469
+ if (current === null)
470
+ throw new Error('nothing to keep: the file does not exist — use take');
471
+ if (op.file === 'AGENTS.md' && op.cls === 'agents-block') {
472
+ applied.push({ root: op.root, project: op.project, file: op.file, verb: op.verb, noop: true });
473
+ continue;
474
+ }
475
+ // keep может снимать ключ protect (unprotect, REQ-05) — контент иначе не меняется
476
+ nextContent = parseProtect(current).held ? removeProtect(current) : current;
477
+ entry = { hash: sha256(normalizeManaged(nextContent)), origin: 'keep', base: deps.map.version };
478
+ break;
479
+ }
480
+ case 'protect':
481
+ case 'pin': {
482
+ if (current === null)
483
+ throw new Error(`cannot protect ${op.file}: ${NO_FRONTMATTER}`);
484
+ const value = op.verb === 'protect' ? 'true' : deps.map.version;
485
+ const inserted = insertProtect(current, value);
486
+ if (inserted.error === 'no-yaml-frontmatter') {
487
+ throw new Error(`cannot protect ${op.file}: ${NO_FRONTMATTER}`);
488
+ }
489
+ if (inserted.error)
490
+ throw new Error(`${op.file} — frontmatter would break`);
491
+ nextContent = inserted.content;
492
+ entry = { hash: sha256(normalizeManaged(nextContent)), origin: 'keep', base: deps.map.version };
493
+ break;
494
+ }
495
+ }
496
+ const stateDirty = !entryEquals(state.files[op.file], entry);
497
+ const fileDirty = nextContent !== current;
498
+ if (!stateDirty && !fileDirty) {
499
+ applied.push({ root: op.root, project: op.project, file: op.file, verb: op.verb, noop: true });
500
+ continue;
501
+ }
502
+ if (fileDirty) {
503
+ await mkdir(dirname(abs), { recursive: true });
504
+ await writeFileAtomic(abs, nextContent);
505
+ }
506
+ if (stateDirty) {
507
+ state.files[op.file] = entry;
508
+ saveSyncState(op.root, state);
509
+ }
510
+ applied.push({
511
+ root: op.root,
512
+ project: op.project,
513
+ file: op.file,
514
+ verb: op.verb,
515
+ ...(backupPath !== undefined ? { backup: backupPath } : {}),
516
+ });
517
+ if (backupPath !== undefined)
518
+ backups.push({ file: op.file, backup: backupPath });
519
+ }
520
+ catch (err) {
521
+ const message = err instanceof Error ? err.message : String(err);
522
+ errors.push(`error: ${op.file} — ${message}`);
523
+ break; // оставшиеся цели не трогаем (design §4.8, сбой k-й операции)
524
+ }
525
+ }
526
+ return { applied, backups, errors };
527
+ }
528
+ //# sourceMappingURL=decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decisions.js","sourceRoot":"","sources":["../../../src/app/use-cases/decisions.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,sEAAsE;AACtE,4EAA4E;AAC5E,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAA0B,MAAM,wCAAwC,CAAC;AAIlG,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAkB,MAAM,qCAAqC,CAAC;AAC3G,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3G,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAiEpD,MAAM,OAAO,GAAmC;IAC9C,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;CACjB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,SAAS,GAAG,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;AAErG;;;;GAIG;AACH,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAC1D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,GAAc,EAAE,IAAkB;IAC3E,IAAI,CAAC,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,SAAS;QACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7D,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,yDAAyD;QAChF,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,qBAAqB;QACtE,IAAI,MAAM,CAAC,SAAS,KAAK,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,WAAW;YAAE,SAAS,CAAC,qBAAqB;QACpG,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,SAAS,IAAI,CAAC,WAAW,KAAK;YACpC,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;SAChC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAkB;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,eAAe,GAAqB,EAAE,CAAC;IAE7C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzB,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,IAAkB,EAAE,IAA4B,EAAQ,EAAE;YACnF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACvG,CAAC,CAAC;QACF,yEAAyE;QACzE,0EAA0E;QAC1E,MAAM,YAAY,GAAG,CAAC,OAAmC,EAAiC,EAAE;YAC1F,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACvC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACnD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,UAAU,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YAC9B,0EAA0E;YAC1E,8DAA8D;YAC9D,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY;gBAAE,SAAS;YAC9E,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,IAAI;gBAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,IAAI;YAAE,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAyFD,MAAM,CAAC,MAAM,SAAS,GAAG,GAAa,EAAE,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC;IACX,GAAG,EAAE,CAAC;IACN,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAqB,EAAkB,EAAE,CACrE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAEvF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAqB,EAAkB,EAAE,CACpE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AAEhH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAuB,EAAoB,EAAE,CAC3E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClB,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;IACZ,KAAK,EAAE,CAAC,CAAC,KAAK;IACd,UAAU,EAAE,CAAC,CAAC,UAAU;IACxB,MAAM,EAAE,CAAC,CAAC,MAAM;CACjB,CAAC,CAAC,CAAC;AAEN,iFAAiF;AACjF,MAAM,UAAU,cAAc,CAAC,GAAqB,EAAE,MAAsB;IAC1E,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AACzG,CAAC;AAKD,MAAM,KAAK,GAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAkC5E,MAAM,QAAQ,GAAG,oDAAoD,CAAC;AAEtE,qFAAqF;AACrF,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IACjD,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,UAAU,IAAI,IAAI,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,MAAM,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,UAAU,IAAI,IAAI,CAAC,CAAC;gBAC3C,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAsB,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,gBAAgB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACpE,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAsB,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE;IACtC,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY,EAAE,GAAa;IACvD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO;IAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;;YACpD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,SAAS,cAAc,CAAC,IAAY,EAAE,GAAc;IAClD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,uFAAuF;AACvF,MAAM,MAAM,GAA+D;IACzE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC7D,QAAQ,EAAE;QACR,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,mDAAmD;QACzD,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI;KACV;IACD,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC1D,MAAM,EAAE;QACN,IAAI,EAAE,2CAA2C;QACjD,IAAI,EAAE,4DAA4D;QAClE,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,IAAI;KACV;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE,mCAAmC;KACzC;IACD,cAAc,EAAE;QACd,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,mCAAmC;QAC5C,GAAG,EAAE,mCAAmC;KACzC;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,2CAA2C,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IACpG,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;IAC3D,OAAO,EAAE;QACP,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,qDAAqD;QAC3D,OAAO,EAAE,oEAAoE;QAC7E,GAAG,EAAE,oEAAoE;KAC1E;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,2CAA2C,CAAC;AAEnE;8CAC8C;AAC9C,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY,EAAE,GAAc,EAAE,GAAqB;IACvF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACvC,OAAO,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;IAC7F,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI;QAAE,OAAO,WAAW,CAAC;IACnD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,IACE,UAAU,KAAK,SAAS;QACxB,OAAO,UAAU,KAAK,QAAQ;QAC9B,UAAU,CAAC,MAAM,KAAK,MAAM;QAC5B,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACrD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kFAAkF;AAClF,SAAS,SAAS,CAAC,EAAa,EAAE,IAAY,EAAE,GAAc;IAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;IACxE,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;IAC/E,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnF,IAAI,KAAK,CAAC,KAAK,KAAK,qBAAqB;QAAE,OAAO,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;IACpG,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,UAAU,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,2BAA2B,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,0FAA0F;AAC1F,SAAS,cAAc,CACrB,GAAqB,EACrB,GAAc,EACd,GAAW,EACX,IAAa;IAEb,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;IAE1E,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChG,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACpF,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3D,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACnG,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACjF,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAChG,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,kBAAkB,GAAG,EAAE,EAAE,CAAC;IACvF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,oBAAoB,GAAG,KAAK,IAAI,yBAAyB,EAAE,CAAC;IAC9F,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CACnB,GAAqB,EACrB,GAAc,EACd,GAAW,EACX,IAAoC;IAEpC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,KAAK,EAAE,kBAAkB,GAAG,2BAA2B,GAAG,CAAC,OAAO,CAAC,MAAM,WAAW,EAAE,CAAC;QAClG,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1F,CAAC;IACD,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC7D,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,CAAC;AAC7C,CAAC;AAYD,MAAM,UAAU,iBAAiB,CAC/B,GAAqB,EACrB,GAAc,EACd,GAAW,EACX,IAAoC;IAEpC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACjE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;IAChD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,OAAO;QACL,MAAM,EAAE;YACN,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC3E,GAAG,EAAE,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;SAC1C;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAqB,EACrB,GAAc,EACd,QAA0B,EAC1B,IAAoC;IAEpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,wEAAwE;IACxE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,SAAS,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3D,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,SAAS,SAAS,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACtD,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/F,MAAM,EAAE,GAAc;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YACrF,GAAG,EAAE,cAAc,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC;YAC7D,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;QACF,MAAM,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrH,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC5D,CAAC;AA6BD,MAAM,WAAW,GAAG,CAAC,CAAiC,EAAE,CAAY,EAAW,EAAE,CAC/E,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC;AAE9G;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAgB,EAAE,IAAyB;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACjC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,MAAM,OAAO,GAA4C,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpE,IAAI,WAAW,GAAG,OAAO,CAAC;YAC1B,IAAI,KAAgB,CAAC;YACrB,IAAI,UAA8B,CAAC;YAEnC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBAChB,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;oBAC9D,IAAI,KAAK,KAAK,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;oBACjF,IAAI,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;wBAC5D,UAAU,GAAG,CAAC,MAAM,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACxF,CAAC;oBACD,WAAW,GAAG,KAAK,CAAC;oBACpB,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC5F,MAAM;gBACR,CAAC;gBACD,KAAK,MAAM,CAAC,CAAC,CAAC;oBACZ,sEAAsE;oBACtE,IAAI,OAAO,KAAK,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;oBAC7F,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,EAAE,CAAC,GAAG,KAAK,cAAc,EAAE,CAAC;wBACzD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC/F,SAAS;oBACX,CAAC;oBACD,kFAAkF;oBAClF,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBAC5E,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChG,MAAM;gBACR,CAAC;gBACD,KAAK,SAAS,CAAC;gBACf,KAAK,KAAK,CAAC,CAAC,CAAC;oBACX,IAAI,OAAO,KAAK,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC,CAAC;oBACtF,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;oBAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC/C,IAAI,QAAQ,CAAC,KAAK,KAAK,qBAAqB,EAAE,CAAC;wBAC7C,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC,CAAC;oBAClE,CAAC;oBACD,IAAI,QAAQ,CAAC,KAAK;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,4BAA4B,CAAC,CAAC;oBAC5E,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC;oBAC/B,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChG,MAAM;gBACR,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAM,CAAC,CAAC;YAC9D,MAAM,SAAS,GAAG,WAAW,KAAK,OAAO,CAAC;YAC1C,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/F,SAAS;YACX,CAAC;YACD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM,eAAe,CAAC,GAAG,EAAE,WAAY,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAM,CAAC;gBAC9B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D,CAAC,CAAC;YACH,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,MAAM,OAAO,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,8DAA8D;QACvE,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iFAAiF;IACjF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACpD,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,mGAAmG;IACnG,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtD;AAiCD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAiDvE"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAEvE,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAErH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,iFAAiF;IACjF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACpD,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qGAAqG;IACrG,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IACnC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,mGAAmG;IACnG,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACtD;AAiCD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAuDvE"}
@@ -61,6 +61,12 @@ export async function runDoctor(deps) {
61
61
  for (const adapter of deps.adapters) {
62
62
  if (!adapter.detect(proj.path))
63
63
  continue;
64
+ // 6.3: адаптер, знающий обе формы ключей, отвечает сам; generic-путь —
65
+ // для fake-адаптеров без configIssues (тесты D-8/R04-3).
66
+ if (adapter.configIssues) {
67
+ issues.push(...(await adapter.configIssues(proj.path)));
68
+ continue;
69
+ }
64
70
  const cfg = await adapter.readConfig(proj.path).catch(() => null);
65
71
  const mcp = cfg && typeof cfg === 'object' ? (cfg.mcp ?? cfg.mcpServers) : null;
66
72
  if (!mcp || mcp.wolf === undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/app/use-cases/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/app/use-cases/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/init-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-project.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/init-project.ts"],"names":[],"mappings":"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"}