Concierge.
Die sichere Aktionsschicht für agentenbereite Webanwendungen.
Typisierte, einwilligungsgebundene Aktionen, damit eine AI deine Web-App bedienen kann; ohne den Browser zu übernehmen.
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.
$ pnpm add @full-self-browsing/concierge zod$ pnpm add @full-self-browsing/concierge@^0.2 \
@full-self-browsing/concierge-react@^0.2 zodVersion 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.
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.
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.
Von der Deklaration zum strukturierten Ergebnis
Die Anwendung definiert benannte Aktionen mit Beschreibungen, Eingabeschemas, Verfügbarkeitsregeln, Effektmetadaten, Redaktionsrichtlinie und Handlern.
Concierge löst die aktive Stufe und ihre verfügbaren Aktionen in einen unveränderlichen Katalog-Schnappschuss mit einer instanzlokalen Revision auf.
Das Modell erhält nur die von diesem Schnappschuss zugelassenen Werkzeuge.
Concierge prüft jede angeforderte Aktion vor der Ausführung erneut, wendet Einwilligungs- und Planungsregeln an und lehnt veraltete oder widersprüchliche Aufrufe ab.
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.
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
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 snapshotKernlaufzeit plus Framework-Bindungen
Die öffentlichen Pakete bilden einen festen Release-Satz und teilen Laufzeitvertrag v2.
@full-self-browsing/conciergeFrameworkneutrale Laufzeit für Katalog, Dispatch, Einwilligung, Workflow, Telemetrie und Transport.
@full-self-browsing/concierge-reactReact-Kontext, Brückenlebenszyklus und optionale Aktivitätsvisuals einschließlich ConciergeActivityOverlay.
@full-self-browsing/concierge-svelteSvelte-Kontext, Brückenlebenszyklus und reaktive Schnappschuss-Normalisierung.
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.
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.
Woran die Laufzeit festgehalten wird
Dispatch outcome
completedEine 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.