fix(agents): guard against undefined path in context file entries (#14903)
Merged via /review-pr -> /prepare-pr -> /merge-pr. Prepared head SHA: 25856b863d62eda20720db53fea43cbf213b5cc5 Co-authored-by: 0xRaini <190923101+0xRaini@users.noreply.github.com> Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com> Reviewed-by: @gumadeiras
This commit is contained in:
@@ -301,6 +301,23 @@ describe("buildAgentSystemPrompt", () => {
|
||||
expect(prompt).toContain("Bravo");
|
||||
});
|
||||
|
||||
it("ignores context files with missing or blank paths", () => {
|
||||
const prompt = buildAgentSystemPrompt({
|
||||
workspaceDir: "/tmp/openclaw",
|
||||
contextFiles: [
|
||||
{ path: undefined as unknown as string, content: "Missing path" },
|
||||
{ path: " ", content: "Blank path" },
|
||||
{ path: "AGENTS.md", content: "Alpha" },
|
||||
],
|
||||
});
|
||||
|
||||
expect(prompt).toContain("# Project Context");
|
||||
expect(prompt).toContain("## AGENTS.md");
|
||||
expect(prompt).toContain("Alpha");
|
||||
expect(prompt).not.toContain("Missing path");
|
||||
expect(prompt).not.toContain("Blank path");
|
||||
});
|
||||
|
||||
it("adds SOUL guidance when a soul file is present", () => {
|
||||
const prompt = buildAgentSystemPrompt({
|
||||
workspaceDir: "/tmp/openclaw",
|
||||
|
||||
@@ -550,8 +550,11 @@ export function buildAgentSystemPrompt(params: {
|
||||
}
|
||||
|
||||
const contextFiles = params.contextFiles ?? [];
|
||||
if (contextFiles.length > 0) {
|
||||
const hasSoulFile = contextFiles.some((file) => {
|
||||
const validContextFiles = contextFiles.filter(
|
||||
(file) => typeof file.path === "string" && file.path.trim().length > 0,
|
||||
);
|
||||
if (validContextFiles.length > 0) {
|
||||
const hasSoulFile = validContextFiles.some((file) => {
|
||||
const normalizedPath = file.path.trim().replace(/\\/g, "/");
|
||||
const baseName = normalizedPath.split("/").pop() ?? normalizedPath;
|
||||
return baseName.toLowerCase() === "soul.md";
|
||||
@@ -563,7 +566,7 @@ export function buildAgentSystemPrompt(params: {
|
||||
);
|
||||
}
|
||||
lines.push("");
|
||||
for (const file of contextFiles) {
|
||||
for (const file of validContextFiles) {
|
||||
lines.push(`## ${file.path}`, "", file.content, "");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user