@mcp-b/react-components 0.14.2 → 0.16.1

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 (251) hide show
  1. package/dist/AgentActivity-BNUNrP9O.d.ts +36 -0
  2. package/dist/{AgentChat-DQkqt82e.d.ts → AgentChat-CrlpbvQJ.d.ts} +58 -6
  3. package/dist/{CodeBlock-DUh9WOGo.d.ts → CodeBlock-BRajW4QU.d.ts} +1 -1
  4. package/dist/{CodeBlock-BUFXG8HW.js → CodeBlock-BmB4Xaqq.js} +15 -4
  5. package/dist/{FileTree-mpEIcfzA.js → FileTree-CkVbIMWV.js} +82 -89
  6. package/dist/Message-BkMdE3bS.js +375 -0
  7. package/dist/{ModelSelector-CPCpFAUt.js → ModelSelector-SlJNgwKY.js} +2 -2
  8. package/dist/{PromptInput-ClNqBiIw.d.ts → PromptInput-BWTuXMOD.d.ts} +123 -5
  9. package/dist/ResponsiveSidebarShell-Dd9DCcBT.d.ts +67 -0
  10. package/dist/{Select-Dl_vF_Bt.d.ts → Select-BeEsefzh.d.ts} +12 -2
  11. package/dist/{ThinkChat-BPcehdbP.js → ThinkChat-CzC-zNGA.js} +24 -36
  12. package/dist/{ThinkChatActivity-BmwuIigx.d.ts → ThinkChatActivity-BFQnb2ct.d.ts} +3 -10
  13. package/dist/ThinkChatActivitySummary-BPmu9a-c.d.ts +39 -0
  14. package/dist/{ThinkChatToolParts-CDEjqS6A.d.ts → ThinkChatToolParts-CSzVwMXf.d.ts} +13 -3
  15. package/dist/ThinkExecutionRun-ChhWhOoU.d.ts +30 -0
  16. package/dist/Toggle-CAAlNl-M.d.ts +69 -0
  17. package/dist/ToggleGroup-8hPv-b69.d.ts +73 -0
  18. package/dist/Workspace-D39LxGvP.d.ts +62 -0
  19. package/dist/WorkspaceFile-DOZkPwzu.d.ts +106 -0
  20. package/dist/WorkspaceFileView-rSN_yT0L.js +744 -0
  21. package/dist/WorkspaceLink-DIPbXrUM.js +337 -0
  22. package/dist/WorkspaceLink-DK1DWMHe.d.ts +89 -0
  23. package/dist/components/Activity.d.ts +27 -1
  24. package/dist/components/Activity.js +33 -15
  25. package/dist/components/AgentActivity.d.ts +2 -0
  26. package/dist/components/AgentActivity.js +45 -0
  27. package/dist/components/AgentActivityPreview.d.ts +46 -0
  28. package/dist/components/AgentActivityPreview.js +94 -0
  29. package/dist/components/AgentAttention.d.ts +73 -0
  30. package/dist/components/AgentAttention.js +85 -0
  31. package/dist/components/AgentChat.d.ts +2 -2
  32. package/dist/components/AgentChat.js +224 -200
  33. package/dist/components/AgentChatMessageEditor.d.ts +29 -0
  34. package/dist/components/AgentChatMessageEditor.js +92 -0
  35. package/dist/components/AgentChatTurnError.d.ts +17 -0
  36. package/dist/components/AgentChatTurnError.js +40 -0
  37. package/dist/components/AgentConnection.d.ts +12 -17
  38. package/dist/components/AgentConnection.js +99 -91
  39. package/dist/components/AppFrame.d.ts +24 -0
  40. package/dist/components/AppFrame.js +25 -0
  41. package/dist/components/AppTopBar.d.ts +71 -0
  42. package/dist/components/AppTopBar.js +82 -0
  43. package/dist/components/Artifact.js +1 -1
  44. package/dist/components/BrowserLiveView.js +1 -1
  45. package/dist/components/BrowserReplay.js +1 -1
  46. package/dist/components/BrowserRunPanel.js +1 -1
  47. package/dist/components/Card.d.ts +3 -0
  48. package/dist/components/Card.js +2 -1
  49. package/dist/components/ChainOfThought.d.ts +1 -1
  50. package/dist/components/ChainOfThought.js +1 -1
  51. package/dist/components/ChatGptSignInScreen.js +2 -2
  52. package/dist/components/Checkbox.js +5 -13
  53. package/dist/components/CheckboxGroup.d.ts +58 -2
  54. package/dist/components/CheckboxGroup.js +59 -1
  55. package/dist/components/CodeBlock.d.ts +1 -1
  56. package/dist/components/CodeBlock.js +1 -1
  57. package/dist/components/CodexModelSelector.js +1 -1
  58. package/dist/components/Commit.js +2 -2
  59. package/dist/components/ContextMenu.js +1 -1
  60. package/dist/components/Conversation.js +1 -1
  61. package/dist/components/DescriptionList.d.ts +12 -0
  62. package/dist/components/DescriptionList.js +11 -0
  63. package/dist/components/DescriptionListParts.d.ts +37 -0
  64. package/dist/components/DescriptionListParts.js +35 -0
  65. package/dist/components/EnvironmentVariables.js +2 -2
  66. package/dist/components/Fieldset.d.ts +13 -1
  67. package/dist/components/Fieldset.js +11 -2
  68. package/dist/components/FileTree.js +1 -1
  69. package/dist/components/IconButton.d.ts +33 -0
  70. package/dist/components/IconButton.js +27 -0
  71. package/dist/components/McpConnectionRequest.d.ts +44 -0
  72. package/dist/components/McpConnectionRequest.js +122 -0
  73. package/dist/components/McpServerPicker.d.ts +48 -23
  74. package/dist/components/McpServerPicker.js +238 -189
  75. package/dist/components/Menubar.js +1 -1
  76. package/dist/components/Message.d.ts +1 -0
  77. package/dist/components/Message.js +1 -285
  78. package/dist/components/MessageScroller.js +1 -1
  79. package/dist/components/ModelSelector.js +1 -1
  80. package/dist/components/Pricing.d.ts +37 -0
  81. package/dist/components/Pricing.js +17 -0
  82. package/dist/components/PricingBillingToggle.d.ts +23 -0
  83. package/dist/components/PricingBillingToggle.js +86 -0
  84. package/dist/components/PricingConfirmationDialog.d.ts +25 -0
  85. package/dist/components/PricingConfirmationDialog.js +57 -0
  86. package/dist/components/PricingFAQ.d.ts +18 -0
  87. package/dist/components/PricingFAQ.js +27 -0
  88. package/dist/components/PricingPage.d.ts +2 -38
  89. package/dist/components/PricingPage.js +39 -359
  90. package/dist/components/PricingPlanCard.d.ts +22 -0
  91. package/dist/components/PricingPlanCard.js +109 -0
  92. package/dist/components/PricingUsageCalculator.d.ts +22 -0
  93. package/dist/components/PricingUsageCalculator.js +96 -0
  94. package/dist/components/PromptInput.d.ts +2 -2
  95. package/dist/components/PromptInput.js +210 -15
  96. package/dist/components/Queue.js +1 -1
  97. package/dist/components/Reasoning.d.ts +2 -1
  98. package/dist/components/Reasoning.js +14 -29
  99. package/dist/components/ResizableSidePanel.d.ts +57 -0
  100. package/dist/components/ResizableSidePanel.js +151 -0
  101. package/dist/components/ResponsiveSidebarShell.d.ts +2 -0
  102. package/dist/components/ResponsiveSidebarShell.js +129 -0
  103. package/dist/components/Select.d.ts +2 -2
  104. package/dist/components/Select.js +11 -2
  105. package/dist/components/Slider.d.ts +13 -1
  106. package/dist/components/Slider.js +11 -0
  107. package/dist/components/Sources.js +1 -1
  108. package/dist/components/Stepper.d.ts +4 -0
  109. package/dist/components/Stepper.js +5 -3
  110. package/dist/components/SubagentRun.d.ts +18 -19
  111. package/dist/components/SubagentRun.js +25 -18
  112. package/dist/components/SubagentRunIndicator.d.ts +22 -0
  113. package/dist/components/SubagentRunIndicator.js +33 -0
  114. package/dist/components/SubagentRunList.d.ts +25 -0
  115. package/dist/components/SubagentRunList.js +26 -0
  116. package/dist/components/SubagentRunSelector.d.ts +47 -0
  117. package/dist/components/SubagentRunSelector.js +55 -0
  118. package/dist/components/Task.js +1 -1
  119. package/dist/components/Terminal.js +2 -2
  120. package/dist/components/TestResults.js +1 -1
  121. package/dist/components/Textarea.d.ts +21 -0
  122. package/dist/components/Textarea.js +19 -0
  123. package/dist/components/ThemeModeControl.d.ts +24 -0
  124. package/dist/components/ThemeModeControl.js +52 -0
  125. package/dist/components/ThemeProvider.d.ts +38 -0
  126. package/dist/components/ThemeProvider.js +80 -0
  127. package/dist/components/ThinkChat.d.ts +29 -6
  128. package/dist/components/ThinkChat.js +7 -4
  129. package/dist/components/ThinkChatActivity.d.ts +3 -2
  130. package/dist/components/ThinkChatActivity.js +12 -318
  131. package/dist/components/ThinkChatActivitySummary.d.ts +2 -0
  132. package/dist/components/ThinkChatActivitySummary.js +421 -0
  133. package/dist/components/ThinkChatToolPanels.d.ts +7 -5
  134. package/dist/components/ThinkChatToolPanels.js +70 -8
  135. package/dist/components/ThinkChatToolParts.d.ts +2 -2
  136. package/dist/components/ThinkChatToolParts.js +36 -10
  137. package/dist/components/ThinkExecutionDetail.d.ts +20 -0
  138. package/dist/components/ThinkExecutionDetail.js +80 -0
  139. package/dist/components/ThinkExecutionRun.d.ts +2 -0
  140. package/dist/components/ThinkExecutionRun.js +72 -0
  141. package/dist/components/ThinkExecutionStatus.d.ts +22 -0
  142. package/dist/components/ThinkExecutionStatus.js +36 -0
  143. package/dist/components/ThinkExecutionWorkbench.d.ts +7 -0
  144. package/dist/components/ThinkExecutionWorkbench.js +69 -225
  145. package/dist/components/ThinkFullApp.d.ts +58 -14
  146. package/dist/components/ThinkFullApp.js +154 -160
  147. package/dist/components/ThinkFullAppViewSwitch.d.ts +31 -0
  148. package/dist/components/ThinkFullAppViewSwitch.js +34 -0
  149. package/dist/components/ThinkRoutine.d.ts +36 -0
  150. package/dist/components/ThinkRoutine.js +15 -0
  151. package/dist/components/ThinkRoutineBrowser.d.ts +25 -0
  152. package/dist/components/ThinkRoutineBrowser.js +156 -0
  153. package/dist/components/ThinkRoutineDetail.d.ts +24 -0
  154. package/dist/components/ThinkRoutineDetail.js +102 -0
  155. package/dist/components/ThinkRoutineForm.d.ts +32 -0
  156. package/dist/components/ThinkRoutineForm.js +151 -0
  157. package/dist/components/ThinkRoutineLibrary.d.ts +74 -0
  158. package/dist/components/ThinkRoutineLibrary.js +178 -0
  159. package/dist/components/ThinkRoutineRuns.d.ts +24 -0
  160. package/dist/components/ThinkRoutineRuns.js +68 -0
  161. package/dist/components/ThinkThreadPicker.d.ts +18 -1
  162. package/dist/components/ThinkThreadPicker.js +51 -5
  163. package/dist/components/ThinkThreadShell.d.ts +12 -9
  164. package/dist/components/ThinkThreadShell.js +17 -137
  165. package/dist/components/Toggle.d.ts +1 -68
  166. package/dist/components/ToggleGroup.d.ts +1 -72
  167. package/dist/components/Tooltip.d.ts +3 -1
  168. package/dist/components/Tooltip.js +4 -2
  169. package/dist/components/WebPreview.js +1 -1
  170. package/dist/components/Workspace.d.ts +2 -0
  171. package/dist/components/Workspace.js +424 -0
  172. package/dist/components/WorkspaceBrowser.d.ts +32 -0
  173. package/dist/components/WorkspaceBrowser.js +103 -0
  174. package/dist/components/WorkspaceExplorer.d.ts +12 -79
  175. package/dist/components/WorkspaceExplorer.js +116 -330
  176. package/dist/components/WorkspaceFile.d.ts +2 -0
  177. package/dist/components/WorkspaceFile.js +195 -0
  178. package/dist/components/WorkspaceFileView.d.ts +26 -0
  179. package/dist/components/WorkspaceFileView.js +2 -0
  180. package/dist/components/WorkspaceHeader.d.ts +35 -0
  181. package/dist/components/WorkspaceHeader.js +51 -0
  182. package/dist/components/WorkspaceLink.d.ts +2 -0
  183. package/dist/components/WorkspaceLink.js +2 -0
  184. package/dist/components/icons.d.ts +2 -2
  185. package/dist/components/icons.js +2 -2
  186. package/dist/{copy-button-DUMLYdsk.js → copy-button-Dejn5heL.js} +1 -1
  187. package/dist/icons-CpfUer49.js +85 -0
  188. package/dist/{icons-CUCz_Sft.d.ts → icons-GQd1xF4e.d.ts} +51 -1
  189. package/dist/styles/activity-header.css +75 -0
  190. package/dist/styles/activity.css +49 -63
  191. package/dist/styles/agent-activity-preview-overlay.css +80 -0
  192. package/dist/styles/agent-activity-preview.css +233 -0
  193. package/dist/styles/agent-attention.css +128 -0
  194. package/dist/styles/agent-chat.css +133 -4
  195. package/dist/styles/agent-connection.css +9 -9
  196. package/dist/styles/alert-dialog.css +11 -11
  197. package/dist/styles/app-frame.css +15 -0
  198. package/dist/styles/app-top-bar.css +102 -0
  199. package/dist/styles/avatar.css +0 -1
  200. package/dist/styles/browser-control-overlay.css +184 -0
  201. package/dist/styles/card.css +29 -8
  202. package/dist/styles/chain-of-thought.css +5 -5
  203. package/dist/styles/checkbox-group.css +69 -0
  204. package/dist/styles/codex-model-selector.css +3 -3
  205. package/dist/styles/combobox.css +2 -1
  206. package/dist/styles/context-menu.css +1 -1
  207. package/dist/styles/description-list.css +50 -0
  208. package/dist/styles/dialog.css +11 -11
  209. package/dist/styles/field.css +14 -14
  210. package/dist/styles/fieldset.css +15 -4
  211. package/dist/styles/index.css +14 -2
  212. package/dist/styles/mcp-connection-request.css +60 -0
  213. package/dist/styles/mcp-server-picker.css +96 -68
  214. package/dist/styles/menu.css +1 -1
  215. package/dist/styles/message.css +4 -43
  216. package/dist/styles/model-selector.css +18 -12
  217. package/dist/styles/popover.css +9 -9
  218. package/dist/styles/preview-card.css +1 -1
  219. package/dist/styles/pricing-page.css +21 -27
  220. package/dist/styles/prompt-input.css +225 -32
  221. package/dist/styles/reasoning.css +1 -55
  222. package/dist/styles/recipes.css +50 -24
  223. package/dist/styles/resizable-side-panel.css +66 -0
  224. package/dist/styles/responsive-sidebar-shell.css +169 -0
  225. package/dist/styles/select.css +13 -3
  226. package/dist/styles/sources.css +6 -6
  227. package/dist/styles/stepper.css +13 -0
  228. package/dist/styles/streamdown.css +0 -4
  229. package/dist/styles/subagent-run.css +59 -42
  230. package/dist/styles/task.css +17 -10
  231. package/dist/styles/test-results.css +17 -10
  232. package/dist/styles/textarea.css +20 -0
  233. package/dist/styles/theme-mode-control.css +72 -0
  234. package/dist/styles/think-execution-status.css +49 -0
  235. package/dist/styles/think-execution-workbench.css +16 -80
  236. package/dist/styles/think-full-app.css +143 -128
  237. package/dist/styles/think-routine-library.css +491 -0
  238. package/dist/styles/think-thread-picker.css +47 -3
  239. package/dist/styles/toast.css +6 -6
  240. package/dist/styles/toggle-group.css +7 -0
  241. package/dist/styles/tooltip.css +1 -1
  242. package/dist/styles/workspace-explorer.css +516 -64
  243. package/dist/utils/mcp-server-catalog.d.ts +82 -78
  244. package/dist/utils/mcp-server-catalog.js +64 -41
  245. package/dist/utils/structured-code.d.ts +1 -1
  246. package/dist/utils/theme.d.ts +22 -0
  247. package/dist/utils/theme.js +55 -0
  248. package/package.json +34 -28
  249. package/dist/icons-Ba9THQKz.js +0 -64
  250. package/dist/styles/think-resize-handle.css +0 -33
  251. package/dist/styles/think-thread-shell.css +0 -219
