From cb66275b28c7092809269f5c7ea46de4bc509d25 Mon Sep 17 00:00:00 2001 From: Michelle Tilley Date: Mon, 13 Apr 2026 14:49:05 -0700 Subject: fix: Thread remote and content_length through system for server tool calls (#3404) --- crates/atuin-ai/src/stream.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'crates/atuin-ai/src/stream.rs') diff --git a/crates/atuin-ai/src/stream.rs b/crates/atuin-ai/src/stream.rs index 4673f2cd..9c21fc05 100644 --- a/crates/atuin-ai/src/stream.rs +++ b/crates/atuin-ai/src/stream.rs @@ -40,6 +40,8 @@ pub(crate) enum StreamContent { tool_use_id: String, content: String, is_error: bool, + remote: bool, + content_length: Option, }, } @@ -179,7 +181,9 @@ fn create_chat_stream( let tool_use_id = json.get("tool_use_id").and_then(|v| v.as_str()).unwrap_or("").to_string(); let content = json.get("content").and_then(|v| v.as_str()).unwrap_or("").to_string(); let is_error = json.get("is_error").and_then(|v| v.as_bool()).unwrap_or(false); - yield Ok(StreamFrame::Content(StreamContent::ToolResult { tool_use_id, content, is_error })); + let remote = json.get("remote").and_then(|v| v.as_bool()).unwrap_or(false); + let content_length = json.get("content_length").and_then(|v| v.as_u64()).map(|v| v as usize); + yield Ok(StreamFrame::Content(StreamContent::ToolResult { tool_use_id, content, is_error, remote, content_length })); } } "status" => { @@ -299,6 +303,8 @@ fn apply_content_frame( id, format!("Tool not enabled: capability '{required_cap}' was not advertised by this client"), true, + false, + None, ); }); return; @@ -321,11 +327,17 @@ fn apply_content_frame( tool_use_id, content, is_error, + remote, + content_length, } => { handle.update(move |state| { - state - .conversation - .add_tool_result(tool_use_id, content, is_error); + state.conversation.add_tool_result( + tool_use_id, + content, + is_error, + remote, + content_length, + ); }); } } -- cgit v1.3.1