T24f Agent: control and cost

HumanInputRequest asks a question with answers to pick and a line to
write one; CostBreakdown totals a session and splits it by part.
InterruptButton, TokenUsageChart, TraceViewer and EvalResultTable
point to chat::stop_button, a stacked BarChart, TimelineProfiler and
DataTable.

UsageBar shows amounts as its owner writes them. MemoryPanel and
HumanInputRequest share agent::line::send_line; the chapter's bool
callbacks take forms::OnFlag.

DataTable scrolls columns wider than its box sideways, pinned or not,
and leaves a plain wheel to the page; sortable headers are Tab stops.
TimelineProfiler fits its ruler to its lane, its spans are Tab stops,
and a picked span takes accent.
This commit is contained in:
ZacharyZhang-NY committed 2026-09-26 11:39:24 -04:00
1 parent 96c4fe01a6
commit a29cc8bc45
20 files changed
+934 -180

No files matched your search

+2 -3
View File
@@ -8,13 +8,12 @@ use gpui::{
use crate::{
buttons::{Button, ButtonVariant},
chat::CodeBlock,
forms::OnFlag,
overlays::Dialog,
primitives::{Icon, IconName},
theme::{ActiveTheme, IconSize, Radius, TextSize},
};
type OnAnswer = Rc<dyn Fn(bool, &mut Window, &mut App)>;
/// Asks before a tool runs: what it will do and its arguments, then Deny or Run. Escape, the scrim and Deny refuse it. Render it while the call waits.
#[derive(IntoElement)]
pub struct ToolApprovalDialog {
@@ -22,7 +21,7 @@ pub struct ToolApprovalDialog {
tool: SharedString,
arguments: SharedString,
detail: Option<SharedString>,
on_answer: OnAnswer,
on_answer: OnFlag,
}
impl ToolApprovalDialog {