Skip to main content
Esta sección es para desarrolladores. Si quieres una descripción general a nivel de negocio de Narya, consulta Qué es Narya.
Narya ejecuta agentes de programación detrás de una única API HTTP. Un host de larga duración es dueño de las sesiones, el almacén y las conexiones a los modelos. El cliente de terminal y el comando de un solo uso que distribuye Lerian manejan esta API. Un cliente que tú escribas maneja la misma.

Transporte y autorización


El host escucha en un socket Unix dentro de tu home de Narya. Narya crea el socket solo para su propietario, y los permisos del archivo son toda la autorización. No hay contraseña, ni token, ni TLS. El socket es narya.sock dentro del home de Narya. El home es $NARYA_HOME, o $XDG_CONFIG_HOME/narya, o ~/.config/narya, en ese orden. Las solicitudes son HTTP/1.1 con cuerpos JSON. Los nombres de campo están en camelCase. Marca el socket y envía una solicitud común:
La autoridad en esa URL se ignora, porque la conexión ya es el socket. Cualquier nombre de host funciona.

El trabajo se acepta, y los resultados llegan en stream


Los resultados nunca llegan en la respuesta de la solicitud que los causó. POST /v1/sessions/{sessionId}/messages responde 202 con un id de turno. Todo lo que produce el turno llega en stream a través de GET /v1/events como server-sent events. Cada frame lleva una línea id:, una línea data: y una línea en blanco. El payload de data es un envelope de evento en JSON, y su propiedad type indica de qué evento se trata. Los frames no llevan línea event: ni retry:.
Dos parámetros de consulta dan forma al stream. sessionId lo limita a una sesión. hostEvents=true agrega los eventos que no pertenecen a ninguna sesión, y solo se aplica junto con sessionId. Para reanudar, envía el último id que recibiste en el encabezado de solicitud Last-Event-ID. El stream continúa desde el primer evento después de ese que el almacén todavía conserva. Compara el primer id que recibes con el que enviaste, y vuelve a leer el estado a través de las operaciones GET cuando haya un vacío. Un cursor más reciente que cualquiera que tenga el almacén recibe 409 con el código NRY-0026, y el mismo cursor se rechaza de forma idéntica cada vez.

Los dos envelopes


Una lista paginada responde con un envelope de cursor: items, limit y un nextCursor cuando queda más contenido. Los cursores son opacos. Pasa uno de vuelta como parámetro de consulta cursor para obtener la página siguiente. Un envelope de error: code, title y message, además de un mapa fields en un 422. Los códigos son NRY- y cuatro dígitos.

La API del host

Lee qué sirve el host y por qué el contrato tiene esta forma.

Lista de errores

Busca todos los códigos que responde el host.