@mcp-b/react-components 0.46.7 → 0.48.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 (130) hide show
  1. package/dist/{CodeBlock-CcteqDvA.js → CodeBlock-BSJl682D.js} +1 -1
  2. package/dist/Correspondent-7K6uNLUm.d.ts +64 -0
  3. package/dist/{FileTree-jtP9471I.js → FileTree-DvE0hNZu.js} +1 -1
  4. package/dist/{SetupChecklist-BXwSSorj.js → SetupChecklist-DeTU9YpW.js} +1 -1
  5. package/dist/ThinkChat-CwMdEum8.d.ts +185 -0
  6. package/dist/{ThinkChat-qztQ6Clo.js → ThinkChat-DiI6hhDP.js} +14 -14
  7. package/dist/ThinkThreadPicker-yFz4vvIf.d.ts +91 -0
  8. package/dist/{Workspace-DZusrEeP.d.ts → Workspace-LIoU30n7.d.ts} +13 -2
  9. package/dist/{WorkspaceFileView-D0HyoUV8.js → WorkspaceFileView-C_WnYm-a.js} +4 -4
  10. package/dist/{WorkspaceLink-DtH66bAY.js → WorkspaceLink-B1d2GIGl.js} +7 -2
  11. package/dist/WorkspaceLive-DfjH1Ypm.d.ts +61 -0
  12. package/dist/{WorkspaceMessageResponse-CJCmGvTx.js → WorkspaceMessageResponse-BqOezptB.js} +79 -40
  13. package/dist/WorkspaceMessageResponse-kJYU8Onj.d.ts +48 -0
  14. package/dist/components/agents-sdk/AgentActivity.js +1 -1
  15. package/dist/components/agents-sdk/AgentChat.js +2 -2
  16. package/dist/components/agents-sdk/BrowserLiveScreen.js +1 -1
  17. package/dist/components/agents-sdk/BrowserLiveView.js +1 -1
  18. package/dist/components/agents-sdk/BrowserReplay.js +1 -1
  19. package/dist/components/agents-sdk/BrowserRunPanel.js +1 -1
  20. package/dist/components/agents-sdk/ManagerOffice.d.ts +41 -50
  21. package/dist/components/agents-sdk/ManagerOffice.js +359 -978
  22. package/dist/components/agents-sdk/McpConnectionRequest.js +1 -1
  23. package/dist/components/agents-sdk/McpPluginCatalog.js +1 -1
  24. package/dist/components/agents-sdk/McpServerPicker.js +1 -1
  25. package/dist/components/agents-sdk/ModelSelector.js +1 -1
  26. package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
  27. package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
  28. package/dist/components/agents-sdk/ThinkChat.d.ts +1 -180
  29. package/dist/components/agents-sdk/ThinkChat.js +1 -1
  30. package/dist/components/agents-sdk/ThinkChatToolPanels.js +1 -1
  31. package/dist/components/agents-sdk/ThinkExecutionDetail.js +1 -1
  32. package/dist/components/agents-sdk/ThinkExecutionStatus.js +1 -1
  33. package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +1 -1
  34. package/dist/components/agents-sdk/ThinkFullApp.d.ts +12 -3
  35. package/dist/components/agents-sdk/ThinkFullApp.js +15 -3
  36. package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
  37. package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
  38. package/dist/components/agents-sdk/ThinkRoutineLibrary.js +1 -1
  39. package/dist/components/agents-sdk/ThinkSidepanel.d.ts +20 -5
  40. package/dist/components/agents-sdk/ThinkSidepanel.js +48 -36
  41. package/dist/components/agents-sdk/ThinkThreadPicker.d.ts +1 -90
  42. package/dist/components/agents-sdk/ThinkThreadPicker.js +1 -1
  43. package/dist/components/agents-sdk/Workspace.d.ts +2 -2
  44. package/dist/components/agents-sdk/Workspace.js +13 -10
  45. package/dist/components/agents-sdk/WorkspaceBrowser.d.ts +1 -1
  46. package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
  47. package/dist/components/agents-sdk/WorkspaceConcept.d.ts +45 -0
  48. package/dist/components/agents-sdk/WorkspaceConcept.js +42 -0
  49. package/dist/components/agents-sdk/WorkspaceCorrespondence.d.ts +96 -0
  50. package/dist/components/agents-sdk/WorkspaceCorrespondence.js +429 -0
  51. package/dist/components/agents-sdk/WorkspaceExecution.d.ts +115 -0
  52. package/dist/components/agents-sdk/WorkspaceExecution.js +330 -0
  53. package/dist/components/agents-sdk/WorkspaceExplorer.d.ts +1 -1
  54. package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -2
  55. package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
  56. package/dist/components/agents-sdk/WorkspaceHeader.js +1 -1
  57. package/dist/components/agents-sdk/WorkspaceLink.js +1 -1
  58. package/dist/components/agents-sdk/WorkspaceLive.d.ts +2 -0
  59. package/dist/components/agents-sdk/WorkspaceLive.js +113 -0
  60. package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +2 -2
  61. package/dist/components/agents-sdk/WorkspaceMessageResponse.js +2 -2
  62. package/dist/components/agents-sdk/WorkspaceMountManager.js +1 -1
  63. package/dist/components/agents-sdk/WorkspaceProject.d.ts +131 -0
  64. package/dist/components/agents-sdk/WorkspaceProject.js +238 -0
  65. package/dist/components/agents-sdk/WorkspaceUserScript.d.ts +47 -0
  66. package/dist/components/agents-sdk/WorkspaceUserScript.js +146 -0
  67. package/dist/components/ai-sdk/Activity.js +1 -1
  68. package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
  69. package/dist/components/ai-sdk/Approval.js +1 -1
  70. package/dist/components/ai-sdk/Artifact.js +3 -3
  71. package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
  72. package/dist/components/ai-sdk/ChainOfThought.js +1 -1
  73. package/dist/components/ai-sdk/Checkpoint.js +1 -1
  74. package/dist/components/ai-sdk/CodeBlock.js +1 -1
  75. package/dist/components/ai-sdk/ComposerLink.d.ts +4 -1
  76. package/dist/components/ai-sdk/ComposerLink.js +4 -3
  77. package/dist/components/ai-sdk/ConnectedAppCards.d.ts +29 -2
  78. package/dist/components/ai-sdk/ConnectedAppCards.js +78 -103
  79. package/dist/components/ai-sdk/Conversation.js +1 -1
  80. package/dist/components/ai-sdk/Correspondent.d.ts +2 -0
  81. package/dist/components/ai-sdk/Correspondent.js +145 -0
  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.js +1 -1
  85. package/dist/components/ai-sdk/MessageScroller.js +1 -1
  86. package/dist/components/ai-sdk/MessageScrollerVirtual.js +1 -1
  87. package/dist/components/ai-sdk/Plan.js +1 -1
  88. package/dist/components/ai-sdk/PromptInput.js +1 -1
  89. package/dist/components/ai-sdk/Queue.js +1 -1
  90. package/dist/components/ai-sdk/Reasoning.js +1 -1
  91. package/dist/components/ai-sdk/Sources.js +1 -1
  92. package/dist/components/ai-sdk/Task.js +1 -1
  93. package/dist/components/extension/ChatGptSignInScreen.js +1 -1
  94. package/dist/components/extension/CodexModelSelector.js +1 -1
  95. package/dist/components/extension/ConversationTabPicker.js +1 -1
  96. package/dist/components/foundations/Checkbox.js +1 -1
  97. package/dist/components/foundations/ContextMenu.js +1 -1
  98. package/dist/components/foundations/Menubar.js +1 -1
  99. package/dist/components/foundations/SearchField.js +1 -1
  100. package/dist/components/foundations/Select.js +1 -1
  101. package/dist/components/foundations/Stepper.js +1 -1
  102. package/dist/components/foundations/Toast.js +1 -1
  103. package/dist/components/foundations/icons.d.ts +2 -2
  104. package/dist/components/foundations/icons.js +2 -2
  105. package/dist/components/general-purpose/Commit.js +2 -2
  106. package/dist/components/general-purpose/EnvironmentVariables.js +2 -2
  107. package/dist/components/general-purpose/FileTree.js +1 -1
  108. package/dist/components/general-purpose/PricingPlanCard.js +1 -1
  109. package/dist/components/general-purpose/ResponsiveSidebarShell.js +1 -1
  110. package/dist/components/general-purpose/SetupChecklist.js +1 -1
  111. package/dist/components/general-purpose/Terminal.js +2 -2
  112. package/dist/components/general-purpose/TestResults.js +1 -1
  113. package/dist/components/general-purpose/ThemeModeControl.js +1 -1
  114. package/dist/components/general-purpose/WebPreview.js +1 -1
  115. package/dist/components/nanites/AgentConnection.js +2 -2
  116. package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
  117. package/dist/components/nanites/AgentToolDetail.js +2 -2
  118. package/dist/{copy-button-BABPlsc-.js → copy-button-Dk2vRe9j.js} +1 -1
  119. package/dist/{icons-ChPpNMmU.d.ts → icons-CCZGYUwU.d.ts} +6 -1
  120. package/dist/{icons-BC4HZqSK.js → icons-CeGfXO21.js} +3 -2
  121. package/dist/styles/base.css +2 -2
  122. package/dist/styles/connected-app-card.css +8 -0
  123. package/dist/styles/correspondent.css +73 -0
  124. package/dist/styles/description-list.css +3 -1
  125. package/dist/styles/index.css +2 -0
  126. package/dist/styles/manager-office.css +380 -1086
  127. package/dist/styles/workspace-concepts.css +28 -0
  128. package/dist/workspace-assets-GqsCYxqT.js +168 -0
  129. package/package.json +2 -2
  130. package/dist/WorkspaceMessageResponse-D66ty4FO.d.ts +0 -24
