@workerdeck/ui 2.11.0 → 2.13.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,12 +5,12 @@ 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, 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, SlidersHorizontal, 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, SlidersHorizontal, Sparkles, Square, SquarePen, Terminal, TriangleAlert, Users, 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
12
  import { PRICING_NOTE, PROTOCOL_VERSION, UNPRICED_WARN_SHARE, canonicalModel, costOf, costOfByModel, isPeerSendTool, mergeUsage, orderUsageWindows, parseTodoWriteInput, parseUserQuestions, peerDeliveredTo, pricingAgeNote, rateFor, sessionTasks, subagentLabel, taskCountLabel, taskSummary, toolTitle, totalTokens, unknownBasisModels, usageInfos, usageIsStale, visibleTasks } from "@workerdeck/protocol";
13
- import { recapLine, scanPromptTokens, summarizeSince, useAttachments, useClaudeSession, useDraft, useHostFileSearch, useProfileUsage, useToolCallHost } from "@workerdeck/react";
13
+ import { recapLine, scanPromptTokens, summarizeSince, useAttachments, useClaudeSession, useDraft, useHostFileSearch, usePeerSessions, useProfileUsage, useToolCallHost } from "@workerdeck/react";
14
14
  import { Streamdown } from "streamdown";
15
15
  import { StickToBottom, useStickToBottomContext } from "use-stick-to-bottom";
16
16
  import { createPortal } from "react-dom";
@@ -4517,6 +4517,25 @@ function rankComposerRows(query, rows) {
4517
4517
  scored.sort((a, b) => b.score - a.score || KIND_ORDER[a.row.kind] - KIND_ORDER[b.row.kind] || a.index - b.index);
4518
4518
  return scored.map(({ row }) => row);
4519
4519
  }