@@ -0,0 +1,25 @@
1
+ import * as React from "react";
2
+ import { UIMessage } from "ai";
3
+ import { AgentToolRunPart, AgentToolRunState } from "agents/agent-tools";
4
+
5
+ //#region src/components/SubagentRunList.d.ts
6
+ interface SubagentRunListProps<Part extends AgentToolRunPart = UIMessage["parts"][number]> extends Omit<React.HTMLAttributes<HTMLUListElement>, "children" | "onSelect"> {
7
+ /** Complete retained runs returned by `useAgentToolEvents()`, in display order. */
8
+ runs: readonly AgentToolRunState<Part>[];
9
+ selectedRunId?: string | null;
10
+ /** Called with the whole upstream run selected for the adjacent detail surface. */
11
+ onSelect?: (run: AgentToolRunState<Part>) => void;
12
+ }
13
+ /** Semantic, wrapping list of retained-run selectors. */
14
+ declare function SubagentRunList<Part extends AgentToolRunPart = UIMessage["parts"][number]>({
15
+ className,
16
+ onSelect,
17
+ runs,
18
+ selectedRunId,
19
+ ref,
20
+ ...props
21
+ }: SubagentRunListProps<Part> & {
22
+ ref?: React.Ref<HTMLUListElement>;
23
+ }): React.JSX.Element;
24
+ //#endregion
25
+ export { SubagentRunList, SubagentRunListProps };
@@ -0,0 +1,26 @@
1
+ import { t as cx } from "../class-names-9UtZwb0J.js";
2
+ import { SubagentRunSelector } from "./SubagentRunSelector.js";
3
+ import "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ //#region src/components/SubagentRunList.tsx
6
+ /** Semantic, wrapping list of retained-run selectors. */
7
+ function SubagentRunList({ className, onSelect, runs, selectedRunId, ref, ...props }) {
8
+ return /* @__PURE__ */ jsx("ul", {
9
+ ref,
10
+ "data-slot": "subagent-run-list",
11
+ className: cx("subagent-run__list", className),
12
+ ...props,
13
+ role: "list",
14
+ children: runs.map((run) => /* @__PURE__ */ jsx("li", {
15
+ className: "subagent-run__list-item",
16
+ children: /* @__PURE__ */ jsx(SubagentRunSelector, {
17
+ run,
18
+ naniteIndex: run.order,
19
+ selected: run.runId === selectedRunId,
20
+ onSelect
21
+ })
22
+ }, run.runId))
23
+ });
24
+ }
25
+ //#endregion
26
+ export { SubagentRunList };
@@ -0,0 +1,47 @@
1
+ import { r as ButtonProps } from "../Button-FX_hpqxm.js";
2
+ import * as React from "react";
3
+ import { UIMessage } from "ai";
4
+ import { AgentToolRunPart, AgentToolRunState } from "agents/agent-tools";
5
+
6
+ //#region src/components/SubagentRunSelector.d.ts
7
+ interface SubagentRunSelectorProps<Part extends AgentToolRunPart = UIMessage["parts"][number]> extends Omit<ButtonProps, "children" | "className" | "color" | "onSelect" | "size" | "variant"> {
8
+ className?: string;
9
+ /** Complete retained-run state returned by `useAgentToolEvents()`. */
10
+ run?: AgentToolRunState<Part>;
11
+ /**
12
+ * @deprecated Pass `run` so the selector derives its content from the whole
13
+ * upstream object. Retained for the pre-0.15 presentation-only API.
14
+ */
15
+ children?: React.ReactNode;
16
+ naniteIndex?: number;
17
+ selected?: boolean;
18
+ /** Short supplementary status shown on hover and keyboard focus. `false` disables it. */
19
+ tooltip?: React.ReactNode | false;
20
+ /** Called with the whole upstream run when the selector is activated. */
21
+ onSelect?: (run: AgentToolRunState<Part>) => void;
22
+ }
23
+ /**
24
+ * Compact selector for a retained Cloudflare Agent Tool run.
25
+ *
26
+ * The component consumes `AgentToolRunState` whole and derives its label and
27
+ * status from upstream fields. Selecting it should route `run.subAgent` into
28
+ * an adjacent detail surface; it never invents a second transcript or expands
29
+ * child content inline.
30
+ */
31
+ declare function SubagentRunSelector<Part extends AgentToolRunPart = UIMessage["parts"][number]>({
32
+ className,
33
+ children,
34
+ naniteIndex,
35
+ onClick,
36
+ onSelect,
37
+ run,
38
+ selected,
39
+ tooltip,
40
+ ref,
41
+ "aria-label": ariaLabel,
42
+ ...props
43
+ }: SubagentRunSelectorProps<Part> & {
44
+ ref?: React.Ref<HTMLButtonElement>;
45
+ }): React.JSX.Element;
46
+ //#endregion
47
+ export { SubagentRunSelector, SubagentRunSelectorProps };
@@ -0,0 +1,55 @@
1
+ import { t as cx } from "../class-names-9UtZwb0J.js";
2
+ import { Button } from "./Button.js";
3
+ import { Tooltip } from "./Tooltip.js";
4
+ import { NaniteMark } from "./NaniteScene.js";
5
+ import { SubagentRunIndicator, getSubagentRunName, getSubagentRunTooltip } from "./SubagentRunIndicator.js";
6
+ import "react";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/components/SubagentRunSelector.tsx
9
+ /**
10
+ * Compact selector for a retained Cloudflare Agent Tool run.
11
+ *
12
+ * The component consumes `AgentToolRunState` whole and derives its label and
13
+ * status from upstream fields. Selecting it should route `run.subAgent` into
14
+ * an adjacent detail surface; it never invents a second transcript or expands
15
+ * child content inline.
16
+ */
17
+ function SubagentRunSelector({ className, children, naniteIndex = 0, onClick, onSelect, run, selected = false, tooltip, ref, "aria-label": ariaLabel, ...props }) {
18
+ const name = run ? getSubagentRunName(run) : void 0;
19
+ const button = /* @__PURE__ */ jsxs(Button, {
20
+ ref,
21
+ type: "button",
22
+ variant: "outline",
23
+ color: "neutral",
24
+ size: "xs",
25
+ "data-slot": "subagent-run-selector",
26
+ "data-status": run?.status,
27
+ className: cx("subagent-run__selector", className),
28
+ "aria-pressed": selected,
29
+ "aria-label": ariaLabel ?? (run ? `Open ${name}, ${run.status}` : void 0),
30
+ onClick: (event) => {
31
+ onClick?.(event);
32
+ if (!event.defaultPrevented && run) onSelect?.(run);
33
+ },
34
+ ...props,
35
+ children: [/* @__PURE__ */ jsx(NaniteMark, { index: naniteIndex }), run ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
36
+ className: "subagent-run__title",
37
+ children: name
38
+ }), /* @__PURE__ */ jsx(SubagentRunIndicator, { run })] }) : /* @__PURE__ */ jsx("span", {
39
+ className: "subagent-run__trigger-content",
40
+ children
41
+ })]
42
+ });
43
+ const tooltipContent = tooltip === false ? null : tooltip ?? (run ? getSubagentRunTooltip(run) : null);
44
+ if (!tooltipContent) return button;
45
+ return /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
46
+ render: button,
47
+ delay: 0
48
+ }), /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
49
+ side: "top",
50
+ sideOffset: 6,
51
+ children: /* @__PURE__ */ jsx(Tooltip.Popup, { children: tooltipContent })
52
+ }) })] });
53
+ }
54
+ //#endregion
55
+ export { SubagentRunSelector };
@@ -1,6 +1,6 @@
1
1
  import { Collapsible } from "./Collapsible.js";
