mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-10 10:04:50 +08:00
fix(cli): /status JSON emits null model and correct session_id in resume mode
Two bugs in --output-format json --resume /status:
1. 'model' field emitted 'restored-session' (a run-mode label) instead of
the actual model or null. Fixed: status_json_value now takes Option<&str>
for model; resume path passes None; live REPL path passes Some(model).
2. 'session_id' extracted parent dir name ('sessions') instead of the file
stem. Session files are session-<id>.jsonl directly under .claw/sessions/,
not in a subdirectory. Fixed: extract file_stem() instead of
parent().file_name().
159 CLI tests pass.
This commit is contained in:
@@ -2741,7 +2741,7 @@ fn run_resume_command(
|
|||||||
&context,
|
&context,
|
||||||
)),
|
)),
|
||||||
json: Some(status_json_value(
|
json: Some(status_json_value(
|
||||||
"restored-session",
|
None,
|
||||||
StatusUsage {
|
StatusUsage {
|
||||||
message_count: session.messages.len(),
|
message_count: session.messages.len(),
|
||||||
turns: tracker.turns(),
|
turns: tracker.turns(),
|
||||||
@@ -5006,7 +5006,7 @@ fn print_status_snapshot(
|
|||||||
CliOutputFormat::Json => println!(
|
CliOutputFormat::Json => println!(
|
||||||
"{}",
|
"{}",
|
||||||
serde_json::to_string_pretty(&status_json_value(
|
serde_json::to_string_pretty(&status_json_value(
|
||||||
model,
|
Some(model),
|
||||||
usage,
|
usage,
|
||||||
permission_mode.as_str(),
|
permission_mode.as_str(),
|
||||||
&context,
|
&context,
|
||||||
@@ -5017,7 +5017,7 @@ fn print_status_snapshot(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn status_json_value(
|
fn status_json_value(
|
||||||
model: &str,
|
model: Option<&str>,
|
||||||
usage: StatusUsage,
|
usage: StatusUsage,
|
||||||
permission_mode: &str,
|
permission_mode: &str,
|
||||||
context: &StatusContext,
|
context: &StatusContext,
|
||||||
@@ -5046,9 +5046,9 @@ fn status_json_value(
|
|||||||
"untracked_files": context.git_summary.untracked_files,
|
"untracked_files": context.git_summary.untracked_files,
|
||||||
"session": context.session_path.as_ref().map_or_else(|| "live-repl".to_string(), |path| path.display().to_string()),
|
"session": context.session_path.as_ref().map_or_else(|| "live-repl".to_string(), |path| path.display().to_string()),
|
||||||
"session_id": context.session_path.as_ref().and_then(|path| {
|
"session_id": context.session_path.as_ref().and_then(|path| {
|
||||||
// Session files live under .claw/sessions/<session-id>/<file>.jsonl
|
// Session files are named <session-id>.jsonl directly under
|
||||||
// Extract the session-id directory component.
|
// .claw/sessions/. Extract the stem (drop the .jsonl extension).
|
||||||
path.parent().and_then(|p| p.file_name()).map(|n| n.to_string_lossy().into_owned())
|
path.file_stem().map(|n| n.to_string_lossy().into_owned())
|
||||||
}),
|
}),
|
||||||
"loaded_config_files": context.loaded_config_files,
|
"loaded_config_files": context.loaded_config_files,
|
||||||
"discovered_config_files": context.discovered_config_files,
|
"discovered_config_files": context.discovered_config_files,
|
||||||
|
|||||||
Reference in New Issue
Block a user