@mcp-b/react-components 0.44.1 → 0.46.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 (170) hide show
  1. package/dist/{AgentChat-Bibfj7u1.d.ts → AgentChat-BLmQghkt.d.ts} +2 -2
  2. package/dist/{AgentToolRunsContext-daY67hFM.d.ts → AgentToolRunsContext-jtmveaRE.d.ts} +8 -7
  3. package/dist/{CodeBlock-Dl7a3Wqo.js → CodeBlock-BpooTofO.js} +1 -1
  4. package/dist/{FileTree-Uu3ZnW1u.js → FileTree-CAXWXH63.js} +1 -1
  5. package/dist/{McpConnectorForm-MRm1r59e.d.ts → McpConnectorForm-BETdVBRk.d.ts} +1 -1
  6. package/dist/{McpPluginCatalog-mbGw8FTu.d.ts → McpPluginCatalog-C6ip9IvL.d.ts} +2 -2
  7. package/dist/{PromptInput-BRX7FhjH.d.ts → PromptInput-DtJHyp0S.d.ts} +27 -22
  8. package/dist/{ResponsiveSidebarShell-DOXd5T-d.d.ts → ResponsiveSidebarShell-BTVPxLJK.d.ts} +12 -0
  9. package/dist/{SetupChecklist-DOp-zqjh.js → SetupChecklist-DyPZWzK2.js} +2 -2
  10. package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-qztQ6Clo.js} +7 -22
  11. package/dist/{ThinkChatActivity-CgvmTXXB.d.ts → ThinkChatActivity-B3lGVS-6.d.ts} +1 -1
  12. package/dist/{WorkspaceFileView-BublZXky.js → WorkspaceFileView-BvDbKM2c.js} +3 -3
  13. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  14. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentChat.js +44 -40
  16. package/dist/components/agents-sdk/AgentEvent.d.ts +42 -0
  17. package/dist/components/agents-sdk/AgentEvent.js +96 -0
  18. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  19. package/dist/components/agents-sdk/AgentToolRunsContext.js +11 -7
  20. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  21. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  22. package/dist/components/agents-sdk/BrowserReplay.js +2 -2
  23. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  24. package/dist/components/agents-sdk/ManagerOffice.d.ts +106 -11
  25. package/dist/components/agents-sdk/ManagerOffice.js +1193 -151
  26. package/dist/components/agents-sdk/McpConnectionRequest.d.ts +1 -1
  27. package/dist/components/agents-sdk/McpConnectionRequest.js +11 -5
  28. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -1
  29. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  30. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
  31. package/dist/components/agents-sdk/McpPluginCatalog.js +11 -7
  32. package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
  33. package/dist/components/agents-sdk/McpServerPicker.js +4 -4
  34. package/dist/components/agents-sdk/ModelSelector.js +5 -5
  35. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  36. package/dist/components/agents-sdk/PromptInputCommands.d.ts +5 -2
  37. package/dist/components/agents-sdk/PromptInputCommands.js +81 -3
  38. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
  39. package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +21 -3
  40. package/dist/components/agents-sdk/SubagentRunIndicator.js +56 -6
  41. package/dist/components/agents-sdk/SubagentRunSelector.js +5 -12
  42. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -5
  43. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  44. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  45. package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
  46. package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
  47. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  48. package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -3
  49. package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
  50. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  51. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
  52. package/dist/components/agents-sdk/ThinkFullApp.d.ts +14 -4
  53. package/dist/components/agents-sdk/ThinkFullApp.js +51 -5
  54. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  55. package/dist/components/agents-sdk/ThinkPendingApproval.js +1 -1
  56. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +3 -3
  58. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  59. package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
  60. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +1 -1
  61. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
  62. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  63. package/dist/components/agents-sdk/ThinkSidepanel.d.ts +22 -4
  64. package/dist/components/agents-sdk/ThinkSidepanel.js +87 -35
  65. package/dist/components/agents-sdk/ThinkThreadPicker.js +5 -5
  66. package/dist/components/agents-sdk/Workspace.js +1 -1
  67. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  68. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  69. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  70. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  71. package/dist/components/agents-sdk/WorkspaceMountManager.js +4 -21
  72. package/dist/components/ai-sdk/Activity.js +1 -1
  73. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  74. package/dist/components/ai-sdk/Approval.js +2 -2
  75. package/dist/components/ai-sdk/Artifact.js +1 -1
  76. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  77. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  78. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  79. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  80. package/dist/components/ai-sdk/ComposerLink.d.ts +27 -0
  81. package/dist/components/ai-sdk/ComposerLink.js +111 -0
  82. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  83. package/dist/components/ai-sdk/Context.js +1 -1
  84. package/dist/components/ai-sdk/Conversation.js +1 -1
  85. package/dist/components/ai-sdk/Goal.js +2 -2
  86. package/dist/components/ai-sdk/InlineCitation.js +1 -1
  87. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  88. package/dist/components/ai-sdk/Message.js +19 -3
  89. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  90. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  91. package/dist/components/ai-sdk/Plan.js +2 -2
  92. package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
  93. package/dist/components/ai-sdk/PromptInput.js +67 -61
  94. package/dist/components/ai-sdk/PromptInputComposerEditor.d.ts +31 -0
  95. package/dist/components/ai-sdk/PromptInputComposerEditor.js +198 -0
  96. package/dist/components/ai-sdk/Queue.js +2 -2
  97. package/dist/components/ai-sdk/Reasoning.js +2 -2
  98. package/dist/components/ai-sdk/Sources.js +1 -1
  99. package/dist/components/ai-sdk/Task.js +1 -1
  100. package/dist/components/ai-sdk/ToolInvocation.js +1 -1
  101. package/dist/components/extension/ChatGptSignInScreen.js +2 -2
  102. package/dist/components/extension/CodexModelSelector.js +2 -2
  103. package/dist/components/extension/ConversationTabPicker.js +2 -2
  104. package/dist/components/foundations/AppIcon.js +1 -1
  105. package/dist/components/foundations/Checkbox.js +1 -1
  106. package/dist/components/foundations/Collapsible.js +1 -1
  107. package/dist/components/foundations/ContextMenu.js +1 -1
  108. package/dist/components/foundations/Menubar.js +1 -1
  109. package/dist/components/foundations/SearchField.js +1 -1
  110. package/dist/components/foundations/Select.js +1 -1
  111. package/dist/components/foundations/Stepper.js +1 -1
  112. package/dist/components/foundations/Toast.js +1 -1
  113. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  114. package/dist/components/foundations/ToggleGroup.js +1 -1
  115. package/dist/components/foundations/icons.d.ts +1 -1
  116. package/dist/components/foundations/icons.js +1 -1
  117. package/dist/components/general-purpose/Commit.js +2 -2
  118. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  119. package/dist/components/general-purpose/FileTree.js +1 -1
  120. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  121. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  122. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  123. package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
  124. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  125. package/dist/components/general-purpose/ResponsiveSidebarShell.js +72 -22
  126. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  127. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  128. package/dist/components/general-purpose/Terminal.js +2 -2
  129. package/dist/components/general-purpose/TestResults.js +1 -1
  130. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  131. package/dist/components/general-purpose/WebPreview.js +3 -3
  132. package/dist/components/nanites/AgentConnection.js +2 -2
  133. package/dist/components/nanites/AgentToolDetail.js +4 -4
  134. package/dist/{copy-button-DHhf-J1d.js → copy-button-D7ySsRRo.js} +1 -1
  135. package/dist/{format-DB2mX9DA.js → format-COCyV98Z.js} +23 -1
  136. package/dist/{icons-Dw-im7lg.js → icons-BNEY4gO5.js} +44 -4
  137. package/dist/{icons-6ZnyZJiR.d.ts → icons-D0Pd2P9v.d.ts} +9 -4
  138. package/dist/{mcp-server-SD_S-IpB.js → mcp-server-7NR24ASj.js} +31 -4
  139. package/dist/{mcp-server-catalog-CCj2ItkV.d.ts → mcp-server-catalog-Cbu483Zb.d.ts} +9 -9
  140. package/dist/{progress-ring-BEocM1e3.js → progress-ring-Cgii90dC.js} +1 -1
  141. package/dist/{provider-logos-zjZycgV6.js → provider-logos-DWYY8wNz.js} +31 -6
  142. package/dist/styles/action-guide.css +4 -0
  143. package/dist/styles/agent-attention.css +5 -1
  144. package/dist/styles/agent-chat.css +21 -18
  145. package/dist/styles/agent-event.css +14 -0
  146. package/dist/styles/app-icon.css +21 -0
  147. package/dist/styles/avatar.css +2 -1
  148. package/dist/styles/base.css +4 -0
  149. package/dist/styles/brand-marks.css +22 -0
  150. package/dist/styles/button.css +10 -0
  151. package/dist/styles/composer-link.css +99 -0
  152. package/dist/styles/connected-app-card.css +9 -0
  153. package/dist/styles/github-motion-mark.css +8 -1
  154. package/dist/styles/index.css +3 -0
  155. package/dist/styles/manager-office.css +1313 -73
  156. package/dist/styles/mcp-plugin-catalog.css +4 -0
  157. package/dist/styles/mcp-server-picker.css +2 -0
  158. package/dist/styles/message-scroller.css +5 -0
  159. package/dist/styles/prompt-input.css +14 -53
  160. package/dist/styles/responsive-sidebar-shell.css +47 -0
  161. package/dist/styles/subagent-run.css +29 -19
  162. package/dist/styles/think-full-app.css +139 -4
  163. package/dist/styles/think-sidepanel.css +9 -5
  164. package/dist/styles/think-thread-picker.css +13 -12
  165. package/dist/styles/workspace-mount-manager.css +0 -22
  166. package/dist/utils/composer-link.d.ts +59 -0
  167. package/dist/utils/composer-link.js +203 -0
  168. package/dist/utils/mcp-server-catalog.d.ts +1 -1
  169. package/dist/utils/mcp-server-catalog.js +9 -9
  170. package/package.json +8 -8
