feat: v3.0 — add human_readable operation receipts
This commit is contained in:
parent
da7ac1a195
commit
49cda91740
@ -184,7 +184,7 @@ app.post('/api/exec', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// ========== MCP 终端会话 (v2.0) ==========
|
||||
// ========== MCP 终端会话 (v3.0) ==========
|
||||
|
||||
const terminalSessions = {};
|
||||
|
||||
@ -216,7 +216,9 @@ app.post('/api/terminal/open', (req, res) => {
|
||||
request_id: requestId,
|
||||
status: 'awaiting_auth',
|
||||
temp_key: null,
|
||||
created_at: new Date().toISOString()
|
||||
created_at: new Date().toISOString(),
|
||||
operation_stage: '敲门中',
|
||||
human_readable: '铸渊正在连接 ' + srv.name + ',请求操作权限...'
|
||||
};
|
||||
|
||||
res.json({
|
||||
@ -240,8 +242,12 @@ app.get('/api/terminal/status/:session_id', (req, res) => {
|
||||
if (entry.status === 'approved') {
|
||||
session.status = 'ready';
|
||||
session.temp_key = entry.temp_key;
|
||||
session.operation_stage = '已授权';
|
||||
session.human_readable = '冰朔已确认信任,铸渊获得操作权限,准备执行操作...';
|
||||
} else if (entry.status === 'rejected') {
|
||||
session.status = 'rejected';
|
||||
session.operation_stage = '已拒绝';
|
||||
session.human_readable = '冰朔未确认此操作,铸渊等待新的指令。';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -252,6 +258,8 @@ app.get('/api/terminal/status/:session_id', (req, res) => {
|
||||
status: session.status,
|
||||
server: session.server,
|
||||
server_name: session.server_name,
|
||||
operation_stage: session.operation_stage,
|
||||
human_readable: session.human_readable,
|
||||
created_at: session.created_at
|
||||
});
|
||||
});
|
||||
@ -265,6 +273,9 @@ app.post('/api/terminal/exec', async (req, res) => {
|
||||
if (!session) return res.status(404).json({ error: '会话不存在' });
|
||||
if (session.status !== 'ready') return res.status(400).json({ error: '会话尚未就绪,等待冰朔授权中' });
|
||||
|
||||
session.operation_stage = '执行中';
|
||||
session.human_readable = '铸渊正在 ' + session.server_name + ' 上执行操作...';
|
||||
|
||||
const srv = SERVERS.find(s => s.code === session.server);
|
||||
if (!srv) return res.status(404).json({ error: '未找到服务器' });
|
||||
|
||||
@ -298,6 +309,8 @@ app.post('/api/terminal/exec', async (req, res) => {
|
||||
});
|
||||
|
||||
const elapsed = Date.now() - startTime;
|
||||
session.operation_stage = '完成';
|
||||
session.human_readable = '操作已完成,铸渊已返回结果到对话。耗时 ' + elapsed + 'ms。';
|
||||
res.json({
|
||||
ok: true,
|
||||
cmd: cmd,
|
||||
@ -310,20 +323,32 @@ app.post('/api/terminal/exec', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// 11. 关闭终端会话
|
||||
// 11. 更新终端会话操作状态(铸渊从对话中推送)
|
||||
app.post('/api/terminal/update-status/:session_id', (req, res) => {
|
||||
const session = terminalSessions[req.params.session_id];
|
||||
if (!session) return res.status(404).json({ error: '会话不存在' });
|
||||
const { operation_stage, human_readable } = req.body;
|
||||
if (operation_stage) session.operation_stage = operation_stage;
|
||||
if (human_readable) session.human_readable = human_readable;
|
||||
res.json({ ok: true, operation_stage: session.operation_stage, human_readable: session.human_readable });
|
||||
});
|
||||
|
||||
// 12. 关闭终端会话
|
||||
app.post('/api/terminal/close/:session_id', (req, res) => {
|
||||
const session = terminalSessions[req.params.session_id];
|
||||
if (session) delete terminalSessions[req.params.session_id];
|
||||
res.json({ ok: true });
|
||||
});
|
||||
|
||||
// 12. 获取所有活跃终端会话
|
||||
// 13. 获取所有活跃终端会话
|
||||
app.get('/api/terminal/sessions', (req, res) => {
|
||||
const sessions = Object.entries(terminalSessions).map(([id, s]) => ({
|
||||
session_id: id,
|
||||
server: s.server,
|
||||
server_name: s.server_name,
|
||||
status: s.status,
|
||||
operation_stage: s.operation_stage,
|
||||
human_readable: s.human_readable,
|
||||
created_at: s.created_at,
|
||||
age_seconds: Math.floor((Date.now() - new Date(s.created_at).getTime()) / 1000)
|
||||
}));
|
||||
@ -332,7 +357,7 @@ app.get('/api/terminal/sessions', (req, res) => {
|
||||
|
||||
const PORT = process.env.CONSOLE_PORT || 3920;
|
||||
app.listen(PORT, '127.0.0.1', () => {
|
||||
console.log(`光湖服务器主控台 API v2.0`);
|
||||
console.log(`光湖服务器主控台 API v3.0 — 操作回执系统`);
|
||||
console.log(` 监听: 127.0.0.1:${PORT}`);
|
||||
console.log(` 服务器: ${SERVERS.length} 台`);
|
||||
console.log(` MCP终端: 已启用`);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user