fix: structure hermes empty response failures

This commit is contained in:
Haitao Pan 2026-04-29 19:26:58 +08:00
parent dbce207d83
commit 0915adc565
2 changed files with 26 additions and 8 deletions

View File

@ -447,14 +447,7 @@ func (s *Server) handleHermesACPUpstreamSessionRequest(method string, params map
}
}
if output == "" {
return map[string]any{
"success": false,
"provider": s.providerID,
"mode": "single-agent",
"error": "hermes upstream returned empty response",
"upstreamMethod": "session/prompt",
"upstream": response,
}
return s.emptyUpstreamResponseFailure("session/prompt", response)
}
s.sessionsMu.Lock()
@ -485,6 +478,22 @@ func (s *Server) handleHermesACPUpstreamSessionRequest(method string, params map
return result
}
func (s *Server) emptyUpstreamResponseFailure(upstreamMethod string, upstream map[string]any) map[string]any {
const message = "hermes upstream returned empty response"
return map[string]any{
"success": false,
"status": "failed",
"provider": s.providerID,
"mode": "single-agent",
"error": message,
"message": message,
"unavailableCode": "PROVIDER_EMPTY_RESPONSE",
"unavailableMessage": message,
"upstreamMethod": upstreamMethod,
"upstream": upstream,
}
}
func normalizeHermesUpstreamMethod(method string) string {
normalized := strings.ToLower(strings.TrimSpace(method))
normalized = strings.ReplaceAll(normalized, ".", "/")

View File

@ -186,6 +186,15 @@ func TestHandleRPCSessionStartRejectsEmptyUpstreamResponse(t *testing.T) {
if got := result["error"]; got != "hermes upstream returned empty response" {
t.Fatalf("expected empty-response error, got %#v", result)
}
if got := result["status"]; got != "failed" {
t.Fatalf("expected failed status, got %#v", result)
}
if got := result["unavailableCode"]; got != "PROVIDER_EMPTY_RESPONSE" {
t.Fatalf("expected PROVIDER_EMPTY_RESPONSE, got %#v", result)
}
if got := result["upstreamMethod"]; got != "session/prompt" {
t.Fatalf("expected upstream method, got %#v", result)
}
}
func TestNewServerDefaultsHermesToSessionPrompt(t *testing.T) {