youling-task
Version:
基于POMDP的研发任务分解工具,支持MCP协议
56 lines • 1.78 kB
JavaScript
/**
* 命令行入口点 - 启动YoulingTask MCP服务器
*/
import { startYoulingTaskServer } from './server.js';
import dotenv from 'dotenv';
import logger from './utils/logger.js';
import { isMcpCliMode, sendMcpReadyStatus } from './transport/stdio-helper.js';
// 加载环境变量
dotenv.config();
// 配置
const port = parseInt(process.env.PORT || '3000', 10);
const secretKey = process.env.MCP_SECRET_KEY || 'youling-task-secret';
const PACKAGE_VERSION = '1.0.6'; // 当前包版本
// 检测是否为MCP CLI模式
const isCliMode = isMcpCliMode(process.argv);
// 如果是CLI模式,发送MCP就绪状态消息
if (isCliMode) {
sendMcpReadyStatus({
name: "youling-task",
version: PACKAGE_VERSION
});
logger.info('启动MCP服务器 (stdio模式)', { version: PACKAGE_VERSION });
// stdio模式暂时不支持,直接退出
process.exit(0);
}
else {
// 启动HTTP服务器
logger.info('启动服务器 (HTTP模式)', { port });
}
startYoulingTaskServer({
port,
secretKey,
})
.then(({ server }) => {
// 处理进程退出信号,以便优雅关闭服务器
process.on('SIGTERM', () => {
logger.info('接收到信号', { signal: 'SIGTERM' });
server.close(() => {
logger.info('服务器已关闭');
process.exit(0);
});
});
process.on('SIGINT', () => {
logger.info('接收到信号', { signal: 'SIGINT' });
server.close(() => {
logger.info('服务器已关闭');
process.exit(0);
});
});
})
.catch((error) => {
logger.error('启动服务器失败', { error: error instanceof Error ? error.message : String(error) });
process.exit(1);
});
//# sourceMappingURL=cli.js.map