2
2
  import { t as cx } from "../class-names-9UtZwb0J.js";
3
- import { c as ChevronRightIcon, h as FileIcon, j as SearchIcon } from "../icons-Ba9THQKz.js";
3
+ import { R as SearchIcon, l as ChevronRightIcon, v as FileIcon } from "../icons-CpfUer49.js";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region src/components/Task.tsx
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../class-names-9UtZwb0J.js";
2
- import { I as TerminalIcon, z as XIcon } from "../icons-Ba9THQKz.js";
2
+ import { G as TerminalIcon, Y as XIcon } from "../icons-CpfUer49.js";
3
3
  import { Button } from "./Button.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
- import { t as CopyButton } from "../copy-button-DUMLYdsk.js";
5
+ import { t as CopyButton } from "../copy-button-Dejn5heL.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 { Collapsible } from "./Collapsible.js";
2
2
  import { t as cx } from "../class-names-9UtZwb0J.js";
3
- import { N as SpinnerIcon, a as CheckIcon, c as ChevronRightIcon, z as XIcon } from "../icons-Ba9THQKz.js";
3
+ import { B as SpinnerIcon, Y as XIcon, l as ChevronRightIcon, o as CheckIcon } from "../icons-CpfUer49.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";
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/Textarea.d.ts
4
+ interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
5
+ /** Allow the user to resize the control along the block axis. */
6
+ resize?: "none" | "vertical";
7
+ }
8
+ /**
9
+ * Multiline text control that shares the design system's field recipe.
10
+ * Compose it through `Field.Control` when labeling or validation is needed.
11
+ */
12
+ declare function Textarea({
13
+ className,
14
+ ref,
15
+ resize,
16
+ ...props
17
+ }: TextareaProps & {
18
+ ref?: React.Ref<HTMLTextAreaElement>;
19
+ }): React.JSX.Element;
20
+ //#endregion
21
+ export { Textarea, TextareaProps };
@@ -0,0 +1,19 @@
1
+ import { t as cx } from "../class-names-9UtZwb0J.js";
2
+ import "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/Textarea.tsx
5
+ /**
6
+ * Multiline text control that shares the design system's field recipe.
7
+ * Compose it through `Field.Control` when labeling or validation is needed.
8
+ */
9
+ function Textarea({ className, ref, resize = "vertical", ...props }) {
10
+ return /* @__PURE__ */ jsx("textarea", {
11
+ ref,
12
+ "data-slot": "textarea",
13
+ "data-resize": resize,
14
+ className: cx("textarea", className),
15
+ ...props
16
+ });
17
+ }
18
+ //#endregion
19
+ export { Textarea };
@@ -0,0 +1,24 @@
1
+ //#region src/components/ThemeModeControl.d.ts
2
+ interface ThemeModeControlProps {
3
+ /** Show text beside each icon. @default true */
4
+ showLabels?: boolean;
5
+ /** Accessible name for the radio group. @default "Theme" */
6
+ "aria-label"?: string;
7
+ /** Name used by the radio group's hidden form input. @default "theme" */
8
+ name?: string;
9
+ disabled?: boolean;
10
+ className?: string;
11
+ }
12
+ /**
13
+ * A compact, mutually exclusive Light/Dark/System control modeled after the
14
+ * Codex Appearance settings. Arrow keys move and select within the group.
15
+ */
16
+ declare function ThemeModeControl({
17
+ showLabels,
18
+ "aria-label": ariaLabel,
19
+ name,
20
+ disabled,
21
+ className
22
+ }: ThemeModeControlProps): import("react").JSX.Element;
23
+ //#endregion
24
+ export { ThemeModeControl, ThemeModeControlProps };
@@ -0,0 +1,52 @@
1
+ import { A as MoonIcon, W as SunIcon, k as MonitorIcon } from "../icons-CpfUer49.js";
2
+ import { Radio, RadioGroup } from "./RadioGroup.js";
3
+ import { useTheme } from "./ThemeProvider.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/ThemeModeControl.tsx
6
+ const modes = [
7
+ {
8
+ value: "light",
9
+ label: "Light",
10
+ Icon: SunIcon
11
+ },
12
+ {
13
+ value: "dark",
14
+ label: "Dark",
15
+ Icon: MoonIcon
16
+ },
17
+ {
18
+ value: "system",
19
+ label: "System",
20
+ Icon: MonitorIcon
21
+ }
22
+ ];
23
+ /**
24
+ * A compact, mutually exclusive Light/Dark/System control modeled after the
25
+ * Codex Appearance settings. Arrow keys move and select within the group.
26
+ */
27
+ function ThemeModeControl({ showLabels = true, "aria-label": ariaLabel = "Theme", name = "theme", disabled = false, className = "" }) {
28
+ const { preference, setPreference } = useTheme();
29
+ const classes = [
30
+ "theme-mode-control",
31
+ !showLabels && "theme-mode-control--icons-only",
32
+ className
33
+ ].filter(Boolean).join(" ");
34
+ return /* @__PURE__ */ jsx(RadioGroup.Root, {
35
+ value: preference,
36
+ onValueChange: (nextValue) => setPreference(nextValue),
37
+ name,
38
+ disabled,
39
+ orientation: "horizontal",
40
+ "aria-label": ariaLabel,
41
+ className: classes,
42
+ "data-slot": "theme-mode-control",
43
+ children: modes.map(({ value, label, Icon }) => /* @__PURE__ */ jsxs(Radio.Root, {
44
+ value,
45
+ "aria-label": showLabels ? void 0 : `Use ${label.toLowerCase()} theme`,
46
+ className: "theme-mode-control__item",
47
+ children: [/* @__PURE__ */ jsx(Icon, {}), showLabels ? /* @__PURE__ */ jsx("span", { children: label }) : null]
48
+ }, value))
49
+ });
50
+ }
51
+ //#endregion
52
+ export { ThemeModeControl };
@@ -0,0 +1,38 @@
1
+ import { ResolvedTheme, ThemePreference } from "../utils/theme.js";
2
+ import * as React from "react";
3
+
4
+ //#region src/components/ThemeProvider.d.ts
5
+ interface ThemeProviderProps {
6
+ children: React.ReactNode;
7
+ /** Controlled theme preference. */
8
+ value?: ThemePreference;
9
+ /** Initial uncontrolled preference when no stored preference exists. @default "system" */
10
+ defaultValue?: ThemePreference;
11
+ /** Called when a descendant requests a preference change. */
12
+ onValueChange?: (preference: ThemePreference) => void;
13
+ /** localStorage key. Pass `null` when the application owns persistence. */
14
+ storageKey?: string | null;
15
+ }
16
+ interface ThemeContextValue {
17
+ preference: ThemePreference;
18
+ resolvedTheme: ResolvedTheme;
19
+ setPreference: (preference: ThemePreference) => void;
20
+ }
21
+ /**
22
+ * Owns the application-wide theme preference and keeps document metadata,
23
+ * storage, cross-tab changes, and operating-system changes synchronized.
24
+ *
25
+ * Add `<meta name="color-scheme" content="light dark">` before styles and use
26
+ * `getThemeInitializationScript()` in the document head to avoid a flash when
27
+ * a saved override differs from the operating-system preference.
28
+ */
29
+ declare function ThemeProvider({
30
+ children,
31
+ value,
32
+ defaultValue,
33
+ onValueChange,
34
+ storageKey
35
+ }: ThemeProviderProps): React.JSX.Element;
36
+ declare function useTheme(): ThemeContextValue;
37
+ //#endregion
38
+ export { ThemeContextValue, ThemeProvider, ThemeProviderProps, useTheme };
@@ -0,0 +1,80 @@
1
+ import { THEME_STORAGE_KEY, applyThemePreference, readThemePreference, resolveThemePreference, writeThemePreference } from "../utils/theme.js";
2
+ import * as React from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/ThemeProvider.tsx
5
+ const ThemeContext = React.createContext(null);
6
+ const useClientLayoutEffect = typeof document === "undefined" ? React.useEffect : React.useLayoutEffect;
7
+ /**
8
+ * Owns the application-wide theme preference and keeps document metadata,
9
+ * storage, cross-tab changes, and operating-system changes synchronized.
10
+ *
11
+ * Add `<meta name="color-scheme" content="light dark">` before styles and use
12
+ * `getThemeInitializationScript()` in the document head to avoid a flash when
13
+ * a saved override differs from the operating-system preference.
14
+ */
15
+ function ThemeProvider({ children, value, defaultValue = "system", onValueChange, storageKey = THEME_STORAGE_KEY }) {
16
+ const controlled = value !== void 0;
17
+ const [uncontrolledPreference, setUncontrolledPreference] = React.useState(defaultValue);
18
+ const preference = value ?? uncontrolledPreference;
19
+ const [resolvedTheme, setResolvedTheme] = React.useState(() => typeof window === "undefined" ? "light" : resolveThemePreference(preference));
20
+ const initialized = React.useRef(false);
21
+ useClientLayoutEffect(() => {
22
+ let initialPreference = preference;
23
+ if (!controlled && storageKey !== null) {
24
+ const storedPreference = readThemePreference(storageKey);
25
+ if (storedPreference !== "system" || defaultValue === "system") {
26
+ initialPreference = storedPreference;
27
+ setUncontrolledPreference(storedPreference);
28
+ }
29
+ }
30
+ setResolvedTheme(applyThemePreference(initialPreference));
31
+ initialized.current = true;
32
+ }, []);
33
+ React.useEffect(() => {
34
+ if (!initialized.current) return;
35
+ setResolvedTheme(applyThemePreference(preference));
36
+ if (storageKey !== null) writeThemePreference(preference, storageKey);
37
+ }, [preference, storageKey]);
38
+ React.useEffect(() => {
39
+ if (preference !== "system") return;
40
+ const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
41
+ const handleChange = () => setResolvedTheme(mediaQuery.matches ? "dark" : "light");
42
+ mediaQuery.addEventListener("change", handleChange);
43
+ return () => mediaQuery.removeEventListener("change", handleChange);
44
+ }, [preference]);
45
+ React.useEffect(() => {
46
+ if (controlled || storageKey === null) return;
47
+ const handleStorage = (event) => {
48
+ if (event.key !== storageKey) return;
49
+ const nextPreference = readThemePreference(storageKey);
50
+ setUncontrolledPreference(nextPreference);
51
+ };
52
+ window.addEventListener("storage", handleStorage);
53
+ return () => window.removeEventListener("storage", handleStorage);
54
+ }, [controlled, storageKey]);
55
+ const setPreference = React.useCallback((nextPreference) => {
56
+ applyThemePreference(nextPreference);
57
+ if (!controlled) setUncontrolledPreference(nextPreference);
58
+ onValueChange?.(nextPreference);
59
+ }, [controlled, onValueChange]);
60
+ const contextValue = React.useMemo(() => ({
61
+ preference,
62
+ resolvedTheme,
63
+ setPreference
64
+ }), [
65
+ preference,
66
+ resolvedTheme,
67
+ setPreference
68
+ ]);
69
+ return /* @__PURE__ */ jsx(ThemeContext.Provider, {
70
+ value: contextValue,
71
+ children
72
+ });
73
+ }
74
+ function useTheme() {
75
+ const context = React.useContext(ThemeContext);
76
+ if (!context) throw new Error("useTheme must be used within a ThemeProvider");
77
+ return context;
78
+ }
79
+ //#endregion
80
+ export { ThemeProvider, useTheme };
@@ -1,10 +1,13 @@
1
- import { a as AgentChatRenderPartContext, r as AgentChatProps } from "../AgentChat-DQkqt82e.js";
1
+ import { i as AgentChatProps, o as AgentChatRenderPartContext } from "../AgentChat-CrlpbvQJ.js";
2
2
  import { n as BrowserLiveViewProps, t as BrowserLiveView } from "../BrowserLiveView-BV5qgFgI.js";
