import { PipelineResult, Pipeline } from 'open-guardrail-core'; /** * Vercel AI SDK middleware-compatible interface. * Works with `experimental_middleware` in `generateText` / `streamText`. */ interface GuardrailMiddleware { /** * Transform params before sending to the model. * Runs input guards on the last user message. */ transformParams?: (options: { params: LanguageModelParams; }) => Promise; /** * Wrap generate to run output guards on the response. */ wrapGenerate?: (options: { doGenerate: () => Promise; params: LanguageModelParams; }) => Promise; } interface LanguageModelParams { prompt: Array<{ role: string; content: string | Array<{ type: string; text?: string; }>; }>; [key: string]: unknown; } interface GenerateResult { text?: string; [key: string]: unknown; } interface GuardrailMiddlewareOptions { input?: Pipeline; output?: Pipeline; onBlocked?: (result: PipelineResult, stage: 'input' | 'output') => void; } declare class GuardrailBlockedError extends Error { readonly stage: 'input' | 'output'; readonly result: PipelineResult; constructor(stage: 'input' | 'output', result: PipelineResult); } declare function createGuardrailMiddleware(options: GuardrailMiddlewareOptions): GuardrailMiddleware; export { GuardrailBlockedError, type GuardrailMiddleware, type GuardrailMiddlewareOptions, createGuardrailMiddleware };