@mcp-b/react-components 0.27.0 → 0.29.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 (62) hide show
  1. package/dist/{AgentChat-B6sgfQ_q.d.ts → AgentChat-Dy3cKCd-.d.ts} +13 -5
  2. package/dist/{AgentChatStartScreen-DDZ25aax.d.ts → AgentChatStartScreen-DXZ0hAX0.d.ts} +23 -5
  3. package/dist/{PromptInput-CES0WO4u.d.ts → PromptInput-B75Np5VB.d.ts} +7 -1
  4. package/dist/SessionCompaction-DMa1vv6Y.d.ts +59 -0
  5. package/dist/{ThinkChat-DVhCEjq-.js → ThinkChat-Bp-nAnoW.js} +14 -2
  6. package/dist/{ThinkChatActivity-DawPYgga.d.ts → ThinkChatActivity-Dq0lOAgw.d.ts} +3 -3
  7. package/dist/{ThinkChatActivitySummary-kr5fE0wg.d.ts → ThinkChatActivitySummary-F062wneC.d.ts} +1 -1
  8. package/dist/{ThinkChatToolParts-CSzVwMXf.d.ts → ThinkChatToolParts-BfroXQ4F.d.ts} +19 -1
  9. package/dist/{Workspace-CIycQ4xE.d.ts → Workspace-Bn6In4wi.d.ts} +5 -1
  10. package/dist/{WorkspaceExplorer-BCipn7Vd.d.ts → WorkspaceExplorer-D0aiscG6.d.ts} +1 -1
  11. package/dist/components/ActionGuide.d.ts +23 -5
  12. package/dist/components/ActionGuide.js +18 -4
  13. package/dist/components/AgentChat.d.ts +1 -1
  14. package/dist/components/AgentChat.js +24 -11
  15. package/dist/components/AgentChatStartScreen.d.ts +2 -2
  16. package/dist/components/AgentChatStartScreen.js +16 -5
  17. package/dist/components/AgentConnection.d.ts +1 -1
  18. package/dist/components/AgentToolDetail.js +1 -1
  19. package/dist/components/ChatGptSignInScreen.d.ts +9 -1
  20. package/dist/components/ChatGptSignInScreen.js +15 -4
  21. package/dist/components/ConversationTabPicker.d.ts +31 -0
  22. package/dist/components/ConversationTabPicker.js +117 -0
  23. package/dist/components/Goal.d.ts +28 -1
  24. package/dist/components/Goal.js +76 -3
  25. package/dist/components/McpConnectionRequest.d.ts +11 -5
  26. package/dist/components/McpConnectionRequest.js +22 -16
  27. package/dist/components/McpPluginCatalog.d.ts +1 -1
  28. package/dist/components/McpServerPicker.d.ts +18 -3
  29. package/dist/components/McpServerPicker.js +38 -23
  30. package/dist/components/Plan.d.ts +18 -1
  31. package/dist/components/Plan.js +17 -1
  32. package/dist/components/PromptInput.d.ts +2 -2
  33. package/dist/components/PromptInput.js +43 -5
  34. package/dist/components/SessionCompaction.d.ts +1 -58
  35. package/dist/components/SettingsFormDialog.d.ts +43 -0
  36. package/dist/components/SettingsFormDialog.js +110 -0
  37. package/dist/components/ThinkChat.d.ts +13 -7
  38. package/dist/components/ThinkChat.js +3 -3
  39. package/dist/components/ThinkChatActivity.d.ts +3 -3
  40. package/dist/components/ThinkChatActivitySummary.d.ts +1 -1
  41. package/dist/components/ThinkChatToolPanels.d.ts +1 -1
  42. package/dist/components/ThinkChatToolPanels.js +1 -1
  43. package/dist/components/ThinkChatToolParts.d.ts +1 -1
  44. package/dist/components/ThinkFullApp.d.ts +6 -12
  45. package/dist/components/ThinkFullApp.js +4 -4
  46. package/dist/components/ThinkThreadPicker.d.ts +4 -1
  47. package/dist/components/ThinkThreadPicker.js +6 -1
  48. package/dist/components/Workspace.d.ts +2 -2
  49. package/dist/components/Workspace.js +10 -6
  50. package/dist/components/WorkspaceBrowser.d.ts +1 -1
  51. package/dist/components/WorkspaceExplorer.d.ts +3 -3
  52. package/dist/components/WorkspaceExplorer.js +2 -2
  53. package/dist/components/WorkspaceMountManager.d.ts +32 -0
  54. package/dist/components/WorkspaceMountManager.js +89 -0
  55. package/dist/{mcp-server-catalog-BewjV7Eq.d.ts → mcp-server-catalog-CO7GAl1f.d.ts} +1 -1
  56. package/dist/styles/chatgpt-sign-in-screen.css +10 -1
  57. package/dist/styles/conversation-tab-picker.css +24 -0
  58. package/dist/styles/index.css +2 -0
  59. package/dist/styles/workspace-mount-manager.css +24 -0
  60. package/dist/utils/mcp-server-catalog.d.ts +1 -1
  61. package/dist/utils/mcp-server-catalog.js +1 -1
  62. package/package.json +13 -13
