Second tool — `doctor` (no input args, returns doctor.v1 JSON via kebab_app::doctor_with_config_path). Mirrors schema tool's manual-dispatch pattern: Tool::new entry in list_tools, match arm in call_tool, per-tool module in tools/doctor.rs. doctor_with_config_path takes Option<&Path> (not &Config), so KebabAppState is extended with config_path: Option<PathBuf>. All existing callers (initialize.rs, tools_call_schema.rs, serve_stdio_async) pass None for now; Plan Task 10 (Cmd::Mcp wiring) will thread the actual --config path through. doctor_with_config falls back to XDG default when config_path is None — same behavior as bare `kebab doctor`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
653 B
653 B