Interfaz de línea de comandos convergente
La CLI convergente es un motor de comandos orientado a los operadores. Proporciona una única
superficie de comandos coherente para diagnósticos de la plataforma, automatización, almacenamiento y
operaciones de dominio, al tiempo que permite que cada capacidad permanezca en su propio módulo
de comandos.
Superficie de comandos modular
El núcleo de la CLI no contiene un registro fijo de comandos de negocio. Al iniciarse,
lee uno o más directorios pasados mediante y carga el módulo TypeScript--commands
seleccionado para cada sección de comandos. Un módulo exporta una fábrica
que devuelve un procesador; el procesador declara sus comandos y enruta cada
nombre de comando a un controlador.
bun cli <section> <command> [param]
| |
| +-> command handler
v
command module -> processor -> generated NRPC client
Esto hace que la CLI sea extensible sin cambiar su tiempo de ejecución. Una solución o
producto puede añadir un directorio de comandos, y un nuevo módulo se convierte en una<section>.ts
nueva sección de la CLI. El núcleo carga únicamente la sección solicitada para su ejecución, por lo que un
módulo opcional o defectuoso no puede impedir que se ejecuten comandos no relacionados.
proporciona el mapa de comandos común, la salida de ayuda, laBaseCommandProcessor
propagación de errores y un comportamiento de listado coherente. Los módulos se centran en sus propios
argumentos y acciones de dominio; el ejecutor se encarga de la configuración de la conexión, el ciclo de
vida, los informes, la medición del tiempo, el estado de salida y el cierre del canal.
Un único modelo de autorización
Todos los módulos de comandos habilitados para NRPC utilizan la misma sesión de CLI y la misma ruta de autorización.
La CLI primero lee el JWT del usuario desde el archivo de sesión local y luego recurre a cuando no hay una sesión disponible. La sesión del usuario tieneSERVICE_TOKEN
prioridad porque las acciones del operador pueden requerir la identidad del autor de la llamada.
El token se envía durante el handshake compartido de Fujin WebSocket y también se
proporciona a la configuración del cliente NRPC. Si se rechaza una sesión almacenada, el
ejecutor la elimina de la conexión activa y reintenta una vez con el token de servicio cuando este está configurado.
Los errores de autenticación se informan de manera uniforme,
con indicaciones para volver a iniciar sesión, en lugar de dejar que cada módulo de comandos
gestione por sí mismo el estado del token.
La autorización sigue siendo aplicada por el servicio receptor. La CLI transporta
las credenciales del autor de la llamada y el ámbito del espacio de trabajo; no interpreta los permisos
ni concede acceso localmente. Un comando puede omitir el canal WebSocket únicamente
cuando se comunica deliberadamente con un endpoint que no es NRPC, como una operación de diagnóstico directa.
Integración con NRPC
Los módulos de comandos crean clientes a partir de paquetes generados y les pasang-<service>
la configuración compartida . NRPC serializa lacreateCliNrpcClientConfig
llamada al método tipado en una solicitud WebSocket, dirigida a un destino lógico de Fujin
y a un servicio. Fujin la reenvía al par de tiempo de ejecución activo, y el servicio
aplica su política de acceso normal antes de ejecutar el método.
El mismo canal admite métodos ordinarios de solicitud-respuesta y métodos de transmisión.
Los identificadores de solicitud, los plazos, el orden de las respuestas y la gestión de fallos de conexión
se centralizan en el canal de la CLI, por lo que cada módulo obtiene el mismo comportamiento sin
reimplementar el código del protocolo.
Límite de responsabilidades
La CLI se encarga del descubrimiento de comandos, el ciclo de vida de la ejecución de comandos, la selección
de la sesión local y el canal común de cliente NRPC/WebSocket. No se encarga de la lógica de
negocio del dominio, las decisiones de permisos, la implementación del servicio ni el enrutamiento de Fujin.
Esas responsabilidades permanecen en los módulos de comandos, los servicios backend y la
infraestructura de tiempo de ejecución que recibe la llamada.