@@ -1,7 +1,7 @@
1
1
  import { MessageResponse } from "./components/ai-sdk/Message.js";
2
- import { c as useWorkspaceNavigationContext, r as resolveWorkspaceLink, t as WorkspaceFileLink } from "./WorkspaceLink-DtH66bAY.js";
2
+ import { c as useWorkspaceNavigationContext, r as resolveWorkspaceLink, t as WorkspaceFileLink } from "./WorkspaceLink-B1d2GIGl.js";
3
3
  import * as React from "react";
4
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
5
  import { defaultRehypePlugins } from "streamdown";
6
6
  import { visit } from "unist-util-visit";
7
7
  //#region src/components/_internal/workspace-markdown.ts
@@ -79,49 +79,88 @@ function createWorkspaceRehypePlugins(root, base) {
79
79
  }
80
80
  //#endregion
81
81
  //#region src/components/agents-sdk/WorkspaceMessageResponse.tsx
82
+ const WorkspaceFileRendererContext = React.createContext(null);
83
+ /**
84
+ * Ambient workspace-file renderer for every `WorkspaceMessageResponse` below,
85
+ * and the only way to supply one. The value is read inside the promoted
86
+ * paragraph, not by the response component, so a host handing down a fresh
87
+ * callback every render re-renders only the paragraphs — the memoized Markdown
88
+ * pipeline is untouched and promoted cards keep their state.
89
+ * `ThinkChat.Messages` provides it from its `renderWorkspaceFile` prop; hosts
90
+ * composing `WorkspaceMessageResponse` directly provide it once at their
91
+ * conversation root.
92
+ */
93
+ function WorkspaceFileRendererProvider({ children, renderWorkspaceFile }) {
94
+ return /* @__PURE__ */ jsx(WorkspaceFileRendererContext.Provider, {
95
+ value: renderWorkspaceFile ?? null,
96
+ children
97
+ });
98
+ }
99
+ /**
100
+ * The paragraph the promoted one falls back to — the caller's `components.p`
101
+ * where it gave one, otherwise a plain `<p>`. It travels by context so the
102
+ * promoted paragraph can be a module-scope component with a constant identity:
103
+ * defining it inside a memo made every context change a new element type, and
104
+ * React remounted every promoted card, discarding its draft and sent latch.
105
+ */
106
+ const FallbackParagraphContext = React.createContext("p");
82
107
  const workspaceComponents = {
83
108
  img: "img",
84
109
  a: WorkspaceFileLink
85
110
  };
