@mcp-b/react-components 0.25.0 → 0.26.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 (110) hide show
  1. package/dist/{AgentChat-DHxdTjwF.d.ts → AgentChat-B6sgfQ_q.d.ts} +8 -1
  2. package/dist/{CodeBlock-B3RLU3ez.js → CodeBlock-BUfEhDia.js} +1 -1
  3. package/dist/{Combobox-xEEF6fUb.d.ts → Combobox-DI6xcQjc.d.ts} +14 -4
  4. package/dist/{FileTree-CYr5og0q.js → FileTree-XOLP3Yvo.js} +1 -1
  5. package/dist/{Message-KlK8tlBZ.js → Message-BF6SiKKL.js} +1 -1
  6. package/dist/{ModelSelector-YTlqkIjs.js → ModelSelector-CRdvHT_b.js} +1 -1
  7. package/dist/{PromptInput-BjoPWaaG.d.ts → PromptInput-CES0WO4u.d.ts} +8 -5
  8. package/dist/{ThinkChatActivity-DMTHKWrI.d.ts → ThinkChatActivity-DawPYgga.d.ts} +5 -5
  9. package/dist/{WorkspaceFileView-CuMjXYQn.js → WorkspaceFileView-CKEmUyeT.js} +3 -3
  10. package/dist/components/Activity.js +1 -1
  11. package/dist/components/AgentActivity.js +1 -1
  12. package/dist/components/AgentActivityPreview.js +1 -1
  13. package/dist/components/AgentChat.d.ts +1 -1
  14. package/dist/components/AgentChat.js +10 -11
  15. package/dist/components/AgentChatStartScreen.js +1 -1
  16. package/dist/components/AgentConnection.d.ts +1 -1
  17. package/dist/components/AgentConnection.js +2 -2
  18. package/dist/components/AgentMessageParts.js +1 -1
  19. package/dist/components/AgentToolDetail.js +1 -1
  20. package/dist/components/Approval.js +1 -1
  21. package/dist/components/Artifact.js +1 -1
  22. package/dist/components/BrowserLiveView.js +1 -1
  23. package/dist/components/BrowserReplay.js +1 -1
  24. package/dist/components/BrowserRunPanel.js +1 -1
  25. package/dist/components/ChainOfThought.d.ts +1 -1
  26. package/dist/components/ChainOfThought.js +1 -1
  27. package/dist/components/ChatGptSignInScreen.js +2 -2
  28. package/dist/components/Checkbox.js +1 -1
  29. package/dist/components/Checkpoint.js +1 -1
  30. package/dist/components/CodeBlock.js +1 -1
  31. package/dist/components/CodexModelSelector.js +1 -1
  32. package/dist/components/Combobox.d.ts +1 -1
  33. package/dist/components/Combobox.js +16 -4
  34. package/dist/components/Commit.js +2 -2
  35. package/dist/components/Context.js +1 -32
  36. package/dist/components/ContextMenu.js +1 -1
  37. package/dist/components/Conversation.js +1 -1
  38. package/dist/components/EnvironmentVariables.js +2 -2
  39. package/dist/components/ExpansionState.js +2 -3
  40. package/dist/components/FileTree.js +1 -1
  41. package/dist/components/Goal.d.ts +7 -5
  42. package/dist/components/Goal.js +8 -7
  43. package/dist/components/McpConnectionRequest.d.ts +1 -1
  44. package/dist/components/McpConnectionRequest.js +1 -1
  45. package/dist/components/McpPluginCatalog.d.ts +1 -1
  46. package/dist/components/McpPluginCatalog.js +3 -2
  47. package/dist/components/McpServerPicker.d.ts +1 -1
  48. package/dist/components/McpServerPicker.js +1 -1
  49. package/dist/components/MediaPreviewCard.js +1 -1
  50. package/dist/components/Menubar.js +1 -1
  51. package/dist/components/Message.js +1 -1
  52. package/dist/components/MessageScroller.js +1 -1
  53. package/dist/components/MessageScrollerVirtual.d.ts +6 -1
  54. package/dist/components/MessageScrollerVirtual.js +21 -13
  55. package/dist/components/ModelSelector.js +1 -1
  56. package/dist/components/Plan.d.ts +61 -1
  57. package/dist/components/Plan.js +82 -2
  58. package/dist/components/PricingPlanCard.js +1 -1
  59. package/dist/components/PromptInput.d.ts +1 -1
  60. package/dist/components/PromptInput.js +4 -3
  61. package/dist/components/Queue.js +1 -1
  62. package/dist/components/Reasoning.js +2 -2
  63. package/dist/components/ResponsiveSidebarShell.js +1 -1
  64. package/dist/components/SearchField.js +1 -1
  65. package/dist/components/Select.js +1 -1
  66. package/dist/components/SessionCompaction.d.ts +8 -7
  67. package/dist/components/SessionCompaction.js +2 -0
  68. package/dist/components/SetupChecklist.d.ts +39 -0
  69. package/dist/components/SetupChecklist.js +45 -0
  70. package/dist/components/Sources.js +1 -1
  71. package/dist/components/Stepper.js +1 -1
  72. package/dist/components/SubagentRunIndicator.js +1 -1
  73. package/dist/components/Task.js +1 -1
  74. package/dist/components/Terminal.js +2 -2
  75. package/dist/components/TestResults.js +1 -1
  76. package/dist/components/ThemeModeControl.js +1 -1
  77. package/dist/components/ThinkChat.d.ts +4 -2
  78. package/dist/components/ThinkChatActivity.d.ts +1 -1
  79. package/dist/components/ThinkChatActivity.js +3 -3
  80. package/dist/components/ThinkChatToolPanels.js +1 -1
  81. package/dist/components/ThinkExecutionDetail.js +1 -1
  82. package/dist/components/ThinkExecutionStatus.js +1 -1
  83. package/dist/components/ThinkExecutionWorkbench.js +1 -1
  84. package/dist/components/ThinkFullApp.js +34 -37
  85. package/dist/components/ThinkRoutineBrowser.js +1 -1
  86. package/dist/components/ThinkRoutineForm.js +1 -1
  87. package/dist/components/ThinkRoutineLibrary.js +1 -1
  88. package/dist/components/ThinkThreadPicker.js +1 -1
  89. package/dist/components/Toast.js +1 -1
  90. package/dist/components/WebPreview.js +1 -1
  91. package/dist/components/WorkspaceBrowser.js +1 -1
  92. package/dist/components/WorkspaceExplorer.js +1 -1
  93. package/dist/components/WorkspaceFileView.js +1 -1
  94. package/dist/components/WorkspaceHeader.js +1 -1
  95. package/dist/components/icons.d.ts +2 -2
  96. package/dist/components/icons.js +2 -2
  97. package/dist/{copy-button-Buxmtmp9.js → copy-button-7ttJAorN.js} +1 -1
  98. package/dist/{icons-w5PpKGRz.js → icons-B4mGvCvc.js} +3 -1
  99. package/dist/{icons-Cih3W-zM.d.ts → icons-BGZ916hb.d.ts} +5 -1
  100. package/dist/{mcp-server-catalog-DycejaJ5.d.ts → mcp-server-catalog-BewjV7Eq.d.ts} +1 -1
  101. package/dist/progress-ring-BjqTZqBk.js +40 -0
  102. package/dist/styles/agent-chat.css +57 -1
  103. package/dist/styles/base.css +1 -0
  104. package/dist/styles/combobox.css +44 -0
  105. package/dist/styles/goal.css +11 -5
  106. package/dist/styles/message-scroller.css +1 -0
  107. package/dist/styles/plan.css +45 -0
  108. package/dist/utils/mcp-server-catalog.d.ts +1 -1
  109. package/dist/utils/mcp-server-catalog.js +1 -1
  110. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { i as AgentMessageRenderPartContext } from "./AgentMessageParts-CyD2UB3V.js";
