@mcp-b/react-components 0.39.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 (188) 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-DO4Hdu1R.js → CodeBlock-BjELA-_s.js} +1 -1
  5. package/dist/{FileTree-DbQMpvxV.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/Toolbar-CBOseBQr.d.ts +152 -0
  11. package/dist/{WorkspaceFileView-D0r7xnq5.js → WorkspaceFileView-D0yFwoDr.js} +3 -3
  12. package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
  13. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  14. package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
  15. package/dist/components/agents-sdk/AgentChat.js +41 -18
  16. package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
  17. package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
  18. package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
  19. package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
  20. package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
  21. package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
  22. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  23. package/dist/components/agents-sdk/BrowserRunPanel.d.ts +72 -25
  24. package/dist/components/agents-sdk/BrowserRunPanel.js +111 -70
  25. package/dist/components/agents-sdk/ManagerOffice.d.ts +156 -0
  26. package/dist/components/agents-sdk/ManagerOffice.js +662 -0
  27. package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
  28. package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
  29. package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
  30. package/dist/components/agents-sdk/McpPluginCatalog.js +79 -61
  31. package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
  32. package/dist/components/agents-sdk/McpServerPicker.js +2 -2
  33. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  34. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  35. package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
  36. package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
  37. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  38. package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
  39. package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
  40. package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
  41. package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
  42. package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
  43. package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
  44. package/dist/components/agents-sdk/ThinkExecutionDetail.js +43 -43
  45. package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
  46. package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
  47. package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
  48. package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
  49. package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
  50. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -38
  51. package/dist/components/agents-sdk/ThinkFullApp.d.ts +18 -6
  52. package/dist/components/agents-sdk/ThinkFullApp.js +112 -144
  53. package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
  54. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  55. package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
  56. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  57. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +69 -89
  58. package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
  59. package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
  60. package/dist/components/agents-sdk/ThinkThreadPicker.js +1 -1
  61. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  62. package/dist/components/agents-sdk/WorkspaceExplorer.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  64. package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
  65. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
  66. package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
  67. package/dist/components/ai-sdk/Activity.js +1 -1
  68. package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
  69. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  70. package/dist/components/ai-sdk/Approval.js +1 -1
  71. package/dist/components/ai-sdk/Artifact.js +1 -1
  72. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  73. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  74. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  75. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  76. package/dist/components/ai-sdk/Conversation.js +1 -1
  77. package/dist/components/ai-sdk/Goal.js +1 -1
  78. package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
  79. package/dist/components/ai-sdk/Message.d.ts +2 -2
  80. package/dist/components/ai-sdk/Message.js +25 -3
  81. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  82. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  83. package/dist/components/ai-sdk/Plan.js +1 -1
  84. package/dist/components/ai-sdk/PromptInput.js +1 -1
  85. package/dist/components/ai-sdk/Queue.d.ts +4 -4
  86. package/dist/components/ai-sdk/Queue.js +6 -15
  87. package/dist/components/ai-sdk/Reasoning.js +1 -1
  88. package/dist/components/ai-sdk/Sources.js +1 -1
  89. package/dist/components/ai-sdk/Task.d.ts +2 -2
  90. package/dist/components/ai-sdk/Task.js +2 -2
  91. package/dist/components/extension/ChatGptSignInScreen.d.ts +21 -10
  92. package/dist/components/extension/ChatGptSignInScreen.js +42 -34
  93. package/dist/components/extension/CodexModelSelector.js +1 -1
  94. package/dist/components/extension/ConversationTabPicker.js +1 -1
  95. package/dist/components/foundations/Avatar.d.ts +1 -10
  96. package/dist/components/foundations/Avatar.js +1 -10
  97. package/dist/components/foundations/Checkbox.js +1 -1
  98. package/dist/components/foundations/CheckboxGroup.js +1 -0
  99. package/dist/components/foundations/ContextMenu.js +1 -1
  100. package/dist/components/foundations/LinkButton.d.ts +12 -10
  101. package/dist/components/foundations/LinkButton.js +15 -11
  102. package/dist/components/foundations/Menubar.js +1 -1
  103. package/dist/components/foundations/SearchField.js +1 -1
  104. package/dist/components/foundations/Select.js +1 -1
  105. package/dist/components/foundations/Stepper.js +1 -1
  106. package/dist/components/foundations/Toast.js +1 -1
  107. package/dist/components/foundations/Toolbar.d.ts +1 -151
  108. package/dist/components/foundations/icons.d.ts +2 -2
  109. package/dist/components/foundations/icons.js +2 -2
  110. package/dist/components/general-purpose/AppTopBar.d.ts +1 -90
  111. package/dist/components/general-purpose/AppTopBar.js +2 -1
  112. package/dist/components/general-purpose/Commit.d.ts +2 -2
  113. package/dist/components/general-purpose/Commit.js +5 -13
  114. package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
  115. package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
  116. package/dist/components/general-purpose/FileTree.js +1 -1
  117. package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
  118. package/dist/components/general-purpose/PricingPlanCard.js +15 -14
  119. package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +95 -2
  120. package/dist/components/general-purpose/ResponsiveSidebarShell.js +90 -34
  121. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  122. package/dist/components/general-purpose/Terminal.d.ts +1 -1
  123. package/dist/components/general-purpose/Terminal.js +4 -12
  124. package/dist/components/general-purpose/TestResults.d.ts +1 -1
  125. package/dist/components/general-purpose/TestResults.js +8 -21
  126. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  127. package/dist/components/general-purpose/WebPreview.d.ts +1 -1
  128. package/dist/components/general-purpose/WebPreview.js +4 -12
  129. package/dist/components/nanites/AgentConnection.js +2 -2
  130. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  131. package/dist/components/nanites/AgentToolDetail.js +7 -7
  132. package/dist/components/nanites/NaniteScene.js +11 -11
  133. package/dist/{copy-button-4YvddK4e.js → copy-button-lys9N_aI.js} +1 -1
  134. package/dist/{icons-BGZ916hb.d.ts → icons-0corjfxR.d.ts} +6 -16
  135. package/dist/{icons-B4mGvCvc.js → icons-CVFSeTJn.js} +3 -5
  136. package/dist/styles/agent-attention.css +5 -5
  137. package/dist/styles/agent-chat.css +47 -12
  138. package/dist/styles/agent-tool-detail.css +2 -12
  139. package/dist/styles/app-icon.css +12 -18
  140. package/dist/styles/app-top-bar.css +32 -6
  141. package/dist/styles/avatar.css +6 -22
  142. package/dist/styles/base.css +2 -8
  143. package/dist/styles/browser-live-screen.css +38 -0
  144. package/dist/styles/browser-live-view.css +12 -4
  145. package/dist/styles/browser-run-panel.css +20 -16
  146. package/dist/styles/chatgpt-sign-in-screen.css +11 -5
  147. package/dist/styles/commit.css +24 -1
  148. package/dist/styles/environment-variables.css +3 -0
  149. package/dist/styles/index.css +5 -4
  150. package/dist/styles/manager-office.css +486 -0
  151. package/dist/styles/mcp-plugin-catalog.css +39 -35
  152. package/dist/styles/mcp-server-picker.css +1 -1
  153. package/dist/styles/message.css +41 -18
  154. package/dist/styles/nanite-scene.css +9 -9
  155. package/dist/styles/pricing-page.css +12 -8
  156. package/dist/styles/prompt-input.css +8 -13
  157. package/dist/styles/recipes.css +1 -57
  158. package/dist/styles/responsive-sidebar-shell.css +70 -20
  159. package/dist/styles/subagent-run.css +20 -3
  160. package/dist/styles/terminal.css +19 -0
  161. package/dist/styles/test-results.css +10 -1
  162. package/dist/styles/think-execution-status.css +8 -24
  163. package/dist/styles/think-execution-workbench.css +98 -105
  164. package/dist/styles/think-full-app.css +81 -185
  165. package/dist/styles/think-routine-library.css +0 -40
  166. package/dist/styles/think-thread-picker.css +8 -3
  167. package/dist/styles/transition-surface.css +7 -8
  168. package/dist/styles/utilities.css +42 -0
  169. package/dist/styles/web-preview.css +28 -5
  170. package/dist/styles/workspace-explorer.css +4 -23
  171. package/dist/styles/workspace-mount-manager.css +22 -0
  172. package/package.json +37 -35
  173. package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
  174. package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
  175. package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
  176. package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
  177. package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
  178. package/dist/components/foundations/Badge.d.ts +0 -62
  179. package/dist/components/foundations/Badge.js +0 -55
  180. package/dist/components/foundations/StatusPill.d.ts +0 -43
  181. package/dist/components/foundations/StatusPill.js +0 -35
  182. package/dist/components/general-purpose/Shell.d.ts +0 -149
  183. package/dist/components/general-purpose/Shell.js +0 -116
  184. package/dist/styles/agent-activity-preview-overlay.css +0 -169
  185. package/dist/styles/agent-activity-preview.css +0 -209
  186. package/dist/styles/badge.css +0 -120
  187. package/dist/styles/shell.css +0 -122
  188. package/dist/styles/status-pill.css +0 -39
@@ -1,39 +1,2 @@
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
1
+ import { n as McpConnectorFormProps, r as McpConnectorFormValues, t as McpConnectorForm } from "../../McpConnectorForm-MRm1r59e.js";
39
2
  export { McpConnectorForm, McpConnectorFormProps, McpConnectorFormValues };
@@ -1,4 +1,5 @@
1
1
  import { o as McpServerCard } from "../../mcp-server-catalog-CCj2ItkV.js";
2
+ import { r as McpConnectorFormValues } from "../../McpConnectorForm-MRm1r59e.js";
2
3
  import { l as DialogProps } from "../../Dialog-B_FhRWaz.js";
3
4
  import * as React from "react";
4
5
  import { MCPServersState } from "agents";
@@ -31,8 +32,13 @@ interface McpPluginCatalogProps extends Omit<React.HTMLAttributes<HTMLElement>,
31
32
  onConnect?: (server: McpServerCard) => void | Promise<void>;
32
33
  /** Removes the exact upstream MCP entry. */
33
34
  onDisconnect?: (serverId: string) => void | Promise<void>;
35
+ /**
36
+ * Connects a user-supplied MCP server. Providing it puts the "Custom
37
+ * plugin" action in the bar, opening the shared connector setup dialog.
38
+ */
39
+ onAddCustom?: (values: McpConnectorFormValues) => void | Promise<void>;
40
+ /** Accessible name only — the hosting tab or icon is the visible title. */
34
41
  heading?: React.ReactNode;
35
- description?: React.ReactNode;
36
42
  searchLabel?: string;
37
43
  emptyMessage?: React.ReactNode;
38
44
  }
