@mcp-b/react-components 0.42.0 → 0.43.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-DVr2giwD.d.ts → AgentChat-Bibfj7u1.d.ts} +1 -1
- package/dist/{AgentChatStartScreen-CO49yepa.d.ts → AgentChatStartScreen-Bkv7Avni.d.ts} +6 -0
- package/dist/McpPluginCatalog-mbGw8FTu.d.ts +92 -0
- package/dist/ResponsiveSidebarShell-DOXd5T-d.d.ts +111 -0
- package/dist/SetupChecklist-H1JRCIIe.js +77 -0
- package/dist/{ThinkChatActivity-CsDql-ER.d.ts → ThinkChatActivity-CgvmTXXB.d.ts} +1 -1
- package/dist/Workspace-F3raHdYV.d.ts +140 -0
- package/dist/{WorkspaceFileView-DwdXiKku.js → WorkspaceFileView-DWMKxX_u.js} +0 -1
- package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
- package/dist/components/agents-sdk/ManagerOffice.js +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -91
- package/dist/components/agents-sdk/McpPluginCatalog.js +1 -1
- package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
- package/dist/components/agents-sdk/ThinkChat.d.ts +2 -2
- 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 +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +1 -1
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +20 -6
- package/dist/components/agents-sdk/ThinkFullApp.js +6 -5
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +4 -3
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +17 -31
- package/dist/components/agents-sdk/ThinkSidepanel.d.ts +173 -0
- package/dist/components/agents-sdk/ThinkSidepanel.js +656 -0
- package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +4 -5
- package/dist/components/agents-sdk/ThinkThreadPicker.js +6 -6
- package/dist/components/agents-sdk/Workspace.d.ts +1 -139
- package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +3 -3
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.d.ts +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +5 -2
- package/dist/components/foundations/ToggleGroup.d.ts +1 -1
- package/dist/components/foundations/ToggleGroup.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
- package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -104
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +2 -2
- package/dist/components/general-purpose/SetupChecklist.js +1 -76
- package/dist/components/general-purpose/ThemeModeControl.js +1 -1
- package/dist/components/nanites/AgentToolDetail.js +3 -3
- package/dist/styles/agent-chat.css +20 -15
- package/dist/styles/index.css +1 -0
- package/dist/styles/responsive-sidebar-shell.css +12 -9
- package/dist/styles/think-sidepanel.css +74 -0
- package/package.json +2 -2
- package/dist/{ThinkChat-DkA4Wr71.js → ThinkChat-BES_3Mb-.js} +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
|
|
2
2
|
import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-daY67hFM.js";
|
|
3
|
-
import { McpPluginCatalogProps } from "
|
|
3
|
+
import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-mbGw8FTu.js";
|
|
4
4
|
import { ThinkChatMessagesProps } from "./ThinkChat.js";
|
|
5
|
-
import {
|
|
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-BLaFmMrt.js";
|
|
8
|
-
import { WorkspaceSource } from "
|
|
8
|
+
import { v as WorkspaceSource } from "../../Workspace-F3raHdYV.js";
|
|
9
9
|
import { t as ThinkAgent } from "../../think-agent-Cip5KAPj.js";
|
|
10
10
|
import * as React from "react";
|
|
11
11
|
import { UIMessage } from "ai";
|
|
@@ -15,6 +15,20 @@ import { useAgent } from "agents/react";
|
|
|
15
15
|
//#region src/components/agents-sdk/ThinkFullApp.d.ts
|
|
16
16
|
type ThinkFullAppAgent<State = unknown> = ThinkAgent<State>;
|
|
17
17
|
type ThinkFullAppWorkbenchView = "files" | "plugins" | (string & {});
|
|
18
|
+
/**
|
|
19
|
+
* ThinkFullApp bar: the shared shell slots plus the workbench view switch.
|
|
20
|
+
* `views` omitted uses the built-in Files/Plugins switch. Pass `null` when
|
|
21
|
+
* the host already offers those destinations (an overflow menu). `primary`
|
|
22
|
+
* is always last.
|
|
23
|
+
*/
|
|
24
|
+
interface ThinkFullAppBarSlots extends AppBarSlots {
|
|
25
|
+
/**
|
|
26
|
+
* View-switch slot. Omit for the built-in switch. `null` omits it so the
|
|
27
|
+
* host can own Files/Plugins in `actions` instead of showing a second set
|
|
28
|
+
* of icons.
|
|
29
|
+
*/
|
|
30
|
+
views?: React.ReactNode | null;
|
|
31
|
+
}
|
|
18
32
|
/**
|
|
19
33
|
* The one view axis: the conversation alone, or the conversation with a named
|
|
20
34
|
* workbench panel raised beside it (leading at narrow widths). Apps that make
|
|
@@ -70,8 +84,8 @@ interface ThinkFullAppProps<AgentT extends ThinkFullAppAgent<State>, State = unk
|
|
|
70
84
|
workspace?: ThinkFullAppWorkspaceConfig;
|
|
71
85
|
/** Plugin directory backed by the host's live Agents MCP state and connection callbacks. */
|
|
72
86
|
plugins?: McpPluginCatalogProps;
|
|
73
|
-
/** Application bar slots: back
|
|
74
|
-
bar?:
|
|
87
|
+
/** Application bar slots: back, leading, title, actions, views, primary. */
|
|
88
|
+
bar?: ThinkFullAppBarSlots;
|
|
75
89
|
/** Aggregate thread activity rendered beside the compact thread-title disclosure. */
|
|
76
90
|
threadStatusSummary?: ThinkThreadStatusSummary;
|
|
77
91
|
/**
|
|
@@ -132,4 +146,4 @@ declare function ThinkFullApp<AgentT extends ThinkFullAppAgent<State>, State = u
|
|
|
132
146
|
ref?: React.Ref<HTMLDivElement>;
|
|
133
147
|
}): React.JSX.Element;
|
|
134
148
|
//#endregion
|
|
135
|
-
export { ThinkFullApp, ThinkFullAppAgent, ThinkFullAppConversation, ThinkFullAppPanel, ThinkFullAppProps, ThinkFullAppView, ThinkFullAppWorkbenchView, ThinkFullAppWorkspaceConfig };
|
|
149
|
+
export { ThinkFullApp, ThinkFullAppAgent, ThinkFullAppBarSlots, ThinkFullAppConversation, ThinkFullAppPanel, ThinkFullAppProps, ThinkFullAppView, ThinkFullAppWorkbenchView, ThinkFullAppWorkspaceConfig };
|
|
@@ -3,9 +3,9 @@ import { S as FileIcon, c as BoxIcon } from "../../icons-CVFSeTJn.js";
|
|
|
3
3
|
import { n as mergeRefs } from "../../merge-refs-DF_7w2x_.js";
|
|
4
4
|
import { ResizableSidePanel } from "../general-purpose/ResizableSidePanel.js";
|
|
5
5
|
import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
6
|
-
import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../../WorkspaceLink-DtH66bAY.js";
|
|
7
|
-
import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-DkA4Wr71.js";
|
|
8
6
|
import { McpPluginCatalog } from "./McpPluginCatalog.js";
|
|
7
|
+
import { a as WorkspaceNavigationRestorationBoundary, i as WorkspaceNavigationFocusRestorer, n as WorkspaceNavigationProvider } from "../../WorkspaceLink-DtH66bAY.js";
|
|
8
|
+
import { c as resolveThinkApprovalProps, s as useThinkPendingExecutionApprovals, t as ThinkChat } from "../../ThinkChat-BES_3Mb-.js";
|
|
9
9
|
import { ThinkFullAppViewSwitch } from "./ThinkFullAppViewSwitch.js";
|
|
10
10
|
import { ThinkThreadStatusIndicators } from "./ThinkThreadPicker.js";
|
|
11
11
|
import { useWorkspace } from "./Workspace.js";
|
|
@@ -131,7 +131,7 @@ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewPr
|
|
|
131
131
|
const activePanel = requestedView === "chat" ? void 0 : availableWorkbenchPanels.find((panel) => panel.id === requestedView);
|
|
132
132
|
const hasWorkbench = activePanel !== void 0;
|
|
133
133
|
const activeMobileView = hasWorkbench ? "workbench" : "chat";
|
|
134
|
-
const hasAppBarRow = Boolean(bar?.back || bar?.leading || bar?.compactLeading || bar?.title || bar?.actions || threadSidebar) || availableWorkbenchPanels.length > 0;
|
|
134
|
+
const hasAppBarRow = Boolean(bar?.back || bar?.leading || bar?.compactLeading || bar?.title || bar?.actions || bar?.primary || bar?.views || threadSidebar) || availableWorkbenchPanels.length > 0;
|
|
135
135
|
React.useLayoutEffect(() => {
|
|
136
136
|
const pendingFocus = pendingPanelFocusRef.current;
|
|
137
137
|
if (!pendingFocus || pendingFocus.id !== activePanel?.id) return;
|
|
@@ -148,13 +148,13 @@ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewPr
|
|
|
148
148
|
} : null;
|
|
149
149
|
React.startTransition(() => setView(next));
|
|
150
150
|
};
|
|
151
|
-
const viewSwitch = availableWorkbenchPanels.length ? /* @__PURE__ */ jsx(ThinkFullAppViewSwitch, {
|
|
151
|
+
const viewSwitch = bar?.views === void 0 && availableWorkbenchPanels.length ? /* @__PURE__ */ jsx(ThinkFullAppViewSwitch, {
|
|
152
152
|
views: availableWorkbenchPanels,
|
|
153
153
|
value: activePanel?.id,
|
|
154
154
|
allowEmpty: true,
|
|
155
155
|
"aria-label": "App views",
|
|
156
156
|
onValueChange: (next) => updateView(next ?? "chat")
|
|
157
|
-
}) : null;
|
|
157
|
+
}) : bar?.views ?? null;
|
|
158
158
|
const appBarActions = bar?.actions || viewSwitch ? /* @__PURE__ */ jsxs(Fragment, { children: [bar?.actions, viewSwitch] }) : void 0;
|
|
159
159
|
const appContent = /* @__PURE__ */ jsxs(ResizableSidePanel.Root, {
|
|
160
160
|
ref: mergeRefs(appRef, ref),
|
|
@@ -232,6 +232,7 @@ function ThinkFullApp({ bar, className, conversation, defaultView: defaultViewPr
|
|
|
232
232
|
bar: {
|
|
233
233
|
...bar,
|
|
234
234
|
actions: appBarActions,
|
|
235
|
+
primary: bar?.primary,
|
|
235
236
|
className: "think-full-app__app-bar",
|
|
236
237
|
label: "Workbench controls",
|
|
237
238
|
hidden: !hasAppBarRow,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import { ToggleGroup } from "../foundations/ToggleGroup.js";
|
|
3
2
|
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
3
|
+
import { ToggleGroup } from "../foundations/ToggleGroup.js";
|
|
4
4
|
import "react";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/components/agents-sdk/ThinkFullAppViewSwitch.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import { Switch } from "../foundations/Switch.js";
|
|
3
2
|
import { getThinkRoutineNextRun } from "./ThinkRoutine.js";
|
|
3
|
+
import { Switch } from "../foundations/Switch.js";
|
|
4
4
|
import { ThinkRoutineRuns } from "./ThinkRoutineRuns.js";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppBarSlots } from "
|
|
1
|
+
import { t as AppBarSlots } from "../../ResponsiveSidebarShell-DOXd5T-d.js";
|
|
2
2
|
import { ThinkRoutine, ThinkRoutineRunOf } from "./ThinkRoutine.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
|
|
@@ -31,8 +31,9 @@ interface ThinkRoutineLibraryProps<TRoutine extends ThinkRoutine = ThinkRoutine>
|
|
|
31
31
|
/** Host-owned catalog error shown above the library without replacing loaded routines. */
|
|
32
32
|
error?: React.ReactNode;
|
|
33
33
|
/**
|
|
34
|
-
* Application bar slots. `title` defaults to the selected schedule's name
|
|
35
|
-
* `actions` render before
|
|
34
|
+
* Application bar slots. `title` defaults to the selected schedule's name.
|
|
35
|
+
* `actions` render before Run / Edit / Delete. `primary` stays last — the
|
|
36
|
+
* host's identity chrome belongs there, not in a second overflow.
|
|
36
37
|
*/
|
|
37
38
|
bar?: AppBarSlots;
|
|
38
39
|
/** Starts the selected routine immediately. */
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
|
-
import { K as SpinnerIcon,
|
|
2
|
+
import { K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, z as PlayIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import { buttonVariants } from "../foundations/Button.js";
|
|
4
|
-
import { Menu } from "../foundations/Menu.js";
|
|
5
4
|
import { i as formatErrorMessage } from "../../format-DB2mX9DA.js";
|
|
6
5
|
import { n as isPlainPrimaryLinkActivation, t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
|
|
7
|
-
import { AlertDialog } from "../foundations/AlertDialog.js";
|
|
8
6
|
import { EmptyState } from "../foundations/EmptyState.js";
|
|
9
7
|
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
10
8
|
import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
9
|
+
import { AlertDialog } from "../foundations/AlertDialog.js";
|
|
11
10
|
import { ThinkRoutineBrowser } from "./ThinkRoutineBrowser.js";
|
|
12
11
|
import { ThinkRoutineDetail } from "./ThinkRoutineDetail.js";
|
|
13
12
|
import * as React from "react";
|
|
@@ -15,45 +14,32 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
15
14
|
//#region src/components/agents-sdk/ThinkRoutineLibrary.tsx
|
|
16
15
|
function RoutineTopBarActions({ appBarActions, busy, onDelete, editLink, onRun, routineName }) {
|
|
17
16
|
const [deleteOpen, setDeleteOpen] = React.useState(false);
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
if (!appBarActions && !onRun && !hasMenu) return null;
|
|
17
|
+
const deleteButtonRef = React.useRef(null);
|
|
18
|
+
if (!appBarActions && !onRun && !editLink && !onDelete) return null;
|
|
21
19
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
22
20
|
appBarActions,
|
|
23
21
|
onRun ? /* @__PURE__ */ jsx(AppTopBar.Button, {
|
|
24
22
|
label: "Run schedule",
|
|
25
|
-
tooltip: "Run now",
|
|
26
23
|
disabled: busy,
|
|
27
24
|
onClick: onRun,
|
|
28
25
|
children: busy ? /* @__PURE__ */ jsx(SpinnerIcon, {}) : /* @__PURE__ */ jsx(PlayIcon, {})
|
|
29
26
|
}) : null,
|
|
30
|
-
|
|
31
|
-
label: "
|
|
32
|
-
|
|
27
|
+
editLink ? /* @__PURE__ */ jsx(AppTopBar.Link, {
|
|
28
|
+
label: "Edit schedule",
|
|
29
|
+
render: editLink,
|
|
30
|
+
children: /* @__PURE__ */ jsx(PencilIcon, {})
|
|
31
|
+
}) : null,
|
|
32
|
+
onDelete ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
|
|
33
|
+
ref: deleteButtonRef,
|
|
34
|
+
label: "Delete schedule",
|
|
33
35
|
disabled: busy,
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}),
|
|
38
|
-
children: /* @__PURE__ */ jsx(EllipsisIcon, {})
|
|
39
|
-
}), /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
|
|
40
|
-
align: "end",
|
|
41
|
-
sideOffset: 4,
|
|
42
|
-
children: /* @__PURE__ */ jsxs(Menu.Popup, { children: [editLink ? /* @__PURE__ */ jsx(Menu.Item, {
|
|
43
|
-
render: editLink,
|
|
44
|
-
children: "Edit schedule"
|
|
45
|
-
}) : null, onDelete ? /* @__PURE__ */ jsx(Menu.Item, {
|
|
46
|
-
variant: "destructive",
|
|
47
|
-
disabled: busy,
|
|
48
|
-
onClick: () => setDeleteOpen(true),
|
|
49
|
-
children: "Delete schedule"
|
|
50
|
-
}) : null] })
|
|
51
|
-
}) })] }) : null,
|
|
52
|
-
onDelete ? /* @__PURE__ */ jsx(AlertDialog.Root, {
|
|
36
|
+
onClick: () => setDeleteOpen(true),
|
|
37
|
+
children: /* @__PURE__ */ jsx(TrashIcon, {})
|
|
38
|
+
}), /* @__PURE__ */ jsx(AlertDialog.Root, {
|
|
53
39
|
open: deleteOpen,
|
|
54
40
|
onOpenChange: setDeleteOpen,
|
|
55
41
|
children: /* @__PURE__ */ jsxs(AlertDialog.Portal, { children: [/* @__PURE__ */ jsx(AlertDialog.Backdrop, {}), /* @__PURE__ */ jsx(AlertDialog.Viewport, { children: /* @__PURE__ */ jsxs(AlertDialog.Popup, {
|
|
56
|
-
finalFocus:
|
|
42
|
+
finalFocus: deleteButtonRef,
|
|
57
43
|
children: [
|
|
58
44
|
/* @__PURE__ */ jsxs(AlertDialog.Title, { children: [
|
|
59
45
|
"Delete ",
|
|
@@ -72,7 +58,7 @@ function RoutineTopBarActions({ appBarActions, busy, onDelete, editLink, onRun,
|
|
|
72
58
|
})] })
|
|
73
59
|
]
|
|
74
60
|
}) })] })
|
|
75
|
-
}) : null
|
|
61
|
+
})] }) : null
|
|
76
62
|
] });
|
|
77
63
|
}
|
|
78
64
|
/**
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { ThinkChatDraft } from "./ThinkChat.js";
|
|
2
|
+
import { ThinkThreadItem } from "./ThinkThreadPicker.js";
|
|
3
|
+
import { ThinkFullAppAgent, ThinkFullAppConversation, ThinkFullAppProps } from "./ThinkFullApp.js";
|
|
4
|
+
import { ThinkRoutine } from "./ThinkRoutine.js";
|
|
5
|
+
import { SetupChecklistEntry } from "../general-purpose/SetupChecklist.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { UIMessage } from "ai";
|
|
8
|
+
|
|
9
|
+
//#region src/components/agents-sdk/ThinkSidepanel.d.ts
|
|
10
|
+
type ThinkSidepanelView = "chat" | "files" | "plugins" | "schedules" | "live";
|
|
11
|
+
type ThinkSidepanelDestination = {
|
|
12
|
+
kind: "thread";
|
|
13
|
+
threadId: string;
|
|
14
|
+
} | {
|
|
15
|
+
kind: "new-thread";
|
|
16
|
+
} | {
|
|
17
|
+
kind: "view";
|
|
18
|
+
view: ThinkSidepanelView;
|
|
19
|
+
} | {
|
|
20
|
+
kind: "agent-run";
|
|
21
|
+
runId: string;
|
|
22
|
+
} | {
|
|
23
|
+
kind: "routine";
|
|
24
|
+
routineId: string;
|
|
25
|
+
} | {
|
|
26
|
+
kind: "create-routine";
|
|
27
|
+
} | {
|
|
28
|
+
kind: "edit-routine";
|
|
29
|
+
routineId: string;
|
|
30
|
+
} | {
|
|
31
|
+
kind: "routine-run";
|
|
32
|
+
routineId: string;
|
|
33
|
+
runId: string;
|
|
34
|
+
};
|
|
35
|
+
type ThinkSidepanelStatus = "ready" | "connecting" | "offline" | "identity-blocked" | "needs-model";
|
|
36
|
+
interface ThinkSidepanelModelSetup {
|
|
37
|
+
onSignIn?: () => void;
|
|
38
|
+
busy?: boolean;
|
|
39
|
+
error?: React.ReactNode;
|
|
40
|
+
label?: string;
|
|
41
|
+
onCustomEndpoint?: () => void;
|
|
42
|
+
}
|
|
43
|
+
interface ThinkSidepanelFollow {
|
|
44
|
+
followed: boolean;
|
|
45
|
+
onCheckedChange: (followed: boolean) => void;
|
|
46
|
+
}
|
|
47
|
+
interface ThinkSidepanelCompanion {
|
|
48
|
+
enabled: boolean;
|
|
49
|
+
origin: string;
|
|
50
|
+
setEnabled: (enabled: boolean) => void;
|
|
51
|
+
}
|
|
52
|
+
interface ThinkSidepanelPasskeyVault {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
setEnabled: (enabled: boolean) => void;
|
|
55
|
+
}
|
|
56
|
+
interface ThinkSidepanelConnection {
|
|
57
|
+
configured: boolean;
|
|
58
|
+
description?: string;
|
|
59
|
+
onSelect: () => void;
|
|
60
|
+
}
|
|
61
|
+
interface ThinkSidepanelStart {
|
|
62
|
+
onSubmit: ThinkChatDraft["onSubmit"];
|
|
63
|
+
suggestions?: readonly {
|
|
64
|
+
label: string;
|
|
65
|
+
value: string;
|
|
66
|
+
}[];
|
|
67
|
+
suggestionsError?: boolean;
|
|
68
|
+
onRetrySuggestions?: () => void;
|
|
69
|
+
hasConnectedApps?: boolean;
|
|
70
|
+
slack?: ThinkSidepanelConnection;
|
|
71
|
+
discord?: ThinkSidepanelConnection;
|
|
72
|
+
onAttachFolder?: () => void;
|
|
73
|
+
attachFolderBusy?: boolean;
|
|
74
|
+
personalization?: {
|
|
75
|
+
entries: readonly SetupChecklistEntry[];
|
|
76
|
+
onSelect: (id: string) => void;
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
interface ThinkSidepanelSchedules<TRoutine extends ThinkRoutine = ThinkRoutine> {
|
|
80
|
+
routines: readonly TRoutine[];
|
|
81
|
+
selectedRoutineId: string | null;
|
|
82
|
+
onRunRoutine?: (routine: TRoutine) => void | Promise<void>;
|
|
83
|
+
onRoutineEnabledChange?: (routine: TRoutine, enabled: boolean) => void | Promise<void>;
|
|
84
|
+
onDeleteRoutine?: (routine: TRoutine) => void | Promise<void>;
|
|
85
|
+
error?: React.ReactNode;
|
|
86
|
+
/** Host-owned create/edit form. The side panel only frames it. */
|
|
87
|
+
editor?: React.ReactNode;
|
|
88
|
+
}
|
|
89
|
+
interface ThinkSidepanelAgentRun {
|
|
90
|
+
title: string;
|
|
91
|
+
running?: boolean;
|
|
92
|
+
onCancel?: () => void;
|
|
93
|
+
}
|
|
94
|
+
interface ThinkSidepanelIdentity {
|
|
95
|
+
email?: string;
|
|
96
|
+
liveProfile: string;
|
|
97
|
+
assignedAccount: string;
|
|
98
|
+
managed?: boolean;
|
|
99
|
+
canBind?: boolean;
|
|
100
|
+
onBind?: () => void | Promise<void>;
|
|
101
|
+
onUnbind?: () => void | Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
interface ThinkSidepanelProps<AgentT extends ThinkFullAppAgent<State>, State = unknown, MessageT extends UIMessage = UIMessage> extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
104
|
+
sourceKey: string;
|
|
105
|
+
view: ThinkSidepanelView;
|
|
106
|
+
thread?: {
|
|
107
|
+
id: string;
|
|
108
|
+
title: string;
|
|
109
|
+
};
|
|
110
|
+
threads?: readonly ThinkThreadItem[];
|
|
111
|
+
conversation?: ThinkFullAppConversation<AgentT, State, MessageT>;
|
|
112
|
+
workspace?: ThinkFullAppProps<AgentT, State, MessageT>["workspace"];
|
|
113
|
+
plugins?: ThinkFullAppProps<AgentT, State, MessageT>["plugins"];
|
|
114
|
+
messages?: ThinkFullAppProps<AgentT, State, MessageT>["messages"];
|
|
115
|
+
/** App-authored TanStack Link for a thread, view, routine, or agent-run destination. */
|
|
116
|
+
renderLink: (destination: ThinkSidepanelDestination) => React.ReactElement;
|
|
117
|
+
onDeleteThread?: (thread: ThinkThreadItem) => void | Promise<void>;
|
|
118
|
+
follow?: ThinkSidepanelFollow;
|
|
119
|
+
companion?: ThinkSidepanelCompanion;
|
|
120
|
+
passkeyVault?: ThinkSidepanelPasskeyVault;
|
|
121
|
+
identity?: ThinkSidepanelIdentity;
|
|
122
|
+
onModel?: () => void;
|
|
123
|
+
onSignOut?: () => void;
|
|
124
|
+
brand: {
|
|
125
|
+
logo: React.ReactNode;
|
|
126
|
+
name: string;
|
|
127
|
+
};
|
|
128
|
+
appBarLeading?: React.ReactNode;
|
|
129
|
+
status?: ThinkSidepanelStatus;
|
|
130
|
+
connectingLabel?: string;
|
|
131
|
+
modelSetup?: ThinkSidepanelModelSetup;
|
|
132
|
+
start?: ThinkSidepanelStart;
|
|
133
|
+
schedules?: ThinkSidepanelSchedules;
|
|
134
|
+
agentRun?: ThinkSidepanelAgentRun;
|
|
135
|
+
/** Host-owned live view. The side panel only frames it. */
|
|
136
|
+
live?: React.ReactNode;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The employee side panel: icon-and-tooltip chrome, start screen, schedules,
|
|
140
|
+
* conversation plus workbench. Hosts hydrate conversation, workspace,
|
|
141
|
+
* plugins, and callables. Storybook is the place to iterate the chrome.
|
|
142
|
+
*/
|
|
143
|
+
declare function ThinkSidepanel<AgentT extends ThinkFullAppAgent<State>, State = unknown, MessageT extends UIMessage = UIMessage>({
|
|
144
|
+
agentRun,
|
|
145
|
+
appBarLeading,
|
|
146
|
+
brand,
|
|
147
|
+
className,
|
|
148
|
+
companion,
|
|
149
|
+
connectingLabel,
|
|
150
|
+
conversation,
|
|
151
|
+
follow,
|
|
152
|
+
identity,
|
|
153
|
+
live,
|
|
154
|
+
messages,
|
|
155
|
+
modelSetup,
|
|
156
|
+
onDeleteThread,
|
|
157
|
+
onModel,
|
|
158
|
+
onSignOut,
|
|
159
|
+
passkeyVault,
|
|
160
|
+
plugins,
|
|
161
|
+
renderLink,
|
|
162
|
+
schedules,
|
|
163
|
+
sourceKey,
|
|
164
|
+
start,
|
|
165
|
+
status,
|
|
166
|
+
thread,
|
|
167
|
+
threads,
|
|
168
|
+
view,
|
|
169
|
+
workspace,
|
|
170
|
+
...props
|
|
171
|
+
}: ThinkSidepanelProps<AgentT, State, MessageT>): React.JSX.Element;
|
|
172
|
+
//#endregion
|
|
173
|
+
export { ThinkSidepanel, ThinkSidepanelAgentRun, ThinkSidepanelCompanion, ThinkSidepanelConnection, ThinkSidepanelDestination, ThinkSidepanelFollow, ThinkSidepanelIdentity, ThinkSidepanelModelSetup, ThinkSidepanelPasskeyVault, ThinkSidepanelProps, ThinkSidepanelSchedules, ThinkSidepanelStart, ThinkSidepanelStatus, ThinkSidepanelView };
|