diff --git a/core/tools/implementations/lsTool.ts b/core/tools/implementations/lsTool.ts index 8fc9a044e22..d4ef4e622b7 100644 --- a/core/tools/implementations/lsTool.ts +++ b/core/tools/implementations/lsTool.ts @@ -9,10 +9,6 @@ export function resolveLsToolDirPath(dirPath: string | undefined) { if (!dirPath || dirPath === ".") { return "."; } - // Don't strip leading slash from absolute paths - let the resolver handle it - if (dirPath.startsWith(".") && !dirPath.startsWith("./")) { - return dirPath.slice(1); - } return dirPath.replace(/\\/g, "/"); } diff --git a/core/tools/implementations/lsTool.vitest.ts b/core/tools/implementations/lsTool.vitest.ts index 7ec20682715..1b2fef32abd 100644 --- a/core/tools/implementations/lsTool.vitest.ts +++ b/core/tools/implementations/lsTool.vitest.ts @@ -36,6 +36,19 @@ test("resolveLsToolDirPath preserves forward slashes", () => { expect(resolveLsToolDirPath("path/to/dir")).toBe("path/to/dir"); }); +test("resolveLsToolDirPath preserves hidden directory paths", () => { + expect(resolveLsToolDirPath(".continue/rules")).toBe(".continue/rules"); +}); + +test("resolveLsToolDirPath preserves hidden directory name only", () => { + expect(resolveLsToolDirPath(".git")).toBe(".git"); +}); + +test("resolveLsToolDirPath preserves parent directory references", () => { + expect(resolveLsToolDirPath("..")).toBe(".."); + expect(resolveLsToolDirPath("../foo")).toBe("../foo"); +}); + test("lsToolImpl truncates output when entries exceed MAX_LS_TOOL_LINES", async () => { // Generate more than MAX_LS_TOOL_LINES entries (which is 200) const mockEntries = Array.from({ length: 250 }, (_, i) => `file${i}.txt`);