using System.Net.Http.Headers; namespace AnchorCli.Providers; /// /// Token extractor for OpenRouter responses. /// internal sealed class OpenRouterTokenExtractor : ITokenExtractor { public string ProviderName => "OpenRouter"; public (int inputTokens, int outputTokens)? ExtractTokens(HttpResponseHeaders headers, string? responseBody) { // OpenRouter provides x-total-tokens header if (headers.TryGetValues("x-total-tokens", out var values)) { // Note: OpenRouter only provides total tokens, not split // We'll estimate split based on typical ratios if needed if (long.TryParse(values.FirstOrDefault(), out var total)) { // For now, return total as output (placeholder until we have better splitting) // In practice, you'd need to track input separately from the request return (0, (int)total); } } return null; } public int? ExtractLatency(HttpResponseHeaders headers) { if (headers.TryGetValues("x-response-timing", out var values)) { if (int.TryParse(values.FirstOrDefault(), out var latency)) { return latency; } } return null; } }