Vercel AI SDK
In AI SDK routes, @vel4ai/ai-sdk bundles createOpenAI(), model, onFinish, onError, onAbort, and reporter sharing.
Shortest Route
Section titled “Shortest Route”prepareVelaStreamTextWithResponse() returns either a non-allow response or an allowed result with streamTextOptions for AI SDK.
import { prepareVelaStreamTextWithResponse } from "@vel4ai/ai-sdk";import { createVelaIntegrationFromEnvironment } from "@vel4ai/sdk";import { streamText } from "ai";
declare const process: { env: Record<string, string | undefined> };declare const messages: unknown[];
export async function runStream() { const vela = createVelaIntegrationFromEnvironment({ env: process.env }); const prepared = await prepareVelaStreamTextWithResponse( vela, { estimatedCostUsd: 0.05 }, { onReportError(error) { console.error("Vela report failed", error); }, }, );
if (prepared.outcome !== "allow") { return prepared.response; }
return streamText(prepared.createStreamTextInput({ messages }));}Allow-Only Dynamic Import
Section titled “Allow-Only Dynamic Import”In routes that should avoid loading the AI SDK runtime in setup or deny paths, prepare with the core SDK first, then import @vel4ai/ai-sdk and ai only after allow.
import { createVelaIntegrationFromEnvironment } from "@vel4ai/sdk";
declare const process: { env: Record<string, string | undefined> };declare const messages: unknown[];
export async function runAllowOnlyStream() { const vela = createVelaIntegrationFromEnvironment({ env: process.env }); const prepared = await vela.prepareExecutionWithResponse({ estimatedCostUsd: 0.05, });
if (prepared.outcome !== "allow") { return prepared.response; }
const [{ createVelaStreamTextInput }, { streamText }] = await Promise.all([ import("@vel4ai/ai-sdk"), import("ai"), ]); const reporter = prepared.createResultReporter();
return streamText( createVelaStreamTextInput(prepared, { messages }, { reporter }), );}Low-Level Helpers
Section titled “Low-Level Helpers”| Helper | Purpose |
|---|---|
createVelaOpenAI() | Create an AI SDK OpenAI provider/model from a prepared execution |
createVelaStreamCallbacks() | Attach AI SDK callbacks to an existing report target |
createVelaStreamTextCallbacks() | Create callbacks from a prepared execution |
createVelaStreamTextOptions() | Get model and callbacks together |
createVelaStreamTextInput() | Merge app-owned streamText() fields with Vela-controlled options |