@mcp-b/react-components 0.40.0 → 0.41.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 (196) hide show
  1. package/dist/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
  2. package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
  3. package/dist/AppTopBar-ZdgmB_Lu.d.ts +97 -0
  4. package/dist/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
  5. package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
  6. package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
  7. package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
  8. package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-DyGHj01E.d.ts} +1 -1
  9. package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
  10. package/dist/{ToggleGroup-_pQMyHGM.d.ts → ToggleGroup-BrQZOQn_.d.ts} +1 -1
  11. package/dist/Toolbar-CBOseBQr.d.ts +152 -0
  12. package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-D0yFwoDr.js} +2 -2
  13. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  14. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  15. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  16. package/dist/components/agents-sdk/AgentChat.js +41 -18
  17. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  18. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  19. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  20. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  21. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  22. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  23. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  24. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
  25. package/dist/components/agents-sdk/BrowserRunPanel.js +6 -12
  26. package/dist/components/agents-sdk/ManagerOffice.d.ts +156 -0
  27. package/dist/components/agents-sdk/ManagerOffice.js +662 -0
  28. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  29. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  30. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  31. package/dist/components/agents-sdk/McpPluginCatalog.js +80 -62
  32. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  33. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  34. package/dist/components/agents-sdk/ModelSelector.js +2 -2
  35. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  36. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  37. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  38. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  39. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  40. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  41. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  42. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  43. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  44. package/dist/components/agents-sdk/ThinkChatActivity.js +1 -1
  45. package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
  46. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  47. package/dist/components/agents-sdk/ThinkExecutionDetail.js +43 -43
  48. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  49. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  50. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  51. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  52. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  53. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +42 -37
  54. package/dist/components/agents-sdk/ThinkFullApp.d.ts +18 -6
  55. package/dist/components/agents-sdk/ThinkFullApp.js +113 -145
  56. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
  57. package/dist/components/agents-sdk/ThinkFullAppViewSwitch.js +1 -1
  58. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  59. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  60. package/dist/components/agents-sdk/ThinkRoutineDetail.js +5 -16
  61. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  62. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +69 -89
  63. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  64. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  65. package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -2
  66. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  67. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  68. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  69. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  70. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  71. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  72. package/dist/components/ai-sdk/Activity.js +1 -1
  73. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  74. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  75. package/dist/components/ai-sdk/Approval.js +1 -1
  76. package/dist/components/ai-sdk/Artifact.js +1 -1
  77. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  78. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  79. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  80. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  81. package/dist/components/ai-sdk/Conversation.js +1 -1
  82. package/dist/components/ai-sdk/Goal.js +1 -1
  83. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  84. package/dist/components/ai-sdk/Message.d.ts +2 -2
  85. package/dist/components/ai-sdk/Message.js +25 -3
  86. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  87. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  88. package/dist/components/ai-sdk/Plan.js +1 -1
  89. package/dist/components/ai-sdk/PromptInput.js +1 -1
  90. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  91. package/dist/components/ai-sdk/Queue.js +6 -15
  92. package/dist/components/ai-sdk/Reasoning.js +1 -1
  93. package/dist/components/ai-sdk/Sources.js +1 -1
  94. package/dist/components/ai-sdk/Task.d.ts +2 -2
  95. package/dist/components/ai-sdk/Task.js +2 -2
  96. package/dist/components/extension/ChatGptSignInScreen.js +1 -1
  97. package/dist/components/extension/CodexModelSelector.js +1 -1
  98. package/dist/components/extension/ConversationTabPicker.js +1 -1
  99. package/dist/components/foundations/Avatar.d.ts +1 -10
  100. package/dist/components/foundations/Avatar.js +1 -10
  101. package/dist/components/foundations/Checkbox.js +1 -1
  102. package/dist/components/foundations/CheckboxGroup.js +1 -0
  103. package/dist/components/foundations/ContextMenu.js +1 -1
  104. package/dist/components/foundations/LinkButton.d.ts +12 -10
  105. package/dist/components/foundations/LinkButton.js +15 -11
  106. package/dist/components/foundations/Menubar.js +1 -1
  107. package/dist/components/foundations/SearchField.js +1 -1
  108. package/dist/components/foundations/Select.js +1 -1
  109. package/dist/components/foundations/Stepper.js +1 -1
  110. package/dist/components/foundations/Toast.js +1 -1
  111. package/dist/components/foundations/ToggleGroup.d.ts +1 -1
  112. package/dist/components/foundations/ToggleGroup.js +1 -1
  113. package/dist/components/foundations/Toolbar.d.ts +1 -151
  114. package/dist/components/foundations/icons.d.ts +2 -2
  115. package/dist/components/foundations/icons.js +2 -2
  116. package/dist/components/general-purpose/AppTopBar.d.ts +1 -90
  117. package/dist/components/general-purpose/AppTopBar.js +2 -1
  118. package/dist/components/general-purpose/Commit.d.ts +2 -2
  119. package/dist/components/general-purpose/Commit.js +5 -13
  120. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  121. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  122. package/dist/components/general-purpose/FileTree.js +1 -1
  123. package/dist/components/general-purpose/PricingBillingToggle.js +5 -10
  124. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  125. package/dist/components/general-purpose/PricingUsageCalculator.js +1 -1
  126. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +95 -2
  127. package/dist/components/general-purpose/ResponsiveSidebarShell.js +90 -34
  128. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  129. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  130. package/dist/components/general-purpose/Terminal.js +4 -12
  131. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  132. package/dist/components/general-purpose/TestResults.js +8 -21
  133. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  134. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  135. package/dist/components/general-purpose/WebPreview.js +4 -12
  136. package/dist/components/nanites/AgentConnection.js +2 -2
  137. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  138. package/dist/components/nanites/AgentToolDetail.js +7 -7
  139. package/dist/components/nanites/NaniteScene.js +11 -11
  140. package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
  141. package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
  142. package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
  143. package/dist/styles/agent-attention.css +5 -5
  144. package/dist/styles/agent-chat.css +47 -12
  145. package/dist/styles/agent-tool-detail.css +2 -12
  146. package/dist/styles/app-icon.css +12 -18
  147. package/dist/styles/app-top-bar.css +32 -6
  148. package/dist/styles/avatar.css +6 -22
  149. package/dist/styles/base.css +2 -8
  150. package/dist/styles/browser-live-screen.css +38 -0
  151. package/dist/styles/browser-live-view.css +12 -4
  152. package/dist/styles/browser-run-panel.css +20 -18
  153. package/dist/styles/chatgpt-sign-in-screen.css +5 -5
  154. package/dist/styles/commit.css +24 -1
  155. package/dist/styles/environment-variables.css +3 -0
  156. package/dist/styles/index.css +5 -4
  157. package/dist/styles/manager-office.css +486 -0
  158. package/dist/styles/mcp-plugin-catalog.css +39 -35
  159. package/dist/styles/mcp-server-picker.css +1 -1
  160. package/dist/styles/message.css +41 -18
  161. package/dist/styles/nanite-scene.css +9 -9
  162. package/dist/styles/pricing-page.css +12 -8
  163. package/dist/styles/prompt-input.css +8 -13
  164. package/dist/styles/recipes.css +1 -57
  165. package/dist/styles/responsive-sidebar-shell.css +70 -20
  166. package/dist/styles/subagent-run.css +20 -3
  167. package/dist/styles/terminal.css +19 -0
  168. package/dist/styles/test-results.css +10 -1
  169. package/dist/styles/think-execution-status.css +8 -24
  170. package/dist/styles/think-execution-workbench.css +98 -105
  171. package/dist/styles/think-full-app.css +81 -193
  172. package/dist/styles/think-routine-library.css +0 -40
  173. package/dist/styles/think-thread-picker.css +8 -3
  174. package/dist/styles/transition-surface.css +7 -8
  175. package/dist/styles/utilities.css +42 -0
  176. package/dist/styles/web-preview.css +28 -5
  177. package/dist/styles/workspace-explorer.css +4 -23
  178. package/dist/styles/workspace-mount-manager.css +22 -0
  179. package/package.json +37 -35
  180. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  181. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  182. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  183. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  184. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  185. package/dist/components/foundations/Badge.d.ts +0 -62
  186. package/dist/components/foundations/Badge.js +0 -55
  187. package/dist/components/foundations/StatusPill.d.ts +0 -43
  188. package/dist/components/foundations/StatusPill.js +0 -35
  189. package/dist/components/general-purpose/Shell.d.ts +0 -149
  190. package/dist/components/general-purpose/Shell.js +0 -116
  191. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  192. package/dist/styles/agent-activity-preview.css +0 -209
  193. package/dist/styles/badge.css +0 -120
  194. package/dist/styles/shell.css +0 -122
  195. package/dist/styles/status-pill.css +0 -39
  196. package/dist/{ThinkChat-DkA4Wr71.js → ThinkChat-BES_3Mb-.js} +1 -1
