Transporte y autorización
En tu propia máquina, el host escucha en un socket Unix. 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. Conéctate al socket y envía una solicitud común:
El trabajo se acepta, y los resultados llegan en stream
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.
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. El host elimina los eventos de un turno después de que el turno termina. Cuando una reanudación salta esos eventos, el stream abre con un evento replay-gap: vuelve a leer la transcripción y reanuda desde su lastEventId. 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.
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. 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.

