@schlessera/brain-ui-react 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/activity/activity-page.d.ts.map +1 -1
- package/dist/components/activity/activity-page.js +48 -13
- package/dist/components/activity/activity-page.js.map +1 -1
- package/dist/components/activity/digest-card.d.ts.map +1 -1
- package/dist/components/activity/digest-card.js +5 -1
- package/dist/components/activity/digest-card.js.map +1 -1
- package/dist/components/activity/push-toggle.d.ts.map +1 -1
- package/dist/components/activity/push-toggle.js +39 -0
- package/dist/components/activity/push-toggle.js.map +1 -1
- package/dist/components/activity/span-bits.d.ts +48 -0
- package/dist/components/activity/span-bits.d.ts.map +1 -1
- package/dist/components/activity/span-bits.js +87 -3
- package/dist/components/activity/span-bits.js.map +1 -1
- package/dist/components/chat/subagent-view.js +8 -4
- package/dist/components/chat/subagent-view.js.map +1 -1
- package/dist/components/settings/models-tab.d.ts +15 -0
- package/dist/components/settings/models-tab.d.ts.map +1 -1
- package/dist/components/settings/models-tab.js +100 -21
- package/dist/components/settings/models-tab.js.map +1 -1
- package/dist/lib/api-client.d.ts +29 -2
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +14 -1
- package/dist/lib/api-client.js.map +1 -1
- package/dist/stores/activity-store.d.ts +15 -0
- package/dist/stores/activity-store.d.ts.map +1 -1
- package/dist/stores/activity-store.js +49 -0
- package/dist/stores/activity-store.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +2 -2
- package/src/components/activity/activity-page.tsx +158 -30
- package/src/components/activity/digest-card.tsx +5 -1
- package/src/components/activity/push-toggle.tsx +29 -0
- package/src/components/activity/span-bits.tsx +125 -2
- package/src/components/chat/subagent-view.tsx +33 -23
- package/src/components/settings/models-tab.tsx +135 -21
- package/src/lib/api-client.ts +38 -2
- package/src/stores/activity-store.ts +49 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-page.d.ts","sourceRoot":"","sources":["../../../src/components/activity/activity-page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"activity-page.d.ts","sourceRoot":"","sources":["../../../src/components/activity/activity-page.tsx"],"names":[],"mappings":"AA4CA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,gCAsQ3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useMemo, useState } from "react";
|
|
3
|
-
import { Activity as ActivityIcon, AlertTriangle, ArrowLeft, Bot, Clock, RefreshCw, Timer, } from "lucide-react";
|
|
3
|
+
import { Activity as ActivityIcon, AlertTriangle, ArrowLeft, Bot, ChevronRight, Clock, RefreshCw, Timer, } from "lucide-react";
|
|
4
4
|
import { useShallow } from "zustand/react/shallow";
|
|
5
5
|
import { isFailureOutcome } from "@schlessera/brain-ui-sdk/protocol";
|
|
6
6
|
import { api, } from "../../lib/api-client.js";
|
|
@@ -11,8 +11,9 @@ import { useChatStore } from "../../stores/chat-store.js";
|
|
|
11
11
|
import { useUIStore } from "../../stores/ui-store.js";
|
|
12
12
|
import { cn } from "../../lib/utils.js";
|
|
13
13
|
import { formatDuration, formatRelativeTime, formatTokenCount, } from "../chat/tool-views.js";
|
|
14
|
-
import { SpanStatusDot, spanToolLabel } from "./span-bits.js";
|
|
14
|
+
import { SpanPayload, SpanStatusDot, formatAggregateCost, formatEffectiveCost, runCostText, spanToolLabel, } from "./span-bits.js";
|
|
15
15
|
import { PushToggle } from "./push-toggle.js";
|
|
16
|
+
import { SettingsPanel } from "../settings/settings-panel.js";
|
|
16
17
|
/**
|
|
17
18
|
* The Activity surface: an INDEX of all agent activity — live runs first,
|
|
18
19
|
* then history — with cost/token rollups. Deliberately not a residence:
|
|
@@ -27,11 +28,15 @@ export function ActivityPage() {
|
|
|
27
28
|
const connectionEpoch = useActivityStore((s) => s.connectionEpoch);
|
|
28
29
|
const liveSpans = useActivityStore((s) => s.spans);
|
|
29
30
|
const setActiveView = useUIStore((s) => s.setActiveView);
|
|
31
|
+
const openSettings = useUIStore((s) => s.openSettings);
|
|
32
|
+
const settingsPanelOpen = useUIStore((s) => s.settingsPanelOpen);
|
|
33
|
+
const setSettingsPanelOpen = useUIStore((s) => s.setSettingsPanelOpen);
|
|
30
34
|
const setActiveSession = useChatStore((s) => s.setActiveSession);
|
|
31
35
|
const [runs, setRuns] = useState(null);
|
|
32
36
|
const [rollups, setRollups] = useState(null);
|
|
33
37
|
const [error, setError] = useState(null);
|
|
34
38
|
const [detailRunId, setDetailRunId] = useState(null);
|
|
39
|
+
const [pricingStale, setPricingStale] = useState(false);
|
|
35
40
|
const inbox = useActivityStore((s) => s.inbox);
|
|
36
41
|
const loadInbox = useActivityStore((s) => s.loadInbox);
|
|
37
42
|
const acknowledgeIntent = useActivityStore((s) => s.acknowledgeIntent);
|
|
@@ -42,6 +47,13 @@ export function ActivityPage() {
|
|
|
42
47
|
.then(setRuns)
|
|
43
48
|
.catch((err) => setError(err instanceof Error ? err.message : String(err)));
|
|
44
49
|
api.activityRollups(7).then(setRollups).catch(() => { });
|
|
50
|
+
// Surface the pricing warning only when the table is stale AND refreshes
|
|
51
|
+
// are failing — a merely-aging table heals itself. A rejection (including
|
|
52
|
+
// 404 from a server that predates the route) means no signal: stay quiet.
|
|
53
|
+
api
|
|
54
|
+
.pricingState()
|
|
55
|
+
.then((s) => setPricingStale(Boolean(s.stale && s.error)))
|
|
56
|
+
.catch(() => setPricingStale(false));
|
|
45
57
|
void loadInbox();
|
|
46
58
|
};
|
|
47
59
|
// Re-runs on every reconnect (connectionEpoch): the new socket has no
|
|
@@ -120,7 +132,7 @@ export function ActivityPage() {
|
|
|
120
132
|
if (detailRunId) {
|
|
121
133
|
return _jsx(RunDetail, { runId: detailRunId, onBack: () => showDetail(null) });
|
|
122
134
|
}
|
|
123
|
-
return (_jsxs("div", { className: "flex h-full flex-col overflow-y-auto", children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-border-subtle px-4 py-3", children: [_jsx(ActivityIcon, { className: "h-4 w-4 text-muted-foreground" }), _jsx("h1", { className: "text-sm font-medium", children: "Activity" }),
|
|
135
|
+
return (_jsxs("div", { className: "flex h-full flex-col overflow-y-auto", children: [_jsx(SettingsPanel, { open: settingsPanelOpen, onClose: () => setSettingsPanelOpen(false) }), _jsxs("div", { className: "flex items-center gap-2 border-b border-border-subtle px-4 py-3", children: [_jsx(ActivityIcon, { className: "h-4 w-4 text-muted-foreground" }), _jsx("h1", { className: "text-sm font-medium", children: "Activity" }), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [pricingStale && (_jsxs("button", { type: "button", onClick: () => openSettings("models"), className: "flex items-center gap-1 rounded-md p-1.5 text-amber-500 transition-colors hover:bg-surface-raised hover:text-amber-400", "aria-label": "Pricing refresh is failing \u2014 costs may use stale rates. Open Settings", title: "Pricing refresh is failing \u2014 costs may use stale rates. Open Settings", children: [_jsx(AlertTriangle, { className: "h-3.5 w-3.5" }), _jsx("span", { className: "hidden text-[10px] sm:inline", children: "Pricing stale" })] })), _jsx(PushToggle, {})] }), _jsx("button", { type: "button", onClick: refresh, className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-surface-raised hover:text-foreground", "aria-label": "Refresh", children: _jsx(RefreshCw, { className: "h-3.5 w-3.5" }) })] }), _jsxs("div", { className: "mx-auto w-full max-w-3xl space-y-6 p-4", children: [error && (_jsxs("p", { className: "text-xs text-destructive", children: ["Could not load activity: ", error] })), inbox.length > 0 && (_jsxs("section", { children: [_jsxs("div", { className: "mb-2 flex items-center", children: [_jsx("h2", { className: "text-xs font-medium uppercase tracking-wide text-muted-foreground", children: "Needs attention" }), _jsx("button", { type: "button", onClick: () => void acknowledgeAllIntents(), className: "ml-auto text-[11px] text-muted-foreground transition-colors hover:text-foreground", children: "Dismiss all" })] }), _jsx("div", { className: "space-y-1", children: inbox.map((intent) => (_jsxs("div", { className: cn("flex items-center gap-2 rounded-lg border px-3 py-2 text-xs", intent.kind === "failure"
|
|
124
136
|
? "border-destructive/30 bg-destructive/5"
|
|
125
137
|
: "border-border-subtle bg-surface"), children: [intent.kind === "failure" ? (_jsx(AlertTriangle, { className: "h-3.5 w-3.5 shrink-0 text-destructive" })) : intent.kind === "stuck" ? (_jsx(Timer, { className: "h-3.5 w-3.5 shrink-0 text-amber-500" })) : (_jsx(ActivityIcon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })), _jsx("button", { type: "button", className: "min-w-0 flex-1 truncate text-left hover:underline", onClick: () => {
|
|
126
138
|
void acknowledgeIntent(intent.id);
|
|
@@ -146,12 +158,20 @@ function RollupCards({ rollups }) {
|
|
|
146
158
|
runs: acc.runs + d.runs,
|
|
147
159
|
failures: acc.failures + d.failures,
|
|
148
160
|
costUsd: acc.costUsd + d.costUsd,
|
|
161
|
+
effectiveCostUsd: acc.effectiveCostUsd + (d.effectiveCostUsd ?? 0),
|
|
162
|
+
unpricedRuns: acc.unpricedRuns + (d.unpricedRuns ?? 0),
|
|
149
163
|
tokens: acc.tokens + d.inputTokens + d.outputTokens,
|
|
150
|
-
}), { runs: 0, failures: 0, costUsd: 0, tokens: 0 });
|
|
151
|
-
|
|
164
|
+
}), { runs: 0, failures: 0, costUsd: 0, effectiveCostUsd: 0, unpricedRuns: 0, tokens: 0 });
|
|
165
|
+
// A server that predates pricing omits the effective fields entirely; the
|
|
166
|
+
// card then keeps its single list-price number instead of claiming an
|
|
167
|
+
// effective $0.00 it never computed.
|
|
168
|
+
const hasEffective = rollups.days.some((d) => d.effectiveCostUsd !== undefined);
|
|
169
|
+
return (_jsxs("div", { className: "grid grid-cols-2 gap-2 sm:grid-cols-4", children: [_jsx(StatCard, { label: "Runs today", value: String(today?.runs ?? 0) }), _jsx(StatCard, { label: "Failures (7d)", value: String(week.failures), alert: week.failures > 0 }), _jsx(StatCard, { label: "Spend (7d)", value: hasEffective
|
|
170
|
+
? formatAggregateCost(week.effectiveCostUsd, week.unpricedRuns)
|
|
171
|
+
: `$${week.costUsd.toFixed(2)}`, secondary: hasEffective && (_jsxs(_Fragment, { children: ["list $", week.costUsd.toFixed(2), week.unpricedRuns > 0 && (_jsxs(_Fragment, { children: [_jsxs("span", { className: "hidden sm:inline", children: [" \u00B7 ", week.unpricedRuns, " unpriced"] }), _jsxs("span", { className: "sm:hidden", children: [" \u00B7 ", week.unpricedRuns, "?"] })] }))] })) }), _jsx(StatCard, { label: "Tokens (7d)", value: formatTokenCount(week.tokens) })] }));
|
|
152
172
|
}
|
|
153
|
-
function StatCard({ label, value, alert }) {
|
|
154
|
-
return (_jsxs("div", { className: "rounded-lg border border-border-subtle bg-surface p-3", children: [_jsx("div", { className: cn("text-lg font-semibold", alert && "text-destructive"), children: value }), _jsx("div", { className: "text-[11px] text-muted-foreground", children: label })] }));
|
|
173
|
+
function StatCard({ label, value, secondary, alert, }) {
|
|
174
|
+
return (_jsxs("div", { className: "rounded-lg border border-border-subtle bg-surface p-3", children: [_jsx("div", { className: cn("text-lg font-semibold", alert && "text-destructive"), children: value }), secondary && (_jsx("div", { className: "truncate text-[10px] text-muted-foreground/70", children: secondary })), _jsx("div", { className: "text-[11px] text-muted-foreground", children: label })] }));
|
|
155
175
|
}
|
|
156
176
|
function LiveRow({ span, onOpen, }) {
|
|
157
177
|
const children = useActivityStore(useShallow((s) => Object.values(s.spans[span.runId] ?? {}).filter((x) => x.parentSpanId)));
|
|
@@ -162,18 +182,27 @@ function LiveRow({ span, onOpen, }) {
|
|
|
162
182
|
}
|
|
163
183
|
function RunRow({ run, onOpen, }) {
|
|
164
184
|
const failed = isFailureOutcome(run.outcome);
|
|
165
|
-
|
|
185
|
+
// Effective cost only — list price lives on the Spend card and the detail
|
|
186
|
+
// view. "—" is unknown, never $0.00 (AE3); a pre-pricing server that never
|
|
187
|
+
// sent the field keeps the original list-cost span instead (see runCostText).
|
|
188
|
+
const cost = runCostText(run);
|
|
189
|
+
return (_jsxs("button", { type: "button", onClick: () => onOpen(run), className: cn("flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-xs transition-colors hover:bg-surface-raised", failed && "border border-destructive/30 bg-destructive/5"), children: [run.origin === "cron" ? (_jsx(Clock, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })) : (_jsx(Bot, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })), _jsx("span", { className: "truncate", children: run.jobName ?? run.name }), failed && _jsx(AlertTriangle, { className: "h-3 w-3 shrink-0 text-destructive" }), run.outcome && run.outcome !== "success" && (_jsx("span", { className: cn("text-[10px] uppercase", failed ? "text-destructive" : "text-muted-foreground"), children: run.outcome })), _jsxs("span", { className: "ml-auto flex shrink-0 items-center gap-2 font-[family-name:var(--font-mono)] text-[10px] text-muted-foreground/60", children: [cost !== null && _jsx("span", { children: cost }), run.durationMs !== null && (_jsxs("span", { className: "flex items-center gap-0.5", children: [_jsx(Timer, { className: "h-3 w-3" }), formatDuration(run.durationMs)] })), _jsx("span", { children: formatRelativeTime(run.startedAt) })] })] }));
|
|
166
190
|
}
|
|
167
191
|
/** Chat-less run detail (cron runs; pruned runs show their rollup). */
|
|
168
192
|
function RunDetail({ runId, onBack }) {
|
|
169
193
|
const streamed = useActivityStore(useShallow((s) => runSpans(s, runId)));
|
|
170
194
|
const applySnapshot = useActivityStore((s) => s.applySnapshot);
|
|
171
195
|
const [pruned, setPruned] = useState(null);
|
|
196
|
+
const [rollup, setRollup] = useState(null);
|
|
172
197
|
const [missing, setMissing] = useState(false);
|
|
173
198
|
useEffect(() => {
|
|
174
199
|
api
|
|
175
|
-
|
|
200
|
+
// Payload bodies are excluded from run detail by default; this view's
|
|
201
|
+
// rows expand to them, so opt in.
|
|
202
|
+
.activityRun(runId, { includePayloads: true })
|
|
176
203
|
.then((detail) => {
|
|
204
|
+
if (detail.rollup)
|
|
205
|
+
setRollup(detail.rollup);
|
|
177
206
|
if (detail.detailPruned) {
|
|
178
207
|
setPruned(detail.rollup ?? {});
|
|
179
208
|
}
|
|
@@ -190,9 +219,15 @@ function RunDetail({ runId, onBack }) {
|
|
|
190
219
|
})
|
|
191
220
|
.catch(() => setMissing(true));
|
|
192
221
|
}, [runId, applySnapshot]);
|
|
193
|
-
return (_jsxs("div", { className: "flex h-full flex-col overflow-y-auto", children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-border-subtle px-4 py-3", children: [_jsx("button", { type: "button", onClick: onBack, className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-surface-raised hover:text-foreground", "aria-label": "Back", children: _jsx(ArrowLeft, { className: "h-4 w-4" }) }), _jsx("h1", { className: "truncate text-sm font-medium", children: runId })] }), _jsxs("div", { className: "mx-auto w-full max-w-3xl space-y-1 p-4", children: [missing && _jsx("p", { className: "text-xs text-muted-foreground", children: "Unknown run." }),
|
|
194
|
-
|
|
195
|
-
|
|
222
|
+
return (_jsxs("div", { className: "flex h-full flex-col overflow-y-auto", children: [_jsxs("div", { className: "flex items-center gap-2 border-b border-border-subtle px-4 py-3", children: [_jsx("button", { type: "button", onClick: onBack, className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-surface-raised hover:text-foreground", "aria-label": "Back", children: _jsx(ArrowLeft, { className: "h-4 w-4" }) }), _jsx("h1", { className: "truncate text-sm font-medium", children: runId })] }), _jsxs("div", { className: "mx-auto w-full max-w-3xl space-y-1 p-4", children: [missing && _jsx("p", { className: "text-xs text-muted-foreground", children: "Unknown run." }), rollup && (_jsxs("div", { className: "mb-2 flex flex-wrap items-center gap-x-3 gap-y-0.5 rounded-lg border border-border-subtle bg-surface px-3 py-2 text-[11px] text-muted-foreground", children: [_jsxs("span", { children: ["list", " ", _jsx("span", { className: "font-[family-name:var(--font-mono)] text-foreground/80", children: formatEffectiveCost(rollup.costUsd) })] }), _jsxs("span", { children: ["effective", " ", _jsx("span", { className: "font-[family-name:var(--font-mono)] text-foreground/80", children: formatEffectiveCost(rollup.effectiveCostUsd, rollup.pricingEstimate) })] }), rollup.billingMode && (_jsx("span", { children: rollup.billingMode === "api" ? "API billed" : "subscription billed" })), rollup.pricingEstimate && _jsx("span", { children: "~ estimated rates" })] })), pruned && (_jsxs("div", { className: "rounded-lg border border-border-subtle bg-surface p-3 text-xs text-muted-foreground", children: ["Detail pruned \u2014 only the rollup remains.", _jsx("pre", { className: "mt-2 overflow-x-auto text-[11px]", children: JSON.stringify(pruned, null, 2) })] })), streamed.map((span) => (_jsx(DetailSpanRow, { span: span, depth: depthOf(span, streamed) }, span.spanId)))] })] }));
|
|
223
|
+
}
|
|
224
|
+
/** One span tree row; tool spans expand to their recorded payload (AE7). */
|
|
225
|
+
function DetailSpanRow({ span, depth }) {
|
|
226
|
+
const [expanded, setExpanded] = useState(false);
|
|
227
|
+
const expandable = span.kind === "tool";
|
|
228
|
+
return (_jsxs("div", { style: { paddingLeft: `${depth * 16}px` }, children: [_jsxs("div", { className: cn("flex items-center gap-2 text-xs text-muted-foreground", expandable && "cursor-pointer hover:text-foreground"), onClick: expandable ? () => setExpanded((v) => !v) : undefined, children: [_jsx(SpanStatusDot, { span: span }), _jsx("span", { className: "truncate font-[family-name:var(--font-mono)]", children: spanToolLabel(span) }), span.outcome && span.outcome !== "success" && (_jsx("span", { className: "text-[10px] uppercase", children: span.outcome })), span.outcomeReason && (_jsx("span", { className: "truncate text-[10px] text-muted-foreground/60", children: span.outcomeReason })), _jsx("span", { className: "ml-auto shrink-0 font-[family-name:var(--font-mono)] text-[10px] text-muted-foreground/50", children: span.endedAt !== undefined
|
|
229
|
+
? formatDuration(span.endedAt - span.startedAt)
|
|
230
|
+
: "…" }), expandable && (_jsx(ChevronRight, { className: cn("h-3 w-3 shrink-0 transition-transform", expanded && "rotate-90") }))] }), expanded && _jsx(SpanPayload, { spanId: span.spanId })] }));
|
|
196
231
|
}
|
|
197
232
|
function depthOf(span, all) {
|
|
198
233
|
let depth = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-page.js","sourceRoot":"","sources":["../../../src/components/activity/activity-page.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"activity-page.js","sourceRoot":"","sources":["../../../src/components/activity/activity-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-card.d.ts","sourceRoot":"","sources":["../../../src/components/activity/digest-card.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digest-card.d.ts","sourceRoot":"","sources":["../../../src/components/activity/digest-card.tsx"],"names":[],"mappings":"AAQA;;;;;;;GAOG;AACH,wBAAgB,UAAU,uCAoFzB"}
|
|
@@ -4,6 +4,7 @@ import { AlertTriangle, Newspaper, X } from "lucide-react";
|
|
|
4
4
|
import { api } from "../../lib/api-client.js";
|
|
5
5
|
import { useUIStore } from "../../stores/ui-store.js";
|
|
6
6
|
import { cn } from "../../lib/utils.js";
|
|
7
|
+
import { digestCostClause } from "./span-bits.js";
|
|
7
8
|
/**
|
|
8
9
|
* The while-you-were-away card: presented PROACTIVELY on app open when a
|
|
9
10
|
* fresh digest exists (planning decision — built passively, the flow
|
|
@@ -38,9 +39,12 @@ export function DigestCard() {
|
|
|
38
39
|
void api.activityDigestDismiss().catch(() => { });
|
|
39
40
|
}
|
|
40
41
|
const windowLabel = `${formatDay(digest.windowStart)} – ${formatDay(digest.windowEnd)}`;
|
|
42
|
+
// Effective-only spend clause; a digest persisted before pricing shipped
|
|
43
|
+
// falls back to its old list-cost clause inside the helper.
|
|
44
|
+
const costClause = digestCostClause(digest);
|
|
41
45
|
return (_jsxs("div", { className: cn("mx-auto mb-3 w-full max-w-2xl rounded-xl border p-3 text-xs", digest.failures > 0
|
|
42
46
|
? "border-destructive/30 bg-destructive/5"
|
|
43
|
-
: "border-border-subtle bg-surface"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Newspaper, { className: "h-4 w-4 shrink-0 text-muted-foreground" }), _jsx("span", { className: "font-medium", children: "While you were away" }), _jsx("span", { className: "text-[10px] text-muted-foreground/60", children: windowLabel }), _jsx("button", { type: "button", onClick: dismiss, className: "ml-auto rounded p-1 text-muted-foreground transition-colors hover:text-foreground", "aria-label": "Dismiss", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }), _jsxs("div", { className: "mt-1.5 text-muted-foreground", children: [digest.runs, " run", digest.runs === 1 ? "" : "s", digest.failures > 0 && (_jsxs("span", { className: "text-destructive", children: [" \u00B7 ", digest.failures, " failed"] })),
|
|
47
|
+
: "border-border-subtle bg-surface"), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Newspaper, { className: "h-4 w-4 shrink-0 text-muted-foreground" }), _jsx("span", { className: "font-medium", children: "While you were away" }), _jsx("span", { className: "text-[10px] text-muted-foreground/60", children: windowLabel }), _jsx("button", { type: "button", onClick: dismiss, className: "ml-auto rounded p-1 text-muted-foreground transition-colors hover:text-foreground", "aria-label": "Dismiss", children: _jsx(X, { className: "h-3.5 w-3.5" }) })] }), _jsxs("div", { className: "mt-1.5 text-muted-foreground", children: [digest.runs, " run", digest.runs === 1 ? "" : "s", digest.failures > 0 && (_jsxs("span", { className: "text-destructive", children: [" \u00B7 ", digest.failures, " failed"] })), costClause && ` · ${costClause}`] }), digest.notable.length > 0 && (_jsx("div", { className: "mt-1.5 space-y-0.5", children: digest.notable.slice(0, 3).map((n) => (_jsxs("div", { className: "flex items-center gap-1.5 text-[11px]", children: [_jsx(AlertTriangle, { className: "h-3 w-3 shrink-0 text-destructive" }), _jsxs("span", { className: "truncate", children: [n.jobName ?? n.name, " \u2014 ", n.outcome] })] }, n.runId))) })), _jsx("button", { type: "button", onClick: () => {
|
|
44
48
|
dismiss();
|
|
45
49
|
setActiveView("activity");
|
|
46
50
|
}, className: "mt-2 text-[11px] font-medium text-primary hover:underline", children: "Open Activity" })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-card.js","sourceRoot":"","sources":["../../../src/components/activity/digest-card.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAuB,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"digest-card.js","sourceRoot":"","sources":["../../../src/components/activity/digest-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/activity/push-toggle.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"push-toggle.d.ts","sourceRoot":"","sources":["../../../src/components/activity/push-toggle.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,UAAU,gCA8HzB"}
|
|
@@ -3,6 +3,23 @@ import { useEffect, useState } from "react";
|
|
|
3
3
|
import { Bell, BellOff } from "lucide-react";
|
|
4
4
|
import { api } from "../../lib/api-client.js";
|
|
5
5
|
import { cn } from "../../lib/utils.js";
|
|
6
|
+
/**
|
|
7
|
+
* The push enable/disable control, living on the Activity surface (where the
|
|
8
|
+
* alerts it governs land). The permission model is THREE-state, not a bare
|
|
9
|
+
* toggle: once the browser prompt is denied, Chrome silently ignores every
|
|
10
|
+
* further in-page request — so the blocked state must say where the real
|
|
11
|
+
* switch lives (site settings) instead of offering a button that does
|
|
12
|
+
* nothing. Where the platform has no push at all (iOS Safari in-browser,
|
|
13
|
+
* pre-16.4), the control renders disabled-with-explanation, not hidden.
|
|
14
|
+
*/
|
|
15
|
+
/** The subscription's bound applicationServerKey, in the base64url form the
|
|
16
|
+
* server hands out — comparable against `pushPublicKey()` directly. */
|
|
17
|
+
function keyToBase64Url(key) {
|
|
18
|
+
let bin = "";
|
|
19
|
+
for (const b of new Uint8Array(key))
|
|
20
|
+
bin += String.fromCharCode(b);
|
|
21
|
+
return btoa(bin).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
22
|
+
}
|
|
6
23
|
export function PushToggle() {
|
|
7
24
|
const [state, setState] = useState("unsupported");
|
|
8
25
|
const [busy, setBusy] = useState(false);
|
|
@@ -22,6 +39,28 @@ export function PushToggle() {
|
|
|
22
39
|
}
|
|
23
40
|
const registration = await navigator.serviceWorker.ready;
|
|
24
41
|
const subscription = await registration.pushManager.getSubscription();
|
|
42
|
+
if (subscription) {
|
|
43
|
+
// The browser having a subscription doesn't mean the SERVER can
|
|
44
|
+
// still use it. Two disagreement cases: the server pruned/lost the
|
|
45
|
+
// row (a dead-endpoint send, a DB restore) — healed by re-asserting,
|
|
46
|
+
// an idempotent upsert; or the server's VAPID keypair changed, which
|
|
47
|
+
// makes this subscription permanently unsendable — its
|
|
48
|
+
// applicationServerKey no longer matches, so drop it and surface the
|
|
49
|
+
// re-enable button. Offline, trust the browser's own state.
|
|
50
|
+
try {
|
|
51
|
+
const { publicKey } = await api.pushPublicKey();
|
|
52
|
+
const boundKey = subscription.options.applicationServerKey;
|
|
53
|
+
if (boundKey && keyToBase64Url(boundKey) !== publicKey) {
|
|
54
|
+
await subscription.unsubscribe().catch(() => { });
|
|
55
|
+
setState("unsubscribed");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
await api.pushSubscribe(subscription.toJSON(), navigator.userAgent.slice(0, 100));
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Server unreachable — keep the browser's answer.
|
|
62
|
+
}
|
|
63
|
+
}
|
|
25
64
|
setState(subscription ? "subscribed" : "unsubscribed");
|
|
26
65
|
})();
|
|
27
66
|
}, []);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push-toggle.js","sourceRoot":"","sources":["../../../src/components/activity/push-toggle.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"push-toggle.js","sourceRoot":"","sources":["../../../src/components/activity/push-toggle.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,54 @@ export declare function SpanStatusDot({ span, outcome, running, className, }: {
|
|
|
20
20
|
* the field existed.
|
|
21
21
|
*/
|
|
22
22
|
export declare function spanToolLabel(span: ActivitySpan): string;
|
|
23
|
+
/**
|
|
24
|
+
* The recorded input/output of one tool span, expanded under its row — the
|
|
25
|
+
* ONE payload renderer shared by the subagent drill-in and the run detail.
|
|
26
|
+
* Mounted only while expanded (collapsed rows never subscribe). A span with
|
|
27
|
+
* no payload events (recorded before capture shipped) states so instead of
|
|
28
|
+
* offering an empty block (AE7); a payload clipped at persist time carries
|
|
29
|
+
* the wire `truncated` flag, rendered as a hint line under the block.
|
|
30
|
+
*/
|
|
31
|
+
export declare function SpanPayload({ spanId }: {
|
|
32
|
+
spanId: string;
|
|
33
|
+
}): import("react").JSX.Element;
|
|
34
|
+
/**
|
|
35
|
+
* THE effective-cost glyph — one three-state rule so no surface ever renders
|
|
36
|
+
* an unknown cost as $0.00 (AE3): absent/NULL is "—" (we don't know), 0 is
|
|
37
|
+
* "free" (we know — subscription-billed or genuinely zero), positive is
|
|
38
|
+
* dollars, "~"-prefixed when computed from estimated rates. Sub-cent costs
|
|
39
|
+
* floor at "<$0.01" rather than rounding down to a zero look-alike.
|
|
40
|
+
*/
|
|
41
|
+
export declare function formatEffectiveCost(costUsd: number | null | undefined, estimate?: boolean): string;
|
|
42
|
+
/**
|
|
43
|
+
* An aggregate's effective-cost sum. Sums exclude unknown-cost runs, so a
|
|
44
|
+
* nonzero `unpricedRuns` makes the number a floor ("≥ $X"), never a total.
|
|
45
|
+
* A known sub-cent sum floors at "<$0.01" like the per-run glyph — only an
|
|
46
|
+
* exact 0 (genuinely nothing to add up) renders "$0.00" (AE3).
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatAggregateCost(effectiveUsd: number, unpricedRuns: number): string;
|
|
49
|
+
/**
|
|
50
|
+
* A run row's cost text, three-way on `effectiveCostUsd`: ABSENT means a
|
|
51
|
+
* pre-pricing server never sent the field — fall back to the original
|
|
52
|
+
* list-cost rendering (a positive `costUsd`, else nothing) instead of
|
|
53
|
+
* claiming unknown; explicit null means THIS server computed "unknown" and
|
|
54
|
+
* renders the em dash; a number goes through `formatEffectiveCost` (AE3).
|
|
55
|
+
*/
|
|
56
|
+
export declare function runCostText(run: {
|
|
57
|
+
costUsd: number | null;
|
|
58
|
+
effectiveCostUsd?: number | null;
|
|
59
|
+
pricingEstimate?: boolean;
|
|
60
|
+
}): string | null;
|
|
61
|
+
/**
|
|
62
|
+
* The digest card's cost clause (no leading separator), effective-only, or
|
|
63
|
+
* null for "say nothing". A digest persisted before pricing shipped carries
|
|
64
|
+
* neither new field and keeps its old list-cost clause.
|
|
65
|
+
*/
|
|
66
|
+
export declare function digestCostClause(digest: {
|
|
67
|
+
costUsd: number;
|
|
68
|
+
effectiveCostUsd?: number;
|
|
69
|
+
unpricedRuns?: number;
|
|
70
|
+
}): string | null;
|
|
23
71
|
/** The "9+" unread-count bubble shared by the rail and the tab bar. Hidden at 0. */
|
|
24
72
|
export declare function CountBadge({ count, className }: {
|
|
25
73
|
count: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-bits.d.ts","sourceRoot":"","sources":["../../../src/components/activity/span-bits.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"span-bits.d.ts","sourceRoot":"","sources":["../../../src/components/activity/span-bits.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAU3F;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,OAAO,EACP,OAAO,EACP,SAAS,GACV,EAAE;IACD,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,+BAkBA;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CASxD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,+BAgCzD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,QAAQ,CAAC,EAAE,OAAO,GACjB,MAAM,CAKR;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAItF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,MAAM,GAAG,IAAI,CAKhB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,GAAG,IAAI,CAYhB;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,sCAYrF"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
import { useShallow } from "zustand/react/shallow";
|
|
4
|
+
import { isFailureOutcome, SPAN_TOOL_NAME_PREFIX } from "@schlessera/brain-ui-sdk/protocol";
|
|
5
|
+
import { useActivityStore, payloadEventsFor, loadSpanPayloads, } from "../../stores/activity-store.js";
|
|
3
6
|
import { cn } from "../../lib/utils.js";
|
|
4
7
|
import { getToolLabel } from "../chat/tool-views.js";
|
|
5
8
|
/**
|
|
@@ -32,7 +35,88 @@ export function spanToolLabel(span) {
|
|
|
32
35
|
return "Turn";
|
|
33
36
|
if (span.kind === "cron")
|
|
34
37
|
return span.jobName ?? span.name;
|
|
35
|
-
return getToolLabel(span.name.
|
|
38
|
+
return getToolLabel(span.name.startsWith(SPAN_TOOL_NAME_PREFIX)
|
|
39
|
+
? span.name.slice(SPAN_TOOL_NAME_PREFIX.length)
|
|
40
|
+
: span.name);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The recorded input/output of one tool span, expanded under its row — the
|
|
44
|
+
* ONE payload renderer shared by the subagent drill-in and the run detail.
|
|
45
|
+
* Mounted only while expanded (collapsed rows never subscribe). A span with
|
|
46
|
+
* no payload events (recorded before capture shipped) states so instead of
|
|
47
|
+
* offering an empty block (AE7); a payload clipped at persist time carries
|
|
48
|
+
* the wire `truncated` flag, rendered as a hint line under the block.
|
|
49
|
+
*/
|
|
50
|
+
export function SpanPayload({ spanId }) {
|
|
51
|
+
const events = useActivityStore(useShallow((s) => payloadEventsFor(s, spanId)));
|
|
52
|
+
// History fetches skip payload bodies (they exist for duration badges);
|
|
53
|
+
// the first expand of a finished run backfills them over REST. A no-op for
|
|
54
|
+
// live runs (payloads ride the WS deltas) and once per run thereafter.
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (events.length === 0)
|
|
57
|
+
void loadSpanPayloads(spanId);
|
|
58
|
+
}, [spanId, events.length]);
|
|
59
|
+
if (events.length === 0) {
|
|
60
|
+
return (_jsx("p", { className: "px-2 py-1 text-[11px] text-muted-foreground/60", children: "No payload recorded for this run." }));
|
|
61
|
+
}
|
|
62
|
+
return (_jsx("div", { className: "space-y-1.5 px-2 py-1", children: events.map((event) => (_jsxs("div", { children: [_jsx("div", { className: "mb-0.5 text-[10px] uppercase text-muted-foreground/60", children: event.eventType === "tool_input" ? "Input" : "Output" }), _jsx("pre", { className: "max-h-56 overflow-auto whitespace-pre-wrap break-words rounded-md bg-background/60 p-2 font-[family-name:var(--font-mono)] text-[11px] leading-relaxed text-muted-foreground", children: typeof event.payload === "string" ? event.payload : JSON.stringify(event.payload) }), event.truncated && (_jsx("p", { className: "mt-0.5 text-[10px] italic text-muted-foreground/60", children: "\u2026 truncated" }))] }, `${event.spanId}:${event.eventIndex}`))) }));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* THE effective-cost glyph — one three-state rule so no surface ever renders
|
|
66
|
+
* an unknown cost as $0.00 (AE3): absent/NULL is "—" (we don't know), 0 is
|
|
67
|
+
* "free" (we know — subscription-billed or genuinely zero), positive is
|
|
68
|
+
* dollars, "~"-prefixed when computed from estimated rates. Sub-cent costs
|
|
69
|
+
* floor at "<$0.01" rather than rounding down to a zero look-alike.
|
|
70
|
+
*/
|
|
71
|
+
export function formatEffectiveCost(costUsd, estimate) {
|
|
72
|
+
if (costUsd === null || costUsd === undefined)
|
|
73
|
+
return "—";
|
|
74
|
+
if (costUsd === 0)
|
|
75
|
+
return "free";
|
|
76
|
+
const amount = costUsd < 0.005 ? "<$0.01" : `$${costUsd.toFixed(2)}`;
|
|
77
|
+
return estimate ? `~${amount}` : amount;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* An aggregate's effective-cost sum. Sums exclude unknown-cost runs, so a
|
|
81
|
+
* nonzero `unpricedRuns` makes the number a floor ("≥ $X"), never a total.
|
|
82
|
+
* A known sub-cent sum floors at "<$0.01" like the per-run glyph — only an
|
|
83
|
+
* exact 0 (genuinely nothing to add up) renders "$0.00" (AE3).
|
|
84
|
+
*/
|
|
85
|
+
export function formatAggregateCost(effectiveUsd, unpricedRuns) {
|
|
86
|
+
const amount = effectiveUsd > 0 && effectiveUsd < 0.005 ? "<$0.01" : `$${effectiveUsd.toFixed(2)}`;
|
|
87
|
+
return unpricedRuns > 0 ? `≥ ${amount}` : amount;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A run row's cost text, three-way on `effectiveCostUsd`: ABSENT means a
|
|
91
|
+
* pre-pricing server never sent the field — fall back to the original
|
|
92
|
+
* list-cost rendering (a positive `costUsd`, else nothing) instead of
|
|
93
|
+
* claiming unknown; explicit null means THIS server computed "unknown" and
|
|
94
|
+
* renders the em dash; a number goes through `formatEffectiveCost` (AE3).
|
|
95
|
+
*/
|
|
96
|
+
export function runCostText(run) {
|
|
97
|
+
if (run.effectiveCostUsd === undefined) {
|
|
98
|
+
return run.costUsd !== null && run.costUsd > 0 ? `$${run.costUsd.toFixed(2)}` : null;
|
|
99
|
+
}
|
|
100
|
+
return formatEffectiveCost(run.effectiveCostUsd, run.pricingEstimate);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* The digest card's cost clause (no leading separator), effective-only, or
|
|
104
|
+
* null for "say nothing". A digest persisted before pricing shipped carries
|
|
105
|
+
* neither new field and keeps its old list-cost clause.
|
|
106
|
+
*/
|
|
107
|
+
export function digestCostClause(digest) {
|
|
108
|
+
if (digest.effectiveCostUsd === undefined) {
|
|
109
|
+
return digest.costUsd > 0 ? `$${digest.costUsd.toFixed(2)} spent` : null;
|
|
110
|
+
}
|
|
111
|
+
const unpriced = digest.unpricedRuns ?? 0;
|
|
112
|
+
const qualifier = unpriced > 0 ? ` (${unpriced} unpriced)` : "";
|
|
113
|
+
if (digest.effectiveCostUsd > 0) {
|
|
114
|
+
return `${formatAggregateCost(digest.effectiveCostUsd, unpriced)} spent${qualifier}`;
|
|
115
|
+
}
|
|
116
|
+
// Known-zero spend: nothing to add up, but the unknowns still get named.
|
|
117
|
+
if (unpriced > 0)
|
|
118
|
+
return `${unpriced} unpriced`;
|
|
119
|
+
return "free";
|
|
36
120
|
}
|
|
37
121
|
/** The "9+" unread-count bubble shared by the rail and the tab bar. Hidden at 0. */
|
|
38
122
|
export function CountBadge({ count, className }) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-bits.js","sourceRoot":"","sources":["../../../src/components/activity/span-bits.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"span-bits.js","sourceRoot":"","sources":["../../../src/components/activity/span-bits.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from "react";
|
|
3
|
-
import { ArrowLeft, Bot, Check, X } from "lucide-react";
|
|
2
|
+
import { useMemo, useState } from "react";
|
|
3
|
+
import { ArrowLeft, Bot, Check, ChevronRight, X } from "lucide-react";
|
|
4
4
|
import { motion } from "framer-motion";
|
|
5
5
|
import { useShallow } from "zustand/react/shallow";
|
|
6
6
|
import { isFailureOutcome } from "@schlessera/brain-ui-sdk/protocol";
|
|
@@ -9,7 +9,7 @@ import { useUIStore } from "../../stores/ui-store.js";
|
|
|
9
9
|
import { useChatStore, activeChat } from "../../stores/chat-store.js";
|
|
10
10
|
import { cn } from "../../lib/utils.js";
|
|
11
11
|
import { getToolLabel, formatDuration } from "./tool-views.js";
|
|
12
|
-
import { SpanStatusDot, spanToolLabel } from "../activity/span-bits.js";
|
|
12
|
+
import { SpanPayload, SpanStatusDot, spanToolLabel } from "../activity/span-bits.js";
|
|
13
13
|
/**
|
|
14
14
|
* Drill-in view of one subagent: the span tree under its Agent tool call,
|
|
15
15
|
* transcript excerpts interleaved by time, live while the subagent runs.
|
|
@@ -53,12 +53,16 @@ function BackButton({ onClick }) {
|
|
|
53
53
|
return (_jsx("button", { type: "button", onClick: onClick, className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-surface-raised hover:text-foreground", "aria-label": "Back", children: _jsx(ArrowLeft, { className: "h-4 w-4" }) }));
|
|
54
54
|
}
|
|
55
55
|
function SpanRow({ span, onOpen }) {
|
|
56
|
+
// Tool rows expand to their recorded payload (AE7); a pre-feature span
|
|
57
|
+
// expands to the no-payload notice, so the affordance stays uniform.
|
|
58
|
+
const [expanded, setExpanded] = useState(false);
|
|
56
59
|
const running = span.outcome === undefined;
|
|
57
60
|
const failed = isFailureOutcome(span.outcome);
|
|
61
|
+
const expandable = !onOpen && span.kind === "tool";
|
|
58
62
|
const duration = span.endedAt !== undefined
|
|
59
63
|
? formatDuration(span.endedAt - (span.waitUntil ?? span.startedAt))
|
|
60
64
|
: null;
|
|
61
|
-
return (_jsxs(motion.div, { initial: { opacity: 0, y: 2 }, animate: { opacity: 1, y: 0 }, className: cn("flex items-center gap-2 rounded-md px-2 py-1.5 text-xs", failed ? "text-destructive/80" : "text-muted-foreground", onOpen && "cursor-pointer hover:text-foreground"), onClick: onOpen, children: [_jsx(SpanStatusDot, { span: span, className: "h-2 w-2" }), _jsx("span", { className: "font-[family-name:var(--font-mono)] font-medium", children: spanToolLabel(span) }), span.outcome && span.outcome !== "success" && (_jsx("span", { className: "text-[10px] uppercase", children: span.outcome })), _jsx("span", { className: "ml-auto font-[family-name:var(--font-mono)] text-[10px] text-muted-foreground/50", children: duration ?? (running ? "…" : "") })] }));
|
|
65
|
+
return (_jsxs(motion.div, { initial: { opacity: 0, y: 2 }, animate: { opacity: 1, y: 0 }, children: [_jsxs("div", { className: cn("flex items-center gap-2 rounded-md px-2 py-1.5 text-xs", failed ? "text-destructive/80" : "text-muted-foreground", (onOpen || expandable) && "cursor-pointer hover:text-foreground"), onClick: onOpen ?? (expandable ? () => setExpanded((v) => !v) : undefined), children: [_jsx(SpanStatusDot, { span: span, className: "h-2 w-2" }), _jsx("span", { className: "font-[family-name:var(--font-mono)] font-medium", children: spanToolLabel(span) }), span.outcome && span.outcome !== "success" && (_jsx("span", { className: "text-[10px] uppercase", children: span.outcome })), _jsx("span", { className: "ml-auto font-[family-name:var(--font-mono)] text-[10px] text-muted-foreground/50", children: duration ?? (running ? "…" : "") }), expandable && (_jsx(ChevronRight, { className: cn("h-3 w-3 shrink-0 transition-transform", expanded && "rotate-90") }))] }), expanded && _jsx(SpanPayload, { spanId: span.spanId })] }));
|
|
62
66
|
}
|
|
63
67
|
function TranscriptRow({ event }) {
|
|
64
68
|
const text = typeof event.payload === "string" ? event.payload : JSON.stringify(event.payload);
|