Files
1jehuang--jcode/crates/jcode-app-core/src/agent/messages.rs
T
wehub-resource-sync a789495a98
FreeBSD Smoke / FreeBSD Smoke (x86_64) (push) Has been cancelled
CI / Quality Guardrails (push) Has been cancelled
CI / Build & Test (macos-latest) (push) Has been cancelled
CI / Build & Test (ubuntu-latest) (push) Has been cancelled
CI / Build & Test (windows-latest) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / PowerShell Syntax (push) Has been cancelled
CI / Windows Cross-Target Check (Linux) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:10:34 +08:00

78 lines
2.5 KiB
Rust

use super::*;
impl Agent {
pub(crate) fn add_message(&mut self, role: Role, content: Vec<ContentBlock>) -> String {
let id = self.session.add_message(role, content);
let compaction = self.registry.compaction();
if let Ok(mut manager) = compaction.try_write() {
if let Some(message) = self.session.messages.last() {
manager.notify_message_added_blocks(&message.content);
} else {
manager.notify_message_added();
}
}
id
}
pub(crate) fn add_message_with_display_role(
&mut self,
role: Role,
content: Vec<ContentBlock>,
display_role: Option<StoredDisplayRole>,
) -> String {
let id = self
.session
.add_message_with_display_role(role, content, display_role);
let compaction = self.registry.compaction();
if let Ok(mut manager) = compaction.try_write() {
if let Some(message) = self.session.messages.last() {
manager.notify_message_added_blocks(&message.content);
} else {
manager.notify_message_added();
}
}
id
}
pub(crate) fn add_message_with_duration(
&mut self,
role: Role,
content: Vec<ContentBlock>,
duration_ms: Option<u64>,
) -> String {
let id = self
.session
.add_message_with_duration(role, content, duration_ms);
let compaction = self.registry.compaction();
if let Ok(mut manager) = compaction.try_write() {
if let Some(message) = self.session.messages.last() {
manager.notify_message_added_blocks(&message.content);
} else {
manager.notify_message_added();
}
}
id
}
pub(crate) fn add_message_ext(
&mut self,
role: Role,
content: Vec<ContentBlock>,
duration_ms: Option<u64>,
token_usage: Option<crate::session::StoredTokenUsage>,
) -> String {
let id = self
.session
.add_message_ext(role, content, duration_ms, token_usage);
let compaction = self.registry.compaction();
if let Ok(mut manager) = compaction.try_write() {
if let Some(message) = self.session.messages.last() {
manager.notify_message_added_blocks(&message.content);
} else {
manager.notify_message_added();
}
}
id
}
}