diff --git a/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts b/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts index 04610b6f00..41d5be45d5 100644 --- a/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts +++ b/packages/agent/src/adapters/claude/claude-agent.resume-model.test.ts @@ -84,6 +84,12 @@ function getModelConfigOption(response: { return response.configOptions?.find((opt) => opt.id === "model"); } +function getEffortConfigOption(response: { + configOptions?: Array<{ id: string; currentValue?: unknown }> | null; +}) { + return response.configOptions?.find((opt) => opt.id === "effort"); +} + // Real temp dirs: createSession validates cwd and SettingsManager reads // settings from disk; CLAUDE_CONFIG_DIR keeps both away from the real home. const cwd = mkdtempSync(path.join(os.tmpdir(), "claude-agent-test-cwd-")); @@ -358,6 +364,21 @@ describe("ClaudeAcpAgent session creation", () => { } }); + it("does not expose effort controls when a new session starts with Kimi K3", async () => { + const agent = makeAgent(); + + const response = await agent.newSession({ + cwd, + mcpServers: [], + _meta: { taskRunId: "run-kimi", model: "moonshotai/kimi-k3" }, + }); + + expect(getModelConfigOption(response)?.currentValue).toBe( + "moonshotai/kimi-k3", + ); + expect(getEffortConfigOption(response)).toBeUndefined(); + }); + // The timeout *message* (RequestError "... timed out after ...") is covered // by claude-agent.refresh.test.ts. Here we cover the leak fix on the // new-session and resume paths: any init failure must close the query so the diff --git a/packages/agent/src/adapters/claude/claude-agent.ts b/packages/agent/src/adapters/claude/claude-agent.ts index 14974dd3c6..0a9842dee7 100644 --- a/packages/agent/src/adapters/claude/claude-agent.ts +++ b/packages/agent/src/adapters/claude/claude-agent.ts @@ -2252,6 +2252,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent { settingsManager.getSettings().model, meta?.model, ]); + modelOptions.currentModelId = resolvedModelId; session.modelId = resolvedModelId; session.lastContextWindowSize = this.getContextWindowForModel(resolvedModelId);