Skip to main content
Esta seção é para desenvolvedores. Se você quer uma visão geral de negócio do Narya, veja O que é o Narya.
O Narya executa agentes de codificação por trás de uma única API HTTP. Um host de longa duração é dono das sessões, do store e das conexões de modelo. O cliente de terminal e o comando one-shot que a Lerian distribui usam essa API. Um cliente que você escrever usa a mesma.

Transporte e autorização


O host escuta em um Unix socket na sua pasta Narya. O Narya cria o socket apenas para o proprietário, e as permissões de arquivo são toda a autorização. Não há senha, nem token e nem TLS. O socket é o narya.sock dentro da pasta Narya. A pasta é $NARYA_HOME, ou $XDG_CONFIG_HOME/narya, ou ~/.config/narya, nessa ordem. As requisições são HTTP/1.1 com corpos JSON. Os nomes de campo são camelCase. Conecte-se ao socket e envie uma requisição comum:
A authority dessa URL é ignorada, porque a conexão já é o socket. Qualquer nome de host funciona.

O trabalho é aceito e os resultados chegam em stream


Os resultados nunca chegam na resposta da requisição que os causou. POST /v1/sessions/{sessionId}/messages responde 202 com um id de turn. Tudo o que o turn produz chega via stream por GET /v1/events como server-sent events. Cada frame carrega uma linha id:, uma linha data:, e uma linha em branco. O payload de data é um único envelope de evento JSON, e sua propriedade type diz qual evento é. Os frames não carregam nenhuma linha event: ou retry:.
Dois parâmetros de query moldam o stream. sessionId o restringe a uma única sessão. hostEvents=true adiciona os eventos que não pertencem a nenhuma sessão, e ele apenas se aplica ao lado de sessionId. Para retomar, envie o último id que você recebeu no header Last-Event-ID da requisição. O stream continua a partir do primeiro evento depois dele que o store ainda contém. Compare o primeiro id que você recebe com o que você enviou, e leia o estado novamente por meio das operações GET quando houver uma lacuna. Um cursor mais recente do que qualquer coisa que o store contém recebe 409 com o código NRY-0026, e o mesmo cursor é recusado de forma idêntica todas as vezes.

Os dois envelopes


Uma lista paginada responde com um envelope de cursor: items, limit e um nextCursor quando resta mais conteúdo. Os cursors são opacos. Passe um de volta como o parâmetro de query cursor para obter a próxima página. Um envelope de erro: code, title e message, além de um mapa fields em um 422. Os códigos são NRY- e quatro dígitos.

A API do host

Leia o que o host serve e por que o contrato tem este formato.

Lista de erros

Consulte todos os códigos que o host responde.