mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-06 04:38:22 +00:00
EHBP/encrypted tinfoil requests have an opaque, HPKE-sealed body, so the proxy cannot read the client's completion cap to size the required balance. The proxy previously required the full, context-window-sized max_completion_cost regardless of what the client requested, causing 402 insufficient-balance errors for users who capped their tokens. Add client-supplied `X-Routstr-Max-Tokens` (mirroring `X-Routstr-Model`) and thread it into `calculate_discounted_max_cost` so the required balance scales with the requested completion cap without decrypting the body: - proxy reads the header on EHBP requests and passes it as the discount override (with `max_completion_tokens` body fallback for plain requests). - a present header below the 64k enclave floor (or unparseable/<=0) is rejected with a 400 invalid_request, matching Tinfoil's minimum cap. - the header is stripped before being forwarded to the enclave.