Un turno desde la línea de comandos
narya -p "<prompt>" envía un prompt, espera a que la sesión quede inactiva y responde en la salida estándar. El texto que llega por pipe o redirigido a la entrada estándar va antes del prompt, con una línea en blanco entre ellos, como en git diff | narya -p "Review this change.". Narya lee la entrada estándar hasta el final, a menos que sea una terminal. Agrega < /dev/null a una ejecución que no debe leerla.
Sus flags:
--repo <path>define el repositorio de trabajo y, de forma predeterminada, usa el directorio de trabajo.--model <id>elige el modelo.--agent <name>ejecuta el turno bajo un agente con nombre.--session <id>continúa una sesión existente.--style <name>nombra un estilo de respuesta que declaraste como[styles.<name>]enconfig.toml. No puede combinarse con--session.--instructions <file>agrega un archivo de instrucciones al prompt de sistema. Repítelo para agregar más. Una ejecución que va a un host en ejecución lo rechaza.--jsoncambia la salida a un formato legible por máquinas.--allow <action>:<resource>deja que la ejecución haga esa acción sin preguntar hasta que el host se detenga, como lo hace una regla allow depermissions.toml. Repite la flag para más, como--allow "shell:make deploy"o--allow network:docs.rs. Narya rechaza una regla quepermissions.tomlrechazaría y sale con2. Conpermission_mode = "custom", también rechaza una regla que alcanza un deny en tupermissions.toml.
Códigos de salida
Las dos fallas de credencial llevan códigos distintos a propósito. Una clave ausente sale con
2, y una clave rechazada sale con 1. Reintenta con 1. Con 2, lee primero el mensaje: un almacén retenido se libera solo, y una credencial ausente no.
Las dos formas de --json
narya -p --json transmite un envelope de evento por línea en la salida estándar. Cada línea lleva id, type y timestamp. Una línea agrega sessionId y laneId cuando el evento pertenece a una sesión o a una lane. payload es null cuando el evento no lleva cuerpo. La salida simple lleva solo la respuesta a tu prompt. El stream lleva cada lane, así que selecciona por laneId. Estos son los mismos envelopes de evento que el host transmite en su API, así que un pipeline y un cliente leen un solo formato.
Todos los demás comandos responden con un documento. Las acciones comparten un envelope:
result es una palabra para ramificar. changed aparece solo en una ejecución que cambió algo. Una salida distinta de cero lleva reason en su lugar.
Algunos comandos publican su propio documento cuando tienen éxito e imprimen el envelope solo cuando fallan, entre ellos narya export y los verbos de narya schedule. Ramifica por el código de salida para esos, nunca por result.
Con --json, la salida estándar lleva el documento o el stream y nada más. Las frases para una persona van al error estándar.
La credencial en un runner
Pon la clave del proveedor en el almacén de secretos de tu CI y entrégala al paso como
<PROVIDER>_API_KEY. El proceso que llama al proveedor lee esa variable de su propio entorno. En un runner sin un host en ejecución, ese proceso es el propio narya -p. Narya no guarda esa clave en el keychain ni en el archivo por proveedor.
Narya lee el historial propio de la rama, así que haz checkout de la rama completa.
Programaciones
Pon trabajo en el reloj del host.
narya schedule add "<prompt>" --every <duration>se repite en un intervalo, y--at <RFC3339>dispara una vez.- Agrega
--repo <path>,--agent <name>o--budget <usd>a cualquiera de las dos formas. narya schedule listlista lo que existe, ynarya schedule rm <schedule-id>cancela una.narya schedule budget <schedule-id> on <usd>cambia cuánto puede gastar un disparo de una programación existente.offimpide que la programación se dispare hasta que definas un número de nuevo.
--budget, la programación toma el valor predeterminado del operador, $5.00 por disparo, como [schedules] ceiling_usd. Si defines un número, Narya lo conserva. Si defines 0, Narya guarda la programación y se niega a dispararla hasta que definas un presupuesto. Un cambio en [schedules] ceiling_usd entra en vigor en el siguiente inicio del host después de que una persona permite el nuevo config.toml.
Workflows
Un workflow es un programa de JavaScript que orquesta agentes. Inicia uno por ruta o como código fuente en línea, a través de la API del host. Nombra el
repository en el que trabaja la ejecución. Una ruta de script debe estar dentro de ese repositorio. Narya rechaza un programa inválido antes de que algo se ejecute.
Un programa de workflow llama a cuatro capacidades:
agent(step, agent, task)ejecuta un agente.agents([...])ejecuta una tanda, que se lee en el orden que pediste.step(name, value)registra un paso.argsentrega al programa los argumentos de su propia ejecución.

