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:
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:.
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.

