/** * Vercel AI SDK middleware for Keel governance. * * Usage: * import { wrapLanguageModel } from "ai"; * import { keel, getCurrentKeelPermitId } from "keel-sdk/integrations/vercel-ai"; * * const model = wrapLanguageModel({ * model: yourModel, * middleware: keel({ keelBaseUrl: "...", keelApiKey: "...", keelProjectId: "..." }), * }); * * Pass parent permit ID for agent-loop lineage via providerOptions: * generateText({ * model, * messages: [...], * providerOptions: { keel: { parentPermitId: "permit_xxx" } }, * }); * * Or read the LAST issued permit from within a tool handler: * const parentId = getCurrentKeelPermitId(); */ import type { LanguageModelMiddleware } from "ai"; import { getCurrentKeelPermitId } from "./_context"; export { getCurrentKeelPermitId }; type LanguageModelV2Middleware = LanguageModelMiddleware; export interface KeelMiddlewareConfig { /** Keel API base URL. Defaults to KEEL_BASE_URL env var. */ keelBaseUrl?: string; /** Keel API key. Defaults to KEEL_API_KEY env var. */ keelApiKey?: string; /** Keel project ID. Defaults to KEEL_PROJECT_ID env var. */ keelProjectId?: string; /** Subject for permit requests. */ keelSubject?: { type: string; id: string; }; /** Request timeout in milliseconds. */ timeout?: number; /** Maximum retries on transient errors. */ maxRetries?: number; } /** * Returns a LanguageModelV2Middleware that wraps every generate and stream * call with Keel permit acquisition, budget enforcement, and usage reporting. * * Alias: `keel()` is the short form; `createKeelMiddleware()` is the long form. */ export declare function createKeelMiddleware(config?: KeelMiddlewareConfig): LanguageModelV2Middleware; /** Short-form alias for createKeelMiddleware(). */ export declare const keel: typeof createKeelMiddleware;