@mcp-b/react-components 0.20.0 → 0.20.4

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 (156) hide show
  1. package/dist/{AgentChat-CaQaT0LF.d.ts → AgentChat-C-ZyXbJz.d.ts} +3 -0
  2. package/dist/{CodeBlock-Bb-IPBc_.js → CodeBlock-ygtuzqJd.js} +1 -1
  3. package/dist/{FileTree-CUlXfnmc.js → FileTree-CdgfccsM.js} +5 -5
  4. package/dist/{Message-rZEaaD8Q.js → Message-DzuteocT.js} +4 -3
  5. package/dist/{ModelSelector-4GsCWcZV.js → ModelSelector-pecWyOFI.js} +4 -3
  6. package/dist/{ThinkChat-15EhfvYJ.js → ThinkChat-E_HrfH76.js} +15 -6
  7. package/dist/{ThinkChatActivity-CnIJPvV5.d.ts → ThinkChatActivity-CdbL0aoA.d.ts} +1 -1
  8. package/dist/{WorkspaceFileView-CEdArlOT.js → WorkspaceFileView-Bxx4wEzJ.js} +5 -11
  9. package/dist/components/Accordion.js +4 -4
  10. package/dist/components/Activity.js +2 -2
  11. package/dist/components/AgentActivity.js +1 -1
  12. package/dist/components/AgentActivityPreview.js +1 -1
  13. package/dist/components/AgentAttention.js +2 -2
  14. package/dist/components/AgentChat.d.ts +1 -1
  15. package/dist/components/AgentChat.js +8 -6
  16. package/dist/components/AgentConnection.js +2 -2
  17. package/dist/components/AgentMessageParts.js +1 -1
  18. package/dist/components/AgentToolDetail.js +2 -2
  19. package/dist/components/AlertDialog.js +8 -8
  20. package/dist/components/AppTopBar.js +1 -1
  21. package/dist/components/Approval.js +1 -1
  22. package/dist/components/Artifact.js +1 -1
  23. package/dist/components/Autocomplete.js +11 -11
  24. package/dist/components/Avatar.js +6 -6
  25. package/dist/components/BrowserLiveView.js +2 -2
  26. package/dist/components/BrowserReplay.js +4 -7
  27. package/dist/components/BrowserRunPanel.js +2 -2
  28. package/dist/components/Card.js +8 -11
  29. package/dist/components/ChainOfThought.js +2 -2
  30. package/dist/components/ChatGptSignInScreen.js +2 -2
  31. package/dist/components/Checkbox.js +2 -2
  32. package/dist/components/CheckboxGroup.js +7 -7
  33. package/dist/components/Checkpoint.js +1 -1
  34. package/dist/components/CodeBlock.js +1 -1
  35. package/dist/components/CodexModelSelector.js +5 -4
  36. package/dist/components/Collapsible.js +2 -2
  37. package/dist/components/Combobox.js +11 -11
  38. package/dist/components/Commit.js +4 -4
  39. package/dist/components/Context.js +3 -1
  40. package/dist/components/ContextMenu.js +13 -13
  41. package/dist/components/Conversation.js +3 -8
  42. package/dist/components/Dialog.js +6 -6
  43. package/dist/components/EnvironmentVariables.js +3 -3
  44. package/dist/components/Field.js +7 -7
  45. package/dist/components/Fieldset.js +3 -3
  46. package/dist/components/FileTree.js +1 -1
  47. package/dist/components/Form.js +1 -1
  48. package/dist/components/InlineCitation.js +2 -2
  49. package/dist/components/Input.js +1 -1
  50. package/dist/components/Label.js +2 -1
  51. package/dist/components/McpConnectionRequest.js +1 -1
  52. package/dist/components/McpServerPicker.js +3 -3
  53. package/dist/components/MediaPreviewCard.js +5 -4
  54. package/dist/components/Menu.js +17 -17
  55. package/dist/components/Menubar.js +14 -14
  56. package/dist/components/Message.js +1 -1
  57. package/dist/components/MessageScroller.js +1 -1
  58. package/dist/components/Meter.js +5 -5
  59. package/dist/components/ModelSelector.js +1 -1
  60. package/dist/components/NaniteScene.js +2 -1
  61. package/dist/components/NavigationMenu.js +11 -11
  62. package/dist/components/NumberField.js +6 -6
  63. package/dist/components/Plan.js +1 -1
  64. package/dist/components/Popover.js +12 -14
  65. package/dist/components/PreviewCard.js +6 -6
  66. package/dist/components/PricingPage.js +2 -1
  67. package/dist/components/PricingPlanCard.js +1 -1
  68. package/dist/components/Progress.js +4 -4
  69. package/dist/components/PromptInput.js +10 -12
  70. package/dist/components/Queue.js +1 -1
  71. package/dist/components/RadioGroup.js +4 -4
  72. package/dist/components/Reasoning.js +2 -2
  73. package/dist/components/ResizableSidePanel.js +3 -5
  74. package/dist/components/ResponsiveSidebarShell.js +4 -3
  75. package/dist/components/ScrollArea.js +6 -6
  76. package/dist/components/SearchField.js +1 -1
  77. package/dist/components/Select.js +15 -15
  78. package/dist/components/Slider.js +7 -7
  79. package/dist/components/Sources.js +2 -2
  80. package/dist/components/Stepper.js +1 -1
  81. package/dist/components/SubagentRunDetails.js +2 -1
  82. package/dist/components/SubagentRunIndicator.js +1 -1
  83. package/dist/components/SubagentRunSelector.js +1 -1
  84. package/dist/components/Switch.js +3 -3
  85. package/dist/components/Tabs.js +2 -2
  86. package/dist/components/Task.js +2 -2
  87. package/dist/components/Terminal.js +2 -2
  88. package/dist/components/TestResults.js +3 -3
  89. package/dist/components/ThemeModeControl.js +1 -1
  90. package/dist/components/ThinkChat.d.ts +12 -3
  91. package/dist/components/ThinkChat.js +1 -1
  92. package/dist/components/ThinkChatActivity.d.ts +1 -1
  93. package/dist/components/ThinkChatActivity.js +2 -1
  94. package/dist/components/ThinkChatActivitySummary.js +17 -4
  95. package/dist/components/ThinkChatToolPanels.js +10 -5
  96. package/dist/components/ThinkExecutionDetail.js +1 -1
  97. package/dist/components/ThinkExecutionStatus.js +1 -1
  98. package/dist/components/ThinkExecutionWorkbench.js +2 -2
  99. package/dist/components/ThinkFullApp.js +6 -76
  100. package/dist/components/ThinkPendingApproval.js +1 -3
  101. package/dist/components/ThinkRoutine.d.ts +1 -1
  102. package/dist/components/ThinkRoutine.js +2 -1
  103. package/dist/components/ThinkRoutineBrowser.js +9 -9
  104. package/dist/components/ThinkRoutineDetail.js +1 -1
  105. package/dist/components/ThinkRoutineForm.js +1 -1
  106. package/dist/components/ThinkRoutineLibrary.js +1 -1
  107. package/dist/components/ThinkThreadPicker.js +3 -3
  108. package/dist/components/ThinkThreadShell.js +2 -1
  109. package/dist/components/Toast.js +6 -6
  110. package/dist/components/ToggleGroup.js +2 -2
  111. package/dist/components/Tooltip.js +4 -4
  112. package/dist/components/WebPreview.js +1 -1
  113. package/dist/components/WorkspaceBrowser.js +1 -1
  114. package/dist/components/WorkspaceExplorer.js +2 -2
  115. package/dist/components/WorkspaceFileView.js +1 -1
  116. package/dist/components/WorkspaceHeader.js +1 -1
  117. package/dist/components/icons.js +1 -1
  118. package/dist/{copy-button-BtRwhRks.js → copy-button-vo1paUSi.js} +1 -1
  119. package/dist/format-S6uWyoSb.js +38 -0
  120. package/dist/{icons-DKXiSepE.js → icons-DyOM0EJs.js} +2 -1
  121. package/dist/{merge-refs-KlanQB7A.js → merge-refs-DF_7w2x_.js} +1 -1
  122. package/dist/styles/activity-header.css +0 -3
  123. package/dist/styles/activity.css +1 -1
  124. package/dist/styles/agent-attention.css +0 -7
  125. package/dist/styles/agent-connection.css +1 -1
  126. package/dist/styles/app-top-bar.css +2 -5
  127. package/dist/styles/browser-live-view.css +1 -10
  128. package/dist/styles/browser-run-panel.css +2 -11
  129. package/dist/styles/chain-of-thought.css +2 -14
  130. package/dist/styles/checkbox-group.css +0 -6
  131. package/dist/styles/codex-model-selector.css +0 -6
  132. package/dist/styles/commit.css +1 -7
  133. package/dist/styles/environment-variables.css +0 -3
  134. package/dist/styles/file-tree.css +1 -1
  135. package/dist/styles/inline-citation.css +1 -4
  136. package/dist/styles/mcp-server-picker.css +0 -3
  137. package/dist/styles/message.css +0 -6
  138. package/dist/styles/model-selector.css +1 -1
  139. package/dist/styles/prompt-input.css +3 -34
  140. package/dist/styles/queue.css +1 -1
  141. package/dist/styles/recipes.css +2 -2
  142. package/dist/styles/sources.css +1 -4
  143. package/dist/styles/stepper.css +1 -7
  144. package/dist/styles/subagent-run.css +0 -3
  145. package/dist/styles/task.css +1 -1
  146. package/dist/styles/test-results.css +2 -17
  147. package/dist/styles/theme-mode-control.css +1 -1
  148. package/dist/styles/think-execution-status.css +1 -7
  149. package/dist/styles/think-execution-workbench.css +0 -3
  150. package/dist/styles/think-full-app.css +0 -3
  151. package/dist/styles/think-thread-picker.css +2 -14
  152. package/dist/styles/toggle-group.css +1 -1
  153. package/dist/styles/utilities.css +6 -2
  154. package/dist/styles/workspace-explorer.css +1 -1
  155. package/dist/view-transitions-DyUP0lSg.js +77 -0
  156. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
