@mcp-b/react-components 0.51.1 → 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 (198) hide show
  1. package/dist/{CodeBlock-BMK6CW9D.js → CodeBlock-Bl-q7wMc.js} +2 -1
  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/{FileTree-okaLnS5j.js → FileTree-DruTQ-oa.js} +1 -1
  5. package/dist/{IconButton-ByiyjkYE.d.ts → IconButton-CAlFVb2L.d.ts} +3 -0
  6. package/dist/{ManagerOffice-5pEFpoV3.js → ManagerOffice-CMJ7laGe.js} +17 -12
  7. package/dist/McpPluginCatalog-DNeHDrts.d.ts +94 -0
  8. package/dist/{Message-DyaTBiV7.d.ts → Message-COsMPZSC.d.ts} +2 -2
  9. package/dist/{ResponsiveSidebarShell-CAmmtQTR.d.ts → ResponsiveSidebarShell-BUBQa_IV.d.ts} +3 -1
  10. package/dist/{SetupChecklist-O6qmgwz4.js → SetupChecklist-BiWQkKEq.js} +6 -5
  11. package/dist/{ThinkThreadPicker-yetGX_s5.d.ts → ThinkThreadPicker-DX0lL-P7.d.ts} +3 -0
  12. package/dist/{Workspace-HzGrWDX3.d.ts → Workspace-mzMZSdts.d.ts} +1 -1
  13. package/dist/WorkspaceConceptPanel-97ZyVpZI.js +20 -0
  14. package/dist/{WorkspaceFile-Bouauobc.d.ts → WorkspaceFile-19WP0EU1.d.ts} +1 -1
  15. package/dist/{WorkspaceFileView-ncZuIWhC.js → WorkspaceFileView-DXgTljKV.js} +3 -2
  16. package/dist/{WorkspaceMessageResponse-8lOSAbw_.d.ts → WorkspaceMessageResponse-BApg8KZv.d.ts} +1 -1
  17. package/dist/WorkspaceMountManager-CkLI1B-G.d.ts +33 -0
  18. package/dist/assets/sigvelo-logo.svg +54 -0
  19. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  20. package/dist/components/agents-sdk/AgentChat.d.ts +6 -2
  21. package/dist/components/agents-sdk/AgentChat.js +12 -16
  22. package/dist/components/agents-sdk/AgentEvent.js +2 -2
  23. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +2 -1
  24. package/dist/components/agents-sdk/BrowserLiveScreen.js +9 -1
  25. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  26. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  27. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  28. package/dist/components/agents-sdk/EmployeeApp.d.ts +43 -30
  29. package/dist/components/agents-sdk/EmployeeApp.js +47 -34
  30. package/dist/components/agents-sdk/EmployeeChat.d.ts +28 -8
  31. package/dist/components/agents-sdk/EmployeeChat.js +33 -5
  32. package/dist/components/agents-sdk/EmployeeChrome.d.ts +1 -219
  33. package/dist/components/agents-sdk/EmployeeChrome.js +106 -107
  34. package/dist/components/agents-sdk/EmployeeSchedules.d.ts +1 -1
  35. package/dist/components/agents-sdk/EmployeeSchedules.js +3 -4
  36. package/dist/components/agents-sdk/EmployeeStartScreen.d.ts +12 -11
  37. package/dist/components/agents-sdk/EmployeeStartScreen.js +23 -16
  38. package/dist/components/agents-sdk/ManagerAccountActions.js +3 -4
  39. package/dist/components/agents-sdk/ManagerOffice.js +1 -2
  40. package/dist/components/agents-sdk/ManagerOfficeScreens.d.ts +2 -2
  41. package/dist/components/agents-sdk/ManagerOfficeScreens.js +30 -13
  42. package/dist/components/agents-sdk/McpConnectionRequest.js +2 -2
  43. package/dist/components/agents-sdk/McpConnectorForm.js +1 -1
  44. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -93
  45. package/dist/components/agents-sdk/McpPluginCatalog.js +6 -6
  46. package/dist/components/agents-sdk/McpServerPicker.js +5 -5
  47. package/dist/components/agents-sdk/ModelEndpointDialog.js +1 -1
  48. package/dist/components/agents-sdk/ModelSelector.js +4 -4
  49. package/dist/components/agents-sdk/PromptInputApproval.js +1 -1
  50. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  51. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  52. package/dist/components/agents-sdk/SubagentRunPanel.d.ts +3 -0
  53. package/dist/components/agents-sdk/SubagentRunPanel.js +67 -47
  54. package/dist/components/agents-sdk/SubagentRunSelector.js +1 -1
  55. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -1
  56. package/dist/components/agents-sdk/ThinkChatActivity.js +3 -3
  57. package/dist/components/agents-sdk/ThinkChatToolPanels.js +2 -2
  58. package/dist/components/agents-sdk/ThinkExecutionDetail.js +2 -2
  59. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  60. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +7 -14
  61. package/dist/components/agents-sdk/ThinkFullApp.d.ts +2 -0
  62. package/dist/components/agents-sdk/ThinkFullApp.js +2 -0
  63. package/dist/components/agents-sdk/ThinkRecoveryNotice.js +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineActions.js +2 -2
  65. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +2 -2
  66. package/dist/components/agents-sdk/ThinkRoutineForm.js +4 -4
  67. package/dist/components/agents-sdk/ThinkRoutineRuns.js +1 -1
  68. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -1
  69. package/dist/components/agents-sdk/ThinkThreadPicker.js +33 -20
  70. package/dist/components/agents-sdk/WorkbenchBack.d.ts +18 -0
  71. package/dist/components/agents-sdk/WorkbenchBack.js +27 -0
  72. package/dist/components/agents-sdk/Workspace.d.ts +1 -1
  73. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  74. package/dist/components/agents-sdk/WorkspaceBrowser.js +3 -1
  75. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +1 -1
  76. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +6 -6
  77. package/dist/components/agents-sdk/WorkspaceExecution.js +13 -10
  78. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +4 -1
  79. package/dist/components/agents-sdk/WorkspaceExplorer.js +13 -4
  80. package/dist/components/agents-sdk/WorkspaceFile.d.ts +1 -1
  81. package/dist/components/agents-sdk/WorkspaceFileView.d.ts +1 -1
  82. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  83. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  84. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -2
  85. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  86. package/dist/components/agents-sdk/WorkspaceMountManager.d.ts +1 -32
  87. package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
  88. package/dist/components/agents-sdk/WorkspaceProject.js +7 -5
  89. package/dist/components/agents-sdk/WorkspaceUserScript.js +7 -5
  90. package/dist/components/ai-sdk/Activity.js +1 -1
  91. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  92. package/dist/components/ai-sdk/Approval.js +2 -2
  93. package/dist/components/ai-sdk/Artifact.d.ts +1 -1
  94. package/dist/components/ai-sdk/Artifact.js +1 -1
  95. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  96. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  97. package/dist/components/ai-sdk/CodeBlock.d.ts +1 -1
  98. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  99. package/dist/components/ai-sdk/ComposerLink.js +1 -1
  100. package/dist/components/ai-sdk/ConnectedAppCards.js +3 -3
  101. package/dist/components/ai-sdk/Context.js +1 -1
  102. package/dist/components/ai-sdk/Conversation.d.ts +1 -1
  103. package/dist/components/ai-sdk/Conversation.js +1 -1
  104. package/dist/components/ai-sdk/Goal.js +1 -1
  105. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  106. package/dist/components/ai-sdk/Message.d.ts +1 -1
  107. package/dist/components/ai-sdk/Message.js +2 -2
  108. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  109. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  110. package/dist/components/ai-sdk/Plan.js +1 -1
  111. package/dist/components/ai-sdk/PromptInput.js +7 -7
  112. package/dist/components/ai-sdk/Queue.js +1 -1
  113. package/dist/components/ai-sdk/Reasoning.js +1 -1
  114. package/dist/components/ai-sdk/Sources.js +1 -1
  115. package/dist/components/ai-sdk/Task.js +1 -1
  116. package/dist/components/extension/ChatGptSignInScreen.d.ts +1 -1
  117. package/dist/components/extension/ChatGptSignInScreen.js +61 -186
  118. package/dist/components/extension/CodexModelSelector.js +4 -8
  119. package/dist/components/extension/ConversationTabPicker.js +2 -2
  120. package/dist/components/foundations/Checkbox.js +1 -1
  121. package/dist/components/foundations/Collapsible.js +1 -1
  122. package/dist/components/foundations/ContextMenu.js +1 -1
  123. package/dist/components/foundations/IconButton.d.ts +1 -1
  124. package/dist/components/foundations/IconButton.js +7 -4
  125. package/dist/components/foundations/Menubar.js +1 -1
  126. package/dist/components/foundations/SearchField.js +1 -1
  127. package/dist/components/foundations/Select.js +1 -1
  128. package/dist/components/foundations/Stepper.js +1 -1
  129. package/dist/components/foundations/Toast.js +1 -1
  130. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  131. package/dist/components/foundations/ToggleGroup.js +1 -1
  132. package/dist/components/foundations/icons.js +1 -1
  133. package/dist/components/general-purpose/AccountSignInDialog.d.ts +5 -9
  134. package/dist/components/general-purpose/AccountSignInDialog.js +13 -5
  135. package/dist/components/general-purpose/BrandLoading.d.ts +14 -0
  136. package/dist/components/general-purpose/BrandLoading.js +25 -0
  137. package/dist/components/general-purpose/Commit.d.ts +1 -1
  138. package/dist/components/general-purpose/Commit.js +2 -2
  139. package/dist/components/general-purpose/EnvironmentVariables.d.ts +1 -1
  140. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  141. package/dist/components/general-purpose/FileTree.js +1 -1
  142. package/dist/components/general-purpose/PricingPlanCard.js +2 -2
  143. package/dist/components/general-purpose/PricingUsageCalculator.js +2 -2
  144. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +1 -1
  145. package/dist/components/general-purpose/ResponsiveSidebarShell.js +59 -27
  146. package/dist/components/general-purpose/SettingsFormDialog.js +2 -2
  147. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  148. package/dist/components/general-purpose/StatusScreen.d.ts +13 -2
  149. package/dist/components/general-purpose/StatusScreen.js +27 -3
  150. package/dist/components/general-purpose/Terminal.d.ts +2 -2
  151. package/dist/components/general-purpose/Terminal.js +2 -2
  152. package/dist/components/general-purpose/TestResults.js +1 -1
  153. package/dist/components/general-purpose/ThemeModeControl.js +2 -2
  154. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  155. package/dist/components/general-purpose/WebPreview.js +2 -2
  156. package/dist/components/nanites/AgentConnection.js +2 -2
  157. package/dist/components/nanites/AgentToolDetail.js +5 -5
  158. package/dist/{copy-button-OUwOdgEm.d.ts → copy-button-CJYYgCIU.d.ts} +1 -1
  159. package/dist/{copy-button-Dk2vRe9j.js → copy-button-CSDuDfdP.js} +1 -1
  160. package/dist/styles/activity.css +2 -2
  161. package/dist/styles/agent-chat.css +6 -105
  162. package/dist/styles/app-root.css +9 -0
  163. package/dist/styles/app-top-bar.css +10 -4
  164. package/dist/styles/avatar.css +2 -2
  165. package/dist/styles/base.css +6 -2
  166. package/dist/styles/brand-loading.css +58 -0
  167. package/dist/styles/brand.test.ts +158 -0
  168. package/dist/styles/browser-control-overlay.css +22 -0
  169. package/dist/styles/button.css +22 -1
  170. package/dist/styles/chatgpt-sign-in-screen.css +111 -225
  171. package/dist/styles/code-block.css +5 -0
  172. package/dist/styles/codex-model-selector.css +2 -12
  173. package/dist/styles/description-list.css +9 -2
  174. package/dist/styles/employee-app.css +19 -1
  175. package/dist/styles/employee-chrome.css +35 -5
  176. package/dist/styles/file-tree.css +15 -2
  177. package/dist/styles/index.css +1 -0
  178. package/dist/styles/manager-office.css +80 -55
  179. package/dist/styles/manager-work.css +5 -11
  180. package/dist/styles/mcp-plugin-catalog.css +29 -34
  181. package/dist/styles/mcp-server-picker.css +13 -5
  182. package/dist/styles/prompt-input.css +3 -13
  183. package/dist/styles/queue.css +1 -1
  184. package/dist/styles/recipes.css +9 -2
  185. package/dist/styles/responsive-sidebar-shell-motion.test.ts +67 -0
  186. package/dist/styles/responsive-sidebar-shell.css +70 -25
  187. package/dist/styles/search-field.css +8 -6
  188. package/dist/styles/subagent-run.css +81 -0
  189. package/dist/styles/think-execution-workbench.css +0 -17
  190. package/dist/styles/think-full-app.css +11 -4
  191. package/dist/styles/think-thread-picker.css +16 -38
  192. package/dist/styles/workspace-concepts.css +29 -2
  193. package/dist/styles/workspace-explorer.css +6 -48
  194. package/dist/utils/structured-code.d.ts +1 -1
  195. package/dist/{workspace-assets-wW_lQLYK.js → workspace-assets-Bg7XhPsk.js} +2 -2
  196. package/package.json +2 -2
  197. package/dist/styles/extension-status.css +0 -46
  198. package/dist/{icons-CeGfXO21.js → icons-cuEtsgj9.js} +1 -1
