@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
@@ -1,14 +1,17 @@
1
1
  import { findCatalogMcpServerCard } from "../../utils/mcp-server-catalog.js";
2
- import { A as McpIcon, C as FolderIcon, K as SpinnerIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, V as QueueIcon, Z as TerminalIcon, b as EyeIcon, c as BoxIcon, et as WarningIcon, o as ArrowUpRightIcon, q as SquareIcon, r as ArrowLeftIcon, y as EllipsisIcon } from "../../icons-cuEtsgj9.js";
2
+ import { A as McpIcon, C as FolderIcon, F as MoonIcon, K as SpinnerIcon, P as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, V as QueueIcon, W as SidebarIcon, Y as SunIcon, Z as TerminalIcon, b as EyeIcon, c as BoxIcon, et as WarningIcon, o as ArrowUpRightIcon, q as SquareIcon, r as ArrowLeftIcon, y as EllipsisIcon } from "../../icons-cuEtsgj9.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Tooltip } from "../foundations/Tooltip.js";
5
+ import { IconButton } from "../foundations/IconButton.js";
5
6
  import { Dialog } from "../foundations/Dialog.js";
6
7
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
7
8
  import { SubagentRunLabel, getSubagentRunName } from "./SubagentRunIndicator.js";
8
9
  import { Menu } from "../foundations/Menu.js";
9
- import { EmptyState } from "../foundations/EmptyState.js";
10
+ import { BrandLoading } from "../general-purpose/BrandLoading.js";
10
11
  import { AgentChat } from "./AgentChat.js";
11
- import "../foundations/icons.js";
12
+ import { EmptyState } from "../foundations/EmptyState.js";
13
+ import { AppTopBar } from "../general-purpose/AppTopBar.js";
14
+ import { n as isPlainPrimaryLinkActivation } from "../../navigation-link-kqMa81v5.js";
12
15
  import { AgentChatStartScreen, AgentChatStartScreenComposer, AgentChatStartScreenPrimary, AgentChatStartScreenSuggestions, AgentChatStartScreenTray, AgentChatStarterList } from "../ai-sdk/AgentChatStartScreen.js";
13
16
  import { ChatGptSignInScreen } from "../extension/ChatGptSignInScreen.js";
14
17
  import { Avatar } from "../foundations/Avatar.js";
@@ -16,7 +19,6 @@ import { DescriptionList } from "../foundations/DescriptionList.js";
16
19
  import { Switch } from "../foundations/Switch.js";
17
20
  import { useTheme } from "../foundations/ThemeProvider.js";
18
21
  import { ActionGuide, ActionGuideAction, ActionGuideList, ActionGuideSection } from "../general-purpose/ActionGuide.js";
