UNPKG

@kdump/code-cli-any-llm

Version:

> A unified gateway for the Gemini, opencode, crush, and Qwen Code AI CLIs

107 lines 4.82 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LlmProviderResolverService = void 0; const common_1 = require("@nestjs/common"); const config_1 = require("@nestjs/config"); const openai_provider_1 = require("../providers/openai/openai.provider"); const codex_provider_1 = require("../providers/codex/codex.provider"); const claude_code_provider_1 = require("../providers/claude-code/claude-code.provider"); let LlmProviderResolverService = class LlmProviderResolverService { configService; openaiProvider; codexProvider; claudeCodeProvider; constructor(configService, openaiProvider, codexProvider, claudeCodeProvider) { this.configService = configService; this.openaiProvider = openaiProvider; this.codexProvider = codexProvider; this.claudeCodeProvider = claudeCodeProvider; } resolve() { const apiModeInput = this.configService.get('gateway.apiMode') || 'gemini'; const gatewayApiMode = apiModeInput.trim().toLowerCase() === 'openai' ? 'openai' : 'gemini'; const providerInput = this.configService.get('aiProvider') || 'openai'; const normalizedProvider = providerInput.trim().toLowerCase(); if (normalizedProvider === 'codex') { const provider = this.codexProvider; if (!provider || !provider.isEnabled()) { throw new Error('Codex provider selected but configuration is missing'); } return { provider, aiProvider: 'codex', useCodexProvider: true, useClaudeCodeProvider: false, gatewayApiMode, providerConfig: this.configService.get('codex'), }; } if (normalizedProvider === 'claudecode' || normalizedProvider === 'claude-code') { const provider = this.claudeCodeProvider; if (!provider || !provider.isEnabled()) { throw new Error('Claude Code provider selected but configuration is missing'); } return { provider, aiProvider: 'claudeCode', useCodexProvider: false, useClaudeCodeProvider: true, gatewayApiMode, providerConfig: this.configService.get('claudeCode'), }; } const provider = this.openaiProvider; if (!provider || !provider.isEnabled()) { throw new Error('OpenAI provider selected but configuration is missing'); } return { provider, aiProvider: 'openai', useCodexProvider: false, useClaudeCodeProvider: false, gatewayApiMode, providerConfig: this.configService.get('openai'), }; } resolveDefaultModel(context) { const configured = context.providerConfig?.model?.trim() || ''; if (configured) { return configured; } if (context.useCodexProvider) { return 'gpt-5-codex'; } if (context.useClaudeCodeProvider) { return 'claude-sonnet-4-5-20250929'; } if (context.gatewayApiMode === 'gemini') { return 'glm-4.5'; } return 'gpt-4o-mini'; } }; exports.LlmProviderResolverService = LlmProviderResolverService; exports.LlmProviderResolverService = LlmProviderResolverService = __decorate([ (0, common_1.Injectable)(), __param(1, (0, common_1.Optional)()), __param(2, (0, common_1.Optional)()), __param(3, (0, common_1.Optional)()), __metadata("design:paramtypes", [config_1.ConfigService, openai_provider_1.OpenAIProvider, codex_provider_1.CodexProvider, claude_code_provider_1.ClaudeCodeProvider]) ], LlmProviderResolverService); //# sourceMappingURL=llm-provider-resolver.service.js.map