3
3
  import { n as BrowserReplayProps, t as BrowserReplay } from "../BrowserReplay-xWvRjRAC.js";
4
- import { x as isThinkChatActivityPart } from "../ThinkChatToolParts-CDEjqS6A.js";
5
- import { a as ThinkChatToolRenderers, c as renderThinkChatActivityPart, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as describeThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-BmwuIigx.js";
4
+ import { S as isThinkChatActivityPart } from "../ThinkChatToolParts-CSzVwMXf.js";
5
+ import { l as describeThinkChatActivityPart } from "../ThinkChatActivitySummary-BPmu9a-c.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-BFQnb2ct.js";
6
7
  import { n as ThinkChatValue } from "../ThinkChatContext-C3Eb1Xpi.js";
7
- import { FileInfo, UseWorkspaceOptions, WorkspaceExplorer, WorkspaceExplorerProps, WorkspaceFileState, WorkspaceInfo, WorkspaceSource, WorkspaceState, inferWorkspaceLanguage, useWorkspace } from "./WorkspaceExplorer.js";
8
+ import { d as inferWorkspaceLanguage, i as WorkspaceFileState } from "../WorkspaceFile-DOZkPwzu.js";
9
+ import { a as useWorkspace, i as WorkspaceState, n as WorkspaceInfo, r as WorkspaceSource, t as UseWorkspaceOptions } from "../Workspace-D39LxGvP.js";
10
+ import { WorkspaceExplorer, WorkspaceExplorerProps } from "./WorkspaceExplorer.js";
8
11
  import * as React from "react";
9
12
  import { UIMessage } from "ai";
10
13
  import { UseAgentOptions } from "agents/react";
@@ -35,6 +38,20 @@ interface ThinkChatMessagesProps<MessageT extends UIMessage = UIMessage> extends
35
38
  emptyState?: React.ReactNode;
36
39
  /** Extra controls rendered inside the composer, next to the send button. */
37
40
  composerTools?: React.ReactNode;
41
+ /** Keep submitting composed follow-ups through `chat.sendMessage()` while busy. */
42
+ allowSubmitWhileBusy?: AgentChatProps<MessageT>["allowSubmitWhileBusy"];
43
+ /** Authoritative queued messages rendered outside the transcript. */
44
+ queuedMessages?: AgentChatProps<MessageT>["queuedMessages"];
45
+ onSteerQueuedMessage?: AgentChatProps<MessageT>["onSteerQueuedMessage"];
46
+ onRemoveQueuedMessage?: AgentChatProps<MessageT>["onRemoveQueuedMessage"];
47
+ /** Host-owned slash-command catalog and selection policy. */
48
+ slashCommands?: AgentChatProps<MessageT>["slashCommands"];
49
+ /** Controlled MCP catalog revealed by `@`; selections become composer references. */
50
+ mentionCommands?: AgentChatProps<MessageT>["mentionCommands"];
51
+ /** Controlled folder or working-context picker in the composer footer. */
52
+ contextSelector?: AgentChatProps<MessageT>["contextSelector"];
53
+ /** Extra controls rendered at the trailing edge, before dictation and submit. */
54
+ composerEndTools?: React.ReactNode;
38
55
  /** Whole upstream `useVoiceInput` result for the built-in microphone recorder. */
39
56
  voiceInput?: UseVoiceInputReturn;
40
57
  /** Host prerequisite run before the built-in recorder calls `voiceInput.start()`. */
@@ -57,10 +74,16 @@ interface ThinkChatMessagesProps<MessageT extends UIMessage = UIMessage> extends
57
74
  * `isRecovering`/`connectionError`) shown between transcript and composer.
