Hosted Connect Session
Hosted Connect は、顧客が自分のWallet source、provider key、Local Connector、許可モデル、上限を選び、アプリに委任するための画面です。アプリは connectUrl へredirectし、戻ってきた execution scope を保存します。
connect sessionを作る
Section titled “connect sessionを作る”import { createVelaClientFromEnvironment } from "@vel4ai/sdk";
declare const process: { env: Record<string, string | undefined> };declare function getCustomerTenantId(req: Request): Promise<string>;
export async function POST(req: Request): Promise<Response> { const client = createVelaClientFromEnvironment({ env: process.env }); const customerTenantId = await getCustomerTenantId(req); const session = await client.createConnectSession({ customerTenantId, returnUrl: "https://your-app.example.com/settings/ai/connected", });
return Response.redirect(session.connectUrl, 303);}アプリ側で保存するもの
Section titled “アプリ側で保存するもの”| 保存する値 | 理由 |
|---|---|
| app workspace / tenant id | アプリ内の所有境界 |
customerTenantId | Vela上の顧客境界 |
delegationId | 実行時に使う委任 |
| 任意の表示名やconnected state | settings UIで説明するため |
Velaにアプリのbusiness identifierを選ばせません。どのworkspaceがどのVela delegationを使うかはアプリが所有します。
Model SlotをConnectにも渡す
Section titled “Model SlotをConnectにも渡す”チャット、要約、分類など用途が複数ある場合は、Hosted Connect時点で必要なModel Slotを渡すと、顧客は何を許可するか判断しやすくなります。
import { createLockedModelSlot } from "@vel4ai/sdk";
declare const client: import("@vel4ai/sdk").VelaClient;declare const customerTenantId: string;
export function createChatConnectSession(returnUrl: string) { return client.createConnectSession({ customerTenantId, returnUrl, modelSlot: createLockedModelSlot("openai/gpt-4o-mini", { slotId: "chat", label: "チャット応答", }), });}