From 74e53fdbdc1bcaa004743bf91cfaf94d7b4e2572 Mon Sep 17 00:00:00 2001 From: Excelius-Wang <57819425+Excelius-Wang@users.noreply.github.com> Date: Mon, 24 Aug 2026 01:18:47 +0800 Subject: [PATCH] fix: use executable model names for turns --- src/CodexAcpClient.ts | 3 ++- src/CodexAcpServer.ts | 4 ++++ .../CodexACPAgent/CodexAcpClient.test.ts | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/CodexAcpClient.ts b/src/CodexAcpClient.ts index 10e724e7..f639dacc 100644 --- a/src/CodexAcpClient.ts +++ b/src/CodexAcpClient.ts @@ -844,6 +844,7 @@ export class CodexAcpClient { request: acp.PromptRequest, agentMode: AgentMode, modelId: ModelId, + modelName: string, serviceTier: ServiceTier | null, disableSummary: boolean, cwd: string, @@ -864,7 +865,7 @@ export class CodexAcpClient { sandboxPolicy: addAdditionalDirectoriesToSandboxPolicy(agentMode.sandboxPolicy, additionalDirectories), summary: disableSummary ? "none" : "auto", effort: effort, - model: modelId.model, + model: modelName, serviceTier: serviceTier, }, onTurnStarted); } diff --git a/src/CodexAcpServer.ts b/src/CodexAcpServer.ts index cefe45f9..97c32ed4 100644 --- a/src/CodexAcpServer.ts +++ b/src/CodexAcpServer.ts @@ -2417,6 +2417,8 @@ export class CodexAcpServer { } const modelId = ModelId.fromString(sessionState.currentModelId); + const modelName = this.findCurrentModel(sessionState.availableModels, sessionState.currentModelId)?.model + ?? modelId.model; const modelLacksReasoning = sessionState.supportedReasoningEfforts.length > 0 && sessionState.supportedReasoningEfforts.every(e => e.reasoningEffort === "none"); @@ -2442,6 +2444,7 @@ export class CodexAcpServer { effectiveParams, agentMode, modelId, + modelName, serviceTier, disableSummary, sessionState.cwd, @@ -2532,6 +2535,7 @@ export class CodexAcpServer { implementationRequest, agentMode, modelId, + modelName, serviceTier, disableSummary, sessionState.cwd, diff --git a/src/__tests__/CodexACPAgent/CodexAcpClient.test.ts b/src/__tests__/CodexACPAgent/CodexAcpClient.test.ts index 305982d3..1f6decff 100644 --- a/src/__tests__/CodexACPAgent/CodexAcpClient.test.ts +++ b/src/__tests__/CodexACPAgent/CodexAcpClient.test.ts @@ -3580,6 +3580,27 @@ describe('ACP server test', { timeout: 40_000 }, () => { expect(turnStartSpy).toHaveBeenCalledWith(expect.objectContaining({ summary: "auto" })); }); + it('should pass the executable model name to turn/start', async () => { + const model = createTestModel({ + id: "catalog-model-id", + model: "provider-model-name", + }); + const {mockFixture, turnStartSpy} = setupPromptFixture({ + currentModelId: "catalog-model-id[medium]", + availableModels: [model], + }); + + await mockFixture.getCodexAcpAgent().prompt({ + sessionId: "session-id", + prompt: [{type: "text", text: "test"}], + }); + + expect(turnStartSpy).toHaveBeenCalledWith(expect.objectContaining({ + model: "provider-model-name", + effort: "medium", + })); + }); + it ('should reject prompt with images when model does not support image input', async () => { const { mockFixture } = setupPromptFixture({ supportedInputModalities: ["text"],