@mcp-b/react-components 0.51.2 → 0.53.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 (196) hide show
  1. package/dist/{CodeBlock--r6GS8YV.d.ts → CodeBlock-DJ99TQWy.d.ts} +1 -1
  2. package/dist/{CodeBlock-g8sADidM.js → CodeBlock-Dw1z6jc8.js} +2 -1
  3. package/dist/EmployeeChrome-B605rpVz.d.ts +233 -0
  4. package/dist/{FileTree-DruTQ-oa.js → FileTree-okaLnS5j.js} +1 -1
  5. package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
  6. package/dist/{ManagerOffice-D-7SOJ4x.js → ManagerOffice-CJwBAEMv.js} +17 -12
  7. package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
  8. package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
  9. package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
  10. package/dist/{SetupChecklist-Btmy3-_C.js → SetupChecklist-DWyifWWg.js} +6 -5
  11. package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
  12. package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
  13. package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
  14. package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
  15. package/dist/{WorkspaceFileView-DYPtRVpM.js → WorkspaceFileView-DQDWUpAH.js} +3 -2
  16. package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
  17. package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
  18. package/dist/assets/sigvelo-logo.svg +54 -0
  19. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  20. package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
  21. package/dist/components/agents-sdk/AgentChat.js +12 -18
  22. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  23. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  24. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  25. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  26. package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
  27. package/dist/components/agents-sdk/EmployeeApp.js +47 -34
  28. package/dist/components/agents-sdk/EmployeeChat.d.ts +31 -10
  29. package/dist/components/agents-sdk/EmployeeChat.js +35 -7
  30. package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
  31. package/dist/components/agents-sdk/EmployeeChrome.js +219 -162
  32. package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
  33. package/dist/components/agents-sdk/EmployeeSchedules.js +2 -3
  34. package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
  35. package/dist/components/agents-sdk/EmployeeStartScreen.js +22 -15
  36. package/dist/components/agents-sdk/ManagerAccountActions.js +2 -3
  37. package/dist/components/agents-sdk/ManagerOffice.js +1 -2
  38. package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
  39. package/dist/components/agents-sdk/ManagerOfficeScreens.js +33 -13
  40. package/dist/components/agents-sdk/McpConnectionRequest.js +2 -2
  41. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  42. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
  43. package/dist/components/agents-sdk/McpPluginCatalog.js +5 -5
  44. package/dist/components/agents-sdk/McpServerPicker.js +5 -5
  45. package/dist/components/agents-sdk/ModelSelector.js +4 -4
  46. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  47. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  48. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  49. package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
  50. package/dist/components/agents-sdk/SubagentRunPanel.js +67 -47
  51. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  52. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  53. package/dist/components/agents-sdk/ThinkChatActivity.js +2 -2
  54. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  55. package/dist/components/agents-sdk/ThinkExecutionDetail.js +2 -2
  56. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  57. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +7 -14
  58. package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
  59. package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
  60. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  61. package/dist/components/agents-sdk/ThinkRoutineActions.js +1 -1
  62. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +2 -2
  63. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineForm.js +3 -3
  65. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  66. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
  67. package/dist/components/agents-sdk/ThinkThreadPicker.js +32 -19
  68. package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
  69. package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
  70. package/dist/components/agents-sdk/Workspace.d.ts +1 -1
  71. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  72. package/dist/components/agents-sdk/WorkspaceBrowser.js +3 -1
  73. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
  74. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +6 -6
  75. package/dist/components/agents-sdk/WorkspaceExecution.js +13 -10
  76. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
  77. package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
  78. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  79. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  80. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  81. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  82. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
  83. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  84. package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
  85. package/dist/components/agents-sdk/WorkspaceMountManager.js +2 -2
  86. package/dist/components/agents-sdk/WorkspaceProject.js +7 -5
  87. package/dist/components/agents-sdk/WorkspaceUserScript.js +7 -5
  88. package/dist/components/ai-sdk/Activity.js +1 -1
  89. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  90. package/dist/components/ai-sdk/Approval.js +2 -2
  91. package/dist/components/ai-sdk/Artifact.d.ts +1 -1
  92. package/dist/components/ai-sdk/Artifact.js +1 -1
  93. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  94. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  95. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  96. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  97. package/dist/components/ai-sdk/ComposerLink.js +1 -1
  98. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  99. package/dist/components/ai-sdk/Context.js +1 -1
  100. package/dist/components/ai-sdk/Conversation.d.ts +1 -1
  101. package/dist/components/ai-sdk/Conversation.js +1 -1
  102. package/dist/components/ai-sdk/Goal.js +1 -1
  103. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  104. package/dist/components/ai-sdk/Message.d.ts +1 -1
  105. package/dist/components/ai-sdk/Message.js +2 -2
  106. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  107. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  108. package/dist/components/ai-sdk/Plan.js +1 -1
  109. package/dist/components/ai-sdk/PromptInput.js +46 -43
  110. package/dist/components/ai-sdk/Queue.js +1 -1
  111. package/dist/components/ai-sdk/Reasoning.js +1 -1
  112. package/dist/components/ai-sdk/Sources.js +1 -1
  113. package/dist/components/ai-sdk/Task.js +1 -1
  114. package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
  115. package/dist/components/extension/ChatGptSignInScreen.js +61 -186
  116. package/dist/components/extension/CodexModelSelector.js +4 -8
  117. package/dist/components/extension/ConversationTabPicker.js +2 -2
  118. package/dist/components/foundations/Checkbox.js +1 -1
  119. package/dist/components/foundations/Collapsible.js +1 -1
  120. package/dist/components/foundations/ContextMenu.js +1 -1
  121. package/dist/components/foundations/IconButton.d.ts +1 -1
  122. package/dist/components/foundations/IconButton.js +7 -4
  123. package/dist/components/foundations/Menubar.js +1 -1
  124. package/dist/components/foundations/SearchField.js +1 -1
  125. package/dist/components/foundations/Select.js +1 -1
  126. package/dist/components/foundations/Stepper.js +1 -1
  127. package/dist/components/foundations/Toast.js +1 -1
  128. package/dist/components/foundations/icons.js +1 -1
  129. package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
  130. package/dist/components/general-purpose/AccountSignInDialog.js +13 -5
  131. package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
  132. package/dist/components/general-purpose/BrandLoading.js +25 -0
  133. package/dist/components/general-purpose/Commit.d.ts +1 -1
  134. package/dist/components/general-purpose/Commit.js +2 -2
  135. package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
  136. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  137. package/dist/components/general-purpose/FileTree.js +1 -1
  138. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  139. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  140. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  141. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  142. package/dist/components/general-purpose/ResponsiveSidebarShell.js +59 -27
  143. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  144. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  145. package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
  146. package/dist/components/general-purpose/StatusScreen.js +27 -3
  147. package/dist/components/general-purpose/Terminal.d.ts +2 -2
  148. package/dist/components/general-purpose/Terminal.js +2 -2
  149. package/dist/components/general-purpose/TestResults.js +1 -1
  150. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  151. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  152. package/dist/components/general-purpose/WebPreview.js +2 -2
  153. package/dist/components/nanites/AgentConnection.js +2 -2
  154. package/dist/components/nanites/AgentToolDetail.js +2 -2
  155. package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
  156. package/dist/{copy-button-CSDuDfdP.js → copy-button-Dk2vRe9j.js} +1 -1
  157. package/dist/styles/activity.css +2 -2
  158. package/dist/styles/agent-chat.css +6 -105
  159. package/dist/styles/app-root.css +9 -0
  160. package/dist/styles/app-top-bar.css +10 -4
  161. package/dist/styles/avatar.css +2 -2
  162. package/dist/styles/base.css +6 -2
  163. package/dist/styles/brand-loading.css +58 -0
  164. package/dist/styles/brand.test.ts +158 -0
  165. package/dist/styles/browser-control-overlay.css +22 -0
  166. package/dist/styles/button.css +22 -1
  167. package/dist/styles/chatgpt-sign-in-screen.css +111 -225
  168. package/dist/styles/code-block.css +5 -0
  169. package/dist/styles/codex-model-selector.css +2 -12
  170. package/dist/styles/description-list.css +9 -2
  171. package/dist/styles/employee-app.css +19 -1
  172. package/dist/styles/employee-chrome.css +39 -5
  173. package/dist/styles/file-tree.css +15 -2
  174. package/dist/styles/index.css +1 -0
  175. package/dist/styles/manager-office.css +80 -55
  176. package/dist/styles/manager-work.css +5 -11
  177. package/dist/styles/mcp-plugin-catalog.css +29 -34
  178. package/dist/styles/mcp-server-picker.css +13 -5
  179. package/dist/styles/prompt-input.css +3 -13
  180. package/dist/styles/queue.css +1 -1
  181. package/dist/styles/recipes.css +9 -2
  182. package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
  183. package/dist/styles/responsive-sidebar-shell.css +70 -25
  184. package/dist/styles/search-field.css +8 -6
  185. package/dist/styles/subagent-run.css +81 -0
  186. package/dist/styles/switch.css +7 -0
  187. package/dist/styles/think-execution-workbench.css +0 -17
  188. package/dist/styles/think-full-app.css +11 -4
  189. package/dist/styles/think-thread-picker.css +16 -38
  190. package/dist/styles/workspace-concepts.css +29 -2
  191. package/dist/styles/workspace-explorer.css +6 -48
  192. package/dist/utils/structured-code.d.ts +1 -1
  193. package/dist/{workspace-assets-Bg7XhPsk.js → workspace-assets-C3QT6UlQ.js} +1 -1
  194. package/package.json +2 -2
  195. package/dist/styles/extension-status.css +0 -46
  196. package/dist/{icons-cuEtsgj9.js → icons-CeGfXO21.js} +1 -1
