mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-04 01:00:52 +03:00
fix(skills): чтение входного JSON — кодировка из BOM, эхо только для inline-значения (#80)
Этажом ниже разбора, на чтении файла, жил тот же класс дефектов в худшей форме. Файл в cp1251 с кириллицей: PS1 `Get-Content -Encoding UTF8` менял имя на 12 символов U+FFFD, JSON после этого разбирался УСПЕШНО, и навык создавал объект с именем из «замен» — молча. Py-порт на том же файле падал traceback-ом. Файл в UTF-16 давал ту же пару: traceback против ложного «JSON must have 'type' field». Новая семья read_json_file / Read-JsonInputFile: кодировка берётся из BOM (UTF-8, UTF-16 LE/BE), без BOM — строгий UTF-8, при провале сообщение называет файл и байт. Кодовую страницу не подбираем: угаданное имя уехало бы в метаданные так же молча. Эхо полученного значения печатается теперь только для inline-входа. Для файла оно показывало первые 60 символов первой строки независимо от того, что ошибка на 120-й, и спорило с позицией от парсера. Заодно уравнен пустой вход: PS 5.1 на пустой строке отдаёт $null, а не ошибку, и навык уходил дальше с $null, тогда как py-порт падал. Раннеру добавлен ключ inputEncoding (utf-16le / utf-16be / cp1251) — иначе кейс про кодировку не выразить, writeFileSync пишет только UTF-8. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0770889e47
commit
229e66b907
@@ -398,6 +398,14 @@ const FAMILIES = [
|
||||
// Сообщение об ошибке разбора одинаково во всех навыках (issue #80): стектрейс парсера
|
||||
// агент читает как «скрипт сломан» и идёт чинить не то место. Вся специфика навыка —
|
||||
// в аргументах source/expected на месте вызова, тело функции общее.
|
||||
{
|
||||
name: 'read_json_file', py: 'read_json_file', ps1: 'Read-JsonInputFile',
|
||||
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'] },
|
||||
],
|
||||
},
|
||||
{
|
||||
name: 'parse_json_input', py: 'parse_json_input', ps1: 'ConvertFrom-JsonInput',
|
||||
variants: [
|
||||
|
||||
Reference in New Issue
Block a user