58
75
  */
59
76
  notice?: AgentChatProps<MessageT>["notice"];
60
- /** Full replacement for part rendering; wins over excludeTools/toolRenderers. */
77
+ /**
78
+ * Extends the built-in Think activity renderer. Returning `undefined` keeps
79
+ * the built-in result; `defaultRender()` renders that same result on demand.
80
+ * Return `null` only when the part should be intentionally hidden.
81
+ */
61
82
  renderPart?: AgentChatProps<MessageT>["renderPart"];
62
83
  /** Whole upstream Think stub. `ThinkChat.Root` wires `agent.stub` automatically. */
63
84
  thinkStub?: AgentStub<Think>;
85
+ /** Parent-owned Ask/Bypass policy; omit to keep AgentChat's session-local mode. */
86
+ permissionModeControl?: AgentChatProps<MessageT>["permissionModeControl"];
64
87
  /** Called after a Think approve/reject RPC settles. Root uses this to refresh approvals. */
65
88
  onExecutionSettled?: AgentChatProps<MessageT>["onExecutionSettled"];
66
89
  /** Think durable-pause approvals from `pendingApprovals()`. */
@@ -161,4 +184,4 @@ declare const ThinkChat: {
161
184
  createActivityRenderer: typeof createThinkChatActivityRenderer;
162
185
  };
