@workerdeck/ui 2.12.0 → 2.14.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.
Files changed (36) hide show
  1. package/build/{SessionPanel-CJwp5B3q.d.mts → SessionPanel-BVKqPs_3.d.mts} +9 -3
  2. package/build/index.d.mts +84 -6
  3. package/build/index.mjs +83 -37
  4. package/build/index.mjs.map +1 -1
  5. package/build/scoped.css +24 -3
  6. package/build/{use-path-links-CepFsMdW.mjs → use-path-links-BgWXmfAS.mjs} +849 -236
  7. package/build/use-path-links-BgWXmfAS.mjs.map +1 -0
  8. package/build/workspace.d.mts +19 -4
  9. package/build/workspace.mjs +7 -4
  10. package/build/workspace.mjs.map +1 -1
  11. package/package.json +16 -6
  12. package/src/components/agent/Composer.tsx +18 -13
  13. package/src/components/agent/SessionBrowser.tsx +24 -1
  14. package/src/components/agent/SessionItem.tsx +13 -3
  15. package/src/components/agent/SessionPanel.tsx +264 -211
  16. package/src/components/agent/SessionSteps.tsx +78 -27
  17. package/src/components/agent/SessionWorkspace.tsx +10 -1
  18. package/src/components/agent/ShellStrip.tsx +71 -0
  19. package/src/components/agent/ShellTerminal.tsx +170 -0
  20. package/src/components/agent/SubagentToggle.tsx +7 -1
  21. package/src/components/agent/TranscriptItemView.tsx +74 -1
  22. package/src/components/agent/scrubber-marks.ts +9 -1
  23. package/src/components/agent/shell-actions.tsx +25 -0
  24. package/src/components/agent/use-shell-frame.ts +111 -0
  25. package/src/components/terminal/TerminalTranscript.tsx +4 -0
  26. package/src/components/terminal/affordances.tsx +37 -0
  27. package/src/components/terminal/height.ts +14 -0
  28. package/src/components/terminal/items.tsx +72 -3
  29. package/src/components/terminal/press.tsx +5 -3
  30. package/src/components/terminal/scrubber.tsx +9 -1
  31. package/src/components/terminal/shell-row.ts +106 -0
  32. package/src/index.ts +12 -1
  33. package/src/styles/terminal.css +11 -0
  34. package/src/styles/theme.css +3 -0
  35. package/src/workspace.ts +1 -0
  36. package/build/use-path-links-CepFsMdW.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { ComponentType, ReactNode } from "react";
2
2
  import { LucideIcon } from "lucide-react";
3
- import { ModelOption, PermissionMode, PermissionRequest, SessionTask, SkillInfo, SlashCommandInfo, SubagentInfo } from "@workerdeck/protocol";
3
+ import { ModelOption, PermissionMode, PermissionRequest, SessionTask, ShellInfo, SkillInfo, SlashCommandInfo, SubagentInfo } from "@workerdeck/protocol";
4
4
  import { ClientToolHandler, ConnectionState, TranscriptState, UseToolCallHostOptions } from "@workerdeck/react";
5
5
  import { WorkerDeckClient } from "@workerdeck/client";
6
6
  //#region src/components/agent/composer-commands.d.ts
@@ -168,7 +168,13 @@ interface SessionPanelProps {
168
168
  nonce: number;
169
169
  };
170
170
  onSubagentChange?: (toolUseId: string | undefined) => void;
171
+ openShell?: {
172
+ shellId: string;
173
+ nonce: number;
174
+ };
175
+ onShellChange?: (shellId: string | undefined) => void;
171
176
  subagents?: SubagentInfo[];
177
+ shells?: ShellInfo[];
172
178
  stickyPrompt?: boolean;
173
179
  transcriptDensity?: TranscriptDensity;
174
180
  transcriptFont?: TranscriptFont;
@@ -216,7 +222,7 @@ type SessionVitals = {
216
222
  itemCount: number;
217
223
  totalCostUsd: number;
218
224
  };
219
- declare function SessionPanel({ client, sessionId, header, panelSurface, statusSurface, statusPlacement, onOpenPanel, onVitals, transcriptVariant, transcriptDensity, transcriptFont, affordances, terminalMetrics, scrubber, bookmarks, peerMentions, onToggleBookmark, reveal, subagents, openSubagent, onSubagentChange, stickyPrompt, controlsSurface, onControls, focusComposerOnClick, unseen, readOnly, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }: SessionPanelProps): import("react").JSX.Element;
225
+ declare function SessionPanel({ client, sessionId, header, panelSurface, statusSurface, statusPlacement, onOpenPanel, onVitals, transcriptVariant, transcriptDensity, transcriptFont, affordances, terminalMetrics, scrubber, bookmarks, peerMentions, onToggleBookmark, reveal, subagents, shells, openSubagent, onSubagentChange, openShell, onShellChange, stickyPrompt, controlsSurface, onControls, focusComposerOnClick, unseen, readOnly, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }: SessionPanelProps): import("react").JSX.Element;
220
226
  //#endregion
221
227
  export { ClientCommand as A, PERMISSION_MODES as C, PermissionModeSelectProps as D, PermissionModeSelect as E, rankPeerSessions as F, skillPrompt as I, matchClientCommand as M, mergeComposerRows as N, permissionModeChoices as O, rankComposerRows as P, useAffordances as S, PermissionModeMeta as T, FileLinkProvider as _, SessionSurfacePanel as a, TerminalAffordances as b, TranscriptDensity as c, TranscriptVariant as d, TranscriptVariantProvider as f, FileLinkOpener as g, FileLinkHandle as h, SessionPanelProps as i, ComposerRow as j, permissionModeMeta as k, TranscriptDensityProvider as l, useTranscriptVariant as m, SessionControls as n, SessionVitals as o, useTranscriptDensity as p, SessionPanel as r, TerminalMetrics as s, ApprovalPromptProps as t, TranscriptFont as u, useFileLinks as v, PermissionModeChoice as w, WithActions as x, CopyAction as y };
