/** * El nodo de Calendly como AI toolkit: sus nueve operaciones como herramientas * que un AI Node, un servidor MCP o un agente de voz pueden llamar. * * ## Qué pidió Ariel (2026-09-26) * * «Ahora quiero que hagas el AI Toolkit de Calendly», con el mismo criterio * que GA, Firecrawl, Bucket y Apify: como si fuera single operation, con TODOS * los campos de cada operación (`CALENDLY_OPERATION_SPECS`). Y: * * - `cancel_event` nace BLOQUEADA: cancela una reunión de verdad y le manda * un correo al invitado; no se deshace. * - El tipo de evento del nodo es el defecto de `event_type`, como el canal * de Slack: el agente ofrece huecos de ESE tipo salvo que le pidan otro. * * ## Decide el LLM (2026-09-27) * * El mismo criterio que RSS, Firecrawl y Apify: «que le diga al LLM lo que * quiere y el LLM resuelva». Hasta ese día el límite de la single operation * del nodo era el TOPE de lo que el modelo podía pedir; ahora el tope es fijo * ({@link CALENDLY_TOOLKIT_TOPES}) y lo guardado en single operation no cuenta en modo toolkit * para eso. Lo que el dueño sigue decidiendo es el QUÉ: el tipo de evento por defecto, las herramientas bloqueadas y los caracteres que vuelven. * * ## Las fechas * * ISO 8601. Con desfase (`Z`, `-06:00`) manda el desfase; sin él se leen en * `timezone` o, si no la hay, en la del workspace — lo mismo que single * operation (`zonaDeLasFechas`). */ import type { CampoDeToolkit } from './argumentos-de-toolkit.js'; export type CalendlyToolkitOperation = 'listEvents' | 'getEvent' | 'listInvitees' | 'cancelEvent' | 'markNoShow' | 'undoNoShow' | 'listEventTypes' | 'getAvailableTimes' | 'createSchedulingLink'; export interface CalendlyToolkitParameter { name: string; type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface CalendlyToolkitSpec { operation: CalendlyToolkitOperation; label: string; toolName: string; description: string; parameters: CalendlyToolkitParameter[]; destructive?: boolean; /** Nace bloqueada en el nodo; el dueño la desbloquea. Ver `toolkits.ts`. */ bloqueadaPorDefecto?: boolean; } /** Los parámetros que el nodo puede traer configurados: el modelo los omite * y se usa el del nodo, como el canal de Slack. */ export declare const CALENDLY_TOOLKIT_DEFAULTABLE: readonly ["event_type"]; /** Cuántos elementos devuelve un listado si el modelo no dice otra cosa: cada * uno entra en su contexto. */ export declare const CALENDLY_TOOLKIT_LIMITE_POR_DEFECTO = 20; /** * Lo más que puede pedir el modelo en un listado. Fijo desde el 2026-09-27 * (antes, el `limit` de la single operation del nodo, si lo tenía). 100 en * los tres: con el tope de caracteres de fábrica (20.000) no caben muchos * más, y los eventos se acotan mejor por fechas que pidiendo 500. */ export declare const CALENDLY_TOOLKIT_TOPES: Readonly>; export declare const CALENDLY_TOOLKIT_SPECS: CalendlyToolkitSpec[]; export declare const CALENDLY_TOOLKIT_SPECS_BY_TOOL_NAME: Readonly>; export declare const CALENDLY_TOOLKIT_CAMPOS: Readonly>>>;