From 20a887f4cc80db25a3027e50a576d45216f52b10 Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Thu, 1 Oct 2026 00:00:16 +0200 Subject: [PATCH] Show an agent's own model in the composer when the catalog lacks it (#5796) The composer fell back to the catalog's default model whenever the agent's model was missing from the loaded model list, so a Codex subagent started on a model the catalog did not list yet was labeled as the default model, with that model's thinking options. Fixes #5791 Co-authored-by: paseo-bot[bot] <266920839+paseo-bot[bot]@users.noreply.github.com> --- .../src/composer/agent-controls/utils.test.ts | 26 +++++++++++++++++++ .../app/src/composer/agent-controls/utils.ts | 6 ++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/packages/app/src/composer/agent-controls/utils.test.ts b/packages/app/src/composer/agent-controls/utils.test.ts index 5b566fdeb4..993e21f0c9 100644 --- a/packages/app/src/composer/agent-controls/utils.test.ts +++ b/packages/app/src/composer/agent-controls/utils.test.ts @@ -186,4 +186,30 @@ describe("resolveAgentModelSelection", () => { expect(selection.selectedThinkingId).toBe("low"); expect(selection.displayThinking).toBe("Low"); }); + + it("shows the agent's own model when the catalog does not list it", () => { + const selection = resolveAgentModelSelection({ + models: [ + { + id: "gpt-6-sol", + provider: "codex", + label: "GPT-6-Sol", + isDefault: true, + thinkingOptions: [ + { id: "medium", label: "medium" }, + { id: "max", label: "max" }, + ], + defaultThinkingOptionId: "medium", + }, + ], + runtimeModelId: "gpt-6.1-sol", + configuredModelId: "gpt-6.1-sol", + explicitThinkingOptionId: "max", + }); + + expect(selection.selectedModel).toBeNull(); + expect(selection.activeModelId).toBe("gpt-6.1-sol"); + expect(selection.displayModel).toBe("gpt-6.1-sol"); + expect(selection.displayThinking).toBe("Max"); + }); }); diff --git a/packages/app/src/composer/agent-controls/utils.ts b/packages/app/src/composer/agent-controls/utils.ts index b28b693365..56f9bcd49f 100644 --- a/packages/app/src/composer/agent-controls/utils.ts +++ b/packages/app/src/composer/agent-controls/utils.ts @@ -79,10 +79,10 @@ function pickSelectedModel( preferredModelId: string | null, fallbackModel: AgentModelDefinition | null, ): AgentModelDefinition | null { - if (!models || !preferredModelId) { + if (!preferredModelId) { return fallbackModel; } - return findModelById(models, preferredModelId) ?? fallbackModel; + return findModelById(models, preferredModelId); } function resolveThinkingId( @@ -164,7 +164,7 @@ export function resolveAgentModelSelection(input: { const thinkingOptions = selectedModel?.thinkingOptions ?? null; const resolvedThinkingId = resolveThinkingId(explicitThinkingOptionId, selectedModel); const effectiveThinking = resolveEffectiveThinking(thinkingOptions, resolvedThinkingId); - const selectedThinkingId = effectiveThinking?.id ?? null; + const selectedThinkingId = effectiveThinking?.id ?? resolvedThinkingId; const displayThinking = resolveThinkingDisplay( effectiveThinking, selectedThinkingId,