diff --git a/src/api/providers/bedrock.ts b/src/api/providers/bedrock.ts index 1f75ba17e2..c8dc2c32ad 100644 --- a/src/api/providers/bedrock.ts +++ b/src/api/providers/bedrock.ts @@ -252,6 +252,15 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH } } + // Bedrock caching was historically opt-in (awsUsePromptCache). + // Preserve that default: when no explicit global or provider-level + // setting exists, default to disabled so existing users are not + // silently enrolled. + const bedrockCacheSettings = { + ...this.options, + promptCachingEnabled: this.options.promptCachingEnabled ?? false, + } + const promptCache = applyPromptCacheToMessages({ adapter: "bedrock", overrideKey: "bedrock", @@ -260,7 +269,7 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH supportsPromptCache: modelConfig.info.supportsPromptCache, promptCacheRetention: modelConfig.info.promptCacheRetention, }, - settings: this.options, + settings: bedrockCacheSettings, }) // Build streamText request diff --git a/src/api/providers/openrouter.ts b/src/api/providers/openrouter.ts index b59fcc1216..34f5b62949 100644 --- a/src/api/providers/openrouter.ts +++ b/src/api/providers/openrouter.ts @@ -30,7 +30,6 @@ import { getModelEndpoints } from "./fetchers/modelEndpointCache" import { applyRouterToolPreferences } from "./utils/router-tool-preferences" import { generateImageWithProvider, ImageGenerationResult } from "./utils/image-generation" import { normalizeProviderUsage } from "./utils/normalize-provider-usage" -import { toFiniteNumber, firstNumber } from "./utils/usage-metrics" import type { ApiHandlerCreateMessageMetadata, SingleCompletionHandler } from "../index" import type { ApiStreamChunk } from "../transform/stream" @@ -180,26 +179,14 @@ export class OpenRouterHandler extends BaseProvider implements SingleCompletionH const usage = await result.usage const totalUsage = await result.totalUsage - const rawUsage = (usage as any)?.raw as Record | undefined + // Prefer totalUsage (multi-step accumulation) over per-step usage; + // all further fallback extraction is handled by the openrouter profile + // in usage-profiles.ts via normalizeProviderUsage. const usageRecord = { ...(usage as any), - inputTokens: firstNumber([ - totalUsage.inputTokens, - (usage as any).inputTokens, - (usage as any).promptTokens, - (usage as any).prompt_tokens, - rawUsage?.prompt_tokens as number | undefined, - rawUsage?.input_tokens as number | undefined, - ]), - outputTokens: firstNumber([ - totalUsage.outputTokens, - (usage as any).outputTokens, - (usage as any).completionTokens, - (usage as any).completion_tokens, - rawUsage?.completion_tokens as number | undefined, - rawUsage?.output_tokens as number | undefined, - ]), + inputTokens: totalUsage.inputTokens ?? (usage as any).inputTokens, + outputTokens: totalUsage.outputTokens ?? (usage as any).outputTokens, } const { chunk } = normalizeProviderUsage({ provider: "openrouter",