apps/runtime
O Vendee Agent Runtime — o único motor de IA do produto
apps/runtime é o Vendee Agent Runtime: o serviço que roda todo fluxo de IA do produto (Otto e Aurora). Roda em processo próprio, não é edge function.
☠️ As edges otto/ e arquiteto/ foram deletadas — o cutover aconteceu, elas não estão "congeladas". Documento, spec ou handoff antigo que cite otto/tools.ts ou arquiteto/index.ts como código vigente está descrevendo um repositório que não existe mais.
Stack
| Servidor | Hono |
| Orquestração de agente | @openai/agents (SDK), com ai da Vercel |
| Provedores de modelo | OpenRouter e Anthropic |
| Banco | o mesmo Supabase do CRM, via @repo/supabase |
| Domínio compartilhado | @repo/shared — finance-engine e ai-policy |
Como o frontend fala com ele
O CRM chama o runtime por HTTP com streaming, na URL de VITE_RUNTIME_URL (em dev, http://localhost:3002). Não passa por edge function.
Sem VITE_RUNTIME_URL configurada, o chat de IA falha alto — é proposital: melhor quebrar visivelmente do que fingir que respondeu.
Estrutura
apps/runtime/src/
├── index.ts # bootstrap
├── server.ts # a aplicação Hono
├── routes/
│ ├── agents/ # run, stream, briefing, refine-handoff, mapa-seed, kb-backfill
│ ├── health.ts
│ └── memory.ts
├── middleware/ # auth, workspace, flag-gate, ia-gate, rate-limit
├── modules/ # orchestrator, runner, sdk-executor, provider-router,
│ # tool-registry, skill-registry, prompt-builder,
│ # ledger, billing, approval, memory, briefing, metodo-seed
└── lib/O que vale entender de cada camada:
middleware/— antes de qualquer trabalho de modelo: quem é o usuário, de qual workspace, a feature está ligada, o teto de IA foi respeitado, e o limite de chamadas.provider-router— decide qual modelo atende qual pedido.ledger— registra o custo real de cada chamada. Nunca grave custo de mentira aqui: é o ledger que alimenta o disjuntor de gasto.tool-registry/skill-registry— o que o agente pode fazer.approval— o que exige confirmação humana antes de acontecer.
Comandos
bun run dev --filter=runtime # sobe com watch
bun run check-types --filter=runtime
bun run evals --filter=runtime # bateria de avaliação dos agentesO check-types do runtime roda gen-kb antes de tsc — ele gera um arquivo de conteúdo da base de conhecimento. Rodar tsc cru sem isso falha por arquivo ausente.