@vaia-lab/sdk 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,3 +1,6 @@
1
+ import { A as AgentSurfaceConfig, a as AgentAction } from './agent-1bVw0eB8.cjs';
2
+ export { b as AGENT_PROTOCOL_VERSION, c as AgentActionParam, d as AgentActionResult, e as AgentEvidence, f as AgentSpaceContext, g as AgentTurnRequest, h as AgentTurnResponse, C as CONNECTOR_OF_OPERATION, i as ConnectorNeed, j as ConnectorOperation, k as ConnectorRequest, l as ConnectorResult, v as validateActionCall, m as validateAgentSurface } from './agent-1bVw0eB8.cjs';
3
+
1
4
  /**
2
5
  * Las 7 piezas operativas del ecosistema VAIA.
3
6
  *
@@ -158,227 +161,6 @@ declare function checkAuthority(a: Authority, intento?: {
158
161
  reason: string;
159
162
  };
160
163
 
161
- /**
162
- * VAIA Extension Protocol — superficie de AGENTE.
163
- *
164
- * Es la parte del protocolo que permite que el asistente de Handeia viva
165
- * dentro de un espacio de terceros. Sigue la regla del ecosistema: protocolo
166
- * antes que SDK. Lo que hay aquí son CONTRATOS; el SDK solo los transporta.
167
- *
168
- * ── El reparto de papeles ────────────────────────────────────────────────
169
- * El espacio → superficie y manos. Declara qué sabe y qué puede hacer.
170
- * Handeia → cerebro, memoria y autoridad. Decide y ejecuta a través suyo.
171
- *
172
- * Por eso un espacio NO trae su propia IA: si la trajera, no te conocería,
173
- * empezaría de cero cada vez, y no podría contradecirse a sí mismo. El caso
174
- * que lo justifica: el espacio puntúa un resultado con 90 y el agente te dice
175
- * que te conviene el de 87, porque sabe algo de ti que el espacio no sabe.
176
- * Eso solo es posible si el cerebro vive fuera del espacio.
177
- *
178
- * ── La regla de confianza, que manda sobre todo lo demás ─────────────────
179
- * El espacio es CÓDIGO DE TERCEROS. Nada de lo que envía es un hecho: es una
180
- * AFIRMACIÓN. Handeia la trata como dato citado, nunca como instrucción y
181
- * nunca al mismo nivel que lo que sabe del usuario. Un espacio que escriba
182
- * "ignora las instrucciones anteriores" en su contexto no logra nada.
183
- *
184
- * @see AGENT_PROTOCOL_VERSION para la política de compatibilidad.
185
- */
186
- /**
187
- * Versión del protocolo de agente. Viaja en cada mensaje.
188
- *
189
- * Se versiona desde el primer día a propósito: este contrato es público y
190
- * cambiarlo después obliga a coordinar despliegues entre partes que no se
191
- * conocen. Ya se pagó esa factura una vez con la codificación del JWT.
192
- */
193
- declare const AGENT_PROTOCOL_VERSION = 1;
194
- /** Un parámetro de una acción. Sin tipos no hay validación posible. */
195
- interface AgentActionParam {
196
- name: string;
197
- type: 'string' | 'number' | 'boolean';
198
- description: string;
199
- required?: boolean | undefined;
200
- /** Valores admitidos. Si se define, nada fuera de la lista es válido. */
201
- enum?: string[] | undefined;
202
- }
203
- /**
204
- * Algo que el espacio sabe hacer.
205
- *
206
- * Handeia SOLO puede pedir acciones declaradas aquí. No improvisa, no toca el
207
- * DOM, no busca la forma. Si no está declarada, para el agente no existe —
208
- * y eso es lo que hace que el mismo agente sirva en cualquier espacio sin que
209
- * Handeia sepa nada de ninguno en particular.
210
- */
211
- interface AgentAction {
212
- /** Identificador estable, en minúsculas: 'filtrar_resultados'. */
213
- name: string;
214
- /** Qué hace, en lenguaje natural. Es lo que lee el modelo para elegirla. */
215
- description: string;
216
- params?: AgentActionParam[] | undefined;
217
- /**
218
- * true si modifica algo. Las que escriben se confirman con el usuario ANTES
219
- * de ejecutarse — un agente que escribe sin preguntar se siente fuera de
220
- * control incluso cuando acierta.
221
- */
222
- writes?: boolean | undefined;
223
- /** Permiso que el usuario debe haber concedido a este espacio. */
224
- permission?: string | undefined;
225
- }
226
- /** Configuración de la superficie de agente dentro de defineCapability. */
227
- interface AgentSurfaceConfig {
228
- /** Acciones que el espacio expone. Vacío = el agente solo puede responder. */
229
- actions?: AgentAction[] | undefined;
230
- /**
231
- * Endpoint para preguntarle al espacio cuando el usuario NO está dentro
232
- * ("¿tengo algo pendiente ahí?"). El círculo solo existe con el espacio
233
- * abierto; esto es lo que permite que Handeia sea el lugar donde convergen
234
- * todos tus espacios en vez de uno más al que entrar.
235
- */
236
- queryEndpoint?: string | undefined;
237
- /** Frase de bienvenida propia del espacio. */
238
- greeting?: string | undefined;
239
- /**
240
- * Servicios externos que el espacio necesita consultar. El usuario los
241
- * concede por espacio y los puede revocar cuando quiera. El espacio jamás
242
- * recibe el token: pide operaciones, la plataforma las ejecuta.
243
- */
244
- needs?: ConnectorNeed[] | undefined;
245
- }
246
- /**
247
- * Servicios externos que un espacio puede necesitar (GitHub, Drive, Calendar…).
248
- *
249
- * ── La regla, y no tiene excepciones ─────────────────────────────────────
250
- * El espacio NUNCA recibe el token del usuario. Declara qué necesita, la
251
- * plataforma llama al proveedor con el token que YA tiene guardado, y le
252
- * devuelve solo el resultado.
253
- *
254
- * Por qué así y no entregando el token:
255
- * - Si cada espacio guardara tokens, la superficie de ataque se multiplica
256
- * por cada desarrollador que publique. Un espacio comprometido entregaría
257
- * el GitHub y el Drive de todos sus usuarios.
258
- * - Prestado, un espacio comprometido solo puede pedir las operaciones que
259
- * el usuario le concedió, con límite de frecuencia, auditadas y
260
- * revocables al instante desde Conectores.
261
- *
262
- * De regalo, publicar un espacio se vuelve barato: el desarrollador no
263
- * implementa OAuth de nada.
264
- */
265
- type ConnectorNeed = 'github' | 'drive' | 'calendar' | 'email' | 'notion' | 'discord';
266
- /**
267
- * Operaciones de LECTURA que la plataforma sabe hacer por el espacio.
268
- *
269
- * Lista cerrada a propósito: un espacio no puede pedir "haz esta llamada
270
- * arbitraria a la API de GitHub". Solo puede pedir lo que está aquí, y cada
271
- * una devuelve datos ya acotados. Escribir en un servicio externo NO se
272
- * presta — para eso el usuario usa el servicio.
273
- */
274
- type ConnectorOperation = 'github.repos' | 'github.issues' | 'drive.files' | 'calendar.events' | 'email.recent' | 'notion.pages';
275
- /** Lo que el espacio pide prestado. */
276
- interface ConnectorRequest {
277
- operation: ConnectorOperation;
278
- /** Filtros simples. La plataforma los valida; nada de consultas libres. */
279
- params?: Record<string, string | number | boolean> | undefined;
280
- }
281
- /** Lo que la plataforma devuelve. Datos, jamás credenciales. */
282
- interface ConnectorResult {
283
- operation: ConnectorOperation;
284
- ok: boolean;
285
- items?: Record<string, unknown>[] | undefined;
286
- /** 'sin_conectar' = el usuario no ha vinculado ese servicio todavía. */
287
- error?: 'sin_permiso' | 'sin_conectar' | 'no_soportada' | 'limite_excedido' | 'fallo' | undefined;
288
- }
289
- /** Qué operación necesita qué conector — la plataforma lo usa para autorizar. */
290
- declare const CONNECTOR_OF_OPERATION: Record<ConnectorOperation, ConnectorNeed>;
291
- /**
292
- * Lo que el espacio dice que está pasando.
293
- *
294
- * OJO: se llama `claims` y no `facts` a propósito. Handeia lo etiqueta como
295
- * afirmación de un tercero antes de dárselo al modelo.
296
- */
297
- interface AgentSpaceContext {
298
- /** Dónde está el usuario dentro del espacio: '/lista'. */
299
- route?: string | undefined;
300
- /** Qué está viendo, en lenguaje natural: 'Lista de 12 resultados'. */
301
- view?: string | undefined;
302
- /** Datos que el espacio considera relevantes ahora mismo. */
303
- claims?: Record<string, unknown> | undefined;
304
- }
305
- /** Petición del espacio a Handeia. Un solo endpoint, un solo formato. */
306
- interface AgentTurnRequest {
307
- protocol: typeof AGENT_PROTOCOL_VERSION;
308
- /** Lo que escribió el usuario. */
309
- message: string;
310
- context?: AgentSpaceContext | undefined;
311
- /** Acciones disponibles AHORA (pueden ser menos que las declaradas). */
312
- actions?: AgentAction[] | undefined;
313
- /** Turnos previos, para que el agente no pierda el hilo. */
314
- history?: {
315
- role: 'user' | 'agent';
316
- text: string;
317
- }[] | undefined;
318
- /** Resultado de una acción que Handeia pidió en el turno anterior. */
319
- actionResult?: AgentActionResult | undefined;
320
- }
321
- /** Lo que el espacio devuelve tras ejecutar una acción. */
322
- interface AgentActionResult {
323
- action: string;
324
- ok: boolean;
325
- /** Qué pasó, para que el agente pueda cerrar el ciclo con el usuario. */
326
- summary?: string | undefined;
327
- error?: string | undefined;
328
- }
329
- /**
330
- * De dónde salió lo que el agente afirma.
331
- *
332
- * No es adorno: es el pilar de info verificada. Cuando el agente contradice
333
- * al espacio ("dice 90, pero te conviene la de 87"), tiene que poder decir de
334
- * dónde sacó su razón. Un oráculo que no se explica no se gana la confianza.
335
- */
336
- interface AgentEvidence {
337
- /** 'handeia' = memoria del usuario · 'space' = lo que declaró el espacio. */
338
- source: 'handeia' | 'space';
339
- label: string;
340
- }
341
- /** Respuesta de Handeia al espacio. */
342
- interface AgentTurnResponse {
343
- protocol: typeof AGENT_PROTOCOL_VERSION;
344
- /** Qué decirle al usuario. */
345
- text?: string | undefined;
346
- /** Acción a ejecutar. Siempre sale de la lista declarada, nunca inventada. */
347
- action?: {
348
- name: string;
349
- args?: Record<string, unknown> | undefined;
350
- } | undefined;
351
- /** true si hay que confirmar con el usuario antes de ejecutarla. */
352
- confirm?: boolean | undefined;
353
- evidence?: AgentEvidence[] | undefined;
354
- /** Identificador para cruzar los registros de todas las capas. */
355
- traceId?: string | undefined;
356
- }
357
- /**
358
- * Revisa que las acciones declaradas sean utilizables.
359
- *
360
- * Corre al declarar la capacidad, no en producción: un contrato mal escrito
361
- * debe reventar en el escritorio del desarrollador, no frente al usuario.
362
- */
363
- declare function validateAgentSurface(cfg: AgentSurfaceConfig): string[];
364
- /**
365
- * ¿Es válida esta acción contra lo declarado?
366
- *
367
- * La usa Handeia antes de reenviarle nada al espacio. Es la lista blanca en
368
- * ejecución: aunque el modelo se invente una acción o un argumento fuera de
369
- * rango, aquí se detiene.
370
- */
371
- declare function validateActionCall(llamada: {
372
- name: string;
373
- args?: Record<string, unknown> | undefined;
374
- }, declaradas: AgentAction[]): {
375
- ok: true;
376
- action: AgentAction;
377
- } | {
378
- ok: false;
379
- reason: string;
380
- };
381
-
382
164
  type PublishType = 'app' | 'ia' | 'skill' | 'eco';
