@kdump/code-cli-any-llm
Version:
> A unified gateway for the Gemini, opencode, crush, and Qwen Code AI CLIs
107 lines • 4.82 kB
JavaScript
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
;