@@ -1,12 +1,12 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { H as RefreshIcon, et as WarningIcon, y as EllipsisIcon } from "../../icons-cuEtsgj9.js";
2
+ import { H as RefreshIcon, et as WarningIcon, y as EllipsisIcon } from "../../icons-CeGfXO21.js";
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
+ import { Menu } from "../foundations/Menu.js";
4
5
  import { IconButton } from "../foundations/IconButton.js";
5
6
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
- import { Menu } from "../foundations/Menu.js";
7
+ import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
7
8
  import { EmptyState } from "../foundations/EmptyState.js";
8
9
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
9
- import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
10
10
  import { getThinkExecutionRunAccessibleName, getThinkExecutionRunId, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
11
11
  import { ThinkExecutionRunSummary } from "./ThinkExecutionStatus.js";
12
12
  import * as React from "react";
@@ -240,25 +240,18 @@ function ThinkExecutionWorkbenchRunActions({ run }) {
240
240
  }
241
241
  function ThinkExecutionWorkbenchList({ children, className, ...props }) {
242
242
  const { runs } = useWorkbench();
243
- const runsId = React.useId();
244
- return /* @__PURE__ */ jsxs("section", {
245
- "aria-labelledby": runsId,
243
+ return /* @__PURE__ */ jsx("section", {
244
+ "aria-label": "Runs",
246
245
  ...props,
247
246
  className: cx("think-execution-workbench__run-list", className),
248
- children: [/* @__PURE__ */ jsx("div", {
249
- className: "think-execution-workbench__list-header",
250
- children: /* @__PURE__ */ jsx("h3", {
251
- id: runsId,
252
- children: "Runs"
253
- })
254
- }), runs.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
247
+ children: runs.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
255
248
  className: "think-execution-workbench__empty",
256
249
  description: "No runs yet."
257
250
  }) : /* @__PURE__ */ jsx("ul", {
258
251
  className: "think-execution-workbench__list",
259
252
  role: "list",
260
253
  children: runs.map((run) => /* @__PURE__ */ jsx("li", { children: children(run) }, `${isThinkSubmissionRun(run) ? "submission" : "workflow"}:${getThinkExecutionRunId(run)}`))
261
- })]
254
+ })
262
255
  });