@@ -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,5 +1,5 @@
1
1
  import { canRequestFavicon, inferFaviconUrl } from "../../utils/favicon.js";
2
- import { D as LinkIcon, P as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WarningIcon, tt as WrenchIcon } from "../../icons-CeGfXO21.js";
2
+ import { D as LinkIcon, P as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WarningIcon, tt as WrenchIcon } from "../../icons-cuEtsgj9.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/components/agents-sdk/AgentActivity.tsx
@@ -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
  }
@@ -1,24 +1,24 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
+ import { H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, t as ArchiveIcon } from "../../icons-cuEtsgj9.js";
2
3
  import { ExpansionStateProvider } from "../ai-sdk/ExpansionState.js";
3
- import { H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, t as ArchiveIcon } from "../../icons-CeGfXO21.js";
4
- import { AgentChatMessageEditor } from "../ai-sdk/AgentChatMessageEditor.js";
5
- import { PromptInput, PromptInputSubmit, PromptInputTray, composerLinksToReferences, usePromptInputController } from "../ai-sdk/PromptInput.js";
6
4
  import { Message, MessageAction, MessageActions, MessageCopyAction, MessageMeta, MessageTimestamp } from "../ai-sdk/Message.js";
5
+ import { AgentEventRow, getAgentEvent } from "./AgentEvent.js";
6
+ import { AgentChatQueueProvider, useOptionalAgentChatQueue } from "./AgentChatQueue.js";
7
7
  import { AgentMessageParts } from "../ai-sdk/AgentMessageParts.js";