@@ -1,8 +1,8 @@
1
1
  import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
2
- import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-daY67hFM.js";
3
- import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-mbGw8FTu.js";
2
+ import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-jtmveaRE.js";
3
+ import { n as ResponsiveSidebarShell, t as AppBarSlots } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
4
+ import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-C6ip9IvL.js";
4
5
  import { ThinkChatMessagesProps } from "./ThinkChat.js";
5
- import { n as ResponsiveSidebarShell, t as AppBarSlots } from "../../ResponsiveSidebarShell-DOXd5T-d.js";
6
6
  import { ThinkThreadStatusSummary } from "./ThinkThreadPicker.js";
7
7
  import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-Dq-GC0_T.js";
8
8
  import { v as WorkspaceSource } from "../../Workspace-jdVZ9S0a.js";
@@ -70,8 +70,11 @@ interface ThinkFullAppConversation<AgentT extends ThinkFullAppAgent<State>, Stat
70
70
  * The app owns the subscription — mounted beside the `useAgent` call, since
71
71
  * the server replays retained runs once per socket connect — so a run-detail
72
72
  * route can read the same projection. ThinkFullApp never subscribes itself.
73
+ *
74
+ * Omit it for a connection that spawns no runs — a delegated run's own
75
+ * socket carries none — rather than passing an empty stand-in projection.
73
76
  */
