diff options
| author | Dax Raad <[email protected]> | 2025-06-29 19:26:50 -0400 |
|---|---|---|
| committer | Dax Raad <[email protected]> | 2025-06-29 19:27:07 -0400 |
| commit | ca48a4f0fb76700f18fac71eb426421c6be6237c (patch) | |
| tree | 1982c0c5182d50055455f4985c99fa9a37b95222 | |
| parent | 98ee5a3d879b571f4d470e325232f238c3b09ef8 (diff) | |
| download | opencode-ca48a4f0fb76700f18fac71eb426421c6be6237c.tar.gz opencode-ca48a4f0fb76700f18fac71eb426421c6be6237c.zip | |
better amazon bedrock caching with anthropic models
| -rw-r--r-- | packages/opencode/src/provider/provider.ts | 1 | ||||
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 13 | ||||
| -rw-r--r-- | packages/opencode/src/session/index.ts | 4 |
3 files changed, 18 insertions, 0 deletions
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts index 2fdf0c183..d409a176f 100644 --- a/packages/opencode/src/provider/provider.ts +++ b/packages/opencode/src/provider/provider.ts @@ -185,6 +185,7 @@ export namespace Provider { source, info, options, + getModel, } return } diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index aa2895da3..d5e140b36 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -20,6 +20,19 @@ export namespace ProviderTransform { } } } + if (providerID === "amazon-bedrock" || modelID.includes("anthropic")) { + const system = msgs.filter((msg) => msg.role === "system").slice(0, 2) + const final = msgs.filter((msg) => msg.role !== "system").slice(-2) + + for (const msg of unique([...system, ...final])) { + msg.providerMetadata = { + ...msg.providerMetadata, + bedrock: { + cachePoint: { type: "ephemeral" }, + }, + } + } + } return msgs } } diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index c6227fa41..7319f5ab1 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -882,8 +882,12 @@ export namespace Session { reasoning: 0, cache: { write: (metadata?.["anthropic"]?.["cacheCreationInputTokens"] ?? + // @ts-expect-error + metadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ?? 0) as number, read: (metadata?.["anthropic"]?.["cacheReadInputTokens"] ?? + // @ts-expect-error + metadata?.["bedrock"]?.["usage"]?.["cacheReadInputTokens"] ?? 0) as number, }, } |
