/** * Anthropic Messages API compatible types for /v1/messages endpoint * These match the official Anthropic API format to enable drop-in replacement */ export interface AnthropicMessage { role: 'user' | 'assistant'; content: string | AnthropicContentBlock[]; } export type AnthropicContentBlock = AnthropicTextBlock | AnthropicImageBlock | AnthropicToolUseBlock | AnthropicToolResultBlock; export interface AnthropicTextBlock { type: 'text'; text: string; } export interface AnthropicImageBlock { type: 'image'; source: { type: 'base64' | 'url'; media_type?: string; data?: string; url?: string; }; } export interface AnthropicToolUseBlock { type: 'tool_use'; id: string; name: string; input: Record; } export interface AnthropicToolResultBlock { type: 'tool_result'; tool_use_id: string; content: string | AnthropicContentBlock[]; is_error?: boolean; } export interface AnthropicTool { name: string; description?: string; input_schema: { type: 'object'; properties?: Record; required?: string[]; [key: string]: unknown; }; } export type AnthropicToolChoice = { type: 'auto'; } | { type: 'any'; } | { type: 'tool'; name: string; }; export interface AnthropicSystemContentBlock { type: 'text'; text: string; cache_control?: { type: 'ephemeral'; }; } export interface AnthropicMetadata { user_id?: string; } export interface AnthropicMessageCreateParams { model: string; messages: AnthropicMessage[]; max_tokens: number; system?: string | AnthropicSystemContentBlock[]; temperature?: number; top_p?: number; top_k?: number; stream?: boolean; stop_sequences?: string[]; tools?: AnthropicTool[]; tool_choice?: AnthropicToolChoice; metadata?: AnthropicMetadata; gateId?: string; } export interface AnthropicUsage { input_tokens: number; output_tokens: number; } export interface AnthropicMessageResponse { id: string; type: 'message'; role: 'assistant'; content: AnthropicContentBlock[]; model: string; stop_reason: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use' | null; stop_sequence?: string | null; usage: AnthropicUsage; } export type AnthropicMessageStreamEvent = AnthropicMessageStartEvent | AnthropicMessageDeltaEvent | AnthropicMessageStopEvent | AnthropicContentBlockStartEvent | AnthropicContentBlockDeltaEvent | AnthropicContentBlockStopEvent | AnthropicPingEvent | AnthropicErrorEvent; export interface AnthropicMessageStartEvent { type: 'message_start'; message: { id: string; type: 'message'; role: 'assistant'; content: []; model: string; stop_reason: null; stop_sequence: null; usage: { input_tokens: number; output_tokens: number; }; }; } export interface AnthropicMessageDeltaEvent { type: 'message_delta'; delta: { stop_reason?: 'end_turn' | 'max_tokens' | 'stop_sequence' | 'tool_use'; stop_sequence?: string | null; }; usage: { output_tokens: number; /** Cumulative input tokens. Anthropic reports usage totals on * message_delta; providers that only send usage on the trailing * stream chunk (OpenAI) surface their input count here, since * message_start has already been emitted by then. */ input_tokens?: number; }; } export interface AnthropicMessageStopEvent { type: 'message_stop'; } export interface AnthropicContentBlockStartEvent { type: 'content_block_start'; index: number; content_block: AnthropicContentBlock; } export interface AnthropicContentBlockDeltaEvent { type: 'content_block_delta'; index: number; delta: { type: 'text_delta' | 'input_json_delta'; text?: string; partial_json?: string; }; } export interface AnthropicContentBlockStopEvent { type: 'content_block_stop'; index: number; } export interface AnthropicPingEvent { type: 'ping'; } export interface AnthropicErrorEvent { type: 'error'; error: { type: string; message: string; }; } export interface AnthropicError { type: 'error'; error: { type: 'invalid_request_error' | 'authentication_error' | 'permission_error' | 'not_found_error' | 'rate_limit_error' | 'api_error' | 'overloaded_error'; message: string; }; } //# sourceMappingURL=anthropic-format.d.ts.map