From cac73b44103436861f6a689752f361455117e39b Mon Sep 17 00:00:00 2001 From: bellman Date: Fri, 15 May 2026 09:56:49 +0900 Subject: [PATCH] omx(team): auto-checkpoint worker-3 [4] --- rust/crates/rusty-claude-cli/src/main.rs | 12 ++++++++++++ .../rusty-claude-cli/tests/output_format_contract.rs | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/rust/crates/rusty-claude-cli/src/main.rs b/rust/crates/rusty-claude-cli/src/main.rs index e1691aae..df4ca278 100644 --- a/rust/crates/rusty-claude-cli/src/main.rs +++ b/rust/crates/rusty-claude-cli/src/main.rs @@ -1971,6 +1971,17 @@ impl DoctorReport { self.checks.iter().any(|check| check.level.is_failure()) } + fn status(&self) -> &'static str { + let (_, warn_count, fail_count) = self.counts(); + if fail_count > 0 { + "fail" + } else if warn_count > 0 { + "warn" + } else { + "ok" + } + } + fn render(&self) -> String { let (ok_count, warn_count, fail_count) = self.counts(); let mut lines = vec![ @@ -1988,6 +1999,7 @@ impl DoctorReport { let (ok_count, warn_count, fail_count) = self.counts(); json!({ "kind": "doctor", + "status": self.status(), "message": report, "report": report, "has_failures": self.has_failures(), diff --git a/rust/crates/rusty-claude-cli/tests/output_format_contract.rs b/rust/crates/rusty-claude-cli/tests/output_format_contract.rs index 41347f32..a3780f5b 100644 --- a/rust/crates/rusty-claude-cli/tests/output_format_contract.rs +++ b/rust/crates/rusty-claude-cli/tests/output_format_contract.rs @@ -172,6 +172,8 @@ fn inventory_commands_emit_structured_json_when_requested() { let mcp = assert_json_command(&root, &["--output-format", "json", "mcp"]); assert_eq!(mcp["kind"], "mcp"); assert_eq!(mcp["action"], "list"); + assert_eq!(mcp["status"], "ok"); + assert!(mcp["config_load_error"].is_null()); let skills = assert_json_command(&root, &["--output-format", "json", "skills"]); assert_eq!(skills["kind"], "skills"); @@ -180,6 +182,10 @@ fn inventory_commands_emit_structured_json_when_requested() { let plugins = assert_json_command(&root, &["--output-format", "json", "plugins"]); assert_eq!(plugins["kind"], "plugin"); assert_eq!(plugins["action"], "list"); + assert_eq!(plugins["status"], "ok"); + assert!(plugins["config_load_error"].is_null()); + assert_eq!(plugins["status"], "ok"); + assert!(plugins["config_load_error"].is_null()); assert!( plugins["reload_runtime"].is_boolean(), "plugins reload_runtime should be a boolean" @@ -395,6 +401,7 @@ fn doctor_and_resume_status_emit_json_when_requested() { let doctor = assert_json_command(&root, &["--output-format", "json", "doctor"]); assert_eq!(doctor["kind"], "doctor"); + assert_eq!(doctor["status"], "ok"); assert!(doctor["message"].is_string()); let summary = doctor["summary"].as_object().expect("doctor summary"); assert!(summary["ok"].as_u64().is_some());