diff options
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(); |
