97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
/**
|
||
* Agent Engine · 模块入口(更新版)
|
||
* GH-GMP-005 · M3 · Agent搬迁工程
|
||
*
|
||
* 工单调度 · 回执生成 · 半体人格加载
|
||
* 依赖:notion-sync · llm-router
|
||
*/
|
||
|
||
'use strict';
|
||
|
||
const fs = require('fs');
|
||
const path = require('path');
|
||
|
||
const MODULE_NAME = 'agent-engine';
|
||
const MODULE_VERSION = '1.0.0';
|
||
|
||
// TODO M3: 实现以下模块
|
||
// const Dispatcher = require('./dispatcher');
|
||
// const ReceiptGenerator = require('./receipt-gen');
|
||
// const PersonaLoader = require('./persona-loader');
|
||
// const TaskRunner = require('./task-runner');
|
||
|
||
let notionSync = null;
|
||
let llmRouter = null;
|
||
let agentRegistry = null;
|
||
let logger = console;
|
||
|
||
module.exports = {
|
||
name: MODULE_NAME,
|
||
version: MODULE_VERSION,
|
||
type: 'service',
|
||
depends: ['notion-sync', 'llm-router'],
|
||
|
||
async init(context) {
|
||
logger = (context && context.logger) || console;
|
||
logger.info(`[${MODULE_NAME}] 初始化中 v${MODULE_VERSION}...`);
|
||
|
||
// 获取依赖模块引用
|
||
notionSync = context && context.modules && context.modules['notion-sync'];
|
||
llmRouter = context && context.modules && context.modules['llm-router'];
|
||
|
||
// 加载Agent注册表
|
||
try {
|
||
const configPath = path.join(__dirname, '..', 'config', 'agents.json');
|
||
agentRegistry = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
||
const agentCount = Object.keys(agentRegistry.agents || {}).length;
|
||
logger.info(`[${MODULE_NAME}] Agent注册表加载完成 · ${agentCount} 个半体`);
|
||
} catch (err) {
|
||
logger.warn(`[${MODULE_NAME}] Agent注册表加载失败: ${err.message}`);
|
||
agentRegistry = { agents: {} };
|
||
}
|
||
|
||
logger.info(`[${MODULE_NAME}] 初始化完成 v${MODULE_VERSION}`);
|
||
return {
|
||
status: 'ok',
|
||
agentCount: Object.keys(agentRegistry.agents || {}).length,
|
||
hasNotionSync: !!notionSync,
|
||
hasLlmRouter: !!llmRouter,
|
||
};
|
||
},
|
||
|
||
async start(context) {
|
||
logger.info(`[${MODULE_NAME}] 启动Agent引擎...`);
|
||
|
||
// 连接notion-sync的轮询器,注入工单处理回调
|
||
if (notionSync && notionSync.getPoller) {
|
||
// TODO M3: 注入dispatcher回调
|
||
logger.info(`[${MODULE_NAME}] 已连接notion-sync轮询器`);
|
||
} else {
|
||
logger.warn(`[${MODULE_NAME}] notion-sync未就绪,工单处理暂不可用`);
|
||
}
|
||
|
||
return { status: 'running' };
|
||
},
|
||
|
||
async stop() {
|
||
logger.info(`[${MODULE_NAME}] 停止Agent引擎`);
|
||
return { status: 'stopped' };
|
||
},
|
||
|
||
async healthCheck() {
|
||
return {
|
||
status: 'ok',
|
||
module: MODULE_NAME,
|
||
version: MODULE_VERSION,
|
||
agentCount: Object.keys((agentRegistry && agentRegistry.agents) || {}).length,
|
||
dependencies: {
|
||
'notion-sync': !!notionSync,
|
||
'llm-router': !!llmRouter,
|
||
},
|
||
};
|
||
},
|
||
|
||
// ─── 对外接口 ───
|
||
getAgentRegistry: () => agentRegistry,
|
||
};
|