rcc-pipeline
Version:
RCC Pipeline Module - Pipeline system and workflow management based on pipeline-framework
184 lines • 4.44 kB
TypeScript
/**
* 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