Investigación @full-self-browsing

Concierge.

La capa de acciones segura para aplicaciones web listas para agentes.

Acciones tipadas y condicionadas al consentimiento para que una AI pueda operar tu aplicación web; sin tomar el control del navegador.

▽0.2.1TypeScript-firstESM only · Node >=22.12MIT
Instalación

Tres paquetes, un mismo conjunto de versiones

Instala el runtime principal para una integración independiente del framework y luego añade el adaptador correspondiente. Instálalos y actualízalos juntos para que cada adaptador resuelva el mismo núcleo físico.

Runtime principal
$ pnpm add @full-self-browsing/concierge zod
Con un adaptador
$ pnpm add @full-self-browsing/concierge@^0.2 \ @full-self-browsing/concierge-react@^0.2 zod

La versión 0.2.1 es una vista previa pública compatible sobre el contrato de runtime v2. Las raíces de los paquetes React y Svelte son seguras en el servidor; sus enlaces de runtime viven en /client y /client.svelte. El despliegue en el edge no forma parte de la matriz de soporte de 0.2.

Por qué Concierge

Publica verbos, no una superficie de página

La automatización genérica del navegador reconstruye la intención a partir de la estructura, los selectores o las coordenadas. Concierge permite que una aplicación cooperante publique los verbos exactos que una AI puede usar en este momento.

Automatización genérica del navegador
Concierge
Hacer clic en selectores o coordenadas
Llamar verbos definidos por la aplicación
Reconstruir la intención desde la interfaz visible
Recibir esquemas tipados y disponibilidad en vivo
Heredar una autoridad amplia sobre la página
Ver solo el catálogo de acciones actual
Tratar la confirmación como un booleano
Vincular el consentimiento a la carga y la instantánea de estado revisadas
Confiar en que una devolución del modelo actúe el navegador
Verificar un lote firmado y protegido contra repetición antes del despacho

FSB opera sitios que no cooperan. Concierge es la capa de acciones para aplicaciones que sí cooperan. Los proyectos cubren partes distintas de la pila de navegación con agentes.

Cómo funciona

De la declaración a un resultado estructurado

01

La aplicación define acciones con nombre, descripciones, esquemas de entrada, reglas de disponibilidad, metadatos de efecto, política de redacción y manejadores.

02

Concierge resuelve la etapa activa y sus acciones disponibles en una instantánea inmutable del catálogo con una revisión local a la instancia.

03

El modelo recibe solo las herramientas admitidas por esa instantánea.

04

Concierge valida de nuevo cada acción solicitada antes de ejecutarla, aplica las reglas de consentimiento y programación, y rechaza llamadas caducadas o en conflicto.

05

El puente de la aplicación realiza la operación de interfaz aprobada y devuelve un resultado estructurado.

Aplicación

Definiciones de acciones, estado en vivo, operaciones de interfaz, autenticación y autorización en el servidor.

Concierge

Admisión del catálogo, validación, consentimiento, programación, desduplicación, despacho y flujos de trabajo.

Integración del modelo

Presentación de herramientas, llamadas al modelo, correlación de herramientas y entrega de resultados.

Inicio rápido

Declara una acción. Resuelve un catálogo.

Define cada acción como una constante con nombre, enlázala a una etapa y resuelve una instantánea atómica del catálogo para el estado actual de la aplicación.

  • La etapa, la disponibilidad, las herramientas y la revisión se resuelven juntas
  • Solo el valor literal true admite una acción; cualquier otra cosa falla en cerrado
  • El catálogo resuelto está congelado en profundidad y nunca es autoridad entre runtimes
actions/open-project.ts
import { createBridge, createConcierge, defineAction, offPageResult } from "@full-self-browsing/concierge";
import { z } from "zod";

const projectBridge = createBridge<{
  actions: { openProject(id: string): void };
  snapshot: { activeProject(): string | null };
}>("project-ui");

const openProject = defineAction({
  name: "openProject",
  description: "Open one project in the application preview.",
  schema: z.object({ projectId: z.string().min(1).max(64) }).strict(),
  jsonSchema: {
    type: "object",
    properties: { projectId: { type: "string", minLength: 1, maxLength: 64 } },
    required: ["projectId"],
    additionalProperties: false,
  },
  redact: ({ projectId }) => ({ projectId }),
  effects: { readOnly: false, destructive: false, idempotent: true },
  handler: ({ args, bridge }) => {
    if (bridge === null) {
      return offPageResult("Project opening", "project interface");
    }
    bridge.actions.openProject(args.projectId);
    return { ok: true, message: `Opened project ${args.projectId}.` };
  },
});

const concierge = createConcierge({
  stages: [
    {
      id: "projects",
      match: (context) => context.pathname === "/projects",
      actions: [openProject],
      bridge: projectBridge,
    },
  ],
});

