summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/config/input.rs1
-rw-r--r--src/config/mod.rs2
-rw-r--r--src/config/session.rs8
3 files changed, 9 insertions, 2 deletions
diff --git a/src/config/input.rs b/src/config/input.rs
index e2cce21..5c4e0e6 100644
--- a/src/config/input.rs
+++ b/src/config/input.rs
@@ -189,6 +189,7 @@ impl Input {
self.role = role;
}
self.regenerate = true;
+ self.tool_calls = None;
}
pub async fn use_embeddings(&mut self, abort_signal: AbortSignal) -> Result<()> {
diff --git a/src/config/mod.rs b/src/config/mod.rs
index 04ae4ef..242826b 100644
--- a/src/config/mod.rs
+++ b/src/config/mod.rs
@@ -2051,7 +2051,7 @@ impl Config {
output: &str,
tool_results: &[ToolResult],
) -> Result<()> {
- if output.is_empty() || !tool_results.is_empty() {
+ if !tool_results.is_empty() {
return Ok(());
}
self.last_message = Some(LastMessage::new(input.clone(), output.to_string()));
diff --git a/src/config/session.rs b/src/config/session.rs
index f3a86de..3f24289 100644
--- a/src/config/session.rs
+++ b/src/config/session.rs
@@ -515,7 +515,13 @@ impl Session {
if input.continue_output().is_some() {
return messages;
} else if input.regenerate() {
- messages.pop();
+ while let Some(last) = messages.last() {
+ if !last.role.is_user() {
+ messages.pop();
+ } else {
+ break;
+ }
+ }
return messages;
}
let mut need_add_msg = true;