8
- import { Marker, MarkerContent } from "../foundations/Marker.js";
8
+ import { AgentChatMessageEditor } from "../ai-sdk/AgentChatMessageEditor.js";
9
9
  import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
10
+ import { PromptInput, PromptInputSubmit, PromptInputTray, composerLinksToReferences, usePromptInputController } from "../ai-sdk/PromptInput.js";
10
11
  import { Queue, QueueItem, QueueItemAction, QueueItemActions, QueueItemContent, QueueItemIndicator, QueueList } from "../ai-sdk/Queue.js";
11
- import { EmptyState } from "../foundations/EmptyState.js";
12
- import { TransitionSurface } from "../foundations/TransitionSurface.js";
13
- import { AgentEventRow, getAgentEvent } from "./AgentEvent.js";
14
- import { AgentChatQueueProvider, useOptionalAgentChatQueue } from "./AgentChatQueue.js";
15
12
  import { PromptInputApproval, getApprovalStateKey, getPendingToolApprovals } from "./PromptInputApproval.js";
13
+ import { BrandLoading } from "../general-purpose/BrandLoading.js";
14
+ import { Marker, MarkerContent } from "../foundations/Marker.js";
15
+ import { TransitionSurface } from "../foundations/TransitionSurface.js";
16
16
  import * as React from "react";