4520
+ function rankPeerSessions(query, peers) {
4521
+ const needle = query.trim();
4522
+ if (!needle) return [...peers];
4523
+ const scored = [];
4524
+ peers.forEach((peer, index) => {
4525
+ const score = matchScore(needle, [
4526
+ peer.slug,
4527
+ peer.label,
4528
+ ...peer.slug.split("-")
4529
+ ]);
4530
+ if (score > 0) scored.push({
4531
+ score,
4532
+ index,
4533
+ peer
4534
+ });
4535
+ });
4536
+ scored.sort((a, b) => b.score - a.score || a.index - b.index);
4537
+ return scored.map(({ peer }) => peer);
4538
+ }
4520
4539
  function matchClientCommand(text, commands) {
4521
4540
  const match = /^\/([\w:-]+)[ \t]*([\s\S]*)$/.exec(text.trim());
4522
4541
  if (!match) return;
@@ -4705,15 +4724,26 @@ function usePulse(animated) {
4705
4724
  //#endregion
4706
4725
  //#region src/components/agent/PromptTokenText.tsx
4707
4726
  const SkillNamesContext = createContext(void 0);
4727
+ const SessionNamesContext = createContext(void 0);
4708
4728
  function SkillNamesProvider({ names, children }) {
4709
4729
  return /* @__PURE__ */ jsx(SkillNamesContext.Provider, {
4710
4730
  value: names,
4711
4731
  children
4712
4732
  });
4713
4733
  }
4734
+ function SessionNamesProvider({ names, children }) {
4735
+ return /* @__PURE__ */ jsx(SessionNamesContext.Provider, {
4736
+ value: names,
4737
+ children
4738
+ });
4739
+ }
4714
4740
  function PromptTokenText({ text, className }) {
4715
4741
  const skills = useContext(SkillNamesContext);
4716
- const tokens = scanPromptTokens(text, { skills });
4742
+ const sessions = useContext(SessionNamesContext);
4743
+ const tokens = scanPromptTokens(text, {
4744
+ skills,
4745
+ sessions
4746
+ });
4717
4747
  if (tokens.length === 0) return /* @__PURE__ */ jsx("span", {
4718
4748
  className,
4719
4749
  children: text
@@ -5972,7 +6002,7 @@ function TerminalSurface({ fontSize, lineHeight, bleed, affordances, className,
5972
6002
  //#region src/components/agent/Composer.tsx
5973
6003
  const SHELL_PLACEHOLDER = "Run a command on the host…";
5974
6004
  const SHELL_HINT = "! shell mode · esc to exit";
5975
- function Composer({ onSend, onInterrupt, busy, disabled, placeholder = "Message the agent…", commands, skills, clientCommands, onSearchFiles, onShellCommand, attachments, toolbar, layout = "stacked", fontSize, lineHeight, affordances, draft, className, ref }) {
6005
+ function Composer({ onSend, onInterrupt, busy, disabled, placeholder = "Message the agent…", commands, skills, clientCommands, onSearchFiles, peers, onShellCommand, attachments, toolbar, layout = "stacked", fontSize, lineHeight, affordances, draft, className, ref }) {
5976
6006
  const inline = layout === "inline";
5977
6007
  const terminal = useTranscriptVariant() === "terminal";
5978
6008
  const [initialDraft] = useState(() => draft?.initialText ?? "");
@@ -6045,6 +6075,23 @@ function Composer({ onSend, onInterrupt, busy, disabled, placeholder = "Message
6045
6075
  chipClassName: "font-mono",
6046
6076
  emptyMessage: "No matching files"
6047
6077
  }));
6078
+ if (peers?.length) configured.push(hashtagTrigger({
6079
+ accessibilityLabel: "session",
6080
+ onSearch: (query) => rankPeerSessions(query, peers).map((peer) => ({
6081
+ value: peer.slug,
6082
+ label: peer.label,
6083
+ description: [
6084
+ peer.engine,
6085
+ peer.project,
6086
+ peer.status
6087
+ ].filter(Boolean).join(" · "),
6088
+ icon: /* @__PURE__ */ jsx(Users, { className: "size-3.5 text-fg-3" })
6089
+ })),
6090
+ onSelect: (suggestion) => suggestion.value,
6091
+ chipStyle: "inline",
6092
+ chipClassName: "font-mono",
6093
+ emptyMessage: "No matching sessions"
6094
+ }));
6048
6095
  if (onShellCommand) configured.push(launchTrigger({
6049
6096
  char: "!",
6050
6097
  accessibilityLabel: "shell mode",
@@ -6056,6 +6103,7 @@ function Composer({ onSend, onInterrupt, busy, disabled, placeholder = "Message
6056
6103
  skills,
6057
6104
  clientCommands,
6058
6105
  onSearchFiles,
6106
+ peers,
6059
6107
  onShellCommand
6060
6108
  ]);
6061
6109
  const saveDraft = draft?.save;
@@ -6095,6 +6143,10 @@ function Composer({ onSend, onInterrupt, busy, disabled, placeholder = "Message
6095
6143
  key: "@",
6096
6144
  what: "mention a file"
6097
6145
  } : void 0,
6146
+ peers?.length ? {
6147
+ key: "#",
6148
+ what: "refer to another session"
6149
+ } : void 0,
6098
6150
  onShellCommand ? {
6099
6151
  key: "!",
6100
6152
  what: "run a shell command"
@@ -11322,7 +11374,7 @@ function TerminalShell({ active, fontSize, lineHeight, affordances, children })
11322
11374
  children
11323
11375
  });
11324
11376
  }
11325
- function Transcript({ state, fileUrl, attachmentUrl, canBrowseFiles, hostImage, variant = "cards", density = "comfortable", fontSize, lineHeight, affordances, stickyPrompt = false, scrubber, bookmarks, replaying = false, catchUp, jumpToRecapRef, repinRef, reveal, frame, onOpenSubagent, emptyState, className }) {
11377
+ function Transcript({ state, fileUrl, attachmentUrl, canBrowseFiles, hostImage, variant = "cards", density = "comfortable", fontSize, lineHeight, affordances, stickyPrompt = false, scrubber, bookmarks, sessionNames, replaying = false, catchUp, jumpToRecapRef, repinRef, reveal, frame, onOpenSubagent, emptyState, className }) {
11326
11378
  const terminal = variant === "terminal";
11327
11379
  const items = useMemo(() => frame ? subagentItems(state.items, frame.parentToolUseId) : state.items, [state.items, frame]);
11328
11380
  const frameTask = useMemo(() => frame ? state.items.find((item) => item.kind === "tool_call" && item.id === frame.parentToolUseId) : void 0, [state.items, frame]);
@@ -11362,79 +11414,82 @@ function Transcript({ state, fileUrl, attachmentUrl, canBrowseFiles, hostImage,
11362
11414
  value: variant,
11363
11415
  children: /* @__PURE__ */ jsx(SkillNamesProvider, {
11364
11416
  names: skillNames,
11365
- children: /* @__PURE__ */ jsxs(Conversation, {
11366
- className: cn(replaying && "invisible", className),
11367
- children: [
11368
- /* @__PURE__ */ jsx(ConversationContent, {
11369
- className: cn(terminal && "gap-0 p-0"),
11370
- children: /* @__PURE__ */ jsxs(TerminalShell, {
11371
- active: terminal,
11372
- fontSize,
11373
- lineHeight,
11374
- affordances,
11375
- children: [
11376
- frame ? frameTask === void 0 && !replaying ? /* @__PURE__ */ jsx("div", {
11377
- className: cn(terminal ? "term-row text-fg-4" : "p-4 text-body-sm text-fg-4"),
11378
- children: "This sub-agent's work is not in this transcript."
11379
- }) : null : items.length === 0 && state.status !== "starting" ? emptyState !== void 0 ? emptyState : /* @__PURE__ */ jsx(SessionEmptyState, {
11380
- cwd: state.cwd,
11381
- hasCommands: !!state.commands?.length,
11382
- hasSkills: !!state.skills?.some((s) => s.enabled),
11383
- canBrowseFiles
11384
- }) : null,
11385
- frame && frameTask === void 0 && !replaying ? null : /* @__PURE__ */ jsx(TranscriptRows, {
11386
- rows,
11387
- boundary,
11388
- since: catchUp?.since,
11389
- terminal,
11390
- replaying,
11391
- stickyPrompt: !frame && stickyPrompt,
11392
- gap,
11393
- fontSize,
11394
- lineHeight,
11395
- items,
11396
- pendingApprovals: state.pendingApprovals,
11397
- scrubber,
11398
- bookmarks: frame ? void 0 : bookmarks,
11399
- affordances,
11400
- fileUrl,
11401
- attachmentUrl,
11402
- hostImage,
11403
- jumpToRecapRef,
11404
- repinRef,
11405
- reveal: frame ? void 0 : reveal,
11406
- frameParentId: frame?.parentToolUseId,
11407
- onOpenSubagent: frame ? void 0 : onOpenSubagent
11408
- }),
11409
- (frame ? frameTask !== void 0 && taskBusy(frameTask, items) : showLoader(state)) ? terminal ? /* @__PURE__ */ jsxs(Fragment$1, { children: [state.items.length > 0 ? /* @__PURE__ */ jsx("div", {
11410
- className: "term-blank",
11411
- "aria-hidden": true
11412
- }) : null, /* @__PURE__ */ jsx(WorkingRow, {
11413
- label: state.status === "starting" ? "Starting…" : "Working…",
11414
- startedAt: runStartedAt,
11415
- tokens: state.contextUsage?.totalTokens
11416
- })] }) : /* @__PURE__ */ jsx(Loader, { label: state.status === "starting" ? "Starting session…" : void 0 }) : null
11417
- ]
11418
- })
11419
- }),
11420
- /* @__PURE__ */ jsx(ConversationScrollButton, {}),
11421
- replaying ? /* @__PURE__ */ jsx("div", {
11422
- "data-slot": "transcript-hold",
11423
- "aria-hidden": true,
11424
- className: "wd-hold-appear visible pointer-events-none absolute inset-0 overflow-hidden",
11425
- children: /* @__PURE__ */ jsx("div", {
11426
- className: cn("mx-auto w-full max-w-[var(--wd-transcript-max-width)]", !terminal && "px-4 py-4"),
11427
- children: terminal ? /* @__PURE__ */ jsx(TerminalSurface, {
11417
+ children: /* @__PURE__ */ jsx(SessionNamesProvider, {
11418
+ names: sessionNames,
11419
+ children: /* @__PURE__ */ jsxs(Conversation, {
11420
+ className: cn(replaying && "invisible", className),
11421
+ children: [
11422
+ /* @__PURE__ */ jsx(ConversationContent, {
11423
+ className: cn(terminal && "gap-0 p-0"),
11424
+ children: /* @__PURE__ */ jsxs(TerminalShell, {
11425
+ active: terminal,
11428
11426
  fontSize,
11429
11427
  lineHeight,
11430
- affordances: false,
11431
- bleed: "1ch",
11432
- className: "term-transcript",
11433
- children: /* @__PURE__ */ jsx(WorkingRow, { label: "Loading…" })
11434
- }) : /* @__PURE__ */ jsx(Loader, { label: "Loading session…" })
11435
- })
11436
- }) : null
11437
- ]
11428
+ affordances,
11429
+ children: [
11430
+ frame ? frameTask === void 0 && !replaying ? /* @__PURE__ */ jsx("div", {
11431
+ className: cn(terminal ? "term-row text-fg-4" : "p-4 text-body-sm text-fg-4"),
11432
+ children: "This sub-agent's work is not in this transcript."
11433
+ }) : null : items.length === 0 && state.status !== "starting" ? emptyState !== void 0 ? emptyState : /* @__PURE__ */ jsx(SessionEmptyState, {
11434
+ cwd: state.cwd,
11435
+ hasCommands: !!state.commands?.length,
11436
+ hasSkills: !!state.skills?.some((s) => s.enabled),
11437
+ canBrowseFiles
11438
+ }) : null,
11439
+ frame && frameTask === void 0 && !replaying ? null : /* @__PURE__ */ jsx(TranscriptRows, {
11440
+ rows,
11441
+ boundary,
11442
+ since: catchUp?.since,
11443
+ terminal,
11444
+ replaying,
11445
+ stickyPrompt: !frame && stickyPrompt,
11446
+ gap,
11447
+ fontSize,
11448
+ lineHeight,
11449
+ items,
11450
+ pendingApprovals: state.pendingApprovals,
11451
+ scrubber,
11452
+ bookmarks: frame ? void 0 : bookmarks,
11453
+ affordances,
11454
+ fileUrl,
11455
+ attachmentUrl,
11456
+ hostImage,
11457
+ jumpToRecapRef,
11458
+ repinRef,
11459
+ reveal: frame ? void 0 : reveal,
11460
+ frameParentId: frame?.parentToolUseId,
11461
+ onOpenSubagent: frame ? void 0 : onOpenSubagent
11462
+ }),
11463
+ (frame ? frameTask !== void 0 && taskBusy(frameTask, items) : showLoader(state)) ? terminal ? /* @__PURE__ */ jsxs(Fragment$1, { children: [state.items.length > 0 ? /* @__PURE__ */ jsx("div", {
11464
+ className: "term-blank",
11465
+ "aria-hidden": true
11466
+ }) : null, /* @__PURE__ */ jsx(WorkingRow, {
11467
+ label: state.status === "starting" ? "Starting…" : "Working…",
11468
+ startedAt: runStartedAt,
11469
+ tokens: state.contextUsage?.totalTokens
11470
+ })] }) : /* @__PURE__ */ jsx(Loader, { label: state.status === "starting" ? "Starting session…" : void 0 }) : null
11471
+ ]
11472
+ })
11473
+ }),
11474
+ /* @__PURE__ */ jsx(ConversationScrollButton, {}),
11475
+ replaying ? /* @__PURE__ */ jsx("div", {
11476
+ "data-slot": "transcript-hold",
11477
+ "aria-hidden": true,
11478
+ className: "wd-hold-appear visible pointer-events-none absolute inset-0 overflow-hidden",
11479
+ children: /* @__PURE__ */ jsx("div", {
11480
+ className: cn("mx-auto w-full max-w-[var(--wd-transcript-max-width)]", !terminal && "px-4 py-4"),
11481
+ children: terminal ? /* @__PURE__ */ jsx(TerminalSurface, {
11482
+ fontSize,
11483
+ lineHeight,
11484
+ affordances: false,
11485
+ bleed: "1ch",
11486
+ className: "term-transcript",
11487
+ children: /* @__PURE__ */ jsx(WorkingRow, { label: "Loading…" })
11488
+ }) : /* @__PURE__ */ jsx(Loader, { label: "Loading session…" })
11489
+ })
11490
+ }) : null
11491
+ ]
11492
+ })
11438
11493
  })
11439
11494
  })
11440
11495
  });
@@ -11767,7 +11822,7 @@ const INTERACTIVE = [
11767
11822
  "[role=\"radio\"]",
11768
11823
  "[role=\"tab\"]"
11769
11824
  ].join(",");
11770
- function SessionPanel({ client, sessionId, header, panelSurface = "internal", statusSurface = "internal", statusPlacement = "top", onOpenPanel, onVitals, transcriptVariant = "cards", transcriptDensity = "comfortable", transcriptFont = "sans", affordances, terminalMetrics, scrubber = false, bookmarks, onToggleBookmark, reveal, subagents, openSubagent, onSubagentChange, stickyPrompt = false, controlsSurface = "internal", onControls, focusComposerOnClick = false, unseen, readOnly = false, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }) {
11825
+ function SessionPanel({ client, sessionId, header, panelSurface = "internal", statusSurface = "internal", statusPlacement = "top", onOpenPanel, onVitals, transcriptVariant = "cards", transcriptDensity = "comfortable", transcriptFont = "sans", affordances, terminalMetrics, scrubber = false, bookmarks, peerMentions = true, onToggleBookmark, reveal, subagents, openSubagent, onSubagentChange, stickyPrompt = false, controlsSurface = "internal", onControls, focusComposerOnClick = false, unseen, readOnly = false, approvalPrompts, toolHost, clientTools, cacheTranscript, emptyState, onLinkClick, onOpenFile, fontSize, className }) {
11771
11826
  const effectiveTermFontSize = terminalMetrics?.fontSize ?? fontSize;
11772
11827
  const effectiveTermLineHeight = terminalMetrics?.lineHeight ?? (fontSize !== void 0 ? Math.round(fontSize * (18 / 13)) : void 0);
11773
11828
  const external = panelSurface === "external";
@@ -11999,6 +12054,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
11999
12054
  engine: state.engine
12000
12055
  });
12001
12056
  const hostFiles = useHostFileSearch(client, state.cwd);
12057
+ const peers = usePeerSessions(client, sessionId, peerMentions);
12002
12058
  const draft = useDraft(client, sessionId);
12003
12059
  const searchComposerFiles = useCallback((query, options) => hostFiles.search(query, {
12004
12060
  ...options,
@@ -12160,6 +12216,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
12160
12216
  fileUrl: sessionId ? (path) => client.sessionFileUrl(sessionId, path) : void 0,
12161
12217
  attachmentUrl: sessionId ? (id) => client.attachmentUrl(sessionId, id) : void 0,
12162
12218
  canBrowseFiles: hostFiles.available,
12219
+ sessionNames: peers.names,
12163
12220
  hostImage,
12164
12221
  variant: transcriptVariant,
12165
12222
  density: transcriptDensity,
@@ -12267,6 +12324,7 @@ function SessionPanel({ client, sessionId, header, panelSurface = "internal", st
12267
12324
  attachments,
12268
12325
  draft,
12269
12326
  onSearchFiles: hostFiles.available ? searchComposerFiles : void 0,
12327
+ peers: peers.peers,
12270
12328
  onShellCommand: shell ? runShell : void 0,
12271
12329
  layout: controlsExternal ? "inline" : "stacked",
12272
12330
  toolbar: controlsExternal ? void 0 : sessionControls,
@@ -12508,6 +12566,6 @@ function resolveAgainstCwd(path, cwd) {
12508
12566
  return parseFileLink(path, cwd)?.path ?? path;
12509
12567
  }
12510
12568
  //#endregion
12511
- export { TerminalDiff as $, SelectValue as $t, PermissionPrompt as A, Spinner as At, EntryIcon as B, DialogHeader as Bt, SessionInfoDialog as C, usePromptAreaState as Ct, QuestionPrompt as D, ProgressRing as Dt, QUESTION_BEHAVIORS as E, segmentsToPlainText as Et, permissionModeMeta as F, TooltipProvider as Ft, Composer as G, MenuItem as Gt, TaskList as H, DialogTrigger as Ht, ModelSelect as I, Dialog$1 as It, useToolTitle as J, Select$1 as Jt, TerminalSurface as K, MenuSeparator as Kt, SkillsDialog as L, DialogBody as Lt, PERMISSION_MODES as M, copyText as Mt, PermissionModeSelect as N, Tip as Nt, parseUserQuestions as O, Splitter as Ot, permissionModeChoices as P, TooltipContent as Pt, parseFileLink as Q, SelectTrigger as Qt, McpDialog as R, DialogClose as Rt, STATUS_META as S, mentionTrigger as St, TerminalPermissionPrompt as T, plainTextToSegments as Tt, ContextDialog as U, Menu$1 as Ut, TasksDialog as V, DialogRow as Vt, contextNote as W, MenuContent as Wt, FileLinkProvider as X, SelectItem as Xt, TerminalMarkdown as Y, SelectContent as Yt, useFileLinks as Z, SelectItemText as Zt, Loader as _, rankComposerRows as _t, UsageDialog as a, Button as an, CopyAction as at, ConversationScrollButton as b, hashtagTrigger as bt, Transcript as c, PromptTokenText as ct, Message as d, TranscriptDensityProvider as dt, PortalScope as en, previewPatch as et, MessageContent as f, TranscriptVariantProvider as ft, SessionEmptyState as g, mergeComposerRows as gt, TerminalTranscript as h, matchClientCommand as ht, SessionPanel as i, badgeVariants as in, Row as it, Response as j, CopyButton as jt, SubagentStrip as k, CodeBlock as kt, ToolCallCard as l, isMutatingTool as lt, TerminalItemView as m, useTranscriptVariant as mt, usePathLinks as n, Input as nn, Blank as nt, UsageMeters as o, buttonVariants as on, WithActions as ot, FileCard as p, useTranscriptDensity as pt, ToolTitleProvider as q, MenuTrigger as qt, matchPath as r, Badge as rn, Ink as rt, useMinuteClock as s, cn as sn, useAffordances as st, resolveAgainstCwd as t, Textarea as tn, Band as tt, Reasoning as u, toolIcon as ut, Conversation as v, skillPrompt as vt, TerminalQuestionPrompt as w, PromptArea as wt, StatusBar as x, launchTrigger as xt, ConversationContent as y, commandTrigger as yt, HostFilesDialog as z, DialogContent as zt };
12569
+ export { TerminalDiff as $, SelectItem as $t, PermissionPrompt as A, ProgressRing as At, EntryIcon as B, DialogBody as Bt, SessionInfoDialog as C, hashtagTrigger as Ct, QuestionPrompt as D, PromptArea as Dt, QUESTION_BEHAVIORS as E, usePromptAreaState as Et, permissionModeMeta as F, copyText as Ft, Composer as G, DialogTrigger as Gt, TaskList as H, DialogContent as Ht, ModelSelect as I, Tip as It, useToolTitle as J, MenuItem as Jt, TerminalSurface as K, Menu$1 as Kt, SkillsDialog as L, TooltipContent as Lt, PERMISSION_MODES as M, CodeBlock as Mt, PermissionModeSelect as N, Spinner as Nt, parseUserQuestions as O, plainTextToSegments as Ot, permissionModeChoices as P, CopyButton as Pt, parseFileLink as Q, SelectContent as Qt, McpDialog as R, TooltipProvider as Rt, STATUS_META as S, commandTrigger as St, TerminalPermissionPrompt as T, mentionTrigger as Tt, ContextDialog as U, DialogHeader as Ut, TasksDialog as V, DialogClose as Vt, contextNote as W, DialogRow as Wt, FileLinkProvider as X, MenuTrigger as Xt, TerminalMarkdown as Y, MenuSeparator as Yt, useFileLinks as Z, Select$1 as Zt, Loader as _, matchClientCommand as _t, UsageDialog as a, Input as an, CopyAction as at, ConversationScrollButton as b, rankPeerSessions as bt, Transcript as c, Button as cn, PromptTokenText as ct, Message as d, isMutatingTool as dt, SelectItemText as en, previewPatch as et, MessageContent as f, toolIcon as ft, SessionEmptyState as g, useTranscriptVariant as gt, TerminalTranscript as h, useTranscriptDensity as ht, SessionPanel as i, Textarea as in, Row as it, Response as j, Splitter as jt, SubagentStrip as k, segmentsToPlainText as kt, ToolCallCard as l, buttonVariants as ln, SessionNamesProvider as lt, TerminalItemView as m, TranscriptVariantProvider as mt, usePathLinks as n, SelectValue as nn, Blank as nt, UsageMeters as o, Badge as on, WithActions as ot, FileCard as p, TranscriptDensityProvider as pt, ToolTitleProvider as q, MenuContent as qt, matchPath as r, PortalScope as rn, Ink as rt, useMinuteClock as s, badgeVariants as sn, useAffordances as st, resolveAgainstCwd as t, SelectTrigger as tn, Band as tt, Reasoning as u, cn as un, SkillNamesProvider as ut, Conversation as v, mergeComposerRows as vt, TerminalQuestionPrompt as w, launchTrigger as wt, StatusBar as x, skillPrompt as xt, ConversationContent as y, rankComposerRows as yt, HostFilesDialog as z, Dialog$1 as zt };
12512
12570
 
12513
- //# sourceMappingURL=use-path-links-DO_79-wX.mjs.map
12571
+ //# sourceMappingURL=use-path-links-CepFsMdW.mjs.map