From 9f936c696816bded1cbe678060abfdeb0aa2f353 Mon Sep 17 00:00:00 2001 From: DhanushSantosh Date: Mon, 12 Jan 2026 20:20:56 +0530 Subject: [PATCH] fix(opencode): parse api-key provider models --- .../unit/providers/opencode-provider.test.ts | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/server/tests/unit/providers/opencode-provider.test.ts b/apps/server/tests/unit/providers/opencode-provider.test.ts index ad8dfb1e..fc3791e7 100644 --- a/apps/server/tests/unit/providers/opencode-provider.test.ts +++ b/apps/server/tests/unit/providers/opencode-provider.test.ts @@ -3,7 +3,7 @@ import { OpencodeProvider, resetToolUseIdCounter, } from '../../../src/providers/opencode-provider.js'; -import type { ProviderMessage } from '@automaker/types'; +import type { ProviderMessage, ModelDefinition } from '@automaker/types'; import { collectAsyncGenerator } from '../../utils/helpers.js'; import { spawnJSONLProcess, getOpenCodeAuthIndicators } from '@automaker/platform'; @@ -128,6 +128,28 @@ describe('opencode-provider.ts', () => { }); }); + describe('parseModelsOutput', () => { + it('should parse nested provider model IDs', () => { + const output = [ + 'openrouter/anthropic/claude-3.5-sonnet', + 'openai/gpt-4o', + 'amazon-bedrock/anthropic.claude-sonnet-4-5-20250929-v1:0', + ].join('\n'); + + const parseModelsOutput = ( + provider as unknown as { parseModelsOutput: (output: string) => ModelDefinition[] } + ).parseModelsOutput; + const models = parseModelsOutput(output); + + expect(models).toHaveLength(3); + const openrouterModel = models.find((model) => model.id.startsWith('openrouter/')); + + expect(openrouterModel).toBeDefined(); + expect(openrouterModel?.provider).toBe('openrouter'); + expect(openrouterModel?.modelString).toBe('openrouter/anthropic/claude-3.5-sonnet'); + }); + }); + describe('supportsFeature', () => { it("should support 'tools' feature", () => { expect(provider.supportsFeature('tools')).toBe(true);