UNPKG

manifest

Version:

Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard

126 lines 6.02 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 ResolveService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.ResolveService = void 0; const common_1 = require("@nestjs/common"); const tier_service_1 = require("../routing-core/tier.service"); const provider_key_service_1 = require("../routing-core/provider-key.service"); const model_pricing_cache_service_1 = require("../../model-prices/model-pricing-cache.service"); const model_discovery_service_1 = require("../../model-discovery/model-discovery.service"); const scoring_1 = require("../../scoring"); const provider_aliases_1 = require("../../common/utils/provider-aliases"); let ResolveService = ResolveService_1 = class ResolveService { tierService; providerKeyService; pricingCache; discoveryService; logger = new common_1.Logger(ResolveService_1.name); constructor(tierService, providerKeyService, pricingCache, discoveryService) { this.tierService = tierService; this.providerKeyService = providerKeyService; this.pricingCache = pricingCache; this.discoveryService = discoveryService; } async resolve(agentId, messages, tools, toolChoice, maxTokens, recentTiers) { const input = { messages, tools, tool_choice: toolChoice, max_tokens: maxTokens }; const momentum = recentTiers && recentTiers.length > 0 ? { recentTiers } : undefined; const result = (0, scoring_1.scoreRequest)(input, undefined, momentum); const tiers = await this.tierService.getTiers(agentId); const assignment = tiers.find((t) => t.tier === result.tier); if (!assignment) { this.logger.warn(`No tier assignment found for agent=${agentId} tier=${result.tier} ` + `(available tiers: ${tiers.map((t) => t.tier).join(', ') || 'none'})`); return { tier: result.tier, model: null, provider: null, confidence: result.confidence, score: result.score, reason: result.reason, }; } const model = await this.providerKeyService.getEffectiveModel(agentId, assignment); if (!model) { this.logger.warn(`getEffectiveModel returned null for agent=${agentId} tier=${result.tier} ` + `override=${assignment.override_model} auto=${assignment.auto_assigned_model}`); return { tier: result.tier, model: null, provider: null, confidence: result.confidence, score: result.score, reason: result.reason, }; } const provider = await this.resolveProvider(agentId, assignment, model); const authType = provider ? (assignment.override_auth_type ?? (await this.providerKeyService.getAuthType(agentId, provider))) : undefined; return { tier: result.tier, model, provider, confidence: result.confidence, score: result.score, reason: result.reason, auth_type: authType, }; } async resolveForTier(agentId, tier) { const tiers = await this.tierService.getTiers(agentId); const assignment = tiers.find((t) => t.tier === tier); if (!assignment) { return { tier, model: null, provider: null, confidence: 1, score: 0, reason: 'heartbeat' }; } const model = await this.providerKeyService.getEffectiveModel(agentId, assignment); const provider = model ? await this.resolveProvider(agentId, assignment, model) : null; const authType = provider ? (assignment.override_auth_type ?? (await this.providerKeyService.getAuthType(agentId, provider))) : undefined; return { tier, model: model ?? null, provider, confidence: 1, score: 0, reason: 'heartbeat', auth_type: authType, }; } async resolveProvider(agentId, assignment, model) { if (assignment.override_model === model && assignment.override_provider) { return assignment.override_provider; } const prefix = (0, provider_aliases_1.inferProviderFromModelName)(model); if (prefix && (await this.providerKeyService.hasActiveProvider(agentId, prefix))) { return prefix; } const discovered = await this.discoveryService.getModelForAgent(agentId, model); if (discovered) return discovered.provider; const pricing = this.pricingCache.getByModel(model); if (pricing && pricing.provider !== 'OpenRouter') return pricing.provider; return null; } }; exports.ResolveService = ResolveService; exports.ResolveService = ResolveService = ResolveService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [tier_service_1.TierService, provider_key_service_1.ProviderKeyService, model_pricing_cache_service_1.ModelPricingCacheService, model_discovery_service_1.ModelDiscoveryService]) ], ResolveService); //# sourceMappingURL=resolve.service.js.map