# Prompturi în așteptare (/ro/docs/api/gateway/prompts)

Prompturi gata de lipit pe care agenții (sau tu) le lasă pentru un chat viitor — predări, continuări programate — cu mementouri și lansare dintr-un clic pe un dispozitiv.

Un prompt în așteptare este un prompt complet, de sine stătător, salvat pentru mai târziu: predarea pe care o scrie un agent când termină un obiectiv, o continuare care trebuie să înceapă abia după o dată sau o idee pe care vrei s-o reiei într-un chat nou. Este stocat central, deci aceeași listă apare în aplicația desktop, pe telefon și în hub.

Agenții citesc lista prin uneltele serverului MCP `prompts_list` (`status`, `limit`) și `prompts_get` (`id`). Ambele sunt doar citire: lansarea unui prompt pornește o rulare plătită, deci rămâne în hub, pe desktop și pe telefon.

## Prompturi în așteptare: cum lasă agenții prompturi pentru mai târziu [#prompturi-în-așteptare-cum-lasă-agenții-prompturi-pentru-mai-târziu]

1. **Captură.** La finalul unui obiectiv, agentul trimite promptul „pornește un chat nou cu asta” la `POST /v1/prompts`. Hook-ul Stop din Copilot, unealta de predare din desktop, telefonul și hub-ul folosesc același endpoint, iar `source` spune care dintre ele.
2. **Deduplicare și înlocuire.** Același text este stocat o singură dată (sha256 al promptului cu spațiile normalizate), așa că două căi de captură nu creează dubluri — al doilea apel răspunde `200` cu `created: false`. Trimite un `goal_key` stabil și orice prompt **deschis** mai vechi cu aceeași cheie devine `superseded`: rămâne deschisă doar ultima predare pentru un obiectiv.
3. **Așteptare.** Fără `not_before`, promptul este scadent imediat. Cu o dată (`2026-10-01` înseamnă ora 07:00 UTC în acea zi) sau o dată-oră ISO, rămâne tăcut până atunci.
4. **Memento.** Când `not_before` trece, primești o notificare `prompt.due` în [inbox](/docs/api/gateway/triggers) (plus push), cu `url` `codai://prompts/<id>`. Cu `auto_run: true`, promptul este și lansat automat pe `target_device_id` sau pe cel mai recent dispozitiv desktop/Android al tău.
5. **Acțiune.** Deschide promptul și copiază-l, amână-l (`PATCH` cu un nou `not_before` — rearmează memento-ul), marchează-l `done` / `dismissed` sau apelează `POST …/launch`: se deschide o sesiune partajată nouă și textul este trimis către un dispozitiv ca un control `send`. Promptul trece în `launched` și păstrează `run_session_id`.

```ts
import { Codai } from 'codai-sdk';

const codai = new Codai({ apiKey: process.env.CODAI_API_KEY! });
const saved = await codai.prompts.create({
  prompt: 'Scop: termină exportul de facturare…',
  source: 'agent',
  goal_key: 'billing-export',
  not_before: '2026-10-01',
});
const due = await codai.prompts.list({ status: 'due' });
await codai.prompts.launch(saved.id);
```

```python
from codai import Codai

codai = Codai(api_key="codai_...")
saved = codai.prompts.create({"prompt": "Scop: termină exportul de facturare…", "goal_key": "billing-export"})
codai.prompts.update(saved["id"], {"not_before": "2026-10-03"})  # amânare
codai.prompts.launch(saved["id"])
```

Stări: `open` → `launched` → `sent` → `answered` → `verified`, plus stările de închidere `done` / `dismissed` / `superseded`. `GET /v1/prompts` întoarce implicit `open`; `status=active` întoarce tot ce e încă în lucru (`open`, `launched`, `sent`, `answered`), `status=due` întoarce prompturile deschise al căror `not_before` lipsește sau a trecut deja, iar `status=all` le întoarce pe toate.

## Trimis, răspuns, verificat [#trimis-răspuns-verificat]

Nu mai trebuie să marchezi manual un prompt după ce l-ai lipit într-un chat:

- **Trimis (`sent`).** Când o sesiune raportează un `turn_start` al cărui text se potrivește cu un prompt activ (același hash, aceleași prime 4 000 de caractere sau cel puțin 85 % cuvinte comune), gateway-ul marchează promptul `sent` și salvează `match_ref` (sesiunea) și `match_turn_id`. Clienții care văd chaturi pe care gateway-ul nu le vede (extensia VS Code citește sesiunile locale din Copilot Chat) raportează același lucru cu `POST /v1/prompts/{id}/match`. Potrivirea nu blochează și nu strică niciodată tura.
- **Răspuns (`answered`).** Când tura respectivă se termină (`turn_end`), promptul trece în `answered`.
- **Verificat (`verified`).** `POST /v1/prompts/{id}/verify` îl întreabă pe `codai-fast` dacă chatul a făcut cu adevărat ce cerea promptul. Citește transcrierea sesiunii, plus opțional un `diff` (de exemplu `git diff base_sha..HEAD`) și `files` trimise de client, și salvează un `report` (`verdict` `done` / `partial` / `not_started`, `summary`, `changed`, `remaining`). Verdictul `done` mută promptul în `verified`; orice alt verdict lasă starea neschimbată. `POST /v1/prompts/verify` face același lucru pentru toate prompturile active care au o sesiune (sau pentru `ids` primite). Fiecare client are un buton **Verifică tot** pentru asta.

## Actualizări în timp real [#actualizări-în-timp-real]

`GET /v1/prompts/stream` e un flux server-sent events: câte un eveniment `prompt` la fiecare creare, modificare sau ștergere a unui prompt al tău, astfel încât desktopul, telefonul, hub-ul și VS Code arată aceeași stare în una-două secunde. Un telefon aflat în fundal primește în schimb o notificare push.

<OpenAPIPage document="./openapi/ro/gateway.yaml" operations={[{path: '/v1/prompts',method: 'get'},{path: '/v1/prompts',method: 'post'},{path: '/v1/prompts/{id}',method: 'get'},{path: '/v1/prompts/{id}',method: 'patch'},{path: '/v1/prompts/{id}',method: 'delete'},{path: '/v1/prompts/{id}/launch',method: 'post'},{path: '/v1/prompts/{id}/match',method: 'post'},{path: '/v1/prompts/{id}/verify',method: 'post'},{path: '/v1/prompts/verify',method: 'post'},{path: '/v1/prompts/stream',method: 'get'}]} />
