UNPKG

manifest

Version:

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

84 lines 3.87 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); } }; var ProviderModelRegistryService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProviderModelRegistryService = void 0; const common_1 = require("@nestjs/common"); const typeorm_1 = require("@nestjs/typeorm"); const typeorm_2 = require("typeorm"); const user_provider_entity_1 = require("../entities/user-provider.entity"); let ProviderModelRegistryService = ProviderModelRegistryService_1 = class ProviderModelRegistryService { providerRepo; logger = new common_1.Logger(ProviderModelRegistryService_1.name); registry = new Map(); constructor(providerRepo) { this.providerRepo = providerRepo; } async onApplicationBootstrap() { await this.loadFromCache(); } registerModels(providerId, modelIds) { const key = providerId.toLowerCase(); const existing = this.registry.get(key); if (existing) { for (const id of modelIds) existing.add(id.toLowerCase()); } else { this.registry.set(key, new Set(modelIds.map((id) => id.toLowerCase()))); } } getConfirmedModels(providerId) { return this.registry.get(providerId.toLowerCase()) ?? null; } isModelConfirmed(providerId, modelId) { const confirmed = this.registry.get(providerId.toLowerCase()); if (!confirmed) return null; return confirmed.has(modelId.toLowerCase()); } async loadFromCache() { try { const providers = await this.providerRepo .createQueryBuilder('p') .select(['p.provider', 'p.cached_models']) .where('p.cached_models IS NOT NULL') .getMany(); let totalModels = 0; for (const p of providers) { if (!Array.isArray(p.cached_models)) continue; const ids = p.cached_models.map((m) => m.id).filter(Boolean); if (ids.length > 0) { this.registerModels(p.provider, ids); totalModels += ids.length; } } const providerCount = this.registry.size; if (providerCount > 0) { this.logger.log(`Provider model registry loaded: ${providerCount} providers, ${totalModels} model entries`); } } catch (err) { this.logger.warn(`Failed to load provider model registry from cache: ${err}`); } } }; exports.ProviderModelRegistryService = ProviderModelRegistryService; exports.ProviderModelRegistryService = ProviderModelRegistryService = ProviderModelRegistryService_1 = __decorate([ (0, common_1.Injectable)(), __param(0, (0, typeorm_1.InjectRepository)(user_provider_entity_1.UserProvider)), __metadata("design:paramtypes", [typeorm_2.Repository]) ], ProviderModelRegistryService); //# sourceMappingURL=provider-model-registry.service.js.map