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
78 lines
2.5 KiB
Rust
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
|
|
}
|
|
}
|