narya -p roda um turno para um pipeline. Um cliente que você escreve conduz as mesmas operações, sem passo de login na frente.
De que o host é dono
- Sessões: conversas duradouras, cada uma ligada a um caminho de repositório.
- Faixas: as trilhas paralelas dentro de uma sessão.
- Checkpoints e rebobinagens: pontos de restauração da sua árvore de trabalho e os movimentos de volta até eles.
- O armazenamento: o banco de dados que guarda as sessões e as decisões. O host toma o lock dele.
- Conexões com os modelos: o host chama o fornecedor do modelo com a sua credencial.
- Agendamentos: prompts no relógio do host, sob um teto de gasto.
- Workflows: programas JavaScript que orquestram agentes.
- Monitores: comandos de longa duração ao lado de uma sessão, cuja saída chega à conversa.
- Perguntas de permissão: as perguntas antes de uma chamada de ferramenta e as respostas que você devolve.
Chegar ao host
O host escuta em um socket Unix na sua pasta Narya. O Narya cria o socket apenas para o dono, e as permissões de arquivo são toda a autorização. Não há senha, não há token e não há TLS. Qualquer processo que rode sob a sua conta tem a API inteira. O socket é o
narya.sock dentro da sua pasta Narya, que é ~/.config/narya por padrão. Defina NARYA_HOME para mudá-la de lugar. Sobre esse socket o host fala HTTP/1.1 e responde JSON com campos em camelCase. A autoridade na URL não carrega nada, então qualquer nome funciona ali.
Os resultados chegam pelo stream de eventos
Um resultado nunca volta na requisição que o causou. Uma mensagem responde
202 com um id de turno. Tudo o que esse turno produz chega a você em GET /v1/events como server-sent events.
Um quadro é uma linha id:, depois uma linha data:, depois uma linha em branco. A linha data carrega um envelope JSON. O campo type dele diz qual é esse evento: um delta de texto, uma chamada de ferramenta, uma pergunta de permissão, um turno terminado. Um cliente lê um formato e se ramifica por type.
Envie um header Last-Event-ID para retomar de onde parou. Um cursor que nomeia um evento mais novo que o armazenamento responde 409. Um consumidor lento demais para acompanhar perde a própria conexão, e todos os outros clientes seguem recebendo o stream.
Dois parâmetros de query estreitam o stream. O sessionId mantém uma sessão. O hostEvents=true acrescenta os eventos que não pertencem a nenhuma sessão, e apenas se aplica ao lado do sessionId.
O narya -p --json imprime esses mesmos envelopes, um por linha. Um pipeline e um cliente leem um formato só. Veja Automação e CI.
Um formato para listas e erros
Uma lista paginada responde um envelope de cursor:
items, limit e um nextCursor quando ainda resta algo. Os cursores são opacos, e a API não oferece paginação por offset. O armazenamento recebe muitas inserções, então um offset se desloca sob uma escrita concorrente.
Um envelope de erro: code, title e message, mais fields em um 422. Um código é NRY- e quatro dígitos. A lista de erros nomeia cada código e o que fazer com ele.
Leia a referência
Visão geral da API do host do Narya
Visão geral da API do host do Narya: transporte, streaming, envelopes e cada operação.
Lista de erros da API do host do Narya
Cada código com que o host responde, o que o dispara e a saída.

