diff --git a/src/cli.ts b/src/cli.ts index 24a6c740d..08e1e0452 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -342,7 +342,7 @@ const modelsJsonPath = resolveModelsJsonPath() const modelRegistry = new ModelRegistry(authStorage, modelsJsonPath) markStartup('ModelRegistry') -const settingsManager = SettingsManager.create(agentDir) +const settingsManager = SettingsManager.create(process.cwd(), agentDir) applySecurityOverrides(settingsManager) markStartup('SettingsManager.create') diff --git a/src/tests/cli-onboarding-custom-provider.test.ts b/src/tests/cli-onboarding-custom-provider.test.ts new file mode 100644 index 000000000..3f7644d53 --- /dev/null +++ b/src/tests/cli-onboarding-custom-provider.test.ts @@ -0,0 +1,37 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { join } from "node:path"; +import { tmpdir } from "node:os"; + +import { SettingsManager } from "../../packages/pi-coding-agent/src/core/settings-manager.ts"; + +test("SettingsManager reads defaultProvider/defaultModel from the explicit agentDir used by CLI (#3860)", () => { + const root = mkdtempSync(join(tmpdir(), "gsd-cli-settings-")); + const cwd = join(root, "project"); + const agentDir = join(root, ".gsd", "agent"); + + try { + mkdirSync(cwd, { recursive: true }); + mkdirSync(agentDir, { recursive: true }); + writeFileSync( + join(agentDir, "settings.json"), + JSON.stringify({ + defaultProvider: "example-provider", + defaultModel: "gpt-5.4", + }), + "utf-8", + ); + + const settingsManager = SettingsManager.create(cwd, agentDir); + assert.equal(settingsManager.getDefaultProvider(), "example-provider"); + assert.equal(settingsManager.getDefaultModel(), "gpt-5.4"); + } finally { + rmSync(root, { recursive: true, force: true }); + } +}); + +test("cli.ts wires SettingsManager.create with both cwd and agentDir (#3860)", () => { + const cliSource = readFileSync(join(import.meta.dirname, "..", "cli.ts"), "utf-8"); + assert.match(cliSource, /SettingsManager\.create\(process\.cwd\(\),\s*agentDir\)/); +});