mirror of
https://github.com/melgarafael/DeskcommCRM.git
synced 2026-10-02 01:28:34 +08:00
plan(canais): Task 5 bloqueada pela Fase 3b — descoberto implementando
O send que a tool injetaria precisa passar por channel.send, que registra a mensagem em e avanca o ledger (job_id, seq). Sem o adapter Meta (lib/channels/index.ts:10 -> meta_cloud: null) nao ha por onde. Contornar chamando sendTemplate direto custaria: template invisivel na conversa (ilha, invariantes 3 e 6) e REENVIO em retry pos-crash — e template, diferente de texto livre, e cobrado por entrega. Toda a logica que decide algo ja esta pronta e testada fora do inbound-turn.ts. Falta so o fio, e ele depende do adapter. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01671t6LhFTTonLgwL47wBy3
This commit is contained in:
co-authored by
Claude Opus 5
parent
7d5c8cb3e7
commit
b11cfc8533
@@ -308,7 +308,36 @@ Com o destinatário `5531998966398` já registrado e o template `deskcomm_prova_
|
||||
|
||||
---
|
||||
|
||||
## Task 5: A ferramenta do agente
|
||||
## ⚠️ Task 5 BLOQUEADA pela Fase 3b — descoberto ao tentar implementá-la
|
||||
|
||||
A tool `send_template` não pode ser concluída **corretamente** antes do adapter Meta
|
||||
(`lib/channels/index.ts:10` → `meta_cloud: null // Fase 3b`).
|
||||
|
||||
**Por quê.** O `send` que a tool injetaria em `runBeforeSend` precisa passar por
|
||||
`channel.send({tenantId, leadId, jobId, seq, conversationId, body})`, que faz duas
|
||||
coisas indispensáveis:
|
||||
|
||||
1. **Registra a mensagem em `messages`** — sem isso o template sai e não aparece na
|
||||
conversa. Ilha, e violação dos invariantes 3 e 6 do sistema vivo.
|
||||
2. **Avança o ledger `(job_id, seq)`** — que é o que impede reenvio depois de um
|
||||
crash. Sem ele, um re-run **reenvia o template**. E template **custa dinheiro**:
|
||||
diferente de texto livre, cada entrega é cobrada.
|
||||
|
||||
Chamar `sendTemplate` direto, contornando o `channel.send`, compraria a tool ao preço
|
||||
de mensagem invisível e cobrança duplicada em retry. Não é o tipo de atalho que se
|
||||
paga.
|
||||
|
||||
**Ordem correta:** Fase 3b (adapter Meta, com `send` que sabe despachar template) →
|
||||
então a Task 5 vira ligação de poucas linhas.
|
||||
|
||||
**O que JÁ está pronto e não se perde:** toda a lógica que decide algo está fora do
|
||||
`inbound-turn.ts` e testada — `sendTemplate` (8 casos + envio real provado),
|
||||
`explainSendResult` (6 casos), `renderTemplateBody` (6 casos) e o gate reconhecendo
|
||||
`isTemplate` (10 casos). Falta só o fio, e ele depende do adapter.
|
||||
|
||||
---
|
||||
|
||||
## Task 5 (após a Fase 3b): A ferramenta do agente
|
||||
|
||||
**Files:**
|
||||
- Create: `lib/ai/runtime/tools/send-template.ts`
|
||||
|
||||
Reference in New Issue
Block a user