@@ -63,8 +69,8 @@ declare function McpPluginCatalog({
63
69
  disclosure,
64
70
  onConnect,
65
71
  onDisconnect,
72
+ onAddCustom,
66
73
  heading,
67
- description,
68
74
  searchLabel,
69
75
  emptyMessage,
70
76
  className,
@@ -1,5 +1,6 @@
1
+ import { CUSTOM_MCP_SERVER_CARD } from "../../utils/mcp-server-catalog.js";
1
2
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { H as PlusIcon, J as SpinnerIcon, b as EllipsisIcon, o as ArrowUpRightIcon, rt as XIcon, tt as WarningIcon } from "../../icons-B4mGvCvc.js";
3
+ import { $ as WarningIcon, B as PlusIcon, K as SpinnerIcon, o as ArrowUpRightIcon, tt as XIcon, y as EllipsisIcon } from "../../icons-CVFSeTJn.js";
3
4
  import { Button } from "../foundations/Button.js";
4
5
  import { AgentAttention, AgentAttentionBody, AgentAttentionHeader } from "../ai-sdk/AgentAttention.js";
5
6
  import { IconButton } from "../foundations/IconButton.js";
@@ -9,6 +10,7 @@ import { Separator } from "../foundations/Separator.js";
9
10
  import { AppIcon } from "../foundations/AppIcon.js";
10
11
  import { n as getMcpServerProjection, t as McpServerIcon } from "../../mcp-server-SD_S-IpB.js";
11
12
  import { SearchField } from "../foundations/SearchField.js";
13
+ import { McpServerSetupDialog } from "./McpServerPicker.js";
12
14
  import * as React from "react";
13
15
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
14
16
  //#region src/components/agents-sdk/McpPluginCatalog.tsx
@@ -17,8 +19,9 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
17
19
  * state as {@link McpServerPicker}. Selecting a row opens the shared details
18
20
  * dialog; connecting still delegates to the host's existing MCP/OAuth path.
19
21
  */
20
- function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds = [], brandName, brandLogo, disclosure, onConnect, onDisconnect, heading = "Plugins", description = "Work with your AI across your favorite tools.", searchLabel = "Search plugins", emptyMessage = "No plugins found.", className, ...props }) {
22
+ function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds = [], brandName, brandLogo, disclosure, onConnect, onDisconnect, onAddCustom, heading = "Plugins", searchLabel = "Search plugins", emptyMessage = "No plugins found.", className, ...props }) {
21
23
  const [query, setQuery] = React.useState("");
24
+ const [customSetupOpen, setCustomSetupOpen] = React.useState(false);
22
25
  const [selectedServer, setSelectedServer] = React.useState(null);
23
26
  const headingIdPrefix = React.useId();
24
27
  const sections = groupServers(filterServers(servers, detailsByServerId, query), featuredServerIds, query);
@@ -27,72 +30,79 @@ function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds =
27
30
  className: cx("mcp-plugin-catalog", className),
28
31
  ...props,
29
32
  children: [
30
- /* @__PURE__ */ jsxs("div", {
33
+ /* @__PURE__ */ jsxs("header", {
31
34
  className: "mcp-plugin-catalog__header",
32
- children: [/* @__PURE__ */ jsxs("div", {
33
- className: "mcp-plugin-catalog__heading-copy",
34
- children: [/* @__PURE__ */ jsx("h1", {
35
- className: "mcp-plugin-catalog__heading",
36
- children: heading
37
- }), description ? /* @__PURE__ */ jsx("p", {
38
- className: "mcp-plugin-catalog__description",
39
- children: description
40
- }) : null]
41
- }), /* @__PURE__ */ jsxs(SearchField.Root, {
42
- className: "mcp-plugin-catalog__search",
43
- children: [/* @__PURE__ */ jsx(SearchField.Label, {
35
+ children: [
36
+ /* @__PURE__ */ jsx("h1", {
44
37
  className: "sigvelo-visually-hidden",
45
- children: searchLabel
46
- }), /* @__PURE__ */ jsx(SearchField.Control, {
47
- "aria-label": searchLabel,
48
- placeholder: searchLabel,
49
- value: query,
50
- onChange: (event) => setQuery(event.target.value)
51
- })]
52
- })]
53
- }),
54
- installedServers.length ? /* @__PURE__ */ jsxs("section", {
55
- "aria-labelledby": `${headingIdPrefix}-installed-heading`,
56
- className: "mcp-plugin-catalog__installed",
57
- children: [/* @__PURE__ */ jsx("h2", {
58
- id: `${headingIdPrefix}-installed-heading`,
59
- className: "mcp-plugin-catalog__section-heading",
60
- children: "Installed"
61
- }), /* @__PURE__ */ jsx("ul", {
62
- className: "mcp-plugin-catalog__installed-list",
63
- children: installedServers.map((server) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(IconButton, {
38
+ children: heading
39
+ }),
40
+ /* @__PURE__ */ jsxs(SearchField.Root, {
41
+ className: "mcp-plugin-catalog__search",
42
+ children: [/* @__PURE__ */ jsx(SearchField.Label, {
43
+ className: "sigvelo-visually-hidden",
44
+ children: searchLabel
45
+ }), /* @__PURE__ */ jsx(SearchField.Control, {
46
+ "aria-label": searchLabel,
47
+ placeholder: searchLabel,
48
+ value: query,
49
+ onChange: (event) => setQuery(event.target.value)
50
+ })]
51
+ }),
52
+ onAddCustom ? /* @__PURE__ */ jsxs(Button, {
53
+ className: "mcp-plugin-catalog__add-custom",
64
54
  color: "neutral",
65
- label: `Open installed ${server.name}`,
66
- size: "xl",
67
- tooltipSide: "bottom",
55
+ size: "sm",
68
56
  variant: "ghost",
69
- onClick: () => setSelectedServer(server),
70
- children: /* @__PURE__ */ jsx(McpServerIcon, { server })
71
- }) }, `${server.id}:${server.url}`))
72
- })]
73
- }) : null,
74
- sections.length === 0 ? /* @__PURE__ */ jsx("p", {
75
- className: "mcp-plugin-catalog__empty",
76
- children: emptyMessage
77
- }) : /* @__PURE__ */ jsx("div", {
78
- className: "mcp-plugin-catalog__sections",
79
- children: sections.map((section) => /* @__PURE__ */ jsxs("section", {
80
- "aria-labelledby": `${headingIdPrefix}-${section.id}-heading`,
81
- className: "mcp-plugin-catalog__section",
57
+ onClick: () => setCustomSetupOpen(true),
58
+ children: [/* @__PURE__ */ jsx(PlusIcon, {}), "Custom plugin"]
59
+ }) : null
60
+ ]
61
+ }),
62
+ /* @__PURE__ */ jsxs("div", {
63
+ className: "mcp-plugin-catalog__body",
64
+ children: [installedServers.length ? /* @__PURE__ */ jsxs("section", {
65
+ "aria-labelledby": `${headingIdPrefix}-installed-heading`,
66
+ className: "mcp-plugin-catalog__installed",
82
67
  children: [/* @__PURE__ */ jsx("h2", {
83
- id: `${headingIdPrefix}-${section.id}-heading`,
68
+ id: `${headingIdPrefix}-installed-heading`,
84
69
  className: "mcp-plugin-catalog__section-heading",
85
- children: section.label
70
+ children: "Installed"
86
71
  }), /* @__PURE__ */ jsx("ul", {
87
- className: "mcp-plugin-catalog__list",
88
- children: section.servers.map((server) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(McpPluginCard, {
89
- server,
90
- details: detailsByServerId?.[server.id],
91
- mcp,
92
- onSelect: () => setSelectedServer(server)
72
+ className: "mcp-plugin-catalog__installed-list",
73
+ children: installedServers.map((server) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(IconButton, {
74
+ color: "neutral",
75
+ label: `Open installed ${server.name}`,
76
+ size: "xl",
77
+ tooltipSide: "bottom",
78
+ variant: "ghost",
79
+ onClick: () => setSelectedServer(server),
80
+ children: /* @__PURE__ */ jsx(McpServerIcon, { server })
93
81
  }) }, `${server.id}:${server.url}`))
94
82
  })]
95
- }, section.id))
83
+ }) : null, sections.length === 0 ? /* @__PURE__ */ jsx("p", {
84
+ className: "mcp-plugin-catalog__empty",
85
+ children: emptyMessage
86
+ }) : /* @__PURE__ */ jsx("div", {
87
+ className: "mcp-plugin-catalog__sections",
88
+ children: sections.map((section) => /* @__PURE__ */ jsxs("section", {
89
+ "aria-labelledby": `${headingIdPrefix}-${section.id}-heading`,
90
+ className: "mcp-plugin-catalog__section",
91
+ children: [/* @__PURE__ */ jsx("h2", {
92
+ id: `${headingIdPrefix}-${section.id}-heading`,
93
+ className: "mcp-plugin-catalog__section-heading",
94
+ children: section.label
95
+ }), /* @__PURE__ */ jsx("ul", {
96
+ className: "mcp-plugin-catalog__list",
97
+ children: section.servers.map((server) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(McpPluginCard, {
98
+ server,
99
+ details: detailsByServerId?.[server.id],
100
+ mcp,
101
+ onSelect: () => setSelectedServer(server)
102
+ }) }, `${server.id}:${server.url}`))
103
+ })]
104
+ }, section.id))
105
+ })]
96
106
  }),
97
107
  /* @__PURE__ */ jsx(McpPluginDetailsDialog, {
98
108
  details: selectedServer ? detailsByServerId?.[selectedServer.id] : void 0,
@@ -104,7 +114,15 @@ function McpPluginCatalog({ servers, mcp, detailsByServerId, featuredServerIds =
104
114
  onConnect,
105
115
  onDisconnect,
106
116
  onOpenChange: (open) => !open && setSelectedServer(null)
107
- })
117
+ }),
118
+ onAddCustom ? /* @__PURE__ */ jsx(McpServerSetupDialog, {
119
+ server: customSetupOpen ? CUSTOM_MCP_SERVER_CARD : null,
120
+ onOpenChange: setCustomSetupOpen,
121
+ onSubmit: async (values) => {
122
+ await onAddCustom(values);
123
+ setCustomSetupOpen(false);
124
+ }
125
+ }) : null
108
126
  ]
