From 3085c6fad4770a355d015dc6674139719ce218d7 Mon Sep 17 00:00:00 2001 From: Agus Zubiaga Date: Mon, 11 Aug 2025 13:22:35 -0300 Subject: [PATCH] Checkpoint: Defining MessageContent --- crates/agent2/src/thread.rs | 53 ++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/crates/agent2/src/thread.rs b/crates/agent2/src/thread.rs index dd8e5476ab..55ac548fd8 100644 --- a/crates/agent2/src/thread.rs +++ b/crates/agent2/src/thread.rs @@ -10,8 +10,9 @@ use futures::{ stream::FuturesUnordered, }; use gpui::{App, Context, Entity, SharedString, Task}; +use language::Rope; use language_model::{ - LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, + LanguageModel, LanguageModelCompletionError, LanguageModelCompletionEvent, LanguageModelImage, LanguageModelRequest, LanguageModelRequestMessage, LanguageModelRequestTool, LanguageModelToolResult, LanguageModelToolResultContent, LanguageModelToolSchemaFormat, LanguageModelToolUse, LanguageModelToolUseId, MessageContent, Role, StopReason, @@ -31,6 +32,56 @@ pub struct AgentMessage { pub content: Vec, } +enum MessageContent { + Text(String), + Thinking { + text: String, + signature: Option, + }, + File { + path: PathBuf, + content: Rope, + }, + Symbol { + name: String, + path: PathBuf, + content: Rope, + }, + Thread { + name: String, + content: String, + }, + Rule { + name: String, + content: String, + }, + RedactedThinking(String), + Image(LanguageModelImage), + ToolUse(LanguageModelToolUse), + ToolResult(LanguageModelToolResult), +} + +impl Into for MessageContent { + fn into(self) -> language_model::MessageContent { + match self { + MessageContent::Text(text) => language_model::MessageContent::Text(text), + MessageContent::Thinking { data, signature } => todo!(), + MessageContent::File { path, content } => todo!(), + MessageContent::Symbol { name } => todo!(), + MessageContent::Thread { name, content } => todo!(), + MessageContent::Rule { name, content } => todo!(), + MessageContent::RedactedThinking(text) => { + language_model::MessageContent::RedactedThinking(text) + } + MessageContent::Image(image) => language_model::MessageContent::Image(image), + MessageContent::ToolUse(tool_use) => language_model::MessageContent::ToolUse(tool_use), + MessageContent::ToolResult(tool_result) => { + language_model::MessageContent::ToolResult(tool_result) + } + } + } +} + impl AgentMessage { pub fn to_markdown(&self) -> String { let mut markdown = format!("## {}\n", self.role);