From eccae20a0a89e248923ed00d88ac19778dc3e879 Mon Sep 17 00:00:00 2001 From: xiaoski Date: Tue, 5 May 2026 00:09:00 +0800 Subject: [PATCH] feat: add ChatMessage::user_with_source and Session::create_user_message_with_source --- src/bus/message.rs | 14 ++++++++++++++ src/session/session.rs | 13 +++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/bus/message.rs b/src/bus/message.rs index be65d55..ded2b00 100644 --- a/src/bus/message.rs +++ b/src/bus/message.rs @@ -195,6 +195,20 @@ impl ChatMessage { source: None, } } + + pub fn user_with_source(content: impl Into, source: MessageSource) -> Self { + Self { + id: uuid::Uuid::new_v4().to_string(), + role: "user".to_string(), + content: content.into(), + media_refs: Vec::new(), + timestamp: current_timestamp(), + tool_call_id: None, + tool_name: None, + tool_calls: None, + source: Some(source), + } + } } // ============================================================================ diff --git a/src/session/session.rs b/src/session/session.rs index 6eb5ddc..f724c2a 100644 --- a/src/session/session.rs +++ b/src/session/session.rs @@ -251,6 +251,19 @@ impl Session { } } + pub fn create_user_message_with_source( + &self, + content: &str, + media_refs: Vec, + source: MessageSource, + ) -> ChatMessage { + if media_refs.is_empty() { + ChatMessage::user_with_source(content, source) + } else { + ChatMessage::user_with_source(content, source) + } + } + /// 将 session 元数据写回 Storage pub async fn persist_session_meta(&self) -> Result<(), StorageError> { if let Some(ref storage) = self.storage {