Files
makemd/server/src/core/runtime/DomainRegistry.ts

68 lines
2.3 KiB
TypeScript
Raw Normal View History

import { logger } from '../../utils/logger';
import { FeatureGovernanceService } from '../governance/FeatureGovernanceService';
export interface DomainModule {
name: string;
priority: number;
init: () => Promise<void>;
isAgi?: boolean; // 是否属于重型 AGI 模块
}
/**
* [ARCH_LIGHT_01] (Domain Registry)
* @description index.ts AGI
*/
export class DomainRegistry {
private static modules: DomainModule[] = [];
/**
*
*/
static register(module: DomainModule) {
this.modules.push(module);
}
/**
*
*/
static async bootstrap(tenantId?: string) {
// 1. 按优先级排序 (低值优先)
const sortedModules = [...this.modules].sort((a, b) => a.priority - b.priority);
// 2. 检查 AGI 基础模式开关 (如果开启,则跳过重型 AGI 模块)
const isAgiBaseMode = await FeatureGovernanceService.isEnabled('CORE_AGI_BASE_MODE', tenantId);
logger.info(`[DomainRegistry] Bootstrapping ${sortedModules.length} modules... (AGI Base Mode: ${isAgiBaseMode})`);
for (const module of sortedModules) {
if (module.isAgi && isAgiBaseMode) {
logger.warn(`[DomainRegistry] Skipping Heavy AGI module: ${module.name} (Base Mode Active)`);
continue;
}
try {
await module.init();
logger.info(`[DomainRegistry] Module initialized: ${module.name}`);
} catch (err: any) {
logger.error(`[DomainRegistry] Module ${module.name} failed to initialize: ${err.message}`);
// 核心模块失败应抛出异常,非核心模块可继续
if (module.priority < 10) throw err;
}
}
logger.info('✅ [DomainRegistry] Bootstrap completed successfully.');
}
/**
*
*/
static Priority = {
CORE_INFRA: 0, // 核心基础设施 (DB, Cache, Governance)
SECURITY: 5, // 安全与身份 (Auth, DID, ZKP)
RUNTIME: 10, // 运行时引擎 (AsyncEngine, PluginMgr)
BIZ_DOMAIN: 20, // 业务领域 (Orders, Products, Trade)
AGI_HEAVY: 50, // 重型 AGI (Evolution, RCA, XAI)
SUPPORT: 100 // 辅助支撑 (Logistics, Tax, Sync)
};
}