recoder-shared
Version:
Shared types, utilities, and configurations for Recoder
104 lines • 3.75 kB
TypeScript
/**
* 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