refactor(skd-compile,skd-edit,form-compile,role-*): одно правило поиска @файла

Чтение текста из файла жило тремя копиями под именем Resolve-QueryValue
и вне реестра гарда, а role-* завели четвёртое правило — только от
рабочего каталога. Теперь функция одна на пять навыков:
Resolve-TextFromFile / resolve_text_from_file, заведена семья в
check-inline-drift, эталон — skd-edit.

Правило поиска общее: абсолютный путь как есть, относительный — рядом с
DSL (у edit-навыков — рядом с редактируемым объектом), затем в текущем
каталоге, не нашли — ошибка со списком проверенных мест. Имя без "query":
в ролях из файла приходит условие RLS, а не запрос. Текст ошибки
приведён к языку остальных сообщений.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FGkXwoXTuafcu1SXMsauFq
This commit is contained in:
Nick Shirokov
2026-09-13 18:23:06 +03:00
co-authored by Claude Opus 5
parent 121c9c8ad3
commit d425833709
12 changed files with 173 additions and 102 deletions
+10
View File
@@ -409,6 +409,16 @@ const FAMILIES = [
// Существует только в PY: PowerShell регистронезависим сам по себе (свойства PSObject, ключи
// Hashtable, -eq/-contains, имена параметров, ValidateSet), поэтому в .ps1 копии нет и быть
// не должно — ps1: null.
// Значение операции может быть "@путь" — текст читается из файла. Правило поиска общее:
// абсолютный путь как есть, относительный — рядом с DSL (или с редактируемым объектом),
// затем в текущем каталоге. Разъедется — и один навык начнёт искать не там, где другой.
{
name: 'значение из файла: resolve_text_from_file', py: 'resolve_text_from_file', ps1: 'Resolve-TextFromFile',
variants: [
{ id: 'base', authority: 'skd-edit',
consumers: ['form-compile', 'role-compile', 'role-edit', 'skd-compile'] },
],
},
{
name: 'case-insensitive input: CIDict', py: 'CIDict', ps1: null,
variants: [