summaryrefslogtreecommitdiffstats
path: root/src/client
diff options
context:
space:
mode:
Diffstat (limited to 'src/client')
-rw-r--r--src/client/common.rs14
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();