/** * Telegram AI Toolkit — las herramientas que un telegramAction expone cuando * `aiEnabled` está encendido. * * **Se escribe una sola vez**, como el de Sheets. Antes vivía dos veces: una * copia en `dashboard/components/telegram-actions/telegram-operations-schemas.ts` * y otra en `api/src/mcp-servers/toolkit-specs.ts`, las dos a mano, las dos con * el mismo TODO escrito pidiendo justo esto. Y ya habían derivado: el * `messageId` de `reply_telegram_message` era `number` en el dashboard y * `string` en la api, mientras en las otras tres ops que lo llevan era `number` * en las dos. Aquí es `number` y punto. * * Hay una TERCERA copia que también desaparece: la página de detalle pintaba la * lista de las diez herramientas como diez `
  • ` escritos a mano. Ahora sale de * aquí, contada con `.length`, que es lo que evita que un día anuncie diez y * exponga otra cosa. * * La forma es la que ya consume `toolkitSpecToMcpTool` en la api, para que pueda * usarse sin adaptador. Los textos van en inglés porque los lee el modelo y * quien mire la lista de herramientas del servidor MCP. */ import type { TelegramOperation } from './telegram-operations.js'; export interface TelegramToolkitParameter { name: string; type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface TelegramToolkitSpec { operation: TelegramOperation; /** Etiqueta corta de la fila en la lista de herramientas. */ label: string; /** * Nombre con el que el LLM llama a la herramienta. Lleva `_telegram_` para * no chocar con el `send_email` de Gmail ni el `create_event` de Calendar * cuando un mismo AI Node tiene varios toolkits encendidos. */ toolName: string; /** Descripción (más reglas de uso) que ve el LLM. */ description: string; parameters: TelegramToolkitParameter[]; /** Pisa o borra. Lo pone `marcarDestructivas` leyendo el verbo del * nombre (ver `clase-de-herramienta.ts`), no se escribe a mano. */ destructive?: boolean; /** * Encabezado de grupo para la lista de la página de detalle. Las filas * consecutivas que comparten grupo se pintan bajo un único título, así que el * ORDEN de este array es el que agrupa. Es el mismo que enseñaba el JSX que * sustituye. */ group?: string; } export declare const TELEGRAM_TOOLKIT_SPECS: TelegramToolkitSpec[]; /** Las herramientas por nombre, para despachar una llamada del modelo. */ export declare const TELEGRAM_TOOLKIT_BY_TOOL_NAME: Record;