263
256
  }
264
257
  function ThinkExecutionWorkbenchRunLink({ run, className, ...props }) {
@@ -11,6 +11,8 @@ interface ThinkFullAppRootProps extends React.ComponentPropsWithRef<"div"> {
11
11
  * Conversation/workbench layout, independent of routing and SDK connections.
12
12
  * Compose navigation outside the root. The conversation remains mounted while
13
13
  * compact layouts show the workbench; ResizableSidePanel owns desktop resizing.
14
+ * Compact layout follows the width available to this content, including any
15
+ * space occupied by a surrounding sidebar.
14
16
  */
15
17
  declare function ThinkFullAppRoot({
16
18
  workbenchOpen,
@@ -15,6 +15,8 @@ function useWorkbenchOpen() {
15
15
  * Conversation/workbench layout, independent of routing and SDK connections.
16
16
  * Compose navigation outside the root. The conversation remains mounted while
17
17
  * compact layouts show the workbench; ResizableSidePanel owns desktop resizing.
18
+ * Compact layout follows the width available to this content, including any
19
+ * space occupied by a surrounding sidebar.
18
20
  */
19
21
  function ThinkFullAppRoot({ workbenchOpen, children, className, ...props }) {
20
22
  return /* @__PURE__ */ jsx(WorkbenchOpenContext.Provider, {
@@ -1,5 +1,5 @@
1
- import { TransitionSurface } from "../foundations/TransitionSurface.js";
2
1
  import { AgentChatTurnError } from "../ai-sdk/AgentChatTurnError.js";
2
+ import { TransitionSurface } from "../foundations/TransitionSurface.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/agents-sdk/ThinkRecoveryNotice.tsx
5
5
  function connectionReason(error) {
@@ -1,4 +1,4 @@
1
- import { K as SpinnerIcon, Q as TrashIcon, z as PlayIcon } from "../../icons-cuEtsgj9.js";
1
+ import { K as SpinnerIcon, Q as TrashIcon, z as PlayIcon } from "../../icons-CeGfXO21.js";
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
4
4
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
@@ -1,10 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { B as PlusIcon } from "../../icons-cuEtsgj9.js";
2
+ import { B as PlusIcon } from "../../icons-CeGfXO21.js";
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
5
  import { t as capitalize } from "../../format-COCyV98Z.js";
6
- import { EmptyState } from "../foundations/EmptyState.js";
7
6
  import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
7
+ import { EmptyState } from "../foundations/EmptyState.js";
8
8
  import { SearchField } from "../foundations/SearchField.js";
9
9
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
10
10
  import { getThinkRoutineNextRun } from "./ThinkRoutine.js";
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { Switch } from "../foundations/Switch.js";
3
2
  import { getThinkRoutineNextRun } from "./ThinkRoutine.js";
3
+ import { Switch } from "../foundations/Switch.js";
4
4
  import { ThinkRoutineRuns } from "./ThinkRoutineRuns.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,12 +1,12 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
+ import { K as SpinnerIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
5
4
  import { Field } from "../foundations/Field.js";
6
5
  import { Form } from "../foundations/Form.js";
7
6
  import { Textarea } from "../foundations/Textarea.js";
8
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
9
8
  import { Select } from "../foundations/Select.js";
9
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
10
10
  import { Fieldset } from "../foundations/Fieldset.js";
11
11
  import { Checkbox } from "../foundations/Checkbox.js";
12
12
  import { CheckboxGroup } from "../foundations/CheckboxGroup.js";
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { buttonVariants } from "../foundations/Button.js";
3
- import { EmptyState } from "../foundations/EmptyState.js";
4
3
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
4
+ import { EmptyState } from "../foundations/EmptyState.js";
5
5
  import { getThinkExecutionRunAccessibleName, getThinkExecutionRunId, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
6
6
  import { ThinkExecutionRunSummary } from "./ThinkExecutionStatus.js";
7
7
  import * as React from "react";
@@ -1,2 +1,2 @@
1
- import { a as ThinkThreadStatusIndicatorsProps, i as ThinkThreadStatusIndicators, n as ThinkThreadPicker, o as ThinkThreadStatusSummary, r as ThinkThreadPickerProps, s as summarizeThinkThreads, t as ThinkThreadItem } from "../../ThinkThreadPicker-yetGX_s5.js";
1
+ import { a as ThinkThreadStatusIndicatorsProps, i as ThinkThreadStatusIndicators, n as ThinkThreadPicker, o as ThinkThreadStatusSummary, r as ThinkThreadPickerProps, s as summarizeThinkThreads, t as ThinkThreadItem } from "../../ThinkThreadPicker-DX0lL-P7.js";
2
2
  export { ThinkThreadItem, ThinkThreadPicker, ThinkThreadPickerProps, ThinkThreadStatusIndicators, ThinkThreadStatusIndicatorsProps, ThinkThreadStatusSummary, summarizeThinkThreads };
@@ -1,11 +1,12 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { B as PlusIcon, K as SpinnerIcon, _ as DotIcon, et as WarningIcon, t as ArchiveIcon } from "../../icons-cuEtsgj9.js";
2
+ import { K as SpinnerIcon, R as PencilIcon, _ as DotIcon, et as WarningIcon, t as ArchiveIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button, buttonVariants } from "../foundations/Button.js";
4
+ import { Tooltip } from "../foundations/Tooltip.js";
4
5
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
+ import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
5
7
  import { ScrollArea } from "../foundations/ScrollArea.js";
6
8
  import { EmptyState } from "../foundations/EmptyState.js";
7
9
  import { AlertDialog } from "../foundations/AlertDialog.js";
8
- import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
9
10
  import { LinkButton } from "../foundations/LinkButton.js";
10
11
  import { SearchField } from "../foundations/SearchField.js";
11
12
  import * as React from "react";
@@ -109,7 +110,7 @@ function ThinkThreadStatusIndicators({ summary, className }) {
109
110
  * notes beside the parent Think agent because
110
111
  * `listThreads()`/`createThread()`/`deleteThread()` are app-owned.
111
112
  */
112
- function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSelect, onDelete, className, title = "Recents", "aria-label": ariaLabel = "Threads", ref, ...props }) {
113
+ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSelect, onDelete, className, title = "Recents", headerActions, "aria-label": ariaLabel = "Threads", ref, ...props }) {
113
114
  const statusSummary = summarizeThinkThreads(threads);
114
115
  const [query, setQuery] = React.useState("");
115
116
  const [deleteOpen, setDeleteOpen] = React.useState(false);
@@ -161,10 +162,34 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
161
162
  children: [
162
163
  /* @__PURE__ */ jsxs("header", {
163
164
  className: "think-thread-picker__header",
164
- children: [/* @__PURE__ */ jsx("h2", {
165
- className: "think-thread-picker__title sigvelo-truncate",
166
- children: title
167
- }), /* @__PURE__ */ jsx(ThinkThreadStatusIndicators, { summary: statusSummary })]
165
+ children: [
166
+ /* @__PURE__ */ jsx("h2", {
167
+ className: "think-thread-picker__title sigvelo-truncate",
168
+ children: title
169
+ }),
170
+ /* @__PURE__ */ jsx(ThinkThreadStatusIndicators, {
171
+ summary: statusSummary,
172
+ className: "sigvelo-visually-hidden"
173
+ }),
174
+ createThreadLink ? /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
175
+ render: /* @__PURE__ */ jsx(LinkButton, {
176
+ ref: createButtonRef,
177
+ variant: "ghost",
178
+ color: "neutral",
179
+ size: "sm",
180
+ className: "think-thread-picker__create",
181
+ "aria-label": "New thread",
182
+ "data-icon-only": "",
183
+ render: createThreadLink
184
+ }),
185
+ children: /* @__PURE__ */ jsx(PencilIcon, {})
186
+ }), /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
187
+ side: "top",
188
+ sideOffset: 6,
189
+ children: /* @__PURE__ */ jsx(Tooltip.Popup, { children: "New thread" })
190
+ }) })] }) : null,
191
+ headerActions
192
+ ]
168
193
  }),
169
194
  /* @__PURE__ */ jsxs(SearchField.Root, {
170
195
  className: "think-thread-picker__search",
@@ -259,18 +284,6 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
259
284
  })]
260
285
  })
