mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-11 10:34:50 +08:00
fix(cli): implement /session list in resume mode — ROADMAP #21 partial
/session list previously returned 'unsupported resumed slash command' in
--output-format json --resume mode. It only reads the sessions directory
so does not need a live runtime session.
Adds a Session{action:"list"} arm in run_resume_command() before the
unsupported catchall. Emits:
{kind:session_list, sessions:[...ids], active:<current-session-id>}
159 CLI tests pass.
This commit is contained in:
@@ -2964,6 +2964,25 @@ fn run_resume_command(
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
SlashCommand::Unknown(name) => Err(format_unknown_slash_command(name).into()),
|
SlashCommand::Unknown(name) => Err(format_unknown_slash_command(name).into()),
|
||||||
|
// /session list can be served from the sessions directory without a live session.
|
||||||
|
SlashCommand::Session {
|
||||||
|
action: Some(ref act),
|
||||||
|
..
|
||||||
|
} if act == "list" => {
|
||||||
|
let sessions = list_managed_sessions().unwrap_or_default();
|
||||||
|
let session_ids: Vec<String> = sessions.iter().map(|s| s.id.clone()).collect();
|
||||||
|
let active_id = session.session_id.clone();
|
||||||
|
let text = render_session_list(&active_id).unwrap_or_else(|e| format!("error: {e}"));
|
||||||
|
Ok(ResumeCommandOutcome {
|
||||||
|
session: session.clone(),
|
||||||
|
message: Some(text),
|
||||||
|
json: Some(serde_json::json!({
|
||||||
|
"kind": "session_list",
|
||||||
|
"sessions": session_ids,
|
||||||
|
"active": active_id,
|
||||||
|
})),
|
||||||
|
})
|
||||||
|
}
|
||||||
SlashCommand::Bughunter { .. }
|
SlashCommand::Bughunter { .. }
|
||||||
| SlashCommand::Commit { .. }
|
| SlashCommand::Commit { .. }
|
||||||
| SlashCommand::Pr { .. }
|
| SlashCommand::Pr { .. }
|
||||||
|
|||||||
Reference in New Issue
Block a user