74
- agentTools: AgentToolEventsValue<MessageT["parts"][number]>;
77
+ agentTools?: AgentToolEventsValue<MessageT["parts"][number]>;
75
78
  }
76
79
  interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unknown, MessageT extends UIMessage = UIMessage> extends React.HTMLAttributes<HTMLDivElement> {
77
80
  /**
@@ -106,6 +109,12 @@ interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unk
106
109
  * Use the render form to close the compact drawer after selecting a thread.
107
110
  */
108
111
  threadSidebar?: React.ComponentProps<typeof ResponsiveSidebarShell>["sidebar"];
112
+ /**
113
+ * Place the wide-layout thread toggle. The thread rail owns it by default;
114
+ * hosts that compose their own rail header may keep the shell fallback in
115
+ * the main bar and render `closeSidebar` themselves.
116
+ */
117
+ sidebarTogglePlacement?: React.ComponentProps<typeof ResponsiveSidebarShell>["sidebarTogglePlacement"];
109
118
  /**
110
119
  * Visible surface. Omit for internal state. A controlled `view` naming a
111
120
  * panel that does not exist renders the conversation alone — it is never
@@ -135,6 +144,7 @@ declare function ThinkFullApp<AgentT extends ThinkFullAppAgent<State>, State = u
135
144
  ref,
136
145
  renderAgentToolRunLink,
137
146
  sourceKey,
147
+ sidebarTogglePlacement,
138
148
  style,
139
149
  threadSidebar,
140
150
  threadStatusSummary,
@@ -1,11 +1,13 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { S as FileIcon, c as BoxIcon } from "../../icons-Dw-im7lg.js";
2
+ import { S as FileIcon, c as BoxIcon, r as ArrowLeftIcon, y as EllipsisIcon } from "../../icons-BNEY4gO5.js";
3
+ import { IconButton } from "../foundations/IconButton.js";
4
+ import { Menu } from "../foundations/Menu.js";
3
5
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
4
6
  import { ResizableSidePanel } from "../general-purpose/ResizableSidePanel.js";
5
7
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
6
- import { McpPluginCatalog } from "./McpPluginCatalog.js";
7
8
  import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../../WorkspaceLink-DtH66bAY.js";
8
- import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-BES_3Mb-.js";
9
+ import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-qztQ6Clo.js";
10
+ import { McpPluginCatalog } from "./McpPluginCatalog.js";
9
11
  import { ThinkFullAppViewSwitch } from "./ThinkFullAppViewSwitch.js";
10
12
  import { ThinkThreadStatusIndicators } from "./ThinkThreadPicker.js";
11
13
  import { useWorkspace } from "./Workspace.js";
@@ -28,6 +30,29 @@ function compactBreakPx(el) {
28
30
  function isCompactApp(el) {
29
31
  return el.getBoundingClientRect().width <= compactBreakPx(el);
30
32
  }
33
+ function ThinkFullAppCompactViewMenu({ activeView, onViewChange, views }) {
34
+ return /* @__PURE__ */ jsx("div", {
35
+ className: "think-full-app__compact-view-menu",
36
+ children: /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsx(IconButton, {
37
+ label: "More views",
38
+ tooltip: "More views",
39
+ render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
40
+ variant: "ghost",
41
+ color: "neutral",
42
+ size: "sm",
43
+ children: /* @__PURE__ */ jsx(EllipsisIcon, {})
44
+ }), /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
45
+ side: "bottom",
46
+ align: "end",
47
+ sideOffset: 4,
48
+ children: /* @__PURE__ */ jsx(Menu.Popup, { children: views.map((view) => /* @__PURE__ */ jsxs(Menu.Item, {
49
+ "aria-current": activeView === view.id ? "page" : void 0,
50
+ onClick: () => onViewChange(view.id),
51
+ children: [view.icon, view.label]
52
+ }, view.id)) })
53
+ }) })] })
54
+ });
55
+ }
31
56
  function WorkspacePanel({ config }) {
32
57
  const selectedPath = config.navigation.current.destination.kind === "file" ? config.navigation.current.destination.path : null;
33
58
  return /* @__PURE__ */ jsx(WorkspaceExplorer, {
@@ -83,7 +108,7 @@ function ThinkFullAppThreadChat({ agent, agentTools, chat, messages, renderAgent
83
108
  /** Combines ThinkChat with a resizable workbench. Wide apps with a workspace
84
109
  * open Files beside the conversation; compact (extension) widths stay on chat
85
110
  * until a view is selected. */
86
- function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewProp, messages, onViewChange, plugins, ref, renderAgentToolRunLink, sourceKey, style, threadSidebar, threadStatusSummary, view, workbenchPanels, workspace, ...props }) {
111
+ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewProp, messages, onViewChange, plugins, ref, renderAgentToolRunLink, sourceKey, sidebarTogglePlacement = "sidebar", style, threadSidebar, threadStatusSummary, view, workbenchPanels, workspace, ...props }) {
87
112
  const appRef = React.useRef(null);
88
113
  const workbenchPanelRef = React.useRef(null);
89
114
  const pendingPanelFocusRef = React.useRef(null);
@@ -155,7 +180,26 @@ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewPr
155
180
  "aria-label": "App views",
156
181
  onValueChange: (next) => updateView(next ?? "chat")
157
182
  }) : bar?.views ?? null;
158
- const appBarActions = bar?.actions || viewSwitch ? /* @__PURE__ */ jsxs(Fragment, { children: [bar?.actions, viewSwitch] }) : void 0;
183
+ const compactViewMenu = bar?.views === void 0 && availableWorkbenchPanels.length ? /* @__PURE__ */ jsx(ThinkFullAppCompactViewMenu, {
184
+ activeView: activePanel?.id,
185
+ views: availableWorkbenchPanels,
186
+ onViewChange: updateView
187
+ }) : null;
188
+ const appBarActions = bar?.actions || compactViewMenu || viewSwitch ? /* @__PURE__ */ jsxs(Fragment, { children: [
189
+ bar?.actions,
190
+ compactViewMenu,
191
+ viewSwitch
192
+ ] }) : void 0;
193
+ const compactLeading = bar?.compactLeading !== void 0 ? bar.compactLeading : activePanel ? /* @__PURE__ */ jsx(IconButton, {
194
+ type: "button",
195
+ label: "Back to chat",
196
+ tooltip: "Back to chat",
197
+ variant: "ghost",
198
+ color: "neutral",
199
+ size: "sm",
200
+ onClick: () => updateView("chat"),
201
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
202
+ }) : void 0;
159
203
  const appContent = /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
160
204
  ref: mergeRefs(appRef, ref),
161
205
  className: cx("think-full-app", className),
@@ -228,10 +272,12 @@ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewPr
228
272
  className: "think-full-app-shell",
229
273
  sidebar: threadSidebar,
230
274
  sidebarLabel: "threads",
275
+ sidebarTogglePlacement,
231
276
  showMainLabel: "Show selected thread",
232
277
  bar: {
233
278
  ...bar,
234
279
  actions: appBarActions,
280
+ compactLeading,
235
281
  primary: bar?.primary,
236
282
  className: "think-full-app__app-bar",
237
283
  label: "Workbench controls",
@@ -1,6 +1,6 @@
1
1
  import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
2
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
3
2
  import { ToggleGroup } from "../foundations/ToggleGroup.js";
3
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/components/agents-sdk/ThinkFullAppViewSwitch.tsx
@@ -1,4 +1,4 @@
1
- import { a as formatUnknownValue, o as titleCase } from "../../format-DB2mX9DA.js";
1
+ import { c as titleCase, o as formatUnknownValue } from "../../format-COCyV98Z.js";
2
2
  import { Approval, ApprovalCount, ApprovalDecision, ApprovalHeader, ApprovalInputPreview, ApprovalPreview, ApprovalPreviewRow, ApprovalQuestion } from "../ai-sdk/Approval.js";
3
3
  import "react";
4
4
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -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,10 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { V as PlusIcon } from "../../icons-Dw-im7lg.js";
2
+ import { V as PlusIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
- import { t as capitalize } from "../../format-DB2mX9DA.js";
6
- import { EmptyState } from "../foundations/EmptyState.js";
5
+ import { t as capitalize } from "../../format-COCyV98Z.js";
7
6
  import { 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 { getThinkRoutineNextRun } from "./ThinkRoutine.js";
3
2
  import { Switch } from "../foundations/Switch.js";
3
+ import { getThinkRoutineNextRun } from "./ThinkRoutine.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,17 +1,17 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, q as SpinnerIcon, r as ArrowLeftIcon } from "../../icons-Dw-im7lg.js";
2
+ import { d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, q as SpinnerIcon, r as ArrowLeftIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.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";
9
- import { Fieldset } from "../foundations/Fieldset.js";
7
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
10
8
  import { Select } from "../foundations/Select.js";
11
9
  import { Checkbox } from "../foundations/Checkbox.js";
12
10
  import { CheckboxGroup } from "../foundations/CheckboxGroup.js";
13
11
  import { Combobox } from "../foundations/Combobox.js";
12
+ import { Fieldset } from "../foundations/Fieldset.js";
14
13
  import { NumberField } from "../foundations/NumberField.js";
14
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
15
15
  import * as React from "react";
16
16
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
17
  //#region src/components/agents-sdk/ThinkRoutineForm.tsx
@@ -1,4 +1,4 @@
1
- import { t as AppBarSlots } from "../../ResponsiveSidebarShell-DOXd5T-d.js";
1
+ import { t as AppBarSlots } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
2
2
  import { ThinkRoutine, ThinkRoutineRunOf } from "./ThinkRoutine.js";
3
3
  import * as React from "react";
4
4
 
@@ -1,12 +1,12 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { $ as TrashIcon, B as PlayIcon, q as SpinnerIcon, z as PencilIcon } from "../../icons-Dw-im7lg.js";
2
+ import { $ as TrashIcon, B as PlayIcon, q as SpinnerIcon, z as PencilIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
5
- import { EmptyState } from "../foundations/EmptyState.js";
4
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
6
5
  import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
+ import { AlertDialog } from "../foundations/AlertDialog.js";
7
+ import { EmptyState } from "../foundations/EmptyState.js";
7
8
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
8
9
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
9
- import { AlertDialog } from "../foundations/AlertDialog.js";
10
10
  import { ThinkRoutineBrowser } from "./ThinkRoutineBrowser.js";
11
11
  import { ThinkRoutineDetail } from "./ThinkRoutineDetail.js";
12
12
  import * as React from "react";
@@ -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";
@@ -5,6 +5,7 @@ import { ThinkRoutine } from "./ThinkRoutine.js";
5
5
  import { SetupChecklistEntry } from "../general-purpose/SetupChecklist.js";
6
6
  import * as React from "react";
7
7
  import { UIMessage } from "ai";
8
+ import { AgentToolRunState } from "agents/agent-tools";
8
9
 
9
10
  //#region src/components/agents-sdk/ThinkSidepanel.d.ts
10
11
  type ThinkSidepanelView = "chat" | "files" | "plugins" | "schedules" | "live";
@@ -86,11 +87,28 @@ interface ThinkSidepanelSchedules<TRoutine extends ThinkRoutine = ThinkRoutine>
86
87
  /** Host-owned create/edit form. The side panel only frames it. */
87
88
  editor?: React.ReactNode;
88
89
  }
89
- interface ThinkSidepanelAgentRun {
90
- title: string;
91
- running?: boolean;
90
+ /**
91
+ * The delegated run the panel is drilled into, in one of the three states a
92
+ * drill-in can be in. A `ready` run carries the whole retained record out of
93
+ * the dispatching thread's `useAgentToolEvents` projection
94
+ * (`runsById[runId]`), which the host keeps mounted beside the run's own
95
+ * socket: status, progress, and report are the dispatching thread's facts,
96
+ * never the child's own state.
97
+ *
98
+ * The host decides which state applies. Detecting an `unavailable` run is the
99
+ * host's concern — the run's transcript load throws above this panel, in
100
+ * whatever boundary the host mounts around it — so the host maps that failure
101
+ * onto this state, and the panel owns only what it looks like.
102
+ */
103
+ type ThinkSidepanelAgentRun = {
104
+ state: "ready";
105
+ run: AgentToolRunState; /** Cancels the run. The bar shows it only while `run.status` is `running`. */
92
106
  onCancel?: () => void;
93
- }
107
+ } /** The dispatching thread's replay has not seeded this run yet. */ | {
108
+ state: "loading";
109
+ } /** The run's transcript could not be loaded: it was retired or never existed. */ | {
110
+ state: "unavailable";
111
+ };
94
112
  interface ThinkSidepanelIdentity {
95
113
  email?: string;
96
114
  liveProfile: string;
@@ -1,26 +1,28 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { A as McpIcon, C as FolderIcon, H as QueueIcon, J as SquareIcon, K as SlackIcon, L as PaperclipIcon, Q as TerminalIcon, S as FileIcon, T as InfoIcon, b as EyeIcon, c as BoxIcon, et as WarningIcon, g as DiscordIcon, o as ArrowUpRightIcon, q as SpinnerIcon, r as ArrowLeftIcon, y as EllipsisIcon, z as PencilIcon } from "../../icons-Dw-im7lg.js";
2
+ import { A as McpIcon, C as FolderIcon, H as QueueIcon, J as SquareIcon, K as SlackIcon, L as PaperclipIcon, Q as TerminalIcon, S as FileIcon, T as InfoIcon, b as EyeIcon, c as BoxIcon, et as WarningIcon, g as DiscordIcon, o as ArrowUpRightIcon, q as SpinnerIcon, r as ArrowLeftIcon, y as EllipsisIcon, z as PencilIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
- import { Dialog } from "../foundations/Dialog.js";
6
- import { EmptyState } from "../foundations/EmptyState.js";
7
5
  import { Menu } from "../foundations/Menu.js";
6
+ import { Dialog } from "../foundations/Dialog.js";
8
7
  import { Avatar } from "../foundations/Avatar.js";
9
8
  import { AppIcon } from "../foundations/AppIcon.js";
9
+ import { n as findCatalogMcpServerCard, t as McpServerIcon } from "../../mcp-server-7NR24ASj.js";
10
+ import { DescriptionList } from "../foundations/DescriptionList.js";
11
+ import { ChatGptSignInScreen } from "../extension/ChatGptSignInScreen.js";
12
+ import { EmptyState } from "../foundations/EmptyState.js";
13
+ import { Switch } from "../foundations/Switch.js";
14
+ import { useTheme } from "../foundations/ThemeProvider.js";
10
15
  import "../foundations/icons.js";
16
+ import { ActionGuide } from "../general-purpose/ActionGuide.js";
11
17
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
12
- import { DescriptionList } from "../foundations/DescriptionList.js";
13
- import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
18
+ import { t as SetupChecklistAction } from "../../SetupChecklist-DyPZWzK2.js";
14
19
  import { NaniteMark } from "../nanites/NaniteScene.js";
20
+ import { SubagentRunLabel } from "./SubagentRunIndicator.js";
21
+ import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
15
22
  import { getThinkExecutionRunId } from "./ThinkExecutionRun.js";
16
23
  import { ThinkThreadPicker, summarizeThinkThreads } from "./ThinkThreadPicker.js";
17
24
  import { ThinkFullApp } from "./ThinkFullApp.js";
18
- import { Switch } from "../foundations/Switch.js";
19
25
  import { ThinkRoutineLibrary } from "./ThinkRoutineLibrary.js";
20
- import { ActionGuide } from "../general-purpose/ActionGuide.js";
21
- import { t as SetupChecklistAction } from "../../SetupChecklist-DOp-zqjh.js";
22
- import { useTheme } from "../foundations/ThemeProvider.js";
23
- import { ChatGptSignInScreen } from "../extension/ChatGptSignInScreen.js";
24
26
  import * as React from "react";
25
27
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
26
28
  //#region src/components/agents-sdk/ThinkSidepanel.tsx
@@ -395,7 +397,7 @@ function StartComposerTray({ plugins, renderLink, start }) {
395
397
  type: "button",
396
398
  variant: "ghost",
397
399
  color: "neutral",
398
- size: "md",
400
+ size: "sm",
399
401
  disabled: start.attachFolderBusy,
400
402
  onClick: start.onAttachFolder,
401
403
  "aria-label": "Connect a local folder",
@@ -405,17 +407,17 @@ function StartComposerTray({ plugins, renderLink, start }) {
405
407
  type: "button",
406
408
  variant: "ghost",
407
409
  color: "neutral",
408
- size: "md",
410
+ size: "sm",
409
411
  render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
410
412
  "aria-label": "Connect plugins",
411
413
  children: [/* @__PURE__ */ jsx("span", { children: "Connect plugins" }), /* @__PURE__ */ jsxs(AppIcon.Stack, {
412
414
  "aria-hidden": "true",
413
415
  children: [/* @__PURE__ */ jsx(AppIcon.Root, {
414
- size: "sm",
416
+ size: "xs",
415
417
  variant: "surface",
416
418
  children: /* @__PURE__ */ jsx(SlackIcon, {})
417
419
  }), /* @__PURE__ */ jsx(AppIcon.Root, {
418
- size: "sm",
420
+ size: "xs",
419
421
  variant: "surface",
420
422
  children: /* @__PURE__ */ jsx(DiscordIcon, {})
421
423
  })]
@@ -458,6 +460,18 @@ function StartComposerTray({ plugins, renderLink, start }) {
458
460
  }) })] }) : null
459
461
  ] });
460
462
  }
463
+ function mentionSuggestionIcon(value) {
464
+ const token = value.match(/^@([^\s]+)/)?.[1];
465
+ const card = token ? findCatalogMcpServerCard({
466
+ id: token,
467
+ name: token
468
+ }) : void 0;
469
+ if (!card) return /* @__PURE__ */ jsx(McpIcon, {});
470
+ return /* @__PURE__ */ jsx(McpServerIcon, {
471
+ server: card,
472
+ size: "xs"
473
+ });
474
+ }
461
475
  function startStarters(brandName, start, onShowGuide) {
462
476
  return {
463
477
  "aria-label": "Suggested prompts",
@@ -477,7 +491,7 @@ function startStarters(brandName, start, onShowGuide) {
477
491
  ...start.suggestions?.map((suggestion, index) => ({
478
492
  id: `suggestion:${index}:${suggestion.value}:${suggestion.label}`,
479
493
  label: suggestion.label,
480
- icon: suggestion.value.startsWith("/") ? /* @__PURE__ */ jsx(BoxIcon, {}) : suggestion.value.startsWith("@") ? /* @__PURE__ */ jsx(McpIcon, {}) : /* @__PURE__ */ jsx(EyeIcon, {})
494
+ icon: suggestion.value.startsWith("/") ? /* @__PURE__ */ jsx(BoxIcon, {}) : suggestion.value.startsWith("@") ? mentionSuggestionIcon(suggestion.value) : /* @__PURE__ */ jsx(EyeIcon, {})
481
495
  })) ?? []
482
496
  ],
483
497
  onSelect: (item) => {
@@ -535,6 +549,22 @@ function employeeMessages({ agentRun, brandName, guideOpen, hasConversation, hos
535
549
  };
536
550
  }
537
551
  /**
552
+ * The drilled-in run's name over its live status line — the same label its
553
+ * selector chip wears in the parent transcript, so what the person clicked
554
+ * and what they land on read the same. Before the replay seeds the run there
555
+ * is only the fact that it is a run.
556
+ */
557
+ function ThinkSidepanelRunTitle({ agentRun }) {
558
+ return /* @__PURE__ */ jsx("span", {
559
+ "data-slot": "think-sidepanel-run-title",
560
+ className: "think-sidepanel__run-title",
561
+ children: agentRun.state === "ready" ? /* @__PURE__ */ jsx(SubagentRunLabel, { run: agentRun.run }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(NaniteMark, {}), /* @__PURE__ */ jsx("span", {
562
+ className: "sigvelo-truncate",
563
+ children: "Delegated run"
564
+ })] })
565
+ });
566
+ }
567
+ /**
538
568
  * The employee side panel: icon-and-tooltip chrome, start screen, schedules,
539
569
  * conversation plus workbench. Hosts hydrate conversation, workspace,
540
570
  * plugins, and callables. Storybook is the place to iterate the chrome.
@@ -650,6 +680,44 @@ function ThinkSidepanel({ agentRun, appBarLeading, brand, className, companion,
650
680
  }), identityDialog]
651
681
  });
652
682
  const workbenchView = view === "plugins" ? "plugins" : view === "files" ? "files" : "chat";
683
+ const cancelRun = agentRun?.state === "ready" && agentRun.run.status === "running" ? agentRun.onCancel : void 0;
684
+ const backToThread = agentRun ? /* @__PURE__ */ jsx(AppTopBar.Link, {
685
+ label: "Back to parent conversation",
686
+ render: thread ? renderLink({
687
+ kind: "thread",
688
+ threadId: thread.id
689
+ }) : renderLink({
690
+ kind: "view",
691
+ view: "chat"
692
+ }),
693
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
694
+ }) : null;
695
+ if (agentRun?.state === "unavailable") return /* @__PURE__ */ jsxs("div", {
696
+ ref: rootRef,
697
+ className: cx("think-sidepanel", className),
698
+ "data-view": view,
699
+ ...props,
700
+ children: [
701
+ /* @__PURE__ */ jsxs(AppTopBar.Root, {
702
+ "aria-label": "Delegated run controls",
703
+ children: [
704
+ /* @__PURE__ */ jsx(AppTopBar.Leading, { children: backToThread }),
705
+ /* @__PURE__ */ jsx(AppTopBar.Title, { children: "Delegated run" }),
706
+ /* @__PURE__ */ jsx(AppTopBar.Trailing, { children: overflow })
707
+ ]
708
+ }),
709
+ /* @__PURE__ */ jsx("div", {
710
+ className: "think-sidepanel__gate",
711
+ role: "alert",
712
+ children: /* @__PURE__ */ jsx(EmptyState, {
713
+ icon: /* @__PURE__ */ jsx(WarningIcon, {}),
714
+ title: "Run unavailable",
715
+ description: "This delegated run is no longer available. Its report stays in the parent conversation."
716
+ })
717
+ }),
718
+ identityDialog
719
+ ]
720
+ });
653
721
  return /* @__PURE__ */ jsxs("div", {
654
722
  ref: rootRef,
655
723
  className: cx("think-sidepanel", className),
@@ -662,27 +730,11 @@ function ThinkSidepanel({ agentRun, appBarLeading, brand, className, companion,
662
730
  runId: run.runId
663
731
  }),
664
732
  bar: {
665
- title: agentRun ? /* @__PURE__ */ jsxs("span", {
666
- className: "think-sidepanel__run-title",
667
- children: [/* @__PURE__ */ jsx(NaniteMark, {}), /* @__PURE__ */ jsx("span", {
668
- className: "sigvelo-truncate",
669
- children: agentRun.title
670
- })]
671
- }) : thread?.title ?? "New chat",
672
- leading: agentRun ? /* @__PURE__ */ jsx(AppTopBar.Link, {
673
- label: "Back to parent conversation",
674
- render: thread ? renderLink({
675
- kind: "thread",
676
- threadId: thread.id
677
- }) : renderLink({
678
- kind: "view",
679
- view: "chat"
680
- }),
681
- children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
682
- }) : workbenchLeading,
683
- actions: agentRun?.running && agentRun.onCancel ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
733
+ title: agentRun ? /* @__PURE__ */ jsx(ThinkSidepanelRunTitle, { agentRun }) : thread?.title ?? "New chat",
734
+ leading: agentRun ? backToThread : workbenchLeading,
735
+ actions: cancelRun ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
684
736
  label: "Cancel run",
685
- onClick: agentRun.onCancel,
737
+ onClick: cancelRun,
686
738
  children: /* @__PURE__ */ jsx(SquareIcon, {})
687
739
  }), workspaceLinks] }) : workspaceLinks,
688
740
  primary: overflow,
@@ -1,13 +1,13 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { V as PlusIcon, _ as DotIcon, et as WarningIcon, q as SpinnerIcon, t as ArchiveIcon } from "../../icons-Dw-im7lg.js";
2
+ import { V as PlusIcon, _ as DotIcon, et as WarningIcon, q as SpinnerIcon, t as ArchiveIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button, buttonVariants } from "../foundations/Button.js";
4
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
5
- import { EmptyState } from "../foundations/EmptyState.js";
6
- import { ScrollArea } from "../foundations/ScrollArea.js";
4
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
7
5
  import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
+ import { ScrollArea } from "../foundations/ScrollArea.js";
7
+ import { AlertDialog } from "../foundations/AlertDialog.js";
8
+ import { EmptyState } from "../foundations/EmptyState.js";
8
9
  import { LinkButton } from "../foundations/LinkButton.js";
9
10
  import { SearchField } from "../foundations/SearchField.js";
10
- import { AlertDialog } from "../foundations/AlertDialog.js";
11
11
  import * as React from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
  //#region src/components/agents-sdk/ThinkThreadPicker.tsx
@@ -1,4 +1,4 @@
1
- import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
1
+ import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
2
2
  import { getWorkspaceBasename, inferWorkspaceMedia, isWorkspaceTextPath } from "./WorkspaceFile.js";
3
3
  import { n as isWorkspacePathWithinRoot, t as canonicalizeAbsoluteWorkspacePath } from "../../workspace-path-L_KmjRjq.js";
4
4
  import * as React from "react";
@@ -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-Uu3ZnW1u.js";
2
+ import { i as FileTreeFolder, r as FileTreeFile, t as FileTree } from "../../FileTree-CAXWXH63.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";
@@ -2,7 +2,7 @@ import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
3
3
  import { a as WorkspaceNavigationRestorationBoundary, n as WorkspaceNavigationProvider, o as useRequiredWorkspaceNavigationRestoration, r as resolveWorkspaceLink } from "../../WorkspaceLink-DtH66bAY.js";
4
4
  import { WorkspaceBrowser } from "./WorkspaceBrowser.js";
5
- import { t as WorkspaceFileView } from "../../WorkspaceFileView-BublZXky.js";
5
+ import { t as WorkspaceFileView } from "../../WorkspaceFileView-BvDbKM2c.js";
6
6
  import * as React from "react";
7
7
  import { jsx } from "react/jsx-runtime";
8
8
  //#region src/components/agents-sdk/WorkspaceExplorer.tsx
@@ -1,2 +1,2 @@
1
- import { t as WorkspaceFileView } from "../../WorkspaceFileView-BublZXky.js";
1
+ import { t as WorkspaceFileView } from "../../WorkspaceFileView-BvDbKM2c.js";
2
2
  export { WorkspaceFileView };
@@ -1,4 +1,4 @@
1
- import { U as RefreshIcon } from "../../icons-Dw-im7lg.js";
1
+ import { U as RefreshIcon } from "../../icons-BNEY4gO5.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,24 +1,12 @@
1
- import { L as PaperclipIcon, T as InfoIcon, d as CheckIcon, et as WarningIcon, nt as XIcon } from "../../icons-Dw-im7lg.js";
1
+ import { L as PaperclipIcon } from "../../icons-BNEY4gO5.js";
2
2
  import { Button } from "../foundations/Button.js";
3
+ import { Card, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
3
4
  import { Popover } from "../foundations/Popover.js";
4
5
  import { EmptyState } from "../foundations/EmptyState.js";
5
6
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
6
- import { Card, CardAction, CardFooter, CardHeader, CardTitle } from "../foundations/Card.js";
7
7
  import "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/agents-sdk/WorkspaceMountManager.tsx
10
- function permissionLabel(permission) {
11
- if (permission === "granted") return "Read/write connected";
12
- if (permission === "prompt") return "Permission needed";
13
- if (permission === "denied") return "Access denied";
14
- return "Unavailable";
15
- }
16
- function permissionIcon(permission) {
17
- if (permission === "granted") return /* @__PURE__ */ jsx(CheckIcon, {});
18
- if (permission === "prompt") return /* @__PURE__ */ jsx(InfoIcon, {});
19
- if (permission === "denied") return /* @__PURE__ */ jsx(XIcon, {});
20
- return /* @__PURE__ */ jsx(WarningIcon, {});
21
- }
22
10
  /** Controlled local-mount presentation; native handles and persistence stay in the host. */
23
11
  function WorkspaceMountManager({ mounts, adding = false, busyMountId = null, error, onAdd, onReconnect, onRemove, triggerLabel = "Attach local folders" }) {
24
12
  const busy = adding || busyMountId !== null;
@@ -51,15 +39,10 @@ function WorkspaceMountManager({ mounts, adding = false, busyMountId = null, err
51
39
  return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(Card, {
52
40
  size: "sm",
53
41
  "aria-busy": busyMountId === mount.id || void 0,
54
- children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, {
42
+ children: [/* @__PURE__ */ jsx(CardHeader, { children: /* @__PURE__ */ jsx(CardTitle, {
55
43
  className: "workspace-mount-manager__path",
56
44
  children: /* @__PURE__ */ jsx("code", { children: mount.path })
57
- }), /* @__PURE__ */ jsx(CardAction, { children: /* @__PURE__ */ jsxs("span", {
58
- className: "workspace-mount-manager__permission",
59
- "data-permission": mount.permission,
60
- role: "status",
61
- children: [permissionIcon(mount.permission), permissionLabel(mount.permission)]
62
- }) })] }), /* @__PURE__ */ jsxs(CardFooter, { children: [mount.permission !== "granted" ? /* @__PURE__ */ jsx(Button, {
45
+ }) }), /* @__PURE__ */ jsxs(CardFooter, { children: [mount.permission !== "granted" ? /* @__PURE__ */ jsx(Button, {
63
46
  type: "button",
64
47
  size: "sm",
65
48
  disabled: busy,
@@ -1,7 +1,7 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { p as ChevronRightIcon } from "../../icons-Dw-im7lg.js";
3
2
  import { Collapsible } from "../foundations/Collapsible.js";
4
3
  import { useExpansionState } from "./ExpansionState.js";
4
+ import { p as ChevronRightIcon } from "../../icons-BNEY4gO5.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
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { nt as XIcon } from "../../icons-Dw-im7lg.js";
2
+ import { nt as XIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
5
  import { PromptInputTray } from "./PromptInput.js";
@@ -1,8 +1,8 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { z as PencilIcon } from "../../icons-Dw-im7lg.js";
2
+ import { z as PencilIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button } from "../foundations/Button.js";
4
- import { a as formatUnknownValue } from "../../format-DB2mX9DA.js";
5
4
  import { Kbd } from "../foundations/Kbd.js";
5
+ import { o as formatUnknownValue } from "../../format-COCyV98Z.js";
6
6
  import * as React from "react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region src/components/ai-sdk/Approval.tsx
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { et as WarningIcon, nt as XIcon, q as SpinnerIcon } from "../../icons-Dw-im7lg.js";
2
+ import { et as WarningIcon, nt as XIcon, q as SpinnerIcon } from "../../icons-BNEY4gO5.js";
3
3
  import { Button, buttonVariants } from "../foundations/Button.js";
4
4
  import { IconButton } from "../foundations/IconButton.js";
5
5
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";