111
+ function WorkspaceFileParagraph({ node, children, ...paragraphProps }) {
112
+ const workspace = useWorkspaceNavigationContext();
113
+ const renderFile = React.useContext(WorkspaceFileRendererContext);
114
+ const FallbackParagraph = React.useContext(FallbackParagraphContext);
115
+ const renderFallbackParagraph = (content) => React.createElement(FallbackParagraph, typeof FallbackParagraph === "string" ? paragraphProps : {
116
+ node,
117
+ ...paragraphProps
118
+ }, content);
119
+ if (!workspace || !renderFile) return renderFallbackParagraph(children);
120
+ const file = getStandaloneWorkspaceFileParagraph(node, workspace.root, workspace.base);
121
+ if (!file) return renderFallbackParagraph(children);
122
+ const promoted = renderFile({
123
+ label: file.label,
124
+ path: file.path,
125
+ sourceLink: /* @__PURE__ */ jsx(WorkspaceFileLink, {
126
+ href: file.path,
127
+ children: file.label
128
+ })
129
+ });
130
+ if (promoted == null) return renderFallbackParagraph(children);
131
+ const remainingChildren = React.Children.toArray(children).filter((_child, index) => index !== file.childIndex);
132
+ return /* @__PURE__ */ jsxs(React.Fragment, { children: [file.showRemainingChildren ? renderFallbackParagraph(remainingChildren) : null, promoted] }, file.path);
133
+ }
86
134
  /** Adds workspace-aware Markdown links when rendered inside a workspace provider. */
