feat(cfe-patch-method): source-aware перехватчик + ресинк ИзменениеИКонтроль

Навык переписан в v2.0: вместо шаблона-заглушки читает оригинал метода из
конфигурации-источника и генерирует корректный каркас.

Генерация:
- новый -ConfigPath (опционален, если ModulePath — путь к файлу .bsl модуля);
- наследование директивы контекста, полной сигнатуры, обрамляющих #Если и
  #Область (в исходном порядке; регион переиспользуется, если уже есть);
- тип Instead (&Вместо с ПродолжитьВызов); гвард: Before/After только для процедур;
- ModAndControl копирует всё тело оригинала;
- воздух (пустые строки) вокруг структурных границ и между методами;
- имя с суффиксом типа только при коллизии;
- убраны -Context/-IsFunction (выводятся из оригинала).

Актуализация (повторный ModAndControl): предок восстанавливается из маркеров,
однозначные правки #Вставка/#Удаление переносятся авто, спорные — [РЕСИНК-КОНФЛИКТ]
плюс файлы-версии v1/v2/current/diff. Статусы АКТУАЛЕН/АКТУАЛИЗИРОВАН/ЧАСТИЧНО.

Паритет ps1<->py (raw-кириллица в .py). Тесты: 12 кейсов, оба рантайма зелёные.
runner.mjs: шаг writeFile теперь делает mkdir -p.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-07-18 16:31:53 +03:00
co-authored by Claude Opus 4.8
parent fc2323f321
commit a125464caa
101 changed files with 4810 additions and 400 deletions
@@ -3,6 +3,7 @@
"setup": "empty-config",
"args": [
{ "flag": "-ExtensionPath", "from": "workPath", "field": "extensionPath" },
{ "flag": "-ConfigPath", "from": "workDir" },
{ "flag": "-ModulePath", "from": "case.modulePath" },
{ "flag": "-MethodName", "from": "case.methodName" },
{ "flag": "-InterceptorType", "from": "case.interceptorType" }