diff --git a/packages/vscode-ide-companion/src/services/qwenAgentManager.test.ts b/packages/vscode-ide-companion/src/services/qwenAgentManager.test.ts index 440dc2b18..8df67c51e 100644 --- a/packages/vscode-ide-companion/src/services/qwenAgentManager.test.ts +++ b/packages/vscode-ide-companion/src/services/qwenAgentManager.test.ts @@ -5,7 +5,11 @@ */ import { describe, expect, it, vi } from 'vitest'; -import { extractSessionListItems } from './qwenAgentManager.js'; +import { + extractSessionListItems, + QwenAgentManager, +} from './qwenAgentManager.js'; +import type { ModelInfo } from '@agentclientprotocol/sdk'; vi.mock('vscode', () => ({ window: { @@ -54,3 +58,48 @@ describe('extractSessionListItems', () => { expect(extractSessionListItems({})).toEqual([]); }); }); + +describe('QwenAgentManager.setModelFromUi', () => { + it('emits the selected model metadata from the available models list', async () => { + const manager = new QwenAgentManager(); + const onModelChanged = vi.fn(); + manager.onModelChanged(onModelChanged); + + const selectedModel: ModelInfo = { + modelId: 'qwen3-coder-plus', + name: 'Qwen3 Coder Plus', + _meta: { + contextLimit: 262144, + }, + }; + + ( + manager as unknown as { + baselineAvailableModels: ModelInfo[]; + } + ).baselineAvailableModels = [ + { + modelId: 'qwen3-coder-base', + name: 'Qwen3 Coder Base', + _meta: { + contextLimit: 131072, + }, + }, + selectedModel, + ]; + + ( + manager as unknown as { + connection: { + setModel: (modelId: string) => Promise<{ modelId: string }>; + }; + } + ).connection = { + setModel: vi.fn().mockResolvedValue({ modelId: selectedModel.modelId }), + }; + + await manager.setModelFromUi(selectedModel.modelId); + + expect(onModelChanged).toHaveBeenCalledWith(selectedModel); + }); +}); diff --git a/packages/vscode-ide-companion/src/services/qwenAgentManager.ts b/packages/vscode-ide-companion/src/services/qwenAgentManager.ts index 31da317df..883a226ee 100644 --- a/packages/vscode-ide-companion/src/services/qwenAgentManager.ts +++ b/packages/vscode-ide-companion/src/services/qwenAgentManager.ts @@ -382,10 +382,13 @@ export class QwenAgentManager { try { await this.connection.setModel(modelId); const confirmedModelId = modelId; - const modelInfo: ModelInfo = { + const modelInfo = this.baselineAvailableModels.find( + (model) => model.modelId === confirmedModelId, + ) ?? { modelId: confirmedModelId, name: confirmedModelId, }; + this.baselineModelInfo = modelInfo; this.callbacks.onModelChanged?.(modelInfo); return modelInfo; } catch (err) {