19
- import { AppTopBar } from "../general-purpose/AppTopBar.js";
20
22
  import { ResponsiveSidebarShell, useResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
21
23
  import { McpServerIcon } from "./McpServerIcon.js";
22
24
  import { ThinkThreadPicker } from "./ThinkThreadPicker.js";
@@ -32,24 +34,13 @@ const WORKBENCH_NAVIGATION = [{
32
34
  label: "Plugins",
33
35
  icon: /* @__PURE__ */ jsx(BoxIcon, {})
34
36
  }];
35
- function MenuGroupLabel({ label, hint }) {
36
- return /* @__PURE__ */ jsxs(Menu.GroupLabel, {
37
- className: "employee-menu__group-label",
38
- children: [label, /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsx(Tooltip.Trigger, {
39
- render: /* @__PURE__ */ jsx("span", {
40
- className: "employee-menu__hint",
41
- tabIndex: 0,
42
- "aria-label": label + " help"
43
- }),
44
- children: /* @__PURE__ */ jsx(InfoIcon, { "aria-hidden": "true" })
45
- }), /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, { children: /* @__PURE__ */ jsx(Tooltip.Popup, { children: hint }) }) })] })]
46
- });
47
- }
48
- function MenuSwitchItem({ label, checked, onCheckedChange }) {
49
- return /* @__PURE__ */ jsxs(Menu.CheckboxItem, {
50
- className: "employee-menu__switch",
51
- checked,
52
- onCheckedChange,
37
+ function MenuSwitchItem({ label, hint, checked, onCheckedChange }) {
38
+ return /* @__PURE__ */ jsxs(Tooltip.Root, { children: [/* @__PURE__ */ jsxs(Tooltip.Trigger, {
39
+ render: /* @__PURE__ */ jsx(Menu.CheckboxItem, {
40
+ className: "employee-menu__switch",
41
+ checked,
42
+ onCheckedChange
43
+ }),
53
44
  children: [label, /* @__PURE__ */ jsx(Switch.Root, {
54
45
  "aria-hidden": true,
55
46
  tabIndex: -1,
@@ -58,11 +49,11 @@ function MenuSwitchItem({ label, checked, onCheckedChange }) {
58
49
  checked,
59
50
  children: /* @__PURE__ */ jsx(Switch.Thumb, {})
60
51
  })]
61
- });
52
+ }), /* @__PURE__ */ jsx(Tooltip.Portal, { children: /* @__PURE__ */ jsx(Tooltip.Positioner, { children: /* @__PURE__ */ jsx(Tooltip.Popup, { children: hint }) }) })] });
62
53
  }
63
54
  /** Employee settings are host-owned state; the menu stores only dialog visibility. */
64
- function EmployeeMenu({ renderLink, identity, onModel, onSignOut, companion, passkeys, follow, workbenchNavigation = [] }) {
65
- const { compact } = useResponsiveSidebarShell();
55
+ function EmployeeMenu({ renderLink, view = "chat", identity, onModel, onSignOut, companion, passkeys, follow, workbenchNavigation = [], navigation }) {
56
+ const { contentCompact: compact } = useResponsiveSidebarShell();
66
57
  const { preference, setPreference } = useTheme();
67
58
  const [identityOpen, setIdentityOpen] = React.useState(false);
68
59
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
@@ -78,10 +69,10 @@ function EmployeeMenu({ renderLink, identity, onModel, onSignOut, companion, pas
78
69
  align: "end",
79
70
  sideOffset: 4,
80
71
  children: /* @__PURE__ */ jsxs(Menu.Popup, { children: [
81
- compact ? [...WORKBENCH_NAVIGATION, ...workbenchNavigation].map((item) => /* @__PURE__ */ jsxs(Menu.Item, {
72
+ compact ? (navigation ?? [...WORKBENCH_NAVIGATION, ...workbenchNavigation]).map((item) => /* @__PURE__ */ jsxs(Menu.Item, {
82
73
  render: renderLink({
83
74
  kind: "view",
84
- view: item.id
75
+ view: view === item.id ? "chat" : item.id
85
76
  }),
86
77
  children: [item.icon, item.label]
87
78
  }, item.id)) : null,
@@ -106,12 +97,10 @@ function EmployeeMenu({ renderLink, identity, onModel, onSignOut, companion, pas
106
97
  children: [/* @__PURE__ */ jsx(TerminalIcon, {}), "Model"]
107
98
  }) : null,
108
99
  companion ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Menu.Separator, {}), /* @__PURE__ */ jsxs(Menu.Group, { children: [
109
- /* @__PURE__ */ jsx(MenuGroupLabel, {
110
- label: "Companion app",
111
- hint: "Connecting lets this employee chat with the browser and watch it work from anywhere."
112
- }),
100
+ /* @__PURE__ */ jsx(Menu.GroupLabel, { children: "Companion app" }),
113
101
  /* @__PURE__ */ jsx(MenuSwitchItem, {
114
102
  label: "Connect this browser",
103
+ hint: "Connecting lets this employee chat with the browser and watch it work from anywhere.",
115
104
  checked: companion.enabled,
116
105
  onCheckedChange: companion.setEnabled
117
106
  }),
@@ -125,35 +114,58 @@ function EmployeeMenu({ renderLink, identity, onModel, onSignOut, companion, pas
125
114
  children: [/* @__PURE__ */ jsx(ArrowUpRightIcon, {}), companion.origin.replace(/^https?:\/\//, "")]
126
115
  })
127
116
  ] })] }) : null,
128
- passkeys ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Menu.Separator, {}), /* @__PURE__ */ jsxs(Menu.Group, { children: [/* @__PURE__ */ jsx(MenuGroupLabel, {
129
- label: "Passkeys",
130
- hint: "The employee saves and uses its own passkeys instead of the browser's."
131
- }), /* @__PURE__ */ jsx(MenuSwitchItem, {
117
+ passkeys ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Menu.Separator, {}), /* @__PURE__ */ jsxs(Menu.Group, { children: [/* @__PURE__ */ jsx(Menu.GroupLabel, { children: "Passkeys" }), /* @__PURE__ */ jsx(MenuSwitchItem, {
132
118
  label: "Use its own passkeys",
119
+ hint: "The employee saves and uses its own passkeys instead of the browser's.",
133
120
  checked: passkeys.enabled,
134
121
  onCheckedChange: passkeys.setEnabled
135
122
  })] })] }) : null,
136
123
  /* @__PURE__ */ jsx(Menu.Separator, {}),
137
- /* @__PURE__ */ jsxs(Menu.Group, { children: [/* @__PURE__ */ jsx(Menu.GroupLabel, { children: "Appearance" }), /* @__PURE__ */ jsxs(Menu.RadioGroup, {
138
- value: preference,
139
- onValueChange: (value) => {
140
- if (value === "light" || value === "dark" || value === "system") setPreference(value);
141
- },
142
- children: [
143
- /* @__PURE__ */ jsxs(Menu.RadioItem, {
144
- value: "light",
145
- children: [/* @__PURE__ */ jsx(Menu.RadioItemIndicator, {}), "Light"]
146
- }),
147
- /* @__PURE__ */ jsxs(Menu.RadioItem, {
148
- value: "dark",
149
- children: [/* @__PURE__ */ jsx(Menu.RadioItemIndicator, {}), "Dark"]
150
- }),
151
- /* @__PURE__ */ jsxs(Menu.RadioItem, {
152
- value: "system",
153
- children: [/* @__PURE__ */ jsx(Menu.RadioItemIndicator, {}), "System"]
154
- })
155
- ]
156
- })] }),
124
+ /* @__PURE__ */ jsxs(Menu.Group, {
125
+ className: "employee-menu__appearance",
126
+ children: [/* @__PURE__ */ jsx(Menu.GroupLabel, { children: "Appearance" }), /* @__PURE__ */ jsxs(Menu.RadioGroup, {
127
+ className: "employee-menu__theme-options",
128
+ value: preference,
129
+ onValueChange: (value) => {
130
+ if (value === "light" || value === "dark" || value === "system") setPreference(value);
131
+ },
132
+ children: [
133
+ /* @__PURE__ */ jsxs(Menu.RadioItem, {
134
+ value: "light",
135
+ className: "employee-menu__theme-option",
136
+ "aria-label": "Light",
137
+ title: "Light",
138
+ closeOnClick: false,
139
+ children: [/* @__PURE__ */ jsx(SunIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", {
140
+ className: "sigvelo-visually-hidden",
141
+ children: "Light"
142
+ })]
143
+ }),
144
+ /* @__PURE__ */ jsxs(Menu.RadioItem, {
145
+ value: "dark",
146
+ className: "employee-menu__theme-option",
147
+ "aria-label": "Dark",
148
+ title: "Dark",
149
+ closeOnClick: false,
150
+ children: [/* @__PURE__ */ jsx(MoonIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", {
151
+ className: "sigvelo-visually-hidden",
152
+ children: "Dark"
153
+ })]
154
+ }),
155
+ /* @__PURE__ */ jsxs(Menu.RadioItem, {
156
+ value: "system",
157
+ className: "employee-menu__theme-option",
158
+ "aria-label": "System",
159
+ title: "System",
160
+ closeOnClick: false,
161
+ children: [/* @__PURE__ */ jsx(MonitorIcon, { "aria-hidden": "true" }), /* @__PURE__ */ jsx("span", {
162
+ className: "sigvelo-visually-hidden",
163
+ children: "System"
164
+ })]
165
+ })
166
+ ]
167
+ })]
168
+ }),
157
169
  onSignOut ? /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Menu.Separator, {}), /* @__PURE__ */ jsxs(Menu.Item, {
158
170
  onClick: onSignOut,
159
171
  children: [/* @__PURE__ */ jsx(ArrowUpRightIcon, {}), "Sign out"]
@@ -214,16 +226,16 @@ function IdentityDialog({ identity, open, onOpenChange }) {
214
226
  });
215
227
  }
216
228
  /** Bar links to Files, Plugins, and host views; the compact overflow carries them instead. */
217
- function EmployeeWorkbenchLinks({ view, renderLink, workbenchNavigation = [] }) {
218
- const { compact } = useResponsiveSidebarShell();
229
+ function EmployeeWorkbenchLinks({ view, renderLink, workbenchNavigation = [], navigation }) {
230
+ const { contentCompact: compact } = useResponsiveSidebarShell();
219
231
  if (compact) return null;
220
- return /* @__PURE__ */ jsx(Fragment, { children: [...WORKBENCH_NAVIGATION, ...workbenchNavigation].map((item) => /* @__PURE__ */ jsx(AppTopBar.Link, {
232
+ return /* @__PURE__ */ jsx(Fragment, { children: (navigation ?? [...WORKBENCH_NAVIGATION, ...workbenchNavigation]).map((item) => /* @__PURE__ */ jsx(AppTopBar.Link, {
221
233
  label: item.label,
222
234
  "aria-current": view === item.id ? "page" : void 0,
223
235
  "data-pressed": view === item.id ? "" : void 0,
224
236
  render: renderLink({
225
237
  kind: "view",
226
- view: item.id
238
+ view: view === item.id ? "chat" : item.id
227
239
  }),
228
240
  children: item.icon
229
241
  }, item.id)) });
@@ -253,29 +265,9 @@ function employeeShellTitle({ agentRun, threadTitle }) {
253
265
  })] })
254
266
  });
255
267
  }
256
- function employeeShellLeading({ agentRun, view, hasThread, appBarLeading, back, renderLink }) {
257
- if (agentRun) return back;
258
- let navigation;
259
- if (view !== "chat") navigation = back;
260
- else if (hasThread) navigation = /* @__PURE__ */ jsx(AppTopBar.Link, {
261
- label: "New thread",
262
- render: renderLink({ kind: "new-thread" }),
263
- children: /* @__PURE__ */ jsx(PencilIcon, {})
264
- });
265
- if (!navigation && !appBarLeading) return null;
266
- return /* @__PURE__ */ jsxs(Fragment, { children: [navigation, appBarLeading] });
267
- }
268
268
  function employeeShellActions({ agentRun, view, renderLink, workbenchNavigation, focusedStop, navigation }) {
269
- if (!agentRun && navigation) return /* @__PURE__ */ jsx(Fragment, { children: navigation.map((item) => /* @__PURE__ */ jsx(AppTopBar.Link, {
270
- label: item.label,
271
- "aria-current": view === item.id ? "page" : void 0,
272
- render: renderLink({
273
- kind: "view",
274
- view: item.id
275
- }),
276
- children: item.icon
277
- }, item.id)) });
278
269
  if (!agentRun) return /* @__PURE__ */ jsx(EmployeeWorkbenchLinks, {
270
+ navigation,
279
271
  view,
280
272
  renderLink,
281
273
  workbenchNavigation
@@ -294,7 +286,18 @@ function employeeShellActions({ agentRun, view, renderLink, workbenchNavigation,
294
286
  children: /* @__PURE__ */ jsx(SquareIcon, {})
295
287
  });
296
288
  }
297
- function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLeading, onDeleteThread, sidebar, sidebarLabel = "threads", navigation, children, ...menu }) {
289
+ function EmployeeNewThread({ renderLink }) {
290
+ const { closeSidebar } = useResponsiveSidebarShell();
291
+ return /* @__PURE__ */ jsx(AppTopBar.Link, {
292
+ label: "New thread",
293
+ render: renderLink({ kind: "new-thread" }),
294
+ onClick: (event) => {
295
+ if (isPlainPrimaryLinkActivation(event)) closeSidebar();
296
+ },
297
+ children: /* @__PURE__ */ jsx(PencilIcon, {})
298
+ });
299
+ }
300
+ function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLeading, compactBack, onDeleteThread, sidebar, sidebarLabel = "threads", navigation, children, ...menu }) {
298
301
  const history = threads ?? EMPTY_THREADS;
299
302
  const thread = history.find((candidate) => candidate.id === threadId);
300
303
  const { backRef, focusedStop } = useEmployeeRunStopFocus();
@@ -326,8 +329,10 @@ function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLe
326
329
  className: "employee-shell",
327
330
  "data-view": view,
328
331
  children: /* @__PURE__ */ jsx(ResponsiveSidebarShell, {
332
+ className: "employee-shell__navigation",
329
333
  sidebarLabel,
330
- sidebarTogglePlacement: "sidebar",
334
+ defaultSidebarOpen: sidebar ? void 0 : false,
335
+ sidebarTogglePlacement: "main",
331
336
  showMainLabel: "Show selected thread",
332
337
  bar: {
333
338
  label: "Workbench controls",
@@ -336,14 +341,8 @@ function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLe
336
341
  threadTitle: thread?.title
337
342
  }),
338
343
  compactTitleTrigger: agentRun ? void 0 : /* @__PURE__ */ jsx("span", { children: thread?.title ?? "New chat" }),
339
- leading: employeeShellLeading({
340
- agentRun,
341
- view,
342
- hasThread: Boolean(thread),
343
- appBarLeading,
344
- back,
345
- renderLink
346
- }),
344
+ leading: agentRun ? back : /* @__PURE__ */ jsxs(Fragment, { children: [appBarLeading, /* @__PURE__ */ jsx(EmployeeNewThread, { renderLink })] }),
345
+ compactLeading: !agentRun && view !== "chat" ? compactBack ?? back : void 0,
347
346
  actions: employeeShellActions({
348
347
  agentRun,
349
348
  view,
@@ -354,17 +353,25 @@ function EmployeeShell({ view, threads, threadId, agentRun, renderLink, appBarLe
354
353
  }),
355
354
  primary: /* @__PURE__ */ jsx(EmployeeMenu, {
356
355
  ...menu,
356
+ view,
357
+ navigation,
357
358
  renderLink,
358
359
  follow: agentRun ? void 0 : menu.follow
359
- })
360
+ }, JSON.stringify([view, threadId]))
360
361
  },
361
- sidebar: sidebar ?? (agentRun ? void 0 : ({ closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ThinkThreadPicker, {
362
+ sidebar: sidebar ?? (agentRun ? void 0 : ({ closeSidebar, closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ThinkThreadPicker, {
363
+ headerActions: /* @__PURE__ */ jsx(IconButton, {
364
+ label: "Hide threads",
365
+ variant: "ghost",
366
+ size: "sm",
367
+ onClick: closeSidebar,
368
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
369
+ }),
362
370
  threads: history,
363
371
  renderThreadLink: (item) => renderLink({
364
372
  kind: "thread",
365
373
  threadId: item.id
366
374
  }),
367
- createThreadLink: renderLink({ kind: "new-thread" }),
368
375
  onSelect: closeSidebarOnCompact,
369
376
  onDelete: onDeleteThread
370
377
  })),
@@ -383,21 +390,13 @@ function EmployeeGate({ status, connectingLabel, identity, brand, modelSetup })
383
390
  label: modelSetup?.label,
384
391
  title: "Meet " + brand.name,
385
392
  brandName: "SigVelo",
386
- brandLogo: brand.logo,
387
393
  onSignIn: modelSetup?.onSignIn,
388
394
  secondaryAction: modelSetup?.onCustomEndpoint ? {
389
395
  label: "Set up a custom model endpoint",
390
396
  onSelect: modelSetup.onCustomEndpoint
391
397
  } : void 0
392
398
  });
393
- case "connecting": return /* @__PURE__ */ jsx("div", {
394
- className: "employee-gate",
395
- role: "status",
396
- children: /* @__PURE__ */ jsx(EmptyState, {
397
- icon: /* @__PURE__ */ jsx(SpinnerIcon, {}),
398
- description: connectingLabel ?? "Connecting…"
399
- })
400
- });
399
+ case "connecting": return /* @__PURE__ */ jsx(BrandLoading, { label: connectingLabel ?? "Connecting…" });
401
400
  case "offline": return /* @__PURE__ */ jsx("div", {
402
401
  className: "employee-gate",
403
402
  role: "status",
@@ -1,4 +1,4 @@
1
- import { EmployeeMenuProps } from "./EmployeeChrome.js";
1
+ import { c as EmployeeMenuProps } from "../../EmployeeChrome-C8eTGJWn.js";
2
2
  import { t as ThinkRoutine } from "../../ThinkRoutine-Cb1DdaHa.js";
3
3
  import { ThinkRoutineActionsRootProps } from "./ThinkRoutineActions.js";
4
4
  import * as React from "react";
@@ -1,7 +1,6 @@
1
1
  import { R as PencilIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
- import "../foundations/icons.js";
3
- import { StatusScreen } from "../general-purpose/StatusScreen.js";
4
2
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
3
+ import { StatusScreen } from "../general-purpose/StatusScreen.js";
5
4
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
6
5
  import { LinkButton } from "../foundations/LinkButton.js";
7
6
  import { EmployeeChrome } from "./EmployeeChrome.js";
@@ -1,8 +1,8 @@
1
1
  import { J as PromptInputMessage } from "../../PromptInput-DGPrCTPl.js";
2
- import { EmployeeBrand, EmployeeDestination } from "./EmployeeChrome.js";
2
+ import { a as EmployeeDestination, n as EmployeeBrand } from "../../EmployeeChrome-C8eTGJWn.js";
3
3
  import { SetupChecklistGroupProps } from "../general-purpose/SetupChecklist.js";
4
- import { McpPluginCatalogProps } from "./McpPluginCatalog.js";
5
- import { WorkspaceMountManagerProps } from "./WorkspaceMountManager.js";
4
+ import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-DNeHDrts.js";
5
+ import { r as WorkspaceMountManagerProps } from "../../WorkspaceMountManager-CkLI1B-G.js";
6
6
  import * as React from "react";
7
7
 
8
8
  //#region src/components/agents-sdk/EmployeeStartScreen.d.ts
@@ -25,6 +25,13 @@ interface EmployeeStartActions<Id extends string = string> {
25
25
  mounts?: Omit<WorkspaceMountManagerProps, "trigger">;
26
26
  personalization?: Pick<SetupChecklistGroupProps<Id>, "entries" | "onSelect">;
27
27
  }
28
+ interface EmployeeStartScreenProps<Id extends string = string> {
29
+ brand: EmployeeBrand;
30
+ start: EmployeeStartActions<Id>;
31
+ plugins?: McpPluginCatalogProps;
32
+ renderLink: (destination: EmployeeDestination) => React.ReactElement;
33
+ children: React.ReactNode;
34
+ }
28
35
  /** Canonical welcome screen, including configured connection states and connection menus. */
29
36
  declare function EmployeeStartScreen<Id extends string>({
30
37
  brand,
@@ -32,12 +39,6 @@ declare function EmployeeStartScreen<Id extends string>({
32
39
  plugins,
33
40
  renderLink,
34
41
  children
35
- }: {
36
- brand: EmployeeBrand;
37
- start: EmployeeStartActions<Id>;
38
- plugins?: McpPluginCatalogProps;
39
- renderLink: (destination: EmployeeDestination) => React.ReactElement;
40
- children: React.ReactNode;
41
- }): React.JSX.Element;
42
+ }: EmployeeStartScreenProps<Id>): React.JSX.Element;
42
43
  //#endregion
43
- export { EmployeeStartActions, EmployeeStartConnection, EmployeeStartScreen };
44
+ export { EmployeeStartActions, EmployeeStartConnection, EmployeeStartScreen, EmployeeStartScreenProps };
@@ -1,14 +1,13 @@
1
1
  import { C as FolderIcon, G as SlackIcon, I as PaperclipIcon, c as BoxIcon, g as DiscordIcon } from "../../icons-cuEtsgj9.js";
2
- import { Button } from "../foundations/Button.js";
2
+ import { IconButton } from "../foundations/IconButton.js";
3
3
  import { Menu } from "../foundations/Menu.js";
4
- import "../foundations/icons.js";
5
4
  import { ActionGuideAction } from "../general-purpose/ActionGuide.js";
6
5
  import { AppIcon } from "../foundations/AppIcon.js";
7
6
  import { EmployeeChrome } from "./EmployeeChrome.js";
8
- import { t as SetupChecklistAction } from "../../SetupChecklist-Btmy3-_C.js";
7
+ import { t as SetupChecklistAction } from "../../SetupChecklist-BiWQkKEq.js";
9
8
  import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
10
9
  import { WorkspaceMountManager } from "./WorkspaceMountManager.js";
11
- import "react";
10
+ import * as React from "react";
12
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
12
  //#region src/components/agents-sdk/EmployeeStartScreen.tsx
14
13
  function SetupActions({ start }) {
@@ -32,6 +31,8 @@ function SetupActions({ start }) {
32
31
  ] });
33
32
  }
34
33
  function StartComposerTray({ plugins, renderLink, start }) {
34
+ const [pluginTrigger, setPluginTrigger] = React.useState(null);
35
+ const menuBoundary = pluginTrigger?.closest(".agent-chat") ?? void 0;
35
36
  const connections = [{
36
37
  id: "discord",
37
38
  name: "Discord",
@@ -59,21 +60,25 @@ function StartComposerTray({ plugins, renderLink, start }) {
59
60
  }) : null,
60
61
  start.mounts ? /* @__PURE__ */ jsx(WorkspaceMountManager, {
61
62
  ...start.mounts,
62
- trigger: /* @__PURE__ */ jsxs(Button, {
63
+ trigger: /* @__PURE__ */ jsx(IconButton, {
63
64
  variant: "ghost",
64
65
  color: "neutral",
65
66
  size: "sm",
66
- children: [/* @__PURE__ */ jsx(PaperclipIcon, {}), "Attach folder"]
67
+ label: "Attach folder",
68
+ responsiveLabel: "Attach folder",
69
+ children: /* @__PURE__ */ jsx(PaperclipIcon, {})
67
70
  })
68
71
  }) : null,
69
- hasPluginMenu ? /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsxs(Button, {
72
+ hasPluginMenu ? /* @__PURE__ */ jsxs(Menu.Root, { children: [/* @__PURE__ */ jsx(IconButton, {
70
73
  type: "button",
71
74
  variant: "ghost",
72
75
  color: "neutral",
73
76
  size: "sm",
74
77
  render: /* @__PURE__ */ jsx(Menu.Trigger, { unstyled: true }),
75
- "aria-label": "Connect plugins",
76
- children: [/* @__PURE__ */ jsx("span", { children: "Connect plugins" }), /* @__PURE__ */ jsxs(AppIcon.Stack, {
78
+ label: "Connect plugins",
79
+ responsiveLabel: "Plugins",
80
+ ref: setPluginTrigger,
81
+ children: /* @__PURE__ */ jsxs(AppIcon.Stack, {
77
82
  "aria-hidden": "true",
78
83
  children: [/* @__PURE__ */ jsx(AppIcon.Root, {
79
84
  size: "xs",
@@ -84,14 +89,16 @@ function StartComposerTray({ plugins, renderLink, start }) {
84
89
  variant: "surface",
85
90
  children: /* @__PURE__ */ jsx(DiscordIcon, {})
86
91
  })]
87
- })]
92
+ })
88
93
  }), /* @__PURE__ */ jsx(Menu.Portal, { children: /* @__PURE__ */ jsx(Menu.Positioner, {
89
- side: "bottom",
90
- align: "start",
91
- sideOffset: 4,
94
+ side: "top",
95
+ align: "end",
96
+ sideOffset: 8,
97
+ collisionBoundary: menuBoundary,
98
+ collisionPadding: 8,
92
99
  children: /* @__PURE__ */ jsxs(Menu.Popup, {
93
100
  "aria-label": "Plugins",
94
- "data-recipe": "wide-scroll-picker",
101
+ className: "employee-start__plugins",
95
102
  children: [/* @__PURE__ */ jsx(McpServerPickerItems, {
96
103
  actions: connections,
97
104
  servers: plugins?.servers ?? [],
@@ -2,7 +2,6 @@ import { B as PlusIcon, y as EllipsisIcon } from "../../icons-cuEtsgj9.js";
2
2
  import { IconButton } from "../foundations/IconButton.js";
3
3
  import { a as formatErrorMessage } from "../../format-COCyV98Z.js";
4
4
  import { Menu } from "../foundations/Menu.js";
5
- import "../foundations/icons.js";
6
5
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
7
6
  import { Toast } from "../foundations/Toast.js";
8
7
  import "react";
@@ -1,3 +1,2 @@
1
- import "../foundations/icons.js";
2
- import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-D-7SOJ4x.js";
1
+ import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-CMJ7laGe.js";
3
2
  export { ManagerOffice, ManagerOfficeSidebar, ManagerOfficeSidebarAlert };
@@ -1,4 +1,4 @@
1
- import { EmployeeShellProps } from "./EmployeeChrome.js";
1
+ import { f as EmployeeShellProps } from "../../EmployeeChrome-C8eTGJWn.js";
2
2
  import { ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeEmployee } from "./ManagerOffice.js";
3
3
  import * as React from "react";
4
4
 
@@ -9,7 +9,7 @@ type ManagerOfficeView = {
9
9
  kind: "employee";
10
10
  employeeId: string;
11
11
  };
12
- interface ManagerWorkShellProps extends EmployeeShellProps {
12
+ interface ManagerWorkShellProps extends Omit<EmployeeShellProps, "appBarLeading"> {
13
13
  employees: readonly ManagerOfficeEmployee[];
14
14
  employee: ManagerOfficeEmployee;
15
15
  renderOfficeLink: (destination: ManagerOfficeDestination) => React.ReactElement;
@@ -1,11 +1,11 @@
1
- import { B as PlusIcon, C as FolderIcon, G as SlackIcon, P as MonitorIcon, R as PencilIcon, et as WarningIcon, j as MessageSquareIcon } from "../../icons-cuEtsgj9.js";
1
+ import { B as PlusIcon, C as FolderIcon, G as SlackIcon, P as MonitorIcon, R as PencilIcon, W as SidebarIcon, et as WarningIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
+ import { IconButton } from "../foundations/IconButton.js";
2
3
  import { EmptyState } from "../foundations/EmptyState.js";
3
- import "../foundations/icons.js";
4
4
  import { AppTopBar } from "../general-purpose/AppTopBar.js";
5
5
  import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
6
6
  import { ThinkThreadPicker } from "./ThinkThreadPicker.js";
7
7
  import { EmployeeChrome } from "./EmployeeChrome.js";
8
- import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-D-7SOJ4x.js";
8
+ import { n as ManagerOfficeSidebar, r as ManagerOfficeSidebarAlert, t as ManagerOffice } from "../../ManagerOffice-CMJ7laGe.js";
9
9
  import "react";
10
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
11
  //#region src/components/agents-sdk/ManagerOfficeScreens.tsx
@@ -16,20 +16,23 @@ function ManagerWorkShell({ employees, employee, renderOfficeLink, officeActions
16
16
  renderLink: renderOfficeLink,
17
17
  children: /* @__PURE__ */ jsx(EmployeeChrome.Shell, {
18
18
  ...chrome,
19
+ appBarLeading: /* @__PURE__ */ jsx(AppTopBar.Link, {
20
+ label: "Back to office",
21
+ render: renderOfficeLink({
22
+ kind: "employee",
23
+ employee
24
+ }),
25
+ children: /* @__PURE__ */ jsx(ArrowLeftIcon, {})
26
+ }),
19
27
  sidebarLabel: "employees",
20
28
  navigation: [
21
- {
22
- id: "chat",
23
- label: "Chat",
24
- icon: /* @__PURE__ */ jsx(MessageSquareIcon, {})
25
- },
26
29
  {
27
30
  id: "files",
28
31
  label: "Files",
29
32
  icon: /* @__PURE__ */ jsx(FolderIcon, {})
30
33
  },
31
34
  {
32
- id: "live",
35
+ id: "browser",
33
36
  label: "Browser",
34
37
  icon: /* @__PURE__ */ jsx(MonitorIcon, {})
35
38
  },
@@ -39,12 +42,18 @@ function ManagerWorkShell({ employees, employee, renderOfficeLink, officeActions
39
42
  icon: /* @__PURE__ */ jsx(SlackIcon, {})
40
43
  }
41
44
  ],
42
- sidebar: ({ closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ManagerOfficeSidebar, {
45
+ sidebar: ({ closeSidebar, closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ManagerOfficeSidebar, {
43
46
  layout: "chat",
44
47
  employees,
45
48
  selectedEmployeeId: employee.id,
46
49
  closeSidebarOnCompact,
47
- officeActions,
50
+ officeActions: /* @__PURE__ */ jsxs(Fragment, { children: [officeActions, /* @__PURE__ */ jsx(IconButton, {
51
+ label: "Hide workforce",
52
+ variant: "ghost",
53
+ size: "sm",
54
+ onClick: closeSidebar,
55
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
56
+ })] }),
48
57
  renderLink: (destination) => {
49
58
  if (destination.kind === "employee" && "work" in destination.employee) {
50
59
  const first = destination.employee.work[0];
@@ -127,18 +136,26 @@ function ManagerOfficeScreen({ employees, renderLink, view, emptyOfficeAction, o
127
136
  employees,
128
137
  renderLink,
129
138
  render: /* @__PURE__ */ jsx(ResponsiveSidebarShell, {
139
+ className: "employee-shell__navigation",
130
140
  sidebarLabel: "employees",
131
141
  showMainLabel: "Show workforce",
132
- sidebar: ({ closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ManagerOfficeSidebar, {
142
+ sidebar: ({ closeSidebar, closeSidebarOnCompact }) => /* @__PURE__ */ jsx(ManagerOfficeSidebar, {
133
143
  employees,
134
144
  renderLink,
135
145
  selectedEmployeeId: employee?.id ?? null,
136
146
  closeSidebarOnCompact,
137
- officeActions
147
+ officeActions: /* @__PURE__ */ jsxs(Fragment, { children: [officeActions, /* @__PURE__ */ jsx(IconButton, {
148
+ label: "Hide workforce",
149
+ variant: "ghost",
150
+ size: "sm",
151
+ onClick: closeSidebar,
152
+ children: /* @__PURE__ */ jsx(SidebarIcon, {})
153
+ })] })
138
154
  }),
139
155
  bar: {
140
156
  label: "Workforce controls",
141
157
  title,
158
+ compactTitleTrigger: /* @__PURE__ */ jsx("span", { children: title }),
142
159
  titleRender: (props) => /* @__PURE__ */ jsx("h1", {
143
160
  ...props,
144
161
  children: props.children