@mcp-b/react-components 0.51.2 → 0.52.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/{CodeBlock-g8sADidM.js → CodeBlock-Bl-q7wMc.js} +1 -0
- package/dist/{CodeBlock--r6GS8YV.d.ts → CodeBlock-DJ99TQWy.d.ts} +1 -1
- package/dist/EmployeeChrome-C8eTGJWn.d.ts +231 -0
- package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
- package/dist/{ManagerOffice-D-7SOJ4x.js → ManagerOffice-CMJ7laGe.js} +14 -9
- package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
- package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
- package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
- package/dist/{SetupChecklist-Btmy3-_C.js → SetupChecklist-BiWQkKEq.js} +5 -4
- package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
- package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
- package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
- package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
- package/dist/{WorkspaceFileView-DYPtRVpM.js → WorkspaceFileView-DXgTljKV.js} +2 -1
- package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
- package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
- package/dist/assets/sigvelo-logo.svg +54 -0
- package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
- package/dist/components/agents-sdk/AgentChat.js +4 -8
- package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
- package/dist/components/agents-sdk/EmployeeApp.js +47 -34
- package/dist/components/agents-sdk/EmployeeChat.d.ts +28 -8
- package/dist/components/agents-sdk/EmployeeChat.js +32 -4
- package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
- package/dist/components/agents-sdk/EmployeeChrome.js +101 -102
- package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
- package/dist/components/agents-sdk/EmployeeSchedules.js +1 -2
- package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
- package/dist/components/agents-sdk/EmployeeStartScreen.js +21 -14
- package/dist/components/agents-sdk/ManagerAccountActions.js +0 -1
- package/dist/components/agents-sdk/ManagerOffice.js +1 -2
- package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
- package/dist/components/agents-sdk/ManagerOfficeScreens.js +30 -13
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
- package/dist/components/agents-sdk/McpPluginCatalog.js +3 -3
- package/dist/components/agents-sdk/McpServerPicker.js +3 -3
- package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
- package/dist/components/agents-sdk/SubagentRunPanel.js +66 -46
- package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +4 -11
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
- package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
- package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
- package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkThreadPicker.js +32 -19
- package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
- package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
- package/dist/components/agents-sdk/Workspace.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.js +2 -0
- package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceExecution.js +7 -4
- package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
- package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
- package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
- package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
- package/dist/components/agents-sdk/WorkspaceProject.js +3 -1
- package/dist/components/agents-sdk/WorkspaceUserScript.js +3 -1
- package/dist/components/ai-sdk/Artifact.d.ts +1 -1
- package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
- package/dist/components/ai-sdk/CodeBlock.js +1 -1
- package/dist/components/ai-sdk/Conversation.d.ts +1 -1
- package/dist/components/ai-sdk/Message.d.ts +1 -1
- package/dist/components/ai-sdk/PromptInput.js +1 -1
- package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
- package/dist/components/extension/ChatGptSignInScreen.js +60 -185
- package/dist/components/extension/CodexModelSelector.js +2 -6
- package/dist/components/foundations/IconButton.d.ts +1 -1
- package/dist/components/foundations/IconButton.js +7 -4
- package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
- package/dist/components/general-purpose/AccountSignInDialog.js +12 -4
- package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
- package/dist/components/general-purpose/BrandLoading.js +25 -0
- package/dist/components/general-purpose/Commit.d.ts +1 -1
- package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +58 -26
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
- package/dist/components/general-purpose/StatusScreen.js +27 -3
- package/dist/components/general-purpose/Terminal.d.ts +2 -2
- package/dist/components/general-purpose/WebPreview.d.ts +1 -1
- package/dist/components/nanites/AgentConnection.js +1 -1
- package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
- package/dist/styles/activity.css +2 -2
- package/dist/styles/agent-chat.css +6 -105
- package/dist/styles/app-root.css +9 -0
- package/dist/styles/app-top-bar.css +10 -4
- package/dist/styles/avatar.css +2 -2
- package/dist/styles/base.css +6 -2
- package/dist/styles/brand-loading.css +58 -0
- package/dist/styles/brand.test.ts +158 -0
- package/dist/styles/browser-control-overlay.css +22 -0
- package/dist/styles/button.css +22 -1
- package/dist/styles/chatgpt-sign-in-screen.css +111 -225
- package/dist/styles/code-block.css +5 -0
- package/dist/styles/codex-model-selector.css +2 -12
- package/dist/styles/description-list.css +9 -2
- package/dist/styles/employee-app.css +19 -1
- package/dist/styles/employee-chrome.css +35 -5
- package/dist/styles/file-tree.css +15 -2
- package/dist/styles/index.css +1 -0
- package/dist/styles/manager-office.css +80 -55
- package/dist/styles/manager-work.css +5 -11
- package/dist/styles/mcp-plugin-catalog.css +29 -34
- package/dist/styles/mcp-server-picker.css +13 -5
- package/dist/styles/prompt-input.css +3 -13
- package/dist/styles/queue.css +1 -1
- package/dist/styles/recipes.css +9 -2
- package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
- package/dist/styles/responsive-sidebar-shell.css +70 -25
- package/dist/styles/search-field.css +8 -6
- package/dist/styles/subagent-run.css +81 -0
- package/dist/styles/think-execution-workbench.css +0 -17
- package/dist/styles/think-full-app.css +11 -4
- package/dist/styles/think-thread-picker.css +16 -38
- package/dist/styles/workspace-concepts.css +29 -2
- package/dist/styles/workspace-explorer.css +6 -48
- package/dist/utils/structured-code.d.ts +1 -1
- package/package.json +2 -2
- package/dist/styles/extension-status.css +0 -46
|
@@ -1,94 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { o as McpServerCard } from "../../mcp-server-catalog-D9p4gGeJ.js";
|
|
3
|
-
import { r as McpConnectorFormValues } from "../../McpConnectorForm--HB0MEGC.js";
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
import { MCPServersState } from "agents";
|
|
6
|
-
|
|
7
|
-
//#region src/components/agents-sdk/McpPluginCatalog.d.ts
|
|
8
|
-
/** Optional plugin-specific copy layered over the canonical MCP server card. */
|
|
9
|
-
interface McpPluginDetails {
|
|
10
|
-
developerName?: string;
|
|
11
|
-
marketplaceName?: string;
|
|
12
|
-
longDescription?: string;
|
|
13
|
-
capabilities?: readonly string[];
|
|
14
|
-
skills?: readonly string[];
|
|
15
|
-
}
|
|
16
|
-
interface McpPluginCatalogProps extends Omit<React.HTMLAttributes<HTMLElement>, "onSelect"> {
|
|
17
|
-
/** Canonical connector cards. The directory does not create a second plugin registry. */
|
|
18
|
-
servers: readonly McpServerCard[];
|
|
19
|
-
/** Upstream Agents MCP state used to project connected and recovery states. */
|
|
20
|
-
mcp?: MCPServersState;
|
|
21
|
-
/** Optional plugin metadata keyed by the canonical server ID. */
|
|
22
|
-
detailsByServerId?: Readonly<Record<string, McpPluginDetails | undefined>>;
|
|
23
|
-
/** Server IDs promoted into the Featured section, in display order. */
|
|
24
|
-
featuredServerIds?: readonly string[];
|
|
25
|
-
/** Host product name paired with the plugin in the connection dialog. */
|
|
26
|
-
brandName?: string;
|
|
27
|
-
/** Host product mark paired with the plugin in the connection dialog. */
|
|
28
|
-
brandLogo?: React.ReactNode;
|
|
29
|
-
/** Product-authored trust and data-sharing copy. Pass null to omit it. */
|
|
30
|
-
disclosure?: React.ReactNode;
|
|
31
|
-
/** Starts or recovers the existing MCP connection path. */
|
|
32
|
-
onConnect?: (server: McpServerCard) => void | Promise<void>;
|
|
33
|
-
/** Removes the exact upstream MCP entry. */
|
|
34
|
-
onDisconnect?: (serverId: string) => void | Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* Connects a user-supplied MCP server. Providing it puts the "Custom
|
|
37
|
-
* plugin" action in the bar, opening the shared connector setup dialog.
|
|
38
|
-
*/
|
|
39
|
-
onAddCustom?: (values: McpConnectorFormValues) => void | Promise<void>;
|
|
40
|
-
/** Accessible name only — the hosting tab or icon is the visible title. */
|
|
41
|
-
heading?: React.ReactNode;
|
|
42
|
-
/** Accessible label and placeholder for the plugin filter. */
|
|
43
|
-
searchLabel?: string;
|
|
44
|
-
/** Content shown when no plugins match the current filter. */
|
|
45
|
-
emptyMessage?: React.ReactNode;
|
|
46
|
-
}
|
|
47
|
-
interface McpPluginDetailsDialogProps {
|
|
48
|
-
/** Selected canonical server card. Passing null closes the dialog. */
|
|
49
|
-
server: McpServerCard | null;
|
|
50
|
-
details?: McpPluginDetails;
|
|
51
|
-
mcp?: MCPServersState;
|
|
52
|
-
brandName?: string;
|
|
53
|
-
brandLogo?: React.ReactNode;
|
|
54
|
-
disclosure?: React.ReactNode;
|
|
55
|
-
onConnect?: (server: McpServerCard) => void | Promise<void>;
|
|
56
|
-
onDisconnect?: (serverId: string) => void | Promise<void>;
|
|
57
|
-
onOpenChange: NonNullable<DialogProps["onOpenChange"]>;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Searchable plugin directory backed by the same MCP cards and live Agents
|
|
61
|
-
* state as {@link McpServerPicker}. Selecting a row opens the shared details
|
|
62
|
-
* dialog; connecting still delegates to the host's existing MCP/OAuth path.
|
|
63
|
-
*/
|
|
64
|
-
declare function McpPluginCatalog({
|
|
65
|
-
servers,
|
|
66
|
-
mcp,
|
|
67
|
-
detailsByServerId,
|
|
68
|
-
featuredServerIds,
|
|
69
|
-
brandName,
|
|
70
|
-
brandLogo,
|
|
71
|
-
disclosure,
|
|
72
|
-
onConnect,
|
|
73
|
-
onDisconnect,
|
|
74
|
-
onAddCustom,
|
|
75
|
-
heading,
|
|
76
|
-
searchLabel,
|
|
77
|
-
emptyMessage,
|
|
78
|
-
className,
|
|
79
|
-
...props
|
|
80
|
-
}: McpPluginCatalogProps): React.JSX.Element;
|
|
81
|
-
/** Reference-derived plugin detail surface without a parallel install state. */
|
|
82
|
-
declare function McpPluginDetailsDialog({
|
|
83
|
-
server,
|
|
84
|
-
details,
|
|
85
|
-
mcp,
|
|
86
|
-
brandName,
|
|
87
|
-
brandLogo,
|
|
88
|
-
disclosure,
|
|
89
|
-
onConnect,
|
|
90
|
-
onDisconnect,
|
|
91
|
-
onOpenChange
|
|
92
|
-
}: McpPluginDetailsDialogProps): React.JSX.Element;
|
|
93
|
-
//#endregion
|
|
1
|
+
import { a as McpPluginDetailsDialogProps, i as McpPluginDetailsDialog, n as McpPluginCatalogProps, r as McpPluginDetails, t as McpPluginCatalog } from "../../McpPluginCatalog-DNeHDrts.js";
|
|
94
2
|
export { McpPluginCatalog, McpPluginCatalogProps, McpPluginDetails, McpPluginDetailsDialog, McpPluginDetailsDialogProps };
|
|
@@ -35,7 +35,7 @@ function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds =
|
|
|
35
35
|
className: "mcp-plugin-catalog__header",
|
|
36
36
|
children: [
|
|
37
37
|
/* @__PURE__ */ jsx("h1", {
|
|
38
|
-
className: "
|
|
38
|
+
className: "mcp-plugin-catalog__title",
|
|
39
39
|
children: heading
|
|
40
40
|
}),
|
|
41
41
|
/* @__PURE__ */ jsxs(SearchField.Root, {
|
|
@@ -131,7 +131,7 @@ function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds =
|
|
|
131
131
|
function McpPluginDetailsDialog({ server, details, mcp, brandName = "your AI", brandLogo = /* @__PURE__ */ jsx("img", {
|
|
132
132
|
alt: "",
|
|
133
133
|
className: "sigvelo-brand-mark sigvelo-brand-mark--colorful",
|
|
134
|
-
src: new URL("../../assets/
|
|
134
|
+
src: new URL("../../assets/sigvelo-logo.svg", import.meta.url).href,
|
|
135
135
|
width: 128,
|
|
136
136
|
height: 128
|
|
137
137
|
}), disclosure = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -227,7 +227,7 @@ function McpPluginCard({ server, details, mcp, onSelect }) {
|
|
|
227
227
|
onClick: onSelect,
|
|
228
228
|
children: [/* @__PURE__ */ jsx(McpServerIcon, {
|
|
229
229
|
server,
|
|
230
|
-
size: "
|
|
230
|
+
size: "sm"
|
|
231
231
|
}), /* @__PURE__ */ jsxs("span", {
|
|
232
232
|
className: "mcp-plugin-catalog__card-copy",
|
|
233
233
|
children: [/* @__PURE__ */ jsx("span", {
|
|
@@ -30,7 +30,7 @@ function McpServerSetupDialog({ server, defaults, onOpenChange, onSubmit, redire
|
|
|
30
30
|
open: server !== null,
|
|
31
31
|
onOpenChange,
|
|
32
32
|
children: /* @__PURE__ */ jsxs(Dialog.Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, {}), /* @__PURE__ */ jsx(Dialog.Viewport, { children: /* @__PURE__ */ jsxs(Dialog.Popup, { children: [
|
|
33
|
-
/* @__PURE__ */ jsxs(Dialog.Header, { children: [/* @__PURE__ */ jsx(Dialog.Title, { children: server ? server.name.endsWith("MCP") ? server.name : `${server.name} MCP` : "
|
|
33
|
+
/* @__PURE__ */ jsxs(Dialog.Header, { children: [/* @__PURE__ */ jsx(Dialog.Title, { children: server ? server.name.endsWith("MCP") ? server.name : `${server.name} MCP` : "Plugins" }), /* @__PURE__ */ jsx(Dialog.Description, { children: server?.manualSetup?.description ?? "Connect a remote MCP server the model can call." })] }),
|
|
34
34
|
server?.manualSetup?.links.length ? /* @__PURE__ */ jsx("div", {
|
|
35
35
|
className: "mcp-server-setup-dialog__links",
|
|
36
36
|
children: server.manualSetup.links.map((link) => /* @__PURE__ */ jsx("a", {
|
|
@@ -262,14 +262,14 @@ function getPickerRows(servers, mcp) {
|
|
|
262
262
|
function groupPickerRows(rows) {
|
|
263
263
|
const groups = /* @__PURE__ */ new Map();
|
|
264
264
|
for (const row of rows) {
|
|
265
|
-
const key = row.projection.connectionKind === "connected" ? "Connected" : row.server.category === "Auto" ? "
|
|
265
|
+
const key = row.projection.connectionKind === "connected" ? "Connected" : row.server.category === "Auto" ? "Plugins" : row.server.category === "Manual" ? "Manual setup" : row.server.category ?? "Other";
|
|
266
266
|
const group = groups.get(key) ?? [];
|
|
267
267
|
group.push(row);
|
|
268
268
|
groups.set(key, group);
|
|
269
269
|
}
|
|
270
270
|
const order = [
|
|
271
271
|
"Connected",
|
|
272
|
-
"
|
|
272
|
+
"Plugins",
|
|
273
273
|
"Manual setup",
|
|
274
274
|
"Other"
|
|
275
275
|
];
|
|
@@ -15,6 +15,8 @@ interface SubagentRunCollectionState {
|
|
|
15
15
|
error?: string;
|
|
16
16
|
}
|
|
17
17
|
interface SubagentRunPanelProviderProps {
|
|
18
|
+
/** Conversation identity; changing it resets transient controls without remounting children. */
|
|
19
|
+
scopeKey: string;
|
|
18
20
|
/** The one upstream event-hook value from the parent connection. */
|
|
19
21
|
agentTools: AgentToolEventsValue<AgentToolRunPart>;
|
|
20
22
|
collection: SubagentRunCollectionState;
|
|
@@ -39,6 +41,7 @@ interface SubagentRunPanelValue extends Pick<SubagentRunPanelProviderProps, "age
|
|
|
39
41
|
}
|
|
40
42
|
/** A thread's transient controls/disclosure state; run facts remain in the SDK value. */
|
|
41
43
|
declare function SubagentRunPanelProvider({
|
|
44
|
+
scopeKey,
|
|
42
45
|
agentTools,
|
|
43
46
|
collection,
|
|
44
47
|
mayExecute,
|
|
@@ -10,41 +10,55 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
10
10
|
//#region src/components/agents-sdk/SubagentRunPanel.tsx
|
|
11
11
|
const IDLE = { pending: false };
|
|
12
12
|
const SubagentRunPanelContext = React.createContext(null);
|
|
13
|
+
function createPanelState(scopeKey, selectedRunId) {
|
|
14
|
+
return {
|
|
15
|
+
scopeKey,
|
|
16
|
+
open: true,
|
|
17
|
+
hiddenCompleted: /* @__PURE__ */ new Set(),
|
|
18
|
+
commands: {},
|
|
19
|
+
reportDisclosures: createExpansionStore(),
|
|
20
|
+
inFlight: /* @__PURE__ */ new Map(),
|
|
21
|
+
restoreFocusRunId: { current: selectedRunId }
|
|
22
|
+
};
|
|
23
|
+
}
|
|
13
24
|
/** A thread's transient controls/disclosure state; run facts remain in the SDK value. */
|
|
14
|
-
function SubagentRunPanelProvider({ agentTools, collection, mayExecute, selectedRunId, parentRunning, onStopCurrentWork, onStopRun, children }) {
|
|
15
|
-
const [
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
function SubagentRunPanelProvider({ scopeKey, agentTools, collection, mayExecute, selectedRunId, parentRunning, onStopCurrentWork, onStopRun, children }) {
|
|
26
|
+
const [state, setState] = React.useState(() => createPanelState(scopeKey, selectedRunId));
|
|
27
|
+
if (state.scopeKey !== scopeKey) setState(createPanelState(scopeKey, selectedRunId));
|
|
28
|
+
const { open, hiddenCompleted, commands, reportDisclosures, inFlight, restoreFocusRunId } = state;
|
|
29
|
+
const setOpen = React.useCallback((open) => setState((current) => current.inFlight === inFlight ? {
|
|
30
|
+
...current,
|
|
31
|
+
open
|
|
32
|
+
} : current), [inFlight]);
|
|
33
|
+
const setHiddenCompleted = React.useCallback((hiddenCompleted) => setState((current) => current.inFlight === inFlight ? {
|
|
34
|
+
...current,
|
|
35
|
+
hiddenCompleted
|
|
36
|
+
} : current), [inFlight]);
|
|
21
37
|
React.useLayoutEffect(() => {
|
|
22
38
|
if (selectedRunId) restoreFocusRunId.current = selectedRunId;
|
|
23
|
-
}, [selectedRunId]);
|
|
39
|
+
}, [restoreFocusRunId, selectedRunId]);
|
|
24
40
|
const execute = React.useCallback((key, command) => {
|
|
25
|
-
const pending = inFlight.
|
|
41
|
+
const pending = inFlight.get(key);
|
|
26
42
|
if (pending) return pending;
|
|
27
|
-
|
|
43
|
+
const setCommand = (command) => setState((current) => current.inFlight === inFlight ? {
|
|
28
44
|
...current,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
commands: {
|
|
46
|
+
...current.commands,
|
|
47
|
+
[key]: command
|
|
48
|
+
}
|
|
49
|
+
} : current);
|
|
50
|
+
setCommand({ pending: true });
|
|
51
|
+
const operation = Promise.resolve().then(command).then(() => setCommand(IDLE), (cause) => {
|
|
35
52
|
const error = cause instanceof Error ? cause.message : "Stop could not be confirmed. Try again.";
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
error
|
|
41
|
-
}
|
|
42
|
-
}));
|
|
53
|
+
setCommand({
|
|
54
|
+
pending: false,
|
|
55
|
+
error
|
|
56
|
+
});
|
|
43
57
|
throw cause;
|
|
44
|
-
}).finally(() => inFlight.
|
|
45
|
-
inFlight.
|
|
58
|
+
}).finally(() => inFlight.delete(key));
|
|
59
|
+
inFlight.set(key, operation);
|
|
46
60
|
return operation;
|
|
47
|
-
}, []);
|
|
61
|
+
}, [inFlight]);
|
|
48
62
|
const stopCurrentWork = React.useCallback(() => execute("current-work", onStopCurrentWork), [execute, onStopCurrentWork]);
|
|
49
63
|
const stopRun = React.useCallback((id) => execute(id, () => onStopRun(id)), [execute, onStopRun]);
|
|
50
64
|
const value = React.useMemo(() => ({
|
|
@@ -71,6 +85,9 @@ function SubagentRunPanelProvider({ agentTools, collection, mayExecute, selected
|
|
|
71
85
|
open,
|
|
72
86
|
hiddenCompleted,
|
|
73
87
|
reportDisclosures,
|
|
88
|
+
restoreFocusRunId,
|
|
89
|
+
setOpen,
|
|
90
|
+
setHiddenCompleted,
|
|
74
91
|
commands,
|
|
75
92
|
stopCurrentWork,
|
|
76
93
|
stopRun
|
|
@@ -135,14 +152,14 @@ function delegatedWorkLabel(active, completed) {
|
|
|
135
152
|
const counts = [active ? `${active} active` : null, completed ? `${completed} finished` : null].filter(Boolean).join(", ");
|
|
136
153
|
return `Delegated work${counts ? `, ${counts}` : ""}`;
|
|
137
154
|
}
|
|
138
|
-
function SubagentRunPanelControls({ panel, active
|
|
155
|
+
function SubagentRunPanelControls({ panel, active }) {
|
|
139
156
|
const queue = useOptionalAgentChatQueue();
|
|
140
157
|
const stop = panel.commands["current-work"] ?? IDLE;
|
|
141
158
|
const canStop = panel.parentRunning || active > 1 || panel.collection.status !== "ready";
|
|
142
|
-
if (!canStop && !stop.error && !stop.pending
|
|
143
|
-
return /* @__PURE__ */
|
|
159
|
+
if (!canStop && !stop.error && !stop.pending) return null;
|
|
160
|
+
return /* @__PURE__ */ jsx(QueueSectionActions, {
|
|
144
161
|
"aria-label": "Delegated work controls",
|
|
145
|
-
children:
|
|
162
|
+
children: canStop || stop.error || stop.pending ? /* @__PURE__ */ jsx(Button, {
|
|
146
163
|
size: "xs",
|
|
147
164
|
variant: "ghost",
|
|
148
165
|
color: "neutral",
|
|
@@ -154,13 +171,7 @@ function SubagentRunPanelControls({ panel, active, completed }) {
|
|
|
154
171
|
panel.stopCurrentWork().catch(() => void 0);
|
|
155
172
|
},
|
|
156
173
|
children: stop.pending ? "Stopping current work…" : "Stop current work"
|
|
157
|
-
}) : null
|
|
158
|
-
size: "xs",
|
|
159
|
-
variant: "ghost",
|
|
160
|
-
color: "neutral",
|
|
161
|
-
onClick: () => panel.setHiddenCompleted(panel.hiddenCompleted.size ? /* @__PURE__ */ new Set() : new Set(completed.map((run) => run.runId))),
|
|
162
|
-
children: panel.hiddenCompleted.size ? `Show completed (${completed.length})` : "Hide completed"
|
|
163
|
-
}) : null]
|
|
174
|
+
}) : null
|
|
164
175
|
});
|
|
165
176
|
}
|
|
166
177
|
function SubagentRunRow({ panel, run, renderRunLink }) {
|
|
@@ -206,13 +217,23 @@ function SubagentRunPanelContent({ panel, renderRunLink }) {
|
|
|
206
217
|
onOpenChange: panel.setOpen,
|
|
207
218
|
onFocusCapture: focus.onFocusCapture,
|
|
208
219
|
onBlurCapture: focus.onBlurCapture,
|
|
209
|
-
children: [/* @__PURE__ */
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
children:
|
|
215
|
-
|
|
220
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
221
|
+
className: "subagent-run__panel-header",
|
|
222
|
+
children: [/* @__PURE__ */ jsx(QueueSectionTrigger, {
|
|
223
|
+
"data-slot": "subagent-run-panel-trigger",
|
|
224
|
+
"aria-label": delegatedWorkLabel(active.length, completed.length),
|
|
225
|
+
children: /* @__PURE__ */ jsx(QueueSectionLabel, {
|
|
226
|
+
count: runs.length || void 0,
|
|
227
|
+
children: "Delegated work"
|
|
228
|
+
})
|
|
229
|
+
}), completed.length ? /* @__PURE__ */ jsx(Button, {
|
|
230
|
+
className: "subagent-run__completed-toggle",
|
|
231
|
+
size: "xs",
|
|
232
|
+
variant: "ghost",
|
|
233
|
+
color: "neutral",
|
|
234
|
+
onClick: () => panel.setHiddenCompleted(panel.hiddenCompleted.size ? /* @__PURE__ */ new Set() : new Set(completed.map((run) => run.runId))),
|
|
235
|
+
children: panel.hiddenCompleted.size ? `Show completed (${completed.length})` : "Hide completed"
|
|
236
|
+
}) : null]
|
|
216
237
|
}), /* @__PURE__ */ jsxs(QueueSectionContent, { children: [
|
|
217
238
|
stop.error ? /* @__PURE__ */ jsx(AgentChatNotice, {
|
|
218
239
|
"data-tone": "danger",
|
|
@@ -235,8 +256,7 @@ function SubagentRunPanelContent({ panel, renderRunLink }) {
|
|
|
235
256
|
}),
|
|
236
257
|
/* @__PURE__ */ jsx(SubagentRunPanelControls, {
|
|
237
258
|
panel,
|
|
238
|
-
active: active.length
|
|
239
|
-
completed
|
|
259
|
+
active: active.length
|
|
240
260
|
})
|
|
241
261
|
] })]
|
|
242
262
|
})
|
|
@@ -3,7 +3,7 @@ import { i as AgentMessageRenderPartContext } from "../../AgentMessageParts-C7L-
|
|
|
3
3
|
import { AgentChatMessageContentProps, AgentChatRootProps } from "./AgentChat.js";
|
|
4
4
|
import { o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, t as ThinkChatActivity } from "../../ThinkChatActivity-DENkintt.js";
|
|
5
5
|
import { i as ThinkChatValue } from "../../ThinkChatContext-COIgzkYp.js";
|
|
6
|
-
import { n as WorkspaceFileRenderer } from "../../WorkspaceMessageResponse-
|
|
6
|
+
import { n as WorkspaceFileRenderer } from "../../WorkspaceMessageResponse-BApg8KZv.js";
|
|
7
7
|
import { o as UseSessionCompactionResult } from "../../SessionCompaction-CmTJFpzj.js";
|
|
8
8
|
import * as React from "react";
|
|
9
9
|
import { ChatStatus, UIMessage } from "ai";
|
|
@@ -2,7 +2,7 @@ import { ActivityOutput, ActivityPanel } from "../ai-sdk/Activity.js";
|
|
|
2
2
|
import { o as formatUnknownValue } from "../../format-COCyV98Z.js";
|
|
3
3
|
import { Tabs } from "../foundations/Tabs.js";
|
|
4
4
|
import { BrowserLiveView } from "./BrowserLiveView.js";
|
|
5
|
-
import { i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "../../CodeBlock-
|
|
5
|
+
import { i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "../../CodeBlock-Bl-q7wMc.js";
|
|
6
6
|
import { inferWorkspaceLanguage } from "./WorkspaceFile.js";
|
|
7
7
|
import { displayUrl, isSessionContextToolFailure } from "./ThinkChatToolParts.js";
|
|
8
8
|
import * as React from "react";
|
|
@@ -240,25 +240,18 @@ function ThinkExecutionWorkbenchRunActions({ run }) {
|
|
|
240
240
|
}
|
|
241
241
|
function ThinkExecutionWorkbenchList({ children, className, ...props }) {
|
|
242
242
|
const { runs } = useWorkbench();
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
"aria-labelledby": runsId,
|
|
243
|
+
return /* @__PURE__ */ jsx("section", {
|
|
244
|
+
"aria-label": "Runs",
|
|
246
245
|
...props,
|
|
247
246
|
className: cx("think-execution-workbench__run-list", className),
|
|
248
|
-
children:
|
|
249
|
-
className: "think-execution-workbench__list-header",
|
|
250
|
-
children: /* @__PURE__ */ jsx("h3", {
|
|
251
|
-
id: runsId,
|
|
252
|
-
children: "Runs"
|
|
253
|
-
})
|
|
254
|
-
}), runs.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
247
|
+
children: runs.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
255
248
|
className: "think-execution-workbench__empty",
|
|
256
249
|
description: "No runs yet."
|
|
257
250
|
}) : /* @__PURE__ */ jsx("ul", {
|
|
258
251
|
className: "think-execution-workbench__list",
|
|
259
252
|
role: "list",
|
|
260
253
|
children: runs.map((run) => /* @__PURE__ */ jsx("li", { children: children(run) }, `${isThinkSubmissionRun(run) ? "submission" : "workflow"}:${getThinkExecutionRunId(run)}`))
|
|
261
|
-
})
|
|
254
|
+
})
|
|
262
255
|
});
|
|
263
256
|
}
|
|
264
257
|
function ThinkExecutionWorkbenchRunLink({ run, className, ...props }) {
|
|
@@ -11,6 +11,8 @@ interface ThinkFullAppRootProps extends React.ComponentPropsWithRef<"div"> {
|
|
|
11
11
|
* Conversation/workbench layout, independent of routing and SDK connections.
|
|
12
12
|
* Compose navigation outside the root. The conversation remains mounted while
|
|
13
13
|
* compact layouts show the workbench; ResizableSidePanel owns desktop resizing.
|
|
14
|
+
* Compact layout follows the width available to this content, including any
|
|
15
|
+
* space occupied by a surrounding sidebar.
|
|
14
16
|
*/
|
|
15
17
|
declare function ThinkFullAppRoot({
|
|
16
18
|
workbenchOpen,
|
|
@@ -15,6 +15,8 @@ function useWorkbenchOpen() {
|
|
|
15
15
|
* Conversation/workbench layout, independent of routing and SDK connections.
|
|
16
16
|
* Compose navigation outside the root. The conversation remains mounted while
|
|
17
17
|
* compact layouts show the workbench; ResizableSidePanel owns desktop resizing.
|
|
18
|
+
* Compact layout follows the width available to this content, including any
|
|
19
|
+
* space occupied by a surrounding sidebar.
|
|
18
20
|
*/
|
|
19
21
|
function ThinkFullAppRoot({ workbenchOpen, children, className, ...props }) {
|
|
20
22
|
return /* @__PURE__ */ jsx(WorkbenchOpenContext.Provider, {
|
|
@@ -6,8 +6,8 @@ import { Field } from "../foundations/Field.js";
|
|
|
6
6
|
import { Form } from "../foundations/Form.js";
|
|
7
7
|
import { Textarea } from "../foundations/Textarea.js";
|
|
8
8
|
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
9
|
-
import { Select } from "../foundations/Select.js";
|
|
10
9
|
import { Fieldset } from "../foundations/Fieldset.js";
|
|
10
|
+
import { Select } from "../foundations/Select.js";
|
|
11
11
|
import { Checkbox } from "../foundations/Checkbox.js";
|
|
12
12
|
import { CheckboxGroup } from "../foundations/CheckboxGroup.js";
|
|
13
13
|
import { Combobox } from "../foundations/Combobox.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as ThinkThreadStatusIndicatorsProps, i as ThinkThreadStatusIndicators, n as ThinkThreadPicker, o as ThinkThreadStatusSummary, r as ThinkThreadPickerProps, s as summarizeThinkThreads, t as ThinkThreadItem } from "../../ThinkThreadPicker-
|
|
1
|
+
import { a as ThinkThreadStatusIndicatorsProps, i as ThinkThreadStatusIndicators, n as ThinkThreadPicker, o as ThinkThreadStatusSummary, r as ThinkThreadPickerProps, s as summarizeThinkThreads, t as ThinkThreadItem } from "../../ThinkThreadPicker-DX0lL-P7.js";
|
|
2
2
|
export { ThinkThreadItem, ThinkThreadPicker, ThinkThreadPickerProps, ThinkThreadStatusIndicators, ThinkThreadStatusIndicatorsProps, ThinkThreadStatusSummary, summarizeThinkThreads };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import {
|
|
2
|
+
import { K as SpinnerIcon, R as PencilIcon, _ as DotIcon, et as WarningIcon, t as ArchiveIcon } from "../../icons-cuEtsgj9.js";
|
|
3
3
|
import { Button, buttonVariants } from "../foundations/Button.js";
|
|
4
|
+
import { Tooltip } from "../foundations/Tooltip.js";
|
|
4
5
|
import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
|
|
5
6
|
import { ScrollArea } from "../foundations/ScrollArea.js";
|
|
6
7
|
import { EmptyState } from "../foundations/EmptyState.js";
|
|
7
|
-
import { AlertDialog } from "../foundations/AlertDialog.js";
|
|
8
8
|
import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
|
|
9
|
+
import { AlertDialog } from "../foundations/AlertDialog.js";
|
|
9
10
|
import { LinkButton } from "../foundations/LinkButton.js";
|
|
10
11
|
import { SearchField } from "../foundations/SearchField.js";
|
|
11
12
|
import * as React from "react";
|
|
@@ -109,7 +110,7 @@ function ThinkThreadStatusIndicators({ summary, className }) {
|
|
|
109
110
|
* notes beside the parent Think agent because
|
|
110
111
|
* `listThreads()`/`createThread()`/`deleteThread()` are app-owned.
|
|
111
112
|
*/
|
|
112
|
-
function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSelect, onDelete, className, title = "Recents", "aria-label": ariaLabel = "Threads", ref, ...props }) {
|
|
113
|
+
function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSelect, onDelete, className, title = "Recents", headerActions, "aria-label": ariaLabel = "Threads", ref, ...props }) {
|
|
113
114
|
const statusSummary = summarizeThinkThreads(threads);
|
|
114
115
|
const [query, setQuery] = React.useState("");
|
|
115
116
|
const [deleteOpen, setDeleteOpen] = React.useState(false);
|
|
@@ -161,10 +162,34 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
|
|
|
161
162
|
children: [
|
|
162
163
|
/* @__PURE__ */ jsxs("header", {
|
|
163
164
|
className: "think-thread-picker__header",
|
|
164
|
-
children: [
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
children: [
|
|
166
|
+
/* @__PURE__ */ jsx("h2", {
|
|
167
|
+
className: "think-thread-picker__title sigvelo-truncate",
|
|
168
|
+
children: title
|
|
169
|
+
}),
|
|
170
|
+
/* @__PURE__ */ jsx(ThinkThreadStatusIndicators, {
|
|
171
|
+
summary: statusSummary,
|
|
172
|
+
className: "sigvelo-visually-hidden"
|
|
173
|
+
}),
|
|
174
|
+
createThreadLink ? /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
|
|
175
|
+
render: /* @__PURE__ */ jsx(LinkButton, {
|
|
176
|
+
ref: createButtonRef,
|
|
177
|
+
variant: "ghost",
|
|
178
|
+
color: "neutral",
|
|
179
|
+
size: "sm",
|
|
180
|
+
className: "think-thread-picker__create",
|
|
181
|
+
"aria-label": "New thread",
|
|
182
|
+
"data-icon-only": "",
|
|
183
|
+
render: createThreadLink
|
|
184
|
+
}),
|
|
185
|
+
children: /* @__PURE__ */ jsx(PencilIcon, {})
|
|
186
|
+
}), /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, {
|
|
187
|
+
side: "top",
|
|
188
|
+
sideOffset: 6,
|
|
189
|
+
children: /* @__PURE__ */ jsx(Tooltip.Popup, { children: "New thread" })
|
|
190
|
+
}) })] }) : null,
|
|
191
|
+
headerActions
|
|
192
|
+
]
|
|
168
193
|
}),
|
|
169
194
|
/* @__PURE__ */ jsxs(SearchField.Root, {
|
|
170
195
|
className: "think-thread-picker__search",
|
|
@@ -259,18 +284,6 @@ function ThinkThreadPicker({ threads, renderThreadLink, createThreadLink, onSele
|
|
|
259
284
|
})]
|
|
260
285
|
})
|
|
261
286
|
}),
|
|
262
|
-
createThreadLink ? /* @__PURE__ */ jsx("div", {
|
|
263
|
-
className: "think-thread-picker__footer",
|
|
264
|
-
children: /* @__PURE__ */ jsxs(LinkButton, {
|
|
265
|
-
ref: createButtonRef,
|
|
266
|
-
variant: "normal",
|
|
267
|
-
color: "neutral",
|
|
268
|
-
size: "sm",
|
|
269
|
-
className: "think-thread-picker__create",
|
|
270
|
-
render: createThreadLink,
|
|
271
|
-
children: [/* @__PURE__ */ jsx(PlusIcon, {}), /* @__PURE__ */ jsx("span", { children: "New thread" })]
|
|
272
|
-
})
|
|
273
|
-
}) : null,
|
|
274
287
|
onDelete && deleteCandidate ? /* @__PURE__ */ jsx(AlertDialog.Root, {
|
|
275
288
|
open: deleteOpen,
|
|
276
289
|
onOpenChange: (open, eventDetails) => {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
|
|
2
|
+
import { ReactElement } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/agents-sdk/WorkbenchBack.d.ts
|
|
5
|
+
/** Back follows the visible hierarchy, never unrelated browser history. */
|
|
6
|
+
declare function WorkbenchBack({
|
|
7
|
+
navigation,
|
|
8
|
+
filesOpen,
|
|
9
|
+
onBackToChat,
|
|
10
|
+
backToChatLink
|
|
11
|
+
}: {
|
|
12
|
+
navigation?: WorkspaceNavigationAdapter;
|
|
13
|
+
filesOpen: boolean;
|
|
14
|
+
onBackToChat?: () => void;
|
|
15
|
+
backToChatLink?: ReactElement;
|
|
16
|
+
}): import("react").JSX.Element;
|
|
17
|
+
//#endregion
|
|
18
|
+
export { WorkbenchBack };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
|
|
2
|
+
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/agents-sdk/WorkbenchBack.tsx
|
|
5
|
+
/** Back follows the visible hierarchy, never unrelated browser history. */
|
|
6
|
+
function WorkbenchBack({ navigation, filesOpen, onBackToChat, backToChatLink }) {
|
|
7
|
+
if (filesOpen && navigation?.current.destination.kind === "file") return /* @__PURE__ */ jsx(AppTopBar.Link, {
|
|
8
|
+
"data-workbench-back": "",
|
|
9
|
+
label: "Back to workspace",
|
|
10
|
+
render: navigation.renderLink({ kind: "files" }),
|
|
11
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
|
|
12
|
+
});
|
|
13
|
+
if (backToChatLink) return /* @__PURE__ */ jsx(AppTopBar.Link, {
|
|
14
|
+
"data-workbench-back": "",
|
|
15
|
+
label: "Back to chat",
|
|
16
|
+
render: backToChatLink,
|
|
17
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
|
|
18
|
+
});
|
|
19
|
+
return /* @__PURE__ */ jsx(AppTopBar.Button, {
|
|
20
|
+
"data-workbench-back": "",
|
|
21
|
+
label: "Back to chat",
|
|
22
|
+
onClick: onBackToChat,
|
|
23
|
+
children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { WorkbenchBack };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as workspaceFileQueryKey, C as refreshWorkspaceFileQueries, D as workspaceDirectoryQueryOptions, E as workspaceDirectoryQueryKey, F as workspaceTextFileQueryOptions, M as workspaceInfoQueryKey, N as workspaceInfoQueryOptions, O as workspaceDirectoryQueryPrefix, P as workspaceQueryKey, S as WorkspaceTextFileQueryOptions, T as workspaceBinaryFileQueryOptions, _ as WorkspaceQueryOptions, a as WorkspaceDirectoryQueryOptions, b as WorkspaceState, c as WorkspaceFileQueryKey, d as WorkspaceFileStatQueryOptions, f as WorkspaceFileVersion, g as WorkspaceQueryKey, h as WorkspaceInfoQueryOptions, i as WorkspaceDirectoryQueryKey, j as workspaceFileStatQueryOptions, k as workspaceFileAssetQueryOptions, l as WorkspaceFileReadTarget, m as WorkspaceInfoQueryKey, n as WorkspaceBinaryFileQueryKey, o as WorkspaceFileAssetQueryKey, p as WorkspaceInfo, r as WorkspaceBinaryFileQueryOptions, s as WorkspaceFileAssetQueryOptions, t as UseWorkspaceOptions, u as WorkspaceFileStatQueryKey, v as WorkspaceResolvedAsset, w as useWorkspace, x as WorkspaceTextFileQueryKey, y as WorkspaceSource } from "../../Workspace-
|
|
1
|
+
import { A as workspaceFileQueryKey, C as refreshWorkspaceFileQueries, D as workspaceDirectoryQueryOptions, E as workspaceDirectoryQueryKey, F as workspaceTextFileQueryOptions, M as workspaceInfoQueryKey, N as workspaceInfoQueryOptions, O as workspaceDirectoryQueryPrefix, P as workspaceQueryKey, S as WorkspaceTextFileQueryOptions, T as workspaceBinaryFileQueryOptions, _ as WorkspaceQueryOptions, a as WorkspaceDirectoryQueryOptions, b as WorkspaceState, c as WorkspaceFileQueryKey, d as WorkspaceFileStatQueryOptions, f as WorkspaceFileVersion, g as WorkspaceQueryKey, h as WorkspaceInfoQueryOptions, i as WorkspaceDirectoryQueryKey, j as workspaceFileStatQueryOptions, k as workspaceFileAssetQueryOptions, l as WorkspaceFileReadTarget, m as WorkspaceInfoQueryKey, n as WorkspaceBinaryFileQueryKey, o as WorkspaceFileAssetQueryKey, p as WorkspaceInfo, r as WorkspaceBinaryFileQueryOptions, s as WorkspaceFileAssetQueryOptions, t as UseWorkspaceOptions, u as WorkspaceFileStatQueryKey, v as WorkspaceResolvedAsset, w as useWorkspace, x as WorkspaceTextFileQueryKey, y as WorkspaceSource } from "../../Workspace-mzMZSdts.js";
|
|
2
2
|
export { UseWorkspaceOptions, WorkspaceBinaryFileQueryKey, WorkspaceBinaryFileQueryOptions, WorkspaceDirectoryQueryKey, WorkspaceDirectoryQueryOptions, WorkspaceFileAssetQueryKey, WorkspaceFileAssetQueryOptions, WorkspaceFileQueryKey, WorkspaceFileReadTarget, WorkspaceFileStatQueryKey, WorkspaceFileStatQueryOptions, WorkspaceFileVersion, WorkspaceInfo, WorkspaceInfoQueryKey, WorkspaceInfoQueryOptions, WorkspaceQueryKey, WorkspaceQueryOptions, WorkspaceResolvedAsset, WorkspaceSource, WorkspaceState, WorkspaceTextFileQueryKey, WorkspaceTextFileQueryOptions, refreshWorkspaceFileQueries, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileQueryKey, workspaceFileStatQueryOptions, workspaceInfoQueryKey, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
|
|
@@ -63,6 +63,7 @@ function WorkspaceBrowser({ workspace, title = "Workspace", leading, actions, sh
|
|
|
63
63
|
role: "alert",
|
|
64
64
|
children: error
|
|
65
65
|
}) : filterQuery ? filteredFiles.length > 0 ? /* @__PURE__ */ jsx(FileTree, {
|
|
66
|
+
appearance: "plain",
|
|
66
67
|
className: "workspace-explorer__tree",
|
|
67
68
|
selectedPath,
|
|
68
69
|
onSelect: handleSelect,
|
|
@@ -76,6 +77,7 @@ function WorkspaceBrowser({ workspace, title = "Workspace", leading, actions, sh
|
|
|
76
77
|
className: "workspace-explorer__empty",
|
|
77
78
|
children: "No matching files"
|
|
78
79
|
}) : rootEntries.length > 0 ? /* @__PURE__ */ jsx(FileTree, {
|
|
80
|
+
appearance: "plain",
|
|
79
81
|
className: "workspace-explorer__tree",
|
|
80
82
|
expanded: new Set(expandedPaths),
|
|
81
83
|
onExpandedChange: setExpandedPaths,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as WorkspaceQueryOptions, g as WorkspaceQueryKey } from "../../Workspace-
|
|
1
|
+
import { _ as WorkspaceQueryOptions, g as WorkspaceQueryKey } from "../../Workspace-mzMZSdts.js";
|
|
2
2
|
import { QueryClient, QueryFunction } from "@tanstack/react-query";
|
|
3
3
|
|
|
4
4
|
//#region src/components/agents-sdk/WorkspaceConcept.d.ts
|
|
@@ -5,12 +5,13 @@ import { IconButton } from "../foundations/IconButton.js";
|
|
|
5
5
|
import { a as formatErrorMessage, o as formatUnknownValue, r as firstLine } from "../../format-COCyV98Z.js";
|
|
6
6
|
import { Field } from "../foundations/Field.js";
|
|
7
7
|
import { Form } from "../foundations/Form.js";
|
|
8
|
-
import { EmptyState } from "../foundations/EmptyState.js";
|
|
9
8
|
import { Input } from "../foundations/Input.js";
|
|
9
|
+
import { EmptyState } from "../foundations/EmptyState.js";
|
|
10
10
|
import { DescriptionList } from "../foundations/DescriptionList.js";
|
|
11
11
|
import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle } from "../foundations/Card.js";
|
|
12
12
|
import { Checkbox } from "../foundations/Checkbox.js";
|
|
13
13
|
import { i as WorkspaceDeleteControl, n as WorkspaceComposerLink, r as httpUrl, t as FaviconMark } from "../../workspace-assets-Bg7XhPsk.js";
|
|
14
|
+
import { t as WorkspaceConceptPanel } from "../../WorkspaceConceptPanel-97ZyVpZI.js";
|
|
14
15
|
import * as React from "react";
|
|
15
16
|
import { createElement } from "react";
|
|
16
17
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -102,7 +103,7 @@ function ExecutionFields({ draft, outcome, parameters, runs, onDraftChange }) {
|
|
|
102
103
|
const href = parameter.type === "string" ? httpUrl(String(editing ? draft?.[parameter.name] ?? parameter.value : parameter.value)) : void 0;
|
|
103
104
|
return /* @__PURE__ */ jsxs(DescriptionList.Item, { children: [/* @__PURE__ */ jsxs(DescriptionList.Term, {
|
|
104
105
|
id: parameter.type === "boolean" ? id : void 0,
|
|
105
|
-
children: [href ? /* @__PURE__ */ jsx(FaviconMark, { href }) : null, editing && parameter.type !== "boolean" ? /* @__PURE__ */ jsx("label", {
|
|
106
|
+
children: [href && !editing ? /* @__PURE__ */ jsx(FaviconMark, { href }) : null, editing && parameter.type !== "boolean" ? /* @__PURE__ */ jsx("label", {
|
|
106
107
|
htmlFor: id,
|
|
107
108
|
children: parameterLabel
|
|
108
109
|
}) : parameterLabel]
|
|
@@ -263,7 +264,8 @@ function WorkspaceExecutionFile({ fallback = null, path, source, ...props }) {
|
|
|
263
264
|
function WorkspaceExecutionsPanel({ className, source, ref, ...props }) {
|
|
264
265
|
const query = useQuery(source.queryOptions);
|
|
265
266
|
const modules = query.data ?? [];
|
|
266
|
-
return /* @__PURE__ */ jsx(
|
|
267
|
+
return /* @__PURE__ */ jsx(WorkspaceConceptPanel, {
|
|
268
|
+
heading: "Executions",
|
|
267
269
|
ref,
|
|
268
270
|
"data-slot": "workspace-executions-panel",
|
|
269
271
|
className: cx("workspace-concept-panel", className),
|
|
@@ -288,7 +290,8 @@ function WorkspaceExecutionsPanel({ className, source, ref, ...props }) {
|
|
|
288
290
|
title: "Loading modules"
|
|
289
291
|
}) : /* @__PURE__ */ jsx(EmptyState, {
|
|
290
292
|
icon: /* @__PURE__ */ jsx(TerminalIcon, {}),
|
|
291
|
-
title: "No modules"
|
|
293
|
+
title: "No modules",
|
|
294
|
+
description: "Ask your assistant to save a reusable workflow to find it here."
|
|
292
295
|
})
|
|
293
296
|
}, JSON.stringify(source.queryOptions.queryKey));
|
|
294
297
|
}
|