UNPKG

recoder-shared

Version:

Shared types, utilities, and configurations for Recoder

104 lines 3.75 kB
/** * Cross-Platform AI Client * Unified AI interface for all Recoder platforms with intelligent routing */ import { EventEmitter } from 'events'; import { AIResponse, AIRequestOptions, AIRequestMetadata } from './ai-provider-router'; import { AuthClient } from './auth-client'; export interface AIClientConfig { platform: 'cli' | 'web' | 'mobile' | 'desktop' | 'extension'; baseURL?: string; enableCaching?: boolean; enableAnalytics?: boolean; fallbackProviders?: string[]; routingStrategy?: 'speed' | 'cost' | 'quality' | 'balanced'; } export interface ChatMessage { role: 'system' | 'user' | 'assistant' | 'function'; content: string; metadata?: { timestamp?: string; platform?: string; context?: any; }; } export interface AIStreamEvent { type: 'start' | 'content' | 'function_call' | 'error' | 'end'; data: any; timestamp: string; } export interface AITaskRequest { type: 'code_generation' | 'code_review' | 'debugging' | 'explanation' | 'chat' | 'analysis'; input: string; context?: { language?: string; framework?: string; files?: { name: string; content: string; }[]; environment?: string; }; options?: AIRequestOptions; } export interface AITaskResponse { type: string; output: string; suggestions?: string[]; metadata: { provider: string; model: string; confidence: number; processingTime: number; tokens: number; cost: number; }; } export declare class AIClient extends EventEmitter { private router; private authClient; private config; private requestCache; private activeStreams; constructor(authClient: AuthClient, config: AIClientConfig); private getRoutingStrategy; private setupProviderIntegrations; private getPlatformSpecificConfigs; private isProviderAvailable; generateCode(prompt: string, language: string, context?: any): Promise<AITaskResponse>; reviewCode(code: string, language: string, focus?: string[]): Promise<AITaskResponse>; debugCode(code: string, error: string, language: string): Promise<AITaskResponse>; explainCode(code: string, language: string, level?: 'beginner' | 'intermediate' | 'advanced'): Promise<AITaskResponse>; chat(messages: ChatMessage[], stream?: boolean): Promise<AITaskResponse | EventEmitter>; sendRequest(messages: ChatMessage[], options?: AIRequestOptions, metadata?: Partial<AIRequestMetadata>): Promise<AIResponse>; sendStreamRequest(messages: ChatMessage[], options?: AIRequestOptions, metadata?: Partial<AIRequestMetadata>): EventEmitter; private processTask; private processTaskStream; private getSystemPrompt; private extractSuggestions; private calculateConfidence; private generateRequestId; private generateCacheKey; getAnalytics(): any; getRecommendation(task: 'coding' | 'chat' | 'analysis' | 'multimodal', priority?: 'speed' | 'cost' | 'quality'): { provider: import("./ai-provider-router").AIProvider; model: import("./ai-provider-router").AIModel; reason: string; } | null; getStatus(): { platform: "cli" | "web" | "mobile" | "desktop" | "extension"; providersAvailable: number; healthyProviders: number; routingMode: string; cacheSize: number; activeStreams: number; isAuthenticated: boolean; }; private setupEventHandlers; private trackUsage; getLocalModels(): Promise<string[]>; testProviderConnection(providerId: string): Promise<boolean>; destroy(): void; } export default AIClient; //# sourceMappingURL=ai-client.d.ts.map