mister-wolf 2.19.0 → 2.20.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 (72) 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/render/opencode/opencode-renderer.d.ts +35 -7
  16. package/dist/adapters/render/opencode/opencode-renderer.d.ts.map +1 -1
  17. package/dist/adapters/render/opencode/opencode-renderer.js +395 -115
  18. package/dist/adapters/render/opencode/opencode-renderer.js.map +1 -1
  19. package/dist/adapters/render/stamp.d.ts +2 -0
  20. package/dist/adapters/render/stamp.d.ts.map +1 -1
  21. package/dist/adapters/render/stamp.js +9 -1
  22. package/dist/adapters/render/stamp.js.map +1 -1
  23. package/dist/adapters/render/sync-state.d.ts +15 -3
  24. package/dist/adapters/render/sync-state.d.ts.map +1 -1
  25. package/dist/adapters/render/sync-state.js +52 -8
  26. package/dist/adapters/render/sync-state.js.map +1 -1
  27. package/dist/app/use-cases/decisions.d.ts +247 -0
  28. package/dist/app/use-cases/decisions.d.ts.map +1 -0
  29. package/dist/app/use-cases/decisions.js +528 -0
  30. package/dist/app/use-cases/decisions.js.map +1 -0
  31. package/dist/app/use-cases/init-project.d.ts.map +1 -1
  32. package/dist/app/use-cases/init-project.js +34 -1
  33. package/dist/app/use-cases/init-project.js.map +1 -1
  34. package/dist/app/use-cases/platform-mismatch.d.ts +2 -1
  35. package/dist/app/use-cases/platform-mismatch.d.ts.map +1 -1
  36. package/dist/app/use-cases/platform-mismatch.js.map +1 -1
  37. package/dist/app/use-cases/project-step.d.ts +20 -1
  38. package/dist/app/use-cases/project-step.d.ts.map +1 -1
  39. package/dist/app/use-cases/project-step.js +101 -15
  40. package/dist/app/use-cases/project-step.js.map +1 -1
  41. package/dist/app/use-cases/repair-platform.d.ts +2 -1
  42. package/dist/app/use-cases/repair-platform.d.ts.map +1 -1
  43. package/dist/app/use-cases/repair-platform.js.map +1 -1
  44. package/dist/app/use-cases/sync-base-set.d.ts +4 -2
  45. package/dist/app/use-cases/sync-base-set.d.ts.map +1 -1
  46. package/dist/app/use-cases/sync-base-set.js +4 -2
  47. package/dist/app/use-cases/sync-base-set.js.map +1 -1
  48. package/dist/app/use-cases/uninstall.d.ts +2 -1
  49. package/dist/app/use-cases/uninstall.d.ts.map +1 -1
  50. package/dist/app/use-cases/uninstall.js.map +1 -1
  51. package/dist/app/use-cases/upgrade-projects.d.ts +30 -0
  52. package/dist/app/use-cases/upgrade-projects.d.ts.map +1 -1
  53. package/dist/app/use-cases/upgrade-projects.js +119 -4
  54. package/dist/app/use-cases/upgrade-projects.js.map +1 -1
  55. package/dist/app/use-cases/verify-against-map.d.ts +5 -1
  56. package/dist/app/use-cases/verify-against-map.d.ts.map +1 -1
  57. package/dist/app/use-cases/verify-against-map.js +34 -6
  58. package/dist/app/use-cases/verify-against-map.js.map +1 -1
  59. package/dist/domain/line-diff.d.ts +36 -0
  60. package/dist/domain/line-diff.d.ts.map +1 -0
  61. package/dist/domain/line-diff.js +175 -0
  62. package/dist/domain/line-diff.js.map +1 -0
  63. package/dist/domain/protect-key.d.ts +21 -0
  64. package/dist/domain/protect-key.d.ts.map +1 -0
  65. package/dist/domain/protect-key.js +112 -0
  66. package/dist/domain/protect-key.js.map +1 -0
  67. package/dist/ports/base-set-renderer.port.d.ts +51 -3
  68. package/dist/ports/base-set-renderer.port.d.ts.map +1 -1
  69. package/package.json +1 -1
  70. package/templates/.wolf/router.log +1 -1
  71. package/templates/base/AGENTS.md +6 -3
  72. package/update-map.json +3 -3