2
2
  import { n as AgentChatStartScreenProps } from "./AgentChatStartScreen-DDZ25aax.js";
3
- import { $ as PromptInputDictationProps, A as PromptInputCommandDefinition, X as PromptInputContextSelectorProps, gt as PromptInputReference, n as PermissionMode, ut as PromptInputMessage } from "./PromptInput-BjoPWaaG.js";
3
+ import { $ as PromptInputDictationProps, A as PromptInputCommandDefinition, X as PromptInputContextSelectorProps, gt as PromptInputReference, n as PermissionMode, ut as PromptInputMessage } from "./PromptInput-CES0WO4u.js";
4
4
  import * as React from "react";
5
5
  import { ChatAddToolApproveResponseFunction, ChatStatus, UIMessage } from "ai";
6
6
  import { PendingApproval, Think } from "@cloudflare/think";
@@ -122,6 +122,12 @@ interface AgentChatProps<MessageT extends UIMessage = UIMessage> {
122
122
  * context summary into the composer without recreating PromptInput's form.
123
123
  */
124
124
  composerHeader?: React.ReactNode;
125
+ /**
126
+ * Rendered in the tray docked above the composer, sharing the surface that
127
+ * holds queued messages. Use it for compact persistent context such as the
128
+ * `Goal` banner — one capped row, details behind hover or a popover.
129
+ */
130
+ composerTray?: React.ReactNode;
125
131
  /** Extra rows rendered in the built-in plus menu after files. */
126
132
  composerAddMenuItems?: React.ReactNode;
127
133
  /**
@@ -253,6 +259,7 @@ declare function AgentChat<MessageT extends UIMessage = UIMessage>({
253
259
  emptyState,
254
260
  startScreen,
255
261
  composerHeader,
262
+ composerTray,
256
263
  composerTools,
257
264
  slashCommands,
258
265
  onCompact,
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { Select } from "./components/Select.js";
3
- import { t as CopyButton } from "./copy-button-Buxmtmp9.js";
3
+ import { t as CopyButton } from "./copy-button-7ttJAorN.js";
4
4
  import * as React from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { createHighlighter } from "shiki";
@@ -2,6 +2,13 @@ import * as React from "react";
2
2
  import { Combobox } from "@base-ui/react/combobox";
3
3
 
4
4
  //#region src/components/Combobox.d.ts
5
+ declare function ComboboxInputGroup({
6
+ className,
7
+ ref,
8
+ ...props
9
+ }: React.ComponentPropsWithRef<typeof Combobox.InputGroup> & {
10
+ ref?: React.Ref<HTMLDivElement>;
11
+ }): React.JSX.Element;
5
12
  declare function ComboboxInput({
6
13
  className,
7
14
  ref,
@@ -93,10 +100,12 @@ declare function ComboboxGroupLabel({
93
100
  * ];
94
101
  *
95
102
  * <Combobox.Root items={fruits}>
96
- * <Combobox.Input placeholder="Select a fruit" />
97
- * <Combobox.Trigger>
98
- * <ChevronDownIcon />
99
- * </Combobox.Trigger>
103
+ * <Combobox.InputGroup>
104
+ * <Combobox.Input placeholder="Select a fruit" />
105
+ * <Combobox.Trigger>
106
+ * <ChevronDownIcon />
107
+ * </Combobox.Trigger>
108
+ * </Combobox.InputGroup>
100
109
  * <Combobox.Portal>
101
110
  * <Combobox.Positioner>
102
111
  * <Combobox.Popup>
@@ -122,6 +131,7 @@ declare function ComboboxGroupLabel({
122
131
  declare function useComboboxAnchor(): React.RefObject<HTMLDivElement | null>;
123
132
  declare const Combobox$1: {
124
133
  Root: typeof Combobox.Root;
134
+ InputGroup: typeof ComboboxInputGroup;
125
135
  Input: typeof ComboboxInput;
126
136
  Trigger: typeof ComboboxTrigger;
127
137
  Clear: typeof Clear;
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
- import { C as FileIcon, T as FolderOpenIcon, m as ChevronRightIcon, w as FolderIcon } from "./icons-w5PpKGRz.js";
2
+ import { C as FileIcon, T as FolderOpenIcon, m as ChevronRightIcon, w as FolderIcon } from "./icons-B4mGvCvc.js";
3
3
  import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { Button } from "./components/Button.js";
3
- import { C as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "./icons-w5PpKGRz.js";
3
+ import { C as FileIcon, i as ArrowRightIcon, r as ArrowLeftIcon } from "./icons-B4mGvCvc.js";
4
4
  import { IconButton } from "./components/IconButton.js";
5
5
  import { c as useWorkspaceNavigationContext, r as resolveWorkspaceLink, t as WorkspaceFileLink } from "./WorkspaceLink-BYYeTQLf.js";
6
6
  import { t as AttachmentPreview } from "./attachment-preview-DIs50Q0h.js";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { Button } from "./components/Button.js";
3
- import { G as SearchIcon, f as ChevronDownIcon } from "./icons-w5PpKGRz.js";
3
+ import { G as SearchIcon, f as ChevronDownIcon } from "./icons-B4mGvCvc.js";
4
4
  import { Dialog } from "./components/Dialog.js";
5
5
  import { i as titleCase } from "./format-S6uWyoSb.js";
6
6
  import { Separator } from "./components/Separator.js";
@@ -1,7 +1,7 @@
1
1
  import { r as ButtonProps } from "./Button-SBIz6Lqi.js";
2
2
  import { _ as SelectSeparatorProps, a as SelectIconProps, c as SelectItemTextProps, d as SelectPopupProps, g as SelectScrollUpArrowProps, h as SelectScrollDownArrowProps, i as SelectGroupProps, l as SelectLabelProps, m as SelectProps, n as SelectBackdropProps, o as SelectItemIndicatorProps, p as SelectPositionerProps, r as SelectGroupLabelProps, s as SelectItemProps, t as Select, u as SelectListProps, v as SelectTriggerProps, y as SelectValueProps } from "./Select-B_13gg_J.js";
3
3
  import { a as TabsListProps, n as TabProps, r as Tabs, t as TabPanelProps } from "./Tabs-C49J5m0Q.js";
4
- import { t as Combobox } from "./Combobox-xEEF6fUb.js";
4
+ import { t as Combobox } from "./Combobox-DI6xcQjc.js";
5
5
  import { d as MenuProps, s as MenuItemProps, t as Menu } from "./Menu-L6MZm-7N.js";
6
6
  import * as React from "react";
7
7
  import { ChatAddToolApproveResponseFunction, ChatStatus, DynamicToolUIPart, FileUIPart, ToolUIPart, UIMessage } from "ai";
@@ -261,10 +261,6 @@ interface PromptInputDictationProps extends Omit<PromptInputButtonProps, "childr
261
261
  */
262
262
  beforeStart?: (voice: UseVoiceInputReturn) => void | Promise<void>;
263
263
  }
