mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-08-09 11:04:36 +00:00
Tinfoil PR #385 added model=<name> to the X-Tinfoil-Usage-Metrics header/trailer. This commit uses that field for accurate billing. Changes in routstr/upstream/ehbp.py: - parse_tinfoil_usage_metrics(): extract the model= field as a string alongside the existing token counts (previously silently discarded because int() failed on it). - _build_cost_info(): accept optional actual_model parameter propagated through to callers when a real mismatch is detected. - _compute_ehbp_actual_cost(): compare the served model against model_obj.forwarded_model_id (the expected upstream ID) rather than model_obj.id (the client-facing alias). This prevents spurious mismatches when a node runner maps e.g. tinfoil-glm-5-2 -> glm-5-2 and the header correctly reports glm-5-2. On a genuine mismatch (failover to a different upstream model), look up the actual model's pricing via get_model_instance() (forwarded_model_id values are registered as routable aliases in the global model map). - forward_ehbp_request() / forward_ehbp_x_cashu_request(): use the actual served model for payment finalization and logging when a mismatch is detected. Tests: 6 new scenarios (alias match, real mismatch with alias, unknown model fallback, old-format compat, cache token details + model), plus forwarded_model_id set on all existing mock model objects to keep them passing. All 49 Tinfoil/EHBP unit tests pass.