summaryrefslogtreecommitdiff
path: root/src/cli/agent.rs
diff options
context:
space:
mode:
authorSeason Saw <season.saw@gmail.com>2026-08-01 21:17:23 +0800
committerGitHub <noreply@github.com>2026-08-01 16:17:23 +0300
commitf99647b2c2d7fbfd11269330a25ea4f9be59bafa (patch)
tree1d8c9a35a40da30dc7dd0d1e58c1f833076ad002 /src/cli/agent.rs
parent26a7bc860e4af516ef687d90b9f9dd2830f88d2a (diff)
fix: report a clear cli error when no herdr server is running (#1963)
* fix: report a clear cli error when no herdr server is running socket cli commands surfaced a raw io::Error debug string (`Error: Os { code: 2, ... }`) when nothing was listening on the api socket, which read like a bad --cwd path. map dead-socket connect failures to a `server_not_running` json error carrying the resolved socket path, printed once at the edge that surfaces the error; recovering callers (plugin offline registry fallback, agent start polling) recognize the marker and keep their existing behavior. refs #1941 * fix: map dead-socket errors on the unchecked cli request path refs #1941 * fix: make server-not-running guidance session-aware refs #1941
Diffstat (limited to 'src/cli/agent.rs')
-rw-r--r--src/cli/agent.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cli/agent.rs b/src/cli/agent.rs
index e48d6b3b..e1271f48 100644
--- a/src/cli/agent.rs
+++ b/src/cli/agent.rs
@@ -577,6 +577,13 @@ fn print_agent_transport_error(
if super::protocol_mismatch_was_reported(&err) {
return Ok(1);
}
+ // A dead-server marker reaches here from `send_request` in the agent
+ // startup path; surface its deferred response exactly once instead of
+ // printing a second, generic transport-error line.
+ if let Some(response) = super::server_not_running_reported_response(&err) {
+ let value = serde_json::to_value(response).map_err(std::io::Error::other)?;
+ return super::print_response(&value);
+ }
super::print_response(&cli_agent_error(request_id, code, err.to_string()))
}