// ==================== Anthropic API Types ==================== export interface AnthropicRequest { model: string; messages: AnthropicMessage[]; max_tokens: number; stream?: boolean; system?: string | AnthropicContentBlock[]; tools?: AnthropicTool[]; temperature?: number; top_p?: number; stop_sequences?: string[]; } export interface AnthropicMessage { role: 'user' | 'assistant'; content: string | AnthropicContentBlock[]; } export interface AnthropicContentBlock { type: 'text' | 'tool_use' | 'tool_result' | 'image'; text?: string; // image fields source?: { type: string; media_type?: string; data: string }; // tool_use fields id?: string; name?: string; input?: Record; // tool_result fields tool_use_id?: string; content?: string | AnthropicContentBlock[]; is_error?: boolean; } export interface AnthropicTool { name: string; description?: string; input_schema: Record; } export interface AnthropicResponse { id: string; type: 'message'; role: 'assistant'; content: AnthropicContentBlock[]; model: string; stop_reason: string; stop_sequence: string | null; usage: { input_tokens: number; output_tokens: number }; } // ==================== Cursor API Types ==================== export interface CursorChatRequest { context?: CursorContext[]; model: string; id: string; messages: CursorMessage[]; trigger: string; } export interface CursorContext { type: string; content: string; filePath: string; } export interface CursorMessage { parts: CursorPart[]; id: string; role: string; } export interface CursorPart { type: string; text: string; } export interface CursorSSEEvent { type: string; delta?: string; } // ==================== Internal Types ==================== export interface ParsedToolCall { name: string; arguments: Record; } export interface AppConfig { port: number; timeout: number; proxy?: string; cursorModel: string; vision?: { enabled: boolean; mode: 'ocr' | 'api'; baseUrl: string; apiKey: string; model: string; }; fingerprint: { userAgent: string; }; }