@mcp-b/react-components 0.40.0 → 0.42.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.
- package/dist/{AgentChat-CVO7xyLC.d.ts → AgentChat-DVr2giwD.d.ts} +1 -1
- package/dist/{AgentToolRunsContext-BCVqCtJ1.d.ts → AgentToolRunsContext-daY67hFM.d.ts} +12 -0
- package/dist/{CodeBlock-CWk1FVtm.js → CodeBlock-BjELA-_s.js} +1 -1
- package/dist/{FileTree-xqHYBw4g.js → FileTree-DMYRdT6R.js} +1 -1
- package/dist/McpConnectorForm-MRm1r59e.d.ts +39 -0
- package/dist/{Message-DBsHHhcM.d.ts → Message-D_vCVEGB.d.ts} +20 -1
- package/dist/{ThinkChatActivity-D6-_5Phw.d.ts → ThinkChatActivity-CsDql-ER.d.ts} +4 -1
- package/dist/{ThinkExecutionRun-lYYgyeE1.d.ts → ThinkExecutionRun-k8bpyXqt.d.ts} +3 -3
- package/dist/{WorkspaceFileView-Lab3om3F.js → WorkspaceFileView-DwdXiKku.js} +17 -22
- package/dist/{WorkspaceMessageResponse-Cy28WGSz.d.ts → WorkspaceMessageResponse-D66ty4FO.d.ts} +1 -1
- package/dist/components/agents-sdk/AgentActivity.js +4 -3
- package/dist/components/agents-sdk/AgentChat.d.ts +1 -1
- package/dist/components/agents-sdk/AgentChat.js +42 -18
- package/dist/components/agents-sdk/AgentToolRunsContext.d.ts +1 -1
- package/dist/components/agents-sdk/AgentToolRunsContext.js +12 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.d.ts +135 -0
- package/dist/components/agents-sdk/BrowserLiveScreen.js +637 -0
- package/dist/components/agents-sdk/BrowserLiveView.d.ts +2 -2
- package/dist/components/agents-sdk/BrowserLiveView.js +6 -9
- package/dist/components/agents-sdk/BrowserReplay.js +1 -1
- package/dist/components/agents-sdk/BrowserRunPanel.d.ts +1 -1
- package/dist/components/agents-sdk/BrowserRunPanel.js +8 -13
- package/dist/components/agents-sdk/ManagerOffice.d.ts +168 -0
- package/dist/components/agents-sdk/ManagerOffice.js +698 -0
- package/dist/components/agents-sdk/McpConnectionRequest.js +3 -3
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -38
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +8 -2
- package/dist/components/agents-sdk/McpPluginCatalog.js +82 -62
- package/dist/components/agents-sdk/McpServerPicker.d.ts +1 -1
- package/dist/components/agents-sdk/McpServerPicker.js +2 -2
- package/dist/components/agents-sdk/ModelSelector.js +1 -1
- package/dist/components/agents-sdk/PromptInputCommands.js +1 -1
- package/dist/components/agents-sdk/SubagentRunDetails.d.ts +1 -9
- package/dist/components/agents-sdk/SubagentRunDetails.js +1 -9
- package/dist/components/agents-sdk/SubagentRunIndicator.js +1 -1
- package/dist/components/agents-sdk/SubagentRunSelector.d.ts +4 -2
- package/dist/components/agents-sdk/SubagentRunSelector.js +7 -6
- package/dist/components/agents-sdk/ThinkChat.d.ts +4 -4
- package/dist/components/agents-sdk/ThinkChatActivity.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkChatActivity.js +18 -4
- package/dist/components/agents-sdk/ThinkChatToolPanels.js +7 -3
- package/dist/components/agents-sdk/ThinkExecutionDetail.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionDetail.js +45 -43
- package/dist/components/agents-sdk/ThinkExecutionRun.d.ts +2 -2
- package/dist/components/agents-sdk/ThinkExecutionRun.js +5 -6
- package/dist/components/agents-sdk/ThinkExecutionStatus.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkExecutionStatus.js +8 -12
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.d.ts +8 -1
- package/dist/components/agents-sdk/ThinkExecutionWorkbench.js +43 -37
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +42 -78
- package/dist/components/agents-sdk/ThinkFullApp.js +121 -202
- package/dist/components/agents-sdk/ThinkFullAppViewSwitch.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutine.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineBrowser.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineDetail.js +4 -15
- package/dist/components/agents-sdk/ThinkRoutineForm.js +1 -1
- package/dist/components/agents-sdk/ThinkRoutineLibrary.d.ts +7 -6
- package/dist/components/agents-sdk/ThinkRoutineLibrary.js +112 -140
- package/dist/components/agents-sdk/ThinkRoutineRuns.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkRoutineRuns.js +3 -10
- package/dist/components/agents-sdk/ThinkThreadPicker.js +2 -1
- package/dist/components/agents-sdk/WorkspaceBrowser.js +1 -1
- package/dist/components/agents-sdk/WorkspaceExplorer.js +2 -1
- package/dist/components/agents-sdk/WorkspaceFileView.js +1 -1
- package/dist/components/agents-sdk/WorkspaceHeader.js +2 -1
- package/dist/components/agents-sdk/WorkspaceMessageResponse.d.ts +1 -1
- package/dist/components/agents-sdk/WorkspaceMountManager.js +11 -11
- package/dist/components/ai-sdk/Activity.js +1 -1
- package/dist/components/ai-sdk/AgentAttention.d.ts +1 -1
- package/dist/components/ai-sdk/AgentChatStartScreen.js +1 -1
- package/dist/components/ai-sdk/Approval.js +1 -1
- package/dist/components/ai-sdk/Artifact.js +1 -1
- package/dist/components/ai-sdk/ChainOfThought.d.ts +1 -1
- package/dist/components/ai-sdk/ChainOfThought.js +1 -1
- package/dist/components/ai-sdk/Checkpoint.js +1 -1
- package/dist/components/ai-sdk/CodeBlock.js +1 -1
- package/dist/components/ai-sdk/Conversation.js +1 -1
- package/dist/components/ai-sdk/Goal.js +1 -1
- package/dist/components/ai-sdk/MediaPreviewCard.js +1 -1
- package/dist/components/ai-sdk/Message.d.ts +2 -2
- package/dist/components/ai-sdk/Message.js +25 -3
- package/dist/components/ai-sdk/MessageScroller.js +3 -2
- package/dist/components/ai-sdk/MessageScrollerVirtual.js +2 -1
- package/dist/components/ai-sdk/Plan.js +1 -1
- package/dist/components/ai-sdk/PromptInput.js +21 -15
- package/dist/components/ai-sdk/Queue.d.ts +4 -4
- package/dist/components/ai-sdk/Queue.js +6 -15
- package/dist/components/ai-sdk/Reasoning.js +1 -1
- package/dist/components/ai-sdk/Sources.js +1 -1
- package/dist/components/ai-sdk/Task.d.ts +2 -2
- package/dist/components/ai-sdk/Task.js +2 -2
- package/dist/components/extension/ChatGptSignInScreen.js +2 -1
- package/dist/components/extension/CodexModelSelector.js +1 -1
- package/dist/components/extension/ConversationTabPicker.js +1 -1
- package/dist/components/foundations/Avatar.d.ts +1 -10
- package/dist/components/foundations/Avatar.js +1 -10
- package/dist/components/foundations/Checkbox.js +1 -1
- package/dist/components/foundations/CheckboxGroup.js +1 -0
- package/dist/components/foundations/ContextMenu.js +1 -1
- package/dist/components/foundations/LinkButton.d.ts +12 -10
- package/dist/components/foundations/LinkButton.js +15 -11
- package/dist/components/foundations/Menubar.js +1 -1
- package/dist/components/foundations/SearchField.js +1 -1
- package/dist/components/foundations/Select.js +1 -1
- package/dist/components/foundations/Stepper.js +1 -1
- package/dist/components/foundations/Toast.js +1 -1
- package/dist/components/foundations/ToggleGroup.d.ts +79 -1
- package/dist/components/foundations/icons.d.ts +2 -2
- package/dist/components/foundations/icons.js +2 -2
- package/dist/components/general-purpose/AppFrame.js +1 -0
- package/dist/components/general-purpose/AppTopBar.d.ts +6 -0
- package/dist/components/general-purpose/AppTopBar.js +2 -1
- package/dist/components/general-purpose/Commit.d.ts +2 -2
- package/dist/components/general-purpose/Commit.js +5 -13
- package/dist/components/general-purpose/EnvironmentVariables.d.ts +2 -2
- package/dist/components/general-purpose/EnvironmentVariables.js +4 -7
- package/dist/components/general-purpose/FileTree.js +1 -1
- package/dist/components/general-purpose/PricingBillingToggle.js +4 -9
- package/dist/components/general-purpose/PricingPlanCard.js +15 -14
- package/dist/components/general-purpose/ResizableSidePanel.d.ts +8 -0
- package/dist/components/general-purpose/ResizableSidePanel.js +3 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.d.ts +105 -2
- package/dist/components/general-purpose/ResponsiveSidebarShell.js +112 -56
- package/dist/components/general-purpose/SetupChecklist.js +1 -1
- package/dist/components/general-purpose/Terminal.d.ts +1 -1
- package/dist/components/general-purpose/Terminal.js +4 -12
- package/dist/components/general-purpose/TestResults.d.ts +1 -1
- package/dist/components/general-purpose/TestResults.js +8 -21
- package/dist/components/general-purpose/ThemeModeControl.js +1 -1
- package/dist/components/general-purpose/WebPreview.d.ts +4 -1
- package/dist/components/general-purpose/WebPreview.js +6 -14
- package/dist/components/nanites/AgentConnection.js +2 -2
- package/dist/components/nanites/AgentToolDetail.d.ts +1 -1
- package/dist/components/nanites/AgentToolDetail.js +6 -5
- package/dist/components/nanites/NaniteScene.js +11 -11
- package/dist/{copy-button-Bc7jsYv_.js → copy-button-lys9N_aI.js} +1 -1
- package/dist/{icons-DwgNir1Q.d.ts → icons-0corjfxR.d.ts} +1 -16
- package/dist/{icons-MmIXciMO.js → icons-CVFSeTJn.js} +2 -5
- package/dist/styles/accordion.css +1 -0
- package/dist/styles/action-guide.css +8 -7
- package/dist/styles/activity-header.css +13 -39
- package/dist/styles/activity.css +40 -55
- package/dist/styles/agent-attention.css +19 -19
- package/dist/styles/agent-chat.css +94 -42
- package/dist/styles/agent-connection.css +10 -4
- package/dist/styles/agent-tool-detail.css +5 -15
- package/dist/styles/alert-dialog.css +4 -4
- package/dist/styles/app-frame.css +1 -3
- package/dist/styles/app-icon.css +12 -18
- package/dist/styles/app-top-bar.css +31 -9
- package/dist/styles/approval.css +1 -0
- package/dist/styles/artifact.css +6 -6
- package/dist/styles/attachment-preview.css +5 -4
- package/dist/styles/avatar.css +6 -22
- package/dist/styles/base.css +2 -8
- package/dist/styles/browser-live-screen.css +38 -0
- package/dist/styles/browser-live-view.css +12 -4
- package/dist/styles/browser-replay.css +6 -6
- package/dist/styles/browser-run-panel.css +21 -18
- package/dist/styles/button.css +15 -6
- package/dist/styles/card.css +5 -5
- package/dist/styles/chatgpt-sign-in-screen.css +6 -6
- package/dist/styles/code-block.css +14 -13
- package/dist/styles/codex-model-selector.css +2 -0
- package/dist/styles/collapsible.css +1 -0
- package/dist/styles/commit.css +30 -7
- package/dist/styles/context.css +9 -9
- package/dist/styles/conversation-tab-picker.css +1 -1
- package/dist/styles/conversation.css +6 -8
- package/dist/styles/dialog.css +4 -4
- package/dist/styles/empty-state.css +3 -3
- package/dist/styles/environment-variables.css +12 -9
- package/dist/styles/field.css +2 -1
- package/dist/styles/fieldset.css +2 -2
- package/dist/styles/index.css +8 -7
- package/dist/styles/manager-office.css +480 -0
- package/dist/styles/mcp-plugin-catalog.css +44 -39
- package/dist/styles/mcp-server-picker.css +4 -4
- package/dist/styles/message-scroller.css +9 -11
- package/dist/styles/message.css +74 -28
- package/dist/styles/nanite-scene.css +9 -9
- package/dist/styles/navigation-menu.css +1 -0
- package/dist/styles/plan.css +13 -12
- package/dist/styles/pricing-page.css +37 -30
- package/dist/styles/prompt-input.css +26 -18
- package/dist/styles/queue.css +1 -0
- package/dist/styles/reasoning.css +1 -9
- package/dist/styles/recipes.css +29 -58
- package/dist/styles/responsive-sidebar-shell.css +107 -29
- package/dist/styles/separator.css +5 -5
- package/dist/styles/sources.css +4 -4
- package/dist/styles/stepper.css +1 -0
- package/dist/styles/streamdown.css +31 -21
- package/dist/styles/subagent-run.css +20 -3
- package/dist/styles/tabs.css +1 -0
- package/dist/styles/task.css +5 -17
- package/dist/styles/terminal.css +29 -10
- package/dist/styles/test-results.css +16 -7
- package/dist/styles/think-execution-status.css +10 -26
- package/dist/styles/think-execution-workbench.css +98 -108
- package/dist/styles/think-full-app.css +75 -225
- package/dist/styles/think-routine-library.css +26 -95
- package/dist/styles/think-thread-picker.css +17 -12
- package/dist/styles/transition-surface.css +7 -8
- package/dist/styles/utilities.css +75 -0
- package/dist/styles/web-preview.css +46 -22
- package/dist/styles/workspace-explorer.css +22 -44
- package/dist/styles/workspace-mount-manager.css +24 -2
- package/dist/utils/favicon.d.ts +6 -1
- package/dist/utils/favicon.js +18 -1
- package/package.json +37 -35
- package/dist/ResponsiveSidebarShell-DWjULskY.d.ts +0 -68
- package/dist/ToggleGroup-_pQMyHGM.d.ts +0 -80
- package/dist/components/agents-sdk/AgentActivityPreview.d.ts +0 -46
- package/dist/components/agents-sdk/AgentActivityPreview.js +0 -93
- package/dist/components/agents-sdk/ThinkThreadShell.d.ts +0 -38
- package/dist/components/agents-sdk/ThinkThreadShell.js +0 -27
- package/dist/components/foundations/Badge.d.ts +0 -62
- package/dist/components/foundations/Badge.js +0 -55
- package/dist/components/foundations/StatusPill.d.ts +0 -43
- package/dist/components/foundations/StatusPill.js +0 -35
- package/dist/components/general-purpose/Shell.d.ts +0 -149
- package/dist/components/general-purpose/Shell.js +0 -116
- package/dist/styles/agent-activity-preview-overlay.css +0 -169
- package/dist/styles/agent-activity-preview.css +0 -209
- package/dist/styles/badge.css +0 -120
- package/dist/styles/shell.css +0 -122
- package/dist/styles/status-pill.css +0 -39
|
@@ -167,7 +167,7 @@ interface AgentChatProps<MessageT extends UIMessage = UIMessage> {
|
|
|
167
167
|
composerAddMenuItems?: React.ReactNode;
|
|
168
168
|
/**
|
|
169
169
|
* Transient status rendered between the transcript and the composer —
|
|
170
|
-
* e.g.
|
|
170
|
+
* e.g. "Reconnecting…". `ThinkChat.Messages` fills this from the
|
|
171
171
|
* hook's `isRecovering`/`connectionError` automatically.
|
|
172
172
|
*/
|
|
173
173
|
notice?: React.ReactNode;
|
|
@@ -21,6 +21,18 @@ type AgentToolEventSource = Parameters<typeof useAgentToolEvents>[0]["agent"] &
|
|
|
21
21
|
* once per socket connect, so a later mount misses existing runs — and share
|
|
22
22
|
* the one value with every surface that reads runs (the chat shell and a
|
|
23
23
|
* run-detail route read the same projection, never two subscriptions).
|
|
24
|
+
*
|
|
25
|
+
* The subscription's listener attaches in a passive effect, after paint. A
|
|
26
|
+
* host whose transport is in-process (the browser extension's port bridge)
|
|
27
|
+
* can complete the connect and deliver the replay before that effect runs —
|
|
28
|
+
* reliably so on a hot return from a drill-in. Upstream owns the fix:
|
|
29
|
+
* `useAgent` buffers `agent-tool-event` frames from socket construction and
|
|
30
|
+
* `useAgentToolEvents` drains them when its listener attaches (agents >
|
|
31
|
+
* 0.20.1; `_bufferAgentToolReplayFrame` is the seam for a non-`useAgent`
|
|
32
|
+
* socket). On older versions such hosts must buffer and re-dispatch
|
|
33
|
+
* themselves — think-browser-host's `useThinkAgentToolEvents` is that
|
|
34
|
+
* interim shim. Network transports are not affected in practice: the round
|
|
35
|
+
* trip loses to the effect flush.
|
|
24
36
|
*/
|
|
25
37
|
declare function useSourceScopedAgentToolEvents<Part extends AgentToolRunPart = UIMessage["parts"][number]>(agent: AgentToolEventSource): {
|
|
26
38
|
runsById: Record<string, import("agents").AgentToolRunState<Part>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cx } from "./class-names-BiMDVpUo.js";
|
|
2
2
|
import { Select } from "./components/foundations/Select.js";
|
|
3
|
-
import { t as CopyButton } from "./copy-button-
|
|
3
|
+
import { t as CopyButton } from "./copy-button-lys9N_aI.js";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
import { createHighlighter } from "shiki";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as cx } from "./class-names-BiMDVpUo.js";
|
|
2
|
-
import { C as
|
|
2
|
+
import { C as FolderIcon, S as FileIcon, p as ChevronRightIcon, w as FolderOpenIcon } from "./icons-CVFSeTJn.js";
|
|
3
3
|
import { t as NavigationLink } from "./navigation-link-kqMa81v5.js";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "./mcp-server-catalog-CCj2ItkV.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/agents-sdk/McpConnectorForm.d.ts
|
|
5
|
+
type CredentialFieldName = Exclude<McpServerSetupAuthFieldName, "redirectUrl">;
|
|
6
|
+
type McpConnectorFormValues = Readonly<Partial<Record<CredentialFieldName, string>> & {
|
|
7
|
+
readonly name: string;
|
|
8
|
+
readonly url: string;
|
|
9
|
+
}>;
|
|
10
|
+
type McpConnectorFormProps = Omit<React.FormHTMLAttributes<HTMLFormElement>, "onSubmit" | "status"> & {
|
|
11
|
+
/** Authentication metadata that decides which credential fields render. */readonly auth?: McpServerSetupAuth; /** Initial connector values. Publisher client credentials remain app-owned. */
|
|
12
|
+
readonly defaults?: Partial<McpConnectorFormValues>; /** Optional pattern used to validate the MCP name field. */
|
|
13
|
+
readonly namePattern?: string; /** Keep a catalog-owned MCP name and URL visible but immutable. */
|
|
14
|
+
readonly readOnlyServer?: boolean; /** Read-only redirect URL shown for manual OAuth client setup. */
|
|
15
|
+
readonly redirectUrl?: string; /** Inline connection status announced politely to assistive tech. */
|
|
16
|
+
readonly status?: React.ReactNode; /** Label for the submit button. */
|
|
17
|
+
readonly submitLabel?: string; /** Label shown while submit is pending. */
|
|
18
|
+
readonly submittingLabel?: string; /** Called with normalized connector values after native form validation passes. */
|
|
19
|
+
readonly onSubmit: (values: McpConnectorFormValues) => void | Promise<void>;
|
|
20
|
+
};
|
|
21
|
+
/** Collects MCP connector settings and optional credentials with native form validation. */
|
|
22
|
+
declare function McpConnectorForm({
|
|
23
|
+
auth,
|
|
24
|
+
className,
|
|
25
|
+
defaults,
|
|
26
|
+
namePattern,
|
|
27
|
+
readOnlyServer,
|
|
28
|
+
redirectUrl,
|
|
29
|
+
status,
|
|
30
|
+
submitLabel,
|
|
31
|
+
submittingLabel,
|
|
32
|
+
onSubmit,
|
|
33
|
+
ref,
|
|
34
|
+
...props
|
|
35
|
+
}: McpConnectorFormProps & {
|
|
36
|
+
ref?: React.Ref<HTMLFormElement>;
|
|
37
|
+
}): React.JSX.Element;
|
|
38
|
+
//#endregion
|
|
39
|
+
export { McpConnectorFormProps as n, McpConnectorFormValues as r, McpConnectorForm as t };
|
|
@@ -55,6 +55,25 @@ declare function MessageContent({
|
|
|
55
55
|
}: MessageContentProps & {
|
|
56
56
|
ref?: React.Ref<HTMLDivElement>;
|
|
57
57
|
}): React.JSX.Element;
|
|
58
|
+
interface MessageMetaProps extends React.HTMLAttributes<HTMLDivElement> {}
|
|
59
|
+
/** Quiet message metadata and actions shown on hover or keyboard focus. */
|
|
60
|
+
declare function MessageMeta({
|
|
61
|
+
className,
|
|
62
|
+
children,
|
|
63
|
+
ref,
|
|
64
|
+
...props
|
|
65
|
+
}: MessageMetaProps & {
|
|
66
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
67
|
+
}): React.JSX.Element;
|
|
68
|
+
interface MessageTimestampProps extends Omit<React.TimeHTMLAttributes<HTMLTimeElement>, "children" | "dateTime"> {
|
|
69
|
+
date: Date;
|
|
70
|
+
}
|
|
71
|
+
/** Machine-readable message time with a compact local-time label. */
|
|
72
|
+
declare function MessageTimestamp({
|
|
73
|
+
date,
|
|
74
|
+
className,
|
|
75
|
+
...props
|
|
76
|
+
}: MessageTimestampProps): React.JSX.Element;
|
|
58
77
|
type MessageResponseProps = StreamdownProps;
|
|
59
78
|
declare const MessageResponse: React.MemoExoticComponent<({
|
|
60
79
|
className,
|
|
@@ -225,4 +244,4 @@ declare function MessageBranchPage({
|
|
|
225
244
|
ref?: React.Ref<HTMLSpanElement>;
|
|
226
245
|
}): React.JSX.Element;
|
|
227
246
|
//#endregion
|
|
228
|
-
export {
|
|
247
|
+
export { MessageToolbar as A, MessageMetaProps as C, MessageRole as D, MessageResponseProps as E, MessageTimestamp as O, MessageMeta as S, MessageResponse as T, MessageBranchProps as _, MessageActionsProps as a, MessageContent as b, MessageBranch as c, MessageBranchNext as d, MessageBranchNextProps as f, MessageBranchPreviousProps as g, MessageBranchPrevious as h, MessageActions as i, MessageToolbarProps as j, MessageTimestampProps as k, MessageBranchContent as l, MessageBranchPageProps as m, MessageAction as n, MessageAttachment as o, MessageBranchPage as p, MessageActionProps as r, MessageAttachmentProps as s, Message as t, MessageBranchContentProps as u, MessageBranchSelector as v, MessageProps as w, MessageContentProps as x, MessageBranchSelectorProps as y };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as AgentMessageRenderPartContext } from "./AgentMessageParts-C7L-Mv9U.js";
|
|
2
|
-
import { r as AgentChatProps } from "./AgentChat-
|
|
2
|
+
import { r as AgentChatProps } from "./AgentChat-DVr2giwD.js";
|
|
3
3
|
import { l as ThinkChatPart } from "./ThinkChatToolParts-D4qcnnxt.js";
|
|
4
4
|
import { t as ThinkChatActivityDescription } from "./ThinkChatActivitySummary-BtBQgMg6.js";
|
|
5
5
|
import * as React from "react";
|
|
@@ -40,6 +40,8 @@ interface ThinkChatActivityProps {
|
|
|
40
40
|
isStreaming?: boolean;
|
|
41
41
|
/** Per-tool action/panel overrides, keyed by tool name. */
|
|
42
42
|
toolRenderers?: ThinkChatToolRenderers;
|
|
43
|
+
/** Replaces the summary action after the activity settles. */
|
|
44
|
+
settledAction?: string;
|
|
43
45
|
/**
|
|
44
46
|
* Uniquely identifies this run across the whole transcript for persisted
|
|
45
47
|
* disclosure state (the activity renderer passes `${message.id}:${runStart}`).
|
|
@@ -54,6 +56,7 @@ declare function ThinkChatActivity({
|
|
|
54
56
|
defaultOpen,
|
|
55
57
|
isStreaming,
|
|
56
58
|
toolRenderers,
|
|
59
|
+
settledAction,
|
|
57
60
|
stateKey
|
|
58
61
|
}: ThinkChatActivityProps): React.JSX.Element | null;
|
|
59
62
|
/**
|
|
@@ -6,9 +6,10 @@ import { WorkflowInfo } from "agents/workflows";
|
|
|
6
6
|
type ThinkExecutionRun = ThinkSubmissionInspection | WorkflowInfo;
|
|
7
7
|
/** Narrows the direct upstream execution union without wrapping either record. */
|
|
8
8
|
declare function isThinkSubmissionRun(run: ThinkExecutionRun): run is ThinkSubmissionInspection;
|
|
9
|
-
type ThinkExecutionStatusTone = "success" | "danger" | "
|
|
9
|
+
type ThinkExecutionStatusTone = "success" | "danger" | "paused" | "primary" | "neutral";
|
|
10
10
|
declare function getThinkExecutionRunId(run: ThinkExecutionRun): string;
|
|
11
11
|
declare function getThinkExecutionRunTitle(run: ThinkExecutionRun): string;
|
|
12
|
+
declare function getThinkExecutionRunKindLabel(run: ThinkExecutionRun): "Submission" | "Workflow";
|
|
12
13
|
declare function getThinkExecutionRunSubtitle(run: ThinkExecutionRun): string | undefined;
|
|
13
14
|
declare function getThinkExecutionRunProgressedAt(run: ThinkExecutionRun): number | Date | undefined;
|
|
14
15
|
declare function getThinkExecutionRunProgressedLabel(run: ThinkExecutionRun): "Started" | "Updated";
|
|
@@ -25,6 +26,5 @@ declare function formatThinkExecutionShortTimestamp(value: Date | number | null
|
|
|
25
26
|
declare function formatThinkExecutionRunProgress(run: ThinkExecutionRun): string;
|
|
26
27
|
declare function getThinkExecutionRunAccessibleName(run: ThinkExecutionRun): string;
|
|
27
28
|
declare function getThinkExecutionRunError(run: ThinkExecutionRun): string | undefined;
|
|
28
|
-
declare function isSameThinkExecutionRun(first: ThinkExecutionRun | null, second: ThinkExecutionRun): boolean;
|
|
29
29
|
//#endregion
|
|
30
|
-
export { isThinkSubmissionRun as _, formatThinkExecutionStatus as a, getThinkExecutionRunError as c,
|
|
30
|
+
export { isThinkSubmissionRun as _, formatThinkExecutionStatus as a, getThinkExecutionRunError as c, getThinkExecutionRunProgressedAt as d, getThinkExecutionRunProgressedLabel as f, getThinkExecutionRunTitle as g, getThinkExecutionRunSubtitle as h, formatThinkExecutionShortTimestamp as i, getThinkExecutionRunId as l, getThinkExecutionRunStatusTone as m, ThinkExecutionStatusTone as n, formatThinkExecutionTimestamp as o, getThinkExecutionRunStatus as p, formatThinkExecutionRunProgress as r, getThinkExecutionRunAccessibleName as s, ThinkExecutionRun as t, getThinkExecutionRunKindLabel as u };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { $ as WarningIcon, O as MaximizeIcon, b as EyeIcon, d as CheckIcon, m as CodeIcon, r as ArrowLeftIcon, v as DownloadIcon } from "./icons-CVFSeTJn.js";
|
|
2
2
|
import { r as formatClock } from "./format-DB2mX9DA.js";
|
|
3
|
-
import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-
|
|
3
|
+
import { a as CodeBlockCopyButton, i as CodeBlockContent, r as CodeBlockContainer, t as CodeBlock } from "./CodeBlock-BjELA-_s.js";
|
|
4
4
|
import { AppTopBar } from "./components/general-purpose/AppTopBar.js";
|
|
5
5
|
import { inferWorkspaceLanguage, inferWorkspaceMedia, isWorkspaceMarkdownPath, isWorkspaceSkillPath, parseWorkspaceSkill } from "./components/agents-sdk/WorkspaceFile.js";
|
|
6
6
|
import { c as useWorkspaceNavigationContext, s as useWorkspaceNavigationRestoration } from "./WorkspaceLink-DtH66bAY.js";
|
|
@@ -70,32 +70,27 @@ function useWorkspaceAssetUrl(asset, mimeType) {
|
|
|
70
70
|
});
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const previewBlob = new Blob([toBlobPart(asset.data)], { type: mimeType });
|
|
77
|
-
url = URL.createObjectURL(previewBlob);
|
|
78
|
-
downloadUrl = mimeType === SVG_MIME_TYPE ? URL.createObjectURL(new Blob([previewBlob], { type: "application/octet-stream" })) : url;
|
|
73
|
+
const previewBlob = new Blob([toBlobPart(asset.data)], { type: mimeType });
|
|
74
|
+
const previewUrl = URL.createObjectURL(previewBlob);
|
|
75
|
+
if (mimeType !== SVG_MIME_TYPE) {
|
|
79
76
|
setObjectUrl({
|
|
80
77
|
asset,
|
|
81
|
-
url,
|
|
82
|
-
downloadUrl,
|
|
78
|
+
url: previewUrl,
|
|
79
|
+
downloadUrl: previewUrl,
|
|
83
80
|
error: null
|
|
84
81
|
});
|
|
85
|
-
|
|
86
|
-
if (url) URL.revokeObjectURL(url);
|
|
87
|
-
if (downloadUrl && downloadUrl !== url) URL.revokeObjectURL(downloadUrl);
|
|
88
|
-
setObjectUrl({
|
|
89
|
-
asset,
|
|
90
|
-
url: null,
|
|
91
|
-
downloadUrl: null,
|
|
92
|
-
error: "This file could not be prepared for preview."
|
|
93
|
-
});
|
|
94
|
-
return;
|
|
82
|
+
return () => URL.revokeObjectURL(previewUrl);
|
|
95
83
|
}
|
|
84
|
+
const svgDownloadUrl = URL.createObjectURL(new Blob([previewBlob], { type: "application/octet-stream" }));
|
|
85
|
+
setObjectUrl({
|
|
86
|
+
asset,
|
|
87
|
+
url: previewUrl,
|
|
88
|
+
downloadUrl: svgDownloadUrl,
|
|
89
|
+
error: null
|
|
90
|
+
});
|
|
96
91
|
return () => {
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
URL.revokeObjectURL(previewUrl);
|
|
93
|
+
URL.revokeObjectURL(svgDownloadUrl);
|
|
99
94
|
};
|
|
100
95
|
}, [asset, mimeType]);
|
|
101
96
|
if (!asset) return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { inferFaviconUrl } from "../../utils/favicon.js";
|
|
2
|
-
import {
|
|
1
|
+
import { canRequestFavicon, inferFaviconUrl } from "../../utils/favicon.js";
|
|
2
|
+
import { $ as WarningIcon, D as LinkIcon, N as MonitorIcon, R as PencilIcon, S as FileIcon, T as InfoIcon, U as SearchIcon, Z as TerminalIcon, et as WrenchIcon } from "../../icons-CVFSeTJn.js";
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/agents-sdk/AgentActivity.tsx
|
|
@@ -21,7 +21,8 @@ function AgentActivityIcon({ kind }) {
|
|
|
21
21
|
function AgentActivityFavicon({ fallbackKind = "web", url }) {
|
|
22
22
|
const src = inferFaviconUrl(url);
|
|
23
23
|
const [failedSrc, setFailedSrc] = React.useState(null);
|
|
24
|
-
|
|
24
|
+
const failed = failedSrc === src;
|
|
25
|
+
if (!src || !canRequestFavicon(src) || failed) return /* @__PURE__ */ jsx(AgentActivityIcon, { kind: fallbackKind });
|
|
25
26
|
return /* @__PURE__ */ jsx("img", {
|
|
26
27
|
className: "activity__favicon",
|
|
27
28
|
src,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, o as compactingNotice, r as AgentChatProps, t as AgentChat } from "../../AgentChat-
|
|
1
|
+
import { a as PermissionModeControl, i as AgentChatRenderMessageContext, n as AgentChatComposerDraft, o as compactingNotice, r as AgentChatProps, t as AgentChat } from "../../AgentChat-DVr2giwD.js";
|
|
2
2
|
export { AgentChat, AgentChatComposerDraft, AgentChatProps, AgentChatRenderMessageContext, PermissionModeControl, compactingNotice };
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { t as cx } from "../../class-names-BiMDVpUo.js";
|
|
2
2
|
import { ExpansionStateProvider } from "../ai-sdk/ExpansionState.js";
|
|
3
|
-
import {
|
|
3
|
+
import { B as PlusIcon, F as MoveToFrontIcon, H as RefreshIcon, K as SpinnerIcon, Q as TrashIcon, R as PencilIcon, V as QueueIcon, t as ArchiveIcon } from "../../icons-CVFSeTJn.js";
|
|
4
4
|
import { Button } from "../foundations/Button.js";
|
|
5
5
|
import { AgentChatMessageEditor } from "../ai-sdk/AgentChatMessageEditor.js";
|
|
6
6
|
import { IconButton } from "../foundations/IconButton.js";
|
|
7
7
|
import { Menu } from "../foundations/Menu.js";
|
|
8
8
|
import { PromptInput, PromptInputActionAddAttachments, PromptInputActionMenu, PromptInputActionMenuContent, PromptInputActionMenuTrigger, PromptInputAttachments, PromptInputBody, PromptInputButton, PromptInputCommandComposer, PromptInputContextSelector, PromptInputDictation, PromptInputFooter, PromptInputHeader, PromptInputPermissionSelector, PromptInputReferences, PromptInputSubmit, PromptInputTextarea, PromptInputTools, PromptInputTray, usePromptInputAttachments } from "../ai-sdk/PromptInput.js";
|
|
9
9
|
import { AgentChatStartScreen } from "../ai-sdk/AgentChatStartScreen.js";
|
|
10
|
-
import { Message, MessageAction, MessageActions } from "../ai-sdk/Message.js";
|
|
10
|
+
import { Message, MessageAction, MessageActions, MessageMeta, MessageTimestamp } from "../ai-sdk/Message.js";
|
|
11
11
|
import { AgentMessageParts } from "../ai-sdk/AgentMessageParts.js";
|
|
12
12
|
import { Marker, MarkerContent } from "../foundations/Marker.js";
|
|
13
|
-
import { t as CopyButton } from "../../copy-button-
|
|
13
|
+
import { t as CopyButton } from "../../copy-button-lys9N_aI.js";
|
|
14
14
|
import { Context, ContextContent, ContextContentBody, ContextContentHeader, ContextTrigger, getContextUsage, getContextUsedTokens } from "../ai-sdk/Context.js";
|
|
15
15
|
import { VirtualMessageScroller } from "../ai-sdk/MessageScrollerVirtual.js";
|
|
16
16
|
import { QueueItem, QueueItemActions, QueueItemContent } from "../ai-sdk/Queue.js";
|
|
@@ -78,6 +78,14 @@ function observeAgentChatComposer(element) {
|
|
|
78
78
|
observer.disconnect();
|
|
79
79
|
};
|
|
80
80
|
}
|
|
81
|
+
function getAgentChatMessageTime(message) {
|
|
82
|
+
const metadata = message.metadata;
|
|
83
|
+
if (!metadata || typeof metadata !== "object" || !("createdAt" in metadata)) return void 0;
|
|
84
|
+
const value = metadata.createdAt;
|
|
85
|
+
if (!(value instanceof Date) && typeof value !== "number" && typeof value !== "string") return;
|
|
86
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
87
|
+
return Number.isNaN(date.getTime()) ? void 0 : date;
|
|
88
|
+
}
|
|
81
89
|
const EMPTY_PENDING_APPROVALS = [];
|
|
82
90
|
const EMPTY_SKIPPED_APPROVAL_IDS = [];
|
|
83
91
|
function createApprovalSessionState(thinkStub) {
|
|
@@ -133,12 +141,13 @@ function AgentChatAssistantActions({ message, responseNumber, showCopy, showRetr
|
|
|
133
141
|
label: `Copy response ${responseNumber}`,
|
|
134
142
|
tooltip: "Copy response",
|
|
135
143
|
text: copyText,
|
|
136
|
-
size: "
|
|
144
|
+
size: "xs",
|
|
137
145
|
onCopy: () => onCopyStatus(`Response ${responseNumber} copied.`),
|
|
138
146
|
onError: () => onCopyStatus(`Could not copy response ${responseNumber}. Try again.`)
|
|
139
147
|
}) : null, hasRetry ? /* @__PURE__ */ jsx(MessageAction, {
|
|
140
148
|
label: "Retry",
|
|
141
149
|
tooltip: "Regenerate response",
|
|
150
|
+
size: "xs",
|
|
142
151
|
onClick: () => onRegenerate(message.id),
|
|
143
152
|
children: /* @__PURE__ */ jsx(RefreshIcon, { size: 14 })
|
|
144
153
|
}) : null]
|
|
@@ -164,6 +173,8 @@ function isCompactedPart(message, partIndex) {
|
|
|
164
173
|
* "Transcript rendering performance" in docs/think-chat.md.
|
|
165
174
|
*/
|
|
166
175
|
function AgentChatTranscriptRowBodyImpl({ message, messageIndex, status, renderPart, renderMessageAfter, editing, canEdit, editDisabled, onEditAndResend, onStartEdit, onCancelEdit, onFinishEdit, editButtonRef, responseNumber, showAssistantActions, showCopy, showRetry, onRegenerate, onCopyStatus }) {
|
|
176
|
+
const messageTime = getAgentChatMessageTime(message);
|
|
177
|
+
const userText = getEditableUserText(message);
|
|
167
178
|
return /* @__PURE__ */ jsx(Fragment, { children: isCompactionMessage(message) ? /* @__PURE__ */ jsx(Marker, {
|
|
168
179
|
variant: "separator",
|
|
169
180
|
children: /* @__PURE__ */ jsx(MarkerContent, { children: "Context compacted" })
|
|
@@ -193,20 +204,32 @@ function AgentChatTranscriptRowBodyImpl({ message, messageIndex, status, renderP
|
|
|
193
204
|
message,
|
|
194
205
|
messageIndex
|
|
195
206
|
}),
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
207
|
+
message.role === "user" && (messageTime !== void 0 || userText !== void 0) ? /* @__PURE__ */ jsxs(MessageMeta, { children: [
|
|
208
|
+
messageTime ? /* @__PURE__ */ jsx(MessageTimestamp, { date: messageTime }) : null,
|
|
209
|
+
userText ? /* @__PURE__ */ jsx(CopyButton, {
|
|
210
|
+
className: "message__action",
|
|
211
|
+
label: `Copy message ${messageIndex + 1}`,
|
|
212
|
+
tooltip: "Copy message",
|
|
213
|
+
text: userText,
|
|
214
|
+
size: "xs",
|
|
215
|
+
onCopy: () => onCopyStatus(`Message ${messageIndex + 1} copied.`),
|
|
216
|
+
onError: () => onCopyStatus(`Could not copy message ${messageIndex + 1}. Try again.`)
|
|
217
|
+
}) : null,
|
|
218
|
+
canEdit && userText ? /* @__PURE__ */ jsx(MessageActions, {
|
|
219
|
+
"aria-label": "Message actions",
|
|
220
|
+
"aria-hidden": editDisabled || void 0,
|
|
221
|
+
"data-unavailable": editDisabled || void 0,
|
|
222
|
+
children: /* @__PURE__ */ jsx(MessageAction, {
|
|
223
|
+
ref: editButtonRef,
|
|
224
|
+
disabled: editDisabled,
|
|
225
|
+
label: "Edit message",
|
|
226
|
+
tooltip: "Edit and resend",
|
|
227
|
+
size: "xs",
|
|
228
|
+
onClick: () => onStartEdit(message.id),
|
|
229
|
+
children: /* @__PURE__ */ jsx(PencilIcon, {})
|
|
230
|
+
})
|
|
231
|
+
}) : null
|
|
232
|
+
] }) : null,
|
|
210
233
|
showAssistantActions ? /* @__PURE__ */ jsx(AgentChatAssistantActions, {
|
|
211
234
|
message,
|
|
212
235
|
responseNumber,
|
|
@@ -658,6 +681,7 @@ function AgentChat({ className, messages, status = "ready", onSubmit, showCompos
|
|
|
658
681
|
ref,
|
|
659
682
|
variant: "fade",
|
|
660
683
|
className: cx("agent-chat", className),
|
|
684
|
+
"data-recipe": "fill-host",
|
|
661
685
|
"data-composer-hidden": showComposer ? void 0 : "",
|
|
662
686
|
children: [
|
|
663
687
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolEventsValue, o as useSourceScopedAgentToolEvents, r as AgentToolRunsProvider, t as AgentToolEventSource } from "../../AgentToolRunsContext-
|
|
1
|
+
import { a as useOptionalAgentToolRuns, i as AgentToolRunsProviderProps, n as AgentToolEventsValue, o as useSourceScopedAgentToolEvents, r as AgentToolRunsProvider, t as AgentToolEventSource } from "../../AgentToolRunsContext-daY67hFM.js";
|
|
2
2
|
export { AgentToolEventSource, AgentToolEventsValue, AgentToolRunsProvider, AgentToolRunsProviderProps, useOptionalAgentToolRuns, useSourceScopedAgentToolEvents };
|
|
@@ -10,6 +10,18 @@ import { useAgentToolEvents } from "agents/react";
|
|
|
10
10
|
* once per socket connect, so a later mount misses existing runs — and share
|
|
11
11
|
* the one value with every surface that reads runs (the chat shell and a
|
|
12
12
|
* run-detail route read the same projection, never two subscriptions).
|
|
13
|
+
*
|
|
14
|
+
* The subscription's listener attaches in a passive effect, after paint. A
|
|
15
|
+
* host whose transport is in-process (the browser extension's port bridge)
|
|
16
|
+
* can complete the connect and deliver the replay before that effect runs —
|
|
17
|
+
* reliably so on a hot return from a drill-in. Upstream owns the fix:
|
|
18
|
+
* `useAgent` buffers `agent-tool-event` frames from socket construction and
|
|
19
|
+
* `useAgentToolEvents` drains them when its listener attaches (agents >
|
|
20
|
+
* 0.20.1; `_bufferAgentToolReplayFrame` is the seam for a non-`useAgent`
|
|
21
|
+
* socket). On older versions such hosts must buffer and re-dispatch
|
|
22
|
+
* themselves — think-browser-host's `useThinkAgentToolEvents` is that
|
|
23
|
+
* interim shim. Network transports are not affected in practice: the round
|
|
24
|
+
* trip loses to the effect flush.
|
|
13
25
|
*/
|
|
14
26
|
function useSourceScopedAgentToolEvents(agent) {
|
|
15
27
|
const agentTools = useAgentToolEvents({ agent });
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/agents-sdk/BrowserLiveScreen.d.ts
|
|
4
|
+
/** One claimed tab, as the synced claim records describe it. */
|
|
5
|
+
type BrowserLiveScreenTab = {
|
|
6
|
+
tabId: number;
|
|
7
|
+
title?: string;
|
|
8
|
+
url?: string;
|
|
9
|
+
};
|
|
10
|
+
type BrowserLiveScreenSignal = {
|
|
11
|
+
viewerId: string;
|
|
12
|
+
payload: BrowserLiveScreenSignalPayload;
|
|
13
|
+
};
|
|
14
|
+
type BrowserLiveScreenSignalPayload = {
|
|
15
|
+
kind: "offer";
|
|
16
|
+
sdp: string;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "answer";
|
|
19
|
+
sdp: string;
|
|
20
|
+
} | {
|
|
21
|
+
kind: "candidate";
|
|
22
|
+
candidate: RTCIceCandidateInit;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "close";
|
|
25
|
+
};
|
|
26
|
+
type BrowserLiveScreenFrameMetadata = {
|
|
27
|
+
deviceWidth: number;
|
|
28
|
+
deviceHeight: number;
|
|
29
|
+
offsetTop: number;
|
|
30
|
+
};
|
|
31
|
+
type BrowserLiveScreenStatus = {
|
|
32
|
+
kind: "streaming";
|
|
33
|
+
tabId: number;
|
|
34
|
+
streamGeneration: number;
|
|
35
|
+
metadata: BrowserLiveScreenFrameMetadata;
|
|
36
|
+
pageUrl?: string;
|
|
37
|
+
pageTitle?: string;
|
|
38
|
+
} | {
|
|
39
|
+
kind: "idle";
|
|
40
|
+
} | {
|
|
41
|
+
kind: "error";
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
type BrowserLiveScreenInputEvent = {
|
|
45
|
+
kind: "mouse";
|
|
46
|
+
type: "mousePressed" | "mouseReleased" | "mouseMoved" | "mouseWheel";
|
|
47
|
+
x: number;
|
|
48
|
+
y: number;
|
|
49
|
+
button?: "none" | "left" | "middle" | "right" | "back" | "forward";
|
|
50
|
+
buttons?: number;
|
|
51
|
+
clickCount?: number;
|
|
52
|
+
deltaX?: number;
|
|
53
|
+
deltaY?: number;
|
|
54
|
+
modifiers?: number;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "key";
|
|
57
|
+
type: "keyDown" | "keyUp" | "rawKeyDown";
|
|
58
|
+
key?: string;
|
|
59
|
+
code?: string;
|
|
60
|
+
windowsVirtualKeyCode?: number;
|
|
61
|
+
text?: string;
|
|
62
|
+
modifiers?: number;
|
|
63
|
+
} | {
|
|
64
|
+
kind: "text";
|
|
65
|
+
text: string;
|
|
66
|
+
};
|
|
67
|
+
type BrowserLiveScreenInput = {
|
|
68
|
+
tabId: number;
|
|
69
|
+
streamGeneration: number;
|
|
70
|
+
events: BrowserLiveScreenInputEvent[];
|
|
71
|
+
};
|
|
72
|
+
type BrowserLiveScreenCommand = {
|
|
73
|
+
kind: "selectTab";
|
|
74
|
+
tabId: number;
|
|
75
|
+
} | {
|
|
76
|
+
kind: "navigate";
|
|
77
|
+
tabId: number;
|
|
78
|
+
action: "back" | "reload";
|
|
79
|
+
} | {
|
|
80
|
+
kind: "open";
|
|
81
|
+
tabId: number;
|
|
82
|
+
url: string;
|
|
83
|
+
};
|
|
84
|
+
interface BrowserLiveScreenProtocol {
|
|
85
|
+
/** Data-channel label understood by the employee machine. */
|
|
86
|
+
dataChannelLabel: string;
|
|
87
|
+
/** Parses one machine status message; return null for unrelated data. */
|
|
88
|
+
parseStatus(this: void, value: unknown): BrowserLiveScreenStatus | null;
|
|
89
|
+
/** Serializes an exact-tab remote-input envelope for the employee machine. */
|
|
90
|
+
serializeInput(this: void, input: BrowserLiveScreenInput): string;
|
|
91
|
+
/** Serializes one drawn-browser command for the employee machine. */
|
|
92
|
+
serializeCommand(this: void, command: BrowserLiveScreenCommand): string;
|
|
93
|
+
}
|
|
94
|
+
interface BrowserLiveScreenProps {
|
|
95
|
+
/** Sends one opaque WebRTC signaling payload through the host's existing transport. */
|
|
96
|
+
sendSignal(this: void, signal: BrowserLiveScreenSignal): Promise<void>;
|
|
97
|
+
/** Subscribes to signaling payloads arriving from the employee machine. */
|
|
98
|
+
subscribeSignals(this: void, listener: (signal: BrowserLiveScreenSignal) => void): () => void;
|
|
99
|
+
/** Adapts the host's existing data-channel wire format. */
|
|
100
|
+
protocol: BrowserLiveScreenProtocol;
|
|
101
|
+
/** ICE servers for this viewer's peer. Absent means STUN-free loopback,
|
|
102
|
+
* which is what the extension side panel is. */
|
|
103
|
+
getIceServers?(this: void): Promise<RTCIceServer[]>;
|
|
104
|
+
/** Accessible name and visible label for the drawn browser panel. */
|
|
105
|
+
label?: ReactNode;
|
|
106
|
+
/** Accessible name for the transparent remote-input surface. */
|
|
107
|
+
controlLabel?: string;
|
|
108
|
+
/**
|
|
109
|
+
* The employee's claimed tabs, from the synchronized claim records. They are
|
|
110
|
+
* the drawn tab strip: the browser chrome around the stream is synthesized
|
|
111
|
+
* from state, because Chrome's screencast carries only page pixels.
|
|
112
|
+
*/
|
|
113
|
+
tabs?: readonly BrowserLiveScreenTab[];
|
|
114
|
+
/** Claimed tab the host wants visible when the data channel becomes usable. */
|
|
115
|
+
requestedTabId?: number;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A complete interactive viewer for an employee's claimed browser tabs.
|
|
119
|
+
*
|
|
120
|
+
* The host supplies only signaling transport, ICE configuration, and claimed
|
|
121
|
+
* tab summaries. This component owns the peer connection, remote-input
|
|
122
|
+
* mapping, reconnect lifecycle, synthesized browser chrome, and cleanup.
|
|
123
|
+
*/
|
|
124
|
+
declare function BrowserLiveScreen({
|
|
125
|
+
sendSignal: sendHostSignal,
|
|
126
|
+
subscribeSignals,
|
|
127
|
+
protocol,
|
|
128
|
+
getIceServers,
|
|
129
|
+
label,
|
|
130
|
+
controlLabel,
|
|
131
|
+
tabs,
|
|
132
|
+
requestedTabId
|
|
133
|
+
}: BrowserLiveScreenProps): import("react").JSX.Element;
|
|
134
|
+
//#endregion
|
|
135
|
+
export { BrowserLiveScreen, BrowserLiveScreenCommand, BrowserLiveScreenFrameMetadata, BrowserLiveScreenInput, BrowserLiveScreenInputEvent, BrowserLiveScreenProps, BrowserLiveScreenProtocol, BrowserLiveScreenSignal, BrowserLiveScreenSignalPayload, BrowserLiveScreenStatus, BrowserLiveScreenTab };
|