2
- import { a as ArrowUpIcon, n as ArrowDownIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { a as ArrowUpIcon, n as ArrowDownIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { Select as Select$1 } from "@base-ui/react/select";
@@ -36,7 +36,7 @@ function SelectRoot(props) {
36
36
  });
37
37
  }
38
38
  function SelectLabel({ className, ref, ...props }) {
39
- const classes = mergeBaseClassName(["select__label"].filter(Boolean).join(" "), className);
39
+ const classes = mergeBaseClassName("select__label", className);
40
40
  return /* @__PURE__ */ jsx(Select$1.Label, {
41
41
  ref,
42
42
  "data-slot": "select-field-label",
@@ -64,7 +64,7 @@ function SelectValue({ placeholder, children, ref, ...props }) {
64
64
  });
65
65
  }
66
66
  function SelectIcon({ className, children, ref, ...props }) {
67
- const classes = mergeBaseClassName(["select__icon"].filter(Boolean).join(" "), className);
67
+ const classes = mergeBaseClassName("select__icon", className);
68
68
  return /* @__PURE__ */ jsx(Select$1.Icon, {
69
69
  ref,
70
70
  className: classes,
@@ -73,7 +73,7 @@ function SelectIcon({ className, children, ref, ...props }) {
73
73
  });
74
74
  }
75
75
  function SelectBackdrop({ className, ref, ...props }) {
76
- const classes = mergeBaseClassName(["select__backdrop", "base-ui-backdrop"].filter(Boolean).join(" "), className);
76
+ const classes = mergeBaseClassName("select__backdrop base-ui-backdrop", className);
77
77
  return /* @__PURE__ */ jsx(Select$1.Backdrop, {
78
78
  ref,
79
79
  className: classes,
@@ -81,7 +81,7 @@ function SelectBackdrop({ className, ref, ...props }) {
81
81
  });
82
82
  }
83
83
  function SelectPositioner({ className, ref, ...props }) {
84
- const classes = mergeBaseClassName(["select__positioner", "base-ui-positioner"].filter(Boolean).join(" "), className);
84
+ const classes = mergeBaseClassName("select__positioner base-ui-positioner", className);
85
85
  return /* @__PURE__ */ jsx(Select$1.Positioner, {
86
86
  ref,
87
87
  className: classes,
@@ -89,7 +89,7 @@ function SelectPositioner({ className, ref, ...props }) {
89
89
  });
90
90
  }
91
91
  function SelectPopup({ className, ref, ...props }) {
92
- const classes = mergeBaseClassName(["select__popup", "base-ui-popup"].filter(Boolean).join(" "), className);
92
+ const classes = mergeBaseClassName("select__popup base-ui-popup", className);
93
93
  return /* @__PURE__ */ jsx(Select$1.Popup, {
94
94
  ref,
95
95
  "data-slot": "select-content",
@@ -98,7 +98,7 @@ function SelectPopup({ className, ref, ...props }) {
98
98
  });
99
99
  }
100
100
  function SelectList({ className, ref, ...props }) {
101
- const classes = mergeBaseClassName(["select__list"].filter(Boolean).join(" "), className);
101
+ const classes = mergeBaseClassName("select__list", className);
102
102
  return /* @__PURE__ */ jsx(Select$1.List, {
103
103
  ref,
104
104
  "data-slot": "select-viewport",
@@ -107,7 +107,7 @@ function SelectList({ className, ref, ...props }) {
107
107
  });
108
108
  }
109
109
  function SelectItem({ className, value, ref, ...props }) {
110
- const classes = mergeBaseClassName(["select__option"].filter(Boolean).join(" "), className);
110
+ const classes = mergeBaseClassName("select__option", className);
111
111
  return /* @__PURE__ */ jsx(Select$1.Item, {
112
112
  ref,
113
113
  "data-slot": "select-item",
@@ -117,7 +117,7 @@ function SelectItem({ className, value, ref, ...props }) {
117
117
  });
118
118
  }
119
119
  function SelectItemText({ className, ref, ...props }) {
120
- const classes = mergeBaseClassName(["select__item-text"].filter(Boolean).join(" "), className);
120
+ const classes = mergeBaseClassName("select__item-text", className);
121
121
  return /* @__PURE__ */ jsx(Select$1.ItemText, {
122
122
  ref,
123
123
  className: classes,
@@ -125,7 +125,7 @@ function SelectItemText({ className, ref, ...props }) {
125
125
  });
126
126
  }
127
127
  function SelectItemIndicator({ className, children, ref, ...props }) {
128
- const classes = mergeBaseClassName(["select__item-indicator"].filter(Boolean).join(" "), className);
128
+ const classes = mergeBaseClassName("select__item-indicator", className);
129
129
  return /* @__PURE__ */ jsx(Select$1.ItemIndicator, {
130
130
  ref,
131
131
  "data-slot": "select-item-indicator",
@@ -135,7 +135,7 @@ function SelectItemIndicator({ className, children, ref, ...props }) {
135
135
  });
136
136
  }
137
137
  function SelectGroup({ label, className, children, ref, ...props }) {
138
- const classes = mergeBaseClassName(["select__option-group"].filter(Boolean).join(" "), className);
138
+ const classes = mergeBaseClassName("select__option-group", className);
139
139
  return /* @__PURE__ */ jsxs(Select$1.Group, {
140
140
  ref,
141
141
  "data-slot": "select-group",
@@ -149,7 +149,7 @@ function SelectGroup({ label, className, children, ref, ...props }) {
149
149
  });
150
150
  }
151
151
  function SelectGroupLabel({ className, ref, ...props }) {
152
- const classes = mergeBaseClassName(["select__group-label"].filter(Boolean).join(" "), className);
152
+ const classes = mergeBaseClassName("select__group-label", className);
153
153
  return /* @__PURE__ */ jsx(Select$1.GroupLabel, {
154
154
  ref,
155
155
  "data-slot": "select-label",
@@ -158,7 +158,7 @@ function SelectGroupLabel({ className, ref, ...props }) {
158
158
  });
159
159
  }
160
160
  function SelectSeparator({ className, ref, ...props }) {
161
- const classes = mergeBaseClassName(["select__separator"].filter(Boolean).join(" "), className);
161
+ const classes = mergeBaseClassName("select__separator", className);
162
162
  return /* @__PURE__ */ jsx(Select$1.Separator, {
163
163
  ref,
164
164
  "data-slot": "select-separator",
@@ -167,7 +167,7 @@ function SelectSeparator({ className, ref, ...props }) {
167
167
  });
168
168
  }
169
169
  function SelectScrollUpArrow({ className, children, ref, ...props }) {
170
- const classes = mergeBaseClassName(["select__scroll-button", "select__scroll-button--up"].filter(Boolean).join(" "), className);
170
+ const classes = mergeBaseClassName("select__scroll-button select__scroll-button--up", className);
171
171
  return /* @__PURE__ */ jsx(Select$1.ScrollUpArrow, {
172
172
  ref,
173
173
  "data-slot": "select-scroll-up-button",
@@ -177,7 +177,7 @@ function SelectScrollUpArrow({ className, children, ref, ...props }) {
177
177
  });
178
178
  }
179
179
  function SelectScrollDownArrow({ className, children, ref, ...props }) {
180
- const classes = mergeBaseClassName(["select__scroll-button", "select__scroll-button--down"].filter(Boolean).join(" "), className);
180
+ const classes = mergeBaseClassName("select__scroll-button select__scroll-button--down", className);
181
181
  return /* @__PURE__ */ jsx(Select$1.ScrollDownArrow, {
182
182
  ref,
183
183
  "data-slot": "select-scroll-down-button",
@@ -35,7 +35,7 @@ import { Slider as Slider$1 } from "@base-ui/react/slider";
35
35
  * @see {@link https://base-ui.com/react/components/slider | Base UI Slider}
36
36
  */
37
37
  function SliderRoot({ className, ref, ...props }) {
38
- const classes = mergeBaseClassName(["slider"].filter(Boolean).join(" "), className);
38
+ const classes = mergeBaseClassName("slider", className);
39
39
  return /* @__PURE__ */ jsx(Slider$1.Root, {
40
40
  ref,
41
41
  "data-slot": "slider",
@@ -47,7 +47,7 @@ function SliderRoot({ className, ref, ...props }) {
47
47
  * The control area for the Slider (handles interactions).
48
48
  */
49
49
  function SliderControl({ className, ref, ...props }) {
50
- const classes = mergeBaseClassName(["slider__control"].filter(Boolean).join(" "), className);
50
+ const classes = mergeBaseClassName("slider__control", className);
51
51
  return /* @__PURE__ */ jsx(Slider$1.Control, {
52
52
  ref,
53
53
  "data-slot": "slider-control",
@@ -59,7 +59,7 @@ function SliderControl({ className, ref, ...props }) {
59
59
  * The track container for the Slider.
60
60
  */
61
61
  function SliderTrack({ className, ref, ...props }) {
62
- const classes = mergeBaseClassName(["slider__track"].filter(Boolean).join(" "), className);
62
+ const classes = mergeBaseClassName("slider__track", className);
63
63
  return /* @__PURE__ */ jsx(Slider$1.Track, {
64
64
  ref,
65
65
  "data-slot": "slider-track",
@@ -71,7 +71,7 @@ function SliderTrack({ className, ref, ...props }) {
71
71
  * The filled indicator showing current value position.
72
72
  */
73
73
  function SliderIndicator({ className, ref, ...props }) {
74
- const classes = mergeBaseClassName(["slider__indicator"].filter(Boolean).join(" "), className);
74
+ const classes = mergeBaseClassName("slider__indicator", className);
75
75
  return /* @__PURE__ */ jsx(Slider$1.Indicator, {
76
76
  ref,
77
77
  "data-slot": "slider-range",
@@ -83,7 +83,7 @@ function SliderIndicator({ className, ref, ...props }) {
83
83
  * The draggable thumb for the Slider.
84
84
  */
85
85
  function SliderThumb({ className, ref, ...props }) {
86
- const classes = mergeBaseClassName(["slider__thumb"].filter(Boolean).join(" "), className);
86
+ const classes = mergeBaseClassName("slider__thumb", className);
87
87
  return /* @__PURE__ */ jsx(Slider$1.Thumb, {
88
88
  ref,
89
89
  "data-slot": "slider-thumb",
@@ -96,7 +96,7 @@ function SliderThumb({ className, ref, ...props }) {
96
96
  * Note: This must be used inside a Slider component to access the value context.
97
97
  */
98
98
  function SliderOutput({ className, children, ref, ...props }) {
99
- const classes = mergeBaseClassName(["slider__output"].filter(Boolean).join(" "), className);
99
+ const classes = mergeBaseClassName("slider__output", className);
100
100
  return /* @__PURE__ */ jsx(Slider$1.Value, {
101
101
  ref,
102
102
  "data-slot": "slider-output",
@@ -107,7 +107,7 @@ function SliderOutput({ className, children, ref, ...props }) {
107
107
  }
108
108
  /** Visible label that participates in Base UI's slider naming relationship. */
109
109
  function SliderLabel({ className, ref, ...props }) {
110
- const classes = mergeBaseClassName(["slider__label"].filter(Boolean).join(" "), className);
110
+ const classes = mergeBaseClassName("slider__label", className);
111
111
  return /* @__PURE__ */ jsx(Slider$1.Label, {
112
112
  ref,
113
113
  "data-slot": "slider-label",
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { O as LinkIcon, p as ChevronRightIcon } from "../icons-DKXiSepE.js";
3
+ import { O as LinkIcon, p as ChevronRightIcon } from "../icons-DyOM0EJs.js";
4
4
  import "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/Sources.tsx
@@ -98,7 +98,7 @@ function Source({ title, description, children, className, href, ref, ...props }
98
98
  className: "sources__link-body",
99
99
  children: [
100
100
  title ? /* @__PURE__ */ jsx("span", {
101
- className: "sources__link-title",
101
+ className: "sources__link-title sigvelo-truncate",
102
102
  children: title
103
103
  }) : null,
104
104
  description ? /* @__PURE__ */ jsx("span", {
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { K as SpinnerIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Tabs } from "./Tabs.js";
4
4
  import * as React from "react";
5
5
  import { jsx } from "react/jsx-runtime";
@@ -1,11 +1,12 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
+ import { n as clamp } from "../format-S6uWyoSb.js";
2
3
  import { Progress } from "./Progress.js";
3
4
  import * as React from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
5
6
  //#region src/components/SubagentRunDetails.tsx
6
7
  function SubagentRunProgress({ className, label, value, ref, ...props }) {
7
8
  const labelId = React.useId();
8
- const percent = value === void 0 ? null : Math.round(Math.min(1, Math.max(0, value)) * 100);
9
+ const percent = value === void 0 ? null : Math.round(clamp(value, 0, 1) * 100);
9
10
  return /* @__PURE__ */ jsxs("div", {
10
11
  ref,
11
12
  className: cx("subagent-run__progress", className),
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { J as StopIcon, K as SpinnerIcon, Q as WarningIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { J as StopIcon, K as SpinnerIcon, Q as WarningIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/components/SubagentRunIndicator.tsx
@@ -32,7 +32,7 @@ function SubagentRunSelector({ className, render, run, tooltip, ref, "aria-label
32
32
  children: [
33
33
  /* @__PURE__ */ jsx(NaniteMark, { index: run.order }),
34
34
  /* @__PURE__ */ jsx("span", {
35
- className: "subagent-run__title",
35
+ className: "subagent-run__title sigvelo-truncate",
36
36
  children: name
37
37
  }),
38
38
  /* @__PURE__ */ jsx(SubagentRunIndicator, { run })
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
1
+ import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Switch as Switch$1 } from "@base-ui/react/switch";
@@ -25,7 +25,7 @@ import { Switch as Switch$1 } from "@base-ui/react/switch";
25
25
  * @see {@link https://base-ui.com/react/components/switch | Base UI Switch}
26
26
  */
27
27
  function SwitchRoot({ size = "md", className, ref, ...props }) {
28
- const classes = mergeBaseClassName(["switch", size !== "md" && `switch--${size}`].filter(Boolean).join(" "), className);
28
+ const classes = mergeBaseClassName(cx("switch", size !== "md" && `switch--${size}`), className);
29
29
  return /* @__PURE__ */ jsx(Switch$1.Root, {
30
30
  ref,
31
31
  "data-slot": "switch",
@@ -38,7 +38,7 @@ function SwitchRoot({ size = "md", className, ref, ...props }) {
38
38
  * The thumb indicator for the Switch component.
39
39
  */
40
40
  function SwitchThumb({ className, ref, ...props }) {
41
- const classes = mergeBaseClassName(["switch__thumb"].filter(Boolean).join(" "), className);
41
+ const classes = mergeBaseClassName("switch__thumb", className);
42
42
  return /* @__PURE__ */ jsx(Switch$1.Thumb, {
43
43
  ref,
44
44
  "data-slot": "switch-thumb",
@@ -1,4 +1,4 @@
1
- import { n as mergeBaseClassName } from "../class-names-BiMDVpUo.js";
1
+ import { n as mergeBaseClassName, t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import "react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { Tabs as Tabs$1 } from "@base-ui/react/tabs";
@@ -28,7 +28,7 @@ function tabsListVariants({ variant = "default", className } = {}) {
28
28
  * @see {@link https://base-ui.com/react/components/tabs | Base UI Tabs}
29
29
  */
30
30
  function TabsRoot({ orientation = "horizontal", variant = "default", className, unstyled = false, ref, ...props }) {
31
- const classes = unstyled ? className : mergeBaseClassName(["tabs", variant !== "default" && `tabs--${variant}`].filter(Boolean).join(" "), className);
31
+ const classes = unstyled ? className : mergeBaseClassName(cx("tabs", variant !== "default" && `tabs--${variant}`), className);
32
32
  return /* @__PURE__ */ jsx(Tabs$1.Root, {
33
33
  ref,
34
34
  "data-slot": "tabs",
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { S as FileIcon, W as SearchIcon, p as ChevronRightIcon } from "../icons-DKXiSepE.js";
3
+ import { S as FileIcon, W as SearchIcon, p as ChevronRightIcon } from "../icons-DyOM0EJs.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/Task.tsx
@@ -62,7 +62,7 @@ function TaskTrigger({ className, title, children, ref, ...props }) {
62
62
  children: /* @__PURE__ */ jsx(SearchIcon, {})
63
63
  }),
64
64
  /* @__PURE__ */ jsx("span", {
65
- className: "task__trigger-title sigvelo-truncate",
65
+ className: "task__trigger-title sigvelo-truncate sigvelo-truncate-grow",
66
66
  children: title
67
67
  }),
68
68
  /* @__PURE__ */ jsx("span", {
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { X as TerminalIcon, et as XIcon } from "../icons-DKXiSepE.js";
2
+ import { X as TerminalIcon, et as XIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
- import { t as CopyButton } from "../copy-button-BtRwhRks.js";
5
+ import { t as CopyButton } from "../copy-button-vo1paUSi.js";
6
6
  import { Badge } from "./Badge.js";
7
7
  import { ScrollArea } from "./ScrollArea.js";
8
8
  import * as React from "react";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
2
  import { Collapsible } from "./Collapsible.js";
3
- import { K as SpinnerIcon, et as XIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
3
+ import { K as SpinnerIcon, et as XIcon, p as ChevronRightIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
4
4
  import { Badge } from "./Badge.js";
5
5
  import * as React from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -207,7 +207,7 @@ function TestSuiteName({ className, children, ref, ...props }) {
207
207
  children: STATUS_LABEL[status]
208
208
  }),
209
209
  /* @__PURE__ */ jsx("span", {
210
- className: "test-results__suite-name",
210
+ className: "test-results__suite-name sigvelo-truncate",
211
211
  children: children ?? name
212
212
  })
213
213
  ]
@@ -299,7 +299,7 @@ function TestName({ className, children, ref, ...props }) {
299
299
  const { name } = React.useContext(TestContext);
300
300
  return /* @__PURE__ */ jsx("span", {
301
301
  ref,
302
- className: cx("test-results__test-name", className),
302
+ className: cx("test-results__test-name", "sigvelo-truncate", className),
303
303
  ...props,
304
304
  children: children ?? name
305
305
  });
@@ -1,4 +1,4 @@
1
- import { F as MoonIcon, P as MonitorIcon, Y as SunIcon } from "../icons-DKXiSepE.js";
1
+ import { F as MoonIcon, P as MonitorIcon, Y as SunIcon } from "../icons-DyOM0EJs.js";
2
2
  import { Radio, RadioGroup } from "./RadioGroup.js";
3
3
  import { useTheme } from "./ThemeProvider.js";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,9 +1,9 @@
1
1
  import { i as AgentMessageRenderPartContext } from "../AgentMessageParts-CyD2UB3V.js";
2
- import { r as AgentChatProps } from "../AgentChat-CaQaT0LF.js";
2
+ import { r as AgentChatProps } from "../AgentChat-C-ZyXbJz.js";
3
3
  import { i as useOptionalAgentToolRuns, n as AgentToolRunsProvider, r as AgentToolRunsProviderProps, t as AgentToolEventsValue } from "../AgentToolRunsContext-BVe4stgw.js";
4
4
  import { S as isThinkChatActivityPart } from "../ThinkChatToolParts-CSzVwMXf.js";
5
5
  import { l as describeThinkChatActivityPart } from "../ThinkChatActivitySummary-D1xOrNrq.js";
6
- import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-CnIJPvV5.js";
6
+ import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-CdbL0aoA.js";
7
7
  import { n as ThinkChatValue } from "../ThinkChatContext-DrsZqdaO.js";
8
8
  import { n as ThinkRecoveryNoticeProps, t as ThinkRecoveryNotice } from "../ThinkRecoveryNotice-DFIcG9UX.js";
9
9
  import { n as BrowserLiveViewProps, t as BrowserLiveView } from "../BrowserLiveView-BV5qgFgI.js";
@@ -34,6 +34,8 @@ interface ThinkChatProviderProps<State = unknown, MessageT extends UIMessage = U
34
34
  interface ThinkChatRootProps<State = unknown> {
35
35
  /** Agent to connect to: a kebab-case class name, or full `useAgent` options. */
36
36
  agent: string | UseAgentOptions<State>;
37
+ /** Disable durable pending-approval discovery. Also disable it on `ThinkChat.Messages`. */
38
+ approvalsEnabled?: boolean;
37
39
  /** Instance name (e.g. a session or room id). Wins over `agent.name`. */
38
40
  name?: string;
39
41
  /**
@@ -91,6 +93,12 @@ interface ThinkChatMessagesProps<MessageT extends UIMessage = UIMessage> extends
91
93
  renderPart?: AgentChatProps<MessageT>["renderPart"];
92
94
  /** Whole upstream Think stub. `ThinkChat.Root` wires `agent.stub` automatically. */
93
95
  thinkStub?: AgentStub<Think>;
96
+ /**
97
+ * Disable transcript approval scanning, automatic responses, cards, and
98
+ * composer controls. Set the matching prop on `ThinkChat.Root` to also skip
99
+ * durable pending-approval discovery; `ThinkFullApp` wires both from here.
100
+ */
101
+ approvalsEnabled?: AgentChatProps<MessageT>["approvalsEnabled"];
94
102
  /** Parent-owned Ask/Bypass policy; omit to keep AgentChat's session-local mode. */
95
103
  permissionModeControl?: AgentChatProps<MessageT>["permissionModeControl"];
96
104
  /** Called after a Think approve/reject RPC settles. Root uses this to refresh approvals. */
@@ -106,7 +114,7 @@ interface ThinkChatMessagesProps<MessageT extends UIMessage = UIMessage> extends
106
114
  }
107
115
  /** Shared pending-approval options for components and TanStack Router loaders. */
108
116
  declare function thinkPendingExecutionApprovalsQueryOptions(stub: AgentStub<Think>, sourceKey: string): ThinkPendingExecutionApprovalsQueryOptions;
109
- declare function useThinkPendingExecutionApprovals(stub: AgentStub<Think>, sourceKey: string, refreshSignal?: unknown): {
117
+ declare function useThinkPendingExecutionApprovals(stub: AgentStub<Think>, sourceKey: string, refreshSignal?: unknown, enabled?: boolean): {
110
118
  pendingApprovals: readonly PendingApproval[];
111
119
  refreshPendingApprovals: () => Promise<void>;
112
120
  };
@@ -141,6 +149,7 @@ declare function ThinkChatProvider<State = unknown, MessageT extends UIMessage =
141
149
  */
142
150
  declare function ThinkChatRoot<State = unknown, MessageT extends UIMessage = UIMessage>({
143
151
  agent: agentOption,
152
+ approvalsEnabled,
144
153
  name,
145
154
  sourceKey,
146
155
  children
@@ -5,7 +5,7 @@ import { inferWorkspaceLanguage } from "./WorkspaceFile.js";
5
5
  import { describeThinkChatActivityPart } from "./ThinkChatActivitySummary.js";
6
6
  import { ThinkChatActivity, createThinkChatActivityRenderer, renderThinkChatActivityPart } from "./ThinkChatActivity.js";
7
7
  import { ThinkRecoveryNotice } from "./ThinkRecoveryNotice.js";
8
- import { a as thinkPendingExecutionApprovalsQueryOptions, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkChat, r as ThinkChatProvider, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../ThinkChat-15EhfvYJ.js";
8
+ import { a as thinkPendingExecutionApprovalsQueryOptions, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkChat, r as ThinkChatProvider, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../ThinkChat-E_HrfH76.js";
9
9
  import { BrowserReplay } from "./BrowserReplay.js";
10
10
  import { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions } from "./Workspace.js";
11
11
  import { WorkspaceExplorer } from "./WorkspaceExplorer.js";
@@ -1,4 +1,4 @@
1
1
  import { S as isThinkChatActivityPart } from "../ThinkChatToolParts-CSzVwMXf.js";
2
2
  import { l as describeThinkChatActivityPart } from "../ThinkChatActivitySummary-D1xOrNrq.js";
3
- import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-CnIJPvV5.js";
3
+ import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-CdbL0aoA.js";
4
4
  export { ThinkChatActivity, ThinkChatActivityProps, ThinkChatActivityRendererOptions, ThinkChatToolRenderer, ThinkChatToolRenderers, createThinkChatActivityRenderer, describeThinkChatActivityPart, isThinkChatActivityPart, renderThinkChatActivityPart };
@@ -1,5 +1,6 @@
1
1
  import { Activity, ActivityContent, ActivityItem, ActivityItemGroup, ActivityText, ActivityTrigger } from "./Activity.js";
2
2
  import { AgentActivityFavicon, AgentActivityIcon } from "./AgentActivity.js";
3
+ import { f as MessageResponse } from "../Message-DzuteocT.js";
3
4
  import { isBrowserToolPart, isExecuteToolPart, isFetchToolPart, isPartWorking, isSessionContextToolPart, isSkillToolPart, isThinkChatActivityPart, isWorkspaceToolPart } from "./ThinkChatToolParts.js";
4
5
  import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
5
6
  import { SubagentRunList } from "./SubagentRunList.js";
@@ -68,7 +69,7 @@ function ThinkChatActivityStep({ text, part, toolRenderers }) {
68
69
  if (isReasoningUIPart(part) && part.text.trim()) return /* @__PURE__ */ jsx(ActivityItemGroup, {
69
70
  label: text,
70
71
  icon,
71
- children: /* @__PURE__ */ jsx(ActivityText, { children: part.text })
72
+ children: /* @__PURE__ */ jsx(ActivityText, { children: /* @__PURE__ */ jsx(MessageResponse, { children: part.text }) })
72
73
  });
73
74
  if (isWorkspaceToolPart(part) && part.type !== "tool-delete") return /* @__PURE__ */ jsx(ActivityItemGroup, {
74
75
  label: text,
@@ -161,9 +161,9 @@ function describeThinkChatActivityPart(part, toolRenderers) {
161
161
  if (custom !== void 0) return custom;
162
162
  }
163
163
  if (isReasoningUIPart(part)) {
164
- const snippet = summarizeToolInput({ text: part.text });
164
+ const snippet = summarizeReasoningTitle(part.text);
165
165
  const label = part.state === "streaming" ? "Thinking…" : "Thought";
166
- return snippet ? `${label} · ${snippet}` : label;
166
+ return snippet ?? label;
167
167
  }
168
168
  if (isWorkspaceToolPart(part)) return describeWorkspaceToolPart(part);
169
169
  if (isSkillToolPart(part)) return describeSkillToolPart(part);
@@ -240,7 +240,7 @@ function describeBrowserToolPart(part) {
240
240
  if (part.type === "tool-browser_execute") {
241
241
  const output = part.state === "output-available" ? part.output : void 0;
242
242
  if (failed || output?.status === "error") return "Browser automation failed";
243
- if (output?.status === "paused") return "Browser waiting for approval";
243
+ if (output?.status === "paused") return isHumanWaitPause(output) ? "Browser waiting for human" : "Browser waiting for approval";
244
244
  return working ? "Using the browser" : "Used the browser";
245
245
  }
246
246
  const page = displayUrl(part.input?.url) || "a page";
@@ -256,12 +256,25 @@ function describeBrowserToolPart(part) {
256
256
  }
257
257
  function describeExecuteToolPart(part) {
258
258
  const output = part.state === "output-available" ? part.output : void 0;
259
+ if (output?.status === "paused") return isHumanWaitPause(output) ? "Code waiting for human" : "Code waiting for approval";
260
+ const explicitSummary = part.input ? Reflect.get(part.input, "summary") : void 0;
261
+ const summary = typeof explicitSummary === "string" ? summarizeToolInput({ summary: explicitSummary }) : null;
262
+ if (summary) return summary;
259
263
  if (isPartFailed(part) || output?.status === "error") return "Code failed";
260
- if (output?.status === "paused") return "Code waiting for approval";
261
264
  const label = isPartWorking(part) ? "Running code" : "Ran code";
262
265
  const snippet = summarizeToolInput(part.input);
263
266
  return snippet ? `${label} · ${snippet}` : label;
264
267
  }
268
+ function summarizeReasoningTitle(text) {
269
+ const line = text.split("\n").find((candidate) => candidate.trim())?.trim();
270
+ if (!line) return null;
271
+ const title = line.replace(/^#{1,6}(?:\s+|$)/, "").replace(/(?:\s+|^)#{1,6}$/, "").replace(/^(?:\*\*|__)/, "").replace(/(?:\*\*|__)$/, "").trim();
272
+ return /^[#*_]*$/.test(title) ? null : summarizeToolInput({ summary: title });
273
+ }
274
+ function isHumanWaitPause(output) {
275
+ const pending = output.pending ?? [];
276
+ return pending.length > 0 && pending.every((action) => action.connector === "human" && action.method === "waitFor");
277
+ }
265
278
  function describeFetchToolPart(part) {
266
279
  const target = part.input?.url ?? part.input?.path ?? "";
267
280
  const output = part.state === "output-available" ? part.output : void 0;
@@ -1,7 +1,7 @@
1
1
  import { ActivityOutput, ActivityPanel } from "./Activity.js";
2
2
  import { displayUrl, isSessionContextToolFailure } from "./ThinkChatToolParts.js";
3
3
  import { Tabs } from "./Tabs.js";
4
- import { t as CodeBlock } from "../CodeBlock-Bb-IPBc_.js";
4
+ import { t as CodeBlock } from "../CodeBlock-ygtuzqJd.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
6
6
  import { inferWorkspaceLanguage } from "./WorkspaceFile.js";
7
7
  import * as React from "react";
@@ -329,20 +329,25 @@ function formatAuditValue(value) {
329
329
  const maxLength = 240;
330
330
  return formatted.length > maxLength ? `${formatted.slice(0, maxLength - 1)}…` : formatted;
331
331
  }
332
+ function isHumanWait(action) {
333
+ return action.connector === "human" && action.method === "waitFor";
334
+ }
332
335
  function toolCallStateLabel(call) {
333
- const state = call.state === "pending" ? "awaiting approval" : call.state === "applied" ? "applied" : call.state;
334
- const qualifiers = [call.requiresApproval && call.state !== "pending" ? "approval required" : "", call.ephemeral ? "re-executes on replay" : ""].filter(Boolean);
336
+ const humanWait = isHumanWait(call);
337
+ const state = call.state === "pending" ? humanWait ? "waiting for human" : "awaiting approval" : call.state === "applied" ? "applied" : call.state;
338
+ const qualifiers = [call.requiresApproval && call.state !== "pending" && !humanWait ? "approval required" : "", call.ephemeral ? "re-executes on replay" : ""].filter(Boolean);
335
339
  return qualifiers.length ? `${state} · ${qualifiers.join(" · ")}` : state;
336
340
  }
337
341
  function formatPendingActions(pending) {
338
342
  return pending.map((action) => {
339
343
  const args = action.args === void 0 ? "" : JSON.stringify(action.args);
340
- return `awaiting approval: ${action.connector}.${action.method}(${args})`;
344
+ return `${isHumanWait(action) ? "waiting for a human step" : "awaiting approval"}: ${action.connector}.${action.method}(${args})`;
341
345
  }).join("\n");
342
346
  }
343
347
  function executeStatusText(output) {
344
348
  if (!output) return void 0;
345
- return output.status === "paused" ? "paused · needs approval" : output.status;
349
+ if (output.status !== "paused") return output.status;
350
+ return output.pending.length > 0 && output.pending.every(isHumanWait) ? "paused · waiting for human" : "paused · needs approval";
346
351
  }
347
352
  /** The codemode execute tool as an activity panel: highlighted TypeScript
348
353
  plus logs, result, and the paused pending-approval list. */
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { D as InfoIcon, S as FileIcon, U as RefreshIcon, X as TerminalIcon, et as XIcon, n as ArrowDownIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { D as InfoIcon, S as FileIcon, U as RefreshIcon, X as TerminalIcon, et as XIcon, n as ArrowDownIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Activity, ActivityContent, ActivityItem, ActivityItemGroup, ActivityOutput, ActivityPanel, ActivityTrigger } from "./Activity.js";
4
4
  import { formatThinkExecutionRunProgress, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunTitle, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
5
5
  import { ThinkExecutionStatus } from "./ThinkExecutionStatus.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { D as InfoIcon, K as SpinnerIcon, R as PauseIcon, et as XIcon, u as CheckIcon } from "../icons-DKXiSepE.js";
2
+ import { D as InfoIcon, K as SpinnerIcon, R as PauseIcon, et as XIcon, u as CheckIcon } from "../icons-DyOM0EJs.js";
3
3
  import { Tooltip } from "./Tooltip.js";
4
4
  import { formatThinkExecutionStatus, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone } from "./ThinkExecutionRun.js";
5
5
  import "react";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../class-names-BiMDVpUo.js";
2
- import { U as RefreshIcon, y as EllipsisIcon } from "../icons-DKXiSepE.js";
2
+ import { U as RefreshIcon, y as EllipsisIcon } from "../icons-DyOM0EJs.js";
3
3
  import { t as NavigationLink } from "../navigation-link-Cob7KBlM.js";
4
4
  import { Button, buttonVariants } from "./Button.js";
5
5
  import { Tooltip } from "./Tooltip.js";
@@ -223,7 +223,7 @@ function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPa
223
223
  children: [/* @__PURE__ */ jsxs("span", {
224
224
  className: "think-execution-workbench__run-heading",
225
225
  children: [/* @__PURE__ */ jsx("span", {
226
- className: "think-execution-workbench__run-title",
226
+ className: "think-execution-workbench__run-title sigvelo-truncate",
227
227
  children: getThinkExecutionRunTitle(run)
228
228
  }), getThinkExecutionRunSubtitle(run) ? /* @__PURE__ */ jsx("code", { children: getThinkExecutionRunSubtitle(run) }) : null]
229
229
  }), /* @__PURE__ */ jsx("span", {