feat(coding-agent): Add sessionDir support in settings.json (#2598)

Users can now set sessionDir in global or project settings.json instead
of passing --session-dir on every invocation. CLI flag takes precedence,
then settings.json, then extension hooks.

Closes #2429

Co-authored-by: Sam Collins <81678+smcllns@users.noreply.github.com>
Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
This commit is contained in:
Sam
2026-03-25 16:03:36 -07:00
committed by GitHub
parent d38ad0cd6b
commit 2b1fc90cd7
4 changed files with 47 additions and 7 deletions

View File

@@ -288,4 +288,25 @@ describe("SettingsManager", () => {
expect(savedSettings.theme).toBe("light");
});
});
describe("getSessionDir", () => {
it("should return undefined when not set", () => {
writeFileSync(join(agentDir, "settings.json"), JSON.stringify({ theme: "dark" }));
const manager = SettingsManager.create(projectDir, agentDir);
expect(manager.getSessionDir()).toBeUndefined();
});
it("should return global sessionDir", () => {
writeFileSync(join(agentDir, "settings.json"), JSON.stringify({ sessionDir: "/tmp/sessions" }));
const manager = SettingsManager.create(projectDir, agentDir);
expect(manager.getSessionDir()).toBe("/tmp/sessions");
});
it("should return project sessionDir, overriding global", () => {
writeFileSync(join(agentDir, "settings.json"), JSON.stringify({ sessionDir: "/global/sessions" }));
writeFileSync(join(projectDir, ".pi", "settings.json"), JSON.stringify({ sessionDir: "./sessions" }));
const manager = SettingsManager.create(projectDir, agentDir);
expect(manager.getSessionDir()).toBe("./sessions");
});
});
});