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

# Entrada Multilinha

> Suporte a entrada de texto em múltiplas linhas em todos os modos do ChatCLI usando o delimitador ---.

O ChatCLI suporta entrada de texto em múltiplas linhas em **todos os modos** (Chat, Agent e Coder), permitindo que você organize melhor suas mensagens, cole trechos de código ou envie instruções complexas sem que cada Enter submeta a mensagem.

***

## Como Funciona

O delimitador `---` (tres ou mais hífens) controla o modo multilinha:

1. **Abrir**: Digite `---` sozinho em uma linha e pressione Enter
2. **Escrever**: Cada Enter adiciona uma nova linha (não submete)
3. **Fechar e enviar**: Digite `---` novamente em uma linha sozinha

<Note>
  O delimitador aceita **3 ou mais hífens** (`---`, `----`, `-----`, etc.). Todos funcionam da mesma forma.
</Note>

***

## Exemplos por Modo

### Modo Chat (prompt principal)

```text theme={"system"}
❯ ---
  Multiline mode — type --- on a new line to finish
  ... [1] Preciso de ajuda com um problema complexo.
  ... [2] Tenho um serviço REST que precisa de:
  ... [3] - autenticação JWT
  ... [4] - rate limiting
  ... [5] - validação de email
  ... [6] ---
```

Todas as 5 linhas são enviadas como **uma única mensagem** para a IA.

### Modo Coder (aguardando resposta do usuário)

Quando a IA no modo `/coder` faz uma pergunta e aguarda sua resposta, você também pode usar multilinha:

```text theme={"system"}
  ⏳ Aguardando sua resposta (--- para multilinha, 'sair' para encerrar): ---
  📝 Modo multilinha — digite --- em uma nova linha para finalizar
  ... [1] PostgreSQL na porta 5432
  ... [2] Host: db.internal
  ... [3] Database: myapp_prod
  ... [4] Usar pgx como driver
  ... [5] ---
```

A resposta completa e adicionada ao histórico e a IA continua o ciclo ReAct com todas as informações.

### Modo Agent

O mesmo mecanismo funciona no modo `/agent` quando o sistema solicita entrada do usuário.

***

## Cancelar Multilinha

| Modo            | Como cancelar | Resultado                                                        |
| --------------- | ------------- | ---------------------------------------------------------------- |
| **Chat**        | `Ctrl+C`      | Descarta todo o texto acumulado, mostra `[multilinha cancelado]` |
| **Agent/Coder** | `Ctrl+C`      | Cancela a operação atual (comportamento padrão do Ctrl+C)        |

***

## Prompt de Continuacao

Enquanto o modo multilinha está ativo, o prompt muda para mostrar o número da linha:

```text theme={"system"}
  ... [1] primeira linha
  ... [2] segunda linha
  ... [3] terceira linha
```

Isso facilita saber quantas linhas você já digitou e manter a organizacao visual.

***

## Quando Usar

<CardGroup cols={2}>
  <Card title="Instruções Complexas" icon="list-check">
    Quando sua solicitacao tem múltiplos requisitos ou restrições que ficam mais claros organizados em linhas separadas.
  </Card>

  <Card title="Respostas Detalhadas" icon="message-lines">
    Quando a IA pergunta algo no modo Coder e você precisa fornecer varias informações de uma vez (banco, host, credenciais, etc.).
  </Card>

  <Card title="Contexto Estruturado" icon="layer-group">
    Quando você quer enviar uma especificacao, lista de tarefas ou descrição de bug formatada em múltiplas linhas.
  </Card>

  <Card title="Trechos de Código" icon="code">
    Quando precisa colar ou digitar um trecho de código como parte da mensagem.
  </Card>
</CardGroup>

***

## Detalhes Tecnicos

* O componente `MultilineBuffer` e compartilhado entre todos os modos
* No modo Chat, o go-prompt exibe o prompt de continuacao via `changeLivePrefix`
* No modo Agent/Coder, o `readMultiline()` le do canal centralizado `stdinLines`
* Linhas vazias (Enter sem texto) são incluidas normalmente no conteúdo multilinha
* O delimitador de abertura e fechamento **não** e incluido no texto final
