fix(ai): use wrench for orchestrated tool cards

This commit is contained in:
Fini 2026-06-01 02:31:56 +08:00
parent 8a074595d7
commit a9ecb1e6fb
4 changed files with 24 additions and 1 deletions

View file

@ -58,7 +58,7 @@ impl ToolLevel {
Self::Create => Icon::Plus,
Self::Modify => Icon::Pencil,
Self::Delete => Icon::Trash,
Self::Orchestrate => Icon::Settings,
Self::Orchestrate => Icon::Wrench,
}
}
}
@ -533,3 +533,15 @@ fn draw_line(
);
cx.backend.draw_text(&layout, Point2D::new(x, baseline_y));
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn orchestrate_tool_level_uses_ts_wrench_icon() {
let wrench = Icon::from_name("wrench").expect("wrench icon should be available");
assert_eq!(ToolLevel::Orchestrate.icon(), wrench);
}
}

View file

@ -154,6 +154,8 @@ pub enum Icon {
Image,
/// Lucide `settings.svg` — used for the System settings tab.
Settings,
/// Lucide `wrench.svg` — used for delegated/orchestrated tool cards.
Wrench,
/// Lucide `save.svg` — file save / save-as menu rows.
Save,
/// Lucide `download.svg` — export image menu row.
@ -307,6 +309,7 @@ impl Icon {
Icon::Terminal => TERMINAL,
Icon::Image => IMAGE,
Icon::Settings => SETTINGS,
Icon::Wrench => WRENCH,
Icon::Save => SAVE,
Icon::Download => DOWNLOAD,
Icon::FileText => FILE_TEXT,
@ -402,6 +405,7 @@ impl Icon {
"user" | "person" => Icon::User,
"search" => Icon::Search,
"settings" => Icon::Settings,
"wrench" | "tool" => Icon::Wrench,
"image" | "image-icon" => Icon::Image,
"github" => Icon::Github,
"globe" => Icon::Globe,

View file

@ -709,3 +709,8 @@ pub(super) const MILESTONE: &[&str] = &[
"M12 3v3",
"M4 6a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h13a2 2 0 0 0 1.152-.365l3.424-2.317a1 1 0 0 0 0-1.635l-3.424-2.318A2 2 0 0 0 17 6z",
];
/// lucide `wrench` — used by TS for delegated/orchestrated tool cards.
pub(super) const WRENCH: &[&str] = &[
"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94z",
];

View file

@ -102,6 +102,7 @@ fn every_variant_paints_at_least_one_primitive() {
Icon::Unlink,
Icon::Check,
Icon::ArrowUpRight,
Icon::Wrench,
] {
let b = paint_one(icon);
assert!(b.paths > 0, "{:?} drew nothing", icon);
@ -152,6 +153,7 @@ fn first_party_icon_font_names_all_resolve() {
"focus",
"chart-line",
"settings-2",
"wrench",
] {
assert!(
Icon::from_name(name).is_some(),