Skip to content

v0.6.2 Fail loudly on invalid API keys & fix typed pack SSE streams

Choose a tag to compare

@Brescou Brescou released this 09 Jul 19:03
0e651df

Patch release — launch-audit fixes.

Fixed

  • Invalid API key no longer returns HTTP 200 with degraded content. With a wrong or placeholder ANTHROPIC_API_KEY, the provider's 401 was silently swallowed into placeholder text ("Summary unavailable.", "structured extraction failed") with cost_usd: 0.0. New AgentAuthenticationError now propagates through agents and packs to the API, which returns HTTP 502 with an actionable detail ("Check ANTHROPIC_API_KEY in your .env … or set LLM_PROVIDER=mock"). SSE streams emit the same message as an explicit error event.
  • Same bug, non-auth case. Any other fatal LLM error (persistent 5xx after retries exhausted, a bad model name, a content-policy refusal) was swallowed identically. Every ResearchAgent/AnalystAgent node now lets the LLM call fail loudly — only genuine JSON-parsing hiccups still get a fallback.
  • Typed pack SSE streams (/packs/{id}/run/stream) were broken on the default config. summariser and every StructuredLLMPack vertical drove a sync graph.invoke on the event loop thread, which AsyncSqliteSaver rejects. Fixed via asyncio.to_thread.
  • Stale ANTHROPIC_MODEL default in docs/security.md — documented as the retired claude-3-5-sonnet-20241022; corrected to claude-sonnet-5.

Changed

  • README: new Troubleshooting section, tests badge 758+ → 790+, 422-vs-403 clarification for regulated packs.
  • Remaining French docstrings/comments translated to English.
  • core/cost.py: documented Claude Sonnet 5's introductory pricing window.
  • Dev deps: pip>=26.1.2 pinned (PYSEC-2026-196).

Full Changelog: v0.6.1...v0.6.2