goose2 session working dir (#8624)

This commit is contained in:
Lifei Zhou
2026-04-18 04:50:37 +10:00
committed by GitHub
parent d52cde3fb9
commit 2533765359
24 changed files with 448 additions and 257 deletions
@@ -2,12 +2,9 @@ import { describe, expect, it } from "vitest";
import {
buildProjectSystemPrompt,
composeSystemPrompt,
defaultArtifactsDir,
getProjectArtifactRoots,
getProjectFolderName,
getProjectFolderOption,
resolveEffectiveWorkingDir,
resolveProjectWorkingDir,
} from "./chatProjectContext";
describe("chatProjectContext", () => {
@@ -111,84 +108,4 @@ describe("chatProjectContext", () => {
"/Users/wesb/dev/other/artifacts",
]);
});
it("resolves the first working directory to an artifacts subfolder", () => {
expect(
resolveProjectWorkingDir({
workingDirs: ["/Users/wesb/dev/goose2", "/Users/wesb/dev/other"],
artifactsDir: "/Users/wesb/.goose/projects/goose2/artifacts",
}),
).toBe("/Users/wesb/dev/goose2/artifacts");
});
it("falls back to the project artifacts dir when no working dirs exist", () => {
expect(
resolveProjectWorkingDir({
workingDirs: [],
artifactsDir: "/Users/wesb/.goose/projects/sample-project/artifacts",
}),
).toBe("/Users/wesb/.goose/projects/sample-project/artifacts");
});
describe("defaultArtifactsDir", () => {
it("normalises path separators and appends .goose/artifacts", () => {
expect(defaultArtifactsDir("/Users/wesb")).toBe(
"/Users/wesb/.goose/artifacts",
);
});
it("normalises backslashes on Windows-style paths", () => {
expect(defaultArtifactsDir("C:\\Users\\wesb\\")).toBe(
"C:/Users/wesb/.goose/artifacts",
);
});
it("strips trailing slashes", () => {
expect(defaultArtifactsDir("/Users/wesb/")).toBe(
"/Users/wesb/.goose/artifacts",
);
});
});
describe("resolveEffectiveWorkingDir", () => {
it("returns the project working dir without requiring homeDir", () => {
expect(
resolveEffectiveWorkingDir({
workingDirs: ["/Users/wesb/dev/goose2"],
artifactsDir: "/Users/wesb/.goose/projects/goose2/artifacts",
}),
).toBe("/Users/wesb/dev/goose2/artifacts");
});
it("returns the project working dir when available", () => {
expect(
resolveEffectiveWorkingDir(
{
workingDirs: ["/Users/wesb/dev/goose2"],
artifactsDir: "/Users/wesb/.goose/projects/goose2/artifacts",
},
"/Users/wesb",
),
).toBe("/Users/wesb/dev/goose2/artifacts");
});
it("returns undefined when a project exists but has no working dirs", () => {
expect(
resolveEffectiveWorkingDir(
{ workingDirs: [], artifactsDir: "" },
"/Users/wesb",
),
).toBeUndefined();
});
it("falls back to home artifacts dir when no project", () => {
expect(resolveEffectiveWorkingDir(null, "/Users/wesb")).toBe(
"/Users/wesb/.goose/artifacts",
);
});
it("does not resolve a non-project fallback without homeDir", () => {
expect(resolveEffectiveWorkingDir(null)).toBeUndefined();
});
});
});