diff options
| author | sigoden <sigoden@gmail.com> | 2024-10-29 14:31:04 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 14:31:04 +0800 |
| commit | 740f4060f1272063ec89f2b93ed334d3ed1cbfe4 (patch) | |
| tree | 7afe796777841202e14cb636ca49c956ad3e70f1 /src/client/common.rs | |
| parent | bf07cdf256e1e3008578972f5916a4d6763554f5 (diff) | |
| download | aichat-740f4060f1272063ec89f2b93ed334d3ed1cbfe4.tar.gz | |
fix: unexpected Ctrl-C/Ctrl-D handling in non-stream REPL Chat (#957)
Diffstat (limited to 'src/client/common.rs')
| -rw-r--r-- | src/client/common.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/client/common.rs b/src/client/common.rs index fe12593..1275d0b 100644 --- a/src/client/common.rs +++ b/src/client/common.rs @@ -403,9 +403,15 @@ pub async fn call_chat_completions( input: &Input, extract_code: bool, client: &dyn Client, + abort_signal: AbortSignal, ) -> Result<(String, Vec<ToolResult>)> { - let task = client.chat_completions(input.clone()); - let ret = run_with_spinner(task, "Generating").await; + let ret = abortable_run_with_spinner( + client.chat_completions(input.clone()), + "Generating", + abort_signal, + ) + .await; + match ret { Ok(ret) => { let ChatCompletionsOutput { @@ -438,6 +444,10 @@ pub async fn call_chat_completions_streaming( render_stream(rx, client.global_config(), abort_signal.clone()), ); + if handler.abort().aborted() { + bail!("Aborted."); + } + render_ret?; let (text, tool_calls) = handler.take(); |