222
- //# sourceMappingURL=SessionPanel-CJwp5B3q.d.mts.map
228
+ //# sourceMappingURL=SessionPanel-BVKqPs_3.d.mts.map
package/build/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { a as formatCost, c as formatRateLimitWindow, d as formatTokens, f as friendlyModel, i as formatBytes, l as formatRateLimitWindowLong, m as toolInputPreview, o as formatCountdown, p as rateLimitWindowSeconds, r as formatAgoPrecise, s as formatDuration, u as formatRelativeTime } from "./format-eS_oUry-.mjs";
2
- import { A as ClientCommand, C as PERMISSION_MODES, D as PermissionModeSelectProps, E as PermissionModeSelect, F as rankPeerSessions, I as skillPrompt, M as matchClientCommand, N as mergeComposerRows, O as permissionModeChoices, P as rankComposerRows, S as useAffordances, T as PermissionModeMeta, _ as FileLinkProvider, a as SessionSurfacePanel, b as TerminalAffordances, c as TranscriptDensity, d as TranscriptVariant, f as TranscriptVariantProvider, g as FileLinkOpener, h as FileLinkHandle, i as SessionPanelProps, j as ComposerRow, k as permissionModeMeta, l as TranscriptDensityProvider, m as useTranscriptVariant, n as SessionControls, o as SessionVitals, p as useTranscriptDensity, r as SessionPanel, s as TerminalMetrics, t as ApprovalPromptProps, u as TranscriptFont, v as useFileLinks, w as PermissionModeChoice, x as WithActions, y as CopyAction } from "./SessionPanel-CJwp5B3q.mjs";
2
+ import { A as ClientCommand, C as PERMISSION_MODES, D as PermissionModeSelectProps, E as PermissionModeSelect, F as rankPeerSessions, I as skillPrompt, M as matchClientCommand, N as mergeComposerRows, O as permissionModeChoices, P as rankComposerRows, S as useAffordances, T as PermissionModeMeta, _ as FileLinkProvider, a as SessionSurfacePanel, b as TerminalAffordances, c as TranscriptDensity, d as TranscriptVariant, f as TranscriptVariantProvider, g as FileLinkOpener, h as FileLinkHandle, i as SessionPanelProps, j as ComposerRow, k as permissionModeMeta, l as TranscriptDensityProvider, m as useTranscriptVariant, n as SessionControls, o as SessionVitals, p as useTranscriptDensity, r as SessionPanel, s as TerminalMetrics, t as ApprovalPromptProps, u as TranscriptFont, v as useFileLinks, w as PermissionModeChoice, x as WithActions, y as CopyAction } from "./SessionPanel-BVKqPs_3.mjs";
3
3
  import { ButtonHTMLAttributes, FunctionComponent, HTMLAttributes, InputHTMLAttributes, ReactElement, ReactNode, Ref, RefObject, TextareaHTMLAttributes } from "react";
4
4
  import { VariantProps } from "class-variance-authority";
5
5
  import { ClassValue } from "clsx";
@@ -10,7 +10,7 @@ import { Menu as Menu$1 } from "@base-ui/react/menu";
10
10
  import { Dialog as Dialog$1 } from "@base-ui/react/dialog";
11
11
  import { Tooltip } from "@base-ui/react/tooltip";
12
12
  import { toast } from "sonner";
13
- import { ByModel, ContextReading, ContextUsage, FilePatch, ModelOption, PermissionRequest, PricingTable, ProfileEngine, ProfileSpend, ProjectIcon as ProjectIcon$1, QuestionBehavior, RateLimitInfo, SessionInfo, SessionRow, SessionStatus, SessionTask, SkillInfo, SlashCommandInfo, SubagentDisplay, UsageWindowRow, ViewConfig, WorkspaceScope, parseUserQuestions } from "@workerdeck/protocol";
13
+ import { ByModel, ContextReading, ContextUsage, FilePatch, ModelOption, PermissionRequest, PricingTable, ProfileEngine, ProfileSpend, ProjectIcon as ProjectIcon$1, QuestionBehavior, RateLimitInfo, SessionInfo, SessionRow, SessionStatus, SessionTask, ShellInfo, SkillInfo, SlashCommandInfo, SubagentDisplay, UsageWindowRow, ViewConfig, WorkspaceScope, parseUserQuestions } from "@workerdeck/protocol";
14
14
  import { ConnectionState, PeerSessionOption, TranscriptItem, TranscriptState, UseAttachmentsResult } from "@workerdeck/react";
15
15
  import { WorkerDeckClient } from "@workerdeck/client";
16
16
  //#region src/components/ui/Button.d.ts
@@ -1122,18 +1122,22 @@ interface SessionBrowserProps {
1122
1122
  scope?: WorkspaceScope;
1123
1123
  activeId?: string;
1124
1124
  activeSubagentId?: string;
1125
+ activeShellId?: string;
1126
+ now?: number;
1125
1127
  onSelect?: (row: SessionRow) => void;
1126
1128
  onDelete?: (row: SessionRow) => void;
1127
1129
  onRename?: (row: SessionRow, title: string) => void;
1128
1130
  onClearContext?: (row: SessionRow) => void;
1129
1131
  onSelectSubagent?: (row: SessionRow, toolUseId: string) => void;
1132
+ onSelectShell?: (row: SessionRow, shellId: string) => void;
1133
+ onKillShell?: (row: SessionRow, shellId: string) => void;
1130
1134
  emptyState?: React.ReactNode;
1131
1135
  showControls?: boolean;
1132
1136
  projectIcons?: Record<string, string>;
1133
1137
  className?: string;
1134
1138
  }
1135
1139
  declare function rowShapeClass(active: boolean): string;
1136
- declare function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, emptyState, showControls, projectIcons, className }: SessionBrowserProps): import("react").JSX.Element;
1140
+ declare function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, activeShellId, now, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell, emptyState, showControls, projectIcons, className }: SessionBrowserProps): import("react").JSX.Element;
1137
1141
  //#endregion
1138
1142
  //#region src/components/agent/SessionItem.d.ts