@@ -69,6 +69,14 @@ function workspaceQueryKey(sourceKey, root) {
69
69
  root
70
70
  ];
71
71
  }
72
+ /** Directory-listing prefix for targeted cache invalidation. */
73
+ function workspaceDirectoryQueryPrefix(sourceKey, root) {
74
+ return [...workspaceQueryKey(sourceKey, root), "directory"];
75
+ }
76
+ /** Exact directory-listing key shared by query options and live hosts. */
77
+ function workspaceDirectoryQueryKey(sourceKey, root, path) {
78
+ return [...workspaceDirectoryQueryPrefix(sourceKey, root), path];
79
+ }
72
80
  function workspaceFileQueryKey(sourceKey, root, requestedPath) {
73
81
  return [
74
82
  ...workspaceQueryKey(sourceKey, root),
@@ -91,11 +99,7 @@ function workspaceFileVersion(target) {
91
99
  /** Shared directory options for workspace components and route loaders. */
92
100
  function workspaceDirectoryQueryOptions(source, sourceKey, root, path) {
93
101
  return queryOptions({
94
- queryKey: [
95
- ...workspaceQueryKey(sourceKey, root),
96
- "directory",
97
- path
98
- ],
102
+ queryKey: workspaceDirectoryQueryKey(sourceKey, root, path),
99
103
  queryFn: async ({ signal }) => {
100
104
  const entries = [];
101
105
  let offset = 0;
@@ -436,4 +440,4 @@ function useWorkspace({ source, sourceKey, root = "/", selectedPath, onSelectedP
436
440
  };
437
441
  }
438
442
  //#endregion
439
- export { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
443
+ export { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
@@ -1,4 +1,4 @@
1
- import { o as WorkspaceState } from "../Workspace-CIycQ4xE.js";
1
+ import { o as WorkspaceState } from "../Workspace-Bn6In4wi.js";
2
2
  import * as React from "react";
3
3
 
4
4
  //#region src/components/WorkspaceBrowser.d.ts
@@ -1,5 +1,5 @@
1
1
  import { a as WorkspaceFileLinkProps, c as WorkspaceLinkResolution, d as WorkspaceNavigationProvider, f as WorkspaceNavigationProviderProps, i as WorkspaceFileLink, l as WorkspaceNavigationAdapter, n as WorkspaceDestination, o as WorkspaceInvalidDestination, p as resolveWorkspaceLink, r as WorkspaceExternalDestination, s as WorkspaceLinkBase, t as ResolveWorkspaceLinkOptions, u as WorkspaceNavigationEntry } from "../WorkspaceLink-O-EBKUJ8.js";
2
2
  import { a as WorkspaceMediaInfo, c as WorkspaceMediaTrackKind, d as inferWorkspaceLanguage, f as inferWorkspaceMedia, g as parseWorkspaceSkill, h as isWorkspaceSkillPath, i as WorkspaceFileState, l as WorkspaceSkillDocument, m as isWorkspaceMediaPath, n as WorkspaceFileAssetRequest, o as WorkspaceMediaKind, p as isWorkspaceMarkdownPath, r as WorkspaceFileAssetResolver, s as WorkspaceMediaTrack, t as WorkspaceFileAsset } from "../WorkspaceFile-DMtRMwVv.js";
3
- import { a as WorkspaceSource, c as workspaceBinaryFileQueryOptions, d as workspaceFileStatQueryOptions, f as workspaceInfoQueryOptions, i as WorkspaceQueryKey, l as workspaceDirectoryQueryOptions, m as workspaceTextFileQueryOptions, n as WorkspaceFileReadTarget, o as WorkspaceState, p as workspaceQueryKey, r as WorkspaceInfo, s as useWorkspace, t as UseWorkspaceOptions, u as workspaceFileAssetQueryOptions } from "../Workspace-CIycQ4xE.js";
4
- import { n as WorkspaceExplorerProps, t as WorkspaceExplorer } from "../WorkspaceExplorer-BCipn7Vd.js";
5
- export { type ResolveWorkspaceLinkOptions, type UseWorkspaceOptions, type WorkspaceDestination, WorkspaceExplorer, WorkspaceExplorerProps, type WorkspaceExternalDestination, type WorkspaceFileAsset, type WorkspaceFileAssetRequest, type WorkspaceFileAssetResolver, WorkspaceFileLink, type WorkspaceFileLinkProps, type WorkspaceFileReadTarget, type WorkspaceFileState, type WorkspaceInfo, type WorkspaceInvalidDestination, type WorkspaceLinkBase, type WorkspaceLinkResolution, type WorkspaceMediaInfo, type WorkspaceMediaKind, type WorkspaceMediaTrack, type WorkspaceMediaTrackKind, type WorkspaceNavigationAdapter, type WorkspaceNavigationEntry, WorkspaceNavigationProvider, type WorkspaceNavigationProviderProps, type WorkspaceQueryKey, type WorkspaceSkillDocument, type WorkspaceSource, type WorkspaceState, inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill, resolveWorkspaceLink, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
3
+ import { a as WorkspaceSource, c as workspaceBinaryFileQueryOptions, d as workspaceDirectoryQueryPrefix, f as workspaceFileAssetQueryOptions, g as workspaceTextFileQueryOptions, h as workspaceQueryKey, i as WorkspaceQueryKey, l as workspaceDirectoryQueryKey, m as workspaceInfoQueryOptions, n as WorkspaceFileReadTarget, o as WorkspaceState, p as workspaceFileStatQueryOptions, r as WorkspaceInfo, s as useWorkspace, t as UseWorkspaceOptions, u as workspaceDirectoryQueryOptions } from "../Workspace-Bn6In4wi.js";
4
+ import { n as WorkspaceExplorerProps, t as WorkspaceExplorer } from "../WorkspaceExplorer-D0aiscG6.js";
5
+ export { type ResolveWorkspaceLinkOptions, type UseWorkspaceOptions, type WorkspaceDestination, WorkspaceExplorer, WorkspaceExplorerProps, type WorkspaceExternalDestination, type WorkspaceFileAsset, type WorkspaceFileAssetRequest, type WorkspaceFileAssetResolver, WorkspaceFileLink, type WorkspaceFileLinkProps, type WorkspaceFileReadTarget, type WorkspaceFileState, type WorkspaceInfo, type WorkspaceInvalidDestination, type WorkspaceLinkBase, type WorkspaceLinkResolution, type WorkspaceMediaInfo, type WorkspaceMediaKind, type WorkspaceMediaTrack, type WorkspaceMediaTrackKind, type WorkspaceNavigationAdapter, type WorkspaceNavigationEntry, WorkspaceNavigationProvider, type WorkspaceNavigationProviderProps, type WorkspaceQueryKey, type WorkspaceSkillDocument, type WorkspaceSource, type WorkspaceState, inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill, resolveWorkspaceLink, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
@@ -4,7 +4,7 @@ import { n as mergeRefs } from "../merge-refs-DF_7w2x_.js";
4
4
  import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./WorkspaceFile.js";
5
5
  import { WorkspaceBrowser } from "./WorkspaceBrowser.js";
6
6
  import { t as WorkspaceFileView } from "../WorkspaceFileView-CKEmUyeT.js";
7
- import { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions } from "./Workspace.js";
7
+ import { useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions } from "./Workspace.js";
8
8
  import * as React from "react";
9
9
  import { jsx } from "react/jsx-runtime";
10
10
  //#region src/components/WorkspaceExplorer.tsx
@@ -125,4 +125,4 @@ function WorkspaceExplorerContent({ workspace, navigation, className, title = "W
125
125
  });
126
126
  }
127
127
  //#endregion
128
- export { WorkspaceExplorer, WorkspaceFileLink, WorkspaceNavigationProvider, inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill, resolveWorkspaceLink, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryOptions, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
128
+ export { WorkspaceExplorer, WorkspaceFileLink, WorkspaceNavigationProvider, inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceMediaPath, isWorkspaceSkillPath, parseWorkspaceSkill, resolveWorkspaceLink, useWorkspace, workspaceBinaryFileQueryOptions, workspaceDirectoryQueryKey, workspaceDirectoryQueryOptions, workspaceDirectoryQueryPrefix, workspaceFileAssetQueryOptions, workspaceFileStatQueryOptions, workspaceInfoQueryOptions, workspaceQueryKey, workspaceTextFileQueryOptions };
@@ -0,0 +1,32 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/components/WorkspaceMountManager.d.ts
4
+ type WorkspaceMountPermission = "granted" | "prompt" | "denied" | "unavailable";
5
+ interface WorkspaceMountItem {
6
+ id: string;
7
+ path: string;
8
+ permission: WorkspaceMountPermission;
9
+ }
10
+ interface WorkspaceMountManagerProps {
11
+ mounts: readonly WorkspaceMountItem[];
12
+ adding?: boolean;
13
+ busyMountId?: string | null;
14
+ error?: React.ReactNode;
15
+ onAdd: () => void;
16
+ onReconnect: (mount: WorkspaceMountItem) => void;
17
+ onRemove: (mount: WorkspaceMountItem) => void;
18
+ triggerLabel?: string;
19
+ }
20
+ /** Controlled local-mount presentation; native handles and persistence stay in the host. */
21
+ declare function WorkspaceMountManager({
22
+ mounts,
23
+ adding,
24
+ busyMountId,
25
+ error,
26
+ onAdd,
27
+ onReconnect,
28
+ onRemove,
29
+ triggerLabel
30
+ }: WorkspaceMountManagerProps): React.JSX.Element;
31
+ //#endregion
32
+ export { WorkspaceMountItem, WorkspaceMountManager, WorkspaceMountManagerProps, WorkspaceMountPermission };
@@ -0,0 +1,89 @@
1
+ import { Button } from "./Button.js";
2
+ import { w as FolderIcon } from "../icons-B4mGvCvc.js";
3
+ import { Popover } from "./Popover.js";
4
+ import { EmptyState } from "./EmptyState.js";
5
+ import { AppTopBar } from "./AppTopBar.js";
6
+ import { StatusPill } from "./StatusPill.js";
7
+ import { Card, CardAction, CardFooter, CardHeader, CardTitle } from "./Card.js";
8
+ import "react";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ //#region src/components/WorkspaceMountManager.tsx
11
+ function permissionLabel(permission) {
12
+ if (permission === "granted") return "Read/write connected";
13
+ if (permission === "prompt") return "Permission needed";
14
+ if (permission === "denied") return "Access denied";
15
+ return "Unavailable";
16
+ }
17
+ function permissionColor(permission) {
18
+ if (permission === "granted") return "success";
19
+ if (permission === "prompt") return "warning";
20
+ if (permission === "denied") return "destructive";
21
+ return "neutral";
22
+ }
23
+ /** Controlled local-mount presentation; native handles and persistence stay in the host. */
24
+ function WorkspaceMountManager({ mounts, adding = false, busyMountId = null, error, onAdd, onReconnect, onRemove, triggerLabel = "Attach local folders" }) {
25
+ const busy = adding || busyMountId !== null;
26
+ return /* @__PURE__ */ jsxs(Popover.Root, { children: [/* @__PURE__ */ jsx(AppTopBar.Button, {
27
+ label: triggerLabel,
28
+ render: /* @__PURE__ */ jsx(Popover.Trigger, { unstyled: true }),
29
+ children: /* @__PURE__ */ jsx(FolderIcon, {})
30
+ }), /* @__PURE__ */ jsx(Popover.Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, {
31
+ side: "bottom",
32
+ align: "end",
33
+ sideOffset: 8,
34
+ children: /* @__PURE__ */ jsxs(Popover.Popup, { children: [/* @__PURE__ */ jsxs(Popover.Header, { children: [/* @__PURE__ */ jsx(Popover.Title, { children: "Local folders" }), /* @__PURE__ */ jsx(Popover.Description, { children: "Attach folders to the workspace so the model can work on their contents." })] }), /* @__PURE__ */ jsxs("div", {
35
+ className: "workspace-mount-manager__content",
36
+ children: [
37
+ /* @__PURE__ */ jsx(Button, {
38
+ type: "button",
39
+ size: "sm",
40
+ disabled: busy,
41
+ onClick: onAdd,
42
+ children: adding ? "Opening…" : "Attach local folder"
43
+ }),
44
+ error ? /* @__PURE__ */ jsx("p", {
45
+ className: "workspace-mount-manager__error",
46
+ role: "alert",
47
+ children: error
48
+ }) : null,
49
+ mounts.length === 0 ? /* @__PURE__ */ jsx(EmptyState, { description: "No local folders attached." }) : /* @__PURE__ */ jsx("ul", {
50
+ className: "workspace-mount-manager__list sigvelo-stack-list",
51
+ children: mounts.map((mount) => {
52
+ return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(Card, {
53
+ size: "sm",
54
+ "aria-busy": busyMountId === mount.id || void 0,
55
+ children: [/* @__PURE__ */ jsxs(CardHeader, { children: [/* @__PURE__ */ jsx(CardTitle, {
56
+ className: "workspace-mount-manager__path",
57
+ children: /* @__PURE__ */ jsx("code", { children: mount.path })
58
+ }), /* @__PURE__ */ jsx(CardAction, { children: /* @__PURE__ */ jsx(StatusPill, {
59
+ color: permissionColor(mount.permission),
60
+ size: "sm",
61
+ children: permissionLabel(mount.permission)
62
+ }) })] }), /* @__PURE__ */ jsxs(CardFooter, { children: [mount.permission !== "granted" ? /* @__PURE__ */ jsx(Button, {
63
+ type: "button",
64
+ size: "sm",
65
+ disabled: busy,
66
+ onClick: () => onReconnect(mount),
67
+ children: "Reconnect"
68
+ }) : null, /* @__PURE__ */ jsx(Button, {
69
+ type: "button",
70
+ size: "sm",
71
+ variant: "ghost",
72
+ color: "destructive",
73
+ disabled: busy,
74
+ onClick: () => onRemove(mount),
75
+ children: "Remove"
76
+ })] })]
77
+ }) }, mount.id);
78
+ })
79
+ }),
80
+ /* @__PURE__ */ jsx("p", {
81
+ className: "workspace-mount-manager__footnote",
82
+ children: "Removing an attachment only forgets the folder reference; it never deletes files."
83
+ })
84
+ ]
85
+ })] })
86
+ }) })] });
87
+ }
88
+ //#endregion
89
+ export { WorkspaceMountManager };
@@ -46,7 +46,7 @@ interface McpServerCard {
46
46
  /**
47
47
  * Read the complete state emitted by the pinned Agents runtime.
48
48
  *
49
- * Agents 0.17.4 can return `not-connected` from `getMcpServers()` even though
49
+ * Agents 0.19.0 can return `not-connected` from `getMcpServers()` even though
50
50
  * that value is missing from its exported `MCPServer["state"]` declaration.
51
51
  * Keep the unavoidable compatibility assertion at this one SDK boundary.
52
52
  */
@@ -4,10 +4,12 @@
4
4
 
5
5
  position: relative;
6
6
  isolation: isolate;
7
- overflow: hidden;
7
+ overflow-x: hidden;
8
+ overflow-y: auto;
8
9
  block-size: 100%;
9
10
  min-inline-size: 17.5rem;
10
11
  display: grid;
12
+ grid-template-rows: minmax(min-content, 1fr) auto;
11
13
  place-items: center;
12
14
  padding: clamp(var(--sigvelo-spacing-5), 5vw, var(--sigvelo-spacing-12));
13
15
  background-color: var(--sigvelo-color-canvas);
@@ -61,6 +63,13 @@
61
63
  text-align: center;
62
64
  }
63
65
 
66
+ .chatgpt-sign-in__secondary-action {
67
+ z-index: 1;
68
+ display: flex;
69
+ justify-content: center;
70
+ margin-block-start: var(--sigvelo-spacing-4);
71
+ }
72
+
64
73
  .chatgpt-sign-in__brand {
65
74
  display: grid;
66
75
  gap: var(--sigvelo-spacing-1-5);
@@ -0,0 +1,24 @@
1
+ .conversation-tab-picker__identity {
2
+ display: grid;
3
+ }
4
+
5
+ .conversation-tab-picker__error {
6
+ align-items: center;
7
+ color: var(--sigvelo-color-danger-text);
8
+ display: flex;
9
+ font-size: var(--sigvelo-text-sm);
10
+ gap: var(--sigvelo-spacing-2);
11
+ overflow-wrap: anywhere;
12
+ padding: var(--sigvelo-spacing-2) var(--sigvelo-spacing-3);
13
+ }
14
+
15
+ .conversation-tab-picker__error > svg {
16
+ flex: none;
17
+ }
18
+
19
+ .conversation-tab-picker__domain {
20
+ color: var(--sigvelo-color-text-muted);
21
+ font-size: var(--sigvelo-text-sm);
22
+ font-weight: var(--sigvelo-font-weight-normal);
23
+ line-height: var(--sigvelo-text-sm-leading);
24
+ }
@@ -95,6 +95,7 @@
95
95
  @import "./commit.css" layer(components);
96
96
  @import "./context.css" layer(components);
97
97
  @import "./conversation.css" layer(components);
98
+ @import "./conversation-tab-picker.css" layer(components);
98
99
  @import "./codex-model-selector.css" layer(components);
99
100
  @import "./environment-variables.css" layer(components);
100
101
  @import "./file-tree.css" layer(components);
@@ -121,6 +122,7 @@
121
122
  @import "./think-thread-picker.css" layer(components);
122
123
  @import "./web-preview.css" layer(components);
123
124
  @import "./workspace-explorer.css" layer(components);
125
+ @import "./workspace-mount-manager.css" layer(components);
124
126
  @import "./composition-motion.css" layer(components);
125
127
 
126
128
  /* Page Components */
@@ -0,0 +1,24 @@
1
+ .workspace-mount-manager__content {
2
+ display: grid;
3
+ gap: var(--sigvelo-spacing-3);
4
+ }
5
+
6
+ .workspace-mount-manager__error,
7
+ .workspace-mount-manager__footnote {
8
+ color: var(--sigvelo-color-text-muted);
9
+ font-size: var(--sigvelo-text-sm);
10
+ line-height: var(--sigvelo-text-sm-leading);
11
+ }
12
+
13
+ .workspace-mount-manager__list {
14
+ gap: var(--sigvelo-spacing-2);
15
+ }
16
+
17
+ .workspace-mount-manager__error {
18
+ color: var(--sigvelo-color-danger-text);
19
+ overflow-wrap: anywhere;
20
+ }
21
+
22
+ .workspace-mount-manager__path code {
23
+ overflow-wrap: anywhere;
24
+ }
@@ -1,2 +1,2 @@
1
- import { a as MCP_SERVER_SETUP_AUTH, c as McpServerManualSetup, d as McpServerSetupAuthFieldName, f as McpServerSetupLink, h as getMcpServerRuntimeState, i as MANUAL_MCP_SERVER_CARDS, l as McpServerSetupAuth, m as getMcpServerIconSrc, n as DCR_MCP_SERVER_CARDS, o as McpServerCard, p as getMcpServerEntry, r as DEFAULT_MCP_SERVER_CARDS, s as McpServerCardIcon, t as CUSTOM_MCP_SERVER_CARD, u as McpServerSetupAuthField } from "../mcp-server-catalog-BewjV7Eq.js";
1
+ import { a as MCP_SERVER_SETUP_AUTH, c as McpServerManualSetup, d as McpServerSetupAuthFieldName, f as McpServerSetupLink, h as getMcpServerRuntimeState, i as MANUAL_MCP_SERVER_CARDS, l as McpServerSetupAuth, m as getMcpServerIconSrc, n as DCR_MCP_SERVER_CARDS, o as McpServerCard, p as getMcpServerEntry, r as DEFAULT_MCP_SERVER_CARDS, s as McpServerCardIcon, t as CUSTOM_MCP_SERVER_CARD, u as McpServerSetupAuthField } from "../mcp-server-catalog-CO7GAl1f.js";
2
2
  export { CUSTOM_MCP_SERVER_CARD, DCR_MCP_SERVER_CARDS, DEFAULT_MCP_SERVER_CARDS, MANUAL_MCP_SERVER_CARDS, MCP_SERVER_SETUP_AUTH, McpServerCard, McpServerCardIcon, McpServerManualSetup, McpServerSetupAuth, McpServerSetupAuthField, McpServerSetupAuthFieldName, McpServerSetupLink, getMcpServerEntry, getMcpServerIconSrc, getMcpServerRuntimeState };
@@ -3,7 +3,7 @@ import { inferFaviconUrl } from "./favicon.js";
3
3
  /**
4
4
  * Read the complete state emitted by the pinned Agents runtime.
5
5
  *
6
- * Agents 0.17.4 can return `not-connected` from `getMcpServers()` even though
6
+ * Agents 0.19.0 can return `not-connected` from `getMcpServers()` even though
7
7
  * that value is missing from its exported `MCPServer["state"]` declaration.
8
8
  * Keep the unavoidable compatibility assertion at this one SDK boundary.
9
9
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-b/react-components",
3
- "version": "0.27.0",
3
+ "version": "0.29.0",
4
4
  "description": "MCP-B React components built on Base UI and shared design tokens, including Cloudflare Think chat primitives.",
5
5
  "homepage": "https://design-system.sigvelo.com",
6
6
  "bugs": {
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@base-ui/react": "~1.6.0",
42
- "@cloudflare/codemode": "^0.4.3",
42
+ "@cloudflare/codemode": "^0.5.0",
43
43
  "@cloudflare/workers-types": "^5.20260715.1",
44
44
  "@rrweb/replay": "^2.1.0",
45
45
  "@shadcn/react": "^0.2.1",
@@ -58,12 +58,12 @@
58
58
  "streamdown": "^2.5.0",
59
59
  "unist-util-visit": "^5.1.0",
60
60
  "yet-another-react-lightbox": "^3.32.1",
61
- "@mcp-b/design-tokens": "0.27.0"
61
+ "@mcp-b/design-tokens": "0.29.0"
62
62
  },
63
63
  "devDependencies": {
64
- "@ai-sdk/react": "^3.0.222",
65
- "@cloudflare/shell": "^0.4.1",
66
- "@cloudflare/think": "^0.13.0",
64
+ "@ai-sdk/react": "^3.0.230",
65
+ "@cloudflare/shell": "^0.4.3",
66
+ "@cloudflare/think": "^0.15.0",
67
67
  "@cloudflare/voice": "^0.3.4",
68
68
  "@storybook/addon-a11y": "^10.5.2",
69
69
  "@storybook/addon-docs": "^10.5.2",
@@ -81,8 +81,8 @@
81
81
  "@vitest/browser-playwright": "^4.1.10",
82
82
  "@vitest/coverage-v8": "^4.1.10",
83
83
  "@vitest/mocker": "^4.1.10",
84
- "agents": "^0.17.4",
85
- "ai": "^6.0.220",
84
+ "agents": "^0.19.0",
85
+ "ai": "^6.0.228",
86
86
  "playwright": "^1.61.0",
87
87
  "react": "19.3.0-canary-711c445b-20260722",
88
88
  "react-dom": "19.3.0-canary-711c445b-20260722",
@@ -93,14 +93,14 @@
93
93
  "vitest": "^4.1.10"
94
94
  },
95
95
  "peerDependencies": {
96
- "@ai-sdk/react": "^3.0.204",
97
- "@cloudflare/shell": "^0.4.1",
98
- "@cloudflare/think": "^0.13.0",
96
+ "@ai-sdk/react": "^3.0.230",
97
+ "@cloudflare/shell": "^0.4.3",
98
+ "@cloudflare/think": "^0.15.0",
99
99
  "@cloudflare/voice": "^0.3.4",
100
100
  "@tanstack/react-query": "^5.101.2",
101
101
  "@tanstack/react-router": "^1.170.18",
102
- "agents": "^0.17.4",
103
- "ai": "^6.0.182",
102
+ "agents": "^0.19.0",
103
+ "ai": "^6.0.228",
104
104
  "react": "19.3.0-canary-711c445b-20260722",
105
105
  "react-dom": "19.3.0-canary-711c445b-20260722"
106
106
  },