Forschung @full-self-browsing

Concierge.

Die sichere Aktionsschicht für agentenbereite Webanwendungen.

Typisierte, einwilligungsgebundene Aktionen, damit eine AI deine Web-App bedienen kann; ohne den Browser zu übernehmen.

▽0.2.1TypeScript-firstESM only · Node >=22.12MIT
Installation

Drei Pakete, ein gemeinsamer Release-Satz

Installieren Sie die Kernlaufzeit für eine frameworkneutrale Integration und fügen Sie dann den passenden Adapter hinzu. Installieren und aktualisieren Sie sie gemeinsam, damit jeder Adapter denselben physischen Kern auflöst.

Kernlaufzeit
$ pnpm add @full-self-browsing/concierge zod
Mit einem Adapter
$ pnpm add @full-self-browsing/concierge@^0.2 \ @full-self-browsing/concierge-react@^0.2 zod

Version 0.2.1 ist eine unterstützte öffentliche Vorschau auf Laufzeitvertrag v2. Die Paketwurzeln von React und Svelte sind serverseitig sicher; ihre Laufzeitbindungen liegen in /client und /client.svelte. Edge-Bereitstellung gehört nicht zur Unterstützungsmatrix von 0.2.

Warum Concierge

Verben veröffentlichen, keine Seitenoberfläche

Generische Browserautomatisierung rekonstruiert Absicht aus Seitenstruktur, Selektoren oder Koordinaten. Concierge lässt eine kooperierende Anwendung die genauen Verben veröffentlichen, die eine AI im aktuellen Moment nutzen darf.

Generische Browserautomatisierung
Concierge
Selektoren oder Koordinaten anklicken
Anwendungsdefinierte Verben aufrufen
Absicht aus der sichtbaren Oberfläche rekonstruieren
Typisierte Schemas und live Verfügbarkeit erhalten
Breite Seitenautorität erben
Nur den aktuellen Aktionskatalog sehen
Bestätigung als Wahrheitswert behandeln
Einwilligung an die geprüfte Nutzlast und den Zustands-Schnappschuss binden
Einem Modell-Callback die Browsersteuerung überlassen
Einen signierten, replay-geschützten Stapel vor dem Dispatch prüfen

FSB bedient Sites, die nicht kooperieren. Concierge ist die Aktionsschicht für Anwendungen, die kooperieren. Die Projekte decken unterschiedliche Teile des Agent-Browsing-Stapels ab.

So funktioniert es

Von der Deklaration zum strukturierten Ergebnis

01

Die Anwendung definiert benannte Aktionen mit Beschreibungen, Eingabeschemas, Verfügbarkeitsregeln, Effektmetadaten, Redaktionsrichtlinie und Handlern.

02

Concierge löst die aktive Stufe und ihre verfügbaren Aktionen in einen unveränderlichen Katalog-Schnappschuss mit einer instanzlokalen Revision auf.

03

Das Modell erhält nur die von diesem Schnappschuss zugelassenen Werkzeuge.

04

Concierge prüft jede angeforderte Aktion vor der Ausführung erneut, wendet Einwilligungs- und Planungsregeln an und lehnt veraltete oder widersprüchliche Aufrufe ab.

05

Die Anwendungsbrücke führt die genehmigte Oberflächenoperation aus und gibt ein strukturiertes Ergebnis zurück.

Anwendung

Aktionsdefinitionen, Live-Zustand, Oberflächenoperationen, Authentifizierung und Serverautorisierung.

Concierge

Katalogzulassung, Validierung, Einwilligung, Planung, Deduplizierung, Dispatch und Workflows.

Modellintegration

Werkzeugdarstellung, Modellaufrufe, Werkzeugkorrelation und Ergebniszustellung.

Schnellstart

Eine Aktion deklarieren. Einen Katalog auflösen.

Definieren Sie jede Aktion als benannte Konstante, hängen Sie sie an eine Stufe und lösen Sie einen atomaren Katalog-Schnappschuss für den aktuellen Anwendungszustand auf.

  • Stufe, Verfügbarkeit, Werkzeuge und Revision werden gemeinsam aufgelöst
  • Nur der Literalwert true lässt eine Aktion zu; alles andere scheitert geschlossen
  • Der aufgelöste Katalog ist tiefgefroren und niemals runtime-übergreifende Autorität
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
Pakete

Kernlaufzeit plus Framework-Bindungen

Die öffentlichen Pakete bilden einen festen Release-Satz und teilen Laufzeitvertrag v2.

Kern@full-self-browsing/concierge

Frameworkneutrale Laufzeit für Katalog, Dispatch, Einwilligung, Workflow, Telemetrie und Transport.

React@full-self-browsing/concierge-react

React-Kontext, Brückenlebenszyklus und optionale Aktivitätsvisuals einschließlich ConciergeActivityOverlay.

Svelte@full-self-browsing/concierge-svelte