87
- const WorkspaceMessageResponse = React.memo(function WorkspaceMessageResponse({ components, rehypePlugins, renderWorkspaceHtmlArtifact, ...props }) {
135
+ const WorkspaceMessageResponse = React.memo(function WorkspaceMessageResponse({ components, rehypePlugins, promoteWorkspaceFiles = true, ...props }) {
88
136
  const workspace = useWorkspaceNavigationContext();
89
- const resolvedRehypePlugins = React.useMemo(() => rehypePlugins ?? (workspace ? createWorkspaceRehypePlugins(workspace.root, workspace.base) : void 0), [rehypePlugins, workspace]);
90
- return /* @__PURE__ */ jsx(MessageResponse, {
91
- components: React.useMemo(() => {
92
- const merged = components ? {
93
- ...workspaceComponents,
94
- ...components
95
- } : workspaceComponents;
96
- if (!workspace || !renderWorkspaceHtmlArtifact) return merged;
97
- const FallbackParagraph = components?.p ?? "p";
98
- return {
99
- ...merged,
100
- p: function WorkspaceHtmlArtifactParagraph({ node, children, ...paragraphProps }) {
101
- const renderFallbackParagraph = (content) => React.createElement(FallbackParagraph, typeof FallbackParagraph === "string" ? paragraphProps : {
102
- node,
103
- ...paragraphProps
104
- }, content);
105
- const artifact = getWorkspaceHtmlArtifactParagraph(node, workspace.root, workspace.base);
106
- if (!artifact) return renderFallbackParagraph(children);
107
- const remainingChildren = React.Children.toArray(children).filter((_child, index) => index !== artifact.childIndex);
108
- return /* @__PURE__ */ jsxs(Fragment, { children: [artifact.showRemainingChildren ? renderFallbackParagraph(remainingChildren) : null, renderWorkspaceHtmlArtifact({
109
- label: artifact.label,
110
- path: artifact.path,
111
- sourceLink: /* @__PURE__ */ jsx(WorkspaceFileLink, { href: artifact.path })
112
- })] });
113
- }
114
- };
115
- }, [
116
- components,
117
- renderWorkspaceHtmlArtifact,
118
- workspace
119
- ]),
120
- rehypePlugins: resolvedRehypePlugins,
121
- ...props
137
+ const workspaceRoot = workspace?.root;
138
+ const workspaceBase = workspace?.base;
139
+ const resolvedRehypePlugins = React.useMemo(() => rehypePlugins ?? (workspaceRoot !== void 0 && workspaceBase !== void 0 ? createWorkspaceRehypePlugins(workspaceRoot, workspaceBase) : void 0), [
140
+ rehypePlugins,
141
+ workspaceBase,
142
+ workspaceRoot
143
+ ]);
144
+ const resolvedComponents = React.useMemo(() => {
145
+ const merged = components ? {
146
+ ...workspaceComponents,
147
+ ...components
148
+ } : workspaceComponents;
149
+ return promoteWorkspaceFiles ? {
150
+ ...merged,
151
+ p: WorkspaceFileParagraph
152
+ } : merged;
153
+ }, [components, promoteWorkspaceFiles]);
154
+ return /* @__PURE__ */ jsx(FallbackParagraphContext, {
155
+ value: components?.p ?? "p",
156
+ children: /* @__PURE__ */ jsx(MessageResponse, {
157
+ components: resolvedComponents,
158
+ rehypePlugins: resolvedRehypePlugins,
159
+ ...props
160
+ })
122
161
  });
123
162
  });
124
- function getWorkspaceHtmlArtifactParagraph(node, root, base) {
163
+ function getStandaloneWorkspaceFileParagraph(node, root, base) {
125
164
  if (!node || node.tagName !== "p") return null;
126
165
  const children = node.children;
127
166
  const matches = children.flatMap((child, childIndex) => {
@@ -133,7 +172,7 @@ function getWorkspaceHtmlArtifactParagraph(node, root, base) {
133
172
  root,
134
173
  base
135
174
  });
136
- if (destination.kind !== "file" || destination.fragment !== null || !destination.path.toLowerCase().endsWith(".html")) return [];
175
+ if (destination.kind !== "file" || destination.fragment !== null) return [];
137
176
  return [{
138
177
  anchor: child,
139
178
  childIndex,
@@ -145,7 +184,7 @@ function getWorkspaceHtmlArtifactParagraph(node, root, base) {
145
184
  return {
146
185
  childIndex,
147
186
  path,
148
- label: markdownText(anchor).trim() || path.split("/").at(-1) || "Interactive UI",
187
+ label: markdownText(anchor).trim() || path.split("/").at(-1) || "Workspace file",
149
188
  showRemainingChildren: children.some((child, index) => index !== childIndex && (child.type !== "text" || child.value.trim()))
150
189
  };
151
190
  }
@@ -154,4 +193,4 @@ function markdownText(node) {
154
193
  return node.type === "element" ? node.children.map(markdownText).join("") : "";
155
194
  }
156
195
  //#endregion
157
- export { createWorkspaceRehypePlugins as n, WorkspaceMessageResponse as t };
196
+ export { WorkspaceMessageResponse as n, createWorkspaceRehypePlugins as r, WorkspaceFileRendererProvider as t };
@@ -0,0 +1,48 @@
1
+ import { E as MessageResponseProps } from "./Message-D_vCVEGB.js";
2
+ import * as React from "react";
3
+
4
+ //#region src/components/agents-sdk/WorkspaceMessageResponse.d.ts
5
+ interface WorkspaceFileRenderInput {
6
+ label: string;
7
+ path: string;
8
+ /** Shared workspace link element; hosts pass it through to the preview unchanged. */
9
+ sourceLink: React.ReactElement;
10
+ }
11
+ /**
12
+ * Host callback for one standalone workspace file link in an assistant
13
+ * paragraph. Return a node to replace the link, or `null` to keep it.
14
+ */
15
+ type WorkspaceFileRenderer = (file: WorkspaceFileRenderInput) => React.ReactNode;
16
+ /**
17
+ * Ambient workspace-file renderer for every `WorkspaceMessageResponse` below,
18
+ * and the only way to supply one. The value is read inside the promoted
19
+ * paragraph, not by the response component, so a host handing down a fresh
20
+ * callback every render re-renders only the paragraphs — the memoized Markdown
21
+ * pipeline is untouched and promoted cards keep their state.
22
+ * `ThinkChat.Messages` provides it from its `renderWorkspaceFile` prop; hosts
23
+ * composing `WorkspaceMessageResponse` directly provide it once at their
24
+ * conversation root.
25
+ */
26
+ declare function WorkspaceFileRendererProvider({
27
+ children,
28
+ renderWorkspaceFile
29
+ }: {
30
+ children: React.ReactNode;
31
+ renderWorkspaceFile: WorkspaceFileRenderer | undefined;
32
+ }): React.JSX.Element;
33
+ interface WorkspaceMessageResponseProps extends MessageResponseProps {
34
+ /**
35
+ * Whether standalone workspace file links may be promoted. `ThinkChat`
36
+ * passes `false` for user messages: user links remain ordinary navigation.
37
+ */
38
+ promoteWorkspaceFiles?: boolean;
39
+ }
40
+ /** Adds workspace-aware Markdown links when rendered inside a workspace provider. */
41
+ declare const WorkspaceMessageResponse: React.MemoExoticComponent<({
42
+ components,
43
+ rehypePlugins,
44
+ promoteWorkspaceFiles,
45
+ ...props
46
+ }: WorkspaceMessageResponseProps) => React.JSX.Element>;
47
+ //#endregion
48
+ export { WorkspaceMessageResponseProps as a, WorkspaceMessageResponse as i, WorkspaceFileRenderer as n, WorkspaceFileRendererProvider as r, WorkspaceFileRenderInput as t };
@@ -1,5 +1,5 @@
1
1
  import { canRequestFavicon, inferFaviconUrl } from "../../utils/favicon.js";
2
- import { $ as WarningIcon, D as LinkIcon, P as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WrenchIcon } from "../../icons-BC4HZqSK.js";
2
+ import { D as LinkIcon, P as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WarningIcon, tt as WrenchIcon } from "../../icons-CeGfXO21.js";
3
3
  import * as React from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region src/components/agents-sdk/AgentActivity.tsx
@@ -1,7 +1,7 @@
1
1
  import { replaceComposerTrigger } from "../../utils/composer-link.js";
2
2
  import { t as cx } from "../../class-names-BiMDVpUo.js";
3
3
  import { ExpansionStateProvider } from "../ai-sdk/ExpansionState.js";
4
- import { B as PlusIcon, H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, V as QueueIcon, t as ArchiveIcon } from "../../icons-BC4HZqSK.js";
4
+ import { B as PlusIcon, H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, V as QueueIcon, t as ArchiveIcon } from "../../icons-CeGfXO21.js";
5
5
  import { Button } from "../foundations/Button.js";
6
6
  import { AgentChatMessageEditor } from "../ai-sdk/AgentChatMessageEditor.js";
7
7
  import { IconButton } from "../foundations/IconButton.js";
@@ -11,7 +11,7 @@ import { AgentChatStartScreen } from "../ai-sdk/AgentChatStartScreen.js";
11
11
  import { Message, MessageAction, MessageActions, MessageMeta, MessageTimestamp } from "../ai-sdk/Message.js";
12
12
  import { AgentMessageParts } from "../ai-sdk/AgentMessageParts.js";
13
13
  import { Marker, MarkerContent } from "../foundations/Marker.js";
14
- import { t as CopyButton } from "../../copy-button-BABPlsc-.js";
14
+ import { t as CopyButton } from "../../copy-button-Dk2vRe9j.js";
15
15
  import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "../ai-sdk/Context.js";
16
16
  import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
17
17
  import { QueueItem, QueueItemActions, QueueItemContent } from "../ai-sdk/Queue.js";
@@ -1,4 +1,4 @@
1
- import { E as KeyboardIcon, H as RefreshIcon, r as ArrowLeftIcon } from "../../icons-BC4HZqSK.js";
1
+ import { E as KeyboardIcon, H as RefreshIcon, r as ArrowLeftIcon } from "../../icons-CeGfXO21.js";
2
2
  import { Button } from "../foundations/Button.js";
3
3
  import { WebPreviewNavigationButton } from "../general-purpose/WebPreview.js";
4
4
  import { BrowserLiveView } from "./BrowserLiveView.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, _ as DotIcon, k as MaximizeIcon } from "../../icons-BC4HZqSK.js";
2
+ import { K as SpinnerIcon, _ as DotIcon, k as MaximizeIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Button } from "../foundations/Button.js";
4
4
  import { Dialog } from "../foundations/Dialog.js";
5
5
  import { TransitionSurface } from "../foundations/TransitionSurface.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { L as PauseIcon, z as PlayIcon } from "../../icons-BC4HZqSK.js";
2
+ import { L as PauseIcon, z as PlayIcon } from "../../icons-CeGfXO21.js";
3
3
  import { IconButton } from "../foundations/IconButton.js";
4
4
  import { i as formatClock } from "../../format-COCyV98Z.js";
5
5
  import { EmptyState } from "../foundations/EmptyState.js";
@@ -1,5 +1,5 @@
1
1
  import { t as cx } from "../../class-names-BiMDVpUo.js";
2
- import { K as SpinnerIcon, tt as XIcon } from "../../icons-BC4HZqSK.js";
2
+ import { K as SpinnerIcon, nt as XIcon } from "../../icons-CeGfXO21.js";
3
3
  import { Tabs } from "../foundations/Tabs.js";
4
4
  import { WebPreview, WebPreviewNavigation, WebPreviewNavigationButton, WebPreviewUrl } from "../general-purpose/WebPreview.js";
5
5
  import { BrowserLiveView } from "./BrowserLiveView.js";
@@ -1,3 +1,4 @@
1
+ import { t as Correspondent } from "../../Correspondent-7K6uNLUm.js";
1
2
  import { n as ResponsiveSidebarShell } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
2
3
  import { ThinkRoutine } from "./ThinkRoutine.js";
3
4
  import * as React from "react";
@@ -6,8 +7,6 @@ import * as React from "react";
6
7
  type ManagerOfficeWorkStatus = "idle" | "running" | "attention" | "error" | "interrupted";
7
8
  /** The app-owned projection currently shown by the manager office. */
8
9
  type ManagerOfficeView = {
9
- kind: "dashboard";
10
- } | {
11
10
  kind: "attention";
12
11
  } | {
13
12
  kind: "employee";
@@ -33,6 +32,27 @@ interface ManagerOfficeHandoff {
33
32
  /** Unix timestamp in milliseconds when this handoff began. */
34
33
  createdAt: number;
35
34
  }
35
+ /**
36
+ * One item in a lane's workspace staging area. Companion projects a thread
37
+ * folder (files, recorded Google Doc/Sheet URLs, people) once the employee
38
+ * creates it. Not a document registry and not a CRM.
39
+ */
40
+ type ManagerOfficeWorkingSetItem = {
41
+ kind: "file";
42
+ path: string;
43
+ title: string;
44
+ } | {
45
+ kind: "folder";
46
+ path: string;
47
+ title: string;
48
+ } | {
49
+ kind: "link";
50
+ href: string;
51
+ title: string;
52
+ } | {
53
+ kind: "correspondent";
54
+ correspondent: Correspondent;
55
+ };
36
56
  interface ManagerOfficeWork {
37
57
  /** Stable work identity. */
38
58
  id: string;
@@ -44,16 +64,18 @@ interface ManagerOfficeWork {
44
64
  summary?: string;
45
65
  /** Unix timestamp in milliseconds of the latest lifecycle transition. */
46
66
  updatedAt: number;
67
+ /**
68
+ * Staging files, provider documents, and people this lane is using. Omit or
69
+ * empty until the employee creates the thread's workspace folder.
70
+ */
71
+ workingSet?: readonly ManagerOfficeWorkingSetItem[];
47
72
  }
48
- /** Which way work moves through a channel, from the employee's side. */
49
- type ManagerOfficeChannelDirection = "input" | "output" | "both";
50
73
  type ManagerOfficeChannelStatus = "connected" | "needs-auth" | "error";
51
74
  interface ManagerOfficeChannel {
52
75
  /** Stable channel identity. */
53
76
  id: string;
54
77
  /** Service the employee reaches through, such as “Slack” or “Gmail”. */
55
78
  name: string;
56
- direction: ManagerOfficeChannelDirection;
57
79
  status: ManagerOfficeChannelStatus;
58
80
  /** Connected account or workspace, or the reason the channel stopped. */
59
81
  detail?: string;
@@ -64,30 +86,6 @@ interface ManagerOfficeChannel {
64
86
  */
65
87
  icon?: React.ReactNode;
66
88
  }
67
- interface ManagerOfficeBrowserPreview {
68
- /** Title of the tab currently visible on the employee's browser. */
69
- title: string;
70
- /** Display-safe URL supplied by the host. */
71
- url: string;
72
- }
73
- interface ManagerOfficeAnalyticsPoint {
74
- /** Start of the reporting bucket as a Unix timestamp in milliseconds. */
75
- timestamp: number;
76
- /** Outcomes completed during this bucket. */
77
- completed: number;
78
- /** Employee runtime consumed during this bucket. */
79
- workloadHours: number;
80
- /** Host-estimated inference and tool cost during this bucket. */
81
- estimatedCost: number;
82
- }
83
- interface ManagerOfficeEmployeeAnalytics {
84
- employeeId: string;
85
- points: readonly ManagerOfficeAnalyticsPoint[];
86
- }
87
- interface ManagerOfficeReportSelection {
88
- employeeIds: readonly string[];
89
- rangeDays: 7 | 30 | 90;
90
- }
91
89
  interface ManagerOfficeEmployeeBase {
92
90
  /** Stable employee identity used by routes and list keys. */
93
91
  id: string;
@@ -108,8 +106,6 @@ interface ManagerOfficeConnectedEmployee extends ManagerOfficeEmployeeBase {
108
106
  routines: readonly ThinkRoutine[];
109
107
  /** Every service the employee reads from or acts on. Empty is meaningful. */
110
108
  channels: readonly ManagerOfficeChannel[];
111
- /** The live tab the manager can glance at from the office. */
112
- browserPreview?: ManagerOfficeBrowserPreview;
113
109
  }
114
110
  interface ManagerOfficeDisconnectedEmployee extends ManagerOfficeEmployeeBase {
115
111
  status: "offline" | "connecting" | "unavailable";
@@ -148,7 +144,9 @@ type ManagerOfficeDestination = {
148
144
  employee: ManagerOfficeConnectedEmployee;
149
145
  } | {
150
146
  kind: "workspace";
151
- employee: ManagerOfficeConnectedEmployee;
147
+ employee: ManagerOfficeConnectedEmployee; /** Owning lane when opening a file from that lane's working set. */
148
+ work?: ManagerOfficeWork; /** Workspace path to select, when the destination is a specific entry. */
149
+ path?: string;
152
150
  };
153
151
  interface ManagerOfficeProps extends React.HTMLAttributes<HTMLDivElement> {
154
152
  /** Current disposable navigation projection; durable selection remains app-owned. */
@@ -168,12 +166,6 @@ interface ManagerOfficeProps extends React.HTMLAttributes<HTMLDivElement> {
168
166
  renderEmployeeActions?: (employee: ManagerOfficeConnectedEmployee) => React.ReactNode;
169
167
  /** Action shown in the empty office. */
170
168
  emptyOfficeAction?: React.ReactNode;
171
- /** Per-employee reporting buckets used by the executive analytics view. */
172
- analytics?: readonly ManagerOfficeEmployeeAnalytics[];
173
- /** Currency used for cost estimates. Defaults to USD. */
174
- analyticsCurrency?: string;
175
- /** Export the exact filtered portfolio and time range currently on screen. */
176
- onExportReport?: (selection: ManagerOfficeReportSelection) => void;
177
169
  }
178
170
  interface ManagerOfficeSidebarProps extends Omit<React.HTMLAttributes<HTMLElement>, "content"> {
179
171
  /** Close the office drawer after a compact-width selection. */
@@ -190,6 +182,11 @@ interface ManagerOfficeSidebarProps extends Omit<React.HTMLAttributes<HTMLElemen
190
182
  content?: React.ReactNode;
191
183
  /** Persistent sidebar action, such as starting a conversation with the selected employee. */
192
184
  footer?: React.ReactNode;
185
+ /**
186
+ * Office is a vertical named roster. Chat is a horizontal seat strip so the
187
+ * thread list owns the column.
188
+ */
189
+ layout?: "office" | "chat";
193
190
  }
194
191
  type ManagerOfficeSidebarAlertProps = {
195
192
  "aria-label"?: string;
@@ -211,11 +208,6 @@ declare function ManagerOfficeSidebarAlert({
211
208
  title,
212
209
  ...props
213
210
  }: ManagerOfficeSidebarAlertProps): React.JSX.Element;
214
- /**
215
- * Shared Manager Office rail. Stories and host shells may add employee-owned
216
- * content, but the Workforce header, roster identity, status language, scrolling,
217
- * and footer placement stay component-owned and therefore cannot drift.
218
- */
219
211
  declare function ManagerOfficeSidebar({
220
212
  className,
221
213
  closeSidebarOnCompact,
@@ -223,24 +215,23 @@ declare function ManagerOfficeSidebar({
223
215
  employees,
224
216
  renderLink,
225
217
  footer,
218
+ layout,
226
219
  officeActions,
227
220
  selectedEmployeeId,
228
221
  ...props
229
222
  }: ManagerOfficeSidebarProps): React.JSX.Element;
230
223
  /**
231
- * Multi-employee manager office: a dashboard, aggregate handoffs, employee
232
- * roster, and one employee dossier. The consuming app owns authentication,
233
- * Agent connections, routing, and the selected employee's full work surface.
224
+ * Multi-employee manager office: inbox of browser waits plus ready work,
225
+ * employee roster, and one employee dossier of work lanes. The consuming app
226
+ * owns authentication, Agent connections, routing, and the selected
227
+ * employee's full work surface.
234
228
  */
235
229
  declare function ManagerOffice({
236
- analytics,
237
- analyticsCurrency,
238
230
  className,
239
231
  emptyOfficeAction,
240
232
  employees,
241
233
  renderLink,
242
234
  officeActions,
243
- onExportReport,
244
235
  renderEmployeeActions,
245
236
  sidebarTogglePlacement,
246
237
  style,
@@ -248,4 +239,4 @@ declare function ManagerOffice({
248
239
  ...props
249
240
  }: ManagerOfficeProps): React.JSX.Element;
250
241
  //#endregion
251
- export { ManagerOffice, ManagerOfficeAnalyticsPoint, ManagerOfficeBrowserPreview, ManagerOfficeChannel, ManagerOfficeChannelDirection, ManagerOfficeChannelStatus, ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeDisconnectedEmployee, ManagerOfficeEmployee, ManagerOfficeEmployeeAnalytics, ManagerOfficeEmployeeStatus, ManagerOfficeHandoff, ManagerOfficeProps, ManagerOfficeReportSelection, ManagerOfficeSidebar, ManagerOfficeSidebarAlert, ManagerOfficeSidebarAlertProps, ManagerOfficeSidebarProps, ManagerOfficeView, ManagerOfficeWork, ManagerOfficeWorkStatus };
242
+ export { ManagerOffice, ManagerOfficeChannel, ManagerOfficeChannelStatus, ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeDisconnectedEmployee, ManagerOfficeEmployee, ManagerOfficeEmployeeStatus, ManagerOfficeHandoff, ManagerOfficeProps, ManagerOfficeSidebar, ManagerOfficeSidebarAlert, ManagerOfficeSidebarAlertProps, ManagerOfficeSidebarProps, ManagerOfficeView, ManagerOfficeWork, ManagerOfficeWorkStatus, ManagerOfficeWorkingSetItem };