VendeeDocs
Arquitetura

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

ServidorHono
Orquestração de agente@openai/agents (SDK), com ai da Vercel
Provedores de modeloOpenRouter e Anthropic
Bancoo mesmo Supabase do CRM, via @repo/supabase
Domínio compartilhado@repo/sharedfinance-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 agentes

O 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.

Nesta página