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,
|
|||
|
|
};
|