From e2e5c60496f1e363881250c2787dfbdaa7c94dce Mon Sep 17 00:00:00 2001 From: Dotta Date: Mon, 12 Oct 2026 18:29:28 -0500 Subject: [PATCH] fix(claude): use discovered runner in guided agent setup Co-Authored-By: Paperclip --- ui/src/components/new-agent/NewAgentSetup.tsx | 1 + ui/src/pages/NewAgent.test.tsx | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/ui/src/components/new-agent/NewAgentSetup.tsx b/ui/src/components/new-agent/NewAgentSetup.tsx index e2910f9be26..56ae564fb24 100644 --- a/ui/src/components/new-agent/NewAgentSetup.tsx +++ b/ui/src/components/new-agent/NewAgentSetup.tsx @@ -368,6 +368,7 @@ function Setup({ ...defaultCreateValues, adapterType, runner, + resolvedRunner: runner === "auto" ? defaultRunner : runner, model: model || (brandType === "codex_local" ? DEFAULT_CODEX_LOCAL_MODEL : ""), thinkingEffort: effort, diff --git a/ui/src/pages/NewAgent.test.tsx b/ui/src/pages/NewAgent.test.tsx index dcee1556eba..c4b294d12d6 100644 --- a/ui/src/pages/NewAgent.test.tsx +++ b/ui/src/pages/NewAgent.test.tsx @@ -200,6 +200,22 @@ afterEach(async () => { container.remove(); }); describe("New agent setup", () => { + it.each(["paperclip", "legacy", undefined] as const)("uses Claude's discovered %s default for Auto setup and hire", async (defaultRunner) => { + settings.getExperimental.mockResolvedValue({ enableNativeRunner: false }); + state.adapters = (state.adapters as any[]).map(adapter => adapter.type === "claude_local" + ? { ...adapter, supportedRunners: ["paperclip", "legacy"], defaultRunner } : adapter); + await render("claude_local"); + await connect("Claude"); + await click("Finish setup"); + expect(api.hire).toHaveBeenCalledTimes(1); + for (const config of [api.testEnvironment.mock.calls[0][2].adapterConfig, api.hire.mock.calls[0][1].adapterConfig]) { + if (defaultRunner === "paperclip") expect(config).not.toHaveProperty("maxTurnsPerRun"); + else expect(config.maxTurnsPerRun).toBe(1000); + expect(config).not.toHaveProperty("resolvedRunner"); + } + expect(api.hire.mock.calls[0][1]).not.toHaveProperty("runner"); + }); + it("records an explicit legacy choice when it matches the Windows default, then preserves it on Linux", async () => { settings.get.mockResolvedValue({ defaultEnvironmentId: "local-1" }); envApi.list.mockResolvedValue([