manifest
Version:
Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard
201 lines • 13.2 kB
JavaScript
"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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.DatabaseModule = void 0;
const common_1 = require("@nestjs/common");
const typeorm_1 = require("@nestjs/typeorm");
const schedule_1 = require("@nestjs/schedule");
const config_1 = require("@nestjs/config");
const fs_1 = require("fs");
const path_1 = require("path");
const agent_message_entity_1 = require("../entities/agent-message.entity");
const llm_call_entity_1 = require("../entities/llm-call.entity");
const tool_execution_entity_1 = require("../entities/tool-execution.entity");
const token_usage_snapshot_entity_1 = require("../entities/token-usage-snapshot.entity");
const cost_snapshot_entity_1 = require("../entities/cost-snapshot.entity");
const agent_log_entity_1 = require("../entities/agent-log.entity");
const api_key_entity_1 = require("../entities/api-key.entity");
const tenant_entity_1 = require("../entities/tenant.entity");
const agent_entity_1 = require("../entities/agent.entity");
const agent_api_key_entity_1 = require("../entities/agent-api-key.entity");
const notification_rule_entity_1 = require("../entities/notification-rule.entity");
const notification_log_entity_1 = require("../entities/notification-log.entity");
const email_provider_config_entity_1 = require("../entities/email-provider-config.entity");
const user_provider_entity_1 = require("../entities/user-provider.entity");
const tier_assignment_entity_1 = require("../entities/tier-assignment.entity");
const custom_provider_entity_1 = require("../entities/custom-provider.entity");
const database_seeder_service_1 = require("./database-seeder.service");
const local_bootstrap_service_1 = require("./local-bootstrap.service");
const model_prices_module_1 = require("../model-prices/model-prices.module");
const _1771464895790_InitialSchema_1 = require("./migrations/1771464895790-InitialSchema");
const _1771500000000_HashApiKeys_1 = require("./migrations/1771500000000-HashApiKeys");
const _1771600000000_ModelPricingImprovements_1 = require("./migrations/1771600000000-ModelPricingImprovements");
const _1771700000000_EmailProviderConfigs_1 = require("./migrations/1771700000000-EmailProviderConfigs");
const _1771800000000_AddNotificationEmailAndOptionalDomain_1 = require("./migrations/1771800000000-AddNotificationEmailAndOptionalDomain");
const _1771600000000_AddModelCapabilities_1 = require("./migrations/1771600000000-AddModelCapabilities");
const _1771700000000_AddRoutingTables_1 = require("./migrations/1771700000000-AddRoutingTables");
const _1771800000000_AddQualityScore_1 = require("./migrations/1771800000000-AddQualityScore");
const _1771800100000_SeedQualityScores_1 = require("./migrations/1771800100000-SeedQualityScores");
const _1771900000000_EncryptApiKeys_1 = require("./migrations/1771900000000-EncryptApiKeys");
const _1772000000000_MakeApiKeyNullable_1 = require("./migrations/1772000000000-MakeApiKeyNullable");
const _1772100000000_AddRoutingTier_1 = require("./migrations/1772100000000-AddRoutingTier");
const _1772200000000_AddLimitAction_1 = require("./migrations/1772200000000-AddLimitAction");
const _1772300000000_AddRoutingReason_1 = require("./migrations/1772300000000-AddRoutingReason");
const _1772400000000_AddAgentDisplayName_1 = require("./migrations/1772400000000-AddAgentDisplayName");
const _1772500000000_PerAgentRouting_1 = require("./migrations/1772500000000-PerAgentRouting");
const _1772668898071_AddCustomProviders_1 = require("./migrations/1772668898071-AddCustomProviders");
const _1772682112419_NullablePricing_1 = require("./migrations/1772682112419-NullablePricing");
const _1772843035514_AddPerformanceIndexes_1 = require("./migrations/1772843035514-AddPerformanceIndexes");
const _1772900000000_AddProviderAuthType_1 = require("./migrations/1772900000000-AddProviderAuthType");
const _1772905146384_AddDashboardIndexes_1 = require("./migrations/1772905146384-AddDashboardIndexes");
const _1772905260464_AddFallbacks_1 = require("./migrations/1772905260464-AddFallbacks");
const _1772920000000_AddModelDisplayName_1 = require("./migrations/1772920000000-AddModelDisplayName");
const _1772940000000_DropRedundantIndexes_1 = require("./migrations/1772940000000-DropRedundantIndexes");
const _1772948502780_BackfillTenantId_1 = require("./migrations/1772948502780-BackfillTenantId");
const _1772960000000_DropUnusedIndexes_1 = require("./migrations/1772960000000-DropUnusedIndexes");
const _1772960000000_PurgeNonCuratedModels_1 = require("./migrations/1772960000000-PurgeNonCuratedModels");
const _1773000000000_ExpandProviderUniqueKey_1 = require("./migrations/1773000000000-ExpandProviderUniqueKey");
const _1773100000000_AddOverrideAuthType_1 = require("./migrations/1773100000000-AddOverrideAuthType");
const _1773200000000_AddMessageAuthType_1 = require("./migrations/1773200000000-AddMessageAuthType");
const _1773202787708_AddModelsAgentIndex_1 = require("./migrations/1773202787708-AddModelsAgentIndex");
const _1773300000000_AddEmailProviderKeyPrefix_1 = require("./migrations/1773300000000-AddEmailProviderKeyPrefix");
const _1773400000000_AddProviderModelCache_1 = require("./migrations/1773400000000-AddProviderModelCache");
const _1773500000000_DropModelPricingTables_1 = require("./migrations/1773500000000-DropModelPricingTables");
const _1773600000000_AddOverrideProvider_1 = require("./migrations/1773600000000-AddOverrideProvider");
const _1773650000000_AddProviderRegion_1 = require("./migrations/1773650000000-AddProviderRegion");
const _1773700000000_DropSecurityEventTable_1 = require("./migrations/1773700000000-DropSecurityEventTable");
const _1773800000000_FixNegativeCosts_1 = require("./migrations/1773800000000-FixNegativeCosts");
const _1773900000000_AddKeyPrefixIndex_1 = require("./migrations/1773900000000-AddKeyPrefixIndex");
const _1774000000000_WidenKeyHashColumn_1 = require("./migrations/1774000000000-WidenKeyHashColumn");
const _1774896789000_WidenApiKeyColumn_1 = require("./migrations/1774896789000-WidenApiKeyColumn");
const _1775000000000_AddErrorHttpStatus_1 = require("./migrations/1775000000000-AddErrorHttpStatus");
const entities = [
agent_message_entity_1.AgentMessage,
llm_call_entity_1.LlmCall,
tool_execution_entity_1.ToolExecution,
token_usage_snapshot_entity_1.TokenUsageSnapshot,
cost_snapshot_entity_1.CostSnapshot,
agent_log_entity_1.AgentLog,
api_key_entity_1.ApiKey,
tenant_entity_1.Tenant,
agent_entity_1.Agent,
agent_api_key_entity_1.AgentApiKey,
notification_rule_entity_1.NotificationRule,
notification_log_entity_1.NotificationLog,
email_provider_config_entity_1.EmailProviderConfig,
user_provider_entity_1.UserProvider,
tier_assignment_entity_1.TierAssignment,
custom_provider_entity_1.CustomProvider,
];
const migrations = [
_1771464895790_InitialSchema_1.InitialSchema1771464895790,
_1771500000000_HashApiKeys_1.HashApiKeys1771500000000,
_1771600000000_ModelPricingImprovements_1.ModelPricingImprovements1771600000000,
_1771700000000_EmailProviderConfigs_1.EmailProviderConfigs1771700000000,
_1771800000000_AddNotificationEmailAndOptionalDomain_1.AddNotificationEmailAndOptionalDomain1771800000000,
_1771600000000_AddModelCapabilities_1.AddModelCapabilities1771600000000,
_1771700000000_AddRoutingTables_1.AddRoutingTables1771700000000,
_1771800000000_AddQualityScore_1.AddQualityScore1771800000000,
_1771800100000_SeedQualityScores_1.SeedQualityScores1771800100000,
_1771900000000_EncryptApiKeys_1.EncryptApiKeys1771900000000,
_1772000000000_MakeApiKeyNullable_1.MakeApiKeyNullable1772000000000,
_1772100000000_AddRoutingTier_1.AddRoutingTier1772100000000,
_1772200000000_AddLimitAction_1.AddLimitAction1772200000000,
_1772300000000_AddRoutingReason_1.AddRoutingReason1772300000000,
_1772400000000_AddAgentDisplayName_1.AddAgentDisplayName1772400000000,
_1772500000000_PerAgentRouting_1.PerAgentRouting1772500000000,
_1772668898071_AddCustomProviders_1.AddCustomProviders1772668898071,
_1772682112419_NullablePricing_1.NullablePricing1772682112419,
_1772843035514_AddPerformanceIndexes_1.AddPerformanceIndexes1772843035514,
_1772900000000_AddProviderAuthType_1.AddProviderAuthType1772900000000,
_1772905146384_AddDashboardIndexes_1.AddDashboardIndexes1772905146384,
_1772905260464_AddFallbacks_1.AddFallbacks1772905260464,
_1772920000000_AddModelDisplayName_1.AddModelDisplayName1772920000000,
_1772940000000_DropRedundantIndexes_1.DropRedundantIndexes1772940000000,
_1772948502780_BackfillTenantId_1.BackfillTenantId1772948502780,
_1772960000000_DropUnusedIndexes_1.DropUnusedIndexes1772960000000,
_1772960000000_PurgeNonCuratedModels_1.PurgeNonCuratedModels1772960000000,
_1773000000000_ExpandProviderUniqueKey_1.ExpandProviderUniqueKey1773000000000,
_1773100000000_AddOverrideAuthType_1.AddOverrideAuthType1773100000000,
_1773200000000_AddMessageAuthType_1.AddMessageAuthType1773200000000,
_1773202787708_AddModelsAgentIndex_1.AddModelsAgentIndex1773202787708,
_1773300000000_AddEmailProviderKeyPrefix_1.AddEmailProviderKeyPrefix1773300000000,
_1773400000000_AddProviderModelCache_1.AddProviderModelCache1773400000000,
_1773500000000_DropModelPricingTables_1.DropModelPricingTables1773500000000,
_1773600000000_AddOverrideProvider_1.AddOverrideProvider1773600000000,
_1773650000000_AddProviderRegion_1.AddProviderRegion1773650000000,
_1773700000000_DropSecurityEventTable_1.DropSecurityEventTable1773700000000,
_1773800000000_FixNegativeCosts_1.FixNegativeCosts1773800000000,
_1773900000000_AddKeyPrefixIndex_1.AddKeyPrefixIndex1773900000000,
_1774000000000_WidenKeyHashColumn_1.WidenKeyHashColumn1774000000000,
_1774896789000_WidenApiKeyColumn_1.WidenApiKeyColumn1774896789000,
_1775000000000_AddErrorHttpStatus_1.AddErrorHttpStatus1775000000000,
];
const isLocalMode = process.env['MANIFEST_MODE'] === 'local';
function buildModeServices() {
const seeder = isLocalMode ? local_bootstrap_service_1.LocalBootstrapService : database_seeder_service_1.DatabaseSeederService;
return [seeder];
}
let DatabaseModule = class DatabaseModule {
};
exports.DatabaseModule = DatabaseModule;
exports.DatabaseModule = DatabaseModule = __decorate([
(0, common_1.Module)({
imports: [
schedule_1.ScheduleModule.forRoot(),
typeorm_1.TypeOrmModule.forRootAsync({
inject: [config_1.ConfigService],
useFactory: (config) => {
if (isLocalMode) {
const dbPath = config.get('app.dbPath') || ':memory:';
if (dbPath !== ':memory:') {
(0, fs_1.mkdirSync)((0, path_1.dirname)(dbPath), { recursive: true, mode: 0o700 });
}
return {
type: 'sqljs',
location: dbPath === ':memory:' ? undefined : dbPath,
autoSave: dbPath !== ':memory:',
entities,
synchronize: true,
migrationsRun: false,
logging: false,
};
}
return {
type: 'postgres',
url: config.get('app.databaseUrl'),
entities,
synchronize: false,
migrationsRun: ['development', 'test'].includes(config.get('app.nodeEnv') ?? ''),
migrationsTransactionMode: 'all',
migrations,
logging: false,
extra: {
max: config.get('app.dbPoolMax') ?? 20,
idleTimeoutMillis: 30000,
},
};
},
}),
typeorm_1.TypeOrmModule.forFeature([
tenant_entity_1.Tenant,
agent_entity_1.Agent,
agent_api_key_entity_1.AgentApiKey,
agent_message_entity_1.AgentMessage,
api_key_entity_1.ApiKey,
user_provider_entity_1.UserProvider,
tier_assignment_entity_1.TierAssignment,
custom_provider_entity_1.CustomProvider,
]),
model_prices_module_1.ModelPricesModule,
],
providers: buildModeServices(),
exports: buildModeServices(),
})
], DatabaseModule);
//# sourceMappingURL=database.module.js.map