From 13d1a5bc8f06aabd36db732c0c234b13471bb489 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Tue, 12 Aug 2025 22:51:30 -0400 Subject: [PATCH] Add Sonnet 1M context checkbox (#7032) --- packages/types/src/provider-settings.ts | 4 + src/api/providers/__tests__/bedrock.spec.ts | 181 ++++++++++++++++++ src/api/providers/bedrock.ts | 20 ++ .../components/settings/providers/Bedrock.tsx | 24 ++- .../hooks/__tests__/useSelectedModel.spec.ts | 67 ++++++- .../components/ui/hooks/useSelectedModel.ts | 15 +- webview-ui/src/i18n/locales/ca/settings.json | 2 + webview-ui/src/i18n/locales/de/settings.json | 2 + webview-ui/src/i18n/locales/en/settings.json | 2 + webview-ui/src/i18n/locales/es/settings.json | 2 + webview-ui/src/i18n/locales/fr/settings.json | 2 + webview-ui/src/i18n/locales/hi/settings.json | 2 + webview-ui/src/i18n/locales/id/settings.json | 2 + webview-ui/src/i18n/locales/it/settings.json | 2 + webview-ui/src/i18n/locales/ja/settings.json | 2 + webview-ui/src/i18n/locales/ko/settings.json | 2 + webview-ui/src/i18n/locales/nl/settings.json | 2 + webview-ui/src/i18n/locales/pl/settings.json | 2 + .../src/i18n/locales/pt-BR/settings.json | 2 + webview-ui/src/i18n/locales/ru/settings.json | 2 + webview-ui/src/i18n/locales/tr/settings.json | 2 + webview-ui/src/i18n/locales/vi/settings.json | 2 + .../src/i18n/locales/zh-CN/settings.json | 2 + .../src/i18n/locales/zh-TW/settings.json | 2 + 24 files changed, 343 insertions(+), 4 deletions(-) diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 3c3757188f..fef7d811a4 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -3,6 +3,9 @@ import { z } from "zod" import { reasoningEffortsSchema, verbosityLevelsSchema, modelInfoSchema } from "./model.js" import { codebaseIndexProviderSchema } from "./codebase-index.js" +// Bedrock Claude Sonnet 4 model ID that supports 1M context +export const BEDROCK_CLAUDE_SONNET_4_MODEL_ID = "anthropic.claude-sonnet-4-20250514-v1:0" + // Extended schema that includes "minimal" for GPT-5 models export const extendedReasoningEffortsSchema = z.union([reasoningEffortsSchema, z.literal("minimal")]) @@ -135,6 +138,7 @@ const bedrockSchema = apiModelIdProviderModelSchema.extend({ awsModelContextWindow: z.number().optional(), awsBedrockEndpointEnabled: z.boolean().optional(), awsBedrockEndpoint: z.string().optional(), + awsBedrock1MContext: z.boolean().optional(), // Enable 'context-1m-2025-08-07' beta for 1M context window }) const vertexSchema = apiModelIdProviderModelSchema.extend({ diff --git a/src/api/providers/__tests__/bedrock.spec.ts b/src/api/providers/__tests__/bedrock.spec.ts index ad0ae2bdb5..40daa2fffa 100644 --- a/src/api/providers/__tests__/bedrock.spec.ts +++ b/src/api/providers/__tests__/bedrock.spec.ts @@ -25,6 +25,7 @@ vi.mock("@aws-sdk/client-bedrock-runtime", () => { import { AwsBedrockHandler } from "../bedrock" import { ConverseStreamCommand, BedrockRuntimeClient } from "@aws-sdk/client-bedrock-runtime" +import { BEDROCK_CLAUDE_SONNET_4_MODEL_ID } from "@roo-code/types" import type { Anthropic } from "@anthropic-ai/sdk" @@ -564,4 +565,184 @@ describe("AwsBedrockHandler", () => { expect(typeof model.info.supportsPromptCache).toBe("boolean") }) }) + + describe("1M context beta feature", () => { + it("should enable 1M context window when awsBedrock1MContext is true for Claude Sonnet 4", () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: true, + }) + + const model = handler.getModel() + + // Should have 1M context window when enabled + expect(model.info.contextWindow).toBe(1_000_000) + }) + + it("should use default context window when awsBedrock1MContext is false for Claude Sonnet 4", () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: false, + }) + + const model = handler.getModel() + + // Should use default context window (200k) + expect(model.info.contextWindow).toBe(200_000) + }) + + it("should not affect context window for non-Claude Sonnet 4 models", () => { + const handler = new AwsBedrockHandler({ + apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0", + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: true, + }) + + const model = handler.getModel() + + // Should use default context window for non-Sonnet 4 models + expect(model.info.contextWindow).toBe(200_000) + }) + + it("should include anthropic_beta parameter when 1M context is enabled", async () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: true, + }) + + const messages: Anthropic.Messages.MessageParam[] = [ + { + role: "user", + content: "Test message", + }, + ] + + const generator = handler.createMessage("", messages) + await generator.next() // Start the generator + + // Verify the command was created with the right payload + expect(mockConverseStreamCommand).toHaveBeenCalled() + const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any + + // Should include anthropic_beta parameter but NOT anthropic_version (only for thinking) + expect(commandArg.anthropic_beta).toEqual(["context-1m-2025-08-07"]) + expect(commandArg.anthropic_version).toBeUndefined() + }) + + it("should not include anthropic_beta parameter when 1M context is disabled", async () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: false, + }) + + const messages: Anthropic.Messages.MessageParam[] = [ + { + role: "user", + content: "Test message", + }, + ] + + const generator = handler.createMessage("", messages) + await generator.next() // Start the generator + + // Verify the command was created with the right payload + expect(mockConverseStreamCommand).toHaveBeenCalled() + const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any + + // Should not include anthropic_beta parameter + expect(commandArg.anthropic_beta).toBeUndefined() + }) + + it("should not include anthropic_beta parameter for non-Claude Sonnet 4 models", async () => { + const handler = new AwsBedrockHandler({ + apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0", + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsBedrock1MContext: true, + }) + + const messages: Anthropic.Messages.MessageParam[] = [ + { + role: "user", + content: "Test message", + }, + ] + + const generator = handler.createMessage("", messages) + await generator.next() // Start the generator + + // Verify the command was created with the right payload + expect(mockConverseStreamCommand).toHaveBeenCalled() + const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any + + // Should not include anthropic_beta parameter for non-Sonnet 4 models + expect(commandArg.anthropic_beta).toBeUndefined() + }) + + it("should enable 1M context window with cross-region inference for Claude Sonnet 4", () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsUseCrossRegionInference: true, + awsBedrock1MContext: true, + }) + + const model = handler.getModel() + + // Should have 1M context window even with cross-region prefix + expect(model.info.contextWindow).toBe(1_000_000) + // Model ID should have cross-region prefix + expect(model.id).toBe(`us.${BEDROCK_CLAUDE_SONNET_4_MODEL_ID}`) + }) + + it("should include anthropic_beta parameter with cross-region inference for Claude Sonnet 4", async () => { + const handler = new AwsBedrockHandler({ + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsAccessKey: "test", + awsSecretKey: "test", + awsRegion: "us-east-1", + awsUseCrossRegionInference: true, + awsBedrock1MContext: true, + }) + + const messages: Anthropic.Messages.MessageParam[] = [ + { + role: "user", + content: "Test message", + }, + ] + + const generator = handler.createMessage("", messages) + await generator.next() // Start the generator + + // Verify the command was created with the right payload + expect(mockConverseStreamCommand).toHaveBeenCalled() + const commandArg = mockConverseStreamCommand.mock.calls[ + mockConverseStreamCommand.mock.calls.length - 1 + ][0] as any + + // Should include anthropic_beta parameter but NOT anthropic_version (only for thinking) + expect(commandArg.anthropic_beta).toEqual(["context-1m-2025-08-07"]) + expect(commandArg.anthropic_version).toBeUndefined() + // Model ID should have cross-region prefix + expect(commandArg.modelId).toBe(`us.${BEDROCK_CLAUDE_SONNET_4_MODEL_ID}`) + }) + }) }) diff --git a/src/api/providers/bedrock.ts b/src/api/providers/bedrock.ts index 706b801d0c..5471f2a01f 100644 --- a/src/api/providers/bedrock.ts +++ b/src/api/providers/bedrock.ts @@ -21,6 +21,7 @@ import { BEDROCK_MAX_TOKENS, BEDROCK_DEFAULT_CONTEXT, AWS_INFERENCE_PROFILE_MAPPING, + BEDROCK_CLAUDE_SONNET_4_MODEL_ID, } from "@roo-code/types" import { ApiStream } from "../transform/stream" @@ -62,6 +63,7 @@ interface BedrockPayload { system?: SystemContentBlock[] inferenceConfig: BedrockInferenceConfig anthropic_version?: string + anthropic_beta?: string[] additionalModelRequestFields?: BedrockThinkingConfig } @@ -375,6 +377,11 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH inferenceConfig.topP = 0.1 } + // Check if 1M context is enabled for Claude Sonnet 4 + // Use parseBaseModelId to handle cross-region inference prefixes + const baseModelId = this.parseBaseModelId(modelConfig.id) + const is1MContextEnabled = baseModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && this.options.awsBedrock1MContext + const payload: BedrockPayload = { modelId: modelConfig.id, messages: formatted.messages, @@ -383,6 +390,8 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH ...(additionalModelRequestFields && { additionalModelRequestFields }), // Add anthropic_version when using thinking features ...(thinkingEnabled && { anthropic_version: "bedrock-2023-05-31" }), + // Add anthropic_beta when 1M context is enabled + ...(is1MContextEnabled && { anthropic_beta: ["context-1m-2025-08-07"] }), } // Create AbortController with 10 minute timeout @@ -960,6 +969,17 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH } } + // Check if 1M context is enabled for Claude Sonnet 4 + // Use parseBaseModelId to handle cross-region inference prefixes + const baseModelId = this.parseBaseModelId(modelConfig.id) + if (baseModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && this.options.awsBedrock1MContext) { + // Update context window to 1M tokens when 1M context beta is enabled + modelConfig.info = { + ...modelConfig.info, + contextWindow: 1_000_000, + } + } + // Get model params including reasoning configuration const params = getModelParams({ format: "anthropic", diff --git a/webview-ui/src/components/settings/providers/Bedrock.tsx b/webview-ui/src/components/settings/providers/Bedrock.tsx index 750f631856..6c871e570a 100644 --- a/webview-ui/src/components/settings/providers/Bedrock.tsx +++ b/webview-ui/src/components/settings/providers/Bedrock.tsx @@ -2,7 +2,12 @@ import { useCallback, useState, useEffect } from "react" import { Checkbox } from "vscrui" import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react" -import { type ProviderSettings, type ModelInfo, BEDROCK_REGIONS } from "@roo-code/types" +import { + type ProviderSettings, + type ModelInfo, + BEDROCK_REGIONS, + BEDROCK_CLAUDE_SONNET_4_MODEL_ID, +} from "@roo-code/types" import { useAppTranslation } from "@src/i18n/TranslationContext" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, StandardTooltip } from "@src/components/ui" @@ -19,6 +24,9 @@ export const Bedrock = ({ apiConfiguration, setApiConfigurationField, selectedMo const { t } = useAppTranslation() const [awsEndpointSelected, setAwsEndpointSelected] = useState(!!apiConfiguration?.awsBedrockEndpointEnabled) + // Check if the selected model supports 1M context (Claude Sonnet 4) + const supports1MContextBeta = apiConfiguration?.apiModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID + // Update the endpoint enabled state when the configuration changes useEffect(() => { setAwsEndpointSelected(!!apiConfiguration?.awsBedrockEndpointEnabled) @@ -159,6 +167,20 @@ export const Bedrock = ({ apiConfiguration, setApiConfigurationField, selectedMo )} + {supports1MContextBeta && ( +
+ { + setApiConfigurationField("awsBedrock1MContext", checked) + }}> + {t("settings:providers.awsBedrock1MContextBetaLabel")} + +
+ {t("settings:providers.awsBedrock1MContextBetaDescription")} +
+
+ )} { diff --git a/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts b/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts index 76c9878c9d..9d8c627b7f 100644 --- a/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts +++ b/webview-ui/src/components/ui/hooks/__tests__/useSelectedModel.spec.ts @@ -5,7 +5,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { renderHook } from "@testing-library/react" import type { Mock } from "vitest" -import { ProviderSettings, ModelInfo } from "@roo-code/types" +import { ProviderSettings, ModelInfo, BEDROCK_CLAUDE_SONNET_4_MODEL_ID } from "@roo-code/types" import { useSelectedModel } from "../useSelectedModel" import { useRouterModels } from "../useRouterModels" @@ -448,4 +448,69 @@ describe("useSelectedModel", () => { expect(result.current.info?.supportsImages).toBe(false) }) }) + + describe("bedrock provider with 1M context", () => { + beforeEach(() => { + mockUseRouterModels.mockReturnValue({ + data: { + openrouter: {}, + requesty: {}, + glama: {}, + unbound: {}, + litellm: {}, + "io-intelligence": {}, + }, + isLoading: false, + isError: false, + } as any) + + mockUseOpenRouterModelProviders.mockReturnValue({ + data: {}, + isLoading: false, + isError: false, + } as any) + }) + + it("should enable 1M context window for Bedrock Claude Sonnet 4 when awsBedrock1MContext is true", () => { + const apiConfiguration: ProviderSettings = { + apiProvider: "bedrock", + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsBedrock1MContext: true, + } + + const wrapper = createWrapper() + const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper }) + + expect(result.current.id).toBe(BEDROCK_CLAUDE_SONNET_4_MODEL_ID) + expect(result.current.info?.contextWindow).toBe(1_000_000) + }) + + it("should use default context window for Bedrock Claude Sonnet 4 when awsBedrock1MContext is false", () => { + const apiConfiguration: ProviderSettings = { + apiProvider: "bedrock", + apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID, + awsBedrock1MContext: false, + } + + const wrapper = createWrapper() + const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper }) + + expect(result.current.id).toBe(BEDROCK_CLAUDE_SONNET_4_MODEL_ID) + expect(result.current.info?.contextWindow).toBe(200_000) + }) + + it("should not affect context window for non-Claude Sonnet 4 Bedrock models", () => { + const apiConfiguration: ProviderSettings = { + apiProvider: "bedrock", + apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0", + awsBedrock1MContext: true, + } + + const wrapper = createWrapper() + const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper }) + + expect(result.current.id).toBe("anthropic.claude-3-5-sonnet-20241022-v2:0") + expect(result.current.info?.contextWindow).toBe(200_000) + }) + }) }) diff --git a/webview-ui/src/components/ui/hooks/useSelectedModel.ts b/webview-ui/src/components/ui/hooks/useSelectedModel.ts index b13823a7d2..b188f3e342 100644 --- a/webview-ui/src/components/ui/hooks/useSelectedModel.ts +++ b/webview-ui/src/components/ui/hooks/useSelectedModel.ts @@ -48,6 +48,7 @@ import { fireworksDefaultModelId, ioIntelligenceDefaultModelId, ioIntelligenceModels, + BEDROCK_CLAUDE_SONNET_4_MODEL_ID, } from "@roo-code/types" import type { ModelRecord, RouterModels } from "@roo/api" @@ -174,7 +175,7 @@ function getSelectedModel({ } case "bedrock": { const id = apiConfiguration.apiModelId ?? bedrockDefaultModelId - const info = bedrockModels[id as keyof typeof bedrockModels] + const baseInfo = bedrockModels[id as keyof typeof bedrockModels] // Special case for custom ARN. if (id === "custom-arn") { @@ -184,7 +185,17 @@ function getSelectedModel({ } } - return { id, info } + // Apply 1M context for Claude Sonnet 4 when enabled + if (id === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && apiConfiguration.awsBedrock1MContext && baseInfo) { + // Create a new ModelInfo object with updated context window + const info: ModelInfo = { + ...baseInfo, + contextWindow: 1_000_000, + } + return { id, info } + } + + return { id, info: baseInfo } } case "vertex": { const id = apiConfiguration.apiModelId ?? vertexDefaultModelId diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 02839a3372..5964798684 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Passar la clau API d'Anthropic com a capçalera d'autorització en lloc de X-Api-Key", "anthropic1MContextBetaLabel": "Activa la finestra de context d'1M (Beta)", "anthropic1MContextBetaDescription": "Amplia la finestra de context a 1 milió de tokens per a Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Activa la finestra de context d'1M (Beta)", + "awsBedrock1MContextBetaDescription": "Amplia la finestra de context a 1 milió de tokens per a Claude Sonnet 4", "cerebrasApiKey": "Clau API de Cerebras", "getCerebrasApiKey": "Obtenir clau API de Cerebras", "chutesApiKey": "Clau API de Chutes", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 204d559dfc..28f3e847fa 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -263,6 +263,8 @@ "anthropicUseAuthToken": "Anthropic API-Schlüssel als Authorization-Header anstelle von X-Api-Key übergeben", "anthropic1MContextBetaLabel": "1M Kontextfenster aktivieren (Beta)", "anthropic1MContextBetaDescription": "Erweitert das Kontextfenster für Claude Sonnet 4 auf 1 Million Token", + "awsBedrock1MContextBetaLabel": "1M Kontextfenster aktivieren (Beta)", + "awsBedrock1MContextBetaDescription": "Erweitert das Kontextfenster für Claude Sonnet 4 auf 1 Million Token", "cerebrasApiKey": "Cerebras API-Schlüssel", "getCerebrasApiKey": "Cerebras API-Schlüssel erhalten", "chutesApiKey": "Chutes API-Schlüssel", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index b57a0d7166..fca3d1ade9 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -260,6 +260,8 @@ "anthropicUseAuthToken": "Pass Anthropic API Key as Authorization header instead of X-Api-Key", "anthropic1MContextBetaLabel": "Enable 1M context window (Beta)", "anthropic1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Enable 1M context window (Beta)", + "awsBedrock1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4", "cerebrasApiKey": "Cerebras API Key", "getCerebrasApiKey": "Get Cerebras API Key", "chutesApiKey": "Chutes API Key", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index afcff6dfa5..fd6e1e2715 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Pasar la clave API de Anthropic como encabezado de autorización en lugar de X-Api-Key", "anthropic1MContextBetaLabel": "Habilitar ventana de contexto de 1M (Beta)", "anthropic1MContextBetaDescription": "Amplía la ventana de contexto a 1 millón de tokens para Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Habilitar ventana de contexto de 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Amplía la ventana de contexto a 1 millón de tokens para Claude Sonnet 4", "cerebrasApiKey": "Clave API de Cerebras", "getCerebrasApiKey": "Obtener clave API de Cerebras", "chutesApiKey": "Clave API de Chutes", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 2772460344..451e51d084 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Passer la clé API Anthropic comme en-tête d'autorisation au lieu de X-Api-Key", "anthropic1MContextBetaLabel": "Activer la fenêtre de contexte de 1M (Bêta)", "anthropic1MContextBetaDescription": "Étend la fenêtre de contexte à 1 million de tokens pour Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Activer la fenêtre de contexte de 1M (Bêta)", + "awsBedrock1MContextBetaDescription": "Étend la fenêtre de contexte à 1 million de tokens pour Claude Sonnet 4", "cerebrasApiKey": "Clé API Cerebras", "getCerebrasApiKey": "Obtenir la clé API Cerebras", "chutesApiKey": "Clé API Chutes", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 3c76392ffd..83a4b7b81b 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "X-Api-Key के बजाय Anthropic API कुंजी को Authorization हेडर के रूप में पास करें", "anthropic1MContextBetaLabel": "1M संदर्भ विंडो सक्षम करें (बीटा)", "anthropic1MContextBetaDescription": "Claude Sonnet 4 के लिए संदर्भ विंडो को 1 मिलियन टोकन तक बढ़ाता है", + "awsBedrock1MContextBetaLabel": "1M संदर्भ विंडो सक्षम करें (बीटा)", + "awsBedrock1MContextBetaDescription": "Claude Sonnet 4 के लिए संदर्भ विंडो को 1 मिलियन टोकन तक बढ़ाता है", "cerebrasApiKey": "Cerebras API कुंजी", "getCerebrasApiKey": "Cerebras API कुंजी प्राप्त करें", "chutesApiKey": "Chutes API कुंजी", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index cf3dc1d42f..fd7edf40cf 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -265,6 +265,8 @@ "anthropicUseAuthToken": "Kirim Anthropic API Key sebagai Authorization header alih-alih X-Api-Key", "anthropic1MContextBetaLabel": "Aktifkan jendela konteks 1M (Beta)", "anthropic1MContextBetaDescription": "Memperluas jendela konteks menjadi 1 juta token untuk Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Aktifkan jendela konteks 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Memperluas jendela konteks menjadi 1 juta token untuk Claude Sonnet 4", "cerebrasApiKey": "Cerebras API Key", "getCerebrasApiKey": "Dapatkan Cerebras API Key", "chutesApiKey": "Chutes API Key", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 40a15c3e60..c8a8800e4f 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Passa la chiave API Anthropic come header di autorizzazione invece di X-Api-Key", "anthropic1MContextBetaLabel": "Abilita finestra di contesto da 1M (Beta)", "anthropic1MContextBetaDescription": "Estende la finestra di contesto a 1 milione di token per Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Abilita finestra di contesto da 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Estende la finestra di contesto a 1 milione di token per Claude Sonnet 4", "cerebrasApiKey": "Chiave API Cerebras", "getCerebrasApiKey": "Ottieni chiave API Cerebras", "chutesApiKey": "Chiave API Chutes", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index 7009c5d48b..d3e7b04baf 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Anthropic APIキーをX-Api-Keyの代わりにAuthorizationヘッダーとして渡す", "anthropic1MContextBetaLabel": "1Mコンテキストウィンドウを有効にする(ベータ版)", "anthropic1MContextBetaDescription": "Claude Sonnet 4のコンテキストウィンドウを100万トークンに拡張します", + "awsBedrock1MContextBetaLabel": "1Mコンテキストウィンドウを有効にする(ベータ版)", + "awsBedrock1MContextBetaDescription": "Claude Sonnet 4のコンテキストウィンドウを100万トークンに拡張します", "cerebrasApiKey": "Cerebras APIキー", "getCerebrasApiKey": "Cerebras APIキーを取得", "chutesApiKey": "Chutes APIキー", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index fc27e6a0fe..a5bcd1f385 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "X-Api-Key 대신 Authorization 헤더로 Anthropic API 키 전달", "anthropic1MContextBetaLabel": "1M 컨텍스트 창 활성화 (베타)", "anthropic1MContextBetaDescription": "Claude Sonnet 4의 컨텍스트 창을 100만 토큰으로 확장", + "awsBedrock1MContextBetaLabel": "1M 컨텍스트 창 활성화 (베타)", + "awsBedrock1MContextBetaDescription": "Claude Sonnet 4의 컨텍스트 창을 100만 토큰으로 확장", "cerebrasApiKey": "Cerebras API 키", "getCerebrasApiKey": "Cerebras API 키 가져오기", "chutesApiKey": "Chutes API 키", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 2dc201851f..b54e021be0 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Anthropic API-sleutel als Authorization-header doorgeven in plaats van X-Api-Key", "anthropic1MContextBetaLabel": "1M contextvenster inschakelen (bèta)", "anthropic1MContextBetaDescription": "Breidt het contextvenster uit tot 1 miljoen tokens voor Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "1M contextvenster inschakelen (bèta)", + "awsBedrock1MContextBetaDescription": "Breidt het contextvenster uit tot 1 miljoen tokens voor Claude Sonnet 4", "cerebrasApiKey": "Cerebras API-sleutel", "getCerebrasApiKey": "Cerebras API-sleutel verkrijgen", "chutesApiKey": "Chutes API-sleutel", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 80324260a3..194bd9029d 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Przekaż klucz API Anthropic jako nagłówek Authorization zamiast X-Api-Key", "anthropic1MContextBetaLabel": "Włącz okno kontekstowe 1M (Beta)", "anthropic1MContextBetaDescription": "Rozszerza okno kontekstowe do 1 miliona tokenów dla Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Włącz okno kontekstowe 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Rozszerza okno kontekstowe do 1 miliona tokenów dla Claude Sonnet 4", "cerebrasApiKey": "Klucz API Cerebras", "getCerebrasApiKey": "Pobierz klucz API Cerebras", "chutesApiKey": "Klucz API Chutes", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 76146be742..7879dd5154 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Passar a chave de API Anthropic como cabeçalho Authorization em vez de X-Api-Key", "anthropic1MContextBetaLabel": "Ativar janela de contexto de 1M (Beta)", "anthropic1MContextBetaDescription": "Estende a janela de contexto para 1 milhão de tokens para o Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Ativar janela de contexto de 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Estende a janela de contexto para 1 milhão de tokens para o Claude Sonnet 4", "cerebrasApiKey": "Chave de API Cerebras", "getCerebrasApiKey": "Obter chave de API Cerebras", "chutesApiKey": "Chave de API Chutes", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index 26b4f56b54..3744ecedff 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Передавать Anthropic API-ключ как Authorization-заголовок вместо X-Api-Key", "anthropic1MContextBetaLabel": "Включить контекстное окно 1M (бета)", "anthropic1MContextBetaDescription": "Расширяет контекстное окно до 1 миллиона токенов для Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Включить контекстное окно 1M (бета)", + "awsBedrock1MContextBetaDescription": "Расширяет контекстное окно до 1 миллиона токенов для Claude Sonnet 4", "cerebrasApiKey": "Cerebras API-ключ", "getCerebrasApiKey": "Получить Cerebras API-ключ", "chutesApiKey": "Chutes API-ключ", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 561695e9cc..be1a7a0169 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Anthropic API Anahtarını X-Api-Key yerine Authorization başlığı olarak geçir", "anthropic1MContextBetaLabel": "1M bağlam penceresini etkinleştir (Beta)", "anthropic1MContextBetaDescription": "Claude Sonnet 4 için bağlam penceresini 1 milyon token'a genişletir", + "awsBedrock1MContextBetaLabel": "1M bağlam penceresini etkinleştir (Beta)", + "awsBedrock1MContextBetaDescription": "Claude Sonnet 4 için bağlam penceresini 1 milyon token'a genişletir", "cerebrasApiKey": "Cerebras API Anahtarı", "getCerebrasApiKey": "Cerebras API Anahtarını Al", "chutesApiKey": "Chutes API Anahtarı", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 1709022211..7526cf31a7 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "Truyền khóa API Anthropic dưới dạng tiêu đề Authorization thay vì X-Api-Key", "anthropic1MContextBetaLabel": "Bật cửa sổ ngữ cảnh 1M (Beta)", "anthropic1MContextBetaDescription": "Mở rộng cửa sổ ngữ cảnh lên 1 triệu token cho Claude Sonnet 4", + "awsBedrock1MContextBetaLabel": "Bật cửa sổ ngữ cảnh 1M (Beta)", + "awsBedrock1MContextBetaDescription": "Mở rộng cửa sổ ngữ cảnh lên 1 triệu token cho Claude Sonnet 4", "cerebrasApiKey": "Khóa API Cerebras", "getCerebrasApiKey": "Lấy khóa API Cerebras", "chutesApiKey": "Khóa API Chutes", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 5d0afff83c..c1985e7490 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "将 Anthropic API 密钥作为 Authorization 标头传递,而不是 X-Api-Key", "anthropic1MContextBetaLabel": "启用 1M 上下文窗口 (Beta)", "anthropic1MContextBetaDescription": "为 Claude Sonnet 4 将上下文窗口扩展至 100 万个 token", + "awsBedrock1MContextBetaLabel": "启用 1M 上下文窗口 (Beta)", + "awsBedrock1MContextBetaDescription": "为 Claude Sonnet 4 将上下文窗口扩展至 100 万个 token", "cerebrasApiKey": "Cerebras API 密钥", "getCerebrasApiKey": "获取 Cerebras API 密钥", "chutesApiKey": "Chutes API 密钥", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 2b7ae60fa5..6a673de60a 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -261,6 +261,8 @@ "anthropicUseAuthToken": "將 Anthropic API 金鑰作為 Authorization 標頭傳遞,而非使用 X-Api-Key", "anthropic1MContextBetaLabel": "啟用 1M 上下文視窗 (Beta)", "anthropic1MContextBetaDescription": "為 Claude Sonnet 4 將上下文視窗擴展至 100 萬個 token", + "awsBedrock1MContextBetaLabel": "啟用 1M 上下文視窗 (Beta)", + "awsBedrock1MContextBetaDescription": "為 Claude Sonnet 4 將上下文視窗擴展至 100 萬個 token", "cerebrasApiKey": "Cerebras API 金鑰", "getCerebrasApiKey": "取得 Cerebras API 金鑰", "chutesApiKey": "Chutes API 金鑰",