@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.
Files changed (127) hide show
  1. package/dist/{CodeBlock-g8sADidM.js → CodeBlock-Bl-q7wMc.js} +1 -0
  2. package/dist/{CodeBlock--r6GS8YV.d.ts → CodeBlock-DJ99TQWy.d.ts} +1 -1
  3. package/dist/EmployeeChrome-C8eTGJWn.d.ts +231 -0
  4. package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
  5. package/dist/{ManagerOffice-D-7SOJ4x.js → ManagerOffice-CMJ7laGe.js} +14 -9
  6. package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
  7. package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
  8. package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
  9. package/dist/{SetupChecklist-Btmy3-_C.js → SetupChecklist-BiWQkKEq.js} +5 -4
  10. package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
  11. package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
  12. package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
  13. package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
  14. package/dist/{WorkspaceFileView-DYPtRVpM.js → WorkspaceFileView-DXgTljKV.js} +2 -1
  15. package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
  16. package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
  17. package/dist/assets/sigvelo-logo.svg +54 -0
  18. package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
  19. package/dist/components/agents-sdk/AgentChat.js +4 -8
  20. package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
  21. package/dist/components/agents-sdk/EmployeeApp.js +47 -34
  22. package/dist/components/agents-sdk/EmployeeChat.d.ts +28 -8
  23. package/dist/components/agents-sdk/EmployeeChat.js +32 -4
  24. package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
  25. package/dist/components/agents-sdk/EmployeeChrome.js +101 -102
  26. package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
  27. package/dist/components/agents-sdk/EmployeeSchedules.js +1 -2
  28. package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
  29. package/dist/components/agents-sdk/EmployeeStartScreen.js +21 -14
  30. package/dist/components/agents-sdk/ManagerAccountActions.js +0 -1
  31. package/dist/components/agents-sdk/ManagerOffice.js +1 -2
  32. package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
  33. package/dist/components/agents-sdk/ManagerOfficeScreens.js +30 -13
  34. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
  35. package/dist/components/agents-sdk/McpPluginCatalog.js +3 -3
  36. package/dist/components/agents-sdk/McpServerPicker.js +3 -3
  37. package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
  38. package/dist/components/agents-sdk/SubagentRunPanel.js +66 -46
  39. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  40. package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
  41. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +4 -11
  42. package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
  43. package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
  44. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  45. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
  46. package/dist/components/agents-sdk/ThinkThreadPicker.js +32 -19
  47. package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
  48. package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
  49. package/dist/components/agents-sdk/Workspace.d.ts +1 -1
  50. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  51. package/dist/components/agents-sdk/WorkspaceBrowser.js +2 -0
  52. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
  53. package/dist/components/agents-sdk/WorkspaceExecution.js +7 -4
  54. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
  55. package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
  56. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  57. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  58. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  59. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
  60. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  61. package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
  62. package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceProject.js +3 -1
  64. package/dist/components/agents-sdk/WorkspaceUserScript.js +3 -1
  65. package/dist/components/ai-sdk/Artifact.d.ts +1 -1
  66. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  67. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  68. package/dist/components/ai-sdk/Conversation.d.ts +1 -1
  69. package/dist/components/ai-sdk/Message.d.ts +1 -1
  70. package/dist/components/ai-sdk/PromptInput.js +1 -1
  71. package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
  72. package/dist/components/extension/ChatGptSignInScreen.js +60 -185
  73. package/dist/components/extension/CodexModelSelector.js +2 -6
  74. package/dist/components/foundations/IconButton.d.ts +1 -1
  75. package/dist/components/foundations/IconButton.js +7 -4
  76. package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
  77. package/dist/components/general-purpose/AccountSignInDialog.js +12 -4
  78. package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
  79. package/dist/components/general-purpose/BrandLoading.js +25 -0
  80. package/dist/components/general-purpose/Commit.d.ts +1 -1
  81. package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
  82. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  83. package/dist/components/general-purpose/ResponsiveSidebarShell.js +58 -26
  84. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  85. package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
  86. package/dist/components/general-purpose/StatusScreen.js +27 -3
  87. package/dist/components/general-purpose/Terminal.d.ts +2 -2
  88. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  89. package/dist/components/nanites/AgentConnection.js +1 -1
  90. package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
  91. package/dist/styles/activity.css +2 -2
  92. package/dist/styles/agent-chat.css +6 -105
  93. package/dist/styles/app-root.css +9 -0
  94. package/dist/styles/app-top-bar.css +10 -4
  95. package/dist/styles/avatar.css +2 -2
  96. package/dist/styles/base.css +6 -2
  97. package/dist/styles/brand-loading.css +58 -0
  98. package/dist/styles/brand.test.ts +158 -0
  99. package/dist/styles/browser-control-overlay.css +22 -0
  100. package/dist/styles/button.css +22 -1
  101. package/dist/styles/chatgpt-sign-in-screen.css +111 -225
  102. package/dist/styles/code-block.css +5 -0
  103. package/dist/styles/codex-model-selector.css +2 -12
  104. package/dist/styles/description-list.css +9 -2
  105. package/dist/styles/employee-app.css +19 -1
  106. package/dist/styles/employee-chrome.css +35 -5
  107. package/dist/styles/file-tree.css +15 -2
  108. package/dist/styles/index.css +1 -0
  109. package/dist/styles/manager-office.css +80 -55
  110. package/dist/styles/manager-work.css +5 -11
  111. package/dist/styles/mcp-plugin-catalog.css +29 -34
  112. package/dist/styles/mcp-server-picker.css +13 -5
  113. package/dist/styles/prompt-input.css +3 -13
  114. package/dist/styles/queue.css +1 -1
  115. package/dist/styles/recipes.css +9 -2
  116. package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
  117. package/dist/styles/responsive-sidebar-shell.css +70 -25
  118. package/dist/styles/search-field.css +8 -6
  119. package/dist/styles/subagent-run.css +81 -0
  120. package/dist/styles/think-execution-workbench.css +0 -17
  121. package/dist/styles/think-full-app.css +11 -4
  122. package/dist/styles/think-thread-picker.css +16 -38
  123. package/dist/styles/workspace-concepts.css +29 -2
  124. package/dist/styles/workspace-explorer.css +6 -48
  125. package/dist/utils/structured-code.d.ts +1 -1
  126. package/package.json +2 -2
  127. package/dist/styles/extension-status.css +0 -46
