From 8832484272002b4f0f23333523b360ee967b6be9 Mon Sep 17 00:00:00 2001 From: sigoden Date: Fri, 4 Jul 2025 07:34:44 +0800 Subject: feat: enhence `.regenerate` (#1340) --- src/config/input.rs | 1 + src/config/mod.rs | 2 +- src/config/session.rs | 8 +++++++- 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; -- cgit v1.2.3