/** * Google Calendar operation enum — single source of truth across the API, * Dashboard, and Message Broker. Used by: * - calendarAction entity / DTO (api): operation field + validation * - dashboard CalendarActionGoogleOperation type * - broker hostwebhook types + tool schemas * - any future calendar-related node * * Adding a new Calendar operation = add it here, bump this package's * version, publish to npm, and re-install in the consuming repos. * Each consumer still owns its operation-specific config schema (the * dashboard owns the UI form schema, the api owns the dispatch logic), * but the canonical list of valid operation strings lives here. */ export declare const GOOGLE_CALENDAR_OPERATIONS: readonly ["createEvent", "updateEvent", "deleteEvent", "listEvents", "getEvent", "listCalendars", "findFreeSlots", "proposeEvent", "confirmEvent"]; export type GoogleCalendarOperation = (typeof GOOGLE_CALENDAR_OPERATIONS)[number]; /** Type guard — useful when validating untrusted input (DTOs, tool calls). */ export declare function isGoogleCalendarOperation(value: unknown): value is GoogleCalendarOperation; export type GoogleCalendarParamTarget = 'eventConfig' | 'listConfig' | 'root'; export type GoogleCalendarParamType = /** Campo de texto con autocompletado de `{{payload.*}}`. */ 'template' | 'number' | 'select' /** El `TimezonePicker` que ya existe en el dashboard. */ | 'timezone'; export interface GoogleCalendarParamSpec { /** La clave DENTRO de `target`. Es la del cable, no un nombre de UI. */ name: string; /** Dónde vive en la entidad. */ target: GoogleCalendarParamTarget; label: string; type: GoogleCalendarParamType; required?: boolean; /** Texto de ayuda. Llano: el paquete no lleva React. */ description?: string; placeholder?: string; default?: string | number; options?: ReadonlyArray<{ value: string; label: string; }>; min?: number; max?: number; /** * Cómo se llama esta misma cosa en el `config` que espera el ejecutor * compartido (`google-calendar-operations.service.ts`). El ejecutor está * escrito para la ruta del toolkit, donde el LLM manda los nombres **sin** * sufijo, así que `summaryTemplate` viaja como `summary`. Sólo lo llevan los * params de las operaciones que van por ese despachador. */ execKey?: string; } export interface GoogleCalendarOperationSpec { /** Etiqueta del desplegable, y la misma que pinta el lienzo y el panel. */ label: string; /** Sub-línea del desplegable. */ description: string; /** Método de la API de Google al que corresponde. */ apiMethod: string; /** * Si se ejecuta por el despachador genérico (`calendarOps.run`) en vez de por * un `case` escrito a mano. Son las cuatro que se abrieron el 2026-08-11. */ viaExecutor?: boolean; /** Orden de pantalla. */ params: GoogleCalendarParamSpec[]; } export declare const GOOGLE_CALENDAR_OPERATION_SPECS: Record;