@mcp-b/react-components 0.39.0 → 0.41.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-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
- package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
- package/dist/AppTopBar-ZdgmB_Lu.d.ts +97 -0
- package/dist/{CodeBlock-DO4Hdu1R.js → CodeBlock-BjELA-_s.js} +1 -1
- package/dist/{FileTree-DbQMpvxV.js → FileTree-DMYRdT6R.js} +1 -1
- package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
- package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
- package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-DyGHj01E.d.ts} +1 -1
- package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
- package/dist/Toolbar-CBOseBQr.d.ts +152 -0
- package/dist/{WorkspaceFileView-D0r7xnq5.js → WorkspaceFileView-D0yFwoDr.js} +3 -3
- package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
- 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 +41 -18
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
- package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
- package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
- package/dist/components/agents-sdk/BrowserReplay.js +1 -1
- package/dist/components/agents-sdk/BrowserRunPanel.d.ts +72 -25
- package/dist/components/agents-sdk/BrowserRunPanel.js +111 -70
- package/dist/components/agents-sdk/ManagerOffice.d.ts +156 -0
- package/dist/components/agents-sdk/ManagerOffice.js +662 -0
- package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
- package/dist/components/agents-sdk/McpPluginCatalog.js +79 -61
- package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
- package/dist/components/agents-sdk/McpServerPicker.js +2 -2
- package/dist/components/agents-sdk/ModelSelector.js +1 -1
- package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
- package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
- package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
- package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
- package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
- package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
- package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +43 -43
- package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
- package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
- package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -38
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +18 -6
- package/dist/components/agents-sdk/ThinkFullApp.js +112 -144
- package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
- package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +69 -89
- package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
- package/dist/components/agents-sdk/ThinkThreadPicker.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 +2 -1
- package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
- package/dist/components/ai-sdk/Activity.js +1 -1
- package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
- package/dist/components/ai-sdk/Approval.js +1 -1
- 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/Conversation.js +1 -1
- package/dist/components/ai-sdk/Goal.js +1 -1
- package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
- package/dist/components/ai-sdk/Message.d.ts +2 -2
- package/dist/components/ai-sdk/Message.js +25 -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 +1 -1
- package/dist/components/ai-sdk/PromptInput.js +1 -1
- package/dist/components/ai-sdk/Queue.d.ts +4 -4
- package/dist/components/ai-sdk/Queue.js +6 -15
- package/dist/components/ai-sdk/Reasoning.js +1 -1
- package/dist/components/ai-sdk/Sources.js +1 -1
- package/dist/components/ai-sdk/Task.d.ts +2 -2
- package/dist/components/ai-sdk/Task.js +2 -2
- package/dist/components/extension/ChatGptSignInScreen.d.ts +21 -10
- package/dist/components/extension/ChatGptSignInScreen.js +42 -34
- package/dist/components/extension/CodexModelSelector.js +1 -1
- package/dist/components/extension/ConversationTabPicker.js +1 -1
- package/dist/components/foundations/Avatar.d.ts +1 -10
- package/dist/components/foundations/Avatar.js +1 -10
- package/dist/components/foundations/Checkbox.js +1 -1
- package/dist/components/foundations/CheckboxGroup.js +1 -0
- package/dist/components/foundations/ContextMenu.js +1 -1
- package/dist/components/foundations/LinkButton.d.ts +12 -10
- package/dist/components/foundations/LinkButton.js +15 -11
- 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/Toolbar.d.ts +1 -151
- package/dist/components/foundations/icons.d.ts +2 -2
- package/dist/components/foundations/icons.js +2 -2
- package/dist/components/general-purpose/AppTopBar.d.ts +1 -90
- package/dist/components/general-purpose/AppTopBar.js +2 -1
- package/dist/components/general-purpose/Commit.d.ts +2 -2
- package/dist/components/general-purpose/Commit.js +5 -13
- package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
- package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
- package/dist/components/general-purpose/FileTree.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
- package/dist/components/general-purpose/PricingPlanCard.js +15 -14
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +95 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +90 -34
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/Terminal.d.ts +1 -1
- package/dist/components/general-purpose/Terminal.js +4 -12
- package/dist/components/general-purpose/TestResults.d.ts +1 -1
- package/dist/components/general-purpose/TestResults.js +8 -21
- package/dist/components/general-purpose/ThemeModeControl.js +1 -1
- package/dist/components/general-purpose/WebPreview.d.ts +1 -1
- package/dist/components/general-purpose/WebPreview.js +4 -12
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
- package/dist/components/nanites/AgentToolDetail.js +7 -7
- package/dist/components/nanites/NaniteScene.js +11 -11
- package/dist/{copy-button-4YvddK4e.js → copy-button-lys9N_aI.js} +1 -1
- package/dist/{icons-BGZ916hb.d.ts → icons-0corjfxR.d.ts} +6 -16
- package/dist/{icons-B4mGvCvc.js → icons-CVFSeTJn.js} +3 -5
- package/dist/styles/agent-attention.css +5 -5
- package/dist/styles/agent-chat.css +47 -12
- package/dist/styles/agent-tool-detail.css +2 -12
- package/dist/styles/app-icon.css +12 -18
- package/dist/styles/app-top-bar.css +32 -6
- package/dist/styles/avatar.css +6 -22
- package/dist/styles/base.css +2 -8
- package/dist/styles/browser-live-screen.css +38 -0
- package/dist/styles/browser-live-view.css +12 -4
- package/dist/styles/browser-run-panel.css +20 -16
- package/dist/styles/chatgpt-sign-in-screen.css +11 -5
- package/dist/styles/commit.css +24 -1
- package/dist/styles/environment-variables.css +3 -0
- package/dist/styles/index.css +5 -4
- package/dist/styles/manager-office.css +486 -0
- package/dist/styles/mcp-plugin-catalog.css +39 -35
- package/dist/styles/mcp-server-picker.css +1 -1
- package/dist/styles/message.css +41 -18
- package/dist/styles/nanite-scene.css +9 -9
- package/dist/styles/pricing-page.css +12 -8
- package/dist/styles/prompt-input.css +8 -13
- package/dist/styles/recipes.css +1 -57
- package/dist/styles/responsive-sidebar-shell.css +70 -20
- package/dist/styles/subagent-run.css +20 -3
- package/dist/styles/terminal.css +19 -0
- package/dist/styles/test-results.css +10 -1
- package/dist/styles/think-execution-status.css +8 -24
- package/dist/styles/think-execution-workbench.css +98 -105
- package/dist/styles/think-full-app.css +81 -185
- package/dist/styles/think-routine-library.css +0 -40
- package/dist/styles/think-thread-picker.css +8 -3
- package/dist/styles/transition-surface.css +7 -8
- package/dist/styles/utilities.css +42 -0
- package/dist/styles/web-preview.css +28 -5
- package/dist/styles/workspace-explorer.css +4 -23
- package/dist/styles/workspace-mount-manager.css +22 -0
- package/package.json +37 -35
- package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
- package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
- package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
- package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
- package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
- package/dist/components/foundations/Badge.d.ts +0 -62
- package/dist/components/foundations/Badge.js +0 -55
- package/dist/components/foundations/StatusPill.d.ts +0 -43
- package/dist/components/foundations/StatusPill.js +0 -35
- package/dist/components/general-purpose/Shell.d.ts +0 -149
- package/dist/components/general-purpose/Shell.js +0 -116
- package/dist/styles/agent-activity-preview-overlay.css +0 -169
- package/dist/styles/agent-activity-preview.css +0 -209
- package/dist/styles/badge.css +0 -120
- package/dist/styles/shell.css +0 -122
- package/dist/styles/status-pill.css +0 -39
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { K as SpinnerIcon, L as PauseIcon, T as InfoIcon, d as CheckIcon, tt as XIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { Tooltip } from "../foundations/Tooltip.js";
|
|
4
|
-
import { formatThinkExecutionRunProgress, formatThinkExecutionStatus, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone,
|
|
4
|
+
import { formatThinkExecutionRunProgress, formatThinkExecutionStatus, getThinkExecutionRunKindLabel, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, getThinkExecutionRunTitle } from "./ThinkExecutionRun.js";
|
|
5
5
|
import "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
//#region src/components/agents-sdk/ThinkExecutionStatus.tsx
|
|
8
8
|
function statusIcon(tone) {
|
|
9
9
|
if (tone === "success") return /* @__PURE__ */ jsx(CheckIcon, {});
|
|
10
10
|
if (tone === "danger") return /* @__PURE__ */ jsx(XIcon, {});
|
|
11
|
-
if (tone === "
|
|
11
|
+
if (tone === "paused") return /* @__PURE__ */ jsx(PauseIcon, {});
|
|
12
12
|
if (tone === "primary") return /* @__PURE__ */ jsx(SpinnerIcon, {});
|
|
13
13
|
return /* @__PURE__ */ jsx(InfoIcon, {});
|
|
14
14
|
}
|
|
@@ -34,7 +34,6 @@ function ThinkExecutionStatus({ className, label, run, ref, ...props }) {
|
|
|
34
34
|
}
|
|
35
35
|
/** Shared identity, status, and progress summary for a whole Think execution record. */
|
|
36
36
|
function ThinkExecutionRunSummary({ className, run, ref, ...props }) {
|
|
37
|
-
const subtitle = getThinkExecutionRunSubtitle(run);
|
|
38
37
|
return /* @__PURE__ */ jsxs("span", {
|
|
39
38
|
ref,
|
|
40
39
|
"data-slot": "think-execution-run-summary",
|
|
@@ -42,15 +41,12 @@ function ThinkExecutionRunSummary({ className, run, ref, ...props }) {
|
|
|
42
41
|
...props,
|
|
43
42
|
children: [/* @__PURE__ */ jsx(ThinkExecutionStatus, { run }), /* @__PURE__ */ jsxs("span", {
|
|
44
43
|
className: "think-execution-run-summary__copy",
|
|
45
|
-
children: [/* @__PURE__ */
|
|
46
|
-
className: "think-execution-run-
|
|
47
|
-
children:
|
|
48
|
-
className: "think-execution-run-summary__title sigvelo-truncate",
|
|
49
|
-
children: getThinkExecutionRunTitle(run)
|
|
50
|
-
}), subtitle ? /* @__PURE__ */ jsx("code", { children: subtitle }) : null]
|
|
44
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
45
|
+
className: "think-execution-run-summary__title sigvelo-truncate",
|
|
46
|
+
children: getThinkExecutionRunTitle(run)
|
|
51
47
|
}), /* @__PURE__ */ jsx("span", {
|
|
52
|
-
className: "think-execution-run-
|
|
53
|
-
children: formatThinkExecutionRunProgress(run)
|
|
48
|
+
className: "think-execution-run-summary__meta sigvelo-truncate",
|
|
49
|
+
children: `${getThinkExecutionRunKindLabel(run)} · ${formatThinkExecutionStatus(getThinkExecutionRunStatus(run))} · ${formatThinkExecutionRunProgress(run)}`
|
|
54
50
|
})]
|
|
55
51
|
})]
|
|
56
52
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-
|
|
1
|
+
import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-k8bpyXqt.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { DataTag, UnusedSkipTokenOptions } from "@tanstack/react-query";
|
|
4
4
|
import { Think, ThinkSubmissionInspection } from "@cloudflare/think";
|
|
@@ -21,6 +21,12 @@ interface ThinkExecutionWorkbenchProps extends Omit<React.HTMLAttributes<HTMLDiv
|
|
|
21
21
|
selectedRun: ThinkExecutionRun | null;
|
|
22
22
|
/** Returns an application-authored TanStack Router Link for the run. */
|
|
23
23
|
renderRunLink: (run: ThinkExecutionRun) => React.ReactElement;
|
|
24
|
+
/**
|
|
25
|
+
* Returns an application-authored TanStack Router Link back to the run
|
|
26
|
+
* list. A selected run replaces the list — the workspace drill-in pattern —
|
|
27
|
+
* so this link is the way back out.
|
|
28
|
+
*/
|
|
29
|
+
renderRunsLink: () => React.ReactElement;
|
|
24
30
|
}
|
|
25
31
|
interface ThinkExecutionRunsData {
|
|
26
32
|
submissions: readonly ThinkSubmissionInspection[];
|
|
@@ -48,6 +54,7 @@ declare function ThinkExecutionWorkbench({
|
|
|
48
54
|
pageSize,
|
|
49
55
|
ref,
|
|
50
56
|
renderRunLink,
|
|
57
|
+
renderRunsLink,
|
|
51
58
|
selectedRun,
|
|
52
59
|
source,
|
|
53
60
|
sourceKey,
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { $ as WarningIcon, H as RefreshIcon, r as ArrowLeftIcon, y as EllipsisIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { buttonVariants } from "../foundations/Button.js";
|
|
4
4
|
import { IconButton } from "../foundations/IconButton.js";
|
|
5
5
|
import { Menu } from "../foundations/Menu.js";
|
|
6
6
|
import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
|
|
7
7
|
import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
|
|
8
8
|
import { EmptyState } from "../foundations/EmptyState.js";
|
|
9
|
-
import {
|
|
9
|
+
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
10
|
+
import { getThinkExecutionRunAccessibleName, getThinkExecutionRunId, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
|
|
10
11
|
import { ThinkExecutionRunSummary } from "./ThinkExecutionStatus.js";
|
|
11
12
|
import { ThinkExecutionDetail } from "./ThinkExecutionDetail.js";
|
|
12
|
-
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
13
13
|
import * as React from "react";
|
|
14
14
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
15
15
|
import { queryOptions, useMutation, useSuspenseQuery } from "@tanstack/react-query";
|
|
@@ -117,7 +117,7 @@ function thinkExecutionRunsQueryOptions(source, sourceKey, pageSize = executionP
|
|
|
117
117
|
* not normalize execution records or own workflow authoring. Its first
|
|
118
118
|
* uncached list read suspends to the consuming route's Suspense boundary.
|
|
119
119
|
*/
|
|
120
|
-
function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPanelPageSize, ref, renderRunLink, selectedRun, source, sourceKey, title = "Execution", ...props }) {
|
|
120
|
+
function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPanelPageSize, ref, renderRunLink, renderRunsLink, selectedRun, source, sourceKey, title = "Execution", ...props }) {
|
|
121
121
|
const runsId = React.useId();
|
|
122
122
|
const runsOptions = thinkExecutionRunsQueryOptions(source, sourceKey, pageSize);
|
|
123
123
|
const runsQueryKey = thinkExecutionRunsScopeQueryKey(sourceKey);
|
|
@@ -146,14 +146,24 @@ function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPa
|
|
|
146
146
|
children: [
|
|
147
147
|
/* @__PURE__ */ jsxs(AppTopBar.Root, {
|
|
148
148
|
className: "think-execution-workbench__header",
|
|
149
|
+
titleAlign: "start",
|
|
149
150
|
"aria-label": "Run controls",
|
|
150
151
|
children: [
|
|
151
|
-
/* @__PURE__ */ jsx(AppTopBar.Leading, { children:
|
|
152
|
+
/* @__PURE__ */ jsx(AppTopBar.Leading, { children: selectedRun ? /* @__PURE__ */ jsx(AppTopBar.Link, {
|
|
153
|
+
label: "Back to runs",
|
|
154
|
+
render: renderRunsLink(),
|
|
155
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, { "aria-hidden": "true" })
|
|
156
|
+
}) : backButton }),
|
|
152
157
|
/* @__PURE__ */ jsx(AppTopBar.Title, { children: /* @__PURE__ */ jsx("h2", {
|
|
153
158
|
className: "think-execution-workbench__title",
|
|
154
159
|
children: title
|
|
155
160
|
}) }),
|
|
156
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ jsxs(AppTopBar.Trailing, { children: [selectedRun ? /* @__PURE__ */ jsx(RunActions, {
|
|
162
|
+
busy: actionIsPending,
|
|
163
|
+
run: selectedRun,
|
|
164
|
+
source,
|
|
165
|
+
onAction: runAction
|
|
166
|
+
}) : null, /* @__PURE__ */ jsx(AppTopBar.Button, {
|
|
157
167
|
label: "Refresh runs",
|
|
158
168
|
disabled: busyAction !== null,
|
|
159
169
|
onClick: () => {
|
|
@@ -161,18 +171,22 @@ function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPa
|
|
|
161
171
|
runsQuery.refetch();
|
|
162
172
|
},
|
|
163
173
|
children: /* @__PURE__ */ jsx(RefreshIcon, {})
|
|
164
|
-
}) })
|
|
174
|
+
})] })
|
|
165
175
|
]
|
|
166
176
|
}),
|
|
167
|
-
error ? /* @__PURE__ */
|
|
177
|
+
error ? /* @__PURE__ */ jsxs("div", {
|
|
168
178
|
className: "think-execution-workbench__error",
|
|
169
179
|
role: "alert",
|
|
170
|
-
children: formatErrorMessage(error)
|
|
180
|
+
children: [/* @__PURE__ */ jsx(WarningIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: formatErrorMessage(error) })]
|
|
171
181
|
}) : null,
|
|
172
|
-
/* @__PURE__ */
|
|
182
|
+
/* @__PURE__ */ jsx("div", {
|
|
173
183
|
className: "think-execution-workbench__content",
|
|
174
184
|
"aria-busy": busyAction !== null,
|
|
175
|
-
children:
|
|
185
|
+
children: selectedRun ? /* @__PURE__ */ jsx("section", {
|
|
186
|
+
className: "think-execution-workbench__detail",
|
|
187
|
+
"aria-label": "Run detail",
|
|
188
|
+
children: /* @__PURE__ */ jsx(ThinkExecutionDetail, { run: selectedRun })
|
|
189
|
+
}) : /* @__PURE__ */ jsxs("section", {
|
|
176
190
|
className: "think-execution-workbench__run-list",
|
|
177
191
|
"aria-labelledby": runsId,
|
|
178
192
|
children: [/* @__PURE__ */ jsx("div", {
|
|
@@ -190,35 +204,26 @@ function ThinkExecutionWorkbench({ backButton, className, pageSize = executionPa
|
|
|
190
204
|
children: runs.map((run) => {
|
|
191
205
|
const id = getThinkExecutionRunId(run);
|
|
192
206
|
const kind = isThinkSubmissionRun(run) ? "submission" : "workflow";
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"data-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
run,
|
|
211
|
-
source,
|
|
212
|
-
onAction: runAction
|
|
213
|
-
})]
|
|
214
|
-
}, `${kind}:${id}`);
|
|
207
|
+
return /* @__PURE__ */ jsxs("li", { children: [/* @__PURE__ */ jsx(NavigationLink, {
|
|
208
|
+
render: renderRunLink(run),
|
|
209
|
+
"data-slot": "button",
|
|
210
|
+
className: buttonVariants({
|
|
211
|
+
variant: "ghost",
|
|
212
|
+
color: "neutral",
|
|
213
|
+
size: "sm",
|
|
214
|
+
className: "think-execution-workbench__run"
|
|
215
|
+
}),
|
|
216
|
+
"aria-label": getThinkExecutionRunAccessibleName(run),
|
|
217
|
+
children: /* @__PURE__ */ jsx(ThinkExecutionRunSummary, { run })
|
|
218
|
+
}), /* @__PURE__ */ jsx(RunActions, {
|
|
219
|
+
busy: actionIsPending,
|
|
220
|
+
run,
|
|
221
|
+
source,
|
|
222
|
+
onAction: runAction
|
|
223
|
+
})] }, `${kind}:${id}`);
|
|
215
224
|
})
|
|
216
225
|
})]
|
|
217
|
-
})
|
|
218
|
-
className: "think-execution-workbench__detail",
|
|
219
|
-
"aria-label": "Run detail",
|
|
220
|
-
children: /* @__PURE__ */ jsx(ThinkExecutionDetail, { run: selectedRun })
|
|
221
|
-
})]
|
|
226
|
+
})
|
|
222
227
|
})
|
|
223
228
|
]
|
|
224
229
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
|
|
2
|
-
import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-
|
|
2
|
+
import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-daY67hFM.js";
|
|
3
3
|
import { McpPluginCatalogProps } from "./McpPluginCatalog.js";
|
|
4
4
|
import { ThinkChatMessagesProps } from "./ThinkChat.js";
|
|
5
|
-
import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-
|
|
5
|
+
import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-k8bpyXqt.js";
|
|
6
6
|
import { ThinkExecutionWorkbenchProps } from "./ThinkExecutionWorkbench.js";
|
|
7
|
+
import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
7
8
|
import { ThinkFullAppView } from "./ThinkFullAppViewSwitch.js";
|
|
8
9
|
import { ThinkThreadStatusSummary } from "./ThinkThreadPicker.js";
|
|
9
|
-
import { ThinkThreadShell } from "./ThinkThreadShell.js";
|
|
10
10
|
import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-BLaFmMrt.js";
|
|
11
11
|
import { WorkspaceSource } from "./Workspace.js";
|
|
12
12
|
import { t as ThinkAgent } from "../../think-agent-Cip5KAPj.js";
|
|
@@ -67,8 +67,10 @@ interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unk
|
|
|
67
67
|
plugins?: McpPluginCatalogProps;
|
|
68
68
|
/** Product-specific actions rendered in the application top bar. */
|
|
69
69
|
appBarActions?: React.ReactNode;
|
|
70
|
-
/** Product-specific navigation
|
|
70
|
+
/** Product-specific navigation that owns the leading slot at every width. */
|
|
71
71
|
appBarLeading?: React.ReactNode;
|
|
72
|
+
/** Product-specific compact navigation; the wide layout keeps its sidebar toggle. */
|
|
73
|
+
compactAppBarLeading?: React.ReactNode;
|
|
72
74
|
/** Active conversation or page title rendered in the application top bar. */
|
|
73
75
|
appBarTitle?: React.ReactNode;
|
|
74
76
|
/** Aggregate thread activity rendered beside the compact thread-title disclosure. */
|
|
@@ -88,8 +90,16 @@ interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unk
|
|
|
88
90
|
* has its own source identity.
|
|
89
91
|
*/
|
|
90
92
|
sourceKey: string;
|
|
91
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Returns an application-authored TanStack Router Link for a run. Together
|
|
95
|
+
* with `renderExecutionRunsLink` this enables the Execution workbench.
|
|
96
|
+
*/
|
|
92
97
|
renderExecutionRunLink?: ThinkExecutionWorkbenchProps["renderRunLink"];
|
|
98
|
+
/**
|
|
99
|
+
* Returns an application-authored TanStack Router Link back to the run
|
|
100
|
+
* list — the way out of a selected run, which replaces the list in place.
|
|
101
|
+
*/
|
|
102
|
+
renderExecutionRunsLink?: ThinkExecutionWorkbenchProps["renderRunsLink"];
|
|
93
103
|
/** Message rendering labels and approval overrides for ThinkChat. */
|
|
94
104
|
messages?: ThinkChatMessagesProps<MessageT>;
|
|
95
105
|
/** Extra workbench panels appended after the enabled built-in panels. */
|
|
@@ -100,7 +110,7 @@ interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unk
|
|
|
100
110
|
* Optional parent-owned thread picker/sidebar rendered beside the selected child app.
|
|
101
111
|
* Use the render form to close the compact drawer after selecting a thread.
|
|
102
112
|
*/
|
|
103
|
-
threadSidebar?: React.ComponentProps<typeof
|
|
113
|
+
threadSidebar?: React.ComponentProps<typeof ResponsiveSidebarShell>["sidebar"];
|
|
104
114
|
/** Whether the thread sidebar is open. Omit for internal state. */
|
|
105
115
|
threadSidebarOpen?: boolean;
|
|
106
116
|
/** Initial thread sidebar state when `threadSidebarOpen` is uncontrolled. */
|
|
@@ -134,6 +144,7 @@ declare function ThinkFullApp<AgentT extends ThinkFullAppAgent<State>, State = u
|
|
|
134
144
|
appBarActions,
|
|
135
145
|
appBarLeading,
|
|
136
146
|
appBarTitle,
|
|
147
|
+
compactAppBarLeading,
|
|
137
148
|
className,
|
|
138
149
|
conversation,
|
|
139
150
|
defaultMobileView,
|
|
@@ -151,6 +162,7 @@ declare function ThinkFullApp<AgentT extends ThinkFullAppAgent<State>, State = u
|
|
|
151
162
|
ref,
|
|
152
163
|
renderAgentToolRunLink,
|
|
153
164
|
renderExecutionRunLink,
|
|
165
|
+
renderExecutionRunsLink,
|
|
154
166
|
selectedExecutionRun,
|
|
155
167
|
showMobileViewSwitch,
|
|
156
168
|
showWorkbenchViewSwitch,
|
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
3
|
-
import { Button } from "../foundations/Button.js";
|
|
2
|
+
import { K as SpinnerIcon, S as FileIcon, Z as TerminalIcon, c as BoxIcon } from "../../icons-CVFSeTJn.js";
|
|
4
3
|
import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
|
|
5
|
-
import { ScrollArea } from "../foundations/ScrollArea.js";
|
|
6
4
|
import { EmptyState } from "../foundations/EmptyState.js";
|
|
5
|
+
import { ResizableSidePanel } from "../general-purpose/ResizableSidePanel.js";
|
|
6
|
+
import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
7
7
|
import { McpPluginCatalog } from "./McpPluginCatalog.js";
|
|
8
8
|
import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../../WorkspaceLink-DtH66bAY.js";
|
|
9
9
|
import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-BES_3Mb-.js";
|
|
10
|
-
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
11
10
|
import { ThinkExecutionWorkbench } from "./ThinkExecutionWorkbench.js";
|
|
12
|
-
import { ResizableSidePanel } from "../general-purpose/ResizableSidePanel.js";
|
|
13
11
|
import { ThinkFullAppViewSwitch } from "./ThinkFullAppViewSwitch.js";
|
|
14
12
|
import { ThinkThreadStatusIndicators } from "./ThinkThreadPicker.js";
|
|
15
|
-
import { ThinkThreadShell } from "./ThinkThreadShell.js";
|
|
16
13
|
import { useWorkspace } from "./Workspace.js";
|
|
17
14
|
import { WorkspaceExplorer } from "./WorkspaceExplorer.js";
|
|
18
15
|
import * as React from "react";
|
|
19
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
20
17
|
//#region src/components/agents-sdk/ThinkFullApp.tsx
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const workbenchPanelCollapseThreshold = 240;
|
|
18
|
+
const conversationDefaultWidth = 393;
|
|
19
|
+
const conversationMinWidth = 320;
|
|
20
|
+
const conversationMaxWidth = 640;
|
|
21
|
+
const conversationKeyboardStep = 24;
|
|
26
22
|
function WorkspacePanel({ config }) {
|
|
27
23
|
const selectedPath = config.navigation.current.destination.kind === "file" ? config.navigation.current.destination.path : null;
|
|
28
24
|
return /* @__PURE__ */ jsx(WorkspaceExplorer, {
|
|
@@ -40,12 +36,6 @@ function WorkspacePanel({ config }) {
|
|
|
40
36
|
actions: config.actions
|
|
41
37
|
});
|
|
42
38
|
}
|
|
43
|
-
function PluginsPanel({ config }) {
|
|
44
|
-
return /* @__PURE__ */ jsxs(ScrollArea.Root, {
|
|
45
|
-
className: "think-full-app__workbench",
|
|
46
|
-
children: [/* @__PURE__ */ jsx(ScrollArea.Viewport, { children: /* @__PURE__ */ jsx(ScrollArea.Content, { children: /* @__PURE__ */ jsx(McpPluginCatalog, { ...config }) }) }), /* @__PURE__ */ jsx(ScrollArea.Scrollbar, { children: /* @__PURE__ */ jsx(ScrollArea.Thumb, {}) })]
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
39
|
/**
|
|
50
40
|
* Approval discovery and background-agent events need a live connection, so they
|
|
51
41
|
* live here rather than in the shell, which also renders before there is one.
|
|
@@ -82,7 +72,7 @@ function ThinkFullAppThreadChat({ agent, agentTools, chat, messages, renderAgent
|
|
|
82
72
|
});
|
|
83
73
|
}
|
|
84
74
|
/** Combines ThinkChat with an optional resizable workbench shell. */
|
|
85
|
-
function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, conversation, defaultMobileView, defaultWorkbenchOpen, defaultWorkbenchView, defaultThreadSidebarOpen, hideAppBarInWorkbench = false, messages, mobileView, onMobileViewChange, onThreadSidebarOpenChange, onWorkbenchOpenChange, onWorkbenchViewChange, plugins, ref, renderAgentToolRunLink, renderExecutionRunLink, selectedExecutionRun = null, showMobileViewSwitch = true, showWorkbenchViewSwitch = true, sourceKey, style, threadSidebar, threadSidebarOpen, threadStatusSummary, workbenchOpen, workbenchPanels, workbenchView, workspace, ...props }) {
|
|
75
|
+
function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, compactAppBarLeading, className, conversation, defaultMobileView, defaultWorkbenchOpen, defaultWorkbenchView, defaultThreadSidebarOpen, hideAppBarInWorkbench = false, messages, mobileView, onMobileViewChange, onThreadSidebarOpenChange, onWorkbenchOpenChange, onWorkbenchViewChange, plugins, ref, renderAgentToolRunLink, renderExecutionRunLink, renderExecutionRunsLink, selectedExecutionRun = null, showMobileViewSwitch = true, showWorkbenchViewSwitch = true, sourceKey, style, threadSidebar, threadSidebarOpen, threadStatusSummary, workbenchOpen, workbenchPanels, workbenchView, workspace, ...props }) {
|
|
86
76
|
const agent = conversation?.agent;
|
|
87
77
|
const appRef = React.useRef(null);
|
|
88
78
|
const workbenchPanelRef = React.useRef(null);
|
|
@@ -115,7 +105,7 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
115
105
|
icon: /* @__PURE__ */ jsx(FileIcon, {}),
|
|
116
106
|
render: () => /* @__PURE__ */ jsx(WorkspacePanel, { config: workspace })
|
|
117
107
|
});
|
|
118
|
-
if (renderExecutionRunLink && agent) availableWorkbenchPanels.push({
|
|
108
|
+
if (renderExecutionRunLink && renderExecutionRunsLink && agent) availableWorkbenchPanels.push({
|
|
119
109
|
id: "execution",
|
|
120
110
|
label: "Execution",
|
|
121
111
|
icon: /* @__PURE__ */ jsx(TerminalIcon, {}),
|
|
@@ -133,7 +123,8 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
133
123
|
sourceKey,
|
|
134
124
|
title: "Execution",
|
|
135
125
|
selectedRun: selectedExecutionRun,
|
|
136
|
-
renderRunLink: renderExecutionRunLink
|
|
126
|
+
renderRunLink: renderExecutionRunLink,
|
|
127
|
+
renderRunsLink: renderExecutionRunsLink
|
|
137
128
|
})
|
|
138
129
|
})
|
|
139
130
|
});
|
|
@@ -141,7 +132,7 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
141
132
|
id: "plugins",
|
|
142
133
|
label: "Plugins",
|
|
143
134
|
icon: /* @__PURE__ */ jsx(BoxIcon, {}),
|
|
144
|
-
render: () => /* @__PURE__ */ jsx(
|
|
135
|
+
render: () => /* @__PURE__ */ jsx(McpPluginCatalog, { ...plugins })
|
|
145
136
|
});
|
|
146
137
|
if (workbenchPanels) availableWorkbenchPanels.push(...workbenchPanels);
|
|
147
138
|
const selectedPanel = availableWorkbenchPanels.find((panel) => panel.id === requestedWorkbenchView) ?? availableWorkbenchPanels[0];
|
|
@@ -152,8 +143,9 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
152
143
|
const activeMobileView = hasWorkbench ? requestedMobileView : "chat";
|
|
153
144
|
const shouldShowWorkbenchViewSwitch = showWorkbenchViewSwitch && availableWorkbenchPanels.length > 0;
|
|
154
145
|
const workbenchViews = availableWorkbenchPanels;
|
|
155
|
-
const
|
|
156
|
-
const
|
|
146
|
+
const hasApplicationChrome = Boolean(appBarActions || appBarLeading || compactAppBarLeading || appBarTitle || threadSidebar);
|
|
147
|
+
const shouldShowMobileViewSwitch = Boolean(selectedPanel) && showMobileViewSwitch;
|
|
148
|
+
const hasAppBarRow = hasApplicationChrome || shouldShowWorkbenchViewSwitch || shouldShowMobileViewSwitch;
|
|
157
149
|
React.useLayoutEffect(() => {
|
|
158
150
|
const pendingFocus = pendingPanelFocusRef.current;
|
|
159
151
|
if (!pendingFocus || pendingFocus.id !== activeWorkbenchView) return;
|
|
@@ -170,135 +162,95 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
170
162
|
} : null;
|
|
171
163
|
React.startTransition(() => setWorkbenchView(next));
|
|
172
164
|
};
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
if (!next) {
|
|
211
|
-
setWorkbenchOpen(false);
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
updateWorkbenchPanel(next);
|
|
215
|
-
setWorkbenchOpen(true);
|
|
216
|
-
});
|
|
217
|
-
},
|
|
218
|
-
"aria-label": "Workbench views"
|
|
219
|
-
}) : null,
|
|
220
|
-
selectedPanel && showMobileViewSwitch ? /* @__PURE__ */ jsx(ThinkFullAppViewSwitch, {
|
|
221
|
-
className: "think-full-app__mobile-view-switch",
|
|
222
|
-
views: workbenchViews,
|
|
223
|
-
value: activeMobileView === "workbench" ? activeWorkbenchView : void 0,
|
|
224
|
-
allowEmpty: true,
|
|
225
|
-
onValueChange: (next) => {
|
|
226
|
-
updateAppView(() => {
|
|
227
|
-
if (!next) {
|
|
228
|
-
setMobileView("chat");
|
|
229
|
-
return;
|
|
230
|
-
}
|
|
231
|
-
setWorkbenchView(next);
|
|
232
|
-
setMobileView("workbench");
|
|
233
|
-
});
|
|
234
|
-
},
|
|
235
|
-
"aria-label": "App views"
|
|
236
|
-
}) : null
|
|
237
|
-
] })
|
|
238
|
-
]
|
|
239
|
-
});
|
|
165
|
+
const appBarTrailing = appBarActions || shouldShowWorkbenchViewSwitch || shouldShowMobileViewSwitch ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
166
|
+
appBarActions,
|
|
167
|
+
shouldShowWorkbenchViewSwitch ? /* @__PURE__ */ jsx(ThinkFullAppViewSwitch, {
|
|
168
|
+
className: "think-full-app__workbench-view-switch",
|
|
169
|
+
views: workbenchViews,
|
|
170
|
+
value: activeWorkbenchView,
|
|
171
|
+
allowEmpty: true,
|
|
172
|
+
onValueChange: (next) => {
|
|
173
|
+
updateAppView(() => {
|
|
174
|
+
if (!next) {
|
|
175
|
+
setWorkbenchOpen(false);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
updateWorkbenchPanel(next);
|
|
179
|
+
setWorkbenchOpen(true);
|
|
180
|
+
});
|
|
181
|
+
},
|
|
182
|
+
"aria-label": "Workbench views"
|
|
183
|
+
}) : null,
|
|
184
|
+
shouldShowMobileViewSwitch ? /* @__PURE__ */ jsx(ThinkFullAppViewSwitch, {
|
|
185
|
+
className: "think-full-app__mobile-view-switch",
|
|
186
|
+
views: workbenchViews,
|
|
187
|
+
value: activeMobileView === "workbench" ? activeWorkbenchView : void 0,
|
|
188
|
+
allowEmpty: true,
|
|
189
|
+
onValueChange: (next) => {
|
|
190
|
+
updateAppView(() => {
|
|
191
|
+
if (!next) {
|
|
192
|
+
setMobileView("chat");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
setWorkbenchView(next);
|
|
196
|
+
setMobileView("workbench");
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
"aria-label": "App views"
|
|
200
|
+
}) : null
|
|
201
|
+
] }) : void 0;
|
|
240
202
|
const appContent = /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
|
|
241
203
|
ref: mergeRefs(appRef, ref),
|
|
242
204
|
className: cx("think-full-app", className),
|
|
243
205
|
label: "workbench",
|
|
244
|
-
side: "
|
|
245
|
-
defaultSize:
|
|
246
|
-
minSize:
|
|
247
|
-
maxSize:
|
|
248
|
-
keyboardStep:
|
|
249
|
-
collapseThreshold: workbenchPanelCollapseThreshold,
|
|
250
|
-
onCollapse: () => setWorkbenchOpen(false),
|
|
251
|
-
"data-has-thread-sidebar": threadSidebar ? "true" : "false",
|
|
206
|
+
side: "start",
|
|
207
|
+
defaultSize: conversationDefaultWidth,
|
|
208
|
+
minSize: conversationMinWidth,
|
|
209
|
+
maxSize: conversationMaxWidth,
|
|
210
|
+
keyboardStep: conversationKeyboardStep,
|
|
252
211
|
"data-has-workbench": hasWorkbench ? "true" : "false",
|
|
253
|
-
"data-has-workbench-topbar": hasAppBarRow ? "true" : "false",
|
|
254
212
|
"data-mobile-view": activeMobileView,
|
|
255
213
|
style,
|
|
256
214
|
...props,
|
|
257
|
-
children: [
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
"data-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
"
|
|
266
|
-
"aria-label": "Chat",
|
|
215
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
216
|
+
className: "think-full-app__view-scope",
|
|
217
|
+
"data-mobile-view": activeMobileView,
|
|
218
|
+
children: [/* @__PURE__ */ jsx("section", {
|
|
219
|
+
className: "think-full-app__chat-surface",
|
|
220
|
+
"data-workspace-restoration-scope": "chat",
|
|
221
|
+
"aria-label": "Chat",
|
|
222
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
223
|
+
className: "think-full-app__chat",
|
|
267
224
|
children: /* @__PURE__ */ jsx("div", {
|
|
268
|
-
className: "think-full-app__chat",
|
|
269
|
-
children: /* @__PURE__ */ jsx(
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
...messages,
|
|
278
|
-
renderAgentToolRunLink
|
|
279
|
-
})
|
|
225
|
+
className: "think-full-app__chat-inner",
|
|
226
|
+
children: conversation ? /* @__PURE__ */ jsx(ThinkFullAppThreadChat, {
|
|
227
|
+
...conversation,
|
|
228
|
+
messages,
|
|
229
|
+
renderAgentToolRunLink,
|
|
230
|
+
sourceKey
|
|
231
|
+
}) : /* @__PURE__ */ jsx(ThinkChat.Messages, {
|
|
232
|
+
...messages,
|
|
233
|
+
renderAgentToolRunLink
|
|
280
234
|
})
|
|
281
235
|
})
|
|
282
|
-
})
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
})
|
|
236
|
+
})
|
|
237
|
+
}), hasAvailableWorkbench ? /* @__PURE__ */ jsx("aside", {
|
|
238
|
+
className: "think-full-app__aside",
|
|
239
|
+
"aria-label": "Workbench",
|
|
240
|
+
children: activePanel ? /* @__PURE__ */ jsx("div", {
|
|
241
|
+
className: "think-full-app__workbench-slot",
|
|
242
|
+
children: /* @__PURE__ */ jsx(React.ViewTransition, {
|
|
243
|
+
default: "sigvelo-layout-transition",
|
|
244
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
245
|
+
ref: workbenchPanelRef,
|
|
246
|
+
className: "think-full-app__workbench-panel",
|
|
247
|
+
tabIndex: -1,
|
|
248
|
+
children: activePanel.render()
|
|
296
249
|
})
|
|
297
250
|
})
|
|
298
|
-
}) : null
|
|
299
|
-
})
|
|
300
|
-
|
|
301
|
-
]
|
|
251
|
+
}) : null
|
|
252
|
+
}) : null]
|
|
253
|
+
}), activePanel ? /* @__PURE__ */ jsx(ResizableSidePanel.Handle, { className: "think-full-app__resizer" }) : null]
|
|
302
254
|
});
|
|
303
255
|
const app = workspace ? /* @__PURE__ */ jsx(WorkspaceNavigationProvider, {
|
|
304
256
|
root: workspace.root ?? "/",
|
|
@@ -313,14 +265,30 @@ function ThinkFullApp({ appBarActions, appBarLeading, appBarTitle, className, co
|
|
|
313
265
|
scope: "chat"
|
|
314
266
|
}), appContent] })
|
|
315
267
|
}) : appContent;
|
|
316
|
-
|
|
317
|
-
|
|
268
|
+
return /* @__PURE__ */ jsx(ResponsiveSidebarShell, {
|
|
269
|
+
className: "think-full-app-shell",
|
|
318
270
|
sidebar: threadSidebar,
|
|
271
|
+
sidebarLabel: "threads",
|
|
319
272
|
sidebarOpen: threadSidebarOpen,
|
|
320
273
|
defaultSidebarOpen: defaultThreadSidebarOpen,
|
|
321
274
|
onSidebarOpenChange: onThreadSidebarOpenChange,
|
|
322
|
-
|
|
323
|
-
|
|
275
|
+
showMainLabel: "Show selected thread",
|
|
276
|
+
topBarHidden: !hasAppBarRow,
|
|
277
|
+
topBarProps: {
|
|
278
|
+
className: "think-full-app__app-bar",
|
|
279
|
+
"aria-label": "Workbench controls",
|
|
280
|
+
"data-app-chrome": hasApplicationChrome || shouldShowWorkbenchViewSwitch ? "true" : "false",
|
|
281
|
+
"data-mobile-view": activeMobileView,
|
|
282
|
+
"data-hide-in-workbench": hideAppBarInWorkbench ? "" : void 0
|
|
283
|
+
},
|
|
284
|
+
topBarLeading: appBarLeading,
|
|
285
|
+
compactTopBarLeading: compactAppBarLeading,
|
|
286
|
+
topBarTitle: appBarTitle,
|
|
287
|
+
compactTitleTrigger: threadSidebar ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("span", {
|
|
288
|
+
className: "sigvelo-truncate",
|
|
289
|
+
children: appBarTitle ?? "Threads"
|
|
290
|
+
}), threadStatusSummary ? /* @__PURE__ */ jsx(ThinkThreadStatusIndicators, { summary: threadStatusSummary }) : null] }) : void 0,
|
|
291
|
+
topBarTrailing: appBarTrailing,
|
|
324
292
|
children: app
|
|
325
293
|
});
|
|
326
294
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { B as PlusIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { buttonVariants } from "../foundations/Button.js";
|
|
4
4
|
import { Tooltip } from "../foundations/Tooltip.js";
|
|
5
5
|
import { t as capitalize } from "../../format-DB2mX9DA.js";
|