261
286
  }),
262
- createThreadLink ? /* @__PURE__ */ jsx("div", {
263
- className: "think-thread-picker__footer",
264
- children: /* @__PURE__ */ jsxs(LinkButton, {
265
- ref: createButtonRef,
266
- variant: "normal",
267
- color: "neutral",
268
- size: "sm",
269
- className: "think-thread-picker__create",
270
- render: createThreadLink,
271
- children: [/* @__PURE__ */ jsx(PlusIcon, {}), /* @__PURE__ */ jsx("span", { children: "New thread" })]
272
- })
273
- }) : null,
274
287
  onDelete && deleteCandidate ? /* @__PURE__ */ jsx(AlertDialog.Root, {
275
288
  open: deleteOpen,
276
289
  onOpenChange: (open, eventDetails) => {
@@ -0,0 +1,18 @@
1
+ import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
2
+ import { ReactElement } from "react";
3
+
4
+ //#region src/components/agents-sdk/WorkbenchBack.d.ts
5
+ /** Back follows the visible hierarchy, never unrelated browser history. */
6
+ declare function WorkbenchBack({
7
+ navigation,
8
+ filesOpen,
9
+ onBackToChat,
10
+ backToChatLink
11
+ }: {
12
+ navigation?: WorkspaceNavigationAdapter;
13
+ filesOpen: boolean;
14
+ onBackToChat?: () => void;
15
+ backToChatLink?: ReactElement;
16
+ }): import("react").JSX.Element;
17
+ //#endregion
18
+ export { WorkbenchBack };
@@ -0,0 +1,27 @@
1
+ import { r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
2
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/agents-sdk/WorkbenchBack.tsx
5
+ /** Back follows the visible hierarchy, never unrelated browser history. */
6
+ function WorkbenchBack({ navigation, filesOpen, onBackToChat, backToChatLink }) {
7
+ if (filesOpen && navigation?.current.destination.kind === "file") return /* @__PURE__ */ jsx(AppTopBar.Link, {
8
+ "data-workbench-back": "",
9
+ label: "Back to workspace",
10
+ render: navigation.renderLink({ kind: "files" }),
11
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
12
+ });
13
+ if (backToChatLink) return /* @__PURE__ */ jsx(AppTopBar.Link, {
14
+ "data-workbench-back": "",
15
+ label: "Back to chat",
16
+ render: backToChatLink,
17
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
18
+ });
19
+ return /* @__PURE__ */ jsx(AppTopBar.Button, {
20
+ "data-workbench-back": "",
21
+ label: "Back to chat",
22
+ onClick: onBackToChat,
23
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
24
+ });
25
+ }
26
+ //#endregion
27
+ export { WorkbenchBack };
@@ -1,2 +1,2 @@
1
- import { A as workspaceFileQueryKey, C as refreshWorkspaceFileQueries, D as workspaceDirectoryQueryOptions, E as workspaceDirectoryQueryKey, F as workspaceTextFileQueryOptions, M as workspaceInfoQueryKey, N as workspaceInfoQueryOptions, O as workspaceDirectoryQueryPrefix, P as workspaceQueryKey, S as WorkspaceTextFileQueryOptions, T as workspaceBinaryFileQueryOptions, _ as WorkspaceQueryOptions, a as WorkspaceDirectoryQueryOptions, b as WorkspaceState, c as WorkspaceFileQueryKey, d as WorkspaceFileStatQueryOptions, f as WorkspaceFileVersion, g as WorkspaceQueryKey, h as WorkspaceInfoQueryOptions, i as WorkspaceDirectoryQueryKey, j as workspaceFileStatQueryOptions, k as workspaceFileAssetQueryOptions, l as WorkspaceFileReadTarget, m as WorkspaceInfoQueryKey, n as WorkspaceBinaryFileQueryKey, o as WorkspaceFileAssetQueryKey, p as WorkspaceInfo, r as WorkspaceBinaryFileQueryOptions, s as WorkspaceFileAssetQueryOptions, t as UseWorkspaceOptions, u as WorkspaceFileStatQueryKey, v as WorkspaceResolvedAsset, w as useWorkspace, x as WorkspaceTextFileQueryKey, y as WorkspaceSource } from "../../Workspace-HzGrWDX3.js";
1
+ import { A as workspaceFileQueryKey, C as refreshWorkspaceFileQueries, D as workspaceDirectoryQueryOptions, E as workspaceDirectoryQueryKey, F as workspaceTextFileQueryOptions, M as workspaceInfoQueryKey, N as workspaceInfoQueryOptions, O as workspaceDirectoryQueryPrefix, P as workspaceQueryKey, S as WorkspaceTextFileQueryOptions, T as workspaceBinaryFileQueryOptions, _ as WorkspaceQueryOptions, a as WorkspaceDirectoryQueryOptions, b as WorkspaceState, c as WorkspaceFileQueryKey, d as WorkspaceFileStatQueryOptions, f as WorkspaceFileVersion, g as WorkspaceQueryKey, h as WorkspaceInfoQueryOptions, i as WorkspaceDirectoryQueryKey, j as workspaceFileStatQueryOptions, k as workspaceFileAssetQueryOptions, l as WorkspaceFileReadTarget, m as WorkspaceInfoQueryKey, n as WorkspaceBinaryFileQueryKey, o as WorkspaceFileAssetQueryKey, p as WorkspaceInfo, r as WorkspaceBinaryFileQueryOptions, s as WorkspaceFileAssetQueryOptions, t as UseWorkspaceOptions, u as WorkspaceFileStatQueryKey, v as WorkspaceResolvedAsset, w as useWorkspace, x as WorkspaceTextFileQueryKey, y as WorkspaceSource } from "../../Workspace-mzMZSdts.js";
2
2
  export { UseWorkspaceOptions, WorkspaceBinaryFileQueryKey, WorkspaceBinaryFileQueryOptions, WorkspaceDirectoryQueryKey, WorkspaceDirectoryQueryOptions, WorkspaceFileAssetQueryKey, WorkspaceFileAssetQueryOptions, WorkspaceFileQueryKey, WorkspaceFileReadTarget, WorkspaceFileStatQueryKey, WorkspaceFileStatQueryOptions, WorkspaceFileVersion, WorkspaceInfo, WorkspaceInfoQueryKey, WorkspaceInfoQueryOptions, WorkspaceQueryKey, WorkspaceQueryOptions, WorkspaceResolvedAsset, WorkspaceSource, WorkspaceState, WorkspaceTextFileQueryKey, WorkspaceTextFileQueryOptions, refreshWorkspaceFileQueries, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileQueryKey, workspaceFileStatQueryOptions, workspaceInfoQueryKey, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
@@ -1,4 +1,4 @@
1
- import { b as WorkspaceState } from "../../Workspace-HzGrWDX3.js";
1
+ import { b as WorkspaceState } from "../../Workspace-mzMZSdts.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/WorkspaceBrowser.d.ts
@@ -1,5 +1,5 @@
1
1
  import { SearchField } from "../foundations/SearchField.js";
2
- import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../../FileTree-DruTQ-oa.js";
2
+ import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../../FileTree-okaLnS5j.js";
3
3
  import { WorkspaceHeader } from "./WorkspaceHeader.js";
4
4
  import * as React from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -63,6 +63,7 @@ function WorkspaceBrowser({ workspace, title = "Workspace", leading, actions, sh
63
63
  role: "alert",
64
64
  children: error
65
65
  }) : filterQuery ? filteredFiles.length > 0 ? /* @__PURE__ */ jsx(FileTree, {
66
+ appearance: "plain",
66
67
  className: "workspace-explorer__tree",
67
68
  selectedPath,
68
69
  onSelect: handleSelect,
@@ -76,6 +77,7 @@ function WorkspaceBrowser({ workspace, title = "Workspace", leading, actions, sh
76
77
  className: "workspace-explorer__empty",
77
78
  children: "No matching files"
78
79
  }) : rootEntries.length > 0 ? /* @__PURE__ */ jsx(FileTree, {
80
+ appearance: "plain",
79
81
  className: "workspace-explorer__tree",
80
82
  expanded: new Set(expandedPaths),
81
83
  onExpandedChange: setExpandedPaths,
@@ -1,4 +1,4 @@
1
- import { _ as WorkspaceQueryOptions, g as WorkspaceQueryKey } from "../../Workspace-HzGrWDX3.js";
1
+ import { _ as WorkspaceQueryOptions, g as WorkspaceQueryKey } from "../../Workspace-mzMZSdts.js";
2
2
  import { QueryClient, QueryFunction } from "@tanstack/react-query";
3
3
 
4
4
  //#region src/components/agents-sdk/WorkspaceConcept.d.ts
@@ -1,15 +1,15 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { S as FileIcon, d as CheckIcon } from "../../icons-cuEtsgj9.js";
2
+ import { S as FileIcon, d as CheckIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { IconButton } from "../foundations/IconButton.js";
5
- import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
4
  import { Field } from "../foundations/Field.js";
7
5
  import { Textarea } from "../foundations/Textarea.js";
8
- import { Input } from "../foundations/Input.js";
9
- import { DescriptionList } from "../foundations/DescriptionList.js";
6
+ import { IconButton } from "../foundations/IconButton.js";
7
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
10
8
  import { Card, CardAction, CardContent, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
9
+ import { DescriptionList } from "../foundations/DescriptionList.js";
10
+ import { Input } from "../foundations/Input.js";
11
11
  import { EmailMessageCard, SlackMessageCard } from "../ai-sdk/ConnectedAppCards.js";
12
- import { i as WorkspaceDeleteControl, r as httpUrl, t as FaviconMark } from "../../workspace-assets-Bg7XhPsk.js";
12
+ import { i as WorkspaceDeleteControl, r as httpUrl, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
13
13
  import * as React from "react";
14
14
  import { createElement } from "react";
15
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,16 +1,17 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, S as FileIcon, Z as TerminalIcon, d as CheckIcon, z as PlayIcon } from "../../icons-cuEtsgj9.js";
2
+ import { K as SpinnerIcon, S as FileIcon, Z as TerminalIcon, d as CheckIcon, z as PlayIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { IconButton } from "../foundations/IconButton.js";
5
- import { a as formatErrorMessage, o as formatUnknownValue, r as firstLine } from "../../format-COCyV98Z.js";
6
4
  import { Field } from "../foundations/Field.js";
7
5
  import { Form } from "../foundations/Form.js";
8
- import { EmptyState } from "../foundations/EmptyState.js";
9
- import { Input } from "../foundations/Input.js";
10
- import { DescriptionList } from "../foundations/DescriptionList.js";
6
+ import { IconButton } from "../foundations/IconButton.js";
7
+ import { a as formatErrorMessage, o as formatUnknownValue, r as firstLine } from "../../format-COCyV98Z.js";
11
8
  import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
9
+ import { DescriptionList } from "../foundations/DescriptionList.js";
10
+ import { Input } from "../foundations/Input.js";
11
+ import { EmptyState } from "../foundations/EmptyState.js";
12
12
  import { Checkbox } from "../foundations/Checkbox.js";
13
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, r as httpUrl, t as FaviconMark } from "../../workspace-assets-Bg7XhPsk.js";
13
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, r as httpUrl, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
14
+ import { t as WorkspaceConceptPanel } from "../../WorkspaceConceptPanel-97ZyVpZI.js";
14
15
  import * as React from "react";
15
16
  import { createElement } from "react";
16
17
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -102,7 +103,7 @@ function ExecutionFields({ draft, outcome, parameters, runs, onDraftChange }) {
102
103
  const href = parameter.type === "string" ? httpUrl(String(editing ? draft?.[parameter.name] ?? parameter.value : parameter.value)) : void 0;
103
104
  return /* @__PURE__ */ jsxs(DescriptionList.Item, { children: [/* @__PURE__ */ jsxs(DescriptionList.Term, {
104
105
  id: parameter.type === "boolean" ? id : void 0,
105
- children: [href ? /* @__PURE__ */ jsx(FaviconMark, { href }) : null, editing && parameter.type !== "boolean" ? /* @__PURE__ */ jsx("label", {
106
+ children: [href && !editing ? /* @__PURE__ */ jsx(FaviconMark, { href }) : null, editing && parameter.type !== "boolean" ? /* @__PURE__ */ jsx("label", {
106
107
  htmlFor: id,
107
108
  children: parameterLabel
108
109
  }) : parameterLabel]
@@ -263,7 +264,8 @@ function WorkspaceExecutionFile({ fallback = null, path, source, ...props }) {
263
264
  function WorkspaceExecutionsPanel({ className, source, ref, ...props }) {
264
265
  const query = useQuery(source.queryOptions);
265
266
  const modules = query.data ?? [];
266
- return /* @__PURE__ */ jsx("section", {
267
+ return /* @__PURE__ */ jsx(WorkspaceConceptPanel, {
268
+ heading: "Executions",
267
269
  ref,
268
270
  "data-slot": "workspace-executions-panel",
269
271
  className: cx("workspace-concept-panel", className),
@@ -288,7 +290,8 @@ function WorkspaceExecutionsPanel({ className, source, ref, ...props }) {
288
290
  title: "Loading modules"
289
291
  }) : /* @__PURE__ */ jsx(EmptyState, {
290
292
  icon: /* @__PURE__ */ jsx(TerminalIcon, {}),
291
- title: "No modules"
293
+ title: "No modules",
294
+ description: "Ask your assistant to save a reusable workflow to find it here."
292
295
  })
293
296
  }, JSON.stringify(source.queryOptions.queryKey));
294
297
  }
@@ -1,5 +1,6 @@
1
1
  import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
2
- import { b as WorkspaceState } from "../../Workspace-HzGrWDX3.js";
2
+ import { r as WorkspaceMountManagerProps } from "../../WorkspaceMountManager-CkLI1B-G.js";
3
+ import { b as WorkspaceState } from "../../Workspace-mzMZSdts.js";
3
4
  import * as React from "react";
4
5
 
5
6
  //#region src/components/agents-sdk/WorkspaceExplorer.d.ts
@@ -14,6 +15,8 @@ interface WorkspaceExplorerProps extends Omit<React.HTMLAttributes<HTMLDivElemen
14
15
  leading?: React.ReactNode;
15
16
  /** Extra header actions, rendered next to the built-in refresh button. */
16
17
  actions?: React.ReactNode;
18
+ /** Native folder data and callbacks; the shared explorer owns the attach control. */
19
+ mounts?: Omit<WorkspaceMountManagerProps, "trigger">;
17
20
  /** Show the file filter input. Hidden by default to keep the browser compact. */
18
21
  showFilter?: boolean;
19
22
  /** Placeholder for the optional file filter. */
@@ -1,11 +1,14 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
+ import { C as FolderIcon } from "../../icons-CeGfXO21.js";
2
3
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
4
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
+ import { WorkspaceMountManager } from "./WorkspaceMountManager.js";
3
6
  import { n as WorkspaceNavigationProvider, r as resolveWorkspaceLink } from "../../WorkspaceLink-BYZG-V_I.js";
4
7
  import { WorkspaceNavigationRestorationBoundary, useRequiredWorkspaceNavigationRestoration } from "./WorkspaceNavigationRestoration.js";
5
8
  import { WorkspaceBrowser } from "./WorkspaceBrowser.js";
6
- import { t as WorkspaceFileView } from "../../WorkspaceFileView-DYPtRVpM.js";
9
+ import { t as WorkspaceFileView } from "../../WorkspaceFileView-DQDWUpAH.js";
7
10
  import * as React from "react";
8
- import { jsx } from "react/jsx-runtime";
11
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
12
  //#region src/components/agents-sdk/WorkspaceExplorer.tsx
10
13
  function encodeWorkspaceDestination(destination) {
11
14
  const path = destination.path.split("/").map((segment) => encodeURIComponent(segment)).join("/");
@@ -41,7 +44,7 @@ function getDirectoryAncestors(path, root) {
41
44
  function WorkspaceExplorer({ ...props }) {
42
45
  return /* @__PURE__ */ jsx(WorkspaceNavigationRestorationBoundary, { children: /* @__PURE__ */ jsx(WorkspaceExplorerContent, { ...props }) });
43
46
  }
44
- function WorkspaceExplorerContent({ workspace, navigation, className, title = "Workspace", leading, actions, showFilter = false, filterPlaceholder = "Filter files...", emptyState, ref, ...props }) {
47
+ function WorkspaceExplorerContent({ workspace, navigation, className, title = "Workspace", leading, actions, mounts, showFilter = false, filterPlaceholder = "Filter files...", emptyState, ref, ...props }) {
45
48
  const explorerRef = React.useRef(null);
46
49
  const pendingTreeFocusRef = React.useRef(null);
47
50
  const currentEntry = navigation.current;
@@ -110,7 +113,13 @@ function WorkspaceExplorerContent({ workspace, navigation, className, title = "W
110
113
  workspace,
111
114
  title,
112
115
  leading,
113
- actions,
116
+ actions: mounts ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(WorkspaceMountManager, {
117
+ ...mounts,
118
+ trigger: /* @__PURE__ */ jsx(AppTopBar.Button, {
119
+ label: "Attach folder",
120
+ children: /* @__PURE__ */ jsx(FolderIcon, {})
121
+ })
122
+ }), actions] }) : actions,
114
123
  showFilter,
115
124
  filterPlaceholder,
116
125
  emptyState,
@@ -1,2 +1,2 @@
1
- import { _ as isWorkspaceTextPath, a as WorkspaceMediaInfo, c as WorkspaceMediaTrackKind, d as inferWorkspaceLanguage, f as inferWorkspaceMedia, g as isWorkspaceSkillPath, h as isWorkspaceMediaPath, i as WorkspaceFileState, l as WorkspaceSkillDocument, m as isWorkspaceMarkdownPath, n as WorkspaceFileAssetRequest, o as WorkspaceMediaKind, p as inferWorkspaceMimeType, r as WorkspaceFileAssetResolver, s as WorkspaceMediaTrack, t as WorkspaceFileAsset, u as getWorkspaceBasename, v as parseWorkspaceSkill } from "../../WorkspaceFile-Bouauobc.js";
1
+ import { _ as isWorkspaceTextPath, a as WorkspaceMediaInfo, c as WorkspaceMediaTrackKind, d as inferWorkspaceLanguage, f as inferWorkspaceMedia, g as isWorkspaceSkillPath, h as isWorkspaceMediaPath, i as WorkspaceFileState, l as WorkspaceSkillDocument, m as isWorkspaceMarkdownPath, n as WorkspaceFileAssetRequest, o as WorkspaceMediaKind, p as inferWorkspaceMimeType, r as WorkspaceFileAssetResolver, s as WorkspaceMediaTrack, t as WorkspaceFileAsset, u as getWorkspaceBasename, v as parseWorkspaceSkill } from "../../WorkspaceFile-19WP0EU1.js";
2
2
  export { WorkspaceFileAsset, WorkspaceFileAssetRequest, WorkspaceFileAssetResolver, WorkspaceFileState, WorkspaceMediaInfo, WorkspaceMediaKind, WorkspaceMediaTrack, WorkspaceMediaTrackKind, WorkspaceSkillDocument, getWorkspaceBasename, inferWorkspaceLanguage, inferWorkspaceMedia, inferWorkspaceMimeType, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, isWorkspaceTextPath, parseWorkspaceSkill };
@@ -1,4 +1,4 @@
1
- import { i as WorkspaceFileState } from "../../WorkspaceFile-Bouauobc.js";
1
+ import { i as WorkspaceFileState } from "../../WorkspaceFile-19WP0EU1.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/WorkspaceFileView.d.ts
@@ -1,2 +1,2 @@
1
- import { t as WorkspaceFileView } from "../../WorkspaceFileView-DYPtRVpM.js";
1
+ import { t as WorkspaceFileView } from "../../WorkspaceFileView-DQDWUpAH.js";
2
2
  export { WorkspaceFileView };
@@ -1,4 +1,4 @@
1
- import { H as RefreshIcon } from "../../icons-cuEtsgj9.js";
1
+ import { H as RefreshIcon } from "../../icons-CeGfXO21.js";
2
2
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
3
3
  import "react";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-Bouauobc.js";
2
- import { y as WorkspaceSource } from "../../Workspace-HzGrWDX3.js";
1
+ import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-19WP0EU1.js";
2
+ import { y as WorkspaceSource } from "../../Workspace-mzMZSdts.js";
3
3
  import { QueryClient } from "@tanstack/react-query";
4
4
 
5
5
  //#region src/components/agents-sdk/WorkspaceLive.d.ts
@@ -1,2 +1,2 @@
1
- import { a as WorkspaceMessageResponseProps, i as WorkspaceMessageResponse, n as WorkspaceFileRenderer, r as WorkspaceFileRendererProvider, t as WorkspaceFileRenderInput } from "../../WorkspaceMessageResponse-8lOSAbw_.js";
1
+ import { a as WorkspaceMessageResponseProps, i as WorkspaceMessageResponse, n as WorkspaceFileRenderer, r as WorkspaceFileRendererProvider, t as WorkspaceFileRenderInput } from "../../WorkspaceMessageResponse-BApg8KZv.js";
2
2
  export { WorkspaceFileRenderInput, WorkspaceFileRenderer, WorkspaceFileRendererProvider, WorkspaceMessageResponse, WorkspaceMessageResponseProps };
@@ -1,33 +1,2 @@
1
- import * as React from "react";
2
-
3
- //#region src/components/agents-sdk/WorkspaceMountManager.d.ts
4
- type WorkspaceMountPermission = "granted" | "prompt" | "denied" | "unavailable";
5
- interface WorkspaceMountItem {
6
- id: string;
7
- path: string;
8
- permission: WorkspaceMountPermission;
9
- }
10
- interface WorkspaceMountManagerProps {
11
- mounts: readonly WorkspaceMountItem[];
12
- adding?: boolean;
13
- busyMountId?: string | null;
14
- error?: React.ReactNode;
15
- onAdd: () => void;
16
- onReconnect: (mount: WorkspaceMountItem) => void;
17
- onRemove: (mount: WorkspaceMountItem) => void;
18
- /** Caller-owned button, including its accessible name and optional toolbar composition. */
19
- trigger: React.ReactElement;
20
- }
21
- /** Controlled local-mount presentation; native handles and persistence stay in the host. */
22
- declare function WorkspaceMountManager({
23
- mounts,
24
- adding,
25
- busyMountId,
26
- error,
27
- onAdd,
28
- onReconnect,
29
- onRemove,
30
- trigger
31
- }: WorkspaceMountManagerProps): React.JSX.Element;
32
- //#endregion
1
+ import { i as WorkspaceMountPermission, n as WorkspaceMountManager, r as WorkspaceMountManagerProps, t as WorkspaceMountItem } from "../../WorkspaceMountManager-CkLI1B-G.js";
33
2
  export { WorkspaceMountItem, WorkspaceMountManager, WorkspaceMountManagerProps, WorkspaceMountPermission };
@@ -1,7 +1,7 @@
1
1
  import { Button } from "../foundations/Button.js";
2
- import { EmptyState } from "../foundations/EmptyState.js";
3
- import { Popover } from "../foundations/Popover.js";
4
2
  import { Card, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
3
+ import { Popover } from "../foundations/Popover.js";
4
+ import { EmptyState } from "../foundations/EmptyState.js";
5
5
  import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/agents-sdk/WorkspaceMountManager.tsx
@@ -1,13 +1,14 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { $ as UserIcon, C as FolderIcon, D as LinkIcon, K as SpinnerIcon, S as FileIcon, j as MessageSquareIcon, u as CalendarIcon } from "../../icons-cuEtsgj9.js";
2
+ import { $ as UserIcon, C as FolderIcon, D as LinkIcon, K as SpinnerIcon, S as FileIcon, j as MessageSquareIcon, u as CalendarIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
5
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
- import { EmptyState } from "../foundations/EmptyState.js";
6
+ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
7
7
  import { DescriptionList } from "../foundations/DescriptionList.js";
8
+ import { EmptyState } from "../foundations/EmptyState.js";
8
9
  import { LinkButton } from "../foundations/LinkButton.js";
9
- import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
10
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-Bg7XhPsk.js";
10
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
11
+ import { t as WorkspaceConceptPanel } from "../../WorkspaceConceptPanel-97ZyVpZI.js";
11
12
  import * as React from "react";
12
13
  import { jsx, jsxs } from "react/jsx-runtime";
13
14
  import { useQuery } from "@tanstack/react-query";
@@ -169,7 +170,8 @@ function useWorkspaceProjects(source) {
169
170
  function WorkspaceProjectsPanel({ className, source, ref, ...props }) {
170
171
  const query = useQuery(source.queryOptions);
171
172
  const projects = query.data ?? [];
172
- return /* @__PURE__ */ jsx("section", {
173
+ return /* @__PURE__ */ jsx(WorkspaceConceptPanel, {
174
+ heading: "Projects",
173
175
  ref,
174
176
  "data-slot": "workspace-projects-panel",
175
177
  className: cx("workspace-concept-panel", className),
@@ -1,11 +1,12 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { P as MonitorIcon, S as FileIcon, m as CodeIcon } from "../../icons-cuEtsgj9.js";
2
+ import { P as MonitorIcon, S as FileIcon, m as CodeIcon } from "../../icons-CeGfXO21.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
- import { EmptyState } from "../foundations/EmptyState.js";
4
+ import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
5
5
  import { DescriptionList } from "../foundations/DescriptionList.js";
6
+ import { EmptyState } from "../foundations/EmptyState.js";
6
7
  import { Switch } from "../foundations/Switch.js";
7
- import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
8
- import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-Bg7XhPsk.js";
8
+ import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, t as FaviconMark } from "../../workspace-assets-C3QT6UlQ.js";
9
+ import { t as WorkspaceConceptPanel } from "../../WorkspaceConceptPanel-97ZyVpZI.js";
9
10
  import * as React from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
12
  //#region src/components/agents-sdk/WorkspaceUserScript.tsx
@@ -130,7 +131,8 @@ function WorkspaceUserScriptCard({ className, script, ref, ...props }) {
130
131
  * quiet empty state when nothing is projected.
131
132
  */
132
133
  function WorkspaceUserScriptsPanel({ className, ref, scripts, ...props }) {
133
- return /* @__PURE__ */ jsx("section", {
134
+ return /* @__PURE__ */ jsx(WorkspaceConceptPanel, {
135
+ heading: "Scripts",
134
136
  ref,
135
137
  "data-slot": "workspace-user-scripts-panel",
136
138
  className: cx("workspace-concept-panel", className),
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { p as ChevronRightIcon } from "../../icons-cuEtsgj9.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
4
3
  import { useExpansionState } from "./ExpansionState.js";
4
+ import { p as ChevronRightIcon } from "../../icons-CeGfXO21.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region src/components/ai-sdk/Activity.tsx