fix(coding-agent): handle frontmatter prompts in print mode
closes #4163
This commit is contained in:
@@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed `pi -p` treating prompts that start with YAML frontmatter as extension flags instead of user messages ([#4163](https://github.com/badlogic/pi-mono/issues/4163)).
|
||||||
|
|
||||||
## [0.73.0] - 2026-05-04
|
## [0.73.0] - 2026-05-04
|
||||||
|
|
||||||
### New Features
|
### New Features
|
||||||
|
|||||||
@@ -122,6 +122,11 @@ export function parseArgs(args: string[]): Args {
|
|||||||
}
|
}
|
||||||
} else if (arg === "--print" || arg === "-p") {
|
} else if (arg === "--print" || arg === "-p") {
|
||||||
result.print = true;
|
result.print = true;
|
||||||
|
const next = args[i + 1];
|
||||||
|
if (next !== undefined && !next.startsWith("@") && (!next.startsWith("-") || next.startsWith("---"))) {
|
||||||
|
result.messages.push(next);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
} else if (arg === "--export" && i + 1 < args.length) {
|
} else if (arg === "--export" && i + 1 < args.length) {
|
||||||
result.export = args[++i];
|
result.export = args[++i];
|
||||||
} else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
|
} else if ((arg === "--extension" || arg === "-e") && i + 1 < args.length) {
|
||||||
|
|||||||
@@ -43,6 +43,21 @@ describe("parseArgs", () => {
|
|||||||
const result = parseArgs(["-p"]);
|
const result = parseArgs(["-p"]);
|
||||||
expect(result.print).toBe(true);
|
expect(result.print).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("parses prompt after -p even when it starts with YAML frontmatter", () => {
|
||||||
|
const prompt = "---\ntitle: hello\n---\nSay hi.";
|
||||||
|
const result = parseArgs(["-p", prompt]);
|
||||||
|
expect(result.print).toBe(true);
|
||||||
|
expect(result.messages).toEqual([prompt]);
|
||||||
|
expect(result.unknownFlags.size).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("does not consume options after -p as prompts", () => {
|
||||||
|
const result = parseArgs(["-p", "--provider", "openai", "Say hi."]);
|
||||||
|
expect(result.print).toBe(true);
|
||||||
|
expect(result.provider).toBe("openai");
|
||||||
|
expect(result.messages).toEqual(["Say hi."]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("--continue flag", () => {
|
describe("--continue flag", () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user