From 53e34584fa745dd3b0976395c353f633176f2b86 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:45:11 +0300 Subject: [PATCH 01/17] feat: add sonnet 4.5 --- src/providers/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/providers/index.ts b/src/providers/index.ts index 4f09c68..cb6fcaf 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -12,8 +12,8 @@ export enum ModelProvider { } export enum ModelName { - Claude_4_Sonnet = 'claude-sonnet-4-20250514', - Claude_4_Sonnet_thinking = 'claude-sonnet-4-20250514-thinking', + Claude_4_Sonnet = 'claude-sonnet-4-5-20250929', + Claude_4_Sonnet_thinking = 'claude-sonnet-4-5-20250929-thinking', Claude_4_Opus = 'claude-opus-4-1-20250805', Claude_4_Opus_thinking = 'claude-opus-4-1-20250805-thinking', GPT_4_1 = 'gpt-4.1', From e203c41e032d04600a73448d838e7914b5edb282 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:45:42 +0300 Subject: [PATCH 02/17] fix: name --- src/providers/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/providers/index.ts b/src/providers/index.ts index cb6fcaf..642ced5 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -12,8 +12,8 @@ export enum ModelProvider { } export enum ModelName { - Claude_4_Sonnet = 'claude-sonnet-4-5-20250929', - Claude_4_Sonnet_thinking = 'claude-sonnet-4-5-20250929-thinking', + Claude_4_5_Sonnet = 'claude-sonnet-4-5-20250929', + Claude_4_5_Sonnet_thinking = 'claude-sonnet-4-5-20250929-thinking', Claude_4_Opus = 'claude-opus-4-1-20250805', Claude_4_Opus_thinking = 'claude-opus-4-1-20250805-thinking', GPT_4_1 = 'gpt-4.1', From ef216d97a814d34d97bfbc641d781d365ff56838 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 29 Sep 2025 17:46:12 +0000 Subject: [PATCH 03/17] chore: update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc74bc6..ccb0c7a 100644 --- a/README.md +++ b/README.md @@ -98,8 +98,8 @@ For more control, use optional parameters: #### Available Models -- `claude-sonnet-4-20250514` -- `claude-sonnet-4-20250514-thinking` +- `claude-sonnet-4-5-20250929` +- `claude-sonnet-4-5-20250929-thinking` - `claude-opus-4-1-20250805` - `claude-opus-4-1-20250805-thinking` - `gpt-4.1` From 68ae3a6480517d6aec360d320a8c39a47e39700b Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 20:56:54 +0300 Subject: [PATCH 04/17] fix: update all models --- src/providers/index.ts | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/providers/index.ts b/src/providers/index.ts index 642ced5..899eaec 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -19,35 +19,26 @@ export enum ModelName { GPT_4_1 = 'gpt-4.1', GPT_o4_Mini = 'o4-mini-2025-04-16', GPT_o3_Pro = 'o3-pro-2025-06-10', - /** - * Medium-size, search grounding disabled - */ - Gemini_Exp_Pro = 'gemini-2.0-pro-exp-02-05', - /** - * Small size, thinking, search grounding disabled - */ - Gemini_Exp_Flash_Thinking = 'gemini-2.0-flash-thinking-exp-01-21', - /** - * Small size, search grounding enabled - */ - Gemini_Flash = 'gemini-2.0-flash', - Gemini_2_5_Pro_Exp = 'gemini-2.5-pro-preview-06-05', + Gemini_2_5_Pro = 'gemini-2.5-pro', + Gemini_2_5_Flash = 'gemini-2.5-flash', } type ModelProviderMap = Record; export const MODEL_PROVIDERS: ModelProviderMap = { [ModelProvider.GoogleAi]: { - default: ModelName.Gemini_2_5_Pro_Exp, - models: [ModelName.Gemini_Flash, ModelName.Gemini_Exp_Pro, ModelName.Gemini_Exp_Flash_Thinking, ModelName.Gemini_2_5_Pro_Exp], + default: ModelName.Gemini_2_5_Pro, + models: [ModelName.Gemini_2_5_Pro, ModelName.Gemini_2_5_Flash], }, [ModelProvider.Anthropic]: { - default: ModelName.Claude_4_Opus, - models: [ModelName.Claude_4_Opus, ModelName.Claude_4_Opus_thinking, ModelName.Claude_4_Sonnet, ModelName.Claude_4_Sonnet_thinking], + default: ModelName.Claude_4_5_Sonnet, + models: [ + ModelName.Claude_4_Opus, ModelName.Claude_4_Opus_thinking, ModelName.Claude_4_5_Sonnet, ModelName.Claude_4_5_Sonnet_thinking + ], }, [ModelProvider.OpenAI]: { default: ModelName.GPT_o4_Mini, - models: [ModelName.GPT_4_1, ModelName.GPT_o3_Pro , ModelName.GPT_o4_Mini], + models: [ModelName.GPT_4_1, ModelName.GPT_o3_Pro, ModelName.GPT_o4_Mini], }, [ModelProvider.Unknown]: {}, }; From 5b3b54c7588cd72ad955ffd277cb797789360b95 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 29 Sep 2025 17:57:21 +0000 Subject: [PATCH 05/17] chore: update README --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ccb0c7a..273c017 100644 --- a/README.md +++ b/README.md @@ -105,10 +105,8 @@ For more control, use optional parameters: - `gpt-4.1` - `o4-mini-2025-04-16` - `o3-pro-2025-06-10` -- `gemini-2.0-pro-exp-02-05` (Medium-size, search grounding disabled) -- `gemini-2.0-flash-thinking-exp-01-21` (Small size, thinking, search grounding disabled) -- `gemini-2.0-flash` (Small size, search grounding enabled) -- `gemini-2.5-pro-preview-06-05` +- `gemini-2.5-pro` +- `gemini-2.5-flash` #### Improve Feature From 410797e4d4fb59fbda869fe66e8510386c8c629b Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:00:08 +0300 Subject: [PATCH 06/17] fix: set sonnet 4.5 as default model --- README.md | 4 ++-- src/utils.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ccb0c7a..b53b0fb 100644 --- a/README.md +++ b/README.md @@ -85,8 +85,8 @@ For more control, use optional parameters: | Parameter | Aliases | Description | Default | | ------------- | ------- | ---------------------------------------------- | ------------------------ | | `path` | | custom path to a worker dir | repository root | -| `provider` | | provider for code generation | googleai | -| `model` | | model name from the provider | gemini-2.5-pro-preview-06-05 | +| `provider` | | provider for code generation | anthropic | +| `model` | | model name from the provider | claude-sonnet-4-5-20250929 | | `temperature` | `temp` | model temperature setting (0-1) | 0.5 | | `fallback` | | whether or not you want to use fallback models | true | diff --git a/src/utils.ts b/src/utils.ts index a50f252..e196964 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -38,7 +38,7 @@ type CommandArgs = { export function parseCommandArgs(args: string[]) { const result: CommandArgs = { basePath: '', - provider: ModelProvider.GoogleAi, + provider: ModelProvider.Anthropic, temperature: 0.5, fallback: true, }; From 6c6bbfd3e8c7aca08823380a9f066619ac99c514 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:00:15 +0300 Subject: [PATCH 07/17] fix: change model name --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index ba40c61..ca556a5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -248,7 +248,7 @@ export default { await sendPrompt( env, { - model: ModelName.Gemini_Exp_Pro, + model: ModelName.Gemini_2_5_Pro, prompts: analyzeSpecFilePrompts, temperature: 0.5, }, From 5b39cc6f6fd4cb897ca6e5bbfeada74a3dc54fbc Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:03:08 +0300 Subject: [PATCH 08/17] fix: update sonnet4 --- src/providers/anthropic.ts | 10 +++++----- test/unit/providers.test.ts | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/providers/anthropic.ts b/src/providers/anthropic.ts index a8d682b..5b3fa49 100644 --- a/src/providers/anthropic.ts +++ b/src/providers/anthropic.ts @@ -43,8 +43,8 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } // Map thinking variants to base models if (model === ModelName.Claude_4_Opus_thinking) { actualModel = ModelName.Claude_4_Opus; - } else if (model === ModelName.Claude_4_Sonnet_thinking) { - actualModel = ModelName.Claude_4_Sonnet; + } else if (model === ModelName.Claude_4_5_Sonnet_thinking) { + actualModel = ModelName.Claude_4_5_Sonnet; } let max_tokens: number; @@ -52,11 +52,11 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } // Explicitly configure max_tokens for each Claude 4 model if (model === ModelName.Claude_4_Opus_thinking) { max_tokens = 32_000; - } else if (model === ModelName.Claude_4_Sonnet_thinking) { + } else if (model === ModelName.Claude_4_5_Sonnet_thinking) { max_tokens = 64_000; } else if (model === ModelName.Claude_4_Opus) { max_tokens = 32_000; - } else if (model === ModelName.Claude_4_Sonnet) { + } else if (model === ModelName.Claude_4_5_Sonnet) { max_tokens = 64_000; } else { throw new Error(`Unsupported model: ${model}`); @@ -77,7 +77,7 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } }; // Configure thinking mode for thinking models - if (model === ModelName.Claude_4_Sonnet_thinking || model === ModelName.Claude_4_Opus_thinking) { + if (model === ModelName.Claude_4_5_Sonnet_thinking || model === ModelName.Claude_4_Opus_thinking) { if (model === ModelName.Claude_4_Opus_thinking) { query.thinking = { type: 'enabled', diff --git a/test/unit/providers.test.ts b/test/unit/providers.test.ts index 72e6681..ba27729 100644 --- a/test/unit/providers.test.ts +++ b/test/unit/providers.test.ts @@ -55,7 +55,7 @@ describe('Anthropic provider', () => { it('should build a valid request for Claude 4 Sonnet model without thinking', () => { const params: ProviderRequestParams = { - model: ModelName.Claude_4_Sonnet, + model: ModelName.Claude_4_5_Sonnet, apiKey: 'test-api-key', prompts: { user: 'Test user prompt', @@ -70,7 +70,7 @@ describe('Anthropic provider', () => { expect(request.provider).toBe('anthropic'); expect(request.endpoint).toBe('v1/messages'); expect(request.headers['x-api-key']).toBe('test-api-key'); - expect(request.query.model).toBe(ModelName.Claude_4_Sonnet); + expect(request.query.model).toBe(ModelName.Claude_4_5_Sonnet); expect(request.query.thinking).toBeUndefined(); // Should not have thinking enabled expect(request.query.temperature).toBe(0.5); // Should preserve user temperature expect(request.query.max_tokens).toBe(64_000); @@ -78,7 +78,7 @@ describe('Anthropic provider', () => { it('should build a valid request for Claude 4 Sonnet thinking model', () => { const params: ProviderRequestParams = { - model: ModelName.Claude_4_Sonnet_thinking, + model: ModelName.Claude_4_5_Sonnet_thinking, apiKey: 'test-api-key', prompts: { user: 'Test user prompt', @@ -93,7 +93,7 @@ describe('Anthropic provider', () => { expect(request.provider).toBe('anthropic'); expect(request.endpoint).toBe('v1/messages'); expect(request.headers['x-api-key']).toBe('test-api-key'); - expect(request.query.model).toBe(ModelName.Claude_4_Sonnet); // Should map to base model + expect(request.query.model).toBe(ModelName.Claude_4_5_Sonnet); // Should map to base model expect(request.query.thinking).toBeDefined(); expect(request.query.thinking?.type).toBe('enabled'); expect(request.query.thinking?.budget_tokens).toBe(32_000); From 4ecd2ada7cdbc4b123866a15622f1017ffe60a90 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:09:19 +0300 Subject: [PATCH 09/17] fix: model name --- test/unit/prompt.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/prompt.test.ts b/test/unit/prompt.test.ts index b375f94..bfee347 100644 --- a/test/unit/prompt.test.ts +++ b/test/unit/prompt.test.ts @@ -65,7 +65,7 @@ describe('Unit tests for prompt functions', () => { describe('sendPrompt', () => { it('should throw SendPromptError on request failure', async () => { const params = { - model: ModelName.Gemini_Exp_Pro, + model: ModelName.Gemini_2_5_Pro, prompts: { system: 'system message', user: 'user message', From 4bf61e79fc9dbd4cdda144e69d1399c70ea67894 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:09:46 +0300 Subject: [PATCH 10/17] fix: gemini model --- test/unit/providers.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/unit/providers.test.ts b/test/unit/providers.test.ts index ba27729..965f0ee 100644 --- a/test/unit/providers.test.ts +++ b/test/unit/providers.test.ts @@ -105,7 +105,7 @@ describe('Anthropic provider', () => { describe('Google AI provider', () => { it('should build a valid request for Google AI Studio provider', () => { const params: ProviderRequestParams = { - model: ModelName.Gemini_Exp_Pro, + model: ModelName.Gemini_2_5_Pro, apiKey: 'test-api-key', prompts: { user: 'Test user prompt', @@ -118,7 +118,7 @@ describe('Google AI provider', () => { const request = googleAIStudioRequest(params); expect(request.provider).toBe('google-ai-studio'); - expect(request.endpoint).toBe(`v1beta/models/${ModelName.Gemini_Exp_Pro}:streamGenerateContent`); + expect(request.endpoint).toBe(`v1beta/models/${ModelName.Gemini_2_5_Pro}:streamGenerateContent`); expect(request.headers['x-goog-api-key']).toBe('test-api-key'); expect(request.query.contents[0].parts[0].text).toBe('Test user prompt'); expect(request.query.systemInstruction.parts[0].text).toBe('Test system prompt'); From 121dbc753d2484584ddc8e531e2a4da04ea80be2 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:10:13 +0300 Subject: [PATCH 11/17] fix: model --- test/unit/providers.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/unit/providers.test.ts b/test/unit/providers.test.ts index 965f0ee..4c50c5f 100644 --- a/test/unit/providers.test.ts +++ b/test/unit/providers.test.ts @@ -130,7 +130,7 @@ describe('Google AI provider', () => { const parsedResponse = googleGeminiParsedResponse(response); expect(parsedResponse).toBeDefined(); - expect(parsedResponse.model).toBe('gemini-2.0-pro-exp-02-05'); + expect(parsedResponse.model).toBe('gemini-2.5-pro'); expect(parsedResponse.metaData).toMatchObject([]); }); }); From a798fbc8df1f1d065c108d012be55e39c7f25ef0 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:16:00 +0300 Subject: [PATCH 12/17] fix: model name --- .../missing-close-xml-tag-response.json | 40 +++++++++---------- .../missing-open-xml-tag-response.json | 40 +++++++++---------- .../googleai/missing-xml-tags-response.json | 12 +++--- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/test/unit/googleai/missing-close-xml-tag-response.json b/test/unit/googleai/missing-close-xml-tag-response.json index e249cdf..e32e94a 100644 --- a/test/unit/googleai/missing-close-xml-tag-response.json +++ b/test/unit/googleai/missing-close-xml-tag-response.json @@ -18,7 +18,7 @@ "candidatesTokenCount": 4, "totalTokenCount": 2635 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -39,7 +39,7 @@ "candidatesTokenCount": 18, "totalTokenCount": 2649 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -60,7 +60,7 @@ "candidatesTokenCount": 34, "totalTokenCount": 2665 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -81,7 +81,7 @@ "candidatesTokenCount": 66, "totalTokenCount": 2697 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -102,7 +102,7 @@ "candidatesTokenCount": 99, "totalTokenCount": 2730 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -123,7 +123,7 @@ "candidatesTokenCount": 149, "totalTokenCount": 2780 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -144,7 +144,7 @@ "candidatesTokenCount": 197, "totalTokenCount": 2828 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -165,7 +165,7 @@ "candidatesTokenCount": 262, "totalTokenCount": 2893 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -186,7 +186,7 @@ "candidatesTokenCount": 327, "totalTokenCount": 2958 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -207,7 +207,7 @@ "candidatesTokenCount": 392, "totalTokenCount": 3023 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -228,7 +228,7 @@ "candidatesTokenCount": 456, "totalTokenCount": 3087 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -249,7 +249,7 @@ "candidatesTokenCount": 519, "totalTokenCount": 3150 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -270,7 +270,7 @@ "candidatesTokenCount": 584, "totalTokenCount": 3215 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -291,7 +291,7 @@ "candidatesTokenCount": 650, "totalTokenCount": 3281 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -312,7 +312,7 @@ "candidatesTokenCount": 716, "totalTokenCount": 3347 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -333,7 +333,7 @@ "candidatesTokenCount": 779, "totalTokenCount": 3410 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -354,7 +354,7 @@ "candidatesTokenCount": 844, "totalTokenCount": 3475 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -375,7 +375,7 @@ "candidatesTokenCount": 910, "totalTokenCount": 3541 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -396,7 +396,7 @@ "candidatesTokenCount": 974, "totalTokenCount": 3605 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -428,6 +428,6 @@ "candidatesTokenCount": 1013, "totalTokenCount": 3644 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" } ] diff --git a/test/unit/googleai/missing-open-xml-tag-response.json b/test/unit/googleai/missing-open-xml-tag-response.json index 477210c..c640393 100644 --- a/test/unit/googleai/missing-open-xml-tag-response.json +++ b/test/unit/googleai/missing-open-xml-tag-response.json @@ -18,7 +18,7 @@ "candidatesTokenCount": 4, "totalTokenCount": 2635 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -39,7 +39,7 @@ "candidatesTokenCount": 18, "totalTokenCount": 2649 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -60,7 +60,7 @@ "candidatesTokenCount": 34, "totalTokenCount": 2665 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -81,7 +81,7 @@ "candidatesTokenCount": 66, "totalTokenCount": 2697 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -102,7 +102,7 @@ "candidatesTokenCount": 99, "totalTokenCount": 2730 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.0-pro" }, { "candidates": [ @@ -123,7 +123,7 @@ "candidatesTokenCount": 149, "totalTokenCount": 2780 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -144,7 +144,7 @@ "candidatesTokenCount": 197, "totalTokenCount": 2828 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -165,7 +165,7 @@ "candidatesTokenCount": 262, "totalTokenCount": 2893 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -186,7 +186,7 @@ "candidatesTokenCount": 327, "totalTokenCount": 2958 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -207,7 +207,7 @@ "candidatesTokenCount": 392, "totalTokenCount": 3023 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -228,7 +228,7 @@ "candidatesTokenCount": 456, "totalTokenCount": 3087 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -249,7 +249,7 @@ "candidatesTokenCount": 519, "totalTokenCount": 3150 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -270,7 +270,7 @@ "candidatesTokenCount": 584, "totalTokenCount": 3215 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -291,7 +291,7 @@ "candidatesTokenCount": 650, "totalTokenCount": 3281 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -312,7 +312,7 @@ "candidatesTokenCount": 716, "totalTokenCount": 3347 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -333,7 +333,7 @@ "candidatesTokenCount": 779, "totalTokenCount": 3410 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -354,7 +354,7 @@ "candidatesTokenCount": 844, "totalTokenCount": 3475 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -375,7 +375,7 @@ "candidatesTokenCount": 910, "totalTokenCount": 3541 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.0-pro" }, { "candidates": [ @@ -396,7 +396,7 @@ "candidatesTokenCount": 974, "totalTokenCount": 3605 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -428,6 +428,6 @@ "candidatesTokenCount": 1013, "totalTokenCount": 3644 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" } ] diff --git a/test/unit/googleai/missing-xml-tags-response.json b/test/unit/googleai/missing-xml-tags-response.json index 487f880..d4667cd 100644 --- a/test/unit/googleai/missing-xml-tags-response.json +++ b/test/unit/googleai/missing-xml-tags-response.json @@ -24,7 +24,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -51,7 +51,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -78,7 +78,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -105,7 +105,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -132,7 +132,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -159,7 +159,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ From dea12787334be34bce1d9d6c041b2320039e2fa8 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Mon, 29 Sep 2025 21:17:31 +0300 Subject: [PATCH 13/17] fix: model name --- .../googleai/missing-xml-tags-response.json | 18 ++++----- .../googleai/present-xml-tags-response.json | 40 +++++++++---------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/test/unit/googleai/missing-xml-tags-response.json b/test/unit/googleai/missing-xml-tags-response.json index d4667cd..d5f7be8 100644 --- a/test/unit/googleai/missing-xml-tags-response.json +++ b/test/unit/googleai/missing-xml-tags-response.json @@ -186,7 +186,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -213,7 +213,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -240,7 +240,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -267,7 +267,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -294,7 +294,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -321,7 +321,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -348,7 +348,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -375,7 +375,7 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -403,6 +403,6 @@ } ] }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" } ] diff --git a/test/unit/googleai/present-xml-tags-response.json b/test/unit/googleai/present-xml-tags-response.json index d6403e1..96781d8 100644 --- a/test/unit/googleai/present-xml-tags-response.json +++ b/test/unit/googleai/present-xml-tags-response.json @@ -18,7 +18,7 @@ "candidatesTokenCount": 4, "totalTokenCount": 2635 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -39,7 +39,7 @@ "candidatesTokenCount": 18, "totalTokenCount": 2649 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -60,7 +60,7 @@ "candidatesTokenCount": 34, "totalTokenCount": 2665 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -81,7 +81,7 @@ "candidatesTokenCount": 66, "totalTokenCount": 2697 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -102,7 +102,7 @@ "candidatesTokenCount": 99, "totalTokenCount": 2730 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -123,7 +123,7 @@ "candidatesTokenCount": 149, "totalTokenCount": 2780 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -144,7 +144,7 @@ "candidatesTokenCount": 197, "totalTokenCount": 2828 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -165,7 +165,7 @@ "candidatesTokenCount": 262, "totalTokenCount": 2893 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -186,7 +186,7 @@ "candidatesTokenCount": 327, "totalTokenCount": 2958 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -207,7 +207,7 @@ "candidatesTokenCount": 392, "totalTokenCount": 3023 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -228,7 +228,7 @@ "candidatesTokenCount": 456, "totalTokenCount": 3087 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -249,7 +249,7 @@ "candidatesTokenCount": 519, "totalTokenCount": 3150 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -270,7 +270,7 @@ "candidatesTokenCount": 584, "totalTokenCount": 3215 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -291,7 +291,7 @@ "candidatesTokenCount": 650, "totalTokenCount": 3281 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -312,7 +312,7 @@ "candidatesTokenCount": 716, "totalTokenCount": 3347 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -333,7 +333,7 @@ "candidatesTokenCount": 779, "totalTokenCount": 3410 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -354,7 +354,7 @@ "candidatesTokenCount": 844, "totalTokenCount": 3475 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -375,7 +375,7 @@ "candidatesTokenCount": 910, "totalTokenCount": 3541 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -396,7 +396,7 @@ "candidatesTokenCount": 974, "totalTokenCount": 3605 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" }, { "candidates": [ @@ -428,6 +428,6 @@ "candidatesTokenCount": 1013, "totalTokenCount": 3644 }, - "modelVersion": "gemini-2.0-pro-exp-02-05" + "modelVersion": "gemini-2.5-pro" } ] From 1ee36c46d9f2e4f7ebbb048296000f588c650c23 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:27:32 +0300 Subject: [PATCH 14/17] Update src/utils.ts Co-authored-by: jalmonter <116984708+jalmonter@users.noreply.github.com> Signed-off-by: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> --- src/utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils.ts b/src/utils.ts index e196964..440aa4d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -38,7 +38,7 @@ type CommandArgs = { export function parseCommandArgs(args: string[]) { const result: CommandArgs = { basePath: '', - provider: ModelProvider.Anthropic, + provider: ModelProvider.Anthropic, temperature: 0.5, fallback: true, }; From c759fa12a2f3d8687a16085a2cb4ed1853674264 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:32:39 +0300 Subject: [PATCH 15/17] fix: remove opus --- src/providers/anthropic.ts | 29 ++++++++--------------------- src/providers/index.ts | 4 +--- test/unit/providers.test.ts | 33 ++++----------------------------- 3 files changed, 13 insertions(+), 53 deletions(-) diff --git a/src/providers/anthropic.ts b/src/providers/anthropic.ts index 5b3fa49..42c654d 100644 --- a/src/providers/anthropic.ts +++ b/src/providers/anthropic.ts @@ -41,20 +41,14 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } let actualModel = model; // Map thinking variants to base models - if (model === ModelName.Claude_4_Opus_thinking) { - actualModel = ModelName.Claude_4_Opus; - } else if (model === ModelName.Claude_4_5_Sonnet_thinking) { + if (model === ModelName.Claude_4_5_Sonnet_thinking) { actualModel = ModelName.Claude_4_5_Sonnet; } let max_tokens: number; // Explicitly configure max_tokens for each Claude 4 model - if (model === ModelName.Claude_4_Opus_thinking) { - max_tokens = 32_000; - } else if (model === ModelName.Claude_4_5_Sonnet_thinking) { - max_tokens = 64_000; - } else if (model === ModelName.Claude_4_Opus) { + if (model === ModelName.Claude_4_5_Sonnet_thinking) { max_tokens = 32_000; } else if (model === ModelName.Claude_4_5_Sonnet) { max_tokens = 64_000; @@ -76,19 +70,12 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } temperature, }; - // Configure thinking mode for thinking models - if (model === ModelName.Claude_4_5_Sonnet_thinking || model === ModelName.Claude_4_Opus_thinking) { - if (model === ModelName.Claude_4_Opus_thinking) { - query.thinking = { - type: 'enabled', - budget_tokens: 20_000, - }; - } else { - query.thinking = { - type: 'enabled', - budget_tokens: 32_000, - }; - } + // Configure thinking mode for Claude 4.5 Sonnet thinking model + if (model === ModelName.Claude_4_5_Sonnet_thinking) { + query.thinking = { + type: 'enabled', + budget_tokens: 32_000, + }; query.temperature = 1; } diff --git a/src/providers/index.ts b/src/providers/index.ts index 899eaec..d5fca15 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -14,8 +14,6 @@ export enum ModelProvider { export enum ModelName { Claude_4_5_Sonnet = 'claude-sonnet-4-5-20250929', Claude_4_5_Sonnet_thinking = 'claude-sonnet-4-5-20250929-thinking', - Claude_4_Opus = 'claude-opus-4-1-20250805', - Claude_4_Opus_thinking = 'claude-opus-4-1-20250805-thinking', GPT_4_1 = 'gpt-4.1', GPT_o4_Mini = 'o4-mini-2025-04-16', GPT_o3_Pro = 'o3-pro-2025-06-10', @@ -33,7 +31,7 @@ export const MODEL_PROVIDERS: ModelProviderMap = { [ModelProvider.Anthropic]: { default: ModelName.Claude_4_5_Sonnet, models: [ - ModelName.Claude_4_Opus, ModelName.Claude_4_Opus_thinking, ModelName.Claude_4_5_Sonnet, ModelName.Claude_4_5_Sonnet_thinking + ModelName.Claude_4_5_Sonnet, ModelName.Claude_4_5_Sonnet_thinking ], }, [ModelProvider.OpenAI]: { diff --git a/test/unit/providers.test.ts b/test/unit/providers.test.ts index 4c50c5f..191df64 100644 --- a/test/unit/providers.test.ts +++ b/test/unit/providers.test.ts @@ -7,7 +7,7 @@ import { ModelName, ProviderRequestParams } from '../../src/providers'; describe('Anthropic provider', () => { it('should build a valid request for Anthropic provider', () => { const params: ProviderRequestParams = { - model: ModelName.Claude_4_Opus, + model: ModelName.Claude_4_5_Sonnet, apiKey: 'test-api-key', prompts: { user: 'Test user prompt', @@ -22,38 +22,13 @@ describe('Anthropic provider', () => { expect(request.provider).toBe('anthropic'); expect(request.endpoint).toBe('v1/messages'); expect(request.headers['x-api-key']).toBe('test-api-key'); - expect(request.query.model).toBe(ModelName.Claude_4_Opus); + expect(request.query.model).toBe(ModelName.Claude_4_5_Sonnet); expect(request.query.messages[0].content).toBe('Test user prompt'); expect(request.query.system).toBe('Test system prompt'); expect(request.query.temperature).toBe(0.5); }); - it('should build a valid request for Claude 4 Opus thinking model', () => { - const params: ProviderRequestParams = { - model: ModelName.Claude_4_Opus_thinking, - apiKey: 'test-api-key', - prompts: { - user: 'Test user prompt', - system: 'Test system prompt', - }, - temperature: 0.5, - stream: true, - }; - - const request = anthropicRequest(params); - - expect(request.provider).toBe('anthropic'); - expect(request.endpoint).toBe('v1/messages'); - expect(request.headers['x-api-key']).toBe('test-api-key'); - expect(request.query.model).toBe(ModelName.Claude_4_Opus); // Should map to base model - expect(request.query.thinking).toBeDefined(); - expect(request.query.thinking?.type).toBe('enabled'); - expect(request.query.thinking?.budget_tokens).toBe(20_000); - expect(request.query.temperature).toBe(1); // Should be forced to 1 for thinking - expect(request.query.max_tokens).toBe(32_000); - }); - - it('should build a valid request for Claude 4 Sonnet model without thinking', () => { + it('should build a valid request for Claude 4.5 Sonnet model without thinking', () => { const params: ProviderRequestParams = { model: ModelName.Claude_4_5_Sonnet, apiKey: 'test-api-key', @@ -76,7 +51,7 @@ describe('Anthropic provider', () => { expect(request.query.max_tokens).toBe(64_000); }); - it('should build a valid request for Claude 4 Sonnet thinking model', () => { + it('should build a valid request for Claude 4.5 Sonnet thinking model', () => { const params: ProviderRequestParams = { model: ModelName.Claude_4_5_Sonnet_thinking, apiKey: 'test-api-key', From ab5d763692448b5b74fe665078761f43579faa69 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Sep 2025 09:33:04 +0000 Subject: [PATCH 16/17] chore: update README --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 54b9da6..ede7c42 100644 --- a/README.md +++ b/README.md @@ -100,8 +100,6 @@ For more control, use optional parameters: - `claude-sonnet-4-5-20250929` - `claude-sonnet-4-5-20250929-thinking` -- `claude-opus-4-1-20250805` -- `claude-opus-4-1-20250805-thinking` - `gpt-4.1` - `o4-mini-2025-04-16` - `o3-pro-2025-06-10` From 293517f7d7f26d4a03133c68b04004548f69e7c0 Mon Sep 17 00:00:00 2001 From: Arina Razmyslovich <55647212+Lavriz@users.noreply.github.com> Date: Tue, 30 Sep 2025 12:41:13 +0300 Subject: [PATCH 17/17] fix: max_tokens --- src/providers/anthropic.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/providers/anthropic.ts b/src/providers/anthropic.ts index 42c654d..c272548 100644 --- a/src/providers/anthropic.ts +++ b/src/providers/anthropic.ts @@ -45,16 +45,7 @@ export function anthropicRequest({ model, prompts, apiKey, stream, temperature } actualModel = ModelName.Claude_4_5_Sonnet; } - let max_tokens: number; - - // Explicitly configure max_tokens for each Claude 4 model - if (model === ModelName.Claude_4_5_Sonnet_thinking) { - max_tokens = 32_000; - } else if (model === ModelName.Claude_4_5_Sonnet) { - max_tokens = 64_000; - } else { - throw new Error(`Unsupported model: ${model}`); - } + const max_tokens = 64_000; const query: AnthropicQuery = { model: actualModel,