mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-28 22:19:41 +03:00
fix(skills): внятная диагностика разбора JSON вместо стектрейса (#80)
Неверный входной JSON ронял скрипты необработанным исключением: PS1 отдавал дамп
ConvertFrom-Json с CategoryInfo, py-порт — traceback с внутренностями json/decoder.py.
Имя файла в сообщении не фигурировало, а для полиморфного -Value не было видно, какую
форму ждёт операция.
Общий хелпер ConvertFrom-JsonInput / parse_json_input в 12 навыках × 2 порта (24 места),
зарегистрирован семьёй в check-inline-drift.mjs — копии держит гард. Сообщение в одну
строку: ожидаемая форма, полученное значение, текст парсера в скобках.
Эхо полученного значения нужно потому, что съеденные оболочкой кавычки дают почти тот же
JSON ({group:X} вместо {"group":"X"}), и без него агент считает свой вызов верным. PS 5.1
печатает лишь огрызок и локализованно, Python — только номер колонки.
Возврат в PS1 через Write-Output -NoEnumerate: вынос разбора в функцию добавляет второй
анруллинг, и одноэлементный JSON-массив стал бы скаляром. Импорты внутри тела py-хелпера —
skd-decompile импортирует json локально как _json, а тело семьи обязано быть одинаковым.
В раннер добавлен inputRaw (запись входного файла дословно): через case.input битый JSON
невыразим, JSON.stringify всегда даёт валидный документ.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
53fc16d2f1
commit
a44a29a7d8
@@ -394,6 +394,19 @@ const FAMILIES = [
|
||||
],
|
||||
},
|
||||
|
||||
// ─── Разбор пользовательского JSON ─────────────────────────────────────
|
||||
// Сообщение об ошибке разбора одинаково во всех навыках (issue #80): стектрейс парсера
|
||||
// агент читает как «скрипт сломан» и идёт чинить не то место. Вся специфика навыка —
|
||||
// в аргументах source/expected на месте вызова, тело функции общее.
|
||||
{
|
||||
name: 'parse_json_input', py: 'parse_json_input', ps1: 'ConvertFrom-JsonInput',
|
||||
variants: [
|
||||
{ id: 'base', authority: 'interface-edit',
|
||||
consumers: ['cf-edit', 'form-compile', 'form-edit', 'meta-compile', 'meta-edit', 'mxl-compile',
|
||||
'role-compile', 'skd-compile', 'skd-decompile', 'subsystem-compile', 'subsystem-edit'] },
|
||||
],
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
// ─── Семьи, разъехавшиеся целиком ───────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user