109
127
  });
110
128
  }
@@ -250,7 +268,7 @@ function McpPluginDialogActions({ projection, server, onConnect, onDisconnect })
250
268
  }
251
269
  return /* @__PURE__ */ jsxs(Fragment, { children: [action.error ? /* @__PURE__ */ jsxs(AgentAttention, {
252
270
  role: "alert",
253
- tone: "warning",
271
+ tone: "attention",
254
272
  children: [/* @__PURE__ */ jsx(AgentAttentionHeader, {
255
273
  icon: /* @__PURE__ */ jsx(WarningIcon, {}),
256
274
  title: disconnect ? "Disconnect failed" : "Connection failed"
@@ -1,6 +1,6 @@
1
1
  import { s as MenuItemProps, t as Menu } from "../../Menu-yb6QXWA3.js";
2
2
  import { o as McpServerCard } from "../../mcp-server-catalog-CCj2ItkV.js";
3
- import { McpConnectorFormProps } from "./McpConnectorForm.js";
3
+ import { n as McpConnectorFormProps } from "../../McpConnectorForm-MRm1r59e.js";
4
4
  import { l as DialogProps } from "../../Dialog-B_FhRWaz.js";
5
5
  import * as React from "react";
6
6
  import { MCPServersState } from "agents";
@@ -1,5 +1,5 @@
1
1
  import { n as mergeBaseClassName } from "../../class-names-BiMDVpUo.js";
2
- import { J as SpinnerIcon, P as MinusIcon, d as CheckIcon, tt as WarningIcon } from "../../icons-B4mGvCvc.js";
2
+ import { $ as WarningIcon, K as SpinnerIcon, M as MinusIcon, d as CheckIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { buttonVariants } from "../foundations/Button.js";
4
4
  import { Menu } from "../foundations/Menu.js";
5
5
  import { Dialog } from "../foundations/Dialog.js";
@@ -29,7 +29,7 @@ function McpServerSetupDialog({ server, defaults, onOpenChange, onSubmit, redire
29
29
  open: server !== null,
30
30
  onOpenChange,
31
31
  children: /* @__PURE__ */ jsxs(Dialog.Portal, { children: [/* @__PURE__ */ jsx(Dialog.Backdrop, {}), /* @__PURE__ */ jsx(Dialog.Viewport, { children: /* @__PURE__ */ jsxs(Dialog.Popup, { children: [
32
- /* @__PURE__ */ jsxs(Dialog.Header, { children: [/* @__PURE__ */ jsx(Dialog.Title, { children: server ? `${server.name} MCP` : "MCP connectors" }), /* @__PURE__ */ jsx(Dialog.Description, { children: server?.manualSetup?.description ?? "Connect a remote MCP server the model can call." })] }),
32
+ /* @__PURE__ */ jsxs(Dialog.Header, { children: [/* @__PURE__ */ jsx(Dialog.Title, { children: server ? server.name.endsWith("MCP") ? server.name : `${server.name} MCP` : "MCP connectors" }), /* @__PURE__ */ jsx(Dialog.Description, { children: server?.manualSetup?.description ?? "Connect a remote MCP server the model can call." })] }),
33
33
  server?.manualSetup?.links.length ? /* @__PURE__ */ jsx("div", {
34
34
  className: "mcp-server-setup-dialog__links",
35
35
  children: server.manualSetup.links.map((link) => /* @__PURE__ */ jsx("a", {
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { G as SearchIcon, f as ChevronDownIcon } from "../../icons-B4mGvCvc.js";
2
+ import { U as SearchIcon, f as ChevronDownIcon } from "../../icons-CVFSeTJn.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Autocomplete } from "../foundations/Autocomplete.js";
5
5
  import { Dialog } from "../foundations/Dialog.js";
@@ -1,4 +1,4 @@
1
- import { c as BoxIcon, j as McpIcon } from "../../icons-B4mGvCvc.js";
1
+ import { c as BoxIcon, k as McpIcon } from "../../icons-CVFSeTJn.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region src/components/agents-sdk/PromptInputCommands.tsx
4
4
  /** Project whole upstream Agents MCP state into composer mention commands. */
@@ -16,14 +16,6 @@ declare function SubagentRunProgress({
16
16
  }: SubagentRunProgressProps & {
17
17
  ref?: React.Ref<HTMLDivElement>;
18
18
  }): React.JSX.Element;
19
- interface SubagentRunActionsProps extends React.HTMLAttributes<HTMLDivElement> {}
20
- declare function SubagentRunActions({
21
- className,
22
- ref,
23
- ...props
24
- }: SubagentRunActionsProps & {
25
- ref?: React.Ref<HTMLDivElement>;
26
- }): React.JSX.Element;
27
19
  interface SubagentRunMilestonesProps extends React.OlHTMLAttributes<HTMLOListElement> {}
28
20
  declare function SubagentRunMilestones({
29
21
  className,
@@ -41,4 +33,4 @@ declare function SubagentRunMilestone({
41
33
  ref?: React.Ref<HTMLLIElement>;
42
34
  }): React.JSX.Element;
43
35
  //#endregion
44
- export { SubagentRunActions, SubagentRunActionsProps, SubagentRunMilestone, SubagentRunMilestoneProps, SubagentRunMilestones, SubagentRunMilestonesProps, SubagentRunProgress, SubagentRunProgressProps };
36
+ export { SubagentRunMilestone, SubagentRunMilestoneProps, SubagentRunMilestones, SubagentRunMilestonesProps, SubagentRunProgress, SubagentRunProgressProps };
@@ -22,14 +22,6 @@ function SubagentRunProgress({ className, label, value, ref, ...props }) {
22
22
  })]
23
23
  });
24
24
  }
25
- function SubagentRunActions({ className, ref, ...props }) {
26
- return /* @__PURE__ */ jsx("div", {
27
- ref,
28
- "data-slot": "subagent-run-actions",
29
- className: cx("subagent-run__actions", className),
30
- ...props
31
- });
32
- }
33
25
  function SubagentRunMilestones({ className, ref, ...props }) {
34
26
  return /* @__PURE__ */ jsx("ol", {
35
27
  ref,
@@ -47,4 +39,4 @@ function SubagentRunMilestone({ className, ref, ...props }) {
47
39
  });
48
40
  }
49
41
  //#endregion
50
- export { SubagentRunActions, SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress };
42
+ export { SubagentRunMilestone, SubagentRunMilestones, SubagentRunProgress };
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { J as SpinnerIcon, X as StopIcon, d as CheckIcon, tt as WarningIcon } from "../../icons-B4mGvCvc.js";
2
+ import { $ as WarningIcon, J as StopIcon, K as SpinnerIcon, d as CheckIcon } from "../../icons-CVFSeTJn.js";
3
3
  import "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/components/agents-sdk/SubagentRunIndicator.tsx
@@ -16,8 +16,10 @@ interface SubagentRunSelectorProps<Part extends AgentToolRunPart = UIMessage["pa
16
16
  *
17
17
  * The component consumes `AgentToolRunState` whole and derives its label and
18
18
  * status from upstream fields. The application-authored Link routes
19
- * `run.subAgent` into an adjacent detail surface; this component never invents
20
- * a second transcript or expands child content inline.
19
+ * `run.subAgent` to a run surface that replaces the conversation — the
20
+ * workspace drill-in pattern with the top bar's back link as the way out;
21
+ * this component never invents a second transcript or expands child content
22
+ * inline.
21
23
  */
22
24
  declare function SubagentRunSelector<Part extends AgentToolRunPart = UIMessage["parts"][number]>({
23
25
  className,
@@ -1,9 +1,9 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { l as BrainIcon } from "../../icons-B4mGvCvc.js";
3
2
  import { buttonVariants } from "../foundations/Button.js";
4
3
  import { Tooltip } from "../foundations/Tooltip.js";
5
4
  import { t as NavigationLink } from "../../navigation-link-kqMa81v5.js";
6
5
  import { SubagentRunIndicator, getSubagentRunName, getSubagentRunTooltip } from "./SubagentRunIndicator.js";
6
+ import { NaniteMark } from "../nanites/NaniteScene.js";
7
7
  import "react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
  //#region src/components/agents-sdk/SubagentRunSelector.tsx
@@ -12,8 +12,10 @@ import { jsx, jsxs } from "react/jsx-runtime";
12
12
  *
13
13
  * The component consumes `AgentToolRunState` whole and derives its label and
14
14
  * status from upstream fields. The application-authored Link routes
15
- * `run.subAgent` into an adjacent detail surface; this component never invents
16
- * a second transcript or expands child content inline.
15
+ * `run.subAgent` to a run surface that replaces the conversation — the
16
+ * workspace drill-in pattern with the top bar's back link as the way out;
17
+ * this component never invents a second transcript or expands child content
18
+ * inline.
17
19
  */
18
20
  function SubagentRunSelector({ className, render, run, tooltip, ref, "aria-label": ariaLabel, ...props }) {
19
21
  const name = getSubagentRunName(run);
@@ -21,16 +23,15 @@ function SubagentRunSelector({ className, render, run, tooltip, ref, "aria-label
21
23
  ref,
22
24
  render,
23
25
  "data-slot": "subagent-run-selector",
24
- "data-run-status": run.status,
25
26
  className: cx(buttonVariants({
26
- variant: "outline",
27
+ variant: "ghost",
27
28
  color: "neutral",
28
29
  size: "sm"
29
30
  }), "subagent-run__selector", className),
30
31
  "aria-label": ariaLabel ?? `Open ${name}, ${run.status}`,
31
32
  ...props,
32
33
  children: [
33
- /* @__PURE__ */ jsx(BrainIcon, { "aria-hidden": "true" }),
34
+ /* @__PURE__ */ jsx(NaniteMark, { index: run.order }),
34
35
  /* @__PURE__ */ jsx("span", {
35
36
  className: "subagent-run__title sigvelo-truncate",
36
37
  children: name
@@ -1,12 +1,12 @@
1
1
  import { i as AgentMessageRenderPartContext } from "../../AgentMessageParts-C7L-Mv9U.js";
2
2
  import { K as PromptInputMessage } from "../../PromptInput-BRX7FhjH.js";
3
- import { r as AgentChatProps } from "../../AgentChat-CVO7xyLC.js";
4
- import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-BCVqCtJ1.js";
3
+ import { r as AgentChatProps } from "../../AgentChat-DVr2giwD.js";
4
+ import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-daY67hFM.js";
5
5
  import { o as UseSessionCompactionResult } from "../../SessionCompaction-CmTJFpzj.js";
6
- import { o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, t as ThinkChatActivity } from "../../ThinkChatActivity-D6-_5Phw.js";
6
+ import { o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, t as ThinkChatActivity } from "../../ThinkChatActivity-DyGHj01E.js";
7
7
  import { i as ThinkChatValue } from "../../ThinkChatContext-COIgzkYp.js";
8
8
  import { t as ThinkRecoveryNotice } from "../../ThinkRecoveryNotice-DGWr94rk.js";
9
- import { n as WorkspaceHtmlArtifactRenderer } from "../../WorkspaceMessageResponse-Cy28WGSz.js";
9
+ import { n as WorkspaceHtmlArtifactRenderer } from "../../WorkspaceMessageResponse-D66ty4FO.js";
10
10
  import * as React from "react";
11
11
  import { UIMessage } from "ai";
12
12
  import { UseAgentOptions } from "agents/react";
@@ -1,2 +1,2 @@
1
- import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../../ThinkChatActivity-D6-_5Phw.js";
1
+ import { a as ThinkChatToolRenderers, i as ThinkChatToolRenderer, n as ThinkChatActivityProps, o as createThinkChatActivityRenderer, r as ThinkChatActivityRendererOptions, s as renderThinkChatActivityPart, t as ThinkChatActivity } from "../../ThinkChatActivity-DyGHj01E.js";
2
2
  export { ThinkChatActivity, ThinkChatActivityProps, ThinkChatActivityRendererOptions, ThinkChatToolRenderer, ThinkChatToolRenderers, createThinkChatActivityRenderer, renderThinkChatActivityPart };
@@ -1,7 +1,7 @@
1
1
  import { ActivityOutput, ActivityPanel } from "../ai-sdk/Activity.js";
2
2
  import { Tabs } from "../foundations/Tabs.js";
3
3
  import { a as formatUnknownValue } from "../../format-DB2mX9DA.js";
4
- import { t as CodeBlock } from "../../CodeBlock-DO4Hdu1R.js";
4
+ import { t as CodeBlock } from "../../CodeBlock-BjELA-_s.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
6
6
  import { inferWorkspaceLanguage } from "./WorkspaceFile.js";
7
7
  import { displayUrl, isSessionContextToolFailure } from "./ThinkChatToolParts.js";
@@ -1,4 +1,4 @@
1
- import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-lYYgyeE1.js";
1
+ import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-k8bpyXqt.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/ThinkExecutionDetail.d.ts
@@ -1,9 +1,10 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { $ as TerminalIcon, C as FileIcon, O as InfoIcon, W as RefreshIcon, d as CheckIcon, n as ArrowDownIcon, rt as XIcon } from "../../icons-B4mGvCvc.js";
3
- import { Activity, ActivityContent, ActivityItem, ActivityItemGroup, ActivityOutput, ActivityPanel, ActivityTrigger } from "../ai-sdk/Activity.js";
2
+ import { S as FileIcon, T as InfoIcon } from "../../icons-CVFSeTJn.js";
3
+ import { Activity, ActivityContent, ActivityItemGroup, ActivityOutput, ActivityTrigger } from "../ai-sdk/Activity.js";
4
4
  import { a as formatUnknownValue } from "../../format-DB2mX9DA.js";
5
5
  import { EmptyState } from "../foundations/EmptyState.js";
6
- import { formatThinkExecutionRunProgress, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunTitle, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
6
+ import { DescriptionList } from "../foundations/DescriptionList.js";
7
+ import { formatThinkExecutionTimestamp, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunKindLabel, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunTitle, isThinkSubmissionRun } from "./ThinkExecutionRun.js";
7
8
  import { ThinkExecutionStatus } from "./ThinkExecutionStatus.js";
8
9
  import "react";
9
10
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -27,52 +28,51 @@ function ThinkExecutionDetail({ className, emptyState = "Select a run to view it
27
28
  ref,
28
29
  className: cx("think-execution-detail", className),
29
30
  ...props,
30
- children: [/* @__PURE__ */ jsxs("header", {
31
- className: "think-execution-workbench__detail-header",
32
- children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", { children: getThinkExecutionRunTitle(run) }), !isThinkSubmissionRun(run) ? /* @__PURE__ */ jsx("code", { children: id }) : null] }), /* @__PURE__ */ jsxs("div", {
33
- className: "think-execution-workbench__detail-status",
34
- children: [/* @__PURE__ */ jsx(ThinkExecutionStatus, { run }), /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("strong", { children: formatThinkExecutionStatus(getThinkExecutionRunStatus(run)) }), /* @__PURE__ */ jsx("span", { children: formatThinkExecutionRunProgress(run) })] })]
35
- })]
36
- }), /* @__PURE__ */ jsxs(Activity, {
37
- defaultOpen: true,
38
- children: [/* @__PURE__ */ jsx(ActivityTrigger, {
39
- icon: /* @__PURE__ */ jsx(TerminalIcon, {}),
40
- action: "Activity"
41
- }), /* @__PURE__ */ jsxs(ActivityContent, { children: [
42
- /* @__PURE__ */ jsx(ActivityItem, {
43
- icon: /* @__PURE__ */ jsx(ArrowDownIcon, {}),
44
- children: `Created ${formatThinkExecutionTimestamp(run.createdAt)}`
45
- }),
46
- progressedAt ? /* @__PURE__ */ jsx(ActivityItem, {
47
- icon: /* @__PURE__ */ jsx(RefreshIcon, {}),
48
- children: `${getThinkExecutionRunProgressedLabel(run)} ${formatThinkExecutionTimestamp(progressedAt)}`
49
- }) : null,
50
- run.completedAt ? /* @__PURE__ */ jsx(ActivityItem, {
51
- icon: /* @__PURE__ */ jsx(CheckIcon, {}),
52
- children: `Finished ${formatThinkExecutionTimestamp(run.completedAt)}`
53
- }) : null,
54
- error ? /* @__PURE__ */ jsx(ActivityItemGroup, {
55
- icon: /* @__PURE__ */ jsx(XIcon, {}),
56
- action: "Failure",
57
- children: /* @__PURE__ */ jsx(ActivityPanel, {
58
- label: "Error",
59
- text: error,
60
- status: "error",
61
- error: true
62
- })
63
- }) : null,
64
- run.metadata ? /* @__PURE__ */ jsx(ActivityItemGroup, {
31
+ children: [
32
+ /* @__PURE__ */ jsxs("header", {
33
+ className: "think-execution-detail__header",
34
+ children: [
35
+ /* @__PURE__ */ jsx("p", {
36
+ className: "think-execution-detail__eyebrow",
37
+ children: getThinkExecutionRunKindLabel(run)
38
+ }),
39
+ /* @__PURE__ */ jsxs("div", {
40
+ className: "think-execution-detail__heading",
41
+ children: [/* @__PURE__ */ jsx("h3", { children: getThinkExecutionRunTitle(run) }), /* @__PURE__ */ jsx(ThinkExecutionStatus, { run })]
42
+ }),
43
+ !isThinkSubmissionRun(run) ? /* @__PURE__ */ jsx("code", { children: id }) : null
44
+ ]
45
+ }),
46
+ error ? /* @__PURE__ */ jsx("p", {
47
+ className: "think-execution-detail__error",
48
+ role: "alert",
49
+ children: error
50
+ }) : null,
51
+ /* @__PURE__ */ jsxs(DescriptionList.Root, {
52
+ variant: "divided",
53
+ className: "think-execution-detail__facts",
54
+ children: [
55
+ /* @__PURE__ */ jsxs(DescriptionList.Item, { children: [/* @__PURE__ */ jsx(DescriptionList.Term, { children: "Created" }), /* @__PURE__ */ jsx(DescriptionList.Details, { children: formatThinkExecutionTimestamp(run.createdAt) })] }),
56
+ progressedAt ? /* @__PURE__ */ jsxs(DescriptionList.Item, { children: [/* @__PURE__ */ jsx(DescriptionList.Term, { children: getThinkExecutionRunProgressedLabel(run) }), /* @__PURE__ */ jsx(DescriptionList.Details, { children: formatThinkExecutionTimestamp(progressedAt) })] }) : null,
57
+ run.completedAt ? /* @__PURE__ */ jsxs(DescriptionList.Item, { children: [/* @__PURE__ */ jsx(DescriptionList.Term, { children: "Finished" }), /* @__PURE__ */ jsx(DescriptionList.Details, { children: formatThinkExecutionTimestamp(run.completedAt) })] }) : null
58
+ ]
59
+ }),
60
+ /* @__PURE__ */ jsxs(Activity, {
61
+ defaultOpen: true,
62
+ children: [/* @__PURE__ */ jsx(ActivityTrigger, {
63
+ icon: /* @__PURE__ */ jsx(FileIcon, {}),
64
+ action: "Record"
65
+ }), /* @__PURE__ */ jsxs(ActivityContent, { children: [run.metadata ? /* @__PURE__ */ jsx(ActivityItemGroup, {
65
66
  icon: /* @__PURE__ */ jsx(InfoIcon, {}),
66
67
  action: "Metadata",
67
68
  children: /* @__PURE__ */ jsx(ActivityOutput, { children: formatJson(run.metadata) })
68
- }) : null,
69
- /* @__PURE__ */ jsx(ActivityItemGroup, {
69
+ }) : null, /* @__PURE__ */ jsx(ActivityItemGroup, {
70
70
  icon: /* @__PURE__ */ jsx(FileIcon, {}),
71
71
  action: "Raw record",
72
72
  children: /* @__PURE__ */ jsx(ActivityOutput, { children: formatJson(run) })
73
- })
74
- ] })]
75
- })]
73
+ })] })]
74
+ })
75
+ ]
76
76
  });
77
77
  }
78
78
  //#endregion
@@ -1,2 +1,2 @@
1
- import { _ as isThinkSubmissionRun, a as formatThinkExecutionStatus, c as getThinkExecutionRunError, d as getThinkExecutionRunProgressedLabel, f as getThinkExecutionRunStatus, g as isSameThinkExecutionRun, h as getThinkExecutionRunTitle, i as formatThinkExecutionShortTimestamp, l as getThinkExecutionRunId, m as getThinkExecutionRunSubtitle, n as ThinkExecutionStatusTone, o as formatThinkExecutionTimestamp, p as getThinkExecutionRunStatusTone, r as formatThinkExecutionRunProgress, s as getThinkExecutionRunAccessibleName, t as ThinkExecutionRun, u as getThinkExecutionRunProgressedAt } from "../../ThinkExecutionRun-lYYgyeE1.js";
2
- export { ThinkExecutionRun, ThinkExecutionStatusTone, formatThinkExecutionRunProgress, formatThinkExecutionShortTimestamp, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunAccessibleName, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, getThinkExecutionRunSubtitle, getThinkExecutionRunTitle, isSameThinkExecutionRun, isThinkSubmissionRun };
1
+ import { _ as isThinkSubmissionRun, a as formatThinkExecutionStatus, c as getThinkExecutionRunError, d as getThinkExecutionRunProgressedAt, f as getThinkExecutionRunProgressedLabel, g as getThinkExecutionRunTitle, h as getThinkExecutionRunSubtitle, i as formatThinkExecutionShortTimestamp, l as getThinkExecutionRunId, m as getThinkExecutionRunStatusTone, n as ThinkExecutionStatusTone, o as formatThinkExecutionTimestamp, p as getThinkExecutionRunStatus, r as formatThinkExecutionRunProgress, s as getThinkExecutionRunAccessibleName, t as ThinkExecutionRun, u as getThinkExecutionRunKindLabel } from "../../ThinkExecutionRun-k8bpyXqt.js";
2
+ export { ThinkExecutionRun, ThinkExecutionStatusTone, formatThinkExecutionRunProgress, formatThinkExecutionShortTimestamp, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunAccessibleName, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunKindLabel, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, getThinkExecutionRunSubtitle, getThinkExecutionRunTitle, isThinkSubmissionRun };
@@ -10,6 +10,9 @@ function getThinkExecutionRunId(run) {
10
10
  function getThinkExecutionRunTitle(run) {
11
11
  return isThinkSubmissionRun(run) ? run.submissionId : run.workflowName;
12
12
  }
13
+ function getThinkExecutionRunKindLabel(run) {
14
+ return isThinkSubmissionRun(run) ? "Submission" : "Workflow";
15
+ }
13
16
  function getThinkExecutionRunSubtitle(run) {
14
17
  return isThinkSubmissionRun(run) ? void 0 : run.workflowId;
15
18
  }
@@ -31,7 +34,7 @@ function getThinkExecutionRunStatusTone(run) {
31
34
  const status = getThinkExecutionRunStatus(run);
32
35
  if (status === "completed" || status === "complete") return "success";
33
36
  if (status === "error" || status === "errored" || status === "terminated") return "danger";
34
- if (status === "aborted" || status === "skipped" || status === "paused" || status === "waiting") return "warning";
37
+ if (status === "aborted" || status === "skipped" || status === "paused" || status === "waiting") return "paused";
35
38
  if (status === "running" || status === "pending" || status === "queued" || status === "waitingForPause" || status === "rollingBack") return "primary";
36
39
  return "neutral";
37
40
  }
@@ -64,9 +67,5 @@ function getThinkExecutionRunAccessibleName(run) {
64
67
  function getThinkExecutionRunError(run) {
65
68
  return isThinkSubmissionRun(run) ? run.error : run.error ? `${run.error.name}: ${run.error.message}` : void 0;
66
69
  }
67
- function isSameThinkExecutionRun(first, second) {
68
- if (!first || isThinkSubmissionRun(first) !== isThinkSubmissionRun(second)) return false;
69
- return getThinkExecutionRunId(first) === getThinkExecutionRunId(second);
70
- }
71
70
  //#endregion
72
- export { formatThinkExecutionRunProgress, formatThinkExecutionShortTimestamp, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunAccessibleName, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, getThinkExecutionRunSubtitle, getThinkExecutionRunTitle, isSameThinkExecutionRun, isThinkSubmissionRun };
71
+ export { formatThinkExecutionRunProgress, formatThinkExecutionShortTimestamp, formatThinkExecutionStatus, formatThinkExecutionTimestamp, getThinkExecutionRunAccessibleName, getThinkExecutionRunError, getThinkExecutionRunId, getThinkExecutionRunKindLabel, getThinkExecutionRunProgressedAt, getThinkExecutionRunProgressedLabel, getThinkExecutionRunStatus, getThinkExecutionRunStatusTone, getThinkExecutionRunSubtitle, getThinkExecutionRunTitle, isThinkSubmissionRun };
@@ -1,4 +1,4 @@
1
- import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-lYYgyeE1.js";
1
+ import { t as ThinkExecutionRun } from "../../ThinkExecutionRun-k8bpyXqt.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/agents-sdk/ThinkExecutionStatus.d.ts