feat: 添加按通道查询会话功能,优化会话列表处理
This commit is contained in:
parent
054cb718de
commit
0095ace411
@ -49,9 +49,11 @@ async fn handle_list_sessions(
|
|||||||
include_archived: bool,
|
include_archived: bool,
|
||||||
ctx: CommandContext,
|
ctx: CommandContext,
|
||||||
) -> Result<CommandResponse, CommandError> {
|
) -> Result<CommandResponse, CommandError> {
|
||||||
|
// 使用当前通道名称查询会话,而不是硬编码 "cli"
|
||||||
|
let channel_name = &ctx.channel_name;
|
||||||
let records = handler
|
let records = handler
|
||||||
.cli_sessions
|
.cli_sessions
|
||||||
.list(include_archived)
|
.list_by_channel(channel_name, include_archived)
|
||||||
.map_err(|e| CommandError::new("LIST_SESSIONS_ERROR", e.to_string()))?;
|
.map_err(|e| CommandError::new("LIST_SESSIONS_ERROR", e.to_string()))?;
|
||||||
|
|
||||||
let summaries: Vec<SessionSummary> = records
|
let summaries: Vec<SessionSummary> = records
|
||||||
@ -131,7 +133,8 @@ mod tests {
|
|||||||
async fn test_list_sessions_empty() {
|
async fn test_list_sessions_empty() {
|
||||||
let service = create_test_service();
|
let service = create_test_service();
|
||||||
let handler = SessionQueryCommandHandler::new(service);
|
let handler = SessionQueryCommandHandler::new(service);
|
||||||
let ctx = CommandContext::new("test", "test");
|
// 使用 "cli" 通道,与 CliSessionService::create 一致
|
||||||
|
let ctx = CommandContext::new("test", "cli");
|
||||||
let cmd = Command::ListSessions {
|
let cmd = Command::ListSessions {
|
||||||
include_archived: false,
|
include_archived: false,
|
||||||
};
|
};
|
||||||
@ -149,10 +152,11 @@ mod tests {
|
|||||||
let service = create_test_service();
|
let service = create_test_service();
|
||||||
let handler = SessionQueryCommandHandler::new(service.clone());
|
let handler = SessionQueryCommandHandler::new(service.clone());
|
||||||
|
|
||||||
// 创建一些会话
|
// 创建一些会话(使用 cli 通道)
|
||||||
service.create(Some("test session")).unwrap();
|
service.create(Some("test session")).unwrap();
|
||||||
|
|
||||||
let ctx = CommandContext::new("test", "test");
|
// 使用 "cli" 通道查询,与创建会话的通道一致
|
||||||
|
let ctx = CommandContext::new("test", "cli");
|
||||||
let cmd = Command::ListSessions {
|
let cmd = Command::ListSessions {
|
||||||
include_archived: false,
|
include_archived: false,
|
||||||
};
|
};
|
||||||
|
|||||||
@ -42,6 +42,17 @@ impl CliSessionService {
|
|||||||
.map_err(|err| AgentError::Other(format!("list sessions error: {}", err)))
|
.map_err(|err| AgentError::Other(format!("list sessions error: {}", err)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 列出指定通道的会话
|
||||||
|
pub(crate) fn list_by_channel(
|
||||||
|
&self,
|
||||||
|
channel_name: &str,
|
||||||
|
include_archived: bool,
|
||||||
|
) -> Result<Vec<SessionRecord>, AgentError> {
|
||||||
|
self.store
|
||||||
|
.list_sessions(channel_name, include_archived)
|
||||||
|
.map_err(|err| AgentError::Other(format!("list sessions error: {}", err)))
|
||||||
|
}
|
||||||
|
|
||||||
pub(crate) fn rename(&self, session_id: &str, title: &str) -> Result<(), AgentError> {
|
pub(crate) fn rename(&self, session_id: &str, title: &str) -> Result<(), AgentError> {
|
||||||
self.store
|
self.store
|
||||||
.rename_session(session_id, title)
|
.rename_session(session_id, title)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user