cancel_loose_end: canonicalize kind in success ack (alias 'q' → 'question')

This commit is contained in:
damocles 2026-05-18 18:49:12 +02:00
parent 59412452af
commit 2b38805c00

View file

@ -206,6 +206,17 @@ fn parse_loose_end_kind(raw: &str) -> Result<hive_sh4re::CancelLooseEndKind, Str
} }
} }
/// Canonical user-facing label for a `CancelLooseEndKind` — used in
/// the success ack so the caller always sees `"question"` /
/// `"reminder"` instead of whatever alias they passed in (`"q"` /
/// `"r"`).
fn loose_end_kind_label(kind: hive_sh4re::CancelLooseEndKind) -> &'static str {
match kind {
hive_sh4re::CancelLooseEndKind::Question => "question",
hive_sh4re::CancelLooseEndKind::Reminder => "reminder",
}
}
/// Format helper for `whoami`: renders the identity block as a short /// Format helper for `whoami`: renders the identity block as a short
/// human-readable string. Skips fields that are `None` so the output /// human-readable string. Skips fields that are `None` so the output
/// doesn't carry dead placeholders. /// doesn't carry dead placeholders.
@ -492,13 +503,13 @@ impl AgentServer {
)] )]
async fn cancel_loose_end(&self, Parameters(args): Parameters<CancelLooseEndArgs>) -> String { async fn cancel_loose_end(&self, Parameters(args): Parameters<CancelLooseEndArgs>) -> String {
let log = format!("{args:?}"); let log = format!("{args:?}");
let kind_label = args.kind.clone();
let id = args.id; let id = args.id;
run_tool_envelope("cancel_loose_end", log, async move { run_tool_envelope("cancel_loose_end", log, async move {
let kind = match parse_loose_end_kind(&args.kind) { let kind = match parse_loose_end_kind(&args.kind) {
Ok(k) => k, Ok(k) => k,
Err(e) => return e, Err(e) => return e,
}; };
let kind_label = loose_end_kind_label(kind);
let (resp, retries) = self let (resp, retries) = self
.dispatch(hive_sh4re::AgentRequest::CancelLooseEnd { kind, id }) .dispatch(hive_sh4re::AgentRequest::CancelLooseEnd { kind, id })
.await; .await;
@ -1032,13 +1043,13 @@ impl ManagerServer {
)] )]
async fn cancel_loose_end(&self, Parameters(args): Parameters<CancelLooseEndArgs>) -> String { async fn cancel_loose_end(&self, Parameters(args): Parameters<CancelLooseEndArgs>) -> String {
let log = format!("{args:?}"); let log = format!("{args:?}");
let kind_label = args.kind.clone();
let id = args.id; let id = args.id;
run_tool_envelope("cancel_loose_end", log, async move { run_tool_envelope("cancel_loose_end", log, async move {
let kind = match parse_loose_end_kind(&args.kind) { let kind = match parse_loose_end_kind(&args.kind) {
Ok(k) => k, Ok(k) => k,
Err(e) => return e, Err(e) => return e,
}; };
let kind_label = loose_end_kind_label(kind);
let (resp, retries) = self let (resp, retries) = self
.dispatch(hive_sh4re::ManagerRequest::CancelLooseEnd { kind, id }) .dispatch(hive_sh4re::ManagerRequest::CancelLooseEnd { kind, id })
.await; .await;