Унифицированный интерфейс командной строки
Converged CLI — это ориентированный на оператора механизм выполнения команд. Он предоставляет единый
интерфейс команд для диагностики платформы, автоматизации, работы с хранилищем и
операций предметной области, позволяя при этом каждой возможности оставаться в собственном модуле
команд.
Модульная поверхность команд
Ядро CLI не содержит фиксированного реестра бизнес-команд. При запуске
оно считывает один или несколько каталогов, переданных через , и загружает--commands
выбранный модуль TypeScript для каждого раздела команд. Модуль экспортирует фабрику,
возвращающую процессор; процессор объявляет свои команды и направляет каждое
имя команды соответствующему обработчику.
bun cli <section> <command> [param]
| |
| +-> command handler
v
command module -> processor -> generated NRPC client
Это делает CLI расширяемым без изменения его среды выполнения. Решение или
продукт может добавить каталог команд, и новый модуль станет<section>.ts
новым разделом CLI. Ядро загружает для выполнения только запрошенный раздел,
поэтому необязательный или неисправный модуль не может помешать работе
несвязанных команд.
предоставляет общую карту команд, вывод справки, передачуBaseCommandProcessor
ошибок и единообразное поведение при перечислении. Модули сосредоточены на собственных
аргументах и действиях предметной области; средство запуска отвечает за настройку
соединения, отчёт о жизненном цикле, хронометраж, код завершения и закрытие канала.
Единая модель авторизации
Все модули команд с поддержкой NRPC используют один и тот же сеанс CLI и путь
авторизации. Сначала CLI считывает пользовательский JWT из локального файла сеанса,
а затем использует , если сеанс недоступен. Пользовательский сеанс имеетSERVICE_TOKEN
приоритет, поскольку действия оператора могут требовать идентификации вызывающего.
Токен передаётся во время общего рукопожатия Fujin WebSocket, а также
предоставляется конфигурации клиента NRPC. Если сохранённый сеанс отклонён,
средство запуска удаляет его из активного соединения и повторяет попытку один раз
с токеном сервиса, если он настроен. Ошибки аутентификации сообщаются единообразно,
с рекомендацией войти снова, вместо того чтобы заставлять отдельные модули команд
самостоятельно обрабатывать состояние токена.
Авторизация по-прежнему обеспечивается принимающим сервисом. CLI передаёт
учётные данные вызывающего и область действия рабочей среды; он не интерпретирует
разрешения и не предоставляет доступ локально. Команда может отказаться от канала WebSocket только
в том случае, если она намеренно обращается к конечной точке, не использующей NRPC,
например выполняет прямую диагностическую операцию.
Интеграция с NRPC
Модули команд создают клиентов из сгенерированных пакетов и передаютg-<service>
им общую конфигурацию . NRPC сериализует типизированныйcreateCliNrpcClientConfig
вызов метода в запрос WebSocket, адресованный логической цели Fujin
и сервису. Fujin перенаправляет его работающему узлу среды выполнения, а сервис
применяет свою обычную политику доступа перед выполнением метода.
Тот же канал поддерживает обычные методы «запрос-ответ» и потоковые
методы. Идентификаторы запросов, крайние сроки, порядок ответов и обработка
сбоев соединения централизованы в канале CLI, поэтому каждый модуль получает
одинаковое поведение без повторной реализации протокольного кода.
Граница ответственности
CLI отвечает за обнаружение команд, жизненный цикл выполнения команд, выбор
локального сеанса и общий канал клиента NRPC/WebSocket. Он не отвечает за бизнес-
логику предметной области, принятие решений о разрешениях, реализацию сервиса или маршрутизацию Fujin.
Эти обязанности остаются за модулями команд, внутренними сервисами и
инфраструктурой среды выполнения, принимающей вызов.