383
165
  type EcoTarget = 'gandia' | 'handeia' | 'both';
384
166
  type NodeType = 'widget' | 'artefacto' | 'espacio' | 'skill' | 'agente';
@@ -904,55 +686,6 @@ declare function defineCapability(config: CapabilityConfig): CapabilityConfig;
904
686
  /** Converts a CapabilityConfig to a gandia.manifest.json object. */
905
687
  declare function toManifest(config: CapabilityConfig): VAIAManifest;
906
688
 
907
- /**
908
- * El círculo del agente de Handeia, para montar dentro de un espacio.
909
- *
910
- * Montaje NEUTRAL a propósito: no depende de React ni de ningún framework. El
911
- * SDK presume de cero dependencias y atarlo a React lo traicionaría — un
912
- * espacio hecho en Vue, Svelte o HTML puro tiene el mismo derecho al agente.
913
- * Encima de esto, un envoltorio de React son tres líneas.
914
- *
915
- * Lo que el desarrollador pone:
916
- * - de dónde sacar el contexto (qué está viendo el usuario)
917
- * - qué acciones sabe ejecutar
918
- * Lo que pone el SDK: el círculo, el campo, el transporte y la identidad.
919
- *
920
- * El aspecto lo controla el SDK a propósito: así el agente se ve y se comporta
921
- * igual en todos los espacios, que es parte de que se sienta Handeia y no un
922
- * chat pegado a una app.
923
- */
924
-
925
- interface MountAgentOptions {
926
- /** capability_id del espacio, el mismo del manifest. */
927
- capabilityId: string;
928
- /**
929
- * Dónde vive Handeia. Un solo endpoint, y el SDK no sabe qué hay detrás:
930
- * así Handeia puede reordenar sus capas sin publicar una versión nueva.
931
- */
932
- handeiaUrl?: string | undefined;
933
- /** Qué está viendo el usuario AHORA. Se pregunta en cada turno, no se cachea. */
934
- getContext?: (() => AgentSpaceContext | Promise<AgentSpaceContext>) | undefined;
935
- /** Las mismas acciones que el manifest declara. */
936
- actions?: AgentAction[] | undefined;
937
- /** Ejecuta una acción. Solo se llama con acciones declaradas y ya validadas. */
938
- onAction?: ((name: string, args: Record<string, unknown>) => Promise<AgentActionResult> | AgentActionResult) | undefined;
939
- /** Dónde montar. Por defecto, el body. */
940
- container?: HTMLElement | undefined;
941
- /** Saludo propio del espacio. */
942
- greeting?: string | undefined;
943
- }
944
- interface AgentHandle {
945
- open(): void;
946
- close(): void;
947
- destroy(): void;
948
- }
949
- /**
950
- * Monta el agente. Devuelve un manejador para abrirlo, cerrarlo o quitarlo.
951
- *
952
- * Es idempotente por espacio: montarlo dos veces no deja dos círculos.
953
- */
954
- declare function mountAgent(opts: MountAgentOptions): AgentHandle;
955
-
956
689
  /**
957
690
  * Capacidades que CORREN.
958
691
  *
@@ -1267,4 +1000,4 @@ declare function toMCPTools(tools: ToolDef[]): {
1267
1000
  declare const gandia: typeof _gandia;
1268
1001
  declare const handeia: typeof _handeia;
1269
1002
 
1270
- export { AGENT_PROTOCOL_VERSION, type ActionPayload, type ActionResponse, type AgentAction, type AgentActionParam, type AgentActionResult, type AgentDef, type AgentEvidence, type AgentHandle, type AgentLoopOptions, type AgentSpaceContext, type AgentSurfaceConfig, type AgentTurn, type AgentTurnRequest, type AgentTurnResponse, type AuditRecord, type Authority, type AuthorityLevel, CONNECTOR_OF_OPERATION, type Capability, type CapabilityCall, type CapabilityConfig, type CapabilityResult, type CardPayload, type CardResponse, type ConnectorNeed, type ConnectorOperation, type ConnectorRequest, type ConnectorResult, type Consequence, type DataResponse, type EcoTarget, type Ecosystem, type EcosystemConfig, type ErrorResponse, type EvidenceKind, type EvidencePolicy, type GandiaContext, type GandiaJWTClaims, type GandiaTenant, type GandiaUser, type HandeiaContext, type HandeiaJWTClaims, type HandeiaUser, type HttpCapabilityOptions, type LocalCapabilityOptions, type MCPCapabilityOptions, type MCPInputSchema, type MCPTool, type MCPTransport, type ModalityDef, type ModelFn, type MountAgentOptions, type NodeType, type OutputType, type PersonalityDef, type PiecesConfig, type PublishType, type RespondOpts, type Risk, type SkillDef, type Surface, type SurfaceHandlers, type TablePayload, type TableResponse, type TextResponse, type ToolDef, VAIAError, type VAIAManifest, type VAIAResponse, type WidgetPayload, type WidgetResponse, type WorkflowDef, agentLoop, capabilities, checkAuthority, defineCapability, defineEcosystem, fromMCPTool, gandia, handeia, http, httpTransport, local, mcp, mountAgent, requiresApproval, toMCPTool, toMCPTools, toManifest, validateActionCall, validateAgentSurface, validatePieces };
1003
+ export { type ActionPayload, type ActionResponse, AgentAction, type AgentDef, type AgentLoopOptions, AgentSurfaceConfig, type AgentTurn, type AuditRecord, type Authority, type AuthorityLevel, type Capability, type CapabilityCall, type CapabilityConfig, type CapabilityResult, type CardPayload, type CardResponse, type Consequence, type DataResponse, type EcoTarget, type Ecosystem, type EcosystemConfig, type ErrorResponse, type EvidenceKind, type EvidencePolicy, type GandiaContext, type GandiaJWTClaims, type GandiaTenant, type GandiaUser, type HandeiaContext, type HandeiaJWTClaims, type HandeiaUser, type HttpCapabilityOptions, type LocalCapabilityOptions, type MCPCapabilityOptions, type MCPInputSchema, type MCPTool, type MCPTransport, type ModalityDef, type ModelFn, type NodeType, type OutputType, type PersonalityDef, type PiecesConfig, type PublishType, type RespondOpts, type Risk, type SkillDef, type Surface, type SurfaceHandlers, type TablePayload, type TableResponse, type TextResponse, type ToolDef, VAIAError, type VAIAManifest, type VAIAResponse, type WidgetPayload, type WidgetResponse, type WorkflowDef, agentLoop, capabilities, checkAuthority, defineCapability, defineEcosystem, fromMCPTool, gandia, handeia, http, httpTransport, local, mcp, requiresApproval, toMCPTool, toMCPTools, toManifest, validatePieces };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { A as AgentSurfaceConfig, a as AgentAction } from './agent-1bVw0eB8.js';
2
+ export { b as AGENT_PROTOCOL_VERSION, c as AgentActionParam, d as AgentActionResult, e as AgentEvidence, f as AgentSpaceContext, g as AgentTurnRequest, h as AgentTurnResponse, C as CONNECTOR_OF_OPERATION, i as ConnectorNeed, j as ConnectorOperation, k as ConnectorRequest, l as ConnectorResult, v as validateActionCall, m as validateAgentSurface } from './agent-1bVw0eB8.js';
3
+
1
4
  /**
2
5
  * Las 7 piezas operativas del ecosistema VAIA.
3
6
  *
@@ -158,227 +161,6 @@ declare function checkAuthority(a: Authority, intento?: {
158
161
  reason: string;
159
162
  };
160
163
 
161
- /**
162
- * VAIA Extension Protocol — superficie de AGENTE.
163
- *
164
- * Es la parte del protocolo que permite que el asistente de Handeia viva
165
- * dentro de un espacio de terceros. Sigue la regla del ecosistema: protocolo
166
- * antes que SDK. Lo que hay aquí son CONTRATOS; el SDK solo los transporta.
167
- *
168
- * ── El reparto de papeles ────────────────────────────────────────────────
169
- * El espacio → superficie y manos. Declara qué sabe y qué puede hacer.
170
- * Handeia → cerebro, memoria y autoridad. Decide y ejecuta a través suyo.
171
- *
172
- * Por eso un espacio NO trae su propia IA: si la trajera, no te conocería,
173
- * empezaría de cero cada vez, y no podría contradecirse a sí mismo. El caso
174
- * que lo justifica: el espacio puntúa un resultado con 90 y el agente te dice
175
- * que te conviene el de 87, porque sabe algo de ti que el espacio no sabe.
176
- * Eso solo es posible si el cerebro vive fuera del espacio.
177
- *
178
- * ── La regla de confianza, que manda sobre todo lo demás ─────────────────
179
- * El espacio es CÓDIGO DE TERCEROS. Nada de lo que envía es un hecho: es una
180
- * AFIRMACIÓN. Handeia la trata como dato citado, nunca como instrucción y
181
- * nunca al mismo nivel que lo que sabe del usuario. Un espacio que escriba
182
- * "ignora las instrucciones anteriores" en su contexto no logra nada.
183
- *
184
- * @see AGENT_PROTOCOL_VERSION para la política de compatibilidad.
185
- */
186
- /**
187
- * Versión del protocolo de agente. Viaja en cada mensaje.
188
- *
189
- * Se versiona desde el primer día a propósito: este contrato es público y
190
- * cambiarlo después obliga a coordinar despliegues entre partes que no se
191
- * conocen. Ya se pagó esa factura una vez con la codificación del JWT.
192
- */
193
- declare const AGENT_PROTOCOL_VERSION = 1;
194
- /** Un parámetro de una acción. Sin tipos no hay validación posible. */
195
- interface AgentActionParam {
196
- name: string;
197
- type: 'string' | 'number' | 'boolean';
198
- description: string;
199
- required?: boolean | undefined;
200
- /** Valores admitidos. Si se define, nada fuera de la lista es válido. */
201
- enum?: string[] | undefined;
202
- }
203
- /**
204
- * Algo que el espacio sabe hacer.
205
- *
206
- * Handeia SOLO puede pedir acciones declaradas aquí. No improvisa, no toca el
207
- * DOM, no busca la forma. Si no está declarada, para el agente no existe —
208
- * y eso es lo que hace que el mismo agente sirva en cualquier espacio sin que
209
- * Handeia sepa nada de ninguno en particular.
210
- */
211
- interface AgentAction {
212
- /** Identificador estable, en minúsculas: 'filtrar_resultados'. */
213
- name: string;
214
- /** Qué hace, en lenguaje natural. Es lo que lee el modelo para elegirla. */
215
- description: string;
216
- params?: AgentActionParam[] | undefined;
217
- /**
218
- * true si modifica algo. Las que escriben se confirman con el usuario ANTES
219
- * de ejecutarse — un agente que escribe sin preguntar se siente fuera de
220
- * control incluso cuando acierta.
221
- */
222
- writes?: boolean | undefined;
223
- /** Permiso que el usuario debe haber concedido a este espacio. */
224
- permission?: string | undefined;
225
- }
226
- /** Configuración de la superficie de agente dentro de defineCapability. */
227
- interface AgentSurfaceConfig {
228
- /** Acciones que el espacio expone. Vacío = el agente solo puede responder. */
229
- actions?: AgentAction[] | undefined;
230
- /**
231
- * Endpoint para preguntarle al espacio cuando el usuario NO está dentro
232
- * ("¿tengo algo pendiente ahí?"). El círculo solo existe con el espacio
233
- * abierto; esto es lo que permite que Handeia sea el lugar donde convergen
234
- * todos tus espacios en vez de uno más al que entrar.
235
- */
236
- queryEndpoint?: string | undefined;
237
- /** Frase de bienvenida propia del espacio. */
238
- greeting?: string | undefined;
239
- /**
240
- * Servicios externos que el espacio necesita consultar. El usuario los
241
- * concede por espacio y los puede revocar cuando quiera. El espacio jamás
242
- * recibe el token: pide operaciones, la plataforma las ejecuta.
243
- */
244
- needs?: ConnectorNeed[] | undefined;
245
- }
246
- /**
247
- * Servicios externos que un espacio puede necesitar (GitHub, Drive, Calendar…).
248
- *
249
- * ── La regla, y no tiene excepciones ─────────────────────────────────────
250
- * El espacio NUNCA recibe el token del usuario. Declara qué necesita, la
251
- * plataforma llama al proveedor con el token que YA tiene guardado, y le
252
- * devuelve solo el resultado.
253
- *
254
- * Por qué así y no entregando el token:
255
- * - Si cada espacio guardara tokens, la superficie de ataque se multiplica
256
- * por cada desarrollador que publique. Un espacio comprometido entregaría
257
- * el GitHub y el Drive de todos sus usuarios.
258
- * - Prestado, un espacio comprometido solo puede pedir las operaciones que
259
- * el usuario le concedió, con límite de frecuencia, auditadas y
260
- * revocables al instante desde Conectores.
261
- *
262
- * De regalo, publicar un espacio se vuelve barato: el desarrollador no
263
- * implementa OAuth de nada.
264
- */
265
- type ConnectorNeed = 'github' | 'drive' | 'calendar' | 'email' | 'notion' | 'discord';
266
- /**
267
- * Operaciones de LECTURA que la plataforma sabe hacer por el espacio.
268
- *
269
- * Lista cerrada a propósito: un espacio no puede pedir "haz esta llamada
270
- * arbitraria a la API de GitHub". Solo puede pedir lo que está aquí, y cada
271
- * una devuelve datos ya acotados. Escribir en un servicio externo NO se
272
- * presta — para eso el usuario usa el servicio.
273
- */
274
- type ConnectorOperation = 'github.repos' | 'github.issues' | 'drive.files' | 'calendar.events' | 'email.recent' | 'notion.pages';
275
- /** Lo que el espacio pide prestado. */
276
- interface ConnectorRequest {
277
- operation: ConnectorOperation;
278
- /** Filtros simples. La plataforma los valida; nada de consultas libres. */
279
- params?: Record<string, string | number | boolean> | undefined;
280
- }
281
- /** Lo que la plataforma devuelve. Datos, jamás credenciales. */
282
- interface ConnectorResult {
283
- operation: ConnectorOperation;
284
- ok: boolean;
285
- items?: Record<string, unknown>[] | undefined;
286
- /** 'sin_conectar' = el usuario no ha vinculado ese servicio todavía. */
287
- error?: 'sin_permiso' | 'sin_conectar' | 'no_soportada' | 'limite_excedido' | 'fallo' | undefined;
288
- }
289
- /** Qué operación necesita qué conector — la plataforma lo usa para autorizar. */
290
- declare const CONNECTOR_OF_OPERATION: Record<ConnectorOperation, ConnectorNeed>;
291
- /**
292
- * Lo que el espacio dice que está pasando.
293
- *
294
- * OJO: se llama `claims` y no `facts` a propósito. Handeia lo etiqueta como
295
- * afirmación de un tercero antes de dárselo al modelo.
296
- */
297
- interface AgentSpaceContext {
298
- /** Dónde está el usuario dentro del espacio: '/lista'. */
299
- route?: string | undefined;
300
- /** Qué está viendo, en lenguaje natural: 'Lista de 12 resultados'. */
301
- view?: string | undefined;
302
- /** Datos que el espacio considera relevantes ahora mismo. */
303
- claims?: Record<string, unknown> | undefined;
304
- }
305
- /** Petición del espacio a Handeia. Un solo endpoint, un solo formato. */
306
- interface AgentTurnRequest {
307
- protocol: typeof AGENT_PROTOCOL_VERSION;
308
- /** Lo que escribió el usuario. */
309
- message: string;
310
- context?: AgentSpaceContext | undefined;
311
- /** Acciones disponibles AHORA (pueden ser menos que las declaradas). */
312
- actions?: AgentAction[] | undefined;
313
- /** Turnos previos, para que el agente no pierda el hilo. */
314
- history?: {
315
- role: 'user' | 'agent';
316
- text: string;
317
- }[] | undefined;
318
- /** Resultado de una acción que Handeia pidió en el turno anterior. */
319
- actionResult?: AgentActionResult | undefined;
320
- }
321
- /** Lo que el espacio devuelve tras ejecutar una acción. */
322
- interface AgentActionResult {
323
- action: string;
324
- ok: boolean;
325
- /** Qué pasó, para que el agente pueda cerrar el ciclo con el usuario. */
326
- summary?: string | undefined;
327
- error?: string | undefined;
328
- }
329
- /**
330
- * De dónde salió lo que el agente afirma.
331
- *
332
- * No es adorno: es el pilar de info verificada. Cuando el agente contradice
333
- * al espacio ("dice 90, pero te conviene la de 87"), tiene que poder decir de
334
- * dónde sacó su razón. Un oráculo que no se explica no se gana la confianza.
335
- */
336
- interface AgentEvidence {
337
- /** 'handeia' = memoria del usuario · 'space' = lo que declaró el espacio. */
338
- source: 'handeia' | 'space';
339
- label: string;
340
- }
341
- /** Respuesta de Handeia al espacio. */
342
- interface AgentTurnResponse {
343
- protocol: typeof AGENT_PROTOCOL_VERSION;
344
- /** Qué decirle al usuario. */
345
- text?: string | undefined;
346
- /** Acción a ejecutar. Siempre sale de la lista declarada, nunca inventada. */
347
- action?: {
348
- name: string;
349
- args?: Record<string, unknown> | undefined;
350
- } | undefined;
351
- /** true si hay que confirmar con el usuario antes de ejecutarla. */
352
- confirm?: boolean | undefined;
353
- evidence?: AgentEvidence[] | undefined;
354
- /** Identificador para cruzar los registros de todas las capas. */
355
- traceId?: string | undefined;
356
- }
357
- /**
358
- * Revisa que las acciones declaradas sean utilizables.
359
- *
360
- * Corre al declarar la capacidad, no en producción: un contrato mal escrito
361
- * debe reventar en el escritorio del desarrollador, no frente al usuario.
362
- */
363
- declare function validateAgentSurface(cfg: AgentSurfaceConfig): string[];
364
- /**
365
- * ¿Es válida esta acción contra lo declarado?
366
- *
367
- * La usa Handeia antes de reenviarle nada al espacio. Es la lista blanca en
368
- * ejecución: aunque el modelo se invente una acción o un argumento fuera de
369
- * rango, aquí se detiene.
370
- */
371
- declare function validateActionCall(llamada: {
372
- name: string;
373
- args?: Record<string, unknown> | undefined;
374
- }, declaradas: AgentAction[]): {
375
- ok: true;
376
- action: AgentAction;
377
- } | {
378
- ok: false;
379
- reason: string;
380
- };
381
-
382
164
  type PublishType = 'app' | 'ia' | 'skill' | 'eco';