@@ -167,7 +167,7 @@ interface AgentChatProps<MessageT extends UIMessage = UIMessage> {
167
167
  composerAddMenuItems?: React.ReactNode;
168
168
  /**
169
169
  * Transient status rendered between the transcript and the composer —
170
- * e.g. a "Reconnecting…" pill. `ThinkChat.Messages` fills this from the
170
+ * e.g. "Reconnecting…". `ThinkChat.Messages` fills this from the
171
171
  * hook's `isRecovering`/`connectionError` automatically.
172
172
  */
173
173
  notice?: React.ReactNode;
@@ -21,6 +21,18 @@ type AgentToolEventSource = Parameters<typeof useAgentToolEvents>[0]["agent"] &
21
21
  * once per socket connect, so a later mount misses existing runs — and share
22
22
  * the one value with every surface that reads runs (the chat shell and a
23
23
  * run-detail route read the same projection, never two subscriptions).
24
+ *
25
+ * The subscription's listener attaches in a passive effect, after paint. A
26
+ * host whose transport is in-process (the browser extension's port bridge)
27
+ * can complete the connect and deliver the replay before that effect runs —
28
+ * reliably so on a hot return from a drill-in. Upstream owns the fix:
29
+ * `useAgent` buffers `agent-tool-event` frames from socket construction and
30
+ * `useAgentToolEvents` drains them when its listener attaches (agents >
31
+ * 0.20.1; `_bufferAgentToolReplayFrame` is the seam for a non-`useAgent`
32
+ * socket). On older versions such hosts must buffer and re-dispatch
33
+ * themselves — think-browser-host's `useThinkAgentToolEvents` is that
34
+ * interim shim. Network transports are not affected in practice: the round
35
+ * trip loses to the effect flush.
24
36
  */
25
37
  declare function useSourceScopedAgentToolEvents<Part extends AgentToolRunPart = UIMessage["parts"][number]>(agent: AgentToolEventSource): {
26
38
  runsById: Record<string, import("agents").AgentToolRunState<Part>>;
@@ -0,0 +1,97 @@
1
+ import { a as ToolbarLinkProps, n as ToolbarButtonProps, r as ToolbarGroupProps, t as Toolbar } from "./Toolbar-CBOseBQr.js";
2
+ import * as React from "react";
3
+ import { useRender } from "@base-ui/react/use-render";
4
+
5
+ //#region src/components/general-purpose/AppTopBar.d.ts
6
+ interface AppTopBarRootProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Root> {
7
+ /** Accessible name describing the controls in this application bar. */
8
+ "aria-label": string;
9
+ /**
10
+ * Where the title sits. An application bar centres it between the control
11
+ * groups; a panel header labels its leading edge instead.
12
+ */
13
+ titleAlign?: "center" | "start";
14
+ }
15
+ interface AppTopBarGroupProps extends ToolbarGroupProps {}
16
+ interface AppTopBarTitleProps extends useRender.ComponentProps<"div"> {}
17
+ interface AppTopBarButtonProps extends Omit<ToolbarButtonProps, "aria-label"> {
18
+ ref?: React.Ref<HTMLButtonElement>;
19
+ /** Accessible name and default tooltip text for the icon-only control. */
20
+ label: string;
21
+ /** Tooltip text when it should differ from the accessible name. */
22
+ tooltip?: React.ReactNode;
23
+ }
24
+ interface AppTopBarLinkProps extends Omit<ToolbarLinkProps, "aria-label"> {
25
+ ref?: React.Ref<HTMLAnchorElement>;
26
+ /** Accessible name and default tooltip text for the icon-only link. */
27
+ label: string;
28
+ /** Tooltip text when it should differ from the accessible name. */
29
+ tooltip?: React.ReactNode;
30
+ }
31
+ interface AppTopBarControlProps extends ToolbarButtonProps {
32
+ ref?: React.Ref<HTMLButtonElement>;
33
+ }
34
+ /**
35
+ * Stable application-level toolbar with composable leading, title, and trailing
36
+ * slots. Descendant buttons share Base UI's roving focus and tooltip provider.
37
+ */
38
+ declare function AppTopBarRoot({
39
+ children,
40
+ className,
41
+ titleAlign,
42
+ ...props
43
+ }: AppTopBarRootProps): React.JSX.Element;
44
+ declare function AppTopBarLeading({
45
+ className,
46
+ ...props
47
+ }: AppTopBarGroupProps): React.JSX.Element;
48
+ declare function AppTopBarTitle({
49
+ className,
50
+ render,
51
+ ref,
52
+ ...props
53
+ }: AppTopBarTitleProps): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
54
+ declare function AppTopBarTrailing({
55
+ className,
56
+ ...props
57
+ }: AppTopBarGroupProps): React.JSX.Element;
58
+ declare function AppTopBarControl({
59
+ className,
60
+ ...props
61
+ }: AppTopBarControlProps): React.JSX.Element;
62
+ declare function AppTopBarButton({
63
+ children,
64
+ className,
65
+ disabled,
66
+ label,
67
+ render,
68
+ tooltip,
69
+ ...props
70
+ }: AppTopBarButtonProps): React.JSX.Element;
71
+ declare function AppTopBarLink({
72
+ children,
73
+ className,
74
+ label,
75
+ render,
76
+ tooltip,
77
+ ...props
78
+ }: AppTopBarLinkProps): React.JSX.Element;
79
+ /**
80
+ * Composable application top bar with stable leading, title, and trailing
81
+ * slots. Icon controls use shared Toolbar roving focus and coordinated Tooltip
82
+ * behavior; their fixed slots do not resize when state icons change. Render an
83
+ * existing behavior-rich button through `Control` to retain those toolbar
84
+ * semantics without rebuilding the control. Use `Link` for navigation so an
85
+ * `href` or router-provided link keeps native link semantics.
86
+ */
87
+ declare const AppTopBar: {
88
+ Root: typeof AppTopBarRoot;
89
+ Leading: typeof AppTopBarLeading;
90
+ Title: typeof AppTopBarTitle;
91
+ Trailing: typeof AppTopBarTrailing;
92
+ Control: typeof AppTopBarControl;
93
+ Button: typeof AppTopBarButton;
94
+ Link: typeof AppTopBarLink;
95
+ };
96
+ //#endregion
97
+ export { AppTopBarLinkProps as a, AppTopBarGroupProps as i, AppTopBarButtonProps as n, AppTopBarRootProps as o, AppTopBarControlProps as r, AppTopBarTitleProps as s, AppTopBar as t };
@@ -1,6 +1,6 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
2
  import { Select } from "./components/foundations/Select.js";
3
- import { t as CopyButton } from "./copy-button-Bc7jsYv_.js";
3
+ import { t as CopyButton } from "./copy-button-lys9N_aI.js";
4
4
  import * as React from "react";
5
5
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
6
  import { createHighlighter } from "shiki";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "./class-names-BiMDVpUo.js";
2
- import { C as FileIcon, T as FolderOpenIcon, m as ChevronRightIcon, w as FolderIcon } from "./icons-MmIXciMO.js";
2
+ import { C as FolderIcon, S as FileIcon, p as ChevronRightIcon, w as FolderOpenIcon } from "./icons-CVFSeTJn.js";
3
3
  import { t as NavigationLink } from "./navigation-link-kqMa81v5.js";
4
4
  import * as React from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -0,0 +1,39 @@
1
+ import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "./mcp-server-catalog-CCj2ItkV.js";
2
+ import * as React from "react";
3
+
4
+ //#region src/components/agents-sdk/McpConnectorForm.d.ts
5
+ type CredentialFieldName = Exclude<McpServerSetupAuthFieldName, "redirectUrl">;
6
+ type McpConnectorFormValues = Readonly<Partial<Record<CredentialFieldName, string>> & {
7
+ readonly name: string;
8
+ readonly url: string;
9
+ }>;
10
+ type McpConnectorFormProps = Omit<React.FormHTMLAttributes<HTMLFormElement>, "onSubmit" | "status"> & {
11
+ /** Authentication metadata that decides which credential fields render. */readonly auth?: McpServerSetupAuth; /** Initial connector values. Publisher client credentials remain app-owned. */
12
+ readonly defaults?: Partial<McpConnectorFormValues>; /** Optional pattern used to validate the MCP name field. */
13
+ readonly namePattern?: string; /** Keep a catalog-owned MCP name and URL visible but immutable. */
14
+ readonly readOnlyServer?: boolean; /** Read-only redirect URL shown for manual OAuth client setup. */
15
+ readonly redirectUrl?: string; /** Inline connection status announced politely to assistive tech. */
16
+ readonly status?: React.ReactNode; /** Label for the submit button. */
17
+ readonly submitLabel?: string; /** Label shown while submit is pending. */
18
+ readonly submittingLabel?: string; /** Called with normalized connector values after native form validation passes. */
19
+ readonly onSubmit: (values: McpConnectorFormValues) => void | Promise<void>;
20
+ };
21
+ /** Collects MCP connector settings and optional credentials with native form validation. */
22
+ declare function McpConnectorForm({
23
+ auth,
24
+ className,
25
+ defaults,
26
+ namePattern,
27
+ readOnlyServer,
28
+ redirectUrl,
29
+ status,
30
+ submitLabel,
31
+ submittingLabel,
32
+ onSubmit,
33
+ ref,
34
+ ...props
35
+ }: McpConnectorFormProps & {
36
+ ref?: React.Ref<HTMLFormElement>;
37
+ }): React.JSX.Element;
38
+ //#endregion
39
+ export { McpConnectorFormProps as n, McpConnectorFormValues as r, McpConnectorForm as t };
@@ -55,6 +55,25 @@ declare function MessageContent({
55
55
  }: MessageContentProps & {
56
56
  ref?: React.Ref<HTMLDivElement>;
57
57
  }): React.JSX.Element;
58
+ interface MessageMetaProps extends React.HTMLAttributes<HTMLDivElement> {}
59
+ /** Quiet message metadata and actions shown on hover or keyboard focus. */
60
+ declare function MessageMeta({
61
+ className,
62
+ children,
63
+ ref,
64
+ ...props
65
+ }: MessageMetaProps & {
66
+ ref?: React.Ref<HTMLDivElement>;
67
+ }): React.JSX.Element;
68
+ interface MessageTimestampProps extends Omit<React.TimeHTMLAttributes<HTMLTimeElement>, "children" | "dateTime"> {
69
+ date: Date;
70
+ }
71
+ /** Machine-readable message time with a compact local-time label. */
72
+ declare function MessageTimestamp({
73
+ date,
74
+ className,
75
+ ...props
76
+ }: MessageTimestampProps): React.JSX.Element;
58
77
  type MessageResponseProps = StreamdownProps;
59
78
  declare const MessageResponse: React.MemoExoticComponent<({
60
79
  className,
@@ -225,4 +244,4 @@ declare function MessageBranchPage({
225
244
  ref?: React.Ref<HTMLSpanElement>;
226
245
  }): React.JSX.Element;
227
246
  //#endregion
228
- export { MessageResponse as C, MessageToolbarProps as D, MessageToolbar as E, MessageProps as S, MessageRole as T, MessageBranchProps as _, MessageActionsProps as a, MessageContent as b, MessageBranch as c, MessageBranchNext as d, MessageBranchNextProps as f, MessageBranchPreviousProps as g, MessageBranchPrevious as h, MessageActions as i, MessageBranchContent as l, MessageBranchPageProps as m, MessageAction as n, MessageAttachment as o, MessageBranchPage as p, MessageActionProps as r, MessageAttachmentProps as s, Message as t, MessageBranchContentProps as u, MessageBranchSelector as v, MessageResponseProps as w, MessageContentProps as x, MessageBranchSelectorProps as y };
247
+ export { MessageToolbar as A, MessageMetaProps as C, MessageRole as D, MessageResponseProps as E, MessageTimestamp as O, MessageMeta as S, MessageResponse as T, MessageBranchProps as _, MessageActionsProps as a, MessageContent as b, MessageBranch as c, MessageBranchNext as d, MessageBranchNextProps as f, MessageBranchPreviousProps as g, MessageBranchPrevious as h, MessageActions as i, MessageToolbarProps as j, MessageTimestampProps as k, MessageBranchContent as l, MessageBranchPageProps as m, MessageAction as n, MessageAttachment as o, MessageBranchPage as p, MessageActionProps as r, MessageAttachmentProps as s, Message as t, MessageBranchContentProps as u, MessageBranchSelector as v, MessageProps as w, MessageContentProps as x, MessageBranchSelectorProps as y };
@@ -1,5 +1,5 @@
1
1
  import { i as AgentMessageRenderPartContext } from "./AgentMessageParts-C7L-Mv9U.js";
2
- import { r as AgentChatProps } from "./AgentChat-CVO7xyLC.js";
2
+ import { r as AgentChatProps } from "./AgentChat-DVr2giwD.js";
3
3
  import { l as ThinkChatPart } from "./ThinkChatToolParts-D4qcnnxt.js";
4
4
  import { t as ThinkChatActivityDescription } from "./ThinkChatActivitySummary-BtBQgMg6.js";
5
5
  import * as React from "react";
@@ -6,9 +6,10 @@ import { WorkflowInfo } from "agents/workflows";
6
6
  type ThinkExecutionRun = ThinkSubmissionInspection | WorkflowInfo;
7
7
  /** Narrows the direct upstream execution union without wrapping either record. */
8
8
  declare function isThinkSubmissionRun(run: ThinkExecutionRun): run is ThinkSubmissionInspection;
9
- type ThinkExecutionStatusTone = "success" | "danger" | "warning" | "primary" | "neutral";
9
+ type ThinkExecutionStatusTone = "success" | "danger" | "paused" | "primary" | "neutral";
10
10
  declare function getThinkExecutionRunId(run: ThinkExecutionRun): string;
11
11
  declare function getThinkExecutionRunTitle(run: ThinkExecutionRun): string;
12
+ declare function getThinkExecutionRunKindLabel(run: ThinkExecutionRun): "Submission" | "Workflow";
12
13
  declare function getThinkExecutionRunSubtitle(run: ThinkExecutionRun): string | undefined;
13
14
  declare function getThinkExecutionRunProgressedAt(run: ThinkExecutionRun): number | Date | undefined;
14
15
  declare function getThinkExecutionRunProgressedLabel(run: ThinkExecutionRun): "Started" | "Updated";
@@ -25,6 +26,5 @@ declare function formatThinkExecutionShortTimestamp(value: Date | number | null
25
26
  declare function formatThinkExecutionRunProgress(run: ThinkExecutionRun): string;
26
27
  declare function getThinkExecutionRunAccessibleName(run: ThinkExecutionRun): string;
27
28
  declare function getThinkExecutionRunError(run: ThinkExecutionRun): string | undefined;
28
- declare function isSameThinkExecutionRun(first: ThinkExecutionRun | null, second: ThinkExecutionRun): boolean;
29
29
  //#endregion
30
- export { isThinkSubmissionRun as _, formatThinkExecutionStatus as a, getThinkExecutionRunError as c, getThinkExecutionRunProgressedLabel as d, getThinkExecutionRunStatus as f, isSameThinkExecutionRun as g, getThinkExecutionRunTitle as h, formatThinkExecutionShortTimestamp as i, getThinkExecutionRunId as l, getThinkExecutionRunSubtitle as m, ThinkExecutionStatusTone as n, formatThinkExecutionTimestamp as o, getThinkExecutionRunStatusTone as p, formatThinkExecutionRunProgress as r, getThinkExecutionRunAccessibleName as s, ThinkExecutionRun as t, getThinkExecutionRunProgressedAt as u };
30
+ export { isThinkSubmissionRun as _, formatThinkExecutionStatus as a, getThinkExecutionRunError as c, getThinkExecutionRunProgressedAt as d, getThinkExecutionRunProgressedLabel as f, getThinkExecutionRunTitle as g, getThinkExecutionRunSubtitle as h, formatThinkExecutionShortTimestamp as i, getThinkExecutionRunId as l, getThinkExecutionRunStatusTone as m, ThinkExecutionStatusTone as n, formatThinkExecutionTimestamp as o, getThinkExecutionRunStatus as p, formatThinkExecutionRunProgress as r, getThinkExecutionRunAccessibleName as s, ThinkExecutionRun as t, getThinkExecutionRunKindLabel as u };
@@ -1,7 +1,7 @@
1
1
  import { r as ToggleVariantsOptions } from "./Toggle-DLrIf5YH.js";
2
2
  import * as React from "react";
3
- import { Toggle } from "@base-ui/react/toggle";
4
3
  import { ToggleGroup } from "@base-ui/react/toggle-group";
4
+ import { Toggle } from "@base-ui/react/toggle";
5
5
 
6
6
  //#region src/components/foundations/ToggleGroup.d.ts
7
7
  type ToggleGroupSize = ToggleVariantsOptions["size"];
@@ -0,0 +1,152 @@
1
+ import * as React from "react";
2
+ import { Toolbar } from "@base-ui/react/toolbar";
3
+
4
+ //#region src/components/foundations/Toolbar.d.ts
5
+ /**
6
+ * Props for the Toolbar.Root component.
7
+ */
8
+ interface ToolbarRootProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Root> {}
9
+ /**
10
+ * Props for the Toolbar.Button component.
11
+ */
12
+ interface ToolbarButtonProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Button> {
13
+ /** Skip the default Button chrome when a composed control owns its visuals. */
14
+ unstyled?: boolean;
15
+ }
16
+ /**
17
+ * Props for the Toolbar.Link component.
18
+ */
19
+ interface ToolbarLinkProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Link> {
20
+ /** Skip the default Button chrome when a composed link owns its visuals. */
21
+ unstyled?: boolean;
22
+ }
23
+ /**
24
+ * Props for the Toolbar.Group component.
25
+ */
26
+ interface ToolbarGroupProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Group> {}
27
+ /**
28
+ * Props for the Toolbar.Separator component.
29
+ */
30
+ interface ToolbarSeparatorProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Separator> {}
31
+ /**
32
+ * Props for the Toolbar.Input component.
33
+ */
34
+ interface ToolbarInputProps extends React.ComponentPropsWithoutRef<typeof Toolbar.Input> {}
35
+ /**
36
+ * Container for grouping toolbar buttons and controls.
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * <Toolbar.Root>
41
+ * <Toolbar.Button>Bold</Toolbar.Button>
42
+ * <Toolbar.Button>Italic</Toolbar.Button>
43
+ * <Toolbar.Separator />
44
+ * <Toolbar.Button>Align Left</Toolbar.Button>
45
+ * </Toolbar.Root>
46
+ * ```
47
+ *
48
+ * @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar}
49
+ */
50
+ declare function ToolbarRoot({
51
+ className,
52
+ ref,
53
+ ...props
54
+ }: ToolbarRootProps & {
55
+ ref?: React.Ref<HTMLDivElement>;
56
+ }): React.JSX.Element;
57
+ /**
58
+ * A clickable button within the toolbar.
59
+ */
60
+ declare function ToolbarButton({
61
+ unstyled,
62
+ className,
63
+ ref,
64
+ ...props
65
+ }: ToolbarButtonProps & {
66
+ ref?: React.Ref<HTMLButtonElement>;
67
+ }): React.JSX.Element;
68
+ /**
69
+ * A link element within the toolbar.
70
+ */
71
+ declare function ToolbarLink({
72
+ unstyled,
73
+ className,
74
+ ref,
75
+ ...props
76
+ }: ToolbarLinkProps & {
77
+ ref?: React.Ref<HTMLAnchorElement>;
78
+ }): React.JSX.Element;
79
+ /**
80
+ * Groups toolbar items together.
81
+ */
82
+ declare function ToolbarGroup({
83
+ className,
84
+ ref,
85
+ ...props
86
+ }: ToolbarGroupProps & {
87
+ ref?: React.Ref<HTMLDivElement>;
88
+ }): React.JSX.Element;
89
+ /**
90
+ * Visual separator between toolbar sections.
91
+ */
92
+ declare function ToolbarSeparator({
93
+ className,
94
+ ref,
95
+ ...props
96
+ }: ToolbarSeparatorProps & {
97
+ ref?: React.Ref<HTMLDivElement>;
98
+ }): React.JSX.Element;
99
+ /**
100
+ * Input element within the toolbar.
101
+ */
102
+ declare function ToolbarInput({
103
+ className,
104
+ ref,
105
+ ...props
106
+ }: ToolbarInputProps & {
107
+ ref?: React.Ref<HTMLInputElement>;
108
+ }): React.JSX.Element;
109
+ /**
110
+ * A container for grouping buttons and controls.
111
+ * Provides keyboard navigation between items.
112
+ *
113
+ * @example
114
+ * ```tsx
115
+ * // Text formatting toolbar
116
+ * <Toolbar.Root>
117
+ * <Toolbar.Group>
118
+ * <Toolbar.Button>Bold</Toolbar.Button>
119
+ * <Toolbar.Button>Italic</Toolbar.Button>
120
+ * <Toolbar.Button>Underline</Toolbar.Button>
121
+ * </Toolbar.Group>
122
+ * <Toolbar.Separator />
123
+ * <Toolbar.Group>
124
+ * <Toolbar.Button>Left</Toolbar.Button>
125
+ * <Toolbar.Button>Center</Toolbar.Button>
126
+ * <Toolbar.Button>Right</Toolbar.Button>
127
+ * </Toolbar.Group>
128
+ * </Toolbar.Root>
129
+ * ```
130
+ *
131
+ * @example
132
+ * ```tsx
133
+ * // Vertical toolbar
134
+ * <Toolbar.Root orientation="vertical">
135
+ * <Toolbar.Button>Item 1</Toolbar.Button>
136
+ * <Toolbar.Button>Item 2</Toolbar.Button>
137
+ * <Toolbar.Button>Item 3</Toolbar.Button>
138
+ * </Toolbar.Root>
139
+ * ```
140
+ *
141
+ * @see {@link https://base-ui.com/react/components/toolbar | Base UI Toolbar}
142
+ */
143
+ declare const Toolbar$1: {
144
+ Root: typeof ToolbarRoot;
145
+ Button: typeof ToolbarButton;
146
+ Link: typeof ToolbarLink;
147
+ Group: typeof ToolbarGroup;
148
+ Separator: typeof ToolbarSeparator;
149
+ Input: typeof ToolbarInput;
150
+ };
151
+ //#endregion
152
+ export { ToolbarLinkProps as a, ToolbarInputProps as i, ToolbarButtonProps as n, ToolbarRootProps as o, ToolbarGroupProps as r, ToolbarSeparatorProps as s, Toolbar$1 as t };
@@ -1,6 +1,6 @@
1
- import { d as CheckIcon, h as CodeIcon, j as MaximizeIcon, nt as WarningIcon, r as ArrowLeftIcon, x as EyeIcon, y as DownloadIcon } from "./icons-MmIXciMO.js";
1
+ import { $ as WarningIcon, O as MaximizeIcon, b as EyeIcon, d as CheckIcon, m as CodeIcon, r as ArrowLeftIcon, v as DownloadIcon } from "./icons-CVFSeTJn.js";
2
2
  import { r as formatClock } from "./format-DB2mX9DA.js";
3
- import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-CWk1FVtm.js";
3
+ import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-BjELA-_s.js";
4
4
  import { AppTopBar } from "./components/general-purpose/AppTopBar.js";
5
5
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/agents-sdk/WorkspaceFile.js";
6
6
  import { c as useWorkspaceNavigationContext, s as useWorkspaceNavigationRestoration } from "./WorkspaceLink-DtH66bAY.js";
@@ -1,4 +1,4 @@
1
- import { w as MessageResponseProps } from "./Message-DBsHHhcM.js";
1
+ import { E as MessageResponseProps } from "./Message-D_vCVEGB.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/WorkspaceMessageResponse.d.ts
@@ -1,5 +1,5 @@
1
1
  import { inferFaviconUrl } from "../../utils/favicon.js";
2
- import { A as LinkIcon, C as FileIcon, I as MonitorIcon, K as SearchIcon, O as InfoIcon, V as PencilIcon, et as TerminalIcon, nt as WarningIcon, rt as WrenchIcon } from "../../icons-MmIXciMO.js";
2
+ import { $ as WarningIcon, D as LinkIcon, N as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WrenchIcon } from "../../icons-CVFSeTJn.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,2 +1,2 @@
1
- import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, o as compactingNotice, r as AgentChatProps, t as AgentChat } from "../../AgentChat-CVO7xyLC.js";
1
+ import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, o as compactingNotice, r as AgentChatProps, t as AgentChat } from "../../AgentChat-DVr2giwD.js";
2
2
  export { AgentChat, AgentChatComposerDraft, AgentChatProps, AgentChatRenderMessageContext, PermissionModeControl, compactingNotice };
@@ -1,16 +1,16 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
2
  import { ExpansionStateProvider } from "../ai-sdk/ExpansionState.js";
3
- import { G as RefreshIcon, R as MoveToFrontIcon, U as PlusIcon, V as PencilIcon, W as QueueIcon, Y as SpinnerIcon, t as ArchiveIcon, tt as TrashIcon } from "../../icons-MmIXciMO.js";
3
+ import { B as PlusIcon, F as MoveToFrontIcon, H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, V as QueueIcon, t as ArchiveIcon } from "../../icons-CVFSeTJn.js";
4
4
  import { Button } from "../foundations/Button.js";
5
5
  import { AgentChatMessageEditor } from "../ai-sdk/AgentChatMessageEditor.js";
6
6
  import { IconButton } from "../foundations/IconButton.js";
7
7
  import { Menu } from "../foundations/Menu.js";
8
8
  import { PromptInput, PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuTrigger, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputPermissionSelector, PromptInputReferences, PromptInputSubmit, PromptInputTextarea, PromptInputTools, PromptInputTray, usePromptInputAttachments } from "../ai-sdk/PromptInput.js";
9
9
  import { AgentChatStartScreen } from "../ai-sdk/AgentChatStartScreen.js";
10
- import { Message, MessageAction, MessageActions } from "../ai-sdk/Message.js";
10
+ import { Message, MessageAction, MessageActions, MessageMeta, MessageTimestamp } from "../ai-sdk/Message.js";
11
11
  import { AgentMessageParts } from "../ai-sdk/AgentMessageParts.js";
12
12
  import { Marker, MarkerContent } from "../foundations/Marker.js";
13
- import { t as CopyButton } from "../../copy-button-Bc7jsYv_.js";
13
+ import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
14
14
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "../ai-sdk/Context.js";
15
15
  import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
16
16
  import { QueueItem, QueueItemActions, QueueItemContent } from "../ai-sdk/Queue.js";
@@ -78,6 +78,14 @@ function observeAgentChatComposer(element) {
78
78
  observer.disconnect();
79
79
  };
80
80
  }
81
+ function getAgentChatMessageTime(message) {
82
+ const metadata = message.metadata;
83
+ if (!metadata || typeof metadata !== "object" || !("createdAt" in metadata)) return void 0;
84
+ const value = metadata.createdAt;
85
+ if (!(value instanceof Date) && typeof value !== "number" && typeof value !== "string") return;
86
+ const date = value instanceof Date ? value : new Date(value);
87
+ return Number.isNaN(date.getTime()) ? void 0 : date;
88
+ }
81
89
  const EMPTY_PENDING_APPROVALS = [];
82
90
  const EMPTY_SKIPPED_APPROVAL_IDS = [];
83
91
  function createApprovalSessionState(thinkStub) {
@@ -133,12 +141,13 @@ function AgentChatAssistantActions({ message, responseNumber, showCopy, showRetr
133
141
  label: `Copy response ${responseNumber}`,
134
142
  tooltip: "Copy response",
135
143
  text: copyText,
136
- size: "sm",
144
+ size: "xs",
137
145
  onCopy: () => onCopyStatus(`Response ${responseNumber} copied.`),
138
146
  onError: () => onCopyStatus(`Could not copy response ${responseNumber}. Try again.`)
139
147
  }) : null, hasRetry ? /* @__PURE__ */ jsx(MessageAction, {
140
148
  label: "Retry",
141
149
  tooltip: "Regenerate response",
150
+ size: "xs",
142
151
  onClick: () => onRegenerate(message.id),
143
152
  children: /* @__PURE__ */ jsx(RefreshIcon, { size: 14 })
144
153
  }) : null]
@@ -164,6 +173,8 @@ function isCompactedPart(message, partIndex) {
164
173
  * "Transcript rendering performance" in docs/think-chat.md.
165
174
  */
166
175
  function AgentChatTranscriptRowBodyImpl({ message, messageIndex, status, renderPart, renderMessageAfter, editing, canEdit, editDisabled, onEditAndResend, onStartEdit, onCancelEdit, onFinishEdit, editButtonRef, responseNumber, showAssistantActions, showCopy, showRetry, onRegenerate, onCopyStatus }) {
176
+ const messageTime = getAgentChatMessageTime(message);
177
+ const userText = getEditableUserText(message);
167
178
  return /* @__PURE__ */ jsx(Fragment, { children: isCompactionMessage(message) ? /* @__PURE__ */ jsx(Marker, {
168
179
  variant: "separator",
169
180
  children: /* @__PURE__ */ jsx(MarkerContent, { children: "Context compacted" })
@@ -193,20 +204,32 @@ function AgentChatTranscriptRowBodyImpl({ message, messageIndex, status, renderP
193
204
  message,
194
205
  messageIndex
195
206
  }),
196
- canEdit && getEditableUserText(message) !== void 0 ? /* @__PURE__ */ jsx(MessageActions, {
197
- "aria-label": "Message actions",
198
- "aria-hidden": editDisabled || void 0,
199
- className: "message__actions--inline",
200
- "data-unavailable": editDisabled || void 0,
201
- children: /* @__PURE__ */ jsx(MessageAction, {
202
- ref: editButtonRef,
203
- disabled: editDisabled,
204
- label: "Edit message",
205
- tooltip: "Edit and resend",
206
- onClick: () => onStartEdit(message.id),
207
- children: /* @__PURE__ */ jsx(PencilIcon, {})
208
- })
209
- }) : null,
207
+ message.role === "user" && (messageTime !== void 0 || userText !== void 0) ? /* @__PURE__ */ jsxs(MessageMeta, { children: [
208
+ messageTime ? /* @__PURE__ */ jsx(MessageTimestamp, { date: messageTime }) : null,
209
+ userText ? /* @__PURE__ */ jsx(CopyButton, {
210
+ className: "message__action",
211
+ label: `Copy message ${messageIndex + 1}`,
212
+ tooltip: "Copy message",
213
+ text: userText,
214
+ size: "xs",
215
+ onCopy: () => onCopyStatus(`Message ${messageIndex + 1} copied.`),
216
+ onError: () => onCopyStatus(`Could not copy message ${messageIndex + 1}. Try again.`)
217
+ }) : null,
218
+ canEdit && userText ? /* @__PURE__ */ jsx(MessageActions, {
219
+ "aria-label": "Message actions",
220
+ "aria-hidden": editDisabled || void 0,
221
+ "data-unavailable": editDisabled || void 0,
222
+ children: /* @__PURE__ */ jsx(MessageAction, {
223
+ ref: editButtonRef,
224
+ disabled: editDisabled,
225
+ label: "Edit message",
226
+ tooltip: "Edit and resend",
227
+ size: "xs",
228
+ onClick: () => onStartEdit(message.id),
229
+ children: /* @__PURE__ */ jsx(PencilIcon, {})
230
+ })
231
+ }) : null
232
+ ] }) : null,
210
233
  showAssistantActions ? /* @__PURE__ */ jsx(AgentChatAssistantActions, {
211
234
  message,
212
235
  responseNumber,
@@ -1,2 +1,2 @@
1
- import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolEventsValue, o as useSourceScopedAgentToolEvents, r as AgentToolRunsProvider, t as AgentToolEventSource } from "../../AgentToolRunsContext-BCVqCtJ1.js";
1
+ import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolEventsValue, o as useSourceScopedAgentToolEvents, r as AgentToolRunsProvider, t as AgentToolEventSource } from "../../AgentToolRunsContext-daY67hFM.js";
2
2
  export { AgentToolEventSource, AgentToolEventsValue, AgentToolRunsProvider, AgentToolRunsProviderProps, useOptionalAgentToolRuns, useSourceScopedAgentToolEvents };
@@ -10,6 +10,18 @@ import { useAgentToolEvents } from "agents/react";
10
10
  * once per socket connect, so a later mount misses existing runs — and share
11
11
  * the one value with every surface that reads runs (the chat shell and a
12
12
  * run-detail route read the same projection, never two subscriptions).
13
+ *
14
+ * The subscription's listener attaches in a passive effect, after paint. A
15
+ * host whose transport is in-process (the browser extension's port bridge)
16
+ * can complete the connect and deliver the replay before that effect runs —
17
+ * reliably so on a hot return from a drill-in. Upstream owns the fix:
18
+ * `useAgent` buffers `agent-tool-event` frames from socket construction and
19
+ * `useAgentToolEvents` drains them when its listener attaches (agents >
20
+ * 0.20.1; `_bufferAgentToolReplayFrame` is the seam for a non-`useAgent`
21
+ * socket). On older versions such hosts must buffer and re-dispatch
22
+ * themselves — think-browser-host's `useThinkAgentToolEvents` is that
23
+ * interim shim. Network transports are not affected in practice: the round
24
+ * trip loses to the effect flush.
13
25
  */
14
26
  function useSourceScopedAgentToolEvents(agent) {
15
27
  const agentTools = useAgentToolEvents({ agent });