Concierge.
エージェント対応ウェブアプリケーションのための安全なアクション層。
型付きかつ同意で制御されるアクションで、AI がウェブアプリを操作できる。ブラウザを乗っ取ることなく。
3つのパッケージ、ひとつのリリースセット
フレームワーク非依存の統合にはコアランタイムを入れ、続けて対応アダプターを追加します。すべてのアダプターが同じ物理コアを解決するよう、まとめてインストールし、まとめてアップグレードしてください。
$ pnpm add @full-self-browsing/concierge zod$ pnpm add @full-self-browsing/concierge@^0.2 \
@full-self-browsing/concierge-react@^0.2 zodバージョン 0.2.1 はランタイム契約 v2 上のサポート対象の公開プレビューです。React と Svelte のパッケージルートはサーバー安全で、ランタイムバインディングは /client と /client.svelte にあります。エッジデプロイは 0.2 のサポート対象外です。
ページ表面ではなく、動詞を公開する
汎用のブラウザ自動化は、ページ構造・セレクター・座標から意図を再構築します。Concierge は協調するアプリケーションが、その瞬間に AI が使ってよい正確な動詞を公開できるようにします。
FSB は協調しないサイトを操作します。Concierge は協調するアプリケーション向けのアクション層です。両プロジェクトはエージェント閲覧スタックの異なる部分を扱います。
宣言から構造化結果へ
アプリケーションは、説明・入力スキーマ・利用可否ルール・効果メタデータ・リダクション方針・ハンドラー付きの名前付きアクションを定義します。
Concierge は、アクティブなステージとその利用可能アクションを、インスタンスローカルなリビジョン付きの不変カタログスナップショットに解決します。
モデルはそのスナップショットが認めたツールだけを受け取ります。
Concierge は実行前に要求された各アクションを再検証し、同意とスケジューリングの規則を適用し、古い呼び出しや衝突する呼び出しを拒否します。
アプリケーションブリッジが承認済みのインターフェース操作を行い、構造化された結果を返します。
アプリケーション
アクション定義、ライブ状態、インターフェース操作、認証、サーバー認可。
Concierge
カタログの入場、検証、同意、スケジューリング、重複排除、ディスパッチ、ワークフロー。
モデル統合
ツール提示、モデル呼び出し、ツール相関、結果の受け渡し。
アクションを宣言し、ひとつのカタログを解決する。
各アクションを名前付き定数として定義し、ステージに結び付け、現在のアプリケーション状態に対して原子的なカタログスナップショットをひとつ解決します。
- ステージ、利用可否、ツール、リビジョンはまとめて解決される
- リテラル値 true だけがアクションを認め、それ以外は閉じて失敗する
- 解決済みカタログは深く凍結され、ランタイムをまたぐ権限にはならない
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コアランタイムとフレームワークバインディング
公開パッケージは固定のリリースセットをなし、ランタイム契約 v2 を共有します。
@full-self-browsing/conciergeカタログ、ディスパッチ、同意、ワークフロー、テレメトリ、輸送のためのフレームワーク非依存ランタイム。
@full-self-browsing/concierge-reactReact コンテキスト、ブリッジのライフサイクル、および ConciergeActivityOverlay を含む任意のアクティビティ表示。
@full-self-browsing/concierge-svelteSvelte コンテキスト、ブリッジのライフサイクル、リアクティブなスナップショット正規化。
ひとつのインスタンス、複数の入り口
同じ Concierge インスタンスとブリッジ登録を、適切なアダプター経由でマウントします。ゲッターベースの状態は、Concierge が検証または同意のためにスナップショットを取るまで生き続けます。
生の onToolCall 値は表示データにすぎません。アプリケーションを動かすことはありません。署名付きブリッジはエンベロープを検証し、再実行キーを消費し、ライブのブラウザカタログと比較したうえで、はじめてコアディスパッチに入ります。
ランタイムが守るもの
Dispatch outcome
completed認証システムではなく、最小権限の境界
セキュリティモデル
Concierge はユーザーを認証せず、クライアントの同意記録はサーバー認可ではありません。保護された効果を行うサーバーは、現在の主体を独自に認証し、現行ポリシーの下で正確なアクションとペイロードを認可し、再実行を拒み、効果を冪等またはトランザクションにする必要があります。
署名付き AI ブリッジは、特定のブラウザバッチを認める短命のサーバー決定を認証します。モデル出力を信頼できるものにはせず、XSS 脆弱性を直さず、クライアント状態をサーバー権限にもしません。
影響の大きい統合を出荷する前に SECURITY.md を読んでください。
テレメトリ
マウントされた React と Svelte ランタイムは、既定で匿名の利用推計を FSB の集計統計パイプラインに送ります。バニラ統合はブラウザ専用の /telemetry 入口でテレメトリを明示的にマウントし、状態とオプトアウトの APIs も提供します。
テレメトリはアクション名、引数、結果、スキーマ、ステージ、ページ URLs、DOM 内容、アプリケーション名、アカウント識別子を送りません。ブラウザストレージが使えない場合、ディスパッチに影響せずテレメトリは停止します。
ペイロード、保持、消去については テレメトリのプライバシー契約を読んでください。