fix(coding-agent): merge piped stdin into initial prompt closes #2315

This commit is contained in:
Mario Zechner
2026-03-17 22:25:08 +01:00
parent 9fc11921e4
commit bbd8392ef9
4 changed files with 115 additions and 18 deletions

View File

@@ -0,0 +1,47 @@
import { describe, expect, test } from "vitest";
import type { Args } from "../src/cli/args.js";
import { buildInitialMessage } from "../src/cli/initial-message.js";
function createArgs(messages: string[] = []): Args {
return {
messages: [...messages],
fileArgs: [],
unknownFlags: new Map(),
};
}
describe("buildInitialMessage", () => {
test("merges piped stdin with the first CLI message into one prompt", () => {
const parsed = createArgs(["Summarize the text given"]);
const result = buildInitialMessage({
parsed,
stdinContent: "README contents\n",
});
expect(result.initialMessage).toBe("README contents\nSummarize the text given");
expect(parsed.messages).toEqual([]);
});
test("uses stdin as the initial prompt when no CLI message is present", () => {
const parsed = createArgs();
const result = buildInitialMessage({
parsed,
stdinContent: "README contents",
});
expect(result.initialMessage).toBe("README contents");
expect(parsed.messages).toEqual([]);
});
test("combines stdin, file text, and first CLI message in one prompt", () => {
const parsed = createArgs(["Explain it", "Second message"]);
const result = buildInitialMessage({
parsed,
stdinContent: "stdin\n",
fileText: "file\n",
});
expect(result.initialMessage).toBe("stdin\nfile\nExplain it");
expect(parsed.messages).toEqual(["Second message"]);
});
});