summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--packages/opencode/src/provider/provider.ts1
-rw-r--r--packages/opencode/src/provider/transform.ts13
-rw-r--r--packages/opencode/src/session/index.ts4
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,
},
}