From 429824814292269d9c74f47274cdc65d9a3130c0 Mon Sep 17 00:00:00 2001 From: Chad Compton Date: Sat, 14 Mar 2026 07:36:24 -0600 Subject: [PATCH 1/2] feat(provider): add Google Vertex/AI context caching annotations Add cache point annotations for Google providers (@ai-sdk/google-vertex and @ai-sdk/google) in the applyCaching() and message() functions. Currently, applyCaching() sets cache control hints for Anthropic, OpenRouter, Bedrock, Copilot, and OpenAI-compatible providers, but skips Google/Vertex entirely. This means Gemini models miss out on the AI SDK's cache point signaling, which can significantly improve implicit context caching hit rates. Changes: - Add google.cachePoint annotation to applyCaching() provider options - Extend message() to call applyCaching() for @ai-sdk/google-vertex and @ai-sdk/google models (previously only called for Anthropic) --- packages/opencode/src/provider/transform.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 05b9f031fe64..5921a9327c9a 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -179,6 +179,9 @@ export namespace ProviderTransform { anthropic: { cacheControl: { type: "ephemeral" }, }, + google: { + cachePoint: { type: "default" }, + }, openrouter: { cacheControl: { type: "ephemeral" }, }, @@ -262,6 +265,8 @@ export namespace ProviderTransform { model.api.npm !== "@ai-sdk/gateway" ) { msgs = applyCaching(msgs, model) + } else if (model.api.npm === "@ai-sdk/google-vertex" || model.api.npm === "@ai-sdk/google") { + msgs = applyCaching(msgs, model) } // Remap providerOptions keys from stored providerID to expected SDK key From 4a04502849d9c133bfb85eac43297bdd4c4ac4d3 Mon Sep 17 00:00:00 2001 From: Chad Compton Date: Sun, 15 Mar 2026 03:04:06 -0600 Subject: [PATCH 2/2] test: update transform test to include google cachePoint entry --- packages/opencode/test/provider/transform.test.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/opencode/test/provider/transform.test.ts b/packages/opencode/test/provider/transform.test.ts index 917d357eafae..6af32980f7e7 100644 --- a/packages/opencode/test/provider/transform.test.ts +++ b/packages/opencode/test/provider/transform.test.ts @@ -1638,6 +1638,11 @@ describe("ProviderTransform.message - cache control on gateway", () => { type: "ephemeral", }, }, + google: { + cachePoint: { + type: "default", + }, + }, openrouter: { cacheControl: { type: "ephemeral",