> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Referência: flags, modos e exit codes

> Flags globais, modos de saída para agentes e CI, introspecção com --describe, códigos de saída, variáveis de ambiente e comandos de manutenção da CLI da Jelou.

## Flags globais

Disponíveis em qualquer comando:

| Flag               | Descrição                                                                                       |
| ------------------ | ----------------------------------------------------------------------------------------------- |
| `--json`           | Saída JSON estruturada no stdout. Implica `--no-input`.                                         |
| `--agent`          | Modo agente: implica `--json`, `--no-input`, `--compact`, `NO_COLOR=1`, `JELOU_NO_SPINNERS=1`.  |
| `--compact`        | JSON sem espaços (economiza \~30-40% de tokens).                                                |
| `--human`          | Força saída legível mesmo que o stdout esteja redirecionado (anula o auto-JSON).                |
| `--no-input`       | Desativa prompts interativos; as operações destrutivas falham em modo duro em vez de perguntar. |
| `--profile <name>` | Usa um perfil de auth específico para esse comando.                                             |
| `--describe`       | Emite o esquema do comando como JSON, sem executá-lo.                                           |

## Modos de saída para agentes

**Auto-JSON ao redirecionar:** se o stdout não é um terminal (ex. `jelou whoami |
jq`), a CLI passa para JSON automaticamente. Force-o para legível com `--human` ou
`JELOU_FORCE_HUMAN_OUTPUT=1`.

**Forma da resposta:**

```json theme={null}
// Sucesso
{ "ok": true, "data": { } }
// Erro
{ "ok": false, "error": { "code": "...", "message": "...", "details": {} } }
```

Códigos de erro: `AUTH_ERROR`, `FORBIDDEN`, `NOT_FOUND`, `VALIDATION_ERROR`,
`API_ERROR`, `MISSING_FUNCTIONS_PROJECT`, `MISSING_WORKFLOW_PROJECT`,
`MISSING_AUTH`, `INPUT_ERROR`, `UNKNOWN_ERROR`, `NETWORK_ERROR`,
`TRANSIENT_ERROR`, `MISSING_LOCKFILE`.

O objeto `error` também pode incluir um campo `retryable` (booleano) que
indica se vale a pena tentar o comando novamente, sem mudar nada:

```json theme={null}
{ "ok": false, "error": { "code": "NOT_FOUND", "message": "Not found.", "retryable": false } }
```

As respostas `--json` de comandos de ação incluem um array `breadcrumbs`
com os próximos comandos sugeridos. Os logs em streaming emitem NDJSON (um
objeto JSON por linha).

<Warning>
  As flags de modo são **apenas de saída**, nunca de segurança. A preservação de
  colisões, a rejeição de `push` diante de incoming sem resolver, a validação de
  esquema e os checks de estado sujo sempre rodam, com ou sem `--agent`. As
  operações destrutivas requerem `--yes` em modo JSON/agente — e essa flag é
  para CI, não um atalho para pular confirmações.
</Warning>

## Introspecção com `--describe`

`--describe` percorre a árvore de comandos e emite sua assinatura como JSON, sem
executar nada. É somente leitura — use-o para planejar.

```bash theme={null}
jelou --describe                       # comando raiz: lista subcomandos de nível superior
jelou project --describe               # subcomandos de project
jelou databases create --describe      # argumentos e opções de um comando
```

Retorna `{ command, description, arguments, options, examples, subcommands }`.
As flags globais são filtradas para que você veja apenas a superfície específica do
comando.

## Exit codes

A CLI usa códigos de saída granulares para que um agente ramifique sem parsear
o stderr:

| Código | Significado                  | Causa típica                                                                    |
| ------ | ---------------------------- | ------------------------------------------------------------------------------- |
| 0      | Sucesso                      | —                                                                               |
| 1      | Genérico / desconhecido      | Falhas de build, erros sem categoria                                            |
| 2      | Input / validação            | Flag inválida, argumento faltante, esquema não coincide                         |
| 3      | Não encontrado               | id, slug ou nome desconhecido                                                   |
| 4      | Auth / proibido              | Token faltante ou expirado, escopo insuficiente                                 |
| 5      | DB não pronto                | Banco de dados ainda em provisionamento                                         |
| 6      | Transitório / API            | 5xx, timeout de rede — seguro tentar novamente                                  |
| 7      | Conflito de estado           | Drift de lockfile, incoming sem resolver, push parcial                          |
| 8      | Secret detectado (reservado) | O detector de secrets existe mas ainda não está conectado em produção           |
| 9      | Lock ocupado                 | Outro `jelou pull`/`push` em andamento                                          |
| 10     | Desajuste de esquema local   | O esquema do `qa.db` é incompatível (`QA_SCHEMA_MISMATCH`) — atualize o `jelou` |

Os códigos 7-9 são específicos de `jelou pull`/`push`/`incoming` (o 8 está
reservado e ainda não é emitido em rotas de produção). O código 10 aparece
quando o toolchain local ficou desatualizado em relação ao esquema que a CLI
espera. Em modo `--json`, o mesmo código aparece em `error.code` com um campo
`hint` que sugere o próximo comando.

## Variáveis de ambiente

| Variável                   | Descrição                                                                   |
| -------------------------- | --------------------------------------------------------------------------- |
| `JELOU_TOKEN`              | Token de autenticação (prioridade máxima; sem necessidade de `jelou login`) |
| `JELOU_PROFILE`            | Perfil padrão                                                               |
| `JELOU_NO_INPUT`           | `1` para modo não interativo                                                |
| `JELOU_FORCE_HUMAN_OUTPUT` | `1` para forçar saída legível mesmo que o stdout esteja redirecionado       |
| `NO_COLOR`                 | `1` para desativar cores ANSI                                               |
| `JELOU_NO_SPINNERS`        | `1` para desativar os spinners de progresso (implícito com `--agent`)       |
| `CI`                       | Detectado automaticamente para modo não interativo                          |

## Comandos de manutenção

```bash theme={null}
jelou update --agent     # há uma versão nova? (somente leitura)
jelou doctor --json      # check de saúde (api, auth, perfil, lockfile, projeto, authoring, skills, versão)
jelou changelog          # notas de versão
jelou feedback           # envia um relatório (sempre pergunta primeiro)
```

Para atualizar a CLI:

```bash theme={null}
npm install -g @jelou/cli@latest
jelou --version
jelou agent install --global --all-targets --yes --no-input   # atualiza as skills
```

<Tip>
  Para consultar a analítica da empresa (catálogo, uma métrica ou um painel
  completo) use `jelou metrics` — tem sua própria página em
  [Métricas](/pt/guias/cli/metrics).
</Tip>
