UNPKG

route-claudecode

Version:

Advanced routing and transformation system for Claude Code outputs to multiple AI providers

198 lines 8.81 kB
"use strict"; /** * CodeWhisperer 向后兼容客户端 * 保持现有 API 接口不变,内部使用增强功能 * 确保平滑升级和无缝迁移 * 项目所有者: Jason Zhang */ Object.defineProperty(exports, "__esModule", { value: true }); exports.BackwardCompatibleCodeWhispererClient = void 0; const logger_1 = require("@/utils/logger"); const enhanced_client_1 = require("./enhanced-client"); const config_migration_1 = require("./config-migration"); class BackwardCompatibleCodeWhispererClient { enhancedClient; migrationApplied = false; constructor(legacyConfig) { // 自动迁移配置 const enhancedConfig = legacyConfig ? config_migration_1.CodeWhispererConfigMigrator.migrateFromLegacy(legacyConfig) : config_migration_1.CodeWhispererConfigMigrator.autoMigrateFromEnvironment(); // 验证配置 const validation = config_migration_1.CodeWhispererConfigMigrator.validateConfig(enhancedConfig); if (!validation.isValid) { logger_1.logger.warn('Configuration validation warnings', { errors: validation.errors }); // 使用默认配置作为后备 const defaultConfig = config_migration_1.CodeWhispererConfigMigrator.getDefaultEnhancedConfig(); this.enhancedClient = new enhanced_client_1.EnhancedCodeWhispererClient(defaultConfig); } else { this.enhancedClient = new enhanced_client_1.EnhancedCodeWhispererClient(enhancedConfig); } this.migrationApplied = !!legacyConfig; logger_1.logger.info('Backward compatible CodeWhisperer client initialized', { migrationApplied: this.migrationApplied, clientType: this.enhancedClient.getClientType(), configValidation: validation.isValid }); } /** * 处理流式请求 - 保持原有接口 */ async handleStreamRequest(anthropicReq, writeSSE, onError) { // 直接委托给增强客户端 return this.enhancedClient.handleStreamRequest(anthropicReq, writeSSE, onError); } /** * 处理非流式请求 - 保持原有接口 */ async handleNonStreamRequest(anthropicReq) { // 直接委托给增强客户端 return this.enhancedClient.handleNonStreamRequest(anthropicReq); } /** * 健康检查 - 保持原有接口 */ async healthCheck() { return this.enhancedClient.healthCheck(); } /** * 获取客户端类型 - 保持原有接口 */ getClientType() { return this.enhancedClient.getClientType(); } /** * 更新配置 - 支持传统配置格式 */ updateLegacyConfig(legacyConfig) { const enhancedConfig = config_migration_1.CodeWhispererConfigMigrator.migrateFromLegacy(legacyConfig); // 验证新配置 const validation = config_migration_1.CodeWhispererConfigMigrator.validateConfig(enhancedConfig); if (!validation.isValid) { logger_1.logger.error('Invalid configuration provided', { errors: validation.errors }); throw new Error(`Configuration validation failed: ${validation.errors.join(', ')}`); } this.enhancedClient.updateConfig(enhancedConfig); logger_1.logger.info('Legacy configuration updated successfully', { configSource: 'legacy', validationPassed: true }); } /** * 更新增强配置 - 支持新配置格式 */ updateEnhancedConfig(enhancedConfig) { // 获取当前配置并合并 const currentConfig = this.enhancedClient.getConfig(); const mergedConfig = { credentials: { ...currentConfig.credentials, ...enhancedConfig.credentials }, region: { region: enhancedConfig.region?.region || currentConfig.region?.region || 'us-east-1', refreshUrl: enhancedConfig.region?.refreshUrl || currentConfig.region?.refreshUrl, refreshIDCUrl: enhancedConfig.region?.refreshIDCUrl || currentConfig.region?.refreshIDCUrl, baseUrl: enhancedConfig.region?.baseUrl || currentConfig.region?.baseUrl, amazonQUrl: enhancedConfig.region?.amazonQUrl || currentConfig.region?.amazonQUrl }, retry: { maxRetries: enhancedConfig.retry?.maxRetries || currentConfig.retry?.maxRetries || 3, baseDelay: enhancedConfig.retry?.baseDelay || currentConfig.retry?.baseDelay || 1000, backoffMultiplier: enhancedConfig.retry?.backoffMultiplier || currentConfig.retry?.backoffMultiplier || 2, retryableStatuses: enhancedConfig.retry?.retryableStatuses || currentConfig.retry?.retryableStatuses || [429, 500, 502, 503, 504], timeoutMs: enhancedConfig.retry?.timeoutMs || currentConfig.retry?.timeoutMs || 120000 }, authMethod: enhancedConfig.authMethod || currentConfig.authMethod, userAgent: enhancedConfig.userAgent || currentConfig.userAgent, enableDebugLog: enhancedConfig.enableDebugLog !== undefined ? enhancedConfig.enableDebugLog : currentConfig.enableDebugLog }; // 验证合并后的配置 const validation = config_migration_1.CodeWhispererConfigMigrator.validateConfig(mergedConfig); if (!validation.isValid) { logger_1.logger.error('Invalid enhanced configuration provided', { errors: validation.errors }); throw new Error(`Enhanced configuration validation failed: ${validation.errors.join(', ')}`); } this.enhancedClient.updateConfig(mergedConfig); logger_1.logger.info('Enhanced configuration updated successfully', { configSource: 'enhanced', validationPassed: true }); } /** * 获取当前配置(增强格式) */ getEnhancedConfig() { return this.enhancedClient.getConfig(); } /** * 获取迁移状态 */ getMigrationStatus() { const config = this.enhancedClient.getConfig(); const validation = config_migration_1.CodeWhispererConfigMigrator.validateConfig(config); return { migrationApplied: this.migrationApplied, clientType: this.getClientType(), configValid: validation.isValid }; } /** * 重置为默认配置 */ resetToDefaults() { const defaultConfig = config_migration_1.CodeWhispererConfigMigrator.getDefaultEnhancedConfig(); this.enhancedClient.updateConfig(defaultConfig); this.migrationApplied = false; logger_1.logger.info('Configuration reset to defaults completed'); } /** * 诊断配置问题 */ diagnoseConfiguration() { const config = this.enhancedClient.getConfig(); const validation = config_migration_1.CodeWhispererConfigMigrator.validateConfig(config); const issues = []; const recommendations = []; // 检查配置有效性 if (!validation.isValid) { issues.push(...validation.errors); recommendations.push('Fix configuration validation errors'); } // 检查凭据源配置 if (!config.credentials.priorityOrder || config.credentials.priorityOrder.length === 0) { issues.push('No credential sources configured'); recommendations.push('Configure at least one credential source'); } // 检查重试配置合理性 if (config.retry && config.retry.maxRetries > 10) { issues.push('Max retries set too high'); recommendations.push('Consider reducing max retries to avoid excessive delays'); } // 检查超时配置 if (config.retry && config.retry.timeoutMs < 30000) { issues.push('Timeout may be too short for CodeWhisperer API'); recommendations.push('Consider increasing timeout to at least 30 seconds'); } // 确定状态 let status = 'healthy'; if (issues.length > 0) { status = validation.isValid ? 'warning' : 'error'; } logger_1.logger.info('Configuration diagnosis completed', { status, issueCount: issues.length, recommendationCount: recommendations.length }); return { status, issues, recommendations }; } /** * 获取内部增强客户端(用于高级用例) */ getEnhancedClient() { logger_1.logger.debug('Providing access to enhanced client'); return this.enhancedClient; } } exports.BackwardCompatibleCodeWhispererClient = BackwardCompatibleCodeWhispererClient; //# sourceMappingURL=backward-compatible-client.js.map