@workerdeck/ui 1.4.0 → 2.0.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.
@@ -5,11 +5,11 @@ import { clsx } from "clsx";
5
5
  import { extendTailwindMerge } from "tailwind-merge";
6
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
7
  import { Select } from "@base-ui/react/select";
8
- import { ArrowDown, ArrowDownCircle, ArrowLeft, ArrowUp, AtSign, Brain, ChartPie, Check, CheckSquare, ChevronDown, ChevronLeft, ChevronRight, ChevronsUpDown, ClipboardList, Clock, Code, Copy, Download, File, FileDiff, FileText, Folder, FolderSearch, FolderTree, Gauge, Globe, Hand, Image, Info, Link2, LoaderCircle, MessageCircleQuestion, MessageSquareText, MoreHorizontal, Paperclip, PencilLine, Plug, Power, PowerOff, Puzzle, RefreshCw, RotateCcw, RotateCw, Search, ShieldCheck, SlashSquare, Sparkles, Square, SquarePen, Terminal, TriangleAlert, UsersRound, WifiOff, Wrench, X, Zap } from "lucide-react";
8
+ import { ArrowDown, ArrowDownCircle, ArrowLeft, ArrowRight, ArrowUp, AtSign, Brain, ChartPie, Check, CheckSquare, ChevronDown, ChevronLeft, ChevronRight, ChevronsUpDown, Circle, CircleAlert, ClipboardList, Clock, Code, Copy, Download, File, FileDiff, FileText, Folder, FolderSearch, FolderTree, Gauge, Globe, Hand, Image, Info, Link2, LoaderCircle, MessageCircleQuestion, MessageSquareText, MoreHorizontal, Paperclip, PencilLine, Plug, Power, PowerOff, Puzzle, RefreshCw, RotateCcw, RotateCw, Search, ShieldCheck, SlashSquare, Sparkles, Square, SquarePen, Terminal, TriangleAlert, UsersRound, WifiOff, Wrench, X, Zap } from "lucide-react";
9
9
  import { Menu } from "@base-ui/react/menu";
10
10
  import { Dialog } from "@base-ui/react/dialog";
11
11
  import { Tooltip } from "@base-ui/react/tooltip";
12
- import { PROTOCOL_VERSION, mergeUsage, orderUsageWindows, subagentLabel, toolTitle, usageInfos } from "@workerdeck/protocol";
12
+ import { PROTOCOL_VERSION, mergeUsage, orderUsageWindows, parseTodoWriteInput, sessionTasks, subagentLabel, taskCountLabel, taskSummary, toolTitle, usageInfos, visibleTasks } from "@workerdeck/protocol";
13
13
  import { recapLine, scanPromptTokens, summarizeSince, useAttachments, useClaudeSession, useDraft, useHostFileSearch, useProfileUsage, useToolCallHost } from "@workerdeck/react";
14
14
  import { Streamdown } from "streamdown";
15
15
  import { StickToBottom, useStickToBottomContext } from "use-stick-to-bottom";
