@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.
Files changed (50) hide show
  1. package/dist/{AgentChat-DVr2giwD.d.ts → AgentChat-Bibfj7u1.d.ts} +1 -1
  2. package/dist/{AgentChatStartScreen-CO49yepa.d.ts → AgentChatStartScreen-Bkv7Avni.d.ts} +6 -0
  3. package/dist/McpPluginCatalog-mbGw8FTu.d.ts +92 -0
  4. package/dist/ResponsiveSidebarShell-DOXd5T-d.d.ts +111 -0
  5. package/dist/SetupChecklist-H1JRCIIe.js +77 -0
  6. package/dist/{ThinkChatActivity-CsDql-ER.d.ts → ThinkChatActivity-CgvmTXXB.d.ts} +1 -1
  7. package/dist/Workspace-F3raHdYV.d.ts +140 -0
  8. package/dist/{WorkspaceFileView-DwdXiKku.js → WorkspaceFileView-DWMKxX_u.js} +0 -1
  9. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  10. package/dist/components/agents-sdk/ManagerOffice.js +1 -1
  11. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -91
  12. package/dist/components/agents-sdk/McpPluginCatalog.js +1 -1
  13. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  14. package/dist/components/agents-sdk/ThinkChat.d.ts +2 -2
  15. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  16. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  17. package/dist/components/agents-sdk/ThinkChatActivity.js +1 -1
  18. package/dist/components/agents-sdk/ThinkExecutionDetail.js +1 -1
  19. package/dist/components/agents-sdk/ThinkFullApp.d.ts +20 -6
  20. package/dist/components/agents-sdk/ThinkFullApp.js +6 -5
  21. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  22. package/dist/components/agents-sdk/ThinkRoutineDetail.js +1 -1
  23. package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +4 -3
  24. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +17 -31
  25. package/dist/components/agents-sdk/ThinkSidepanel.d.ts +173 -0
  26. package/dist/components/agents-sdk/ThinkSidepanel.js +656 -0
  27. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +4 -5
  28. package/dist/components/agents-sdk/ThinkThreadPicker.js +6 -6
  29. package/dist/components/agents-sdk/Workspace.d.ts +1 -139
  30. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  31. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +1 -1
  32. package/dist/components/agents-sdk/WorkspaceExplorer.js +3 -3
  33. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  34. package/dist/components/ai-sdk/AgentChatStartScreen.d.ts +1 -1
  35. package/dist/components/ai-sdk/AgentChatStartScreen.js +5 -2
  36. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  37. package/dist/components/foundations/ToggleGroup.js +1 -1
  38. package/dist/components/general-purpose/PricingBillingToggle.js +1 -1
  39. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  40. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -104
  41. package/dist/components/general-purpose/ResponsiveSidebarShell.js +2 -2
  42. package/dist/components/general-purpose/SetupChecklist.js +1 -76
  43. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  44. package/dist/components/nanites/AgentToolDetail.js +3 -3
  45. package/dist/styles/agent-chat.css +20 -15
  46. package/dist/styles/index.css +1 -0
  47. package/dist/styles/responsive-sidebar-shell.css +12 -9
  48. package/dist/styles/think-sidepanel.css +74 -0
  49. package/package.json +2 -2
  50. 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 "./McpPluginCatalog.js";
3
+ import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-mbGw8FTu.js";
4
4
  import { ThinkChatMessagesProps } from "./ThinkChat.js";
5
- import { AppBarSlots, ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
5
+ import { n as ResponsiveSidebarShell, t as AppBarSlots } from "../../ResponsiveSidebarShell-DOXd5T-d.js";
6
6
  import { ThinkThreadStatusSummary } from "./ThinkThreadPicker.js";
7
7
  import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-BLaFmMrt.js";
8
- import { WorkspaceSource } from "./Workspace.js";
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 control, leading navigation, title, actions. */
74
- bar?: AppBarSlots;
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 "../general-purpose/ResponsiveSidebarShell.js";
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 the built-in schedule actions.
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, y as EllipsisIcon, z as PlayIcon } from "../../icons-CVFSeTJn.js";
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 moreActionsRef = React.useRef(null);
19
- const hasMenu = Boolean(editLink || onDelete);
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
- hasMenu ? /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
31
- label: "More schedule actions",
32
- tooltip: "More actions",
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
- render: /* @__PURE__ */ jsx(Menu.Trigger, {
35
- ref: moreActionsRef,
36
- unstyled: true
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: moreActionsRef,
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 };