feat(sessions): 添加会话重命名功能和工具调用详情展示

- 实现了后端 API 接口 /api/sessions/:id/rename 用于重命名会话
- 添加了 Hermes CLI renameSession 方法来处理会话重命名逻辑
- 在前端添加了会话右键菜单,支持复制会话ID和重命名操作
- 新增重命名模态框组件供用户输入新标题
- 增强了消息项组件,支持展开查看工具调用的参数和结果详情
- 改进了工具消息的UI展示,包括运行状态指示器和错误标记
- 更新了会话列表显示源标识(如 Telegram、API 等)
- 优化了工具调用数据的映射逻辑,正确关联参数和执行结果
This commit is contained in:
cuiliang
2026-04-12 23:59:18 +08:00
parent 5887462f7d
commit 17a667c947
6 changed files with 349 additions and 26 deletions
+17
View File
@@ -32,3 +32,20 @@ sessionRoutes.delete('/api/sessions/:id', async (ctx) => {
}
ctx.body = { ok: true }
})
// Rename session
sessionRoutes.post('/api/sessions/:id/rename', async (ctx) => {
const { title } = ctx.request.body as { title?: string }
if (!title || typeof title !== 'string') {
ctx.status = 400
ctx.body = { error: 'title is required' }
return
}
const ok = await hermesCli.renameSession(ctx.params.id, title.trim())
if (!ok) {
ctx.status = 500
ctx.body = { error: 'Failed to rename session' }
return
}
ctx.body = { ok: true }
})
+15
View File
@@ -140,6 +140,21 @@ export async function deleteSession(id: string): Promise<boolean> {
}
}
/**
* Rename a session title via Hermes CLI
*/
export async function renameSession(id: string, title: string): Promise<boolean> {
try {
await execFileAsync('hermes', ['sessions', 'rename', id, title], {
timeout: 10000,
})
return true
} catch (err: any) {
console.error('[Hermes CLI] session rename failed:', err.message)
return false
}
}
export interface LogFileInfo {
name: string
size: string