UNPKG

rcc-pipeline

Version:

RCC Pipeline Module - Pipeline system and workflow management based on pipeline-framework

184 lines 4.44 kB
/** * iFlow Provider Implementation (TypeScript) * 使用iflow现有OAuth凭据文件的iFlow Provider - TypeScript版本 */ import BaseProvider from '../framework/BaseProvider'; interface OpenAIChatRequest { model: string; messages: Array<{ role: string; content: string; }>; temperature?: number; top_p?: number; max_tokens?: number; stream?: boolean; tools?: Array<{ type: 'function'; function: { name: string; description: string; parameters: any; }; }>; } interface OpenAIChatResponse { id: string; object: string; created: number; model: string; choices: Array<{ index: number; message: { role: string; content: string; tool_calls?: Array<any>; }; finish_reason: string; }>; usage?: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; } interface IFlowConfig { name?: string; endpoint: string; model: string; supportedModels?: string[]; credentialsPath?: string; authMode?: 'oauth' | 'apikey'; apiKey?: string; } interface DeviceFlowData { deviceCode: string; userCode: string; verificationUri: string; verificationUriComplete: string; expiresIn: number; interval: number; pkceVerifier: string; } interface OAuthTokens { accessToken: string; refreshToken: string; expiresIn: number; tokenType: string; scope: string; } declare class IFlowProvider extends BaseProvider { private credentialsPath; private accessToken; private refreshToken; private tokenExpiry; private authMode; private apiKey; private oauthConfig; constructor(config?: Partial<IFlowConfig>); /** * 重写能力获取方法 */ protected getCapabilities(): { streaming: boolean; tools: boolean; vision: boolean; jsonMode: boolean; }; /** * 检查Token是否有效 */ private isTokenValid; /** * 从iflow凭据文件加载访问令牌 (OAuth模式) */ private loadAccessToken; /** * 从凭据文件加载API密钥 (API Key模式) */ private loadApiKey; /** * 确保有效的认证凭据 */ private ensureValidAuth; /** * 获取认证头 */ private getAuthHeaders; /** * 将OpenAI请求转换为iFlow请求格式 */ private convertToIFlowRequest; /** * 将iFlow响应转换为OpenAI响应格式 */ private convertToOpenAIResponse; /** * 执行聊天请求 */ executeChat(providerRequest: OpenAIChatRequest): Promise<OpenAIChatResponse>; /** * 执行流式聊天请求 */ executeStreamChat(providerRequest: OpenAIChatRequest): AsyncGenerator<any, void, unknown>; /** * 创建流式迭代器 */ private createStreamIterator; /** * 转换流式响应块 */ private convertStreamChunk; /** * OAuth测试工具方法 */ /** * 生成PKCE验证码 */ private generatePKCEVerifier; /** * 生成PKCE挑战码 */ private generatePKCEChallenge; /** * 启动设备OAuth流程 */ initiateDeviceFlow(autoOpen?: boolean): Promise<DeviceFlowData>; /** * 等待设备授权完成 */ waitForDeviceAuthorization(deviceCode: string, pkceVerifier: string, interval?: number, maxAttempts?: number): Promise<OAuthTokens>; /** * 保存OAuth令牌到凭证文件 */ private saveOAuthTokens; /** * 刷新访问令牌 */ private refreshAccessToken; /** * 确保有效令牌(带自动刷新) */ private ensureValidTokenWithRetry; /** * 重建OAuth认证(强制重新认证) */ rebuildOAuthAuthentication(autoOpen?: boolean): Promise<OAuthTokens>; /** * 检查令牌状态 */ getTokenStatus(): Promise<{ authMode: 'oauth' | 'apikey'; hasAccessToken: boolean; hasRefreshToken: boolean; isValid: boolean; timeUntilExpiry: number; credentialsPath: string; }>; /** * 完整的OAuth认证流程 */ completeOAuthFlow(autoOpen?: boolean): Promise<OAuthTokens>; } export default IFlowProvider; //# sourceMappingURL=iflow.d.ts.map