# Saída e códigos de saída

> Leia a saída da CLI do Nodaro em tabela ou JSON, acompanhe execuções até o fim com --watch e trate nos scripts os códigos de falha, cancelamento e revisão.

Source: https://nodaro.ai/pt-BR/docs/developers/cli/output

A **saída** da CLI do Nodaro é legível no terminal por padrão e legível por máquina com `--json`. Com `--watch`, um comando de execução aguarda até a execução terminar e informa o resultado no código de saída, então um shell script ou um job de CI pode tomar decisões com base nele.

## Tabelas e JSON
Sem `--json`, um comando `list` imprime uma pequena tabela ASCII, e um comando `get` imprime um bloco JSON formatado. Todos os comandos de leitura aceitam `--json` e, com ele, imprimem o payload completo, pronto para o `jq`:

```bash
nodaro projects list --json | jq '.[].id'
nodaro workflows run wf_abc --json
```

## Acompanhar uma execução com --watch
Um comando de execução retorna assim que o Nodaro aceita a execução. Adicione `--watch` para continuar consultando a execução periodicamente até ela terminar:

```bash
nodaro workflows run wf_abc --watch
nodaro nodes run generate-image --param prompt="a snow leopard" --watch --poll-interval 1000
```

`--watch` funciona nos comandos de execução, como `workflows run`, `apps run` e `nodes run`, em `executions get` e nos comandos de geração dos grupos de [entidades](https://nodaro.ai/docs/developers/cli/asset-commands) e de [mídia](https://nodaro.ai/docs/developers/cli/media-commands). `--poll-interval` define o tempo entre duas consultas, em milissegundos.

## Códigos de saída
| Código | Significado |
| --- | --- |
| `0` | Sucesso. |
| `1` | Sem autorização, não encontrado, erro de argumento ou erro de rede. |
| `2` | O `--watch` terminou e a execução falhou. |
| `3` | O `--watch` parou porque o job está retido para revisão (`pending_review`). Uma pessoa está decidindo; não é uma falha. |
| `130` | O `--watch` terminou e a execução foi cancelada. |

Com `--json`, a CLI imprime o payload e retorna sem definir os códigos `2`, `3` e `130`. Nesse modo, use o campo `status` da saída nas condições do script:

```bash
status=$(nodaro workflows run wf_abc --watch --json | jq -r '.status')
```

Quando o token está ausente, expirado ou inválido, a CLI avisa, sugere `nodaro auth login` e sai com o código `1`. Para outros erros da API, ela imprime a mensagem e o código do erro. Os códigos estão listados em [Erros](https://nodaro.ai/docs/developers/api/errors).

## Quando um job fica retido para revisão
Algumas implantações revisam as gerações antes de liberá-las. Em uma implantação assim, um job pode entrar no status `pending_review`. O trabalho está feito, os créditos continuam reservados, e uma pessoa decide se libera o resultado.

O status não muda sozinho, então o `--watch` interrompe a consulta periódica. Ele imprime `awaiting review (a human decision is pending; not a failure)` e sai com o código `3`.

- **Não execute a requisição de novo.** Uma duplicata também ficaria retida.
- **Verifique mais tarde** com `nodaro jobs get <id>`. O job termina em um destes três estados:

| Status | Significado |
| --- | --- |
| `completed` | O resultado foi aprovado e liberado. |
| `failed` | O resultado foi rejeitado. `error_hint.kind` é `policy-block`, e `error_hint.reason` é o texto a mostrar ao seu usuário. |
| `cancelled` | O job foi cancelado. |

```bash
nodaro nodes run generate-image --param prompt="..." --watch
case $? in
  0) echo "released" ;;
  3) echo "awaiting review, check back later" ;;
  *) echo "failed" ;;
esac
```

## Frequently asked questions

### Como obtenho uma saída legível por máquina da CLI do Nodaro?

Adicione --json a um comando de leitura. Sem essa opção, os comandos list imprimem uma pequena tabela, e os comandos get imprimem um bloco JSON formatado.

### O que significa o código de saída 3 na CLI do Nodaro?

O job está retido para revisão. O trabalho está feito, e os créditos continuam reservados enquanto uma pessoa decide se libera o resultado. Não é uma falha, então não execute a requisição de novo. Verifique mais tarde com nodaro jobs get.

### Por que meu script não recebe o código de saída 2 quando uma execução falha?

Com --json, a CLI imprime o resultado e retorna sem definir os códigos de saída 2, 3 ou 130. Nesse caso, leia o campo status da saída JSON.

### Como faço um job de CI aguardar uma execução do Nodaro?

Adicione --watch ao comando de execução. A CLI consulta a execução periodicamente até ela terminar e sai com 0 em caso de sucesso, 2 em caso de falha e 130 em caso de cancelamento, então a próxima etapa pode depender disso.
