Add persistent local agent tools

This commit is contained in:
Georg Bauer
2026-07-25 14:57:17 +02:00
parent 668d8b787e
commit 4a45735072
20 changed files with 3139 additions and 37 deletions

View File

@@ -57,7 +57,13 @@ impl App {
} else {
let markdown_style = markdown::Style::from_palette(app_theme().palette());
for (index, message) in self.conversation.iter().enumerate() {
let label = if message.user { "You" } else { "DS4" };
let label = if message.user {
"You"
} else if message.tool {
"Tool"
} else {
"DS4"
};
let active = self.generating && index + 1 == self.conversation.len();
let mut body = column![text(label).size(11)].spacing(5);
if let Some(reasoning) = &message.reasoning {
@@ -89,11 +95,11 @@ impl App {
}
}
if !message.content.is_empty() {
if message.user || message.markdown.is_empty() {
if message.user || message.tool || message.markdown.is_empty() {
let content = if message.reasoning.is_some() {
message.content.trim_start()
crate::agent::visible_content(&message.content).trim_start()
} else {
&message.content
crate::agent::visible_content(&message.content)
};
body = body.push(text(content).size(14));
} else {
@@ -109,6 +115,14 @@ impl App {
} else if active && message.reasoning.is_none() {
body = body.push(text("Loading model…").size(14));
}
if !message.user
&& !message.tool
&& let Some(model) = ModelChoice::from_id(&self.preferences.selected_model)
{
for summary in crate::agent::tool_summaries(model, &message.content) {
body = body.push(text(summary).size(13).color(muted_text()));
}
}
let user = message.user;
messages = messages.push(
container(body)