feat(secretaria): tools de agenda operam na agenda real do satélite via ponte

listar_horarios/agendar_horario chamam a ponte do scoreodonto (/api/nw/agenda
slots|book) quando configurada — slot_id sintético (dentista|start|end), telefone
derivado do JID do contato — com fallback ao calendário interno preservado.
brain.ts injeta a config da agenda (agenda_url/secret/clinica_id) no toolCtx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Deploy Agent
2026-07-02 00:51:47 +02:00
parent 80dc5dd135
commit d09155613c
6 changed files with 164 additions and 2 deletions
@@ -57,12 +57,20 @@ class ProtocolEngine {
// Resolve tools: usa lista passada por opts, ou todas as builtins por padrão
const toolNames = opts?.tools ?? tools_1.ALL_TOOL_NAMES;
const toolDefs = (0, tools_1.resolveTools)(toolNames);
const secCfg = (await this.config.get('secretaria'));
const toolCtx = {
db: this.db,
conversationId,
extChatId: conversation.ext_chat_id ?? undefined,
tenantId: opts?.tenantId,
hooks: opts?.hooks,
// Ponte de agenda do satélite (scoreodonto) — as tools de agenda operam
// na agenda real da clínica quando configurada.
agenda: {
url: secCfg?.agenda_url,
secret: secCfg?.agenda_secret,
clinicaId: secCfg?.clinica_id,
},
};
let response;
let usageInfo = null;