/** * El nodo Bucket como AI toolkit: sus siete operaciones como herramientas que * un AI Node, un servidor MCP o un agente de voz pueden llamar. * * ## Qué pidió Ariel (2026-09-26) * * Lo mismo que GA y Firecrawl — «como si fuera single operation, pero en AI * Toolkit»: cada herramienta lleva TODOS los campos de su operación * (`BUCKET_OPERATION_SPECS`). Y: * * - `delete_object` nace BLOQUEADA: borrar es irreversible; el dueño la * desbloquea en el nodo. * - El alcance nace en «carpeta» —un prefijo opcional; vacío es todo el * bucket— y se puede cambiar a «todo el bucket». El bucket lo fija la * credencial: el modelo nunca sale de él. * * ## El esquema * * Sólo `string`, `number` y `boolean` (lo que admite MCP). Los nombres usan * verbos que `claseDeHerramienta` ya sabe leer: `get_*` y `read_*` leen, * `upload_*` y `create_*` escriben, `delete_*` destruye. */ import type { CampoDeToolkit } from './argumentos-de-toolkit.js'; export type BucketToolkitOperation = 'presignDownload' | 'putObject' | 'headObject' | 'deleteObject' | 'listObjects' | 'getObject' | 'presignUpload'; export interface BucketToolkitParameter { name: string; type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface BucketToolkitSpec { operation: BucketToolkitOperation; label: string; toolName: string; description: string; parameters: BucketToolkitParameter[]; destructive?: boolean; /** Nace bloqueada en el nodo; el dueño la desbloquea. Ver `toolkits.ts`. */ bloqueadaPorDefecto?: boolean; } export declare const BUCKET_TOOLKIT_SPECS: BucketToolkitSpec[]; export declare const BUCKET_TOOLKIT_SPECS_BY_TOOL_NAME: Readonly>; export declare const BUCKET_TOOLKIT_CAMPOS: Readonly>>>; /** Cuántos ficheros devuelve `list_objects` si el modelo no dice otra cosa: * cada uno entra en su contexto. */ export declare const BUCKET_TOOLKIT_MAX_KEYS_POR_DEFECTO = 200; /** Lo que dura un enlace firmado si el modelo no dice otra cosa. */ export declare const BUCKET_TOOLKIT_CADUCIDAD_POR_DEFECTO = 3600; /** Los formatos de `read_object` (los del select de la operación). */ export declare const BUCKET_TOOLKIT_FORMATOS_DE_LECTURA: readonly ["text", "json", "base64"]; /** Los alcances del modo toolkit. `folder` es el de fábrica (con la carpeta * vacía, todo el bucket); `bucket` lo abre entero aunque haya carpeta. */ export declare const BUCKET_TOOLKIT_ALCANCES: readonly ["folder", "bucket"]; export type BucketToolkitAlcance = (typeof BUCKET_TOOLKIT_ALCANCES)[number];