From 098e5c281c39ff2ec43534f93af3acebcd185cdf Mon Sep 17 00:00:00 2001 From: bl-ue <54780737+bl-ue@users.noreply.github.com> Date: Tue, 25 Nov 2025 10:53:17 -0700 Subject: [PATCH] fix(resume): allow passing a prompt via stdin while resuming using --resume (#13520) --- packages/cli/src/config/config.test.ts | 28 +++----------------------- packages/cli/src/config/config.ts | 5 ----- 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/packages/cli/src/config/config.test.ts b/packages/cli/src/config/config.test.ts index a8d0493691..3e66fcebbf 100644 --- a/packages/cli/src/config/config.test.ts +++ b/packages/cli/src/config/config.test.ts @@ -435,37 +435,15 @@ describe('parseArguments', () => { debugErrorSpy.mockRestore(); }); - it('should throw an error when resuming a session without prompt in non-interactive mode', async () => { + it('should allow resuming a session without prompt argument in non-interactive mode (expecting stdin)', async () => { const originalIsTTY = process.stdin.isTTY; process.stdin.isTTY = false; process.argv = ['node', 'script.js', '--resume', 'session-id']; - const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => { - throw new Error('process.exit called'); - }); - - const mockConsoleError = vi - .spyOn(console, 'error') - .mockImplementation(() => {}); - const debugErrorSpy = vi - .spyOn(debugLogger, 'error') - .mockImplementation(() => {}); - try { - await expect(parseArguments({} as Settings)).rejects.toThrow( - 'process.exit called', - ); - - expect(debugErrorSpy).toHaveBeenCalledWith( - expect.stringContaining( - 'When resuming a session, you must provide a message via --prompt (-p) or stdin', - ), - ); - expect(mockConsoleError).toHaveBeenCalled(); + const argv = await parseArguments({} as Settings); + expect(argv.resume).toBe('session-id'); } finally { - mockExit.mockRestore(); - mockConsoleError.mockRestore(); - debugErrorSpy.mockRestore(); process.stdin.isTTY = originalIsTTY; } }); diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index c4b0fd4f63..4ca14e4dc6 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -262,11 +262,6 @@ export async function parseArguments(settings: Settings): Promise { if (argv['prompt'] && argv['promptInteractive']) { return 'Cannot use both --prompt (-p) and --prompt-interactive (-i) together'; } - if (argv['resume'] && !argv['prompt'] && !process.stdin.isTTY) { - throw new Error( - 'When resuming a session, you must provide a message via --prompt (-p) or stdin', - ); - } if (argv['yolo'] && argv['approvalMode']) { return 'Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.'; }