[enhancement] Полное дерево /airdef: подкоманды, типизированные аргументы и контекстное автодополнение #98
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Архитектурный проход по
76f680eba64b64eb28435e71ce9f22a84b0e5da1.Почему виден только /airdef
Мод регистрирует
.command("airdef"), аhorizon-command::Dispatcher::with_mod_commandsдобавляет literal root + единственныйArgType::Greedyс именемargs. Содержимое вручную разбираетlib.rsmatch. Движку неизвестны подкоманды/типы/значения, поэтому он физически не может подсказать синтаксис. Замена текста usage проблему не решит.В Horizon server API 0.3 уже есть
server-command/argument-kindс типизированными аргументами; client API 0.2 использует список имён. Нужно переиспользовать инфраструктуру Dispatcher и расширить клиентскую декларацию, а не переносить мод на сервер только ради completion.Сделать
.command(name)остаётся greedy fallback.wave,replay,scenario save/load/list/delete, текущие deploy/debug/настройки) по фактическому синтаксису; не придумывать второй набор команд для подсказок.Приёмка
Tab после
/airdefпоказывает доступные подкоманды, дальше только допустимые аргументы./airdef scenario loadпредлагает сохранённые имена; неверное число/enum видно до Enter; русский help соответствует дереву. Корректные старые команды продолжают работать. Тесты registration→parse→dispatch и completion для вложенных/неполных строк.Общий порядок и зависимости: архитектурная дорожная карта.
🤖 Agent: сделано в
f16bc2387f(запушено в main). API 19. В игре подсказки /airdef и /airdef replay видны, команды работают, неверные значения отклоняются. Tab на именах сценариев в игре не смотрели, это покрыто тестами. Обработчики по-прежнему сами разбирают строку; подсказок существующих ID систем нет.