@@ -239,6 +239,7 @@ function CodeBlockLanguageSelectorItem({ children, ...props }) {
239
239
  function CodeBlockContainer({ className, children, ref, ...props }) {
240
240
  return /* @__PURE__ */ jsx("div", {
241
241
  ref,
242
+ tabIndex: 0,
242
243
  className: cx("code-block__container", className),
243
244
  ...props,
244
245
  children
@@ -1,4 +1,4 @@
1
- import { t as CopyButtonProps } from "./copy-button-OUwOdgEm.js";
1
+ import { t as CopyButtonProps } from "./copy-button-CJYYgCIU.js";
2
2
  import { m as SelectProps, t as Select } from "./Select-RrceeEIe.js";
3
3
  import * as React from "react";
4
4
  import { BundledLanguage } from "shiki";
@@ -0,0 +1,231 @@
1
+ import { J as PromptInputMessage } from "./PromptInput-DGPrCTPl.js";
2
+ import { n as AgentToolRunValue } from "./AgentToolRunsContext-GMe_hSnD.js";
3
+ import { n as ResponsiveSidebarShell } from "./ResponsiveSidebarShell-BUBQa_IV.js";
4
+ import { t as ThinkThreadItem } from "./ThinkThreadPicker-DX0lL-P7.js";
5
+ import * as React from "react";
6
+
7
+ //#region src/components/agents-sdk/EmployeeChrome.d.ts
8
+ /**
9
+ * Chat, the two exclusive full-screen surfaces (`live`, `schedules`), or an
10
+ * opaque workbench panel id. Built-in workbench destinations are `files` and
11
+ * `plugins`; hosts append more through `workbenchNavigation`. An unknown id
12
+ * keeps the conversation visible without rewriting the host's destination.
13
+ */
14
+ type EmployeeView = string;
15
+ type EmployeeDestination = {
16
+ kind: "thread";
17
+ threadId: string;
18
+ } | {
19
+ kind: "new-thread";
20
+ } | {
21
+ kind: "view";
22
+ view: EmployeeView;
23
+ } | {
24
+ kind: "agent-run";
25
+ runId: string;
26
+ } | {
27
+ kind: "routine";
28
+ routineId: string;
29
+ } | {
30
+ kind: "create-routine";
31
+ } | {
32
+ kind: "edit-routine";
33
+ routineId: string;
34
+ } | {
35
+ kind: "routine-run";
36
+ routineId: string;
37
+ runId: string;
38
+ };
39
+ /** Host-owned router link for a destination; the chrome has no route vocabulary. */
40
+ type EmployeeRenderLink = (destination: EmployeeDestination) => React.ReactElement;
41
+ type EmployeeStatus = "ready" | "connecting" | "offline" | "identity-blocked" | "needs-model";
42
+ interface EmployeeBrand {
43
+ logo: React.ReactNode;
44
+ name: string;
45
+ }
46
+ interface EmployeeIdentity {
47
+ email?: string;
48
+ liveProfile: string;
49
+ assignedAccount: string;
50
+ managed?: boolean;
51
+ canBind?: boolean;
52
+ onBind?: () => void | Promise<void>;
53
+ onUnbind?: () => void | Promise<void>;
54
+ }
55
+ /** Host-owned follow preference for the selected conversation. */
56
+ interface EmployeeFollow {
57
+ followed: boolean;
58
+ onCheckedChange: (followed: boolean) => void;
59
+ }
60
+ /** Companion availability and its destination, both host-owned. */
61
+ interface EmployeeCompanion {
62
+ enabled: boolean;
63
+ origin: string;
64
+ setEnabled: (enabled: boolean) => void;
65
+ }
66
+ /** Host-owned passkey-vault preference; credential storage stays outside the chrome. */
67
+ interface EmployeePasskeyVault {
68
+ enabled: boolean;
69
+ setEnabled: (enabled: boolean) => void;
70
+ }
71
+ /** Host sign-in and endpoint-setup controls behind the `needs-model` gate. */
72
+ interface EmployeeModelSetup {
73
+ onSignIn?: () => void;
74
+ busy?: boolean;
75
+ error?: React.ReactNode;
76
+ label?: string;
77
+ onCustomEndpoint?: () => void;
78
+ }
79
+ /**
80
+ * The delegated run the chrome is drilled into. A `ready` run carries the whole
81
+ * retained record out of the dispatching thread's projection, so status,
82
+ * progress, and report are the dispatching thread's facts, never the child's.
83
+ * The host decides which state applies and whether the run may still be
84
+ * stopped — `onCancel` is the whole Stop affordance's condition.
85
+ */
86
+ type EmployeeAgentRun = {
87
+ state: "loading";
88
+ } | {
89
+ state: "unavailable";
90
+ } | {
91
+ state: "error";
92
+ error: string;
93
+ } | {
94
+ state: "ready";
95
+ run: AgentToolRunValue; /** Stops the run. Omit while the run cannot be stopped; the bar follows. */
96
+ onCancel?: () => void; /** A stop already in flight, so the control reads as busy rather than dead. */
97
+ cancelPending?: boolean;
98
+ };
99
+ /** One host view following Files and Plugins in the bar and the compact overflow. */
100
+ interface EmployeeWorkbenchItem {
101
+ id: string;
102
+ label: string;
103
+ icon: React.ReactNode;
104
+ }
105
+ interface EmployeeMenuProps {
106
+ /** Overrides the default Files/Plugins navigation for shared host shells. */
107
+ navigation?: readonly EmployeeWorkbenchItem[];
108
+ /** Active view; selecting it again returns to chat. */
109
+ view?: EmployeeView;
110
+ renderLink: EmployeeRenderLink;
111
+ /** Identity assignment and bind/unbind operations behind the account dialog. */
112
+ identity?: EmployeeIdentity;
113
+ /** Opens the host's model-selection surface. */
114
+ onModel?: () => void;
115
+ /** Requests host sign-out; session teardown stays host-owned. */
116
+ onSignOut?: () => void;
117
+ companion?: EmployeeCompanion;
118
+ passkeys?: EmployeePasskeyVault;
119
+ /** Shown for a selected conversation; omit when there is nothing to follow. */
120
+ follow?: EmployeeFollow;
121
+ /** Additional host views, following Files and Plugins. */
122
+ workbenchNavigation?: readonly EmployeeWorkbenchItem[];
123
+ }
124
+ /** Employee settings are host-owned state; the menu stores only dialog visibility. */
125
+ declare function EmployeeMenu({
126
+ renderLink,
127
+ view,
128
+ identity,
129
+ onModel,
130
+ onSignOut,
131
+ companion,
132
+ passkeys,
133
+ follow,
134
+ workbenchNavigation,
135
+ navigation
136
+ }: EmployeeMenuProps): React.JSX.Element;
137
+ /** Bar links to Files, Plugins, and host views; the compact overflow carries them instead. */
138
+ declare function EmployeeWorkbenchLinks({
139
+ view,
140
+ renderLink,
141
+ workbenchNavigation,
142
+ navigation
143
+ }: {
144
+ view: EmployeeView;
145
+ renderLink: EmployeeRenderLink;
146
+ workbenchNavigation?: readonly EmployeeWorkbenchItem[];
147
+ navigation?: readonly EmployeeWorkbenchItem[];
148
+ }): React.JSX.Element | null;
149
+ interface EmployeeShellProps<Thread extends ThinkThreadItem = ThinkThreadItem> extends EmployeeMenuProps {
150
+ view: EmployeeView;
151
+ /** Compact workbench back control; the host can return from a file to its workspace. */
152
+ compactBack?: React.ReactNode;
153
+ /** Host-projected thread history; the chrome neither fetches nor persists it. */
154
+ threads?: readonly Thread[];
155
+ /** Selected thread, used for the title, the picker, and the return link. */
156
+ threadId?: string;
157
+ /** The delegated run this chrome is drilled into, when it is drilled into one. */
158
+ agentRun?: EmployeeAgentRun;
159
+ /** Caller-owned leading bar content, such as the extension's navigation control. */
160
+ appBarLeading?: React.ReactNode;
161
+ /** Passed the whole history item after the thread picker confirms removal. */
162
+ onDeleteThread?: (thread: Thread) => void | Promise<void>;
163
+ /** Shared manager shell supplies workforce navigation in place of thread-only navigation. */
164
+ sidebar?: React.ComponentProps<typeof ResponsiveSidebarShell>["sidebar"];
165
+ sidebarLabel?: string;
166
+ navigation?: readonly EmployeeWorkbenchItem[];
167
+ children: React.ReactNode;
168
+ }
169
+ declare function EmployeeShell<Thread extends ThinkThreadItem = ThinkThreadItem>({
170
+ view,
171
+ threads,
172
+ threadId,
173
+ agentRun,
174
+ renderLink,
175
+ appBarLeading,
176
+ compactBack,
177
+ onDeleteThread,
178
+ sidebar,
179
+ sidebarLabel,
180
+ navigation,
181
+ children,
182
+ ...menu
183
+ }: EmployeeShellProps<Thread>): React.JSX.Element;
184
+ /** Policy and connection gates are host facts, not design-system presets. */
185
+ declare function EmployeeGate({
186
+ status,
187
+ connectingLabel,
188
+ identity,
189
+ brand,
190
+ modelSetup
191
+ }: {
192
+ status: EmployeeStatus;
193
+ connectingLabel?: string;
194
+ identity?: EmployeeIdentity;
195
+ brand: EmployeeBrand;
196
+ modelSetup?: EmployeeModelSetup;
197
+ }): React.JSX.Element | null;
198
+ /** The composer remains under its existing prompt provider; connection controls are explicit slots. */
199
+ declare function EmployeeWelcome({
200
+ brand,
201
+ children,
202
+ suggestions,
203
+ suggestionsError,
204
+ onRetrySuggestions,
205
+ onSubmit,
206
+ tray,
207
+ setupActions,
208
+ hasConnectedApps
209
+ }: {
210
+ brand: EmployeeBrand;
211
+ children: React.ReactNode;
212
+ suggestions?: readonly {
213
+ label: string;
214
+ value: string;
215
+ }[];
216
+ suggestionsError?: boolean;
217
+ onRetrySuggestions?: () => void;
218
+ onSubmit: (message: PromptInputMessage) => void | Promise<void>;
219
+ tray?: React.ReactNode; /** Slack, Discord, and local-folder actions composed by the host. */
220
+ setupActions?: React.ReactNode;
221
+ hasConnectedApps?: boolean;
222
+ }): React.JSX.Element;
223
+ declare const EmployeeChrome: {
224
+ Shell: typeof EmployeeShell;
225
+ Menu: typeof EmployeeMenu;
226
+ WorkbenchLinks: typeof EmployeeWorkbenchLinks;
227
+ Gate: typeof EmployeeGate;
228
+ Welcome: typeof EmployeeWelcome;
229
+ };
230
+ //#endregion
231
+ export { EmployeeDestination as a, EmployeeMenuProps as c, EmployeeRenderLink as d, EmployeeShellProps as f, EmployeeWorkbenchItem as h, EmployeeCompanion as i, EmployeeModelSetup as l, EmployeeView as m, EmployeeBrand as n, EmployeeFollow as o, EmployeeStatus as p, EmployeeChrome as r, EmployeeIdentity as s, EmployeeAgentRun as t, EmployeePasskeyVault as u };
@@ -7,6 +7,8 @@ interface IconButtonProps extends Omit<ButtonProps, "aria-label" | "children" |
7
7
  children: React.ReactNode;
8
8
  /** Accessible name and default tooltip text for the icon-only control. */
9
9
  label: string;
10
+ /** Optional visible label, hidden at widths of 36rem or less (including narrow containers). */
11
+ responsiveLabel?: string;
10
12
  /** Tooltip content when it should differ from the accessible name. */
11
13
  tooltip?: React.ReactNode;
12
14
  /** Preferred side for the tooltip. */
@@ -22,6 +24,7 @@ interface IconButtonProps extends Omit<ButtonProps, "aria-label" | "children" |
22
24
  declare function IconButton({
23
25
  children,
24
26
  label,
27
+ responsiveLabel,
25
28
  size,
26
29
  tooltip,
27
30
  tooltipSide,
@@ -1,10 +1,11 @@
1
1
  import { findCatalogMcpServerCard, getMcpServerIconSrc } from "./utils/mcp-server-catalog.js";
2
2
  import { t as cx } from "./class-names-BiMDVpUo.js";
3
- import { C as FolderIcon, D as LinkIcon, K as SpinnerIcon, L as PauseIcon, P as MonitorIcon, S as FileIcon, T as InfoIcon, _ as DotIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, j as MessageSquareIcon, p as ChevronRightIcon, u as CalendarIcon } from "./icons-cuEtsgj9.js";
3
+ import { C as FolderIcon, D as LinkIcon, K as SpinnerIcon, L as PauseIcon, P as MonitorIcon, S as FileIcon, T as InfoIcon, _ as DotIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon, j as MessageSquareIcon, nt as XIcon, p as ChevronRightIcon, u as CalendarIcon } from "./icons-cuEtsgj9.js";
4
4
  import { Collapsible } from "./components/foundations/Collapsible.js";
5
5
  import { Button } from "./components/foundations/Button.js";
6
6
  import { Tooltip } from "./components/foundations/Tooltip.js";
7
7
  import { EmptyState } from "./components/foundations/EmptyState.js";
8
+ import { AppTopBar } from "./components/general-purpose/AppTopBar.js";
8
9
  import { Avatar } from "./components/foundations/Avatar.js";
9
10
  import { AppIcon } from "./components/foundations/AppIcon.js";
10
11
  import { LinkButton } from "./components/foundations/LinkButton.js";
@@ -137,7 +138,8 @@ function EmployeePresence({ employee }) {
137
138
  return /* @__PURE__ */ jsx("span", {
138
139
  className: "manager-office__nav-status",
139
140
  "data-status": employee.status,
140
- "aria-hidden": "true"
141
+ "aria-hidden": "true",
142
+ children: employee.status === "needs-you" || employee.status === "issue" ? /* @__PURE__ */ jsx(WarningIcon, {}) : employee.status === "unavailable" ? /* @__PURE__ */ jsx(XIcon, {}) : employee.status === "working" || employee.status === "connecting" ? /* @__PURE__ */ jsx(SpinnerIcon, {}) : employee.status === "offline" ? /* @__PURE__ */ jsx(MonitorIcon, {}) : /* @__PURE__ */ jsx(PauseIcon, {})
141
143
  });
142
144
  }
143
145
  /**
@@ -520,7 +522,7 @@ function ManagerOfficeSidebar({ className, closeSidebarOnCompact, content, emplo
520
522
  children: [
521
523
  /* @__PURE__ */ jsxs("div", {
522
524
  className: "manager-office__sidebar-heading",
523
- children: [isChat ? null : /* @__PURE__ */ jsx("strong", { children: "Workforce" }), officeActions ? /* @__PURE__ */ jsx("span", {
525
+ children: [/* @__PURE__ */ jsx("strong", { children: "Workforce" }), officeActions ? /* @__PURE__ */ jsx("span", {
524
526
  className: "manager-office__sidebar-actions",
525
527
  children: officeActions
526
528
  }) : null]
@@ -1044,12 +1046,15 @@ function ManagerOfficeChannels({ className, ...props }) {
1044
1046
  const employee = useEmployee();
1045
1047
  return /* @__PURE__ */ jsxs("section", {
1046
1048
  ...props,
1047
- className: cx("manager-office__section", className),
1048
- children: [/* @__PURE__ */ jsx("header", {
1049
- className: "manager-office__section-header",
1050
- children: /* @__PURE__ */ jsxs("h2", {
1051
- className: "manager-office__section-title",
1052
- children: [/* @__PURE__ */ jsx(LinkIcon, {}), "Channels"]
1049
+ className: cx("manager-office__section", "manager-office__channels", className),
1050
+ children: [/* @__PURE__ */ jsx(AppTopBar.Root, {
1051
+ className: "manager-office__channels-header",
1052
+ "aria-label": "Channels controls",
1053
+ titleAlign: "start",
1054
+ children: /* @__PURE__ */ jsxs(AppTopBar.Title, {
1055
+ className: "manager-office__channels-title",
1056
+ render: /* @__PURE__ */ jsx("h2", { "aria-label": "Channels" }),
1057
+ children: [/* @__PURE__ */ jsx(LinkIcon, { "aria-hidden": "true" }), "Channels"]
1053
1058
  })
1054
1059
  }), /* @__PURE__ */ jsx("div", {
1055
1060
  className: "manager-office__section-content",
@@ -0,0 +1,94 @@
1
+ import { l as DialogProps } from "./Dialog-88GF7_Th.js";
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
94
+ export { McpPluginDetailsDialogProps as a, McpPluginDetailsDialog as i, McpPluginCatalogProps as n, McpPluginDetails as r, McpPluginCatalog as t };
@@ -1,5 +1,5 @@
1
- import { n as IconButtonProps } from "./IconButton-ByiyjkYE.js";
2
- import { t as CopyButtonProps } from "./copy-button-OUwOdgEm.js";
1
+ import { n as IconButtonProps } from "./IconButton-CAlFVb2L.js";
2
+ import { t as CopyButtonProps } from "./copy-button-CJYYgCIU.js";
3
3
  import * as React from "react";
4
4
  import { FileUIPart, UIMessage } from "ai";
5
5
  import { StreamdownProps } from "streamdown";
@@ -5,6 +5,8 @@ import * as React from "react";
5
5
  interface ResponsiveSidebarShellControls {
6
6
  /** The shell's current container layout, shared by in-shell and portalled controls. */
7
7
  compact: boolean;
8
+ /** Whether the main content needs compact controls after accounting for the sidebar. */
9
+ contentCompact: boolean;
8
10
  /** Close the sidebar and move focus to the main content. */
9
11
  closeSidebar: () => void;
10
12
  /** Close only when the shell is currently using its compact drawer layout. */
@@ -30,7 +32,7 @@ interface AppBarSlots {
30
32
  };
31
33
  /** App-owned leading navigation that owns the leading slot at every width. */
32
34
  leading?: React.ReactNode;
33
- /** Compact-only navigation that replaces the drawer trigger without hiding the wide rail toggle. */
35
+ /** Navigation for compact main content. Replaces back/leading and the drawer trigger only while the main column is compact. */
34
36
  compactLeading?: React.ReactNode;
35
37
  /** Bar title content. Hidden at compact widths when `compactTitleTrigger` stands in. */
36
38
  title?: React.ReactNode;
@@ -1,6 +1,6 @@
1
1
  import { n as mergeBaseClassName } from "./class-names-BiMDVpUo.js";
2
2
  import { B as PlusIcon, d as CheckIcon, et as WarningIcon, f as ChevronDownIcon } from "./icons-cuEtsgj9.js";
3
- import { Button } from "./components/foundations/Button.js";
3
+ import { IconButton } from "./components/foundations/IconButton.js";
4
4
  import { Menu } from "./components/foundations/Menu.js";
5
5
  import * as React from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -53,14 +53,15 @@ function SetupChecklistGroup({ label, entries, defaultOpen = false, onSelect })
53
53
  /** Progress-aware tray trigger opening the checklist in its own menu. */
54
54
  function SetupChecklistAction({ actionLabel, label, entries, onSelect }) {
55
55
  const completed = entries.filter((entry) => entry.complete).length;
56
- return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Button, {
56
+ return /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsx(IconButton, {
57
57
  type: "button",
58
58
  variant: "ghost",
59
59
  color: "neutral",
60
60
  size: "sm",
61
- "aria-label": `${actionLabel} — ${completed} of ${entries.length} set up`,
61
+ label: `${actionLabel} — ${completed} of ${entries.length} set up`,
62
+ responsiveLabel: actionLabel,
62
63
  render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
63
- children: [completed === entries.length ? /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(WarningIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", { children: actionLabel })]
64
+ children: completed === entries.length ? /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(WarningIcon, { "aria-hidden": "true" })
64
65
  }), /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
65
66
  side: "bottom",
66
67
  align: "start",
@@ -56,6 +56,8 @@ interface ThinkThreadPickerProps<Thread extends ThinkThreadItem = ThinkThreadIte
56
56
  onDelete?: (thread: Thread) => void | Promise<void>;
57
57
  /** Visible heading for the roster. */
58
58
  title?: React.ReactNode;
59
+ /** Controls placed after the new-thread action in the shared roster header. */
60
+ headerActions?: React.ReactNode;
59
61
  /** Accessible label for the list navigation. */
60
62
  "aria-label"?: string;
61
63
  }
@@ -81,6 +83,7 @@ declare function ThinkThreadPicker<Thread extends ThinkThreadItem>({
81
83
  onDelete,
82
84
  className,
83
85
  title,
86
+ headerActions,
84
87
  "aria-label": ariaLabel,
85
88
  ref,
86
89
  ...props
@@ -1,4 +1,4 @@
1
- import { a as WorkspaceMediaInfo, i as WorkspaceFileState, r as WorkspaceFileAssetResolver, t as WorkspaceFileAsset } from "./WorkspaceFile-Bouauobc.js";
1
+ import { a as WorkspaceMediaInfo, i as WorkspaceFileState, r as WorkspaceFileAssetResolver, t as WorkspaceFileAsset } from "./WorkspaceFile-19WP0EU1.js";
2
2
  import { DataTag, QueryClient, QueryKey, UnusedSkipTokenOptions } from "@tanstack/react-query";
3
3
  import { FileInfo, Workspace, WorkspaceFsLike } from "@cloudflare/shell";
4
4
 
@@ -0,0 +1,20 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ //#region src/components/_internal/WorkspaceConceptPanel.tsx
3
+ /** Shared workbench chrome keeps the title visible while its content scrolls. */
4
+ function WorkspaceConceptPanel({ heading, children, ...props }) {
5
+ return /* @__PURE__ */ jsxs("section", {
6
+ ...props,
7
+ children: [/* @__PURE__ */ jsx("header", {
8
+ className: "workspace-concept-panel__header",
9
+ children: /* @__PURE__ */ jsx("h2", {
10
+ className: "workspace-concept-panel__title",
11
+ children: heading
12
+ })
13
+ }), /* @__PURE__ */ jsx("div", {
14
+ className: "workspace-concept-panel__body",
15
+ children
16
+ })]
17
+ });
18
+ }
19
+ //#endregion
20
+ export { WorkspaceConceptPanel as t };
@@ -1,4 +1,4 @@
1
- import { O as CodeBlockLanguage } from "./CodeBlock--r6GS8YV.js";
1
+ import { O as CodeBlockLanguage } from "./CodeBlock-DJ99TQWy.js";
2
2
  import { SkillParseResult } from "agent-skills-ts-sdk";
3
3
  import { FileInfo } from "@cloudflare/shell";
4
4
 
@@ -1,7 +1,7 @@
1
1
  import { b as EyeIcon, d as CheckIcon, et as WarningIcon, k as MaximizeIcon, m as CodeIcon, r as ArrowLeftIcon, v as DownloadIcon } from "./icons-cuEtsgj9.js";
2
2
  import { i as formatClock } from "./format-COCyV98Z.js";
3
3
  import { AppTopBar } from "./components/general-purpose/AppTopBar.js";
4
- import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-g8sADidM.js";
4
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-Bl-q7wMc.js";
5
5
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/agents-sdk/WorkspaceFile.js";
6
6
  import { i as useWorkspaceNavigationContext } from "./WorkspaceLink-BYZG-V_I.js";
7
7
  import { useWorkspaceNavigationRestoration } from "./components/agents-sdk/WorkspaceNavigationRestoration.js";
@@ -546,6 +546,7 @@ function WorkspaceFileView({ appearance = "contained", file, path, isLoading, is
546
546
  path,
547
547
  leading: workspaceNavigation ? /* @__PURE__ */ jsx(AppTopBar.Link, {
548
548
  label: "Back to workspace",
549
+ "data-workspace-back": "",
549
550
  render: workspaceNavigation.navigation.renderLink({ kind: "files" }),
550
551
  children: /* @__PURE__ */ jsx(ArrowLeftIcon, { "aria-hidden": "true" })
551
552
  }) : leading,
@@ -1,4 +1,4 @@
1
- import { O as MessageResponseProps } from "./Message-DyaTBiV7.js";
1
+ import { O as MessageResponseProps } from "./Message-COsMPZSC.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/WorkspaceMessageResponse.d.ts
@@ -0,0 +1,33 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/agents-sdk/WorkspaceMountManager.d.ts
4
+ type WorkspaceMountPermission = "granted" | "prompt" | "denied" | "unavailable";
5
+ interface WorkspaceMountItem {
6
+ id: string;
7
+ path: string;
8
+ permission: WorkspaceMountPermission;
9
+ }
10
+ interface WorkspaceMountManagerProps {
11
+ mounts: readonly WorkspaceMountItem[];
12
+ adding?: boolean;
13
+ busyMountId?: string | null;
14
+ error?: React.ReactNode;
15
+ onAdd: () => void;
16
+ onReconnect: (mount: WorkspaceMountItem) => void;
17
+ onRemove: (mount: WorkspaceMountItem) => void;
18
+ /** Caller-owned button, including its accessible name and optional toolbar composition. */
19
+ trigger: React.ReactElement;
20
+ }
21
+ /** Controlled local-mount presentation; native handles and persistence stay in the host. */
22
+ declare function WorkspaceMountManager({
23
+ mounts,
24
+ adding,
25
+ busyMountId,
26
+ error,
27
+ onAdd,
28
+ onReconnect,
29
+ onRemove,
30
+ trigger
31
+ }: WorkspaceMountManagerProps): React.JSX.Element;
32
+ //#endregion
33
+ export { WorkspaceMountPermission as i, WorkspaceMountManager as n, WorkspaceMountManagerProps as r, WorkspaceMountItem as t };
@@ -0,0 +1,54 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="390 289.5 420 420">
2
+ <title>SigVelo</title>
3
+ <style>
4
+ @media (prefers-color-scheme: dark) {
5
+ #top-gradient stop:nth-child(2) { stop-color: #06e8ff }
6
+ #top-gradient stop:nth-child(3) { stop-color: #25dfff }
7
+ #top-gradient stop:nth-child(4) { stop-color: #2ed1ff }
8
+ #top-gradient stop:nth-child(5) { stop-color: #36bdff }
9
+ #top-gradient stop:nth-child(6) { stop-color: #3ca4ff }
10
+ #top-gradient stop:nth-child(7) { stop-color: #3b85ff }
11
+ #top-gradient stop:nth-child(8) { stop-color: #3566ff }
12
+ #top-gradient stop:nth-child(9) { stop-color: #3561ff }
13
+ #bottom-gradient stop:nth-child(2) { stop-color: #17e8ff }
14
+ #bottom-gradient stop:nth-child(3) { stop-color: #2fe1ff }
15
+ #bottom-gradient stop:nth-child(4) { stop-color: #40d5ff }
16
+ #bottom-gradient stop:nth-child(5) { stop-color: #49c5ff }
17
+ #bottom-gradient stop:nth-child(6) { stop-color: #4cb1ff }
18
+ #bottom-gradient stop:nth-child(7) { stop-color: #4999ff }
19
+ #bottom-gradient stop:nth-child(8) { stop-color: #4081ff }
20
+ #bottom-gradient stop:nth-child(9) { stop-color: #316bff }
21
+ #bottom-gradient stop:nth-child(10) { stop-color: #2a64ff }
22
+ .body { fill: #26e5ff }
23
+ }
24
+ </style>
25
+ <defs>
26
+ <linearGradient id="top-gradient" x1="756.23" y1="475.14" x2="608.29" y2="352.58" gradientUnits="userSpaceOnUse">
27
+ <stop stop-color="#00ebff"/>
28
+ <stop offset=".17" stop-color="#00e7fe"/>
29
+ <stop offset=".32" stop-color="#01dcfd"/>
30
+ <stop offset=".46" stop-color="#04cbfa"/>
31
+ <stop offset=".59" stop-color="#08b2f6"/>
32
+ <stop offset=".72" stop-color="#0c91f2"/>
33
+ <stop offset=".85" stop-color="#1269ec"/>
34
+ <stop offset=".98" stop-color="#183be6"/>
35
+ <stop offset="1" stop-color="#1a32e5"/>
36
+ </linearGradient>
37
+ <linearGradient id="bottom-gradient" x1="452.57" y1="524.29" x2="583.8" y2="641.28" gradientUnits="userSpaceOnUse">
38
+ <stop stop-color="#00ebff"/>
39
+ <stop offset=".24" stop-color="#00e8ff"/>
40
+ <stop offset=".38" stop-color="#00e0ff"/>
41
+ <stop offset=".5" stop-color="#00d1ff"/>
42
+ <stop offset=".61" stop-color="#00bdff"/>
43
+ <stop offset=".71" stop-color="#00a3ff"/>
44
+ <stop offset=".8" stop-color="#0082ff"/>
45
+ <stop offset=".88" stop-color="#005cff"/>
46
+ <stop offset=".96" stop-color="#0030ff"/>
47
+ <stop offset="1" stop-color="#0118ff"/>
48
+ </linearGradient>
49
+ </defs>
50
+ <path fill="url(#top-gradient)" d="m746.99 482.75-145.57-84.52 60.02-34.87 71.05 41.28a29.03 29.03 0 0 1 14.47 25.13l.03 52.97Z"/>
51
+ <path fill="url(#bottom-gradient)" d="m602.51 601.74-60.02 34.87-29.12-16.94-45.85-26.63a29.03 29.03 0 0 1-14.48-25.14l-.03-53 59.5 34.57.79.46 89.21 51.8Z"/>
52
+ <path class="body" fill="#00e4ff" d="m732.58 595.89-115.46 67.09a29.16 29.16 0 0 1-29.22 0l-45.41-26.38 60.02-34.87 84.29-48.96-.07-84.18 60.29 35.03.03 67.1a29.05 29.05 0 0 1-14.47 25.16Z"/>
53
+ <path class="body" fill="#00e4ff" d="m661.44 363.37-60.02 34.87-88.19 51.21.07 79.61-60.32-35.03-.03-62.5a29.05 29.05 0 0 1 14.48-25.16l119.39-69.35a29.16 29.16 0 0 1 29.2 0l45.42 26.36Z"/>
54
+ </svg>
@@ -1,7 +1,7 @@
1
1
  import { D as PromptInputCommandDefinition, J as PromptInputMessage, r as PromptInput, vt as PromptInputTray } from "../../PromptInput-DGPrCTPl.js";
2
2
  import { r as AgentChatQueuedPrompt } from "../../AgentChatQueue-MrHhV901.js";
3
3
  import { i as AgentMessageRenderPartContext } from "../../AgentMessageParts-C7L-Mv9U.js";
4
- import { i as MessageActions } from "../../Message-DyaTBiV7.js";
4
+ import { i as MessageActions } from "../../Message-COsMPZSC.js";
5
5
  import { t as VirtualMessageScrollAnchor } from "../../MessageScrollerVirtual-D4afYwVB.js";
6
6
  import { a as getPendingToolApprovals } from "../../PromptInputApproval-D2hpn54U.js";
7
7
  import * as React from "react";
@@ -77,7 +77,11 @@ declare function AgentChatTranscript<MessageT extends UIMessage = UIMessage>({
77
77
  className,
78
78
  scrollAnchor
79
79
  }: AgentChatTranscriptProps<MessageT>): React.JSX.Element;
80
- declare function AgentChatLoading(): React.JSX.Element;
80
+ declare function AgentChatLoading({
81
+ label
82
+ }: {
83
+ label?: string;
84
+ }): React.JSX.Element;
81
85
  interface AgentChatMessageProps<MessageT extends UIMessage = UIMessage> extends AgentChatRenderMessageContext<MessageT> {
82
86
  children: React.ReactNode;
83
87
  }