UNPKG

route-claudecode

Version:

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

95 lines 3.45 kB
"use strict"; /** * Anthropic Provider * Direct integration with Anthropic's official API * Project owner: Jason Zhang */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AnthropicProvider = void 0; const logger_1 = require("../../utils/logger"); const client_1 = require("./client"); class AnthropicProvider { config; name = 'anthropic'; type = 'anthropic'; client; constructor(config) { this.config = config; if (config.type !== 'anthropic') { throw new Error(`Invalid provider type: ${config.type}, expected 'anthropic'`); } this.client = new client_1.AnthropicClient(config); logger_1.logger.info(`Initialized Anthropic provider: ${config.endpoint}`, { provider: this.name, endpoint: config.endpoint }); } async isHealthy() { try { return await this.client.healthCheck(); } catch (error) { logger_1.logger.error('Anthropic provider health check failed', { provider: this.name, error: error instanceof Error ? error.message : String(error) }); return false; } } async sendRequest(request) { try { logger_1.logger.trace(request.metadata?.requestId || 'unknown', 'provider', 'Sending request to Anthropic', { provider: this.name, model: request.model, endpoint: this.config.endpoint }); const response = await this.client.createMessage(request); logger_1.logger.debug('Received response from Anthropic', { provider: this.name, model: response.model, requestId: request.metadata?.requestId, inputTokens: response.usage?.input_tokens, outputTokens: response.usage?.output_tokens }); return response; } catch (error) { logger_1.logger.error('Anthropic API request failed', { provider: this.name, model: request.model, requestId: request.metadata?.requestId, error: error instanceof Error ? error.message : String(error) }); throw error; } } async *sendStreamRequest(request) { try { logger_1.logger.debug('Starting streaming request to Anthropic', { provider: this.name, model: request.model, requestId: request.metadata?.requestId }); const stream = this.client.streamMessage(request); for await (const chunk of stream) { yield chunk; } logger_1.logger.debug('Completed streaming request to Anthropic', { provider: this.name, model: request.model, requestId: request.metadata?.requestId }); } catch (error) { logger_1.logger.error('Anthropic streaming request failed', { provider: this.name, model: request.model, requestId: request.metadata?.requestId, error: error instanceof Error ? error.message : String(error) }); throw error; } } } exports.AnthropicProvider = AnthropicProvider; //# sourceMappingURL=index.js.map