use crate::api::schema::{ Method, PaneListParams, PaneReadParams, PaneRenameParams, PaneReportAgentParams, PaneReportMetadataParams, PaneSendInputParams, PaneSendKeysParams, PaneSendTextParams, PaneSplitParams, PaneTarget, ReadFormat, ReadSource, Request, }; pub(super) fn run_pane_command(args: &[String]) -> std::io::Result { let Some(subcommand) = args.first().map(|arg| arg.as_str()) else { print_pane_help(); return Ok(2); }; match subcommand { "list" => pane_list(&args[1..]), "get" => pane_get(&args[1..]), "read" => pane_read(&args[1..]), "rename" => pane_rename(&args[1..]), "split" => pane_split(&args[1..]), "close" => pane_close(&args[1..]), "send-text" => pane_send_text(&args[1..]), "send-keys" => pane_send_keys(&args[1..]), "report-agent" => pane_report_agent(&args[1..]), "report-metadata" => pane_report_metadata(&args[1..]), "run" => pane_run(&args[1..]), "help" | "--help" | "-h" => { print_pane_help(); Ok(0) } _ => { print_pane_help(); Ok(2) } } } fn pane_list(args: &[String]) -> std::io::Result { let mut workspace_id = None; let mut index = 0; while index < args.len() { match args[index].as_str() { "--workspace" => { let Some(value) = args.get(index + 1) else { eprintln!("missing value for --workspace"); return Ok(2); }; workspace_id = Some(super::normalize_workspace_id(value)); index += 2; } other => { eprintln!("unknown option: {other}"); return Ok(2); } } } super::print_response(&super::send_request(&Request { id: "cli:pane:list".into(), method: Method::PaneList(PaneListParams { workspace_id }), })?) } fn pane_get(args: &[String]) -> std::io::Result { let Some(raw_pane_id) = args.first() else { eprintln!("usage: herdr pane get "); return Ok(2); }; if args.len() != 1 { eprintln!("usage: herdr pane get "); return Ok(2); } super::print_response(&super::send_request(&Request { id: "cli:pane:get".into(), method: Method::PaneGet(PaneTarget { pane_id: super::normalize_pane_id(raw_pane_id), }), })?) } fn pane_rename(args: &[String]) -> std::io::Result { let Some(raw_pane_id) = args.first() else { eprintln!("usage: herdr pane rename