1
0
forked from wrenn/wrenn

fix: improve error feedback for terminal disconnects and host unavailability

Show "[session disconnected]" in terminal when PTY websocket closes cleanly.
Map scheduler and agent unavailability errors to 503 with user-friendly
message instead of leaking internal details.
This commit is contained in:
2026-05-03 04:47:10 +06:00
parent 31456fd169
commit ef5f223863
2 changed files with 6 additions and 0 deletions

View File

@ -332,6 +332,7 @@
if (s.state === 'connected') {
updateSession(id, { state: 'disconnected' });
int.term.write('\r\n\x1b[38;2;107;104;98m[session disconnected]\x1b[0m\r\n');
}
};

View File

@ -54,6 +54,8 @@ func agentErrToHTTP(err error) (int, string, string) {
return http.StatusConflict, "conflict", err.Error()
case connect.CodePermissionDenied:
return http.StatusForbidden, "forbidden", err.Error()
case connect.CodeUnavailable:
return http.StatusServiceUnavailable, "no_hosts_available", "no servers available — try again later"
case connect.CodeUnimplemented:
return http.StatusNotImplemented, "agent_error", err.Error()
default:
@ -108,6 +110,9 @@ func serviceErrToHTTP(err error) (int, string, string) {
return http.StatusForbidden, "forbidden", "forbidden"
case strings.Contains(msg, "invalid or expired"):
return http.StatusUnauthorized, "unauthorized", "invalid or expired credentials"
case strings.Contains(msg, "no online") && strings.Contains(msg, "hosts available"),
strings.Contains(msg, "no host has sufficient resources"):
return http.StatusServiceUnavailable, "no_hosts_available", "no servers available — try again later"
case strings.Contains(msg, "invalid"):
return http.StatusBadRequest, "invalid_request", "invalid request"
default: