fix: allow continuing after interrupting assistant (#178)
## Description This PR fixes the issue where the CLI can't continue after interrupting the assistant with ESC ESC (Fixes #114). The problem was caused by duplicate code in the `cancel()` method and improper state reset after cancellation. ## Changes - Fixed duplicate code in the `cancel()` method of the `AgentLoop` class - Added proper reset of the `currentStream` property in the `cancel()` method - Created a new `AbortController` after aborting the current one to ensure future tool calls work - Added a system message to indicate the interruption to the user - Added a comprehensive test to verify the fix ## Benefits - Users can now continue using the CLI after interrupting the assistant - Improved user experience by providing feedback when interruption occurs - Better state management in the agent loop ## Testing - Added a dedicated test that verifies the agent can process new input after cancellation - Manually tested the fix by interrupting the assistant and confirming that new input is processed correctly --------- Signed-off-by: crazywolf132 <crazywolf132@gmail.com>
This commit is contained in:
@@ -308,6 +308,22 @@ export default function TerminalChat({
|
||||
}
|
||||
agent.cancel();
|
||||
setLoading(false);
|
||||
|
||||
// Add a system message to indicate the interruption
|
||||
setItems((prev) => [
|
||||
...prev,
|
||||
{
|
||||
id: `interrupt-${Date.now()}`,
|
||||
type: "message",
|
||||
role: "system",
|
||||
content: [
|
||||
{
|
||||
type: "input_text",
|
||||
text: "⏹️ Execution interrupted by user. You can continue typing.",
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
}}
|
||||
submitInput={(inputs) => {
|
||||
agent.run(inputs, lastResponseId || "");
|
||||
|
||||
Reference in New Issue
Block a user