163
186
  //#endregion
164
- export { BrowserLiveView, type BrowserLiveViewProps, BrowserReplay, type BrowserReplayProps, type FileInfo, ThinkChat, ThinkChatActivity, type ThinkChatActivityProps, type ThinkChatActivityRendererOptions, ThinkChatMessages, ThinkChatMessagesProps, ThinkChatProvider, ThinkChatProviderProps, ThinkChatRoot, ThinkChatRootProps, type ThinkChatToolRenderer, type ThinkChatToolRenderers, type UseWorkspaceOptions, WorkspaceExplorer, type WorkspaceExplorerProps, type WorkspaceFileState, type WorkspaceInfo, type WorkspaceSource, type WorkspaceState, createThinkChatActivityRenderer, describeThinkChatActivityPart, inferWorkspaceLanguage, isThinkChatActivityPart, renderThinkChatActivityPart, useThinkChat, useThinkPendingApprovals, useWorkspace };
187
+ export { BrowserLiveView, type BrowserLiveViewProps, BrowserReplay, type BrowserReplayProps, ThinkChat, ThinkChatActivity, type ThinkChatActivityProps, type ThinkChatActivityRendererOptions, ThinkChatMessages, ThinkChatMessagesProps, ThinkChatProvider, ThinkChatProviderProps, ThinkChatRoot, ThinkChatRootProps, type ThinkChatToolRenderer, type ThinkChatToolRenderers, type UseWorkspaceOptions, WorkspaceExplorer, type WorkspaceExplorerProps, type WorkspaceFileState, type WorkspaceInfo, type WorkspaceSource, type WorkspaceState, createThinkChatActivityRenderer, describeThinkChatActivityPart, inferWorkspaceLanguage, isThinkChatActivityPart, renderThinkChatActivityPart, useThinkChat, useThinkPendingApprovals, useWorkspace };
@@ -1,7 +1,10 @@
1
+ import { isThinkChatActivityPart } from "./ThinkChatToolParts.js";
1
2
  import { BrowserLiveView } from "./BrowserLiveView.js";