const catalog = concierge.resolveCatalog({ pathname: "/projects" });

// → catalog.stage · catalog.revision · catalog.tools   one snapshot
Paquetes

Runtime principal más enlaces de framework

Los paquetes públicos forman un conjunto de versiones fijo y comparten el contrato de runtime v2.

Núcleo@full-self-browsing/concierge

Runtime independiente del framework para catálogo, despacho, consentimiento, flujo de trabajo, telemetría y transporte.

React@full-self-browsing/concierge-react

Contexto de React, ciclo de vida del puente y visuales de actividad opcionales, incluido ConciergeActivityOverlay.

Svelte@full-self-browsing/concierge-svelte

Contexto de Svelte, ciclo de vida del puente y normalización reactiva de instantáneas.

Node.js>=22.12.0
Module formatESM only
React · React DOM^18.2.0 || ^19.0.0
Svelte^5.0.0
AI SDK core^6.0.0 || ^7.0.0
Runtime contractv2 throughout 0.2.x
Integraciones

Una instancia, varios puntos de entrada

Monta la misma instancia de Concierge y el registro de puentes a través del adaptador adecuado. El estado basado en getters sigue vivo hasta que Concierge captura una instantánea para validar o consentir.

Integración
Punto de entrada del runtime
Orientación
Independiente del framework
@full-self-browsing/concierge
Usa el runtime principal y registra el puente de la aplicación de forma directa.
React
/concierge-react/client
Proporciona la instancia principal, registra puentes y, si quieres, renderiza la superposición de actividad.
Svelte
/concierge-svelte/client.svelte
Proporciona la instancia principal con el normalizador de instantáneas de Svelte y registra los puentes durante la inicialización.
AI SDK 6 & 7
/concierge/ai-sdk
Convierte un catálogo resuelto en herramientas del modelo y correlaciona las llamadas completadas.
Puente de servidor firmado
/ai-sdk/server · /ai-sdk/browser
Emite, verifica y despacha lotes de navegador de corta duración ligados al resumen del catálogo.

Los valores crudos de onToolCall son solo datos de visualización. Nunca accionan la aplicación. El puente firmado verifica el sobre, consume su clave de repetición, lo compara con el catálogo vivo del navegador y solo entonces entra en el despacho del núcleo.

Garantías del runtime

A qué se atiene el runtime

Dispatch outcome

completed
nameopenProject
callIdcall_7f2c · index 0
catalogRevisionstage projects · fresh
consentbound · consumed once
dedupesession · response · callId
onDispatchredacted lifecycle
Las entradas de las acciones se validan de nuevo justo antes de la ejecución, y las acciones con efectos secundarios pasan por una ventana de confirmación cancelable.
Los reintentos exactos comparten una Promise y no pueden ejecutarse dos veces dentro de la ventana de desduplicación; un cambio de acción, entrada, turno o revisión devuelve identity_conflict.
Los lotes se ejecutan en el orden de outputIndex y devuelven resultados explícitos completados o terminales.
Las acciones compuestas usan despacho hijo, limpieza, retraso y linaje acotado propiedad del núcleo: 16 niveles anidados y 256 pasos por flujo raíz.
Las instalaciones mixtas de 0.1 y 0.2 fallan antes del registro del puente o del despacho.
Seguridad y privacidad

Un límite de mínima autoridad, no un sistema de autenticación

Modelo de seguridad

Concierge no autentica usuarios, y un registro de consentimiento del cliente no es autorización del servidor. Un servidor que realiza un efecto protegido debe autenticar de forma independiente al principal actual, autorizar la acción y la carga exactas bajo la política vigente, rechazar repeticiones y hacer el efecto idempotente o transaccional.

El puente de AI firmado autentica una decisión breve del servidor para admitir un lote concreto del navegador. No hace fiable la salida del modelo, no repara una vulnerabilidad XSS ni convierte el estado del cliente en autoridad del servidor.

Lee SECURITY.md antes de publicar una integración de consecuencia.

Telemetría

Los runtimes montados de React y Svelte envían por defecto estimaciones de uso anónimas a la canalización de estadísticas agregadas de FSB. Las integraciones vanilla montan la telemetría de forma explícita a través de la entrada solo de navegador /telemetry, que también ofrece estado y exclusión de APIs.

La telemetría nunca envía nombres de acción, argumentos, resultados, esquemas, etapas, URLs de página, contenido DOM, nombres de aplicación ni identificadores de cuenta. Si el almacenamiento del navegador no está disponible, la telemetría se detiene sin afectar el despacho.

Lee el contrato de privacidad de la telemetría para carga, retención y borrado.

Deja que una AI actúe sin entregar el navegador

TypeScript-first, solo ESM, con licencia MIT. Publicado bajo el ámbito @full-self-browsing npm.