Svelte-Kontext, Brückenlebenszyklus und reaktive Schnappschuss-Normalisierung.

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
Integrationen

Eine Instanz, mehrere Einstiegspunkte

Hängen Sie dieselbe Concierge-Instanz und die Brückenregistrierung über den passenden Adapter ein. Getterbasierter Zustand bleibt lebendig, bis Concierge einen Schnappschuss für Validierung oder Einwilligung erfasst.

Anbindung
Laufzeit-Einstiegspunkt
Leitfaden
Frameworkneutral
@full-self-browsing/concierge
Nutzen Sie die Kernlaufzeit und registrieren Sie die Anwendungsbrücke direkt.
React
/concierge-react/client
Stellen Sie die Kerninstanz bereit, registrieren Sie Brücken und rendern Sie optional die Aktivitätsüberlagerung.
Svelte
/concierge-svelte/client.svelte
Stellen Sie die Kerninstanz mit dem Svelte-Schnappschuss-Normalisierer bereit und registrieren Sie Brücken während der Initialisierung.
AI SDK 6 & 7
/concierge/ai-sdk
Wandeln Sie einen aufgelösten Katalog in Modellwerkzeuge um und korrelieren Sie abgeschlossene Aufrufe.
Signierte Serverbrücke
/ai-sdk/server · /ai-sdk/browser
Stellen Sie kurzlebige Browserstapel aus, prüfen Sie sie und versenden Sie sie, gebunden an den Katalogdigest.

Rohe onToolCall-Werte sind nur Anzeigedaten. Sie betätigen die Anwendung nie. Die signierte Brücke prüft den Umschlag, verbraucht ihren Replay-Schlüssel, vergleicht ihn mit dem lebenden Browserkatalog und tritt erst dann in den Kerndispatch ein.

Laufzeitgarantien

Woran die Laufzeit festgehalten wird

Dispatch outcome

completed
nameopenProject
callIdcall_7f2c · index 0
catalogRevisionstage projects · fresh
consentbound · consumed once
dedupesession · response · callId
onDispatchredacted lifecycle
Aktionseingaben werden unmittelbar vor der Ausführung erneut geprüft, und Aktionen mit Nebenwirkungen durchlaufen ein abbrechbares Commit-Fenster.
Exakte Wiederholungen teilen eine Promise und können innerhalb des Deduplizierungsfensters nicht zweimal laufen; eine geänderte Aktion, Eingabe, Runde oder Revision gibt identity_conflict zurück.
Stapel laufen in outputIndex-Reihenfolge und geben explizit abgeschlossene oder terminale Ergebnisse zurück.
Zusammengesetzte Aktionen nutzen kern-eigenen Kind-Dispatch, Bereinigung, Verzögerung und begrenzte Abstammung — 16 verschachtelte Ebenen und 256 Schritte pro Wurzel-Workflow.
Gemischte 0.1- und 0.2-Installationen scheitern vor der Brückenregistrierung oder dem Dispatch.
Sicherheit und Datenschutz

Eine Grenze geringster Autorität, kein Authentifizierungssystem

Sicherheitsmodell

Concierge authentifiziert keine Benutzer, und ein Client-Einwilligungsdatensatz ist keine Serverautorisierung. Ein Server, der einen geschützten Effekt ausführt, muss den aktuellen Principal unabhängig authentifizieren, die genaue Aktion und Nutzlast unter der geltenden Richtlinie autorisieren, Replay ablehnen und den Effekt idempotent oder transaktional machen.

Die signierte AI-Brücke authentifiziert eine kurzlebige Serverentscheidung, genau einen Browserstapel zuzulassen. Sie macht Modellausgabe nicht vertrauenswürdig, behebt keine XSS-Lücke und macht Clientzustand nicht zur Serverautorität.

Lesen Sie SECURITY.md, bevor Sie eine folgenreiche Integration ausliefern.

Telemetrie

Eingebundene React- und Svelte-Laufzeiten senden standardmäßig anonyme Nutzungsschätzungen an die aggregierte Statistikpipeline von FSB. Vanilla-Integrationen hängen Telemetrie ausdrücklich über den browseronly-Einstieg /telemetry ein, der auch Status- und Opt-out-APIs bereitstellt.

Telemetrie sendet niemals Aktionsnamen, Argumente, Ergebnisse, Schemas, Stufen, Seiten-URLs, DOM-Inhalt, Anwendungsnamen oder Kontobezeichner. Ist der Browserspeicher nicht verfügbar, stoppt die Telemetrie, ohne den Dispatch zu beeinflussen.

Lesen Sie den Telemetrie-Datenschutzvertrag zu Nutzlast, Aufbewahrung und Löschung.

Lassen Sie eine AI handeln, ohne den Browser aus der Hand zu geben

TypeScript-first, nur ESM, MIT-lizenziert. Veröffentlicht unter dem Scope @full-self-browsing auf npm.