From d622e596a14338771bdd43a8812ff7fc02f7ebe8 Mon Sep 17 00:00:00 2001
From: Matias <1847940+matias-casal@users.noreply.github.com>
Date: Wed, 16 Jul 2025 00:35:58 -0300
Subject: feat(cli): clear input buffer on CTRL+C when not executing commands
 (#1729)

Co-authored-by: Scott Densmore <scottdensmore@mac.com>
---
 .../cli/src/ui/components/InputPrompt.test.tsx     | 26 ++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'packages/cli/src/ui/components/InputPrompt.test.tsx')

diff --git a/packages/cli/src/ui/components/InputPrompt.test.tsx b/packages/cli/src/ui/components/InputPrompt.test.tsx
index 53a2cb0e..e1d68125 100644
--- a/packages/cli/src/ui/components/InputPrompt.test.tsx
+++ b/packages/cli/src/ui/components/InputPrompt.test.tsx
@@ -543,4 +543,30 @@ describe('InputPrompt', () => {
     expect(props.buffer.newline).toHaveBeenCalled();
     unmount();
   });
+
+  it('should clear the buffer on Ctrl+C if it has text', async () => {
+    props.buffer.setText('some text to clear');
+    const { stdin, unmount } = render(<InputPrompt {...props} />);
+    await wait();
+
+    stdin.write('\x03'); // Ctrl+C character
+    await wait();
+
+    expect(props.buffer.setText).toHaveBeenCalledWith('');
+    expect(mockCompletion.resetCompletionState).toHaveBeenCalled();
+    expect(props.onSubmit).not.toHaveBeenCalled();
+    unmount();
+  });
+
+  it('should NOT clear the buffer on Ctrl+C if it is empty', async () => {
+    props.buffer.text = '';
+    const { stdin, unmount } = render(<InputPrompt {...props} />);
+    await wait();
+
+    stdin.write('\x03'); // Ctrl+C character
+    await wait();
+
+    expect(props.buffer.setText).not.toHaveBeenCalled();
+    unmount();
+  });
 });
-- 
cgit v1.2.3