@@ -33,8 +33,45 @@ function guardFailure(message) {
33
33
  children: [line('error', message), line('error', 'Failed')],
34
34
  },
35
35
  counters: [],
36
+ projects: [],
37
+ plan: { projects: 0, new: 0, changed: 0, deprecated: 0, removed: 0, faces: 0 },
36
38
  };
37
39
  }
40
+ /** План-счётчики §4.13: registry-проекты, категории карты, досеянные лица. */
41
+ function planCounts(plans, map, facesSeeded) {
42
+ const cats = mapCategories(map);
43
+ return { projects: plans.length, ...cats, faces: facesSeeded };
44
+ }
45
+ /** Проект, до которого проход не дошёл: только статус плана (design §4.13). */
46
+ function plannedProject(plan) {
47
+ return {
48
+ name: plan.name,
49
+ path: plan.path,
50
+ status: 'skipped',
51
+ ...(plan.status !== null ? { skipReason: plan.status } : {}),
52
+ files: [],
53
+ protected: [],
54
+ backups: [],
55
+ };
56
+ }
57
+ /** Файлы прогона для `--json.projects[].files`: путь, код, признак карты. */
58
+ export function jsonProjectFiles(report, map) {
59
+ const inMap = new Set(['AGENTS.md', ...map.files.map((e) => projectPath(e))]);
60
+ return report.sync.outcomes.map((o) => {
61
+ const code = o.protected
62
+ ? 'protected'
63
+ : o.kept
64
+ ? 'kept'
65
+ : o.action === 'skipped'
66
+ ? o.mutated
67
+ ? 'skipped-mutated'
68
+ : 'skipped-identical'
69
+ : o.action === 'appended'
70
+ ? 'updated'
71
+ : o.action;
72
+ return { path: o.file, code, inMap: inMap.has(o.file) };
73
+ });
74
+ }
38
75
  export async function runUpgradeProjects(deps, opts = {}) {
39
76
  const lock = deps.upgradeLock;
40
77
  if (lock) {
@@ -73,6 +110,8 @@ async function runPass(deps, opts) {
73
110
  ],
74
111
  },
75
112
  counters: [],
113
+ projects: [],
114
+ plan: { projects: 0, new: 0, changed: 0, deprecated: 0, removed: 0, faces: 0 },
76
115
  };
77
116
  }
78
117
  let map;
@@ -106,6 +145,9 @@ async function runPass(deps, opts) {
106
145
  children: [plansSection(plans, registered.length, duplicates, map), line('info', finalText, true)],
107
146
  },
108
147
  counters: [],
148
+ // отменённый проход: только статусы плана (design §4.13)
149
+ projects: plans.map(plannedProject),
150
+ plan: planCounts(plans, map, 0),
109
151
  };
110
152
  }
111
153
  // Подтверждение списка покрывает и удаления (ADR-4): removed-цели карты —
