# Lembretes

Um lembrete solicita uma sessão novamente, uma vez ou repetidamente, até que você o remova.

Canonical page: https://beeuni.ai/docs/pt/connect/reminders

Um lembrete envia um prompt para uma [sessão](/docs/pt/work/sessions) existente no horário que você definir. Ele dispara uma vez ou se repete até que alguém o remova. Um agente usa um lembrete para verificar o próprio trabalho: "em 24 horas, veja se o fornecedor respondeu", "a cada hora, veja se a implantação está funcionando".

Um lembrete é um [gatilho](/docs/pt/connect/triggers) vinculado a uma única sessão. As diferenças:

| | Gatilho | Lembrete |
| --- | --- | --- |
| Armazenado em | `beeuni.yaml`, enviado para o branch padrão | O banco de dados. Sem edição de manifesto nem commit. |
| Um disparo | Geralmente inicia uma nova sessão | Envia um prompt para a sessão vinculada. Nunca inicia uma sessão. |
| Duração | Até que alguém o remova do manifesto | Até que alguém o remova. Ele é pausado automaticamente se a sessão for excluída ou falhar. |
| Quem pode criar | Gerentes de projeto (`project.trigger.create`) | Qualquer pessoa que possa enviar prompts para a sessão. Um agente só pode criar um na própria sessão. |
| Listado por | `beeuni triggers ls`, a página Triggers | `beeuni reminders ls`, por sessão |

Use um gatilho para trabalhos do projeto que todos devem ver, como um resumo diário. Use um lembrete para um acompanhamento que pertença a uma tarefa.

<a id="turn-reminders-on"></a>

## Ativar lembretes

Lembretes são um [sinalizador de recurso](/docs/pt/feature-flags) por projeto, `reminders`, desativado por padrão. Ative-o em **Settings → Feature flags** ou:

```sh
beeuni projects features enable reminders
```

Enquanto o sinalizador estiver desativado, todas as rotas de lembretes respondem `403` com `code: "feature_disabled"`, a página Reminders mostra como ativá-lo e os lembretes existentes não disparam. Ao reativar o sinalizador, o horário perdido enquanto ele estava desativado dispara uma vez, e então a programação continua.

<a id="set-a-reminder"></a>

## Definir um lembrete

Dentro de uma sessão, a CLI usa a sessão atual. Fora dela, passe `--session <id>`.

```sh
# Fire once, 24 hours from now.
beeuni remind "Check whether the vendor replied to the contract email." --in 24h

# First fire in 24 hours, then every hour until removed.
beeuni remind "Did the vendor reply? If yes, summarize it and remove this reminder." --in 24h --every 1h

# Fire at an exact instant.
beeuni remind "Post the launch checklist to #launch." --at 2026-10-01T09:00:00Z

# Repeat on a cron expression in a time zone.
beeuni reminders add "Post the standup summary." --cron "0 0 9 * * 1-5" --timezone Europe/Berlin
```

O comando exibe o ID do lembrete, por exemplo `reminder.3f9a1c2e7b04`, e o próximo horário de disparo.

<a id="schedule-rules"></a>

## Regras de programação

- `--in <duration>` ou `--at <ISO-8601>` define o primeiro disparo. Se usado sozinho, o lembrete dispara uma vez.
- `--every <duration>` define a repetição. O período mínimo é `5m`. Cada período começa quando o disparo anterior é processado.
- `--cron "<expr>"` define a repetição usando uma expressão cron de 6 campos (primeiro, os segundos). `--timezone` define o fuso horário; o padrão é `UTC`. Um lembrete cron deve disparar no máximo uma vez a cada 5 minutos. Ele não aceita `--in` nem `--at`.
- As durações são `30m`, `24h`, `2d` ou segundos inteiros.
- `--in`, `--at` e `--every` aceitam no máximo 366 dias.
- Uma sessão pode ter no máximo 20 lembretes ativos. Um projeto pode ter no máximo 200. Exceder qualquer limite retorna `409`.

<a id="what-a-fire-does"></a>

## O que acontece quando um lembrete dispara

Cada disparo coloca o texto do lembrete na fila da sessão como um prompt que começa com um cabeçalho:

```text
[REMINDER reminder.3f9a1c2e7b04 — recurring scheduled check-in on this session, not a new user message. When it is no longer needed, run `beeuni reminders rm reminder.3f9a1c2e7b04`.]

Did the vendor reply? If yes, summarize it and remove this reminder.
```

- Uma sessão em espera é reativada. O agente tem acesso a todo o histórico da conversa e ao espaço de trabalho da sessão.
- Um disparo nunca inicia uma nova sessão. Se a sessão for excluída ou falhar, o disparo pausa o lembrete e registra o motivo em `last_error`.
- Um disparo mantém as conexões pessoais da sessão, como o Gmail de um membro. Definir um lembrete em uma sessão pela qual você não está atuando as remove, assim como enviar um prompt para essa sessão.
- A pausa de gatilhos para todo o projeto (`beeuni triggers pause`) também interrompe os lembretes.

Cada disparo é uma interação do modelo. Remova um lembrete recorrente assim que a condição dele for atendida.

<a id="manage-reminders"></a>

## Gerenciar lembretes

| Comando | Efeito |
| --- | --- |
| `beeuni reminders ls [--json]` | Lista os lembretes da sessão: ID, estado, programação, próximo disparo e texto. |
| `beeuni reminders pause <id>` | Interrompe os disparos. Mantém o lembrete. |
| `beeuni reminders resume <id>` | Dispara novamente e reativa a contagem a partir de agora. Um lembrete de disparo único que já disparou continua `done`. |
| `beeuni reminders rm <id>` | Exclui o lembrete. Aliases: `stop`, `delete`. |

Um lembrete está `active` (programado), `paused` (desativado) ou `done` (um lembrete de disparo único que já disparou).

<a id="api-and-sdk"></a>

## API e SDK

As rotas são vinculadas à sessão:

| Rota | Efeito |
| --- | --- |
| `GET /v1/projects/:projectId/sessions/:sessionId/reminders` | Lista os lembretes. |
| `POST /v1/projects/:projectId/sessions/:sessionId/reminders` | Cria um. Corpo: `prompt`, `name` opcional e `every`, `cron` + `timezone`, `at` ou `in`. Retorna `201`. |
| `PATCH /v1/projects/:projectId/sessions/:sessionId/reminders/:reminderId` | O corpo `{ "enabled": false }` pausa; `{ "enabled": true }` retoma. |
| `DELETE /v1/projects/:projectId/sessions/:sessionId/reminders/:reminderId` | Exclui um. |

Uma programação inválida retorna `400` com o motivo. Uma sessão excluída retorna `409`. Uma credencial de agente que indica outra sessão retorna `403`.

```ts
const reminders = beeuni.session(projectId, sessionId).reminders;
const reminder = await reminders.create({ prompt: 'Did the vendor reply?', in: '24h', every: '1h' });
await reminders.update(reminder.id, { enabled: false });
await reminders.remove(reminder.id);
```
