1. 21 Jun, 2026 3 commits
    • Stefy Lanza (nextime / spora )'s avatar
      Notify client on rotation failover (banner/metadata/headers); bump to 0.99.71 · 0a3a1df7
      Stefy Lanza (nextime / spora ) authored
      When a rotation fails over to a different provider/model than the preferred
      (highest-weight) pick, optionally notify the client so the provider/model
      change isn't silent. Opt-in via a new notify_on_failover flag, settable
      globally (rotations.json top-level) or per-rotation, mirroring notifyerrors.
      
      On a real switch (served provider/model differs from preferred), three
      mechanisms carry the notice:
      - Visible banner: prepended to message content (non-streaming) or a leading
        delta chunk (streaming).
      - JSON metadata: an aisbf_failover object on the body / leading stream chunk.
      - HTTP headers: X-AISBF-Failover/Provider/Model/Preferred-* on the
        StreamingResponse and (for non-streaming) at the rotation route.
      
      Applied to both the normal and chunked rotation paths. The banner is injected
      after caching so cache hits don't replay a stale notice; no switch means zero
      overhead and nothing emitted; default off preserves existing behavior.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      0a3a1df7
    • Stefy Lanza (nextime / spora )'s avatar
      Transparent rotation failover for streaming provider errors; bump to 0.99.70 · d9227cb1
      Stefy Lanza (nextime / spora ) authored
      Streaming rotation requests returned the provider's lazy async generator to
      the client before the upstream HTTP call was made, so an immediate provider
      error (e.g. HTTP 400 "model not supported") surfaced mid-stream after the
      200 OK headers were already sent — leaking the error to the client instead
      of failing over.
      
      - Prime streaming responses (_prime_stream) inside the rotation retry loop so
        immediate provider errors are raised within the try/except and trigger
        failover to the next provider by weight, transparently to the client.
      - Add _is_non_retryable_error to skip pointless same-provider retries for
        client errors (400/401/403/404/405/422) and move straight to the next
        provider; 5xx/timeouts/network remain retryable.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      d9227cb1
    • Stefy Lanza (nextime / spora )'s avatar
      Fix missing market/usage helpers on Rotation & Autoselect handlers; bump to 0.99.69 · bd7bfb97
      Stefy Lanza (nextime / spora ) authored
      Add _record_dashboard_proxy_event, _settle_market_result,
      _get_market_source_details, _market_request_id and
      _extract_usage_from_sse_chunk to RotationHandler, and the market
      settlement cluster to AutoselectHandler. These were defined only on
      RequestHandler, so rotation/autoselect requests raised AttributeError
      (crash on the dashboard event path, silently swallowed elsewhere),
      dropping market settlement and streaming usage capture.
      Co-Authored-By: 's avatarClaude Opus 4.8 <noreply@anthropic.com>
      bd7bfb97
  2. 19 Jun, 2026 1 commit
  3. 19 May, 2026 2 commits
  4. 18 May, 2026 6 commits
  5. 17 May, 2026 4 commits
  6. 16 May, 2026 3 commits
  7. 14 May, 2026 1 commit
  8. 13 May, 2026 4 commits
  9. 12 May, 2026 16 commits