1139
1143
  type SelectModifiers = {
@@ -1151,6 +1155,9 @@ interface SessionItemProps {
1151
1155
  subagents?: SubagentDisplay;
1152
1156
  onSelect?: (modifiers: SelectModifiers) => void;
1153
1157
  onSelectSubagent?: (toolUseId: string) => void;
1158
+ onSelectShell?: (shellId: string) => void;
1159
+ onKillShell?: (shellId: string) => void;
1160
+ now?: number;
1154
1161
  onRename?: (title: string) => void;
1155
1162
  renameOn?: 'doubleClick' | 'external';
1156
1163
  editing?: boolean;
@@ -1158,7 +1165,7 @@ interface SessionItemProps {
1158
1165
  actions?: ReactNode;
1159
1166
  className?: string;
1160
1167
  }
1161
- declare function SessionItem({ row, active, activeStepKey, showGateway, showProject, projectIcons, subagents, onSelect, onSelectSubagent, onRename, renameOn, editing, onEditingChange, actions, className }: SessionItemProps): import("react").JSX.Element;
1168
+ declare function SessionItem({ row, active, activeStepKey, showGateway, showProject, projectIcons, subagents, onSelect, onSelectSubagent, onSelectShell, onKillShell, now, onRename, renameOn, editing, onEditingChange, actions, className }: SessionItemProps): import("react").JSX.Element;
1162
1169
  //#endregion
1163
1170
  //#region src/components/agent/EngineIcon.d.ts
1164
1171
  declare function engineMark(engine: string, model?: string): string | undefined;
@@ -1171,16 +1178,24 @@ declare function EngineIcon({ engine, model, className }: {
1171
1178
  }): import("react").JSX.Element;
1172
1179
  //#endregion
1173
1180
  //#region src/components/agent/SessionSteps.d.ts
1181
+ type StepKind = 'agent' | 'shell';
1174
1182
  type Step = {
1175
1183
  key: string;
1184
+ kind: StepKind;
1176
1185
  label: string;
1177
1186
  noun: string;
1178
1187
  state: 'done' | 'running' | 'failed';
1179
1188
  detail?: string;
1180
1189
  title: string;
1181
1190
  onSelect: () => void;
1191
+ onKill?: () => void;
1182
1192
  };
1183
- declare function sessionSteps(info: SessionInfo, onSelect: (toolUseId: string) => void, show?: SubagentDisplay): Step[];
1193
+ type ShellStepOptions = {
1194
+ now: number;
1195
+ onSelect: (shellId: string) => void;
1196
+ onKill?: (shellId: string) => void;
1197
+ };
1198
+ declare function sessionSteps(info: SessionInfo, onSelect: (toolUseId: string) => void, show?: SubagentDisplay, shells?: ShellStepOptions): Step[];
1184
1199
  declare function StepRow({ step, active, onSelect }: {
1185
1200
  step: Step;
1186
1201
  active?: boolean;
@@ -1215,6 +1230,69 @@ declare function SubagentStrip({ task, items, label, onBack, terminal, fontSize,
1215
1230
  lineHeight?: number;
1216
1231
  }): import("react").JSX.Element;
1217
1232
  //#endregion
1233
+ //#region src/components/agent/ShellStrip.d.ts
1234
+ interface ShellStripProps {
1235
+ shell: ShellInfo | undefined;
1236
+ label: string;
1237
+ cols?: number;
1238
+ onBack: () => void;
1239
+ onKill?: () => void;
1240
+ terminal: boolean;
1241
+ fontSize?: number;
1242
+ lineHeight?: number;
1243
+ }
1244
+ declare function ShellStrip({ shell, label, cols, onBack, onKill, terminal, fontSize, lineHeight }: ShellStripProps): import("react").JSX.Element;
1245
+ //#endregion
1246
+ //#region src/components/agent/use-shell-frame.d.ts
1247
+ type ShellFrameOptions = {
1248
+ sessionId: string | undefined;
1249
+ items: readonly TranscriptItem[];
1250
+ session: SessionInfo | undefined;
1251
+ shells?: readonly ShellInfo[];
1252
+ reveal?: {
1253
+ toolUseId: string;
1254
+ nonce: number;
1255
+ };
1256
+ openShell?: {
1257
+ shellId: string;
1258
+ nonce: number;
1259
+ };
1260
+ onShellChange?: (shellId: string | undefined) => void;
1261
+ };
1262
+ type ShellFrame = {
1263
+ shellId: string | undefined;
1264
+ enterShell: (shellId: string) => void;
1265
+ leaveShell: () => void;
1266
+ returnReveal: {
1267
+ toolUseId: string;
1268
+ nonce: number;
1269
+ } | undefined;
1270
+ shell: ShellInfo | undefined;
1271
+ label: string;
1272
+ };
1273
+ declare function useShellFrame(options: ShellFrameOptions): ShellFrame;
1274
+ //#endregion
1275
+ //#region src/components/agent/shell-actions.d.ts
1276
+ type ShellActions = {
1277
+ loadOutput: (shellId: string) => Promise<boolean>;
1278
+ verify: (shellId: string) => Promise<boolean>;
1279
+ kill: (shellId: string) => Promise<boolean>;
1280
+ open?: (shellId: string) => void;
1281
+ };
1282
+ declare function ShellActionsProvider({ value, children }: {
1283
+ value: ShellActions | undefined;
1284
+ children: ReactNode;
1285
+ }): import("react").JSX.Element;
1286
+ declare function useShellActions(): ShellActions;
1287
+ //#endregion
1288
+ //#region src/components/terminal/shell-row.d.ts
1289
+ declare const SHELL_GLYPH = "$";
1290
+ declare const SHELL_KILL_GLYPH = "✕";
1291
+ declare function shellInfoLabel(shell: ShellInfo): string;
1292
+ declare function shellTitle(shell: ShellInfo): string;
1293
+ declare function shellInfoFailed(shell: ShellInfo): boolean;
1294
+ declare function shellInfoStatusText(shell: ShellInfo): string;
1295
+ //#endregion
1218
1296
  //#region src/components/agent/ProjectIcon.d.ts
1219
1297
  declare function ProjectIcon({ icon, src, name, className }: {
1220
1298
  icon: ProjectIcon$1 | undefined;
@@ -1272,5 +1350,5 @@ declare function copyText(value: string): Promise<boolean>;
1272
1350
  declare function toolIcon(toolName: string): LucideIcon;
1273
1351
  declare function isMutatingTool(toolName: string): boolean;
1274
1352
  //#endregion
1275
- export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, type ApprovalPromptProps, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, type ClientCommand, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, type ComposerRow, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, type FileLink, type FileLinkHandle, type FileLinkOpener, FileLinkProvider, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PathHit, type PathMatch, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, type Segment, Select, SelectContent, SelectItem, SelectItemText, type SelectModifiers, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionItem, type SessionItemProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionNamesProvider, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, SkillNamesProvider, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, type SubagentToggleProps, TaskList, type TaskListProps, TasksDialog, type TasksDialogProps, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
1353
+ export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, type ApprovalPromptProps, Badge, type BadgeProps, Band, Blank, Button, type ButtonProps, Card, CardContent, CardHeader, CardTitle, type ChipSegment, type ClientCommand, CodeBlock, type CodeBlockProps, Composer, type ComposerFileMatch, type ComposerHandle, type ComposerProps, type ComposerRow, ContextDialog, type ContextDialogProps, ContextRing, Conversation, ConversationContent, type ConversationProps, ConversationScrollButton, CopyAction, CopyButton, type CopyButtonProps, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, type FileCardProps, type FileDeliveredItem, type FileLink, type FileLinkHandle, type FileLinkOpener, FileLinkProvider, HostFilesDialog, type HostFilesDialogProps, Ink, Input, Loader, McpDialog, type McpDialogProps, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, type MessageProps, ModelSelect, type ModelSelectProps, PERMISSION_MODES, type PathHit, type PathMatch, type PermissionModeChoice, type PermissionModeMeta, PermissionModeSelect, type PermissionModeSelectProps, PermissionPrompt, type PermissionPromptProps, ProgressRing, type ProgressRingProps, ProjectIcon, PromptArea, type PromptAreaHandle, type PromptAreaProps, PromptTokenText, QUESTION_BEHAVIORS, type QuestionBehaviorMeta, QuestionPrompt, type QuestionPromptProps, Reasoning, type ReasoningProps, Response, type ResponseProps, Row, type RowProps, SHELL_GLYPH, SHELL_KILL_GLYPH, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, type Segment, Select, SelectContent, SelectItem, SelectItemText, type SelectModifiers, SelectTrigger, SelectValue, SessionBrowser, type SessionBrowserProps, type SessionControls, SessionEmptyState, type SessionEmptyStateProps, SessionInfoDialog, type SessionInfoDialogProps, SessionItem, type SessionItemProps, SessionList, SessionListItem, type SessionListItemProps, type SessionListProps, SessionNamesProvider, SessionPanel, type SessionPanelProps, SessionStatusIcon, type SessionSurfacePanel, type SessionVitals, type ShellActions, ShellActionsProvider, type ShellFrame, type ShellFrameOptions, type ShellStepOptions, ShellStrip, type ShellStripProps, SkillNamesProvider, SkillsDialog, type SkillsDialogProps, Spinner, Splitter, type SplitterProps, StatusBar, type StatusBarProps, type Step, type StepKind, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, type SubagentToggleProps, TaskList, type TaskListProps, TasksDialog, type TasksDialogProps, type TerminalAffordances, TerminalDiff, TerminalItemView, TerminalMarkdown, type TerminalMarkdownProps, type TerminalMetrics, TerminalPermissionPrompt, type TerminalPermissionPromptProps, TerminalQuestionPrompt, type TerminalQuestionPromptProps, TerminalStatusLine, type TerminalStatusLineProps, TerminalSurface, type TerminalSurfaceProps, TerminalTranscript, type TerminalTranscriptProps, type TextSegment, Textarea, Tip, Toaster, type Tone, ToolCallCard, type ToolCallCardProps, type ToolCallItem, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, type TranscriptDensity, TranscriptDensityProvider, type TranscriptFont, type TranscriptProps, type TranscriptVariant, TranscriptVariantProvider, type TriggerConfig, type TriggerSuggestion, UsageDialog, type UsageDialogProps, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, shellInfoFailed, shellInfoLabel, shellInfoStatusText, shellTitle, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useShellActions, useShellFrame, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
1276
1354
  //# sourceMappingURL=index.d.mts.map
package/build/index.mjs CHANGED
@@ -1,11 +1,11 @@
1
- import { $ as TerminalDiff, $t as SelectItem, A as PermissionPrompt, At as ProgressRing, Bt as DialogBody, C as SessionInfoDialog, Ct as hashtagTrigger, D as QuestionPrompt, Dt as PromptArea, E as QUESTION_BEHAVIORS, Et as usePromptAreaState, F as permissionModeMeta, Ft as copyText, G as Composer, Gt as DialogTrigger, H as TaskList, Ht as DialogContent, I as ModelSelect, It as Tip, J as useToolTitle, Jt as MenuItem, K as TerminalSurface, Kt as Menu, L as SkillsDialog, Lt as TooltipContent, M as PERMISSION_MODES, Mt as CodeBlock, N as PermissionModeSelect, Nt as Spinner, O as parseUserQuestions, Ot as plainTextToSegments, P as permissionModeChoices, Pt as CopyButton, Q as parseFileLink, Qt as SelectContent, R as McpDialog, Rt as TooltipProvider, S as STATUS_META, St as commandTrigger, T as TerminalPermissionPrompt, Tt as mentionTrigger, U as ContextDialog, Ut as DialogHeader, V as TasksDialog, Vt as DialogClose, W as contextNote, Wt as DialogRow, X as FileLinkProvider, Xt as MenuTrigger, Y as TerminalMarkdown, Yt as MenuSeparator, Z as useFileLinks, Zt as Select, _ as Loader, _t as matchClientCommand, a as UsageDialog, an as Input, at as CopyAction, b as ConversationScrollButton, bt as rankPeerSessions, c as Transcript, cn as Button, ct as PromptTokenText, d as Message, dt as isMutatingTool, en as SelectItemText, et as previewPatch, f as MessageContent, ft as toolIcon, g as SessionEmptyState, gt as useTranscriptVariant, h as TerminalTranscript, ht as useTranscriptDensity, i as SessionPanel, in as Textarea, it as Row, j as Response, jt as Splitter, k as SubagentStrip, kt as segmentsToPlainText, l as ToolCallCard, ln as buttonVariants, lt as SessionNamesProvider, m as TerminalItemView, mt as TranscriptVariantProvider, n as usePathLinks, nn as SelectValue, nt as Blank, o as UsageMeters, on as Badge, ot as WithActions, p as FileCard, pt as TranscriptDensityProvider, q as ToolTitleProvider, qt as MenuContent, r as matchPath, rn as PortalScope, rt as Ink, s as useMinuteClock, sn as badgeVariants, st as useAffordances, t as resolveAgainstCwd, tn as SelectTrigger, tt as Band, u as Reasoning, un as cn, ut as SkillNamesProvider, v as Conversation, vt as mergeComposerRows, w as TerminalQuestionPrompt, wt as launchTrigger, x as StatusBar, xt as skillPrompt, y as ConversationContent, yt as rankComposerRows, z as HostFilesDialog, zt as Dialog } from "./use-path-links-CepFsMdW.mjs";
1
+ import { $ as useToolTitle, $t as DialogContent, At as rankComposerRows, B as SkillsDialog, Bt as segmentsToPlainText, C as SessionInfoDialog, Ct as toolIcon, D as QuestionPrompt, Dt as useTranscriptVariant, E as QUESTION_BEHAVIORS, Et as useTranscriptDensity, F as PERMISSION_MODES, Ft as launchTrigger, G as TaskList, Gt as CopyButton, H as HostFilesDialog, Ht as Splitter, I as PermissionModeSelect, It as mentionTrigger, J as Composer, Jt as TooltipContent, K as ContextDialog, Kt as copyText, L as permissionModeChoices, Lt as usePromptAreaState, M as SubagentStrip, Mt as skillPrompt, N as PermissionPrompt, Nt as commandTrigger, O as parseUserQuestions, Ot as matchClientCommand, P as Response, Pt as hashtagTrigger, Q as ToolTitleProvider, Qt as DialogClose, R as permissionModeMeta, Rt as PromptArea, S as STATUS_META, St as isMutatingTool, T as TerminalPermissionPrompt, Tt as TranscriptVariantProvider, Ut as CodeBlock, V as McpDialog, Vt as ProgressRing, W as TasksDialog, Wt as Spinner, X as ShellActionsProvider, Xt as Dialog, Y as TerminalSurface, Yt as TooltipProvider, Z as useShellActions, Zt as DialogBody, _ as Loader, _n as Badge, _t as shellInfoStatusText, a as UsageDialog, an as MenuItem, at as previewPatch, b as ConversationScrollButton, bn as buttonVariants, bt as SessionNamesProvider, c as Transcript, cn as Select, ct as Ink, d as Message, dn as SelectItemText, dt as WithActions, en as DialogHeader, et as TerminalMarkdown, f as MessageContent, fn as SelectTrigger, ft as useAffordances, g as SessionEmptyState, gn as Input, gt as shellInfoLabel, h as TerminalTranscript, hn as Textarea, ht as shellInfoFailed, i as SessionPanel, in as MenuContent, it as TerminalDiff, j as ShellStrip, jt as rankPeerSessions, k as useShellFrame, kt as mergeComposerRows, l as ToolCallCard, ln as SelectContent, lt as Row, m as TerminalItemView, mn as PortalScope, mt as SHELL_KILL_GLYPH, n as usePathLinks, nn as DialogTrigger, nt as useFileLinks, o as UsageMeters, on as MenuSeparator, ot as Band, p as FileCard, pn as SelectValue, pt as SHELL_GLYPH, q as contextNote, qt as Tip, r as matchPath, rn as Menu, rt as parseFileLink, s as useMinuteClock, sn as MenuTrigger, st as Blank, t as resolveAgainstCwd, tn as DialogRow, tt as FileLinkProvider, u as Reasoning, un as SelectItem, ut as CopyAction, v as Conversation, vn as badgeVariants, vt as shellTitle, w as TerminalQuestionPrompt, wt as TranscriptDensityProvider, x as StatusBar, xn as cn, xt as SkillNamesProvider, y as ConversationContent, yn as Button, yt as PromptTokenText, z as ModelSelect, zt as plainTextToSegments } from "./use-path-links-BgWXmfAS.mjs";
2
2
  import { C as rateLimitWindowSeconds, S as friendlyModel, _ as formatDuration, b as formatRelativeTime, c as tightestWindow, g as formatCountdown, h as formatCost, i as meterSeverity, m as formatBytes, o as modelLabel, p as formatAgoPrecise, r as meterColorClass, s as statusPresentation, t as contextSeverity, u as windowLabel, v as formatRateLimitWindow, w as toolInputPreview, x as formatTokens, y as formatRateLimitWindowLong } from "./status-kmsBhuFG.mjs";
3
3
  import { Fragment, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Anchor, ArrowRight, Atom, Beaker, BellRing, Bike, Binary, Blocks, Bot, Box, Brain, Briefcase, Brush, Bug, Building2, Cable, Camera, Car, Cat, Check, ChevronDown, CircleAlert, CircleSlash, CircuitBoard, Cloud, Code, Coffee, Cog, Compass, Container, Cpu, CreditCard, Database, Diamond, Dog, Eraser, Feather, Film, Flame, FlaskConical, Folder, Gamepad2, Gauge, Gem, Ghost, Gift, GitBranch, Globe, GraduationCap, Hammer, Hexagon, House, Image, Key, Landmark, Laptop, Layers, Leaf, Library, Lightbulb, Lock, Mail, Map as Map$1, MessageCircle, Mic, Monitor, Moon, Mountain, Music, Network, Newspaper, Notebook, Orbit, Package, Palette, PauseCircle, PenTool, Pencil, Phone, PiggyBank, Plane, Plug, Puzzle, Radar, Radio, Receipt, Rocket, Ruler, Satellite, Scale, Scissors, Search, SearchX, Server, Shield, Ship, ShoppingCart, Signal, Smartphone, Sparkles, Sprout, Square, Star, Sun, Table, Tag, Target, Telescope, Terminal, TestTube, Trash2, TreePine, Trophy, Truck, Umbrella, Users, Wallet, Wand, Waves, Webhook, Wifi, Wrench, X, Zap } from "lucide-react";
6
6
  import { AlertDialog as AlertDialog$1 } from "@base-ui/react/alert-dialog";
7
7
  import { Toaster as Toaster$1, toast } from "sonner";
8
- import { STATE_LABELS, STATE_ORDER, adaptersOf, clearFilters, filterRows, groupRows, hasFacetFilter, isAgentRecord, projectLabel, projectName, projectSubpath, projectsOf, sessionLabel, subagentLabel, subsetSummary, visibleSubagents } from "@workerdeck/protocol";
8
+ import { STATE_LABELS, STATE_ORDER, adaptersOf, clearFilters, filterRows, groupRows, hasFacetFilter, isAgentRecord, projectLabel, projectName, projectSubpath, projectsOf, promotedShells, sessionLabel, subagentLabel, subsetSummary, visibleSubagents } from "@workerdeck/protocol";
9
9
  //#region src/components/ui/Card.tsx
10
10
  function Card({ className, ...props }) {
11
11
  return /* @__PURE__ */ jsx("div", {
@@ -513,9 +513,10 @@ function SessionStatusIcon({ row, className }) {
513
513
  }
514
514
  //#endregion
515
515
  //#region src/components/agent/SessionSteps.tsx
516
- function sessionSteps(info, onSelect, show = "all") {
517
- return visibleSubagents(info, show).filter(isAgentRecord).map((sub) => ({
516
+ function sessionSteps(info, onSelect, show = "all", shells) {
517
+ const agents = visibleSubagents(info, show).filter(isAgentRecord).map((sub) => ({
518
518
  key: sub.toolUseId,
519
+ kind: "agent",
519
520
  label: subagentLabel(sub),
520
521
  noun: "agent",
521
522
  state: stepState(sub.status),
@@ -523,6 +524,23 @@ function sessionSteps(info, onSelect, show = "all") {
523
524
  title: `${subagentLabel(sub)} · ${sub.toolCount} tool${sub.toolCount === 1 ? "" : "s"}`,
524
525
  onSelect: () => onSelect(sub.toolUseId)
525
526
  }));
527
+ if (shells === void 0) return agents;
528
+ return [...agents, ...promotedShells(info, shells.now).map((shell) => shellStep(shell, shells))];
529
+ }
530
+ function shellStep(shell, options) {
531
+ const status = shellInfoStatusText(shell);
532
+ const running = shell.status === "running";
533
+ return {
534
+ key: shell.id,
535
+ kind: "shell",
536
+ label: shellInfoLabel(shell),
537
+ noun: "shell",
538
+ state: shellInfoFailed(shell) ? "failed" : running ? "running" : "done",
539
+ detail: running ? void 0 : status,
540
+ title: `${shellTitle(shell)} · ${status}`,
541
+ onSelect: () => options.onSelect(shell.id),
542
+ onKill: running && options.onKill ? () => options.onKill?.(shell.id) : void 0
543
+ };
526
544
  }
527
545
  function stepState(status) {
528
546
  switch (status) {
@@ -532,32 +550,49 @@ function stepState(status) {
532
550
  }
533
551
  }
534
552
  function StepRow({ step, active = false, onSelect }) {
535
- const body = step.state === "failed" ? "text-danger" : "text-success";
536
- return /* @__PURE__ */ jsxs("button", {
537
- type: "button",
538
- title: step.title,
539
- "aria-current": active || void 0,
540
- onClick: (e) => {
541
- e.stopPropagation();
542
- onSelect();
543
- },
544
- className: cn("flex w-full items-center gap-1.5 rounded-[4px] py-1 pr-2.5 pl-3.5", "text-left text-micro outline-none", active ? "bg-row-selected" : "hover:bg-row-active", body),
545
- children: [
546
- /* @__PURE__ */ jsx(StepIcon, { state: step.state }),
547
- /* @__PURE__ */ jsx("span", {
548
- className: "min-w-0 flex-1 truncate",
549
- children: step.label
550
- }),
551
- step.detail ? /* @__PURE__ */ jsx("span", {
552
- className: "shrink-0 tabular-nums text-fg-4",
553
- children: step.detail
554
- }) : null,
555
- /* @__PURE__ */ jsx(ArrowRight, { className: "size-3.5 shrink-0 text-fg-4" })
556
- ]
553
+ const body = step.state === "failed" ? "text-danger" : step.kind === "shell" ? "text-[var(--wd-shell-accent)]" : "text-success";
554
+ return /* @__PURE__ */ jsxs("div", {
555
+ className: cn("flex w-full items-center rounded-[4px] pr-1.5", active ? "bg-row-selected" : "hover:bg-row-active", body),
556
+ children: [/* @__PURE__ */ jsxs("button", {
557
+ type: "button",
558
+ title: step.title,
559
+ "aria-current": active || void 0,
560
+ onClick: (e) => {
561
+ e.stopPropagation();
562
+ onSelect();
563
+ },
564
+ className: "flex min-w-0 flex-1 items-center gap-1.5 py-1 pr-1 pl-3.5 text-left text-micro outline-none",
565
+ children: [
566
+ /* @__PURE__ */ jsx(StepIcon, { step }),
567
+ /* @__PURE__ */ jsx("span", {
568
+ className: "min-w-0 flex-1 truncate",
569
+ children: step.label
570
+ }),
571
+ step.detail ? /* @__PURE__ */ jsx("span", {
572
+ className: "shrink-0 tabular-nums text-fg-4",
573
+ children: step.detail
574
+ }) : null,
575
+ /* @__PURE__ */ jsx(ArrowRight, { className: "size-3.5 shrink-0 text-fg-4" })
576
+ ]
577
+ }), step.onKill ? /* @__PURE__ */ jsx("button", {
578
+ type: "button",
579
+ "aria-label": `Kill ${step.label}`,
580
+ title: "Kill this shell",
581
+ onClick: (e) => {
582
+ e.stopPropagation();
583
+ step.onKill?.();
584
+ },
585
+ className: "shrink-0 px-1 text-micro leading-none text-fg-4 outline-none hover:text-danger",
586
+ children: "✕"
587
+ }) : null]
557
588
  });
558
589
  }
559
- function StepIcon({ state }) {
560
- switch (state) {
590
+ function StepIcon({ step }) {
591
+ if (step.kind === "shell") return /* @__PURE__ */ jsx("span", {
592
+ className: "w-[11px] shrink-0 text-center leading-none",
593
+ children: "$"
594
+ });
595
+ switch (step.state) {
561
596
  case "running": return /* @__PURE__ */ jsx(Spinner, { className: "size-[11px] shrink-0" });
562
597
  case "failed": return /* @__PURE__ */ jsx(CircleAlert, { className: "size-[11px] shrink-0" });
563
598
  default: return /* @__PURE__ */ jsx(Check, { className: "size-[11px] shrink-0" });
@@ -570,7 +605,7 @@ const NO_MODIFIERS = {
570
605
  ctrl: false,
571
606
  alt: false
572
607
  };
573
- function SessionItem({ row, active = false, activeStepKey, showGateway, showProject = true, projectIcons, subagents = "active", onSelect, onSelectSubagent, onRename, renameOn = "doubleClick", editing, onEditingChange, actions, className }) {
608
+ function SessionItem({ row, active = false, activeStepKey, showGateway, showProject = true, projectIcons, subagents = "active", onSelect, onSelectSubagent, onSelectShell, onKillShell, now, onRename, renameOn = "doubleClick", editing, onEditingChange, actions, className }) {
574
609
  const { info } = row;
575
610
  const [ownEditing, setOwnEditing] = useState(false);
576
611
  const isEditing = editing ?? ownEditing;
@@ -605,8 +640,12 @@ function SessionItem({ row, active = false, activeStepKey, showGateway, showProj
605
640
  }), project]
606
641
  }, "project"));
607
642
  for (const extra of extras) parts.push(/* @__PURE__ */ jsx("span", { children: extra }, extra));
608
- const steps = sessionSteps(info, (toolUseId) => onSelectSubagent ? onSelectSubagent(toolUseId) : onSelect?.(NO_MODIFIERS), subagents);
609
- const holdsOpenAgent = steps.some((s) => s.key === activeStepKey);
643
+ const steps = sessionSteps(info, (toolUseId) => onSelectSubagent ? onSelectSubagent(toolUseId) : onSelect?.(NO_MODIFIERS), subagents, {
644
+ now: now ?? Date.now(),
645
+ onSelect: (shellId) => onSelectShell ? onSelectShell(shellId) : onSelect?.(NO_MODIFIERS),
646
+ onKill: onKillShell
647
+ });
648
+ const holdsOpenStep = steps.some((s) => s.key === activeStepKey);
610
649
  return /* @__PURE__ */ jsxs("div", {
611
650
  "data-slot": "session-item",
612
651
  "data-active": active || void 0,
@@ -631,7 +670,7 @@ function SessionItem({ row, active = false, activeStepKey, showGateway, showProj
631
670
  });
632
671
  }
633
672
  },
634
- className: cn("group flex w-full cursor-pointer flex-col p-1 text-left outline-none", "rounded-[4px] transition-colors focus-visible:ring-2 focus-visible:ring-ring", holdsOpenAgent ? "bg-row-selected-weak" : active ? "bg-row-selected" : "hover:bg-row-hover", className),
673
+ className: cn("group flex w-full cursor-pointer flex-col p-1 text-left outline-none", "rounded-[4px] transition-colors focus-visible:ring-2 focus-visible:ring-ring", holdsOpenStep ? "bg-row-selected-weak" : active ? "bg-row-selected" : "hover:bg-row-hover", className),
635
674
  children: [/* @__PURE__ */ jsxs("div", {
636
675
  className: "flex flex-col gap-1 py-0.5 pr-0.5 pl-1.5",
637
676
  children: [/* @__PURE__ */ jsxs("div", {
@@ -741,7 +780,7 @@ function NameEditor({ initial, onCommit, onCancel }) {
741
780
  function rowShapeClass(active) {
742
781
  return cn("px-2 py-1.5 hover:bg-row-hover", active ? "mr-1 ml-0 rounded-r-md border-l-4 border-l-accent" : "mx-1 rounded-md");
743
782
  }
744
- function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, emptyState, showControls = true, projectIcons, className }) {
783
+ function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeSubagentId, activeShellId, now, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell, emptyState, showControls = true, projectIcons, className }) {
745
784
  const visible = useMemo(() => filterRows(rows, config, scope), [
746
785
  rows,
747
786
  config,
@@ -964,6 +1003,8 @@ function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeS
964
1003
  row,
965
1004
  active: row.info.id === activeId,
966
1005
  activeSubagentId,
1006
+ activeShellId,
1007
+ now,
967
1008
  showGateway: gateways.length > 1 && config.groupBy !== "gateway",
968
1009
  showProject: config.groupBy !== "project",
969
1010
  subagents: config.subagents,
@@ -972,7 +1013,9 @@ function SessionBrowser({ rows, config, onConfigChange, scope, activeId, activeS
972
1013
  onDelete,
973
1014
  onRename,
974
1015
  onClearContext,
975
- onSelectSubagent
1016
+ onSelectSubagent,
1017
+ onSelectShell,
1018
+ onKillShell
976
1019
  }, `${row.hostId}:${row.info.id}`))]
977
1020
  }, group.key))
978
1021
  })
@@ -983,19 +1026,22 @@ function iconSrcOf(row, icons) {
983
1026
  const icon = row?.info.project?.icon;
984
1027
  return icon?.type === "image" ? icons?.[icon.hash] : void 0;
985
1028
  }
986
- function SessionRowItem({ row, active, activeSubagentId, showGateway, showProject = true, subagents, projectIcons, onSelect, onDelete, onRename, onClearContext, onSelectSubagent }) {
1029
+ function SessionRowItem({ row, active, activeSubagentId, activeShellId, now, showGateway, showProject = true, subagents, projectIcons, onSelect, onDelete, onRename, onClearContext, onSelectSubagent, onSelectShell, onKillShell }) {
987
1030
  const { info } = row;
988
1031
  const [editing, setEditing] = useState(false);
989
1032
  return /* @__PURE__ */ jsx(SessionItem, {
990
1033
  row,
991
1034
  active: active === true,
992
- activeStepKey: activeSubagentId,
1035
+ activeStepKey: activeShellId ?? activeSubagentId,
1036
+ now,
993
1037
  showGateway,
994
1038
  showProject,
995
1039
  subagents,
996
1040
  projectIcons,
997
1041
  onSelect: () => onSelect?.(row),
998
1042
  onSelectSubagent: onSelectSubagent ? (id) => onSelectSubagent(row, id) : void 0,
1043
+ onSelectShell: onSelectShell ? (id) => onSelectShell(row, id) : void 0,
1044
+ onKillShell: onKillShell ? (id) => onKillShell(row, id) : void 0,
999
1045
  onRename: onRename ? (title) => onRename(row, title) : void 0,
1000
1046
  renameOn: "external",
1001
1047
  editing,
@@ -1161,6 +1207,6 @@ function SubagentToggle({ value, onChange, className }) {
1161
1207
  })] });
1162
1208
  }
1163
1209
  //#endregion
1164
- export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, Band, Blank, Button, Card, CardContent, CardHeader, CardTitle, CodeBlock, Composer, ContextDialog, ContextRing, Conversation, ConversationContent, ConversationScrollButton, CopyAction, CopyButton, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, FileLinkProvider, HostFilesDialog, Ink, Input, Loader, McpDialog, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, ModelSelect, PERMISSION_MODES, PermissionModeSelect, PermissionPrompt, ProgressRing, ProjectIcon, PromptArea, PromptTokenText, QUESTION_BEHAVIORS, QuestionPrompt, Reasoning, Response, Row, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, SessionEmptyState, SessionInfoDialog, SessionItem, SessionList, SessionListItem, SessionNamesProvider, SessionPanel, SessionStatusIcon, SkillNamesProvider, SkillsDialog, Spinner, Splitter, StatusBar, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, TaskList, TasksDialog, TerminalDiff, TerminalItemView, TerminalMarkdown, TerminalPermissionPrompt, TerminalQuestionPrompt, TerminalStatusLine, TerminalSurface, TerminalTranscript, Textarea, Tip, Toaster, ToolCallCard, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, TranscriptDensityProvider, TranscriptVariantProvider, UsageDialog, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
1210
+ export { AlertDialog, AlertDialogClose, AlertDialogContent, AlertDialogDescription, AlertDialogTitle, AlertDialogTrigger, Badge, Band, Blank, Button, Card, CardContent, CardHeader, CardTitle, CodeBlock, Composer, ContextDialog, ContextRing, Conversation, ConversationContent, ConversationScrollButton, CopyAction, CopyButton, Dialog, DialogBody, DialogClose, DialogContent, DialogHeader, DialogRow, DialogTrigger, Empty, EmptyKey, EngineIcon, FileCard, FileLinkProvider, HostFilesDialog, Ink, Input, Loader, McpDialog, Menu, MenuContent, MenuItem, MenuSeparator, MenuTrigger, Message, MessageContent, ModelSelect, PERMISSION_MODES, PermissionModeSelect, PermissionPrompt, ProgressRing, ProjectIcon, PromptArea, PromptTokenText, QUESTION_BEHAVIORS, QuestionPrompt, Reasoning, Response, Row, SHELL_GLYPH, SHELL_KILL_GLYPH, STATUS_META, SUBAGENT_DISPLAY_META, SUBAGENT_DISPLAY_ORDER, Select, SelectContent, SelectItem, SelectItemText, SelectTrigger, SelectValue, SessionBrowser, SessionEmptyState, SessionInfoDialog, SessionItem, SessionList, SessionListItem, SessionNamesProvider, SessionPanel, SessionStatusIcon, ShellActionsProvider, ShellStrip, SkillNamesProvider, SkillsDialog, Spinner, Splitter, StatusBar, StepRow, SubagentDisplayIcon, SubagentStrip, SubagentToggle, TaskList, TasksDialog, TerminalDiff, TerminalItemView, TerminalMarkdown, TerminalPermissionPrompt, TerminalQuestionPrompt, TerminalStatusLine, TerminalSurface, TerminalTranscript, Textarea, Tip, Toaster, ToolCallCard, ToolTitleProvider, TooltipContent, TooltipProvider, Transcript, TranscriptDensityProvider, TranscriptVariantProvider, UsageDialog, UsageMeters, WithActions, badgeVariants, buttonVariants, cn, commandTrigger, copyText, engineMark, formatAgoPrecise, formatBytes, formatCost, formatCountdown, formatDuration, formatRateLimitWindow, formatRateLimitWindowLong, formatRelativeTime, formatTokens, friendlyModel, getChipsByTrigger, hashtagTrigger, isMutatingTool, isSegmentsEmpty, launchTrigger, matchClientCommand, matchPath, mentionTrigger, mergeComposerRows, parseFileLink, parseUserQuestions, permissionModeChoices, permissionModeMeta, plainTextToSegments, previewPatch, rankComposerRows, rankPeerSessions, rateLimitWindowSeconds, resolveAgainstCwd, rowShapeClass, segmentsToPlainText, sessionSteps, shellInfoFailed, shellInfoLabel, shellInfoStatusText, shellTitle, skillPrompt, toast, toolIcon, toolInputPreview, useAffordances, useFileLinks, useMinuteClock, usePathLinks, usePromptAreaState, useShellActions, useShellFrame, useToolTitle, useTranscriptDensity, useTranscriptVariant, vendorMarkClass, vendorTextClass };
1165
1211
 
1166
1212
  //# sourceMappingURL=index.mjs.map