@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.
- package/dist/{AgentChat-Bibfj7u1.d.ts → AgentChat-BLmQghkt.d.ts} +2 -2
- package/dist/{AgentToolRunsContext-daY67hFM.d.ts → AgentToolRunsContext-jtmveaRE.d.ts} +8 -7
- package/dist/{CodeBlock-Dl7a3Wqo.js → CodeBlock-BpooTofO.js} +1 -1
- package/dist/{FileTree-Uu3ZnW1u.js → FileTree-CAXWXH63.js} +1 -1
- package/dist/{McpConnectorForm-MRm1r59e.d.ts → McpConnectorForm-BETdVBRk.d.ts} +1 -1
- package/dist/{McpPluginCatalog-mbGw8FTu.d.ts → McpPluginCatalog-C6ip9IvL.d.ts} +2 -2
- package/dist/{PromptInput-BRX7FhjH.d.ts → PromptInput-DtJHyp0S.d.ts} +27 -22
- package/dist/{ResponsiveSidebarShell-DOXd5T-d.d.ts → ResponsiveSidebarShell-BTVPxLJK.d.ts} +12 -0
- package/dist/{SetupChecklist-DOp-zqjh.js → SetupChecklist-DyPZWzK2.js} +2 -2
- package/dist/{ThinkChat-BES_3Mb-.js → ThinkChat-qztQ6Clo.js} +7 -22
- package/dist/{ThinkChatActivity-CgvmTXXB.d.ts → ThinkChatActivity-B3lGVS-6.d.ts} +1 -1
- package/dist/{WorkspaceFileView-BublZXky.js → WorkspaceFileView-BvDbKM2c.js} +3 -3
- package/dist/components/agents-sdk/AgentActivity.js +1 -1
- package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
- package/dist/components/agents-sdk/AgentChat.js +44 -40
- package/dist/components/agents-sdk/AgentEvent.d.ts +42 -0
- package/dist/components/agents-sdk/AgentEvent.js +96 -0
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/AgentToolRunsContext.js +11 -7
- package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
- package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
- package/dist/components/agents-sdk/BrowserReplay.js +2 -2
- package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
- package/dist/components/agents-sdk/ManagerOffice.d.ts +106 -11
- package/dist/components/agents-sdk/ManagerOffice.js +1193 -151
- package/dist/components/agents-sdk/McpConnectionRequest.d.ts +1 -1
- package/dist/components/agents-sdk/McpConnectionRequest.js +11 -5
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -1
- package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.js +11 -7
- package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
- package/dist/components/agents-sdk/McpServerPicker.js +4 -4
- package/dist/components/agents-sdk/ModelSelector.js +5 -5
- package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
- package/dist/components/agents-sdk/PromptInputCommands.d.ts +5 -2
- package/dist/components/agents-sdk/PromptInputCommands.js +81 -3
- package/dist/components/agents-sdk/SubagentRunDetails.js +1 -1
- package/dist/components/agents-sdk/SubagentRunIndicator.d.ts +21 -3
- package/dist/components/agents-sdk/SubagentRunIndicator.js +56 -6
- package/dist/components/agents-sdk/SubagentRunSelector.js +5 -12
- package/dist/components/agents-sdk/ThinkChat.d.ts +4 -5
- package/dist/components/agents-sdk/ThinkChat.js +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
- package/dist/components/agents-sdk/ThinkChatActivitySummary.js +1 -1
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +3 -3
- package/dist/components/agents-sdk/ThinkExecutionRun.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +3 -3
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +14 -4
- package/dist/components/agents-sdk/ThinkFullApp.js +51 -5
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
- package/dist/components/agents-sdk/ThinkPendingApproval.js +1 -1
- package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +3 -3
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
- package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +4 -4
- package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
- package/dist/components/agents-sdk/ThinkSidepanel.d.ts +22 -4
- package/dist/components/agents-sdk/ThinkSidepanel.js +87 -35
- package/dist/components/agents-sdk/ThinkThreadPicker.js +5 -5
- package/dist/components/agents-sdk/Workspace.js +1 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +4 -21
- package/dist/components/ai-sdk/Activity.js +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
- package/dist/components/ai-sdk/Approval.js +2 -2
- package/dist/components/ai-sdk/Artifact.js +1 -1
- package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
- package/dist/components/ai-sdk/ChainOfThought.js +1 -1
- package/dist/components/ai-sdk/Checkpoint.js +1 -1
- package/dist/components/ai-sdk/CodeBlock.js +1 -1
- package/dist/components/ai-sdk/ComposerLink.d.ts +27 -0
- package/dist/components/ai-sdk/ComposerLink.js +111 -0
- package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
- package/dist/components/ai-sdk/Context.js +1 -1
- package/dist/components/ai-sdk/Conversation.js +1 -1
- package/dist/components/ai-sdk/Goal.js +2 -2
- package/dist/components/ai-sdk/InlineCitation.js +1 -1
- package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
- package/dist/components/ai-sdk/Message.js +19 -3
- package/dist/components/ai-sdk/MessageScroller.js +1 -1
- package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
- package/dist/components/ai-sdk/Plan.js +2 -2
- package/dist/components/ai-sdk/PromptInput.d.ts +2 -2
- package/dist/components/ai-sdk/PromptInput.js +67 -61
- package/dist/components/ai-sdk/PromptInputComposerEditor.d.ts +31 -0
- package/dist/components/ai-sdk/PromptInputComposerEditor.js +198 -0
- package/dist/components/ai-sdk/Queue.js +2 -2
- package/dist/components/ai-sdk/Reasoning.js +2 -2
- package/dist/components/ai-sdk/Sources.js +1 -1
- package/dist/components/ai-sdk/Task.js +1 -1
- package/dist/components/ai-sdk/ToolInvocation.js +1 -1
- package/dist/components/extension/ChatGptSignInScreen.js +2 -2
- package/dist/components/extension/CodexModelSelector.js +2 -2
- package/dist/components/extension/ConversationTabPicker.js +2 -2
- package/dist/components/foundations/AppIcon.js +1 -1
- package/dist/components/foundations/Checkbox.js +1 -1
- package/dist/components/foundations/Collapsible.js +1 -1
- package/dist/components/foundations/ContextMenu.js +1 -1
- package/dist/components/foundations/Menubar.js +1 -1
- package/dist/components/foundations/SearchField.js +1 -1
- package/dist/components/foundations/Select.js +1 -1
- package/dist/components/foundations/Stepper.js +1 -1
- package/dist/components/foundations/Toast.js +1 -1
- package/dist/components/foundations/ToggleGroup.d.ts +1 -1
- package/dist/components/foundations/ToggleGroup.js +1 -1
- package/dist/components/foundations/icons.d.ts +1 -1
- package/dist/components/foundations/icons.js +1 -1
- package/dist/components/general-purpose/Commit.js +2 -2
- package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
- package/dist/components/general-purpose/FileTree.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
- package/dist/components/general-purpose/PricingPlanCard.js +2 -2
- package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
- package/dist/components/general-purpose/ResizableSidePanel.js +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +72 -22
- package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/Terminal.js +2 -2
- package/dist/components/general-purpose/TestResults.js +1 -1
- package/dist/components/general-purpose/ThemeModeControl.js +2 -2
- package/dist/components/general-purpose/WebPreview.js +3 -3
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.js +4 -4
- package/dist/{copy-button-DHhf-J1d.js → copy-button-D7ySsRRo.js} +1 -1
- package/dist/{format-DB2mX9DA.js → format-COCyV98Z.js} +23 -1
- package/dist/{icons-Dw-im7lg.js → icons-BNEY4gO5.js} +44 -4
- package/dist/{icons-6ZnyZJiR.d.ts → icons-D0Pd2P9v.d.ts} +9 -4
- package/dist/{mcp-server-SD_S-IpB.js → mcp-server-7NR24ASj.js} +31 -4
- package/dist/{mcp-server-catalog-CCj2ItkV.d.ts → mcp-server-catalog-Cbu483Zb.d.ts} +9 -9
- package/dist/{progress-ring-BEocM1e3.js → progress-ring-Cgii90dC.js} +1 -1
- package/dist/{provider-logos-zjZycgV6.js → provider-logos-DWYY8wNz.js} +31 -6
- package/dist/styles/action-guide.css +4 -0
- package/dist/styles/agent-attention.css +5 -1
- package/dist/styles/agent-chat.css +21 -18
- package/dist/styles/agent-event.css +14 -0
- package/dist/styles/app-icon.css +21 -0
- package/dist/styles/avatar.css +2 -1
- package/dist/styles/base.css +4 -0
- package/dist/styles/brand-marks.css +22 -0
- package/dist/styles/button.css +10 -0
- package/dist/styles/composer-link.css +99 -0
- package/dist/styles/connected-app-card.css +9 -0
- package/dist/styles/github-motion-mark.css +8 -1
- package/dist/styles/index.css +3 -0
- package/dist/styles/manager-office.css +1313 -73
- package/dist/styles/mcp-plugin-catalog.css +4 -0
- package/dist/styles/mcp-server-picker.css +2 -0
- package/dist/styles/message-scroller.css +5 -0
- package/dist/styles/prompt-input.css +14 -53
- package/dist/styles/responsive-sidebar-shell.css +47 -0
- package/dist/styles/subagent-run.css +29 -19
- package/dist/styles/think-full-app.css +139 -4
- package/dist/styles/think-sidepanel.css +9 -5
- package/dist/styles/think-thread-picker.css +13 -12
- package/dist/styles/workspace-mount-manager.css +0 -22
- package/dist/utils/composer-link.d.ts +59 -0
- package/dist/utils/composer-link.js +203 -0
- package/dist/utils/mcp-server-catalog.d.ts +1 -1
- package/dist/utils/mcp-server-catalog.js +9 -9
- 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-
|
|
3
|
-
import { n as
|
|
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
|
|
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-
|
|
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-
|
|
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
|
|
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 {
|
|
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-
|
|
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-
|
|
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-
|
|
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 {
|
|
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,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-
|
|
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 {
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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-
|
|
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 {
|
|
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: "
|
|
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: "
|
|
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: "
|
|
416
|
+
size: "xs",
|
|
415
417
|
variant: "surface",
|
|
416
418
|
children: /* @__PURE__ */ jsx(SlackIcon, {})
|
|
417
419
|
}), /* @__PURE__ */ jsx(AppIcon.Root, {
|
|
418
|
-
size: "
|
|
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("@") ?
|
|
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__ */
|
|
666
|
-
|
|
667
|
-
|
|
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:
|
|
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-
|
|
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 {
|
|
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 {
|
|
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-
|
|
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-
|
|
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-
|
|
1
|
+
import { t as WorkspaceFileView } from "../../WorkspaceFileView-BvDbKM2c.js";
|
|
2
2
|
export { WorkspaceFileView };
|
|
@@ -1,24 +1,12 @@
|
|
|
1
|
-
import { L as PaperclipIcon
|
|
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__ */
|
|
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__ */
|
|
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-
|
|
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-
|
|
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-
|
|
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";
|