264
- /**
265
- * Voice-dictation control for PromptInput. Final upstream transcripts are
266
- * appended to the composer while interim text remains ephemeral.
267
- */
268
264
  declare function PromptInputDictation({
269
265
  voice,
270
266
  beforeStart,
@@ -634,6 +630,13 @@ declare function PromptInputTabItem({
634
630
  type PromptInputCommandProps = React.ComponentPropsWithoutRef<typeof Combobox.Root>;
635
631
  declare const PromptInputCommand: {
636
632
  Root: typeof import("@base-ui/react").ComboboxRoot;
633
+ InputGroup: ({
634
+ className,
635
+ ref,
636
+ ...props
637
+ }: React.ComponentPropsWithRef<typeof import("@base-ui/react").ComboboxInputGroup> & {
638
+ ref?: React.Ref<HTMLDivElement>;
639
+ }) => React.JSX.Element;
637
640
  Input: ({
638
641
  className,
639
642
  ref,
@@ -1,5 +1,5 @@
1
1
  import { i as AgentMessageRenderPartContext } from "./AgentMessageParts-CyD2UB3V.js";
2
- import { r as AgentChatProps } from "./AgentChat-DHxdTjwF.js";
2
+ import { r as AgentChatProps } from "./AgentChat-B6sgfQ_q.js";
3
3
  import { l as ThinkChatPart } from "./ThinkChatToolParts-CSzVwMXf.js";
4
4
  import { t as ThinkChatActivityDescription } from "./ThinkChatActivitySummary-kr5fE0wg.js";
5
5
  import * as React from "react";
@@ -43,11 +43,11 @@ interface ThinkChatActivityProps {
43
43
  /**
44
44
  * Uniquely identifies this run across the whole transcript for persisted
45
45
  * disclosure state (the activity renderer passes `${message.id}:${runStart}`).
46
- * Without it, the first step's key is the scope — unique for tool-led runs
47
- * (toolCallId) but shared by reasoning-led runs in different messages, whose
48
- * open/closed state then bleeds together across virtualization remounts.
46
+ * Required because any derivable fallback collides for reasoning-led runs
47
+ * in different messages, bleeding open/closed state across virtualization
48
+ * remounts.
49
49
  */
50
- stateKey?: string;
50
+ stateKey: string;
51
51
  }
52
52
  declare function ThinkChatActivity({
53
53
  parts,
@@ -1,10 +1,10 @@
1
1
  import { buttonVariants } from "./components/Button.js";
2
- import { A as MaximizeIcon, d as CheckIcon, et as WarningIcon, h as CodeIcon, nt as XIcon, x as EyeIcon, y as DownloadIcon } from "./icons-w5PpKGRz.js";
2
+ import { A as MaximizeIcon, d as CheckIcon, h as CodeIcon, rt as XIcon, tt as WarningIcon, x as EyeIcon, y as DownloadIcon } from "./icons-B4mGvCvc.js";
3
3
  import { t as NavigationLink } from "./navigation-link-Cob7KBlM.js";
4
4
  import { c as useWorkspaceNavigationContext, s as useWorkspaceNavigationRestoration } from "./WorkspaceLink-BYYeTQLf.js";
5
5
  import { r as formatClock } from "./format-S6uWyoSb.js";
6
- import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-KlK8tlBZ.js";
7
- import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-B3RLU3ez.js";
6
+ import { f as MessageResponse, m as createWorkspaceRehypePlugins } from "./Message-BF6SiKKL.js";
7
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-BUfEhDia.js";
8
8
  import { AppTopBar } from "./components/AppTopBar.js";
9
9
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/WorkspaceFile.js";
10
10
  import { WorkspaceHeader } from "./components/WorkspaceHeader.js";
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
3
  import { useExpansionState } from "./ExpansionState.js";
4
- import { m as ChevronRightIcon } from "../icons-w5PpKGRz.js";
4
+ import { m as ChevronRightIcon } from "../icons-B4mGvCvc.js";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/Activity.tsx
@@ -1,4 +1,4 @@
1
- import { B as PencilIcon, C as FileIcon, F as MonitorIcon, G as SearchIcon, O as InfoIcon, Q as TerminalIcon, et as WarningIcon, k as LinkIcon, tt as WrenchIcon } from "../icons-w5PpKGRz.js";
1
+ import { $ as TerminalIcon, B as PencilIcon, C as FileIcon, F as MonitorIcon, G as SearchIcon, O as InfoIcon, k as LinkIcon, nt as WrenchIcon, tt as WarningIcon } from "../icons-B4mGvCvc.js";
2
2
  import { inferFaviconUrl } from "../utils/favicon.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { C as FileIcon, et as WarningIcon, j as McpIcon, nt as XIcon, q as SpinnerIcon } from "../icons-w5PpKGRz.js";
2
+ import { C as FileIcon, J as SpinnerIcon, j as McpIcon, rt as XIcon, tt as WarningIcon } from "../icons-B4mGvCvc.js";
3
3
  import { ActivityHeader } from "./Activity.js";
4
4
  import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
5
5
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
@@ -1,2 +1,2 @@
1
- import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, r as AgentChatProps, t as AgentChat } from "../AgentChat-DHxdTjwF.js";
1
+ import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, r as AgentChatProps, t as AgentChat } from "../AgentChat-B6sgfQ_q.js";
2
2
  export { AgentChat, AgentChatComposerDraft, AgentChatProps, AgentChatRenderMessageContext, PermissionModeControl };
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
3
  import { ExpansionStateProvider } from "./ExpansionState.js";
4
- import { $ as TrashIcon, B as PencilIcon, H as PlusIcon, L as MoveToFrontIcon, U as QueueIcon, W as RefreshIcon, t as ArchiveIcon } from "../icons-w5PpKGRz.js";
4
+ import { B as PencilIcon, H as PlusIcon, L as MoveToFrontIcon, U as QueueIcon, W as RefreshIcon, et as TrashIcon, t as ArchiveIcon } from "../icons-B4mGvCvc.js";
5
5
  import { IconButton } from "./IconButton.js";
6
- import { n as MessageAction, r as MessageActions, t as Message } from "../Message-KlK8tlBZ.js";
6
+ import { n as MessageAction, r as MessageActions, t as Message } from "../Message-BF6SiKKL.js";
7
7
  import { AgentMessageParts } from "./AgentMessageParts.js";
8
8
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "./Context.js";
9
9
  import { EmptyState } from "./EmptyState.js";
@@ -14,7 +14,7 @@ import { AgentChatStartScreen } from "./AgentChatStartScreen.js";
14
14
  import { AgentChatMessageEditor } from "./AgentChatMessageEditor.js";
15
15
  import { Marker, MarkerContent } from "./Marker.js";
16
16
  import { TransitionSurface } from "./TransitionSurface.js";
17
- import { t as CopyButton } from "../copy-button-Buxmtmp9.js";
17
+ import { t as CopyButton } from "../copy-button-7ttJAorN.js";
18
18
  import * as React from "react";
19
19
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
20
20
  import { isCompactionMessage } from "agents/experimental/memory/utils";
@@ -210,7 +210,7 @@ const AgentChatTranscriptRowBody = React.memo(AgentChatTranscriptRowBodyImpl);
210
210
  * announce re-inserted old rows as new); announce new messages from a
211
211
  * host-owned live region if that matters.
212
212
  */
213
- function AgentChat({ className, messages, status = "ready", onSubmit, showComposer = onSubmit !== void 0, onStop, placeholder = "Ask anything...", disabled, emptyState, startScreen, composerHeader, composerTools, slashCommands, onCompact, mentionCommands, contextSelector, composerEndTools, voiceInput, beforeVoiceStart, composerAddMenuItems, notice, onRegenerate, onEditAndResend, onApprovalResponse, thinkStub, approvalsEnabled = true, permissionModeControl, onExecutionSettled, pendingApprovals: durableApprovals = EMPTY_PENDING_APPROVALS, contextWindow, renderPart, renderMessageAfter, showAssistantActions, ref }) {
213
+ function AgentChat({ className, messages, status = "ready", onSubmit, showComposer = onSubmit !== void 0, onStop, placeholder = "Ask anything...", disabled, emptyState, startScreen, composerHeader, composerTray, composerTools, slashCommands, onCompact, mentionCommands, contextSelector, composerEndTools, voiceInput, beforeVoiceStart, composerAddMenuItems, notice, onRegenerate, onEditAndResend, onApprovalResponse, thinkStub, approvalsEnabled = true, permissionModeControl, onExecutionSettled, pendingApprovals: durableApprovals = EMPTY_PENDING_APPROVALS, contextWindow, renderPart, renderMessageAfter, showAssistantActions, ref }) {
214
214
  const [copyAnnouncement, setCopyAnnouncement] = React.useState("");
215
215
  const [composerDraft, setComposerDraft] = React.useState("");
216
216
  const [composerReferences, setComposerReferences] = React.useState([]);
@@ -273,11 +273,11 @@ function AgentChat({ className, messages, status = "ready", onSubmit, showCompos
273
273
  compactionInFlight.current = true;
274
274
  setCompactionNotice(null);
275
275
  setComposerDraft("");
276
- onCompact().then(() => {
276
+ Promise.resolve().then(onCompact).then(() => {
277
277
  compactionInFlight.current = false;
278
278
  }, (error) => {
279
279
  compactionInFlight.current = false;
280
- console.warn("Manual compaction failed", error);
280
+ console.error("Manual compaction failed", error);
281
281
  setCompactionNotice("Compaction failed — run /compact to try again.");
282
282
  });
283
283
  return;
@@ -450,13 +450,12 @@ function AgentChat({ className, messages, status = "ready", onSubmit, showCompos
450
450
  "aria-atomic": "true",
451
451
  children: [notice, compactionNotice]
452
452
  }),
453
- pendingPrompts.length ? /* @__PURE__ */ jsx(PromptInputTray, {
453
+ composerTray || pendingPrompts.length ? /* @__PURE__ */ jsxs(PromptInputTray, {
454
454
  side: "top",
455
455
  className: "agent-chat__queued",
456
- role: "region",
457
- "aria-label": "Queued messages",
458
- children: /* @__PURE__ */ jsx("ul", {
456
+ children: [composerTray, pendingPrompts.length ? /* @__PURE__ */ jsx("ul", {
459
457
  className: "agent-chat__queued-list",
458
+ "aria-label": "Queued messages",
460
459
  children: pendingPrompts.map((pending) => {
461
460
  const messageText = pending.message.text || "Queued message";
462
461
  return /* @__PURE__ */ jsxs("li", {
@@ -492,7 +491,7 @@ function AgentChat({ className, messages, status = "ready", onSubmit, showCompos
492
491
  ]
493
492
  }, pending.id);
494
493
  })
495
- })
494
+ }) : null]
496
495
  }) : null,
497
496
  /* @__PURE__ */ jsx(PromptInput, {
498
497
  multiple: true,
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { nt as XIcon } from "../icons-w5PpKGRz.js";
3
+ import { rt as XIcon } from "../icons-B4mGvCvc.js";
4
4
  import { IconButton } from "./IconButton.js";
5
5
  import { PromptInputTray } from "./PromptInput.js";
6
6
  import * as React from "react";
@@ -1,4 +1,4 @@
1
- import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "../mcp-server-catalog-DycejaJ5.js";
1
+ import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "../mcp-server-catalog-BewjV7Eq.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/AgentConnection.d.ts
@@ -1,10 +1,10 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { k as LinkIcon } from "../icons-w5PpKGRz.js";
3
+ import { k as LinkIcon } from "../icons-B4mGvCvc.js";
4
4
  import { Popover } from "./Popover.js";
5
5
  import { Field } from "./Field.js";
6
6
  import { Form } from "./Form.js";
7
- import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-B3RLU3ez.js";
7
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, n as CodeBlockActions, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock } from "../CodeBlock-BUfEhDia.js";
8
8
  import { CUSTOM_MCP_SERVER_CARD } from "../utils/mcp-server-catalog.js";
9
9
  import * as React from "react";
10
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- import { d as MessageContent, f as MessageResponse, i as MessageAttachment } from "../Message-KlK8tlBZ.js";
1
+ import { d as MessageContent, f as MessageResponse, i as MessageAttachment } from "../Message-BF6SiKKL.js";
2
2
  import { Reasoning, ReasoningContent, ReasoningTrigger } from "./Reasoning.js";
3
3
  import { Source, Sources, SourcesContent, SourcesTrigger } from "./Sources.js";
4
4
  import { isToolPartWorking } from "./ThinkChatToolParts.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { r as ArrowLeftIcon } from "../icons-w5PpKGRz.js";
2
+ import { r as ArrowLeftIcon } from "../icons-B4mGvCvc.js";
3
3
  import { TransitionSurface } from "./TransitionSurface.js";
4
4
  import { AppTopBar } from "./AppTopBar.js";
5
5
  import { NaniteMark } from "./NaniteScene.js";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { B as PencilIcon } from "../icons-w5PpKGRz.js";
3
+ import { B as PencilIcon } from "../icons-B4mGvCvc.js";
4
4
  import { Kbd } from "./Kbd.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { nt as XIcon } from "../icons-w5PpKGRz.js";
2
+ import { rt as XIcon } from "../icons-B4mGvCvc.js";
3
3
  import { IconButton } from "./IconButton.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { A as MaximizeIcon, q as SpinnerIcon } from "../icons-w5PpKGRz.js";
3
+ import { A as MaximizeIcon, J as SpinnerIcon } from "../icons-B4mGvCvc.js";
4
4
  import { Dialog } from "./Dialog.js";
5
5
  import { TransitionSurface } from "./TransitionSurface.js";
6
6
  import { StatusPill } from "./StatusPill.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { V as PlayIcon, z as PauseIcon } from "../icons-w5PpKGRz.js";
2
+ import { V as PlayIcon, z as PauseIcon } from "../icons-B4mGvCvc.js";
3
3
  import { IconButton } from "./IconButton.js";
4
4
  import { r as formatClock } from "../format-S6uWyoSb.js";
5
5
  import { EmptyState } from "./EmptyState.js";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { nt as XIcon, q as SpinnerIcon } from "../icons-w5PpKGRz.js";
3
+ import { J as SpinnerIcon, rt as XIcon } from "../icons-B4mGvCvc.js";
4
4
  import { Tabs } from "./Tabs.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
6
6
  import { WebPreview, WebPreviewNavigation, WebPreviewNavigationButton, WebPreviewUrl } from "./WebPreview.js";
@@ -1,5 +1,5 @@
1
1
  import { t as Collapsible } from "../Collapsible-N64ASIQr.js";
2
- import { O as IconProps } from "../icons-Cih3W-zM.js";
2
+ import { O as IconProps } from "../icons-BGZ916hb.js";
3
3
  import * as React from "react";
4
4
 
5
5
  //#region src/components/ChainOfThought.d.ts
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { d as CheckIcon, m as ChevronRightIcon, q as SpinnerIcon, v as DotIcon } from "../icons-w5PpKGRz.js";
3
+ import { J as SpinnerIcon, d as CheckIcon, m as ChevronRightIcon, v as DotIcon } from "../icons-B4mGvCvc.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/ChainOfThought.tsx
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Button } from "./Button.js";
3
- import { q as SpinnerIcon } from "../icons-w5PpKGRz.js";
4
- import { u as ModelSelectorLogo } from "../ModelSelector-YTlqkIjs.js";
3
+ import { J as SpinnerIcon } from "../icons-B4mGvCvc.js";
4
+ import { u as ModelSelectorLogo } from "../ModelSelector-CRdvHT_b.js";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ChatGptSignInScreen.tsx
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
- import { d as CheckIcon } from "../icons-w5PpKGRz.js";
2
+ import { d as CheckIcon } from "../icons-B4mGvCvc.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
5
5
  //#region src/components/Checkbox.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { s as BookmarkIcon } from "../icons-w5PpKGRz.js";
2
+ import { s as BookmarkIcon } from "../icons-B4mGvCvc.js";
3
3
  import { Marker, MarkerIcon } from "./Marker.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,2 +1,2 @@
1
- import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, h as CODE_BLOCK_LANGUAGES, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as highlightCode, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../CodeBlock-B3RLU3ez.js";
1
+ import { a as CodeBlockCopyButton, c as CodeBlockLanguageSelector, d as CodeBlockLanguageSelectorTrigger, f as CodeBlockLanguageSelectorValue, h as CODE_BLOCK_LANGUAGES, i as CodeBlockContent, l as CodeBlockLanguageSelectorContent, m as highlightCode, n as CodeBlockActions, o as CodeBlockFilename, p as CodeBlockTitle, r as CodeBlockContainer, s as CodeBlockHeader, t as CodeBlock, u as CodeBlockLanguageSelectorItem } from "../CodeBlock-BUfEhDia.js";
2
2
  export { CODE_BLOCK_LANGUAGES, CodeBlock, CodeBlockActions, CodeBlockContainer, CodeBlockContent, CodeBlockCopyButton, CodeBlockFilename, CodeBlockHeader, CodeBlockLanguageSelector, CodeBlockLanguageSelectorContent, CodeBlockLanguageSelectorItem, CodeBlockLanguageSelectorTrigger, CodeBlockLanguageSelectorValue, CodeBlockTitle, highlightCode };
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { W as RefreshIcon, d as CheckIcon, f as ChevronDownIcon, l as BrainIcon, m as ChevronRightIcon } from "../icons-w5PpKGRz.js";
2
+ import { W as RefreshIcon, d as CheckIcon, f as ChevronDownIcon, l as BrainIcon, m as ChevronRightIcon } from "../icons-B4mGvCvc.js";
3
3
  import { Tooltip } from "./Tooltip.js";
4
4
  import { i as titleCase } from "../format-S6uWyoSb.js";
5
5
  import { Menu } from "./Menu.js";
@@ -1,2 +1,2 @@
1
- import { n as useComboboxAnchor, t as Combobox } from "../Combobox-xEEF6fUb.js";
1
+ import { n as useComboboxAnchor, t as Combobox } from "../Combobox-DI6xcQjc.js";
2
2
  export { Combobox, useComboboxAnchor };
@@ -3,6 +3,15 @@ import * as React from "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Combobox as Combobox$1 } from "@base-ui/react/combobox";
5
5
  //#region src/components/Combobox.tsx
6
+ function ComboboxInputGroup({ className, ref, ...props }) {
7
+ const classes = mergeBaseClassName("combobox__input-group", className);
8
+ return /* @__PURE__ */ jsx(Combobox$1.InputGroup, {
9
+ ref,
10
+ "data-slot": "combobox-input-group",
11
+ className: classes,
12
+ ...props
13
+ });
14
+ }
6
15
  function ComboboxInput({ className, ref, ...props }) {
7
16
  const classes = mergeBaseClassName("combobox__input", className);
8
17
  return /* @__PURE__ */ jsx(Combobox$1.Input, {
@@ -116,10 +125,12 @@ function ComboboxGroupLabel({ className, ref, ...props }) {
116
125
  * ];
117
126
  *
118
127
  * <Combobox.Root items={fruits}>
119
- * <Combobox.Input placeholder="Select a fruit" />
120
- * <Combobox.Trigger>
121
- * <ChevronDownIcon />
122
- * </Combobox.Trigger>
128
+ * <Combobox.InputGroup>
129
+ * <Combobox.Input placeholder="Select a fruit" />
130
+ * <Combobox.Trigger>
131
+ * <ChevronDownIcon />
132
+ * </Combobox.Trigger>
133
+ * </Combobox.InputGroup>
123
134
  * <Combobox.Portal>
124
135
  * <Combobox.Positioner>
125
136
  * <Combobox.Popup>
@@ -147,6 +158,7 @@ function useComboboxAnchor() {
147
158
  }
148
159
  const Combobox = {
149
160
  Root: Combobox$1.Root,
161
+ InputGroup: ComboboxInputGroup,
150
162
  Input: ComboboxInput,
151
163
  Trigger: ComboboxTrigger,
152
164
  Clear,
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { C as FileIcon, m as ChevronRightIcon } from "../icons-w5PpKGRz.js";
3
+ import { C as FileIcon, m as ChevronRightIcon } from "../icons-B4mGvCvc.js";
4
4
  import { Avatar } from "./Avatar.js";
5
- import { t as CopyButton } from "../copy-button-Buxmtmp9.js";
5
+ import { t as CopyButton } from "../copy-button-7ttJAorN.js";
6
6
  import { Badge } from "./Badge.js";
7
7
  import "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { n as clamp } from "../format-S6uWyoSb.js";
3
2
  import { Popover } from "./Popover.js";
4
3
  import { Separator } from "./Separator.js";
4
+ import { t as ProgressRing } from "../progress-ring-BjqTZqBk.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/Context.tsx
@@ -290,36 +290,5 @@ function getContextUsedTokens(usage) {
290
290
  if (!usage) return 0;
291
291
  return usage.totalTokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
292
292
  }
293
- function ProgressRing({ percent, size, stroke }) {
294
- const radius = (size - stroke) / 2;
295
- const circumference = 2 * Math.PI * radius;
296
- const offset = circumference - clamp(percent, 0, 100) / 100 * circumference;
297
- return /* @__PURE__ */ jsxs("svg", {
298
- width: size,
299
- height: size,
300
- viewBox: `0 0 ${size} ${size}`,
301
- focusable: "false",
302
- "aria-hidden": "true",
303
- children: [/* @__PURE__ */ jsx("circle", {
304
- cx: size / 2,
305
- cy: size / 2,
306
- r: radius,
307
- fill: "none",
308
- stroke: "var(--sigvelo-color-neutral-border-subtle)",
309
- strokeWidth: stroke
310
- }), /* @__PURE__ */ jsx("circle", {
311
- cx: size / 2,
312
- cy: size / 2,
313
- r: radius,
314
- fill: "none",
315
- stroke: "var(--sigvelo-color-primary-bg)",
316
- strokeWidth: stroke,
317
- strokeDasharray: circumference,
318
- strokeDashoffset: offset,
319
- strokeLinecap: "round",
320
- transform: `rotate(-90 ${size / 2} ${size / 2})`
321
- })]
322
- });
323
- }
324
293
  //#endregion
325
294
  export { Context, ContextCacheUsage, ContextContent, ContextContentBody, ContextContentFooter, ContextContentHeader, ContextInputUsage, ContextOutputUsage, ContextReasoningUsage, ContextTrigger, getContextUsage, getContextUsedTokens };
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
- import { d as CheckIcon, v as DotIcon } from "../icons-w5PpKGRz.js";
2
+ import { d as CheckIcon, v as DotIcon } from "../icons-B4mGvCvc.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  import { ContextMenu as ContextMenu$1 } from "@base-ui/react/context-menu";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { n as ArrowDownIcon, y as DownloadIcon } from "../icons-w5PpKGRz.js";
2
+ import { n as ArrowDownIcon, y as DownloadIcon } from "../icons-B4mGvCvc.js";
3
3
  import { IconButton } from "./IconButton.js";
4
4
  import { t as assignRef } from "../merge-refs-DF_7w2x_.js";
5
5
  import { MessageScroller, MessageScrollerButton, MessageScrollerContent, MessageScrollerItem, MessageScrollerProvider, MessageScrollerViewport } from "./MessageScroller.js";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { S as EyeOffIcon, x as EyeIcon } from "../icons-w5PpKGRz.js";
3
- import { t as CopyButton } from "../copy-button-Buxmtmp9.js";
2
+ import { S as EyeOffIcon, x as EyeIcon } from "../icons-B4mGvCvc.js";
3
+ import { t as CopyButton } from "../copy-button-7ttJAorN.js";
4
4
  import { Badge } from "./Badge.js";
5
5
  import { Switch } from "./Switch.js";
6
6
  import * as React from "react";
@@ -35,12 +35,11 @@ function ExpansionStateProvider({ store, children }) {
35
35
  */
36
36
  function useExpansionState(stateKey, defaultOpen) {
37
37
  const store = React.useContext(ExpansionStateContext);
38
- const persisted = stateKey !== void 0 ? store : null;
39
38
  const [open, setLocalOpen] = React.useState(() => (stateKey !== void 0 ? store?.get(stateKey) : void 0) ?? defaultOpen);
40
39
  return [open, React.useCallback((next) => {
41
- if (persisted) persisted.set(stateKey, next);
40
+ if (store && stateKey !== void 0) store.set(stateKey, next);
42
41
  setLocalOpen(next);
43
- }, [persisted, stateKey])];
42
+ }, [store, stateKey])];
44
43
  }
45
44
  //#endregion
46
45
  export { ExpansionStateProvider, createExpansionStore, useExpansionState };
@@ -1,2 +1,2 @@
1
- import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../FileTree-CYr5og0q.js";
1
+ import { a as FileTreeIcon, i as FileTreeFolder, n as FileTreeActions, o as FileTreeName, r as FileTreeFile, t as FileTree } from "../FileTree-XOLP3Yvo.js";
2
2
  export { FileTree, FileTreeActions, FileTreeFile, FileTreeFolder, FileTreeIcon, FileTreeName };
@@ -5,7 +5,7 @@ import * as React from "react";
5
5
  * Lifecycle of a persisted conversation goal. Mirrors the host's goal state;
6
6
  * this is not a Think or AI SDK execution status.
7
7
  */
8
- type GoalStatus = "pursuing" | "paused" | "achieved" | "unmet" | "budget_limited";
8
+ type GoalStatus = "pursuing" | "paused" | "achieved" | "unmet";
9
9
  interface GoalProps extends React.HTMLAttributes<HTMLDivElement> {
10
10
  /** Drives the default title and the `data-status` styling hook. */
11
11
  status?: GoalStatus;
@@ -14,9 +14,11 @@ interface GoalProps extends React.HTMLAttributes<HTMLDivElement> {
14
14
  }
15
15
  /**
16
16
  * Presentation-only banner for a persisted conversation goal — an objective
17
- * the agent keeps pursuing across turns until it completes, pauses, or runs
18
- * out of budget. Renders in `AgentChat`'s `notice` region between transcript
19
- * and composer.
17
+ * the agent keeps pursuing across turns until it completes, pauses, or
18
+ * blocks on the user. Renders in `AgentChat`'s `composerTray` slot, sharing the
19
+ * queued-message tray docked above the composer. The row is capped: the
20
+ * objective truncates to one line, so pass full objective and progress text
21
+ * via `title` (or a popover) rather than rendering it inline.
20
22
  *
21
23
  * Actions are ordinary composed buttons; this primitive does not set, pause,
22
24
  * resume, or clear a goal and owns no timer or transport. The host-side goal
@@ -67,7 +69,7 @@ declare function GoalObjective({
67
69
  ref?: React.Ref<HTMLSpanElement>;
68
70
  }): React.JSX.Element;
69
71
  interface GoalMetaProps extends React.HTMLAttributes<HTMLSpanElement> {}
70
- /** Host-formatted progress metadata — elapsed time, turn count, budget. */
72
+ /** Host-formatted progress metadata — elapsed time or turn count. */
71
73
  declare function GoalMeta({
72
74
  className,
73
75
  ref,