plano/crates
Adil Hafeez c90b699c90 fix: surface real upstream error messages from orchestrator HTTP client
`post_and_extract_content` was unconditionally deserializing the upstream
response body as a `ChatCompletionsResponse`, which meant 4xx/5xx error
bodies (OpenAI-style `{"error": {...}}` envelopes) failed with confusing
messages like `missing field 'id' at line 1 column 391`. The real
upstream message (e.g. "This model's maximum context length is 32768
tokens...") only appeared once as a warn log and then got buried in the
generic "Failed to parse JSON response" path.

Now we:
- Check the HTTP status before attempting to parse the success body.
- On non-2xx, extract a human-readable message from the OpenAI-style
  error envelope (or fall back to a UTF-8-safe truncated raw body).
- Return a dedicated `HttpError::Upstream { status, message }` variant
  so callers can log / surface / retry based on the real status code.
- Truncate raw bodies in warn logs to 512 bytes (UTF-8-safe) to avoid
  flooding logs with oversized JSON or HTML error pages.
2026-04-17 18:41:15 -07:00
..
.vscode use standard tracing and logging in brightstaff (#721) 2026-02-09 13:33:27 -08:00
brightstaff fix: surface real upstream error messages from orchestrator HTTP client 2026-04-17 18:41:15 -07:00
common Zero-config planoai up: pass-through proxy with auto-detected providers (#890) 2026-04-17 13:11:12 -07:00
hermesllm planoai obs: live LLM observability TUI (#891) 2026-04-17 14:03:47 -07:00
llm_gateway fix: passthrough_auth accepts Anthropic x-api-key and normalizes to upstream format (#892) 2026-04-17 17:23:05 -07:00
prompt_gateway Rename all arch references to plano (#745) 2026-02-13 15:16:56 -08:00
build.sh Use mcp tools for filter chain (#621) 2025-12-17 17:30:14 -08:00
Cargo.lock Redis-backed session cache for cross-replica model affinity (#879) 2026-04-13 19:30:47 -07:00
Cargo.toml use standard tracing and logging in brightstaff (#721) 2026-02-09 13:33:27 -08:00