/** * PostgreSQL AI Toolkit — las herramientas que un postgresAction expone cuando * `aiEnabled` está encendido. * * ## Por qué las escrituras NO reciben SQL (2026-09-24, decisión de Ariel) * * El nodo, en modo de una operación, ejecuta el SQL que se le escribe: sus * cinco operaciones son una etiqueta encima del mismo SQL crudo. Si el toolkit * hiciera lo mismo, bloquear una herramienta no bloquearía nada — un * `insert_rows` puede llevar un `DELETE` dentro de un `WITH`, y quien bloqueó * `delete_rows` seguiría viendo desaparecer filas. * * Así que las tres escrituras reciben la tabla del nodo y JSON, y el SQL lo * genera el handler, parametrizado y con los identificadores entrecomillados: * el modelo no escribe SQL que se ejecute como escritura. * * ## Lo que queda con SQL, y cómo se contiene * * - `query_rows` recibe SQL, y corre dentro de una transacción **READ ONLY**: * un `DELETE`, un `UPDATE` o un `CREATE` los rechaza el propio Postgres, no * una expresión regular nuestra. Puede leer otras tablas —un JOIN hace * falta a menudo—; el límite ahí lo pone el usuario de base de datos de la * credencial. * - `execute_sql` recibe SQL cualquiera, DDL incluido. Es la excepción * consciente a «sólo la tabla del nodo»: SQL crudo no se puede vallar a una * tabla. La contienen tres cosas: es siempre destructiva (el gate del AI * Node la para si está encendido), se puede bloquear en el nodo, y el * usuario de base de datos. * * Los textos van en inglés porque los lee el modelo. */ import type { PostgresOperation } from './postgres-operations'; export interface PostgresToolkitParameter { name: string; /** El esquema MCP sólo admite estos tres; lo estructurado viaja como JSON * en un `string`. */ type: 'string' | 'number' | 'boolean'; description: string; required: boolean; } export interface PostgresToolkitSpec { operation: PostgresOperation; label: string; toolName: string; description: string; parameters: PostgresToolkitParameter[]; /** Pisa o borra. Lo pone `marcarDestructivas`, no se escribe a mano. */ destructive?: boolean; } export declare const POSTGRES_TOOLKIT_SPECS: PostgresToolkitSpec[]; /** Las herramientas por nombre, para despachar una llamada del modelo. */ export declare const POSTGRES_TOOLKIT_BY_TOOL_NAME: Record;