@@ -117,6 +159,7 @@ async function runPass(deps, opts) {
117
159
  try {
118
160
  const report = await runStep(withNow(deps.makeStepDeps(plan.path), opts.now), plan.path, map, {
119
161
  confirmedRemovals,
162
+ takeMutated: opts.yes === true, // §4.12: --yes = тихий take с бэкапом
120
163
  });
121
164
  outcomes.push({ plan, status: statusOf(report), report });
122
165
  }
@@ -167,6 +210,25 @@ async function runPass(deps, opts) {
167
210
  // Скан незарегистрированных (REQ-09): после сводного отчёта; ошибка скана —
168
211
  // не ошибка прохода (exitCode не меняется).
169
212
  const scan = await scanLines(deps, registered);
213
+ // Подсказка §4.12: TTY без --yes и оставшиеся решения — путь к разбору.
214
+ const decisionsLeft = outcomes.reduce((n, o) => n + (o.report?.verify.summary.needsDecision ?? 0), 0);
215
+ const hint = opts.tty === true && opts.yes !== true && decisionsLeft > 0
216
+ ? [
217
+ line('info', `hint: ${decisionsLeft} ${decisionsLeft === 1 ? 'file needs' : 'files need'} a decision — run wolf upgrade --review`, true),
218
+ ]
219
+ : [];
220
+ const jsonProjects = outcomes.map((o) => ({
221
+ name: o.plan.name,
222
+ path: o.plan.path,
223
+ status: o.status,
224
+ ...(o.error !== undefined ? { error: o.error } : {}),
225
+ files: o.report ? jsonProjectFiles(o.report, map) : [],
226
+ protected: [], // заполняет CLI-слой из listProtections (§4.13)
227
+ backups: o.report?.backups ?? [],
228
+ }));
229
+ for (const plan of plans)
230
+ if (plan.status !== null)
231
+ jsonProjects.push(plannedProject(plan));
170
232
  return {
171
233
  exitCode,
172
234
  report: {
@@ -174,20 +236,25 @@ async function runPass(deps, opts) {
174
236
  title: SECTION_TITLE,
175
237
  children: [
176
238
  plansSection(plans, registered.length, duplicates, map),
177
- projectsSection(outcomes),
239
+ projectsSection(outcomes, map),
178
240
  // Суффикс summary у renderer фиксирован («— Done») и не выражает
179
241
  // exit-таблицу — слово финальной строки передаёт оркестратор строкой.
180
242
  { kind: 'summary', counters, done: false },
243
+ ...hint,
181
244
  line(exitCode === 1 ? 'error' : exitCode === 2 ? 'warn' : 'ok', finalText),
182
245
  ...scan,
183
246
  ],
184
247
  },
185
248
  counters,
249
+ projects: jsonProjects,
250
+ plan: planCounts(plans, map, facesSeeded),
186
251
  };
187
252
  }
188
253
  /** План одной записи реестра: realpath → статусы (порядок гвардов: missing →
189
- * worktree → pinned); состав/штамп — справочно, только для активных планов. */
190
- function planOf(entry) {
254
+ * worktree → pinned); состав/штамп — справочно, только для активных планов.
255
+ * Экспорт (T7, design §4.7): `collectDecisions` нумерует те же активные проекты —
256
+ * второй реализации фильтра worktree/pinned/missing нет. */
257
+ export function planOf(entry) {
191
258
  let real;
192
259
  try {
193
260
  real = realpathSync(entry.path);
@@ -305,8 +372,54 @@ export const STATUS_TEXT = {
305
372
  'needs-decision': 'needs decision',
306
373
  error: 'error',
307
374
  };
375
+ /** Файловые строки деталей проекта (REQ-01, design §4.15): каждый needs-decision
376
+ * назван путём (счётчики выше сохраняются дословно), защищённые и принятые
377
+ * локальные — отдельными строками. Единственная реализация для прохода и
378
+ * `--here`. Лица печатает владелец seed-строки (секция проекта) — иначе одно
379
+ * diverged-лицо давало две строки `faces:` (m-1). */
380
+ /** Путь карты (`base/agents/x.md`) → проектный путь (`.opencode/agents/x.md`):
381
+ * REQ-01 требует путь относительно корня проекта, а verify.target для целей
382
+ * карты несёт путь карты. `kind` берётся из `map.files` (m-3) — вторых таблиц
383
+ * префиксов нет. */
384
+ function kindIndex(map) {
385
+ const kinds = new Map();
386
+ for (const entry of map.files)
387
+ kinds.set(entry.path, entry.kind);
388
+ return kinds;
389
+ }
390
+ function displayName(i, kinds) {
391
+ if (i.kind !== 'file')
392
+ return i.target;
393
+ const kind = kinds.get(i.target);
394
+ return kind ? projectPath({ path: i.target, kind, category: 'new' }) : i.target;
395
+ }
396
+ export function verifyNameLines(verify, map) {
397
+ const out = [];
398
+ const kinds = kindIndex(map);
399
+ const named = verify.items.filter((i) => i.needsDecision && i.code !== 'diverged');
400
+ if (named.length > 0) {
401
+ out.push(line('warn', `needs decision: ${named.map((i) => `${displayName(i, kinds)} (${i.code})`).join(', ')}`, true));
402
+ }
403
+ const protectedCount = verify.items.filter((i) => i.code === 'protected').length;
404
+ if (protectedCount > 0)
405
+ out.push(line('info', `${protectedCount} protected (intentional)`, true));
406
+ const kept = verify.items.filter((i) => i.code === 'kept').map((i) => displayName(i, kinds));
407
+ if (kept.length > 0)
408
+ out.push(line('info', `${kept.length} kept (local): ${kept.join(', ')}`, true));
409
+ return out;
410
+ }
411
+ /** Дайджест бэкапов проекта (§4.12): файл и путь копии; take — «took base»,
412
+ * удаление — «removed». Единственная реализация формата: проход и `--here`. */
413
+ export function backupDigestLines(report) {
414
+ const out = [];
415
+ for (const b of report.backups ?? []) {
416
+ const took = report.sync.outcomes.some((o) => o.backup === b.backup);
417
+ out.push(line('info', `${took ? 'took base for' : 'removed'} ${b.file} (local saved: ${b.backup})`, true));
418
+ }
419
+ return out;
420
+ }
308
421
  /** Секция проектов: строка-статус на проект + детали шага (REQ-05, палитра T3). */
309
- function projectsSection(outcomes) {
422
+ function projectsSection(outcomes, map) {
310
423
  const children = [];
311
424
  for (const o of outcomes) {
312
425
  const marker = o.status === 'error' ? 'error' : o.status === 'needs-decision' ? 'warn' : 'ok';
@@ -332,6 +445,8 @@ function projectsSection(outcomes) {
332
445
  if (v.errors > 0)
333
446
  parts.push(`${v.errors} errors`);
334
447
  children.push(line(v.errors > 0 ? 'error' : v.needsDecision > 0 ? 'warn' : 'info', `verify: ${parts.join(' · ')}`, true));
448
+ children.push(...verifyNameLines(r.verify, map));
449
+ children.push(...backupDigestLines(r));
335
450
  }
336
451
  return { kind: 'section', title: 'Projects', children };
337
452
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-projects.js","sourceRoot":"","sources":["../../../src/app/use-cases/upgrade-projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upgrade-projects.js","sourceRoot":"","sources":["../../../src/app/use-cases/upgrade-projects.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,11 @@ import type { FileEntry, UpdateMap } from '../../adapters/fs/update-map.js';
2
2
  import type { RenderOutcome } from '../../ports/base-set-renderer.port.js';
3
3
  import type { SeedOutcome } from './seed-base-playbooks.js';
4
4
  /** Структурные коды исхода сверки (design §«Сверка» / глоссарий). */
5
- export type VerifyCode = 'updated' | 'created' | 'removed' | 'seeded' | 'skipped-identical' | 'skipped-mutated' | 'skipped-live' | 'legacy-absorbed' | 'deprecated-noted' | 'unchanged' | 'diverged' | 'conflict';
5
+ export type VerifyCode = 'updated' | 'created' | 'removed' | 'seeded' | 'skipped-identical' | 'skipped-mutated' | 'skipped-live' | 'legacy-absorbed' | 'deprecated-noted' | 'unchanged' | 'diverged' | 'conflict'
6
+ /** Правило 2 §4.3 (волна 2.20.0): файл держится ключом protect — не needs-decision. */
7
+ | 'protected'
8
+ /** Правило 6.5 §4.3: принятый локальный контент (origin:'keep') — не needs-decision. */
9
+ | 'kept';
6
10
  /** Коды, всегда отображаемые как «требует решения» (view-код needs-decision). */
7
11
  export declare const NEEDS_DECISION_CODES: ReadonlySet<VerifyCode>;
8
12
  export interface VerifyItem {
@@ -1 +1 @@
1
- {"version":3,"file":"verify-against-map.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/verify-against-map.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAa,SAAS,EAA4B,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,mBAAmB,GACnB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,UAAU,CAAwD,CAAC;AAElH,MAAM,WAAW,UAAU;IACzB,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B;wEACoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgBD;+EAC+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAGpD;AAwCD;iEACiE;AACjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,YAAY,CA+DvF"}
1
+ {"version":3,"file":"verify-against-map.d.ts","sourceRoot":"","sources":["../../../src/app/use-cases/verify-against-map.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAa,SAAS,EAA4B,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAE5D,qEAAqE;AACrE,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,mBAAmB,GACnB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,WAAW,GACX,UAAU,GACV,UAAU;AACZ,uFAAuF;GACrF,WAAW;AACb,wFAAwF;GACtF,MAAM,CAAC;AAEX,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,UAAU,CAAwD,CAAC;AAElH,MAAM,WAAW,UAAU;IACzB,gGAAgG;IAChG,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAClC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B;wEACoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAgBD;+EAC+E;AAC/E,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAGpD;AAoDD;iEACiE;AACjE,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,GAAG,YAAY,CA6EvF"}
@@ -27,6 +27,11 @@ export function projectPath(entry) {
27
27
  }
28
28
  /** Факт sync → код сверки. appended (AGENTS-блок init) ≈ updated. */
29
29
  function syncFact(o) {
30
+ // Порядок §4.6: protect/kept перекрывают ожидание категории и не являются решениями.
31
+ if (o.protected)
32
+ return 'protected';
33
+ if (o.kept)
34
+ return 'kept';
30
35
  if (o.action === 'conflict')
31
36
  return 'conflict';
32
37
  if (o.action === 'skipped')
@@ -40,7 +45,21 @@ function syncFact(o) {
40
45
  * любое ожидание → «требует решения». created/updated/skipped-identical —
41
46
  * конечное состояние равно текущему рендеру (повтор прогона NFR-02 — exit 0).
42
47
  */
48
+ /**
49
+ * Категория карты × факт → код. Мутант и unstamped-conflict перекрывают
50
+ * любое ожидание → «требует решения», кроме deprecated: цель этой категории
51
+ * остаётся в поставке, но только репортится (`deprecated-noted`, design §4.6) —
52
+ * решение владельца по ней не требуется, иначе `--check` и реестр расходятся.
53
+ */
43
54
  function fileVerdict(category, fact) {
55
+ // Защищённая вариация и принятый локальный контент перекрывают ожидание категории (§4.6).
56
+ if (fact === 'protected' || fact === 'kept')
57
+ return fact;
58
+ if (category === 'deprecated') {
59
+ // «файл на месте»: identical/updated/mutated → пометка; created → файла не было
60
+ // (удалён вручную до прохода) — факт ≠ ожиданию → «требует решения».
61
+ return fact === 'created' ? 'conflict' : 'deprecated-noted';
62
+ }
44
63
  if (fact === 'skipped-mutated' || fact === 'conflict')
45
64
  return fact;
46
65
  switch (category) {
@@ -49,10 +68,6 @@ function fileVerdict(category, fact) {
49
68
  return fact;
50
69
  case 'unchanged':
51
70
  return fact === 'skipped-identical' ? 'unchanged' : fact;
52
- case 'deprecated':
53
- // «файл на месте»: identical/updated → пометка; created → файла не было
54
- // (удалён вручную до прохода) — факт ≠ ожиданию → «требует решения».
55
- return fact === 'created' ? 'conflict' : 'deprecated-noted';
56
71
  case 'removed':
57
72
  return fact;
58
73
  }
@@ -84,7 +99,16 @@ export function verifyAgainstMap(map, outcomes) {
84
99
  items.push(item('file', entry.path, 'removed'));
85
100
  }
86
101
  else {
87
- items.push(errorItem('file', entry.path, 'removed target got no removal status'));
102
+ // protect сильнее удаления (REQ-05, §4.3): защищённая removed-цель — факт
103
+ // `protected`/`kept`, а не error; без факта — прежний error (fail-safe).
104
+ const fact = syncByFile.get(path);
105
+ if (fact?.protected || fact?.kept) {
106
+ seenSync.add(path);
107
+ items.push(item('file', entry.path, syncFact(fact)));
108
+ }
109
+ else {
110
+ items.push(errorItem('file', entry.path, 'removed target got no removal status'));
111
+ }
88
112
  }
89
113
  continue;
90
114
  }
@@ -109,9 +133,13 @@ export function verifyAgainstMap(map, outcomes) {
109
133
  items.push(faceEntry(face, seedByTemplate, seenSeed));
110
134
  }
111
135
  // Факт без ожидания → conflict → «требует решения» (дрейф без объявления).
136
+ // Защищённый orphan и принятый локальный контент остаются своими кодами (§4.6):
137
+ // иначе санкционированная вариация снова стала бы needs-decision.
112
138
  for (const o of outcomes.syncOutcomes) {
113
139
  if (!seenSync.has(o.file)) {
114
- items.push(item('file', o.file, 'conflict', 'sync outcome for a file outside the map'));
140
+ const fact = syncFact(o);
141
+ const code = fact === 'protected' || fact === 'kept' ? fact : 'conflict';
142
+ items.push(item('file', o.file, code, code === 'conflict' ? 'sync outcome for a file outside the map' : undefined));
115
143
  }
116
144
  }
117
145
  for (const o of outcomes.seedOutcomes) {
@@ -1 +1 @@
1
- {"version":3,"file":"verify-against-map.js","sourceRoot":"","sources":["../../../src/app/use-cases/verify-against-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-against-map.js","sourceRoot":"","sources":["../../../src/app/use-cases/verify-against-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface DiffLine {
2
+ kind: 'context' | 'del' | 'add';
3
+ text: string;
4
+ }
5
+ export interface DiffHunk {
6
+ /** 1-based стартовые номера и длины сторон (как в unified diff). */
7
+ aStart: number;
8
+ aLines: number;
9
+ bStart: number;
10
+ bLines: number;
11
+ lines: DiffLine[];
12
+ }
13
+ export interface LineDiffResult {
14
+ hunks: DiffHunk[];
15
+ /** Число добавленных/удалённых строк (для заголовков `−N +M`). */
16
+ added: number;
17
+ removed: number;
18
+ /** Сколько строк содержимого скрыто лимитом вывода. */
19
+ truncated: number;
20
+ /** Вход был длиннее maxInput и обрезан (лимит §4.10). */
21
+ inputTruncated: boolean;
22
+ }
23
+ export interface LineDiffLimits {
24
+ maxInput?: number;
25
+ maxOutput?: number;
26
+ /** Строк контекста вокруг изменения (по умолчанию 2). */
27
+ context?: number;
28
+ }
29
+ /**
30
+ * Diff двух текстов (a — «было», b — «стало»): хунки с контекстом, счётчики
31
+ * изменений, обрезка вывода по maxOutput (скрытые строки → `truncated`).
32
+ */
33
+ export declare function lineDiff(aText: string, bText: string, limits?: LineDiffLimits): LineDiffResult;
34
+ /** Текстовое представление diff (unified-подобное): заголовки хунков и строки. */
35
+ export declare function formatDiff(result: LineDiffResult): string[];
36
+ //# sourceMappingURL=line-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-diff.d.ts","sourceRoot":"","sources":["../../src/domain/line-diff.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2GD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,cAAmB,GAAG,cAAc,CA4ClG;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAW3D"}
@@ -0,0 +1,175 @@
1
+ // src/domain/line-diff.ts
2
+ // T8 (волна 2.20.0, REQ-08, design §4.10): построчный LCS-diff для `--show` и
3
+ // `--review`. Без внешних зависимостей, детерминирован: при равной длине LCS
4
+ // удаление идёт раньше вставки, хунки — от начала файла. Лимиты — вход
5
+ // (maxInput строк на сторону) и вывод (maxOutput строк содержимого, далее
6
+ // «… ещё N строк»). EOL нормализуется: `\r` не делает каждую строку изменённой.
7
+ const DEFAULT_MAX_INPUT = 4000;
8
+ const DEFAULT_MAX_OUTPUT = 200;
9
+ const DEFAULT_CONTEXT = 2;
10
+ /** Порог DP LCS: при n×m больше — блок считается заменой (детерминированно). */
11
+ const DP_CELL_LIMIT = 4_000_000;
12
+ const toLines = (source) => {
13
+ const normalized = source.replace(/\r\n/g, '\n');
14
+ const lines = normalized.split('\n');
15
+ if (lines.length > 0 && lines[lines.length - 1] === '')
16
+ lines.pop();
17
+ return lines;
18
+ };
19
+ function middleOps(a, b) {
20
+ const n = a.length;
21
+ const m = b.length;
22
+ if (n === 0)
23
+ return b.map((text) => ({ kind: 'add', text }));
24
+ if (m === 0)
25
+ return a.map((text) => ({ kind: 'del', text }));
26
+ if (n * m > DP_CELL_LIMIT) {
27
+ return [...a.map((text) => ({ kind: 'del', text })), ...b.map((text) => ({ kind: 'add', text }))];
28
+ }
29
+ const width = m + 1;
30
+ const dp = new Uint32Array((n + 1) * width);
31
+ for (let i = n - 1; i >= 0; i--) {
32
+ for (let j = m - 1; j >= 0; j--) {
33
+ dp[i * width + j] =
34
+ a[i] === b[j] ? dp[(i + 1) * width + j + 1] + 1 : Math.max(dp[(i + 1) * width + j], dp[i * width + j + 1]);
35
+ }
36
+ }
37
+ const ops = [];
38
+ let i = 0;
39
+ let j = 0;
40
+ while (i < n && j < m) {
41
+ if (a[i] === b[j]) {
42
+ ops.push({ kind: 'equal', text: a[i] });
43
+ i++;
44
+ j++;
45
+ }
46
+ else if (dp[(i + 1) * width + j] >= dp[i * width + j + 1]) {
47
+ ops.push({ kind: 'del', text: a[i] });
48
+ i++;
49
+ }
50
+ else {
51
+ ops.push({ kind: 'add', text: b[j] });
52
+ j++;
53
+ }
54
+ }
55
+ while (i < n)
56
+ ops.push({ kind: 'del', text: a[i++] });
57
+ while (j < m)
58
+ ops.push({ kind: 'add', text: b[j++] });
59
+ return ops;
60
+ }
61
+ /** Полный список операций: общий префикс/суффикс не входят в DP. */
62
+ function diffOps(a, b) {
63
+ let start = 0;
64
+ while (start < a.length && start < b.length && a[start] === b[start])
65
+ start++;
66
+ let endA = a.length;
67
+ let endB = b.length;
68
+ while (endA > start && endB > start && a[endA - 1] === b[endB - 1]) {
69
+ endA--;
70
+ endB--;
71
+ }
72
+ const ops = a.slice(0, start).map((text) => ({ kind: 'equal', text }));
73
+ ops.push(...middleOps(a.slice(start, endA), b.slice(start, endB)));
74
+ for (let i = endA; i < a.length; i++)
75
+ ops.push({ kind: 'equal', text: a[i] });
76
+ return ops;
77
+ }
78
+ /** Группировка в хунки: изменения ближе 2×context сливаются, иначе — отдельные. */
79
+ function toHunks(ops, context) {
80
+ // префиксные счётчики сторон: сколько строк a/b прошло до индекса k
81
+ const aBefore = new Uint32Array(ops.length + 1);
82
+ const bBefore = new Uint32Array(ops.length + 1);
83
+ for (let k = 0; k < ops.length; k++) {
84
+ aBefore[k + 1] = aBefore[k] + (ops[k].kind === 'add' ? 0 : 1);
85
+ bBefore[k + 1] = bBefore[k] + (ops[k].kind === 'del' ? 0 : 1);
86
+ }
87
+ const ranges = [];
88
+ let lastChange = -1;
89
+ for (let i = 0; i < ops.length; i++) {
90
+ if (ops[i].kind === 'equal')
91
+ continue;
92
+ const end = Math.min(ops.length - 1, i + context);
93
+ const last = ranges[ranges.length - 1];
94
+ // равный промежуток ≤ 2×context → тот же хунк (стандартное слияние)
95
+ if (last && lastChange >= 0 && i - lastChange - 1 <= 2 * context)
96
+ last[1] = Math.max(last[1], end);
97
+ else
98
+ ranges.push([Math.max(0, i - context), end]);
99
+ lastChange = i;
100
+ }
101
+ return ranges.map(([start, end]) => {
102
+ const lines = ops.slice(start, end + 1).map((op) => ({ kind: op.kind, text: op.text }));
103
+ return {
104
+ aStart: aBefore[start] + 1,
105
+ aLines: aBefore[end + 1] - aBefore[start],
106
+ bStart: bBefore[start] + 1,
107
+ bLines: bBefore[end + 1] - bBefore[start],
108
+ lines,
109
+ };
110
+ });
111
+ }
112
+ /**
113
+ * Diff двух текстов (a — «было», b — «стало»): хунки с контекстом, счётчики
114
+ * изменений, обрезка вывода по maxOutput (скрытые строки → `truncated`).
115
+ */
116
+ export function lineDiff(aText, bText, limits = {}) {
117
+ const maxInput = limits.maxInput ?? DEFAULT_MAX_INPUT;
118
+ const maxOutput = limits.maxOutput ?? DEFAULT_MAX_OUTPUT;
119
+ const context = limits.context ?? DEFAULT_CONTEXT;
120
+ if (aText === bText) {
121
+ return { hunks: [], added: 0, removed: 0, truncated: 0, inputTruncated: false };
122
+ }
123
+ let a = toLines(aText);
124
+ let b = toLines(bText);
125
+ const inputTruncated = a.length > maxInput || b.length > maxInput;
126
+ if (a.length > maxInput)
127
+ a = a.slice(0, maxInput);
128
+ if (b.length > maxInput)
129
+ b = b.slice(0, maxInput);
130
+ const ops = diffOps(a, b);
131
+ const added = ops.filter((op) => op.kind === 'add').length;
132
+ const removed = ops.filter((op) => op.kind === 'del').length;
133
+ const all = toHunks(ops, context);
134
+ const hunks = [];
135
+ let budget = maxOutput;
136
+ let hidden = 0;
137
+ for (const hunk of all) {
138
+ if (budget <= 0) {
139
+ hidden += hunk.lines.length;
140
+ continue;
141
+ }
142
+ if (hunk.lines.length <= budget) {
143
+ hunks.push(hunk);
144
+ budget -= hunk.lines.length;
145
+ continue;
146
+ }
147
+ hunks.push({ ...hunk, lines: hunk.lines.slice(0, budget), aLines: 0, bLines: 0 });
148
+ hidden += hunk.lines.length - budget;
149
+ budget = 0;
150
+ }
151
+ // длины сторон обрезанного хунка пересчитываются по фактическим строкам
152
+ for (const hunk of hunks) {
153
+ if (hunk.aLines === 0 && hunk.bLines === 0 && hunk.lines.length > 0) {
154
+ hunk.aLines = hunk.lines.filter((l) => l.kind !== 'add').length;
155
+ hunk.bLines = hunk.lines.filter((l) => l.kind !== 'del').length;
156
+ }
157
+ }
158
+ return { hunks, added, removed, truncated: hidden, inputTruncated };
159
+ }
160
+ /** Текстовое представление diff (unified-подобное): заголовки хунков и строки. */
161
+ export function formatDiff(result) {
162
+ const out = [];
163
+ for (const hunk of result.hunks) {
164
+ out.push(`@@ -${hunk.aStart},${hunk.aLines} +${hunk.bStart},${hunk.bLines} @@`);
165
+ for (const line of hunk.lines) {
166
+ out.push(`${line.kind === 'del' ? '-' : line.kind === 'add' ? '+' : ' '}${line.text}`);
167
+ }
168
+ }
169
+ if (result.truncated > 0)
170
+ out.push(`… ${result.truncated} more lines`);
171
+ if (result.inputTruncated)
172
+ out.push('… input truncated to the line limit');
173
+ return out;
174
+ }
175
+ //# sourceMappingURL=line-diff.js.map