@@ -5140,7 +5140,7 @@ function taskBusy(task, children) {
5140
5140
  function taskFailed(task) {
5141
5141
  return callFailed(task);
5142
5142
  }
5143
- function taskSummary(task, children) {
5143
+ function taskSummary$1(task, children) {
5144
5144
  const busy = taskBusy(task, children);
5145
5145
  const calls = children.reduce((n, child) => n + (child.kind === "tool_call" ? 1 : 0), 0);
5146
5146
  const label = taskLabel(task);
@@ -5155,34 +5155,10 @@ const GLYPH = {
5155
5155
  in_progress: "◐",
5156
5156
  completed: "☒"
5157
5157
  };
5158
- function todoEntry(value) {
5159
- if (typeof value !== "object" || value === null) return;
5160
- const raw = value;
5161
- const status = raw.status;
5162
- if (status !== "pending" && status !== "in_progress" && status !== "completed") return;
5163
- const content = typeof raw.content === "string" ? raw.content.trim() : "";
5164
- if (content === "") return;
5165
- const active = typeof raw.activeForm === "string" ? raw.activeForm.trim() : "";
5166
- return {
5167
- status,
5168
- text: status === "in_progress" && active !== "" ? active : content
5169
- };
5170
- }
5171
- function parseTodos(input) {
5172
- const todos = input?.todos;
5173
- if (!Array.isArray(todos) || todos.length === 0) return;
5174
- const out = [];
5175
- for (const value of todos) {
5176
- const entry = todoEntry(value);
5177
- if (entry === void 0) return;
5178
- out.push(entry);
5179
- }
5180
- return out;
5181
- }
5182
5158
  function todoPreview(name, input) {
5183
5159
  if (name !== "TodoWrite") return;
5184
- const todos = parseTodos(input);
5185
- if (todos === void 0) return;
5160
+ const todos = parseTodoWriteInput(input);
5161
+ if (todos === void 0 || todos.length === 0) return;
5186
5162
  const done = todos.reduce((n, todo) => n + (todo.status === "completed" ? 1 : 0), 0);
5187
5163
  const shown = todos.slice(0, PREVIEW_TODOS);
5188
5164
  const hidden = todos.length - shown.length;
@@ -6076,6 +6052,102 @@ function ContextDialog({ usage, engine, open, onOpenChange, className }) {
6076
6052
  });
6077
6053
  }
6078
6054
  //#endregion
6055
+ //#region src/components/agent/TaskList.tsx
6056
+ function TaskList({ tasks, showCompleted, onShowCompletedChange, onSelectTask, className }) {
6057
+ const summary = taskSummary(tasks);
6058
+ const shown = visibleTasks(tasks, showCompleted);
6059
+ const hidden = tasks.length - shown.length;
6060
+ return /* @__PURE__ */ jsxs("div", {
6061
+ className: cn("flex flex-col", className),
6062
+ children: [/* @__PURE__ */ jsxs("div", {
6063
+ className: "flex items-baseline justify-between gap-4 pb-1.5",
6064
+ children: [/* @__PURE__ */ jsxs("span", {
6065
+ className: "text-label text-fg-3",
6066
+ children: [
6067
+ summary.done,
6068
+ " of ",
6069
+ summary.total,
6070
+ " done",
6071
+ summary.failed > 0 ? ` · ${summary.failed} failed` : ""
6072
+ ]
6073
+ }), summary.done > 0 && onShowCompletedChange ? /* @__PURE__ */ jsx("button", {
6074
+ type: "button",
6075
+ onClick: () => onShowCompletedChange(!showCompleted),
6076
+ className: "shrink-0 rounded-[4px] px-1 py-0.5 text-label text-fg-4 outline-none hover:bg-row-hover hover:text-fg-2",
6077
+ children: showCompleted ? "Hide completed" : `Show completed (${summary.done})`
6078
+ }) : null]
6079
+ }), shown.length === 0 ? /* @__PURE__ */ jsx("p", {
6080
+ className: "py-6 text-center text-body-sm text-fg-4",
6081
+ children: tasks.length === 0 ? "No tasks yet — a checklist appears once the agent plans one." : `${hidden} completed, all hidden.`
6082
+ }) : /* @__PURE__ */ jsx("div", {
6083
+ className: "flex flex-col",
6084
+ children: shown.map((task) => /* @__PURE__ */ jsx(TaskRow$1, {
6085
+ task,
6086
+ onSelect: onSelectTask
6087
+ }, task.key))
6088
+ })]
6089
+ });
6090
+ }
6091
+ function TaskRow$1({ task, onSelect }) {
6092
+ const pressable = onSelect !== void 0 && task.toolUseId !== void 0;
6093
+ const body = task.state === "failed" ? "text-danger" : task.state === "done" ? "text-fg-4" : "text-fg-2";
6094
+ const row = /* @__PURE__ */ jsxs(Fragment$1, { children: [
6095
+ /* @__PURE__ */ jsx(TaskIcon, { state: task.state }),
6096
+ /* @__PURE__ */ jsx("span", {
6097
+ className: cn("min-w-0 flex-1 truncate text-left", task.state === "done" ? "line-through" : void 0),
6098
+ children: task.label
6099
+ }),
6100
+ task.detail ? /* @__PURE__ */ jsx("span", {
6101
+ className: "shrink-0 tabular-nums text-fg-4",
6102
+ children: task.detail
6103
+ }) : null,
6104
+ pressable ? /* @__PURE__ */ jsx(ArrowRight, { className: "size-3.5 shrink-0 text-fg-4" }) : null
6105
+ ] });
6106
+ const className = cn("flex w-full items-center gap-1.5 rounded-[4px] px-1.5 py-1 text-body-sm outline-none", body);
6107
+ if (!pressable) return /* @__PURE__ */ jsx("div", {
6108
+ className,
6109
+ children: row
6110
+ });
6111
+ return /* @__PURE__ */ jsx("button", {
6112
+ type: "button",
6113
+ title: task.label,
6114
+ onClick: () => onSelect(task),
6115
+ className: cn(className, "hover:bg-row-active"),
6116
+ children: row
6117
+ });
6118
+ }
6119
+ function TaskIcon({ state }) {
6120
+ switch (state) {
6121
+ case "running": return /* @__PURE__ */ jsx(Spinner, { className: "size-[13px] shrink-0" });
6122
+ case "failed": return /* @__PURE__ */ jsx(CircleAlert, { className: "size-[13px] shrink-0" });
6123
+ case "done": return /* @__PURE__ */ jsx(Check, { className: "size-[13px] shrink-0" });
6124
+ default: return /* @__PURE__ */ jsx(Circle, { className: "size-[13px] shrink-0 text-fg-4" });
6125
+ }
6126
+ }
6127
+ //#endregion
6128
+ //#region src/components/agent/TasksDialog.tsx
6129
+ function TasksDialog({ tasks, showCompleted, onShowCompletedChange, onSelectTask, open, onOpenChange, className }) {
6130
+ return /* @__PURE__ */ jsx(Dialog$1, {
6131
+ open,
6132
+ onOpenChange,
6133
+ children: /* @__PURE__ */ jsxs(DialogContent, {
6134
+ className,
6135
+ children: [/* @__PURE__ */ jsx(DialogHeader, {
6136
+ title: "Tasks",
6137
+ description: "The agent's checklist and the tasks it has spawned"
6138
+ }), /* @__PURE__ */ jsx(DialogBody, { children: /* @__PURE__ */ jsx(TaskList, {
6139
+ tasks,
6140
+ showCompleted,
6141
+ onShowCompletedChange,
6142
+ onSelectTask: onSelectTask ? (task) => {
6143
+ onOpenChange(false);
6144
+ onSelectTask(task);
6145
+ } : void 0
6146
+ }) })]
6147
+ })
6148
+ });
6149
+ }
6150
+ //#endregion
6079
6151
  //#region src/components/agent/EntryIcon.tsx
6080
6152
  function EntryIcon({ type }) {
6081
6153
  if (type === "dir") return /* @__PURE__ */ jsx(Folder, { className: "size-3.5 shrink-0 text-accent" });
@@ -8106,7 +8178,7 @@ function Slot({ onClick, hint, children }) {
8106
8178
  children
8107
8179
  });
8108
8180
  }
8109
- function StatusBar({ state, rateLimits, connected, connection, onOpenStatus, onOpenContext, onOpenUsage, controls, actions, placement = "top", className }) {
8181
+ function StatusBar({ state, rateLimits, connected, connection, onOpenStatus, onOpenContext, onOpenUsage, tasks, onOpenTasks, controls, actions, placement = "top", className }) {
8110
8182
  const meta = STATUS_META[state.status];
8111
8183
  const now = useNow();
8112
8184
  const windows = rateLimits ?? state.rateLimits;
@@ -8114,6 +8186,7 @@ function StatusBar({ state, rateLimits, connected, connection, onOpenStatus, onO
8114
8186
  const weekly = windows?.seven_day;
8115
8187
  const link = connection ?? (connected === false ? "reconnecting" : "live");
8116
8188
  const terminal = useTranscriptVariant() === "terminal";
8189
+ const taskCount = tasks && tasks.length > 0 ? taskSummary(tasks) : void 0;
8117
8190
  return /* @__PURE__ */ jsxs("div", {
8118
8191
  "data-slot": "status-bar",
8119
8192
  className: cn("flex h-[var(--wd-status-bar-height)] items-baseline gap-2 border-border bg-surface p-1.5", placement === "bottom" ? terminal ? void 0 : "border-t" : "border-b", className),
@@ -8157,6 +8230,17 @@ function StatusBar({ state, rateLimits, connected, connection, onOpenStatus, onO
8157
8230
  }) : null]
8158
8231
  })
8159
8232
  }) : null,
8233
+ taskCount ? /* @__PURE__ */ jsx(Slot, {
8234
+ onClick: onOpenTasks,
8235
+ hint: "Tasks",
8236
+ children: /* @__PURE__ */ jsxs("span", {
8237
+ className: "text-label text-fg-3",
8238
+ children: [/* @__PURE__ */ jsx("span", {
8239
+ className: cn("tabular-nums", taskCount.running > 0 ? "text-info" : void 0),
8240
+ children: taskCountLabel(taskCount)
8241
+ }), " tasks"]
8242
+ })
8243
+ }) : null,
8160
8244
  controls ? /* @__PURE__ */ jsx("span", {
8161
8245
  className: "self-center",
8162
8246
  children: controls
@@ -8867,7 +8951,7 @@ function itemHeight(item, m) {
8867
8951
  }
8868
8952
  }
8869
8953
  function blockHeight(block, m) {
8870
- if ("task" in block) return rowH(taskSummary(block.task, taskChildItems(block)), m);
8954
+ if ("task" in block) return rowH(taskSummary$1(block.task, taskChildItems(block)), m);
8871
8955
  if ("run" in block) {
8872
8956
  const busy = block.run.some((item) => item.status === "running" || item.status === "pending");
8873
8957
  return rowH(runSummary(block.run, busy), m);
@@ -9837,7 +9921,7 @@ function TaskRow({ block, fileUrl, onOpenSubagent }) {
9837
9921
  glyph: busy ? pulse : "●",
9838
9922
  glyphTone: failed ? "red" : busy ? "mark" : "dim",
9839
9923
  tone: failed ? "red" : "green",
9840
- children: taskSummary(block.task, children)
9924
+ children: taskSummary$1(block.task, children)
9841
9925
  })
9842
9926
  }), open ? /* @__PURE__ */ jsxs("div", {
9843
9927
  className: "term-nested",
@@ -11033,7 +11117,7 @@ const INTERACTIVE = [
11033
11117
  "[role=\"radio\"]",
11034
11118
  "[role=\"tab\"]"
11035
11119
  ].join(",");
11036
- function SessionPanel({ client, sessionId, header, panelSurface = "internal", statusSurface = "internal", statusPlacement = "top", onOpenPanel, onVitals, transcriptVariant = "cards", transcriptDensity = "comfortable", transcriptFont = "sans", midTurnSend = "fold", affordances, terminalMetrics, scrubber = false, bookmarks, onToggleBookmark, reveal, openSubagent, onSubagentChange, stickyPrompt = false, controlsSurface = "internal", onControls, focusComposerOnClick = false, unseen, readOnly = false, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, fontSize, className }) {
11120
+ function SessionPanel({ client, sessionId, header, panelSurface = "internal", statusSurface = "internal", statusPlacement = "top", onOpenPanel, onVitals, transcriptVariant = "cards", transcriptDensity = "comfortable", transcriptFont = "sans", midTurnSend = "fold", affordances, terminalMetrics, scrubber = false, bookmarks, onToggleBookmark, reveal, subagents, openSubagent, onSubagentChange, stickyPrompt = false, controlsSurface = "internal", onControls, focusComposerOnClick = false, unseen, readOnly = false, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, fontSize, className }) {
11037
11121
  const effectiveTermFontSize = terminalMetrics?.fontSize ?? fontSize;
11038
11122
  const effectiveTermLineHeight = terminalMetrics?.lineHeight ?? (fontSize !== void 0 ? Math.round(fontSize * (18 / 13)) : void 0);
11039
11123
  const external = panelSurface === "external";
@@ -11042,6 +11126,8 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11042
11126
  const controlsExternal = controlsSurface === "external" || controlsInStatus;
11043
11127
  const [protocolError, setProtocolError] = useState(void 0);
11044
11128
  const [panel, setPanel] = useState();
11129
+ const [showCompletedTasks, setShowCompletedTasks] = useState(false);
11130
+ const [taskReveal, setTaskReveal] = useState();
11045
11131
  const { state, connection, replaying, protocolMismatch, models, effectiveModel, handle, send, approve, deny, interrupt, setModel, setPermissionMode, reconnectNow, loadFullResult } = useClaudeSession(client, sessionId, {
11046
11132
  onProtocolError: setProtocolError,
11047
11133
  cacheTranscript
@@ -11096,6 +11182,14 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11096
11182
  const stamps = Object.values(usage).map((w) => w.updatedAt);
11097
11183
  return stamps.length > 0 ? Math.max(...stamps) : void 0;
11098
11184
  }, [usage]);
11185
+ const tasks = useMemo(() => sessionTasks({
11186
+ checklist: state.checklist,
11187
+ subagents: subagents ?? state.session?.subagents
11188
+ }), [
11189
+ state.checklist,
11190
+ subagents,
11191
+ state.session?.subagents
11192
+ ]);
11099
11193
  const onVitalsRef = useRef(onVitals);
11100
11194
  onVitalsRef.current = onVitals;
11101
11195
  const vitalsModel = effectiveModel ?? state.model;
@@ -11113,6 +11207,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11113
11207
  skills: state.skills,
11114
11208
  cwd: state.cwd,
11115
11209
  contextUsage: state.contextUsage,
11210
+ tasks,
11116
11211
  rateLimits,
11117
11212
  rateLimitsUpdatedAt: usageUpdatedAt,
11118
11213
  itemCount: state.items.length,
@@ -11130,6 +11225,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11130
11225
  state.skills,
11131
11226
  state.cwd,
11132
11227
  state.contextUsage,
11228
+ tasks,
11133
11229
  rateLimits,
11134
11230
  usageUpdatedAt,
11135
11231
  state.items.length,
@@ -11268,6 +11364,8 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11268
11364
  onOpenStatus: external && !onOpenPanel ? void 0 : () => openPanel("info"),
11269
11365
  onOpenContext: external && !onOpenPanel ? void 0 : () => openPanel("context"),
11270
11366
  onOpenUsage: external && !onOpenPanel ? void 0 : () => openPanel("usage"),
11367
+ tasks,
11368
+ onOpenTasks: external && !onOpenPanel ? void 0 : () => openPanel("tasks"),
11271
11369
  actions: headerTakesActions ? void 0 : menu
11272
11370
  });
11273
11371
  const panelRef = useRef(null);
@@ -11359,7 +11457,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11359
11457
  from: catchUp.itemCount,
11360
11458
  since: catchUp.since
11361
11459
  } : void 0,
11362
- reveal: returnReveal ?? reveal,
11460
+ reveal: taskReveal ?? returnReveal ?? reveal,
11363
11461
  frame: subagentId === void 0 ? void 0 : { parentToolUseId: subagentId },
11364
11462
  onOpenSubagent: enterSubagent,
11365
11463
  emptyState,
@@ -11485,6 +11583,19 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11485
11583
  open: panel === "mcp",
11486
11584
  onOpenChange: (next) => setPanel(next ? "mcp" : void 0)
11487
11585
  }),
11586
+ /* @__PURE__ */ jsx(TasksDialog, {
11587
+ tasks,
11588
+ showCompleted: showCompletedTasks,
11589
+ onShowCompletedChange: setShowCompletedTasks,
11590
+ onSelectTask: (task) => {
11591
+ if (task.toolUseId) setTaskReveal({
11592
+ toolUseId: task.toolUseId,
11593
+ nonce: Date.now()
11594
+ });
11595
+ },
11596
+ open: panel === "tasks",
11597
+ onOpenChange: (next) => setPanel(next ? "tasks" : void 0)
11598
+ }),
11488
11599
  /* @__PURE__ */ jsx(SkillsDialog, {
11489
11600
  skills: state.skills,
11490
11601
  open: panel === "skills",
@@ -11568,6 +11679,6 @@ function Notice({ level, onDismiss, children }) {
11568
11679
  });
11569
11680
  }
11570
11681
  //#endregion
11571
- export { Ink as $, PermissionPrompt as A, DialogHeader as At, EntryIcon as B, SelectItem as Bt, SessionInfoDialog as C, Tip as Ct, QuestionPrompt as D, DialogBody as Dt, QUESTION_BEHAVIORS as E, Dialog$1 as Et, permissionModeMeta as F, MenuItem as Ft, TerminalSurface as G, Input as Gt, contextNote as H, SelectTrigger as Ht, ModelSelect as I, MenuSeparator as It, TerminalMarkdown as J, Button as Jt, ToolTitleProvider as K, Badge as Kt, SkillsDialog as L, MenuTrigger as Lt, PERMISSION_MODES as M, DialogTrigger as Mt, PermissionModeSelect as N, Menu$1 as Nt, parseUserQuestions as O, DialogClose as Ot, permissionModeChoices as P, MenuContent as Pt, Blank as Q, McpDialog as R, Select$1 as Rt, STATUS_META as S, copyText as St, TerminalPermissionPrompt as T, TooltipProvider as Tt, Composer as U, SelectValue as Ut, ContextDialog as V, SelectItemText as Vt, skillPrompt as W, PortalScope as Wt, previewPatch as X, cn as Xt, TerminalDiff as Y, buttonVariants as Yt, Band as Z, Loader as _, ProgressRing as _t, HeldSendsBar as a, toolIcon as at, ConversationScrollButton as b, Spinner as bt, ToolCallCard as c, useTranscriptDensity as ct, Message as d, hashtagTrigger as dt, Row as et, MessageContent as f, mentionTrigger as ft, SessionEmptyState as g, segmentsToPlainText as gt, TerminalTranscript as h, plainTextToSegments as ht, useMinuteClock as i, isMutatingTool as it, Response as j, DialogRow as jt, SubagentStrip as k, DialogContent as kt, Reasoning as l, useTranscriptVariant as lt, TerminalItemView as m, PromptArea as mt, UsageDialog as n, WithActions as nt, useHeldSends as o, TranscriptDensityProvider as ot, FileCard as p, usePromptAreaState as pt, useToolTitle as q, badgeVariants as qt, UsageMeters as r, useAffordances as rt, Transcript as s, TranscriptVariantProvider as st, SessionPanel as t, CopyAction as tt, PromptTokenText as u, commandTrigger as ut, Conversation as v, Splitter as vt, TerminalQuestionPrompt as w, TooltipContent as wt, StatusBar as x, CopyButton as xt, ConversationContent as y, CodeBlock as yt, HostFilesDialog as z, SelectContent as zt };
11682
+ export { Band as $, PermissionPrompt as A, DialogClose as At, EntryIcon as B, Select$1 as Bt, SessionInfoDialog as C, CopyButton as Ct, QuestionPrompt as D, TooltipProvider as Dt, QUESTION_BEHAVIORS as E, TooltipContent as Et, permissionModeMeta as F, Menu$1 as Ft, Composer as G, SelectValue as Gt, TaskList as H, SelectItem as Ht, ModelSelect as I, MenuContent as It, ToolTitleProvider as J, Badge as Jt, skillPrompt as K, PortalScope as Kt, SkillsDialog as L, MenuItem as Lt, PERMISSION_MODES as M, DialogHeader as Mt, PermissionModeSelect as N, DialogRow as Nt, parseUserQuestions as O, Dialog$1 as Ot, permissionModeChoices as P, DialogTrigger as Pt, previewPatch as Q, cn as Qt, McpDialog as R, MenuSeparator as Rt, STATUS_META as S, Spinner as St, TerminalPermissionPrompt as T, Tip as Tt, ContextDialog as U, SelectItemText as Ut, TasksDialog as V, SelectContent as Vt, contextNote as W, SelectTrigger as Wt, TerminalMarkdown as X, Button as Xt, useToolTitle as Y, badgeVariants as Yt, TerminalDiff as Z, buttonVariants as Zt, Loader as _, plainTextToSegments as _t, HeldSendsBar as a, useAffordances as at, ConversationScrollButton as b, Splitter as bt, ToolCallCard as c, TranscriptDensityProvider as ct, Message as d, useTranscriptVariant as dt, Blank as et, MessageContent as f, commandTrigger as ft, SessionEmptyState as g, PromptArea as gt, TerminalTranscript as h, usePromptAreaState as ht, useMinuteClock as i, WithActions as it, Response as j, DialogContent as jt, SubagentStrip as k, DialogBody as kt, Reasoning as l, TranscriptVariantProvider as lt, TerminalItemView as m, mentionTrigger as mt, UsageDialog as n, Row as nt, useHeldSends as o, isMutatingTool as ot, FileCard as p, hashtagTrigger as pt, TerminalSurface as q, Input as qt, UsageMeters as r, CopyAction as rt, Transcript as s, toolIcon as st, SessionPanel as t, Ink as tt, PromptTokenText as u, useTranscriptDensity as ut, Conversation as v, segmentsToPlainText as vt, TerminalQuestionPrompt as w, copyText as wt, StatusBar as x, CodeBlock as xt, ConversationContent as y, ProgressRing as yt, HostFilesDialog as z, MenuTrigger as zt };
11572
11683
 
11573
- //# sourceMappingURL=SessionPanel-DQp2oStr.mjs.map
11684
+ //# sourceMappingURL=SessionPanel-CE5AVkg6.mjs.map