/** * Drop-in replacement for the Anthropic Node SDK. * Swap your import to get permit-first governance transparently. * * BEFORE: import Anthropic from "@anthropic-ai/sdk"; * AFTER: import { Anthropic } from "keel-sdk/providers/anthropic"; * * The wrapper does NOT depend on the `@anthropic-ai/sdk` npm package. * It talks to Keel's proxy endpoint, which handles the provider call. */ export interface ContentBlockText { type: "text"; text: string; } export interface ContentBlockToolUse { type: "tool_use"; id: string; name: string; input: unknown; } export type ContentBlock = ContentBlockText | ContentBlockToolUse; export interface MessageParam { role: "user" | "assistant"; content: string | ContentBlock[]; } export interface MessageCreateParams { model: string; messages: MessageParam[]; max_tokens: number; system?: string; temperature?: number; top_p?: number; top_k?: number; stop_sequences?: string[]; stream?: boolean; tools?: unknown[]; tool_choice?: unknown; metadata?: { user_id?: string; }; [key: string]: unknown; } export interface MessageUsage { input_tokens: number; output_tokens: number; } export interface Message { id: string; type: "message"; role: "assistant"; content: ContentBlock[]; model: string; stop_reason: string | null; stop_sequence: string | null; usage: MessageUsage; } /** A single event in a streamed message. */ export interface MessageStreamEvent { type: string; index?: number; message?: Message; content_block?: ContentBlock; delta?: { type: string; text?: string; stop_reason?: string; }; usage?: MessageUsage; [key: string]: unknown; } export interface AnthropicConfig { /** Ignored -- Keel manages provider keys. Accepted for API compatibility. */ apiKey?: string; /** 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; } export declare class Anthropic { readonly messages: { create: (params: MessageCreateParams) => Promise>; }; private readonly keel; private readonly projectId; private readonly subject; constructor(config?: AnthropicConfig); private _create; private _createSync; private _createStream; }