From e1ed30a0382affcf0aa4a00450678d7167542587 Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 9 Apr 2026 19:06:36 +0900 Subject: [PATCH] fix(cli): surface session_id in /status JSON output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When running claw --output-format json --resume /status, the JSON output had 'session' (full file path) but no 'session_id' field, making it impossible for scripts to extract the loaded session ID. Now extracts the session-id directory component from the session path (e.g. .claw/sessions//session-xxx.jsonl → session-id) and includes it as 'session_id' in the JSON status envelope. 159 CLI tests pass, fmt clean. --- rust/crates/rusty-claude-cli/src/main.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index 5f04c7b..e6a2ffd 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -4825,6 +4825,11 @@ fn status_json_value( "unstaged_files": context.git_summary.unstaged_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_id": context.session_path.as_ref().and_then(|path| { + // Session files live under .claw/sessions//.jsonl + // Extract the session-id directory component. + path.parent().and_then(|p| p.file_name()).map(|n| n.to_string_lossy().into_owned()) + }), "loaded_config_files": context.loaded_config_files, "discovered_config_files": context.discovered_config_files, "memory_file_count": context.memory_file_count,