383
165
  type EcoTarget = 'gandia' | 'handeia' | 'both';
384
166
  type NodeType = 'widget' | 'artefacto' | 'espacio' | 'skill' | 'agente';
@@ -904,55 +686,6 @@ declare function defineCapability(config: CapabilityConfig): CapabilityConfig;
904
686
  /** Converts a CapabilityConfig to a gandia.manifest.json object. */
905
687
  declare function toManifest(config: CapabilityConfig): VAIAManifest;
906
688
 
907
- /**
908
- * El círculo del agente de Handeia, para montar dentro de un espacio.
909
- *
910
- * Montaje NEUTRAL a propósito: no depende de React ni de ningún framework. El
911
- * SDK presume de cero dependencias y atarlo a React lo traicionaría — un
912
- * espacio hecho en Vue, Svelte o HTML puro tiene el mismo derecho al agente.
913
- * Encima de esto, un envoltorio de React son tres líneas.
914
- *
915
- * Lo que el desarrollador pone:
916
- * - de dónde sacar el contexto (qué está viendo el usuario)
917
- * - qué acciones sabe ejecutar
918
- * Lo que pone el SDK: el círculo, el campo, el transporte y la identidad.
919
- *
920
- * El aspecto lo controla el SDK a propósito: así el agente se ve y se comporta
921
- * igual en todos los espacios, que es parte de que se sienta Handeia y no un
922
- * chat pegado a una app.
923
- */
924
-
925
- interface MountAgentOptions {
926
- /** capability_id del espacio, el mismo del manifest. */
927
- capabilityId: string;
928
- /**
929
- * Dónde vive Handeia. Un solo endpoint, y el SDK no sabe qué hay detrás:
930
- * así Handeia puede reordenar sus capas sin publicar una versión nueva.
931
- */
932
- handeiaUrl?: string | undefined;
933
- /** Qué está viendo el usuario AHORA. Se pregunta en cada turno, no se cachea. */
934
- getContext?: (() => AgentSpaceContext | Promise<AgentSpaceContext>) | undefined;
935
- /** Las mismas acciones que el manifest declara. */
936
- actions?: AgentAction[] | undefined;
937
- /** Ejecuta una acción. Solo se llama con acciones declaradas y ya validadas. */
938
- onAction?: ((name: string, args: Record<string, unknown>) => Promise<AgentActionResult> | AgentActionResult) | undefined;
939
- /** Dónde montar. Por defecto, el body. */
940
- container?: HTMLElement | undefined;
941
- /** Saludo propio del espacio. */
942
- greeting?: string | undefined;
943
- }
944
- interface AgentHandle {
945
- open(): void;
946
- close(): void;
947
- destroy(): void;
948
- }
949
- /**
950
- * Monta el agente. Devuelve un manejador para abrirlo, cerrarlo o quitarlo.
951
- *
952
- * Es idempotente por espacio: montarlo dos veces no deja dos círculos.
953
- */
954
- declare function mountAgent(opts: MountAgentOptions): AgentHandle;
955
-
956
689
  /**
957
690
  * Capacidades que CORREN.
958
691
  *
@@ -1267,4 +1000,4 @@ declare function toMCPTools(tools: ToolDef[]): {
1267
1000
  declare const gandia: typeof _gandia;
1268
1001
  declare const handeia: typeof _handeia;
1269
1002
 
1270
- export { AGENT_PROTOCOL_VERSION, type ActionPayload, type ActionResponse, type AgentAction, type AgentActionParam, type AgentActionResult, type AgentDef, type AgentEvidence, type AgentHandle, type AgentLoopOptions, type AgentSpaceContext, type AgentSurfaceConfig, type AgentTurn, type AgentTurnRequest, type AgentTurnResponse, type AuditRecord, type Authority, type AuthorityLevel, CONNECTOR_OF_OPERATION, type Capability, type CapabilityCall, type CapabilityConfig, type CapabilityResult, type CardPayload, type CardResponse, type ConnectorNeed, type ConnectorOperation, type ConnectorRequest, type ConnectorResult, type Consequence, type DataResponse, type EcoTarget, type Ecosystem, type EcosystemConfig, type ErrorResponse, type EvidenceKind, type EvidencePolicy, type GandiaContext, type GandiaJWTClaims, type GandiaTenant, type GandiaUser, type HandeiaContext, type HandeiaJWTClaims, type HandeiaUser, type HttpCapabilityOptions, type LocalCapabilityOptions, type MCPCapabilityOptions, type MCPInputSchema, type MCPTool, type MCPTransport, type ModalityDef, type ModelFn, type MountAgentOptions, type NodeType, type OutputType, type PersonalityDef, type PiecesConfig, type PublishType, type RespondOpts, type Risk, type SkillDef, type Surface, type SurfaceHandlers, type TablePayload, type TableResponse, type TextResponse, type ToolDef, VAIAError, type VAIAManifest, type VAIAResponse, type WidgetPayload, type WidgetResponse, type WorkflowDef, agentLoop, capabilities, checkAuthority, defineCapability, defineEcosystem, fromMCPTool, gandia, handeia, http, httpTransport, local, mcp, mountAgent, requiresApproval, toMCPTool, toMCPTools, toManifest, validateActionCall, validateAgentSurface, validatePieces };
1003
+ export { type ActionPayload, type ActionResponse, AgentAction, type AgentDef, type AgentLoopOptions, AgentSurfaceConfig, type AgentTurn, type AuditRecord, type Authority, type AuthorityLevel, type Capability, type CapabilityCall, type CapabilityConfig, type CapabilityResult, type CardPayload, type CardResponse, type Consequence, type DataResponse, type EcoTarget, type Ecosystem, type EcosystemConfig, type ErrorResponse, type EvidenceKind, type EvidencePolicy, type GandiaContext, type GandiaJWTClaims, type GandiaTenant, type GandiaUser, type HandeiaContext, type HandeiaJWTClaims, type HandeiaUser, type HttpCapabilityOptions, type LocalCapabilityOptions, type MCPCapabilityOptions, type MCPInputSchema, type MCPTool, type MCPTransport, type ModalityDef, type ModelFn, type NodeType, type OutputType, type PersonalityDef, type PiecesConfig, type PublishType, type RespondOpts, type Risk, type SkillDef, type Surface, type SurfaceHandlers, type TablePayload, type TableResponse, type TextResponse, type ToolDef, VAIAError, type VAIAManifest, type VAIAResponse, type WidgetPayload, type WidgetResponse, type WorkflowDef, agentLoop, capabilities, checkAuthority, defineCapability, defineEcosystem, fromMCPTool, gandia, handeia, http, httpTransport, local, mcp, requiresApproval, toMCPTool, toMCPTools, toManifest, validatePieces };