2
3
  import { BrowserReplay } from "./BrowserReplay.js";
3
- import { isThinkChatActivityPart } from "./ThinkChatToolParts.js";
4
- import { ThinkChatActivity, createThinkChatActivityRenderer, describeThinkChatActivityPart, renderThinkChatActivityPart } from "./ThinkChatActivity.js";
5
- import { a as useThinkChat, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkPendingApprovals, r as ThinkChatProvider, t as ThinkChat } from "../ThinkChat-BPcehdbP.js";
6
- import { WorkspaceExplorer, inferWorkspaceLanguage, useWorkspace } from "./WorkspaceExplorer.js";
4
+ import { describeThinkChatActivityPart } from "./ThinkChatActivitySummary.js";
5
+ import { ThinkChatActivity, createThinkChatActivityRenderer, renderThinkChatActivityPart } from "./ThinkChatActivity.js";
6
+ import { a as useThinkChat, i as ThinkChatRoot, n as ThinkChatMessages, o as useThinkPendingApprovals, r as ThinkChatProvider, t as ThinkChat } from "../ThinkChat-CzC-zNGA.js";
7
+ import { inferWorkspaceLanguage } from "./WorkspaceFile.js";
8
+ import { useWorkspace } from "./Workspace.js";
9
+ import { WorkspaceExplorer } from "./WorkspaceExplorer.js";
7
10
  export { BrowserLiveView, BrowserReplay, ThinkChat, ThinkChatActivity, ThinkChatMessages, ThinkChatProvider, ThinkChatRoot, WorkspaceExplorer, createThinkChatActivityRenderer, describeThinkChatActivityPart, inferWorkspaceLanguage, isThinkChatActivityPart, renderThinkChatActivityPart, useThinkChat, useThinkPendingApprovals, useWorkspace };
@@ -1,3 +1,4 @@
1
- import { x as isThinkChatActivityPart } from "../ThinkChatToolParts-CDEjqS6A.js";
2
- import { a as ThinkChatToolRenderers, c as renderThinkChatActivityPart, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as describeThinkChatActivityPart, t as ThinkChatActivity } from "../ThinkChatActivity-BmwuIigx.js";
1
+ import { S as isThinkChatActivityPart } from "../ThinkChatToolParts-CSzVwMXf.js";
2
+ import { l as describeThinkChatActivityPart } from "../ThinkChatActivitySummary-BPmu9a-c.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-BFQnb2ct.js";
3
4
  export { ThinkChatActivity, ThinkChatActivityProps, ThinkChatActivityRendererOptions, ThinkChatToolRenderer, ThinkChatToolRenderers, createThinkChatActivityRenderer, describeThinkChatActivityPart, isThinkChatActivityPart, renderThinkChatActivityPart };