UNPKG

manifest

Version:

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

104 lines 5.38 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.OverviewController = void 0; const common_1 = require("@nestjs/common"); const cache_manager_1 = require("@nestjs/cache-manager"); const range_query_dto_1 = require("../../common/dto/range-query.dto"); const range_util_1 = require("../../common/utils/range.util"); const aggregation_service_1 = require("../services/aggregation.service"); const timeseries_queries_service_1 = require("../services/timeseries-queries.service"); const current_user_decorator_1 = require("../../auth/current-user.decorator"); const user_cache_interceptor_1 = require("../../common/interceptors/user-cache.interceptor"); const cache_constants_1 = require("../../common/constants/cache.constants"); const tenant_cache_service_1 = require("../../common/services/tenant-cache.service"); const provider_service_1 = require("../../routing/routing-core/provider.service"); const resolve_agent_service_1 = require("../../routing/routing-core/resolve-agent.service"); let OverviewController = class OverviewController { aggregation; timeseries; tenantCache; providerService; resolveAgent; constructor(aggregation, timeseries, tenantCache, providerService, resolveAgent) { this.aggregation = aggregation; this.timeseries = timeseries; this.tenantCache = tenantCache; this.providerService = providerService; this.resolveAgent = resolveAgent; } async getOverview(query, user) { const range = query.range ?? '24h'; const agentName = query.agent_name; const hourly = (0, range_util_1.isHourlyRange)(range); const tenantId = (await this.tenantCache.resolve(user.id)) ?? undefined; const [summary, tsData, costByModel, recentActivity, activeSkills, hasData, hasProviders] = await Promise.all([ this.aggregation.getSummaryMetrics(range, user.id, tenantId, agentName), this.timeseries.getTimeseries(range, user.id, hourly, tenantId, agentName), this.timeseries.getCostByModel(range, user.id, agentName, tenantId), this.timeseries.getRecentActivity(range, user.id, 5, agentName, tenantId), this.timeseries.getActiveSkills(range, user.id, agentName, tenantId), this.aggregation.hasAnyData(user.id, agentName, tenantId), this.hasActiveProviders(user.id, agentName), ]); return { summary: { tokens_today: summary.tokens.tokens_today, cost_today: summary.cost, messages: summary.messages, services_hit: { total: 0, healthy: 0, issues: 0 }, }, token_usage: tsData.tokenUsage, cost_usage: tsData.costUsage, message_usage: tsData.messageUsage, cost_by_model: costByModel, recent_activity: recentActivity, active_skills: activeSkills, has_data: hasData, has_providers: hasProviders, }; } async hasActiveProviders(userId, agentName) { if (!agentName) return false; try { const agent = await this.resolveAgent.resolve(userId, agentName); const providers = await this.providerService.getProviders(agent.id); return providers.some((p) => p.is_active); } catch { return false; } } }; exports.OverviewController = OverviewController; __decorate([ (0, common_1.Get)('overview'), __param(0, (0, common_1.Query)()), __param(1, (0, current_user_decorator_1.CurrentUser)()), __metadata("design:type", Function), __metadata("design:paramtypes", [range_query_dto_1.RangeQueryDto, Object]), __metadata("design:returntype", Promise) ], OverviewController.prototype, "getOverview", null); exports.OverviewController = OverviewController = __decorate([ (0, common_1.Controller)('api/v1'), (0, common_1.UseInterceptors)(user_cache_interceptor_1.UserCacheInterceptor), (0, cache_manager_1.CacheTTL)(cache_constants_1.DASHBOARD_CACHE_TTL_MS), __metadata("design:paramtypes", [aggregation_service_1.AggregationService, timeseries_queries_service_1.TimeseriesQueriesService, tenant_cache_service_1.TenantCacheService, provider_service_1.ProviderService, resolve_agent_service_1.ResolveAgentService]) ], OverviewController); //# sourceMappingURL=overview.controller.js.map