/** * El nodo de OneDrive como AI toolkit: sus operaciones como herramientas que * un AI Node, un servidor MCP o un agente de voz pueden llamar. * * ## Lo decidido (2026-10-01) * * - **Trece herramientas** para trece operaciones: todas menos «Download * file», que guarda un fichero para el nodo SIGUIENTE del flujo y a un * modelo no le sirve — `read_onedrive_file` le da el texto. Va con su * motivo en `ONEDRIVE_OPERACIONES_SIN_HERRAMIENTA`. * - **Nacen bloqueadas las cinco destructivas**: mover, borrar, compartir * (enlace), invitar y quitar un acceso. Compartir e invitar no pisan nada, * pero exponen: lo que salió ya salió, y eso no se deshace quitando el * permiso después (el criterio de `share_drive_file`). El dueño las * desbloquea en el nodo. * - **El modelo sólo escribe texto**: `create_onedrive_text_file` es * «Upload file» con `source: 'text'` fijo; los ficheros del flujo no son * argumento (no tiene ninguno que pasar). Tampoco `replace` al crear o * copiar, ni el enlace `embed`, ni un enlace «para personas concretas» * (eso es `invite_to_onedrive_item`): los rechaza hw-nodes con un 400 sin * llamar a Graph. * - **Alcance del dueño**: una carpeta opcional en los ajustes del toolkit * (`toolkitFolderId`); vacía = todo el OneDrive. Lo aplica hw-nodes en cada * llamada; aquí sólo se declara qué argumento lleva un elemento o carpeta. * * ## El esquema * * Sólo `string`, `number` y `boolean` (lo que admite MCP): los correos, * separados por comas. Los argumentos son LITERALES: un `{{payload…}}` del * modelo no se resuelve. */ import type { CampoDeToolkit } from './argumentos-de-toolkit.js'; import type { OnedriveOperation } from './onedrive-operations.js'; /** Las operaciones que NO son herramienta, cada una con su motivo. */ export declare const ONEDRIVE_OPERACIONES_SIN_HERRAMIENTA: Readonly<{ readonly downloadFile: "Guarda el fichero para el nodo siguiente del flujo; a un modelo no le sirve — read_onedrive_file le da el texto."; }>; export type OnedriveToolkitOperation = Exclude; export interface OnedriveToolkitParameter { name: string; type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface OnedriveToolkitSpec { operation: OnedriveToolkitOperation; label: string; toolName: string; description: string; parameters: OnedriveToolkitParameter[]; destructive?: boolean; /** Nace bloqueada en el nodo; el dueño la desbloquea. Ver `toolkits.ts`. */ bloqueadaPorDefecto?: boolean; } export declare const ONEDRIVE_TOOLKIT_SPECS: OnedriveToolkitSpec[]; export declare const ONEDRIVE_TOOLKIT_SPECS_BY_TOOL_NAME: Readonly>; export declare const ONEDRIVE_TOOLKIT_CAMPOS: Readonly>>>; /** Los campos de single operation que el toolkit NO expone, y por qué. El * test de paridad los salta con nombre, no en silencio. */ export declare const ONEDRIVE_TOOLKIT_FUERA: Readonly>;