From 2ff52bf873cdab7c587c4ec1b1e8fb5402e91ac7 Mon Sep 17 00:00:00 2001 From: Aleksandr Date: Sat, 14 Feb 2026 11:07:35 +0500 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20cli:=20fallback=20promptYesNo=20to?= =?UTF-8?q?=20default=20on=20invalid=20input?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/agentplane/src/cli/prompts.test.ts | 8 ++++++++ packages/agentplane/src/cli/prompts.ts | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/agentplane/src/cli/prompts.test.ts b/packages/agentplane/src/cli/prompts.test.ts index 97d5a1ba..86d412e2 100644 --- a/packages/agentplane/src/cli/prompts.test.ts +++ b/packages/agentplane/src/cli/prompts.test.ts @@ -62,6 +62,14 @@ describe("cli/prompts", () => { await expect(promptYesNo("Continue", true)).resolves.toBe(false); }); + it("promptYesNo falls back to default for invalid input", async () => { + mocks.state.nextAnswer = "definitely"; + await expect(promptYesNo("Continue", true)).resolves.toBe(true); + + mocks.state.nextAnswer = "definitely"; + await expect(promptYesNo("Continue", false)).resolves.toBe(false); + }); + it("promptInput trims input", async () => { mocks.state.nextAnswer = " hello "; diff --git a/packages/agentplane/src/cli/prompts.ts b/packages/agentplane/src/cli/prompts.ts index 0c2cef86..1fa320bc 100644 --- a/packages/agentplane/src/cli/prompts.ts +++ b/packages/agentplane/src/cli/prompts.ts @@ -25,7 +25,10 @@ export async function promptYesNo(prompt: string, defaultValue: boolean): Promis rl.close(); const trimmed = answer.trim().toLowerCase(); if (!trimmed) return defaultValue; - return ["y", "yes", "true", "1", "on"].includes(trimmed); + + if (["y", "yes", "true", "1", "on"].includes(trimmed)) return true; + if (["n", "no", "false", "0", "off"].includes(trimmed)) return false; + return defaultValue; } export async function promptInput(prompt: string): Promise {