From 29b99b21f783ad3f0d227e31f6b43013ef280d4d Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Thu, 2 Apr 2026 15:02:28 +0900 Subject: [PATCH] fix(tools): extract stream stop helpers Resolves clippy::too_many_lines in tools/lib.rs. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- rust/crates/tools/src/lib.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/rust/crates/tools/src/lib.rs b/rust/crates/tools/src/lib.rs index 7e26d2d..797350c 100644 --- a/rust/crates/tools/src/lib.rs +++ b/rust/crates/tools/src/lib.rs @@ -1902,19 +1902,11 @@ impl ApiClient for ProviderRuntimeClient { push_prompt_cache_record(&self.client, &mut events); - if !saw_stop - && events.iter().any(|event| { - matches!(event, AssistantEvent::TextDelta(text) if !text.is_empty()) - || matches!(event, AssistantEvent::ToolUse { .. }) - }) - { + if should_append_message_stop(&events, saw_stop) { events.push(AssistantEvent::MessageStop); } - if events - .iter() - .any(|event| matches!(event, AssistantEvent::MessageStop)) - { + if has_message_stop(&events) { return Ok(events); } @@ -1933,6 +1925,20 @@ impl ApiClient for ProviderRuntimeClient { } } +fn should_append_message_stop(events: &[AssistantEvent], saw_stop: bool) -> bool { + !saw_stop + && events.iter().any(|event| { + matches!(event, AssistantEvent::TextDelta(text) if !text.is_empty()) + || matches!(event, AssistantEvent::ToolUse { .. }) + }) +} + +fn has_message_stop(events: &[AssistantEvent]) -> bool { + events + .iter() + .any(|event| matches!(event, AssistantEvent::MessageStop)) +} + struct SubagentToolExecutor { allowed_tools: BTreeSet, }