From bfff0e0707a0811f550602191c8cf5853825b0d0 Mon Sep 17 00:00:00 2001 From: leynos Date: Fri, 22 May 2026 20:38:40 +0200 Subject: [PATCH] Bundle builder tool-call payload (#42) Group the tool-call response fields behind a local parameter object so `handle_tool_calls` meets the builder argument-count guideline. Keep the refactor private to the build-loop module and preserve the existing control flow, log strings, and result shapes. --- src/tools/builder/core/build_loop.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/tools/builder/core/build_loop.rs b/src/tools/builder/core/build_loop.rs index 8491a7d9c..c1e33aa72 100644 --- a/src/tools/builder/core/build_loop.rs +++ b/src/tools/builder/core/build_loop.rs @@ -32,6 +32,11 @@ struct ReasoningBundle { ctx: ReasoningContext, } +struct ToolCallPayload { + tool_calls: Vec, + content: Option, +} + fn is_completion_signal(lower: &str) -> bool { COMPLETION_MARKERS .iter() @@ -231,18 +236,17 @@ impl LlmSoftwareBuilder { inputs: &BuildLoopParams, bundle: &mut ReasoningBundle, state: &mut BuildLoopState, - tool_calls: Vec, - content: Option, + payload: ToolCallPayload, ) { bundle .ctx .messages .push(ChatMessage::assistant_with_tool_calls( - content, - tool_calls.clone(), + payload.content, + payload.tool_calls.clone(), )); - for tc in tool_calls { + for tc in payload.tool_calls { state.logs.push(BuildLog { timestamp: Utc::now(), phase: state.current_phase, @@ -368,8 +372,16 @@ impl LlmSoftwareBuilder { content, } => { state.tools_executed = true; - self.handle_tool_calls(&inputs, &mut bundle, &mut state, tool_calls, content) - .await; + self.handle_tool_calls( + &inputs, + &mut bundle, + &mut state, + ToolCallPayload { + tool_calls, + content, + }, + ) + .await; } } }