manifest
Version:
Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard
73 lines • 2.91 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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoutingCacheService = void 0;
const common_1 = require("@nestjs/common");
const TTL_MS = 120_000;
const MAX_ENTRIES = 5_000;
function getOrExpire(map, key) {
const cached = map.get(key);
if (!cached)
return undefined;
if (cached.expiresAt > Date.now())
return cached.data;
map.delete(key);
return undefined;
}
function setWithEviction(map, key, data) {
if (map.size >= MAX_ENTRIES && !map.has(key)) {
const firstKey = map.keys().next().value;
if (firstKey !== undefined)
map.delete(firstKey);
}
map.set(key, { data, expiresAt: Date.now() + TTL_MS });
}
let RoutingCacheService = class RoutingCacheService {
tiers = new Map();
providers = new Map();
customProviders = new Map();
apiKeys = new Map();
getTiers(agentId) {
return getOrExpire(this.tiers, agentId) ?? null;
}
setTiers(agentId, data) {
setWithEviction(this.tiers, agentId, data);
}
getProviders(agentId) {
return getOrExpire(this.providers, agentId) ?? null;
}
setProviders(agentId, data) {
setWithEviction(this.providers, agentId, data);
}
getCustomProviders(agentId) {
return getOrExpire(this.customProviders, agentId) ?? null;
}
setCustomProviders(agentId, data) {
setWithEviction(this.customProviders, agentId, data);
}
getApiKey(agentId, provider, authType) {
return getOrExpire(this.apiKeys, `${agentId}:${provider}:${authType ?? 'default'}`);
}
setApiKey(agentId, provider, apiKey, authType) {
setWithEviction(this.apiKeys, `${agentId}:${provider}:${authType ?? 'default'}`, apiKey);
}
invalidateAgent(agentId) {
this.tiers.delete(agentId);
this.providers.delete(agentId);
this.customProviders.delete(agentId);
const prefix = `${agentId}:`;
const toDelete = [...this.apiKeys.keys()].filter((k) => k.startsWith(prefix));
for (const k of toDelete)
this.apiKeys.delete(k);
}
};
exports.RoutingCacheService = RoutingCacheService;
exports.RoutingCacheService = RoutingCacheService = __decorate([
(0, common_1.Injectable)()
], RoutingCacheService);
//# sourceMappingURL=routing-cache.service.js.map