17
17
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
18
18
  import { useRender } from "@base-ui/react/use-render";
19
19
  import { mergeProps } from "@base-ui/react/merge-props";
20
- import { isTextUIPart } from "ai";
21
20
  import { isCompactionMessage } from "agents/experimental/memory/utils";
21
+ import { isTextUIPart } from "ai";
22
22
  //#region src/components/agents-sdk/AgentChat.tsx
23
23
  function observeAgentChatDock(element) {
24
24
  if (!element || typeof ResizeObserver === "undefined") return;
@@ -153,14 +153,10 @@ function AgentChatTranscript({ children, emptyState, className, scrollAnchor })
153
153
  })
154
154
  }) });
155
155
  }
156
- function AgentChatLoading() {
157
- return /* @__PURE__ */ jsx("div", {
156
+ function AgentChatLoading({ label = "Loading conversation" }) {
157
+ return /* @__PURE__ */ jsx(BrandLoading, {
158
158
  className: "agent-chat__transcript-loading",
159
- role: "status",
160
- children: /* @__PURE__ */ jsx(EmptyState, {
161
- icon: /* @__PURE__ */ jsx(SpinnerIcon, {}),
162
- description: "Loading conversation"
163
- })
159
+ label
164
160
  });
165
161
  }
166
162
  const ChatMessageContext = React.createContext(null);
@@ -2,9 +2,9 @@ import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { Activity, ActivityContent, ActivityText, ActivityTrigger } from "../ai-sdk/Activity.js";
3
3
  import { r as firstLine } from "../../format-COCyV98Z.js";
4
4
  import { MessageResponse } from "../ai-sdk/Message.js";
5
- import { NaniteMark } from "../nanites/NaniteScene.js";
6
- import { getSubagentRunName } from "./SubagentRunIndicator.js";
7
5
  import { useOptionalAgentToolRuns } from "./AgentToolRunsContext.js";
6
+ import { getSubagentRunName } from "./SubagentRunIndicator.js";
7
+ import { NaniteMark } from "../nanites/NaniteScene.js";
8
8
  import "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { isTextUIPart } from "ai";
@@ -84,7 +84,8 @@ interface BrowserLiveScreenProtocol {
84
84
  dataChannelLabel: string;
85
85
  /** Parses one machine status message; return null for unrelated data. */
86
86
  parseStatus(this: void, value: unknown): BrowserLiveScreenStatus | null;
87
- /** Serializes an exact-tab remote-input envelope for the employee machine. */
87
+ /** Serializes exact-tab input. Empty events request current status before
88
+ * the first frame; the machine ignores streamGeneration for that request. */
88
89
  serializeInput(this: void, input: BrowserLiveScreenInput): string;
89
90
  /** Serializes one drawn-browser command for the employee machine. */
90
91
  serializeCommand(this: void, command: BrowserLiveScreenCommand): string;
@@ -1,4 +1,4 @@
1
- import { E as KeyboardIcon, H as RefreshIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
1
+ import { E as KeyboardIcon, H as RefreshIcon, r as ArrowLeftIcon } from "../../icons-cuEtsgj9.js";
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { WebPreviewNavigationButton } from "../general-purpose/WebPreview.js";
4
4
  import { BrowserLiveView } from "./BrowserLiveView.js";
@@ -221,6 +221,14 @@ function BrowserLiveScreen({ sendSignal: sendHostSignal, subscribeSignals, proto
221
221
  };
222
222
  const dataChannel = peer.createDataChannel(dataChannelLabel);
223
223
  channel.current = dataChannel;
224
+ dataChannel.onopen = () => {
225
+ if (disposed || peer !== connection || channel.current !== dataChannel) return;
226
+ dataChannel.send(currentProtocol.current.serializeInput({
227
+ tabId,
228
+ streamGeneration: 0,
229
+ events: []
230
+ }));
231
+ };
224
232
  dataChannel.onmessage = (event) => {
225
233
  if (disposed || peer !== connection || channel.current !== dataChannel) return;
226
234
  const status = parseStatus(event.data);
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, _ as DotIcon, k as MaximizeIcon } from "../../icons-CeGfXO21.js";
2
+ import { K as SpinnerIcon, _ as DotIcon, k as MaximizeIcon } from "../../icons-cuEtsgj9.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Dialog } from "../foundations/Dialog.js";
5
5
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { L as PauseIcon, z as PlayIcon } from "../../icons-CeGfXO21.js";
2
+ import { L as PauseIcon, z as PlayIcon } from "../../icons-cuEtsgj9.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
4
  import { i as formatClock } from "../../format-COCyV98Z.js";
5
5
  import { EmptyState } from "../foundations/EmptyState.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, nt as XIcon } from "../../icons-CeGfXO21.js";
2
+ import { K as SpinnerIcon, nt as XIcon } from "../../icons-cuEtsgj9.js";
3
3
  import { Tabs } from "../foundations/Tabs.js";
4
4
  import { WebPreview, WebPreviewEmpty, WebPreviewNavigation, WebPreviewNavigationButton, WebPreviewUrl, WebPreviewViewport } from "../general-purpose/WebPreview.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
@@ -1,49 +1,62 @@
1
- import { EmployeeAgentRun, EmployeeBrand, EmployeeModelSetup, EmployeeShellProps, EmployeeStatus } from "./EmployeeChrome.js";
1
+ import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
2
+ import { f as EmployeeShellProps, l as EmployeeModelSetup, n as EmployeeBrand, p as EmployeeStatus, t as EmployeeAgentRun } from "../../EmployeeChrome-C8eTGJWn.js";
2
3
  import * as React from "react";
3
4
 
4
5
  //#region src/components/agents-sdk/EmployeeApp.d.ts
5
- interface EmployeeAppProps extends EmployeeShellProps {
6
- /** Application admission. Gates occupy the entire screen, without navigation. */
6
+ interface EmployeeAppRootProps extends EmployeeShellProps {
7
+ /** Admission gates remain separate; connecting keeps the application frame mounted. */
7
8
  status: EmployeeStatus;
9
+ workspaceNavigation?: WorkspaceNavigationAdapter;
8
10
  brand: EmployeeBrand;
9
11
  modelSetup?: EmployeeModelSetup;
10
- connectingLabel?: string;
11
- /** Transcript hydration does not withdraw the parent's navigation or Stop controls. */
12
- conversationLoading?: string;
13
- /** Child transcript state; null means a parent chat, independently of toolbar state. */
14
- conversationRun: EmployeeAgentRun | null;
15
- /** Current output pane, or null when the conversation occupies the screen. */
16
- workbench: React.ReactNode;
17
- /** Host-bound live browser screen. */
18
- live: React.ReactNode;
19
- /** Host-bound schedule screen. */
12
+ /** Schedule navigation owns its own shell; the chat remains mounted behind it. */
20
13
  schedules: React.ReactNode;
21
- report?: React.ReactNode;
22
- /** Render the extension or manager shell from this package using the same chrome state. */
14
+ /** Render the extension or manager shell with the same chrome state. */
23
15
  shell: (props: EmployeeShellProps) => React.ReactNode;
24
- /** Host-bound conversation. */
25
- children: React.ReactNode;
26
16
  ref?: React.Ref<HTMLDivElement>;
27
17
  }
28
- /**
29
- * Canonical employee screen. Hosts keep chat providers mounted above it and
30
- * supply live content; this component owns admission, navigation and layout.
31
- */
32
- declare function EmployeeApp({
18
+ /** Persistent admission and navigation frame. Put keyed runtimes and Suspense inside it. */
19
+ declare function EmployeeAppRoot({
33
20
  status,
21
+ workspaceNavigation,
34
22
  brand,
35
23
  modelSetup,
36
- connectingLabel,
37
- conversationLoading,
38
- conversationRun,
39
- workbench,
40
- live,
41
24
  schedules,
42
- report,
43
25
  shell,
44
26
  ref,
45
27
  children,
46
28
  ...chrome
47
- }: EmployeeAppProps): React.JSX.Element;
29
+ }: EmployeeAppRootProps): React.JSX.Element;
30
+ interface EmployeeAppContentProps {
31
+ view: EmployeeShellProps["view"];
32
+ /** Current output pane, or null when the conversation occupies the screen. */
33
+ workbench: React.ReactNode;
34
+ live: React.ReactNode;
35
+ report?: React.ReactNode;
36
+ /** Place transcript hydration boundaries here so they cannot replace navigation or output. */
37
+ children: React.ReactNode;
38
+ }
39
+ /** Stable content lanes. Hosts hydrate the conversation locally and retain output while waiting. */
40
+ declare function EmployeeAppContent({
41
+ view,
42
+ workbench,
43
+ live,
44
+ report,
45
+ children
46
+ }: EmployeeAppContentProps): React.JSX.Element;
47
+ /** Local run failure presentation; keep the parent connection and queue above this part. */
48
+ declare function EmployeeAppConversation({
49
+ run,
50
+ children
51
+ }: {
52
+ run: EmployeeAgentRun | null;
53
+ children: React.ReactNode;
54
+ }): React.JSX.Element;
55
+ /** Compose one persistent frame around independently hydrating conversation content. */
56
+ declare const EmployeeApp: {
57
+ Root: typeof EmployeeAppRoot;
58
+ Content: typeof EmployeeAppContent;
59
+ Conversation: typeof EmployeeAppConversation;
60
+ };
48
61
  //#endregion
49
- export { EmployeeApp, EmployeeAppProps };
62
+ export { EmployeeApp, EmployeeAppContentProps, EmployeeAppRootProps };
@@ -1,57 +1,70 @@
1
- import { K as SpinnerIcon, et as WarningIcon } from "../../icons-CeGfXO21.js";
2
- import "../foundations/icons.js";
1
+ import { et as WarningIcon } from "../../icons-cuEtsgj9.js";
2
+ import { WorkbenchBack } from "./WorkbenchBack.js";
3
3
  import { StatusScreen } from "../general-purpose/StatusScreen.js";
4
4
  import { EmployeeChrome } from "./EmployeeChrome.js";
5
5
  import { ThinkFullApp } from "./ThinkFullApp.js";
6
6
  import "react";
7
- import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
8
  //#region src/components/agents-sdk/EmployeeApp.tsx
9
- /**
10
- * Canonical employee screen. Hosts keep chat providers mounted above it and
11
- * supply live content; this component owns admission, navigation and layout.
12
- */
13
- function EmployeeApp({ status, brand, modelSetup, connectingLabel, conversationLoading, conversationRun, workbench, live, schedules, report, shell, ref, children, ...chrome }) {
14
- if (status !== "ready") return /* @__PURE__ */ jsx("div", {
9
+ /** Persistent admission and navigation frame. Put keyed runtimes and Suspense inside it. */
10
+ function EmployeeAppRoot({ status, workspaceNavigation, brand, modelSetup, schedules, shell, ref, children, ...chrome }) {
11
+ const admitted = status === "ready" || status === "connecting";
12
+ chrome.compactBack ??= /* @__PURE__ */ jsx(WorkbenchBack, {
13
+ navigation: workspaceNavigation,
14
+ filesOpen: chrome.view === "files",
15
+ backToChatLink: chrome.renderLink({
16
+ kind: "view",
17
+ view: "chat"
18
+ })
19
+ });
20
+ return /* @__PURE__ */ jsx("div", {
15
21
  className: "employee-app",
16
22
  "data-view": chrome.view,
17
23
  ref,
18
- children: /* @__PURE__ */ jsx(EmployeeChrome.Gate, {
24
+ children: !admitted ? /* @__PURE__ */ jsx(EmployeeChrome.Gate, {
19
25
  status,
20
26
  brand,
21
27
  identity: chrome.identity,
22
- modelSetup,
23
- connectingLabel
24
- })
28
+ modelSetup
29
+ }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
30
+ className: "employee-app__surface",
31
+ hidden: chrome.view === "schedules",
32
+ children: shell({
33
+ ...chrome,
34
+ children
35
+ })
36
+ }), chrome.view === "schedules" ? schedules : null] })
25
37
  });
26
- const run = conversationRun;
27
- const content = chrome.view === "live" ? live : /* @__PURE__ */ jsxs(ThinkFullApp.Root, {
38
+ }
39
+ /** Stable content lanes. Hosts hydrate the conversation locally and retain output while waiting. */
40
+ function EmployeeAppContent({ view, workbench, live, report, children }) {
41
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(ThinkFullApp.Root, {
28
42
  workbenchOpen: Boolean(workbench),
43
+ hidden: view === "live",
29
44
  children: [
30
45
  /* @__PURE__ */ jsxs(ThinkFullApp.Conversation, {
31
46
  "data-workspace-restoration-scope": "chat",
32
- children: [report, run?.state === "unavailable" || run?.state === "error" ? /* @__PURE__ */ jsx(StatusScreen, {
33
- role: "alert",
34
- icon: /* @__PURE__ */ jsx(WarningIcon, {}),
35
- title: run.state === "unavailable" ? "Delegated run unavailable" : "Could not open this run",
36
- description: run.state === "error" ? run.error : "This run is no longer available. The parent conversation keeps its history and controls."
37
- }) : conversationLoading ? /* @__PURE__ */ jsx(StatusScreen, {
38
- icon: /* @__PURE__ */ jsx(SpinnerIcon, {}),
39
- description: conversationLoading
40
- }) : children]
47
+ children: [report, children]
41
48
  }),
42
49
  /* @__PURE__ */ jsx(ThinkFullApp.ResizeHandle, {}),
43
50
  /* @__PURE__ */ jsx(ThinkFullApp.Workbench, { children: workbench })
44
51
  ]
45
- });
46
- return /* @__PURE__ */ jsx("div", {
47
- className: "employee-app",
48
- "data-view": chrome.view,
49
- ref,
50
- children: chrome.view === "schedules" ? schedules : shell({
51
- ...chrome,
52
- children: content
53
- })
54
- });
52
+ }), view === "live" ? live : null] });
53
+ }
54
+ /** Local run failure presentation; keep the parent connection and queue above this part. */
55
+ function EmployeeAppConversation({ run, children }) {
56
+ return /* @__PURE__ */ jsx(Fragment, { children: run?.state === "unavailable" || run?.state === "error" ? /* @__PURE__ */ jsx(StatusScreen, {
57
+ role: "alert",
58
+ icon: /* @__PURE__ */ jsx(WarningIcon, {}),
59
+ title: run.state === "unavailable" ? "Delegated run unavailable" : "Could not open this run",
60
+ description: run.state === "error" ? run.error : "This run is no longer available. The parent conversation keeps its history and controls."
61
+ }) : children });
55
62
  }
63
+ /** Compose one persistent frame around independently hydrating conversation content. */
64
+ const EmployeeApp = {
65
+ Root: EmployeeAppRoot,
66
+ Content: EmployeeAppContent,
67
+ Conversation: EmployeeAppConversation
68
+ };
56
69
  //#endregion
57
70
  export { EmployeeApp };
@@ -1,12 +1,16 @@
1
1
  import { E as PromptInputCommandComposerProps, F as PromptInputDictationProps, M as PromptInputContextSelectorProps } from "../../PromptInput-DGPrCTPl.js";
2
2
  import { AgentChatTranscriptProps } from "./AgentChat.js";
3
+ import { ConversationTabPickerProps } from "../extension/ConversationTabPicker.js";
4
+ import { SetupChecklistGroupProps } from "../general-purpose/SetupChecklist.js";
5
+ import { McpServerPickerItemsProps } from "./McpServerPicker.js";
6
+ import { EmployeeStartScreenProps } from "./EmployeeStartScreen.js";
3
7
  import { ContextProps } from "../ai-sdk/Context.js";
4
8
  import { CodexModelSelectorProps } from "../extension/CodexModelSelector.js";
5
9
  import { ThinkChatMessageContentProps } from "./ThinkChat.js";
6
10
  import * as React from "react";
7
11
 
8
12
  //#region src/components/agents-sdk/EmployeeChat.d.ts
9
- interface EmployeeComposerProps {
13
+ interface EmployeeComposerProps<Id extends string = string> {
10
14
  commands: PromptInputCommandComposerProps["commands"];
11
15
  mentionCommands?: PromptInputCommandComposerProps["mentionCommands"];
12
16
  onCompact?: () => Promise<{
@@ -14,18 +18,19 @@ interface EmployeeComposerProps {
14
18
  }>;
15
19
  placeholder?: string;
16
20
  disabled?: boolean;
17
- /** Additional connection/personalization menu entries, using shared menu components. */
18
- menu?: React.ReactNode;
21
+ personalization?: Pick<SetupChecklistGroupProps<Id>, "entries" | "onSelect">;
22
+ connections?: McpServerPickerItemsProps;
19
23
  tools?: React.ReactNode;
20
24
  contextSelector?: PromptInputContextSelectorProps;
21
- tabs?: React.ReactNode;
25
+ tabs?: ConversationTabPickerProps;
22
26
  model?: CodexModelSelectorProps;
23
27
  dictation?: PromptInputDictationProps;
24
28
  context?: ContextProps;
25
29
  }
26
30
  /** One composer anatomy for the app and its examples; capabilities remain explicit. */
27
- declare function EmployeeComposer({
28
- menu,
31
+ declare function EmployeeComposer<Id extends string = string>({
32
+ personalization,
33
+ connections,
29
34
  tools,
30
35
  contextSelector,
31
36
  tabs,
@@ -36,7 +41,7 @@ declare function EmployeeComposer({
36
41
  placeholder,
37
42
  disabled,
38
43
  ...input
39
- }: EmployeeComposerProps): React.JSX.Element;
44
+ }: EmployeeComposerProps<Id>): React.JSX.Element;
40
45
  interface EmployeeTranscriptProps extends Omit<ThinkChatMessageContentProps, "message"> {
41
46
  readOnly?: boolean;
42
47
  scrollAnchor?: AgentChatTranscriptProps["scrollAnchor"];
@@ -59,5 +64,20 @@ declare function EmployeeChatDock({
59
64
  readOnly?: boolean;
60
65
  children?: React.ReactNode;
61
66
  }): React.JSX.Element;
67
+ /** Shared conversation layout. Hosts hydrate the parts and retain their runtime providers. */
68
+ declare function EmployeeConversation<Id extends string = string>({
69
+ transcript,
70
+ composer,
71
+ welcome,
72
+ loading,
73
+ loadingLabel,
74
+ ...dock
75
+ }: {
76
+ transcript?: EmployeeTranscriptProps;
77
+ composer: EmployeeComposerProps<Id>;
78
+ welcome?: Omit<EmployeeStartScreenProps<Id>, "children">;
79
+ loading?: boolean;
80
+ loadingLabel?: string;
81
+ } & React.ComponentProps<typeof EmployeeChatDock>): React.JSX.Element;
62
82
  //#endregion
63
- export { EmployeeChatDock, EmployeeComposer, EmployeeComposerProps, EmployeeTranscript, EmployeeTranscriptProps };
83
+ export { EmployeeChatDock, EmployeeComposer, EmployeeComposerProps, EmployeeConversation, EmployeeTranscript, EmployeeTranscriptProps };
@@ -1,7 +1,11 @@
1
1
  import { PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuTrigger, PromptInputAttachments, PromptInputBody, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputFooterEnd, PromptInputTools } from "../ai-sdk/PromptInput.js";
2
+ import { AgentChat, useAgentChatCompaction } from "./AgentChat.js";
3
+ import { ConversationTabPicker } from "../extension/ConversationTabPicker.js";
4
+ import { n as SetupChecklistGroup } from "../../SetupChecklist-BiWQkKEq.js";
5
+ import { McpServerPickerItems } from "./McpServerPicker.js";
6
+ import { EmployeeStartScreen } from "./EmployeeStartScreen.js";
2
7
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger } from "../ai-sdk/Context.js";
3
8
  import { CodexModelSelector } from "../extension/CodexModelSelector.js";
4
- import { AgentChat, useAgentChatCompaction } from "./AgentChat.js";
5
9
  import { ThinkChat } from "./ThinkChat.js";
6
10
  import "react";
7
11
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
@@ -23,7 +27,7 @@ function CompactingInput({ onCompact, ...props }) {
23
27
  })] });
24
28
  }
25
29
  /** One composer anatomy for the app and its examples; capabilities remain explicit. */
26
- function EmployeeComposer({ menu, tools, contextSelector, tabs, model, dictation, context, onCompact, placeholder = "How can I help you today?", disabled, ...input }) {
30
+ function EmployeeComposer({ personalization, connections, tools, contextSelector, tabs, model, dictation, context, onCompact, placeholder = "How can I help you today?", disabled, ...input }) {
27
31
  const inputProps = {
28
32
  ...input,
29
33
  placeholder,
@@ -38,11 +42,18 @@ function EmployeeComposer({ menu, tools, contextSelector, tabs, model, dictation
38
42
  onCompact
39
43
  }) : /* @__PURE__ */ jsx(CommandInput, { ...inputProps }),
40
44
  /* @__PURE__ */ jsxs(PromptInputFooter, { children: [/* @__PURE__ */ jsxs(PromptInputTools, { children: [
41
- /* @__PURE__ */ jsxs(PromptInputActionMenu, { children: [/* @__PURE__ */ jsx(PromptInputActionMenuTrigger, { disabled }), /* @__PURE__ */ jsxs(PromptInputActionMenuContent, { children: [/* @__PURE__ */ jsx(PromptInputActionAddAttachments, {}), menu] })] }),
45
+ /* @__PURE__ */ jsxs(PromptInputActionMenu, { children: [/* @__PURE__ */ jsx(PromptInputActionMenuTrigger, { disabled }), /* @__PURE__ */ jsxs(PromptInputActionMenuContent, { children: [
46
+ /* @__PURE__ */ jsx(PromptInputActionAddAttachments, {}),
47
+ personalization ? /* @__PURE__ */ jsx(SetupChecklistGroup, {
48
+ label: "Prompts",
49
+ ...personalization
50
+ }) : null,
51
+ connections ? /* @__PURE__ */ jsx(McpServerPickerItems, { ...connections }) : null
52
+ ] })] }),
42
53
  contextSelector ? /* @__PURE__ */ jsx(PromptInputContextSelector, { ...contextSelector }) : null,
43
54
  tools
44
55
  ] }), /* @__PURE__ */ jsxs(PromptInputFooterEnd, { children: [
45
- tabs,
56
+ tabs ? /* @__PURE__ */ jsx(ConversationTabPicker, { ...tabs }) : null,
46
57
  model ? /* @__PURE__ */ jsx(CodexModelSelector, { ...model }) : null,
47
58
  dictation ? /* @__PURE__ */ jsx(PromptInputDictation, { ...dictation }) : null,
48
59
  context ? /* @__PURE__ */ jsxs(Context, {
@@ -80,5 +91,22 @@ function EmployeeChatDock({ recovery, notices, readOnly, children }) {
80
91
  children
81
92
  ] })] });
82
93
  }
94
+ /** Shared conversation layout. Hosts hydrate the parts and retain their runtime providers. */
95
+ function EmployeeConversation({ transcript, composer, welcome, loading, loadingLabel, ...dock }) {
96
+ if (welcome && !loading && !dock.readOnly) return /* @__PURE__ */ jsx(EmployeeStartScreen, {
97
+ ...welcome,
98
+ children: /* @__PURE__ */ jsx(EmployeeComposer, { ...composer })
99
+ });
100
+ return /* @__PURE__ */ jsxs(Fragment, { children: [loading ? /* @__PURE__ */ jsx(AgentChat.Loading, { label: loadingLabel }) : /* @__PURE__ */ jsx(EmployeeTranscript, {
101
+ ...transcript,
102
+ readOnly: dock.readOnly
103
+ }), /* @__PURE__ */ jsxs(EmployeeChatDock, {
104
+ ...dock,
105
+ children: [dock.children, /* @__PURE__ */ jsx(EmployeeComposer, {
106
+ ...composer,
107
+ disabled: loading || composer.disabled
108
+ })]
109
+ })] });
110
+ }
83
111
  //#endregion
84
- export { EmployeeChatDock, EmployeeComposer, EmployeeTranscript };
112
+ export { EmployeeChatDock, EmployeeComposer, EmployeeConversation, EmployeeTranscript };