@mcp-b/react-components 0.46.3 → 0.46.4
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/{McpConnectorForm-BETdVBRk.d.ts → McpConnectorForm-CeYNY0MI.d.ts} +1 -1
- package/dist/{McpPluginCatalog-C6ip9IvL.d.ts → McpPluginCatalog-3qWu8oK1.d.ts} +2 -2
- package/dist/assets/browser-control-cursor.png +0 -0
- package/dist/components/agents-sdk/ManagerOffice.d.ts +5 -17
- package/dist/components/agents-sdk/ManagerOffice.js +11 -1
- package/dist/components/agents-sdk/McpConnectionRequest.d.ts +1 -1
- package/dist/components/agents-sdk/McpConnectorForm.d.ts +1 -1
- package/dist/components/agents-sdk/McpPluginCatalog.d.ts +1 -1
- package/dist/components/agents-sdk/McpServerPicker.d.ts +2 -2
- package/dist/components/agents-sdk/ThinkFullApp.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkSidepanel.d.ts +1 -1
- package/dist/components/agents-sdk/ThinkSidepanel.js +1 -1
- package/dist/{mcp-server-catalog-Cbu483Zb.d.ts → mcp-server-catalog-C_g7C-9o.d.ts} +24 -0
- package/dist/styles/browser-control-overlay.css +46 -80
- package/dist/styles/extension-status.css +46 -0
- package/dist/styles/index.css +0 -1
- package/dist/utils/mcp-server-catalog.d.ts +1 -1
- package/dist/utils/mcp-server-catalog.js +69 -1
- package/package.json +3 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "./mcp-server-catalog-
|
|
1
|
+
import { d as McpServerSetupAuthFieldName, l as McpServerSetupAuth } from "./mcp-server-catalog-C_g7C-9o.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
|
|
4
4
|
//#region src/components/agents-sdk/McpConnectorForm.d.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { o as McpServerCard } from "./mcp-server-catalog-
|
|
2
|
-
import { r as McpConnectorFormValues } from "./McpConnectorForm-
|
|
1
|
+
import { o as McpServerCard } from "./mcp-server-catalog-C_g7C-9o.js";
|
|
2
|
+
import { r as McpConnectorFormValues } from "./McpConnectorForm-CeYNY0MI.js";
|
|
3
3
|
import { l as DialogProps } from "./Dialog-B_FhRWaz.js";
|
|
4
4
|
import * as React from "react";
|
|
5
5
|
import { MCPServersState } from "agents";
|
|
Binary file
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { n as ResponsiveSidebarShell } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
|
|
2
|
+
import { ThinkRoutine } from "./ThinkRoutine.js";
|
|
2
3
|
import * as React from "react";
|
|
3
4
|
|
|
4
5
|
//#region src/components/agents-sdk/ManagerOffice.d.ts
|
|
@@ -44,20 +45,6 @@ interface ManagerOfficeWork {
|
|
|
44
45
|
/** Unix timestamp in milliseconds of the latest lifecycle transition. */
|
|
45
46
|
updatedAt: number;
|
|
46
47
|
}
|
|
47
|
-
interface ManagerOfficeRoutine {
|
|
48
|
-
/** Stable routine identity. */
|
|
49
|
-
id: string;
|
|
50
|
-
/** Human-readable recurring responsibility. */
|
|
51
|
-
name: string;
|
|
52
|
-
/** Human-readable schedule supplied by the host. */
|
|
53
|
-
schedule: string;
|
|
54
|
-
/** Whether future occurrences are enabled. */
|
|
55
|
-
enabled: boolean;
|
|
56
|
-
/** Completed runs among the bounded recent run history. */
|
|
57
|
-
completedRuns: number;
|
|
58
|
-
/** Terminal runs among the bounded recent run history. */
|
|
59
|
-
finishedRuns: number;
|
|
60
|
-
}
|
|
61
48
|
/** Which way work moves through a channel, from the employee's side. */
|
|
62
49
|
type ManagerOfficeChannelDirection = "input" | "output" | "both";
|
|
63
50
|
type ManagerOfficeChannelStatus = "connected" | "needs-auth" | "error";
|
|
@@ -117,7 +104,8 @@ interface ManagerOfficeConnectedEmployee extends ManagerOfficeEmployeeBase {
|
|
|
117
104
|
role: string;
|
|
118
105
|
handoffs: readonly ManagerOfficeHandoff[];
|
|
119
106
|
work: readonly ManagerOfficeWork[];
|
|
120
|
-
routines
|
|
107
|
+
/** Whole upstream-backed routines, including their native task, schedule, and runs. */
|
|
108
|
+
routines: readonly ThinkRoutine[];
|
|
121
109
|
/** Every service the employee reads from or acts on. Empty is meaningful. */
|
|
122
110
|
channels: readonly ManagerOfficeChannel[];
|
|
123
111
|
/** The live tab the manager can glance at from the office. */
|
|
@@ -151,7 +139,7 @@ type ManagerOfficeDestination = {
|
|
|
151
139
|
} | {
|
|
152
140
|
kind: "routine";
|
|
153
141
|
employee: ManagerOfficeConnectedEmployee;
|
|
154
|
-
routine:
|
|
142
|
+
routine: ThinkRoutine;
|
|
155
143
|
} | {
|
|
156
144
|
kind: "new-work";
|
|
157
145
|
employee: ManagerOfficeConnectedEmployee;
|
|
@@ -260,4 +248,4 @@ declare function ManagerOffice({
|
|
|
260
248
|
...props
|
|
261
249
|
}: ManagerOfficeProps): React.JSX.Element;
|
|
262
250
|
//#endregion
|
|
263
|
-
export { ManagerOffice, ManagerOfficeAnalyticsPoint, ManagerOfficeBrowserPreview, ManagerOfficeChannel, ManagerOfficeChannelDirection, ManagerOfficeChannelStatus, ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeDisconnectedEmployee, ManagerOfficeEmployee, ManagerOfficeEmployeeAnalytics, ManagerOfficeEmployeeStatus, ManagerOfficeHandoff, ManagerOfficeProps, ManagerOfficeReportSelection,
|
|
251
|
+
export { ManagerOffice, ManagerOfficeAnalyticsPoint, ManagerOfficeBrowserPreview, ManagerOfficeChannel, ManagerOfficeChannelDirection, ManagerOfficeChannelStatus, ManagerOfficeConnectedEmployee, ManagerOfficeDestination, ManagerOfficeDisconnectedEmployee, ManagerOfficeEmployee, ManagerOfficeEmployeeAnalytics, ManagerOfficeEmployeeStatus, ManagerOfficeHandoff, ManagerOfficeProps, ManagerOfficeReportSelection, ManagerOfficeSidebar, ManagerOfficeSidebarAlert, ManagerOfficeSidebarAlertProps, ManagerOfficeSidebarProps, ManagerOfficeView, ManagerOfficeWork, ManagerOfficeWorkStatus };
|
|
@@ -15,6 +15,7 @@ import { LinkButton } from "../foundations/LinkButton.js";
|
|
|
15
15
|
import "../foundations/icons.js";
|
|
16
16
|
import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
17
17
|
import { ResponsiveSidebarShell } from "../general-purpose/ResponsiveSidebarShell.js";
|
|
18
|
+
import { getThinkExecutionRunStatus } from "./ThinkExecutionRun.js";
|
|
18
19
|
import * as React from "react";
|
|
19
20
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
20
21
|
//#region src/components/_internal/chrome-profile-colors.ts
|
|
@@ -354,6 +355,15 @@ function relativeTime(timestamp, now) {
|
|
|
354
355
|
if (elapsed < day) return `${Math.floor(elapsed / hour)}h`;
|
|
355
356
|
return `${Math.floor(elapsed / day)}d`;
|
|
356
357
|
}
|
|
358
|
+
function routineDetail(routine) {
|
|
359
|
+
const schedule = routine.enabled ? routine.task.schedule : `Paused · ${routine.task.schedule}`;
|
|
360
|
+
const finishedRuns = routine.runs.filter((run) => run.completedAt != null);
|
|
361
|
+
if (!finishedRuns.length) return schedule;
|
|
362
|
+
return `${schedule} · ${finishedRuns.filter((run) => {
|
|
363
|
+
const status = getThinkExecutionRunStatus(run);
|
|
364
|
+
return status === "completed" || status === "complete";
|
|
365
|
+
}).length} of ${finishedRuns.length} recent runs completed`;
|
|
366
|
+
}
|
|
357
367
|
function Timestamp({ now, timestamp }) {
|
|
358
368
|
const date = new Date(timestamp);
|
|
359
369
|
return /* @__PURE__ */ jsx("time", {
|
|
@@ -1598,7 +1608,7 @@ function EmployeeDetail({ employee, renderLink, now, profileColor }) {
|
|
|
1598
1608
|
children: routine.name
|
|
1599
1609
|
}), /* @__PURE__ */ jsx("small", {
|
|
1600
1610
|
className: "sigvelo-truncate",
|
|
1601
|
-
children: routine
|
|
1611
|
+
children: routineDetail(routine)
|
|
1602
1612
|
})]
|
|
1603
1613
|
}),
|
|
1604
1614
|
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "manager-office__row-chevron" })
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as McpServerCard } from "../../mcp-server-catalog-
|
|
1
|
+
import { o as McpServerCard } from "../../mcp-server-catalog-C_g7C-9o.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { DynamicToolUIPart, ToolUIPart } from "ai";
|
|
4
4
|
import { MCPServersState } from "agents";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as McpConnectorFormProps, r as McpConnectorFormValues, t as McpConnectorForm } from "../../McpConnectorForm-
|
|
1
|
+
import { n as McpConnectorFormProps, r as McpConnectorFormValues, t as McpConnectorForm } from "../../McpConnectorForm-CeYNY0MI.js";
|
|
2
2
|
export { McpConnectorForm, McpConnectorFormProps, McpConnectorFormValues };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as McpPluginDetailsDialogProps, i as McpPluginDetailsDialog, n as McpPluginCatalogProps, r as McpPluginDetails, t as McpPluginCatalog } from "../../McpPluginCatalog-
|
|
1
|
+
import { a as McpPluginDetailsDialogProps, i as McpPluginDetailsDialog, n as McpPluginCatalogProps, r as McpPluginDetails, t as McpPluginCatalog } from "../../McpPluginCatalog-3qWu8oK1.js";
|
|
2
2
|
export { McpPluginCatalog, McpPluginCatalogProps, McpPluginDetails, McpPluginDetailsDialog, McpPluginDetailsDialogProps };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { s as MenuItemProps, t as Menu } from "../../Menu-yb6QXWA3.js";
|
|
2
|
-
import { o as McpServerCard } from "../../mcp-server-catalog-
|
|
3
|
-
import { n as McpConnectorFormProps } from "../../McpConnectorForm-
|
|
2
|
+
import { o as McpServerCard } from "../../mcp-server-catalog-C_g7C-9o.js";
|
|
3
|
+
import { n as McpConnectorFormProps } from "../../McpConnectorForm-CeYNY0MI.js";
|
|
4
4
|
import { l as DialogProps } from "../../Dialog-B_FhRWaz.js";
|
|
5
5
|
import * as React from "react";
|
|
6
6
|
import { MCPServersState } from "agents";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { l as WorkspaceNavigationAdapter } from "../../WorkspaceLink-Bh9-Jo1r.js";
|
|
2
2
|
import { n as AgentToolEventsValue } from "../../AgentToolRunsContext-jtmveaRE.js";
|
|
3
3
|
import { n as ResponsiveSidebarShell, t as AppBarSlots } from "../../ResponsiveSidebarShell-BTVPxLJK.js";
|
|
4
|
-
import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-
|
|
4
|
+
import { n as McpPluginCatalogProps } from "../../McpPluginCatalog-3qWu8oK1.js";
|
|
5
5
|
import { ThinkChatMessagesProps } from "./ThinkChat.js";
|
|
6
6
|
import { ThinkThreadStatusSummary } from "./ThinkThreadPicker.js";
|
|
7
7
|
import { r as WorkspaceFileAssetResolver } from "../../WorkspaceFile-Dq-GC0_T.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { ThinkRoutine } from "./ThinkRoutine.js";
|
|
1
2
|
import { ThinkChatDraft } from "./ThinkChat.js";
|
|
2
3
|
import { ThinkThreadItem } from "./ThinkThreadPicker.js";
|
|
3
4
|
import { ThinkFullAppAgent, ThinkFullAppConversation, ThinkFullAppProps } from "./ThinkFullApp.js";
|
|
4
|
-
import { ThinkRoutine } from "./ThinkRoutine.js";
|
|
5
5
|
import { SetupChecklistEntry } from "../general-purpose/SetupChecklist.js";
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { UIMessage } from "ai";
|
|
@@ -18,8 +18,8 @@ import { AppTopBar } from "../general-purpose/AppTopBar.js";
|
|
|
18
18
|
import { t as SetupChecklistAction } from "../../SetupChecklist-DyPZWzK2.js";
|
|
19
19
|
import { NaniteMark } from "../nanites/NaniteScene.js";
|
|
20
20
|
import { SubagentRunLabel } from "./SubagentRunIndicator.js";
|
|
21
|
-
import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
|
|
22
21
|
import { getThinkExecutionRunId } from "./ThinkExecutionRun.js";
|
|
22
|
+
import { McpServerPickerAction, McpServerPickerItems } from "./McpServerPicker.js";
|
|
23
23
|
import { ThinkThreadPicker, summarizeThinkThreads } from "./ThinkThreadPicker.js";
|
|
24
24
|
import { ThinkFullApp } from "./ThinkFullApp.js";
|
|
25
25
|
import { ThinkRoutineLibrary } from "./ThinkRoutineLibrary.js";
|
|
@@ -420,6 +420,30 @@ declare const MANUAL_MCP_SERVER_CARDS: readonly [{
|
|
|
420
420
|
readonly url: "https://developers.asana.com/docs/connecting-mcp-clients-to-asanas-v2-server";
|
|
421
421
|
}];
|
|
422
422
|
};
|
|
423
|
+
}, {
|
|
424
|
+
readonly id: "github";
|
|
425
|
+
readonly name: "GitHub";
|
|
426
|
+
readonly url: "https://api.githubcopilot.com/mcp/";
|
|
427
|
+
readonly description: "Clone, push, and open pull requests as a connected GitHub account";
|
|
428
|
+
readonly category: "Manual";
|
|
429
|
+
readonly manualSetup: {
|
|
430
|
+
readonly auth: {
|
|
431
|
+
readonly type: "bearer";
|
|
432
|
+
readonly label: "Personal access token (classic)";
|
|
433
|
+
readonly fields: readonly [{
|
|
434
|
+
readonly name: "bearerToken";
|
|
435
|
+
readonly label: "Personal access token";
|
|
436
|
+
readonly inputType: "password";
|
|
437
|
+
readonly placeholder: "ghp_…";
|
|
438
|
+
readonly required: true;
|
|
439
|
+
}];
|
|
440
|
+
};
|
|
441
|
+
readonly description: "Paste a classic personal access token with all scopes from the agent's own GitHub account — the account is the access boundary. Git and the GitHub API both authenticate as this account.";
|
|
442
|
+
readonly links: readonly [{
|
|
443
|
+
readonly label: "Create a classic token";
|
|
444
|
+
readonly url: "https://github.com/settings/tokens";
|
|
445
|
+
}];
|
|
446
|
+
};
|
|
423
447
|
}, {
|
|
424
448
|
readonly id: "gmail";
|
|
425
449
|
readonly name: "Gmail";
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/*
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* Browser-control chrome, mounted in a closed shadow root on someone else's
|
|
3
|
+
* page. This standalone design-system leaf is isolated by `:host { all:
|
|
4
|
+
* initial }`, so it shares no variable, scale, or primitive with the document
|
|
5
|
+
* stylesheet.
|
|
5
6
|
*
|
|
6
|
-
* Every length
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Every length is a literal on purpose. A --sigvelo-* reference here resolves
|
|
8
|
+
* to nothing and silently takes its whole declaration with it, and only on a
|
|
9
|
+
* real host page — the one place that is hardest to notice. Keep the values on
|
|
10
|
+
* the 4px grid by hand.
|
|
11
|
+
*
|
|
12
|
+
* System colors keep the chrome legible on an arbitrary page's palette and in
|
|
13
|
+
* forced-colors mode.
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
:host {
|
|
14
17
|
--browser-control-accent: Highlight;
|
|
15
|
-
--browser-control-accent-text: HighlightText;
|
|
16
18
|
--browser-control-warning: Mark;
|
|
17
19
|
--browser-control-warning-text: MarkText;
|
|
18
20
|
--browser-control-shadow: color-mix(in srgb, CanvasText 28%, transparent);
|
|
@@ -31,50 +33,56 @@
|
|
|
31
33
|
z-index: 2147483647;
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
/*
|
|
37
|
+
* Only the waiting mode draws an edge. A tab under agent control is identified
|
|
38
|
+
* by its pointer; a border around the whole viewport reads as an error state
|
|
39
|
+
* and hides the page's own chrome. Waiting is the exception because the page
|
|
40
|
+
* is being handed back and the user has to notice.
|
|
41
|
+
*/
|
|
34
42
|
:host .frame {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
43
|
+
box-shadow:
|
|
44
|
+
inset 0 0 0 3px var(--browser-control-warning),
|
|
45
|
+
inset 0 0 24px color-mix(in srgb, var(--browser-control-warning) 32%, transparent);
|
|
38
46
|
box-sizing: border-box;
|
|
39
47
|
inset: 0;
|
|
40
48
|
pointer-events: none;
|
|
41
49
|
position: fixed;
|
|
42
50
|
}
|
|
43
51
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
/*
|
|
53
|
+
* The pointer artwork. The file is cropped to its alpha, and the alpha includes
|
|
54
|
+
* the soft white halo -- so the arrow's ink apex, which is what the eye reads as
|
|
55
|
+
* the point, sits 5px into a 40x41 image, or 3.41px once `contain` renders it
|
|
56
|
+
* 28px tall. The box is offset by that much and the pivot moved onto it, so the
|
|
57
|
+
* apex lands on the page's pointer and every rotation the planner emits turns
|
|
58
|
+
* about it. Shifting the background instead would do the same thing and clip the
|
|
59
|
+
* halo off the leading edge.
|
|
60
|
+
*
|
|
61
|
+
* Position comes from the Web Animations API during a move and from
|
|
62
|
+
* --think-cursor-x/y at rest; no transform transition, since a CSS transition
|
|
63
|
+
* and a script-driven animation would fight over the same property.
|
|
64
|
+
*/
|
|
50
65
|
:host .cursor {
|
|
51
|
-
|
|
66
|
+
background: url(../assets/browser-control-cursor.png) no-repeat 0 0 / contain;
|
|
67
|
+
/* Two shadows rather than one: a tight halo that separates the artwork from
|
|
68
|
+
whatever it is over, and a wide one that reads as the accent glow. */
|
|
69
|
+
filter: drop-shadow(0 0 6px color-mix(in srgb, var(--browser-control-accent) 90%, transparent))
|
|
70
|
+
drop-shadow(0 0 15px color-mix(in srgb, var(--browser-control-accent) 48%, transparent));
|
|
52
71
|
height: 28px;
|
|
53
|
-
left:
|
|
54
|
-
opacity: 0;
|
|
72
|
+
left: -3.41px;
|
|
55
73
|
pointer-events: none;
|
|
56
74
|
position: fixed;
|
|
57
|
-
top:
|
|
75
|
+
top: -3.41px;
|
|
58
76
|
transform: translate3d(var(--think-cursor-x, 16px), var(--think-cursor-y, 16px), 0);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
77
|
+
/* The ink apex, not the box corner and not the centre. The offset above puts
|
|
78
|
+
this point on the pointer, and the body swings around it. */
|
|
79
|
+
transform-origin: 3.41px 3.41px;
|
|
62
80
|
width: 28px;
|
|
63
81
|
}
|
|
64
82
|
|
|
65
|
-
:host .cursor.visible {
|
|
66
|
-
opacity: 1;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
:host .cursor path {
|
|
70
|
-
fill: var(--browser-control-accent);
|
|
71
|
-
stroke: var(--browser-control-accent-text);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
83
|
:host button {
|
|
75
84
|
appearance: none;
|
|
76
85
|
border-radius: 999px;
|
|
77
|
-
box-shadow: 0 2px 10px var(--browser-control-shadow);
|
|
78
86
|
cursor: pointer;
|
|
79
87
|
font:
|
|
80
88
|
600 12px/1.2 system-ui,
|
|
@@ -92,41 +100,6 @@
|
|
|
92
100
|
opacity: 0.72;
|
|
93
101
|
}
|
|
94
102
|
|
|
95
|
-
:host .takeover,
|
|
96
|
-
:host .owner {
|
|
97
|
-
background: var(--browser-control-accent);
|
|
98
|
-
border: solid 1px var(--browser-control-accent-text);
|
|
99
|
-
box-shadow: 0 2px 10px var(--browser-control-shadow);
|
|
100
|
-
color: var(--browser-control-accent-text);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
:host .takeover {
|
|
104
|
-
pointer-events: none;
|
|
105
|
-
position: fixed;
|
|
106
|
-
right: 10px;
|
|
107
|
-
top: 10px;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
:host .takeover.takeover-armed {
|
|
111
|
-
pointer-events: auto;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
:host .owner {
|
|
115
|
-
border-radius: 999px;
|
|
116
|
-
font:
|
|
117
|
-
600 12px/1.2 system-ui,
|
|
118
|
-
sans-serif;
|
|
119
|
-
left: 10px;
|
|
120
|
-
max-width: min(360px, 60vw);
|
|
121
|
-
overflow: hidden;
|
|
122
|
-
padding: 8px 12px;
|
|
123
|
-
pointer-events: none;
|
|
124
|
-
position: fixed;
|
|
125
|
-
text-overflow: ellipsis;
|
|
126
|
-
top: 10px;
|
|
127
|
-
white-space: nowrap;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
103
|
:host .banner {
|
|
131
104
|
align-items: center;
|
|
132
105
|
background: var(--browser-control-warning);
|
|
@@ -158,6 +131,7 @@
|
|
|
158
131
|
:host .banner .done,
|
|
159
132
|
:host .banner .cannot {
|
|
160
133
|
border: solid 1px currentcolor;
|
|
134
|
+
box-shadow: 0 2px 10px var(--browser-control-shadow);
|
|
161
135
|
color: inherit;
|
|
162
136
|
flex-shrink: 0;
|
|
163
137
|
}
|
|
@@ -171,12 +145,6 @@
|
|
|
171
145
|
box-shadow: none;
|
|
172
146
|
}
|
|
173
147
|
|
|
174
|
-
@media (prefers-reduced-motion: reduce) {
|
|
175
|
-
:host .cursor {
|
|
176
|
-
transition: none;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
148
|
@media print {
|
|
181
149
|
:host {
|
|
182
150
|
display: none !important;
|
|
@@ -184,10 +152,8 @@
|
|
|
184
152
|
}
|
|
185
153
|
|
|
186
154
|
@media (forced-colors: active) {
|
|
187
|
-
:host .frame,
|
|
188
|
-
:host .takeover,
|
|
189
|
-
:host .owner,
|
|
190
155
|
:host .banner {
|
|
191
|
-
|
|
156
|
+
background: Canvas;
|
|
157
|
+
color: CanvasText;
|
|
192
158
|
}
|
|
193
159
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Standalone extension interstitial. It intentionally does not load the token
|
|
3
|
+
* cascade; system colors follow the user's light, dark, and forced-color theme.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.extension-status-page {
|
|
7
|
+
background: Canvas;
|
|
8
|
+
color: CanvasText;
|
|
9
|
+
color-scheme: light dark;
|
|
10
|
+
display: grid;
|
|
11
|
+
font:
|
|
12
|
+
0.875rem/1.5 system-ui,
|
|
13
|
+
-apple-system,
|
|
14
|
+
BlinkMacSystemFont,
|
|
15
|
+
"Segoe UI",
|
|
16
|
+
Roboto,
|
|
17
|
+
sans-serif;
|
|
18
|
+
margin: 0;
|
|
19
|
+
min-block-size: 100dvb;
|
|
20
|
+
place-items: center;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.extension-status {
|
|
24
|
+
/* Mirrors --sigvelo-layout-gutter without loading the document token sheet. */
|
|
25
|
+
display: grid;
|
|
26
|
+
gap: 0.75rem;
|
|
27
|
+
justify-items: center;
|
|
28
|
+
max-inline-size: 30rem;
|
|
29
|
+
padding: 0.75rem;
|
|
30
|
+
text-align: center;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.extension-status h1 {
|
|
34
|
+
font-size: inherit;
|
|
35
|
+
font-weight: 600;
|
|
36
|
+
margin: 0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.extension-status p {
|
|
40
|
+
color: GrayText;
|
|
41
|
+
margin: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.extension-status button {
|
|
45
|
+
font: inherit;
|
|
46
|
+
}
|
package/dist/styles/index.css
CHANGED
|
@@ -86,7 +86,6 @@
|
|
|
86
86
|
@import "./artifact.css" layer(components);
|
|
87
87
|
@import "./browser-live-view.css" layer(components);
|
|
88
88
|
@import "./browser-live-screen.css" layer(components);
|
|
89
|
-
@import "./browser-control-overlay.css" layer(components);
|
|
90
89
|
@import "./browser-run-panel.css" layer(components);
|
|
91
90
|
@import "./chain-of-thought.css" layer(components);
|
|
92
91
|
@import "./checkpoint.css" layer(components);
|
|
@@ -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-
|
|
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-C_g7C-9o.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 };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { inferFaviconUrl } from "./favicon.js";
|
|
2
|
+
import { siAirtable, siAsana, siAtlassian, siCalendly, siCloudflare, siDatadog, siEgnyte, siGithub, siGitlab, siGrafana, siHubspot, siHuggingface, siLinear, siMiro, siNeon, siNotion, siPaypal, siPosthog, siPostman, siRailway, siSentry, siStripe, siSupabase, siWebflow, siWix, siZapier, siZoom } from "simple-icons";
|
|
2
3
|
//#region src/utils/mcp-server-catalog.ts
|
|
3
4
|
/**
|
|
4
5
|
* Read the complete state emitted by the pinned Agents runtime.
|
|
@@ -38,6 +39,40 @@ function normalizeMcpServerUrl(url) {
|
|
|
38
39
|
}
|
|
39
40
|
const DCR_CATEGORY = "Auto";
|
|
40
41
|
const MANUAL_CATEGORY = "Manual";
|
|
42
|
+
const SIMPLE_ICONS = Object.fromEntries([
|
|
43
|
+
siAirtable,
|
|
44
|
+
siAsana,
|
|
45
|
+
siAtlassian,
|
|
46
|
+
siCalendly,
|
|
47
|
+
siCloudflare,
|
|
48
|
+
siDatadog,
|
|
49
|
+
siEgnyte,
|
|
50
|
+
siGithub,
|
|
51
|
+
siGitlab,
|
|
52
|
+
siGrafana,
|
|
53
|
+
siHubspot,
|
|
54
|
+
siHuggingface,
|
|
55
|
+
siLinear,
|
|
56
|
+
siMiro,
|
|
57
|
+
siNeon,
|
|
58
|
+
siNotion,
|
|
59
|
+
siPaypal,
|
|
60
|
+
siPosthog,
|
|
61
|
+
siPostman,
|
|
62
|
+
siRailway,
|
|
63
|
+
siSentry,
|
|
64
|
+
siStripe,
|
|
65
|
+
siSupabase,
|
|
66
|
+
siWebflow,
|
|
67
|
+
siWix,
|
|
68
|
+
siZapier,
|
|
69
|
+
siZoom
|
|
70
|
+
].map((icon) => [icon.slug, icon.svg]));
|
|
71
|
+
function bundledSimpleIcon(server) {
|
|
72
|
+
const slug = server.id === "zoom-workspace" ? "zoom" : server.id.replaceAll("-", "");
|
|
73
|
+
const svg = SIMPLE_ICONS[slug];
|
|
74
|
+
return svg ? `data:image/svg+xml,${encodeURIComponent(svg)}` : void 0;
|
|
75
|
+
}
|
|
41
76
|
const MCP_SERVER_SETUP_AUTH = {
|
|
42
77
|
bearer: {
|
|
43
78
|
type: "bearer",
|
|
@@ -120,6 +155,8 @@ const CUSTOM_MCP_SERVER_CARD = {
|
|
|
120
155
|
function getMcpServerIconSrc(server) {
|
|
121
156
|
if (typeof server.icon === "string") return server.icon;
|
|
122
157
|
if (server.icon?.src) return server.icon.src;
|
|
158
|
+
const bundled = bundledSimpleIcon(server);
|
|
159
|
+
if (bundled) return bundled;
|
|
123
160
|
return inferFaviconUrl(server.url);
|
|
124
161
|
}
|
|
125
162
|
/** Remote MCP servers whose OAuth metadata exposes a registration_endpoint. */
|
|
@@ -425,6 +462,31 @@ const MANUAL_MCP_SERVER_CARDS = [
|
|
|
425
462
|
]
|
|
426
463
|
}
|
|
427
464
|
},
|
|
465
|
+
{
|
|
466
|
+
id: "github",
|
|
467
|
+
name: "GitHub",
|
|
468
|
+
url: "https://api.githubcopilot.com/mcp/",
|
|
469
|
+
description: "Clone, push, and open pull requests as a connected GitHub account",
|
|
470
|
+
category: MANUAL_CATEGORY,
|
|
471
|
+
manualSetup: {
|
|
472
|
+
auth: {
|
|
473
|
+
type: "bearer",
|
|
474
|
+
label: "Personal access token (classic)",
|
|
475
|
+
fields: [{
|
|
476
|
+
name: "bearerToken",
|
|
477
|
+
label: "Personal access token",
|
|
478
|
+
inputType: "password",
|
|
479
|
+
placeholder: "ghp_…",
|
|
480
|
+
required: true
|
|
481
|
+
}]
|
|
482
|
+
},
|
|
483
|
+
description: "Paste a classic personal access token with all scopes from the agent's own GitHub account — the account is the access boundary. Git and the GitHub API both authenticate as this account.",
|
|
484
|
+
links: [{
|
|
485
|
+
label: "Create a classic token",
|
|
486
|
+
url: "https://github.com/settings/tokens"
|
|
487
|
+
}]
|
|
488
|
+
}
|
|
489
|
+
},
|
|
428
490
|
{
|
|
429
491
|
id: "gmail",
|
|
430
492
|
name: "Gmail",
|
|
@@ -870,6 +932,12 @@ const DEFAULT_MCP_SERVER_CARDS = [
|
|
|
870
932
|
...DCR_MCP_SERVER_CARDS,
|
|
871
933
|
CUSTOM_MCP_SERVER_CARD,
|
|
872
934
|
...MANUAL_MCP_SERVER_CARDS
|
|
873
|
-
]
|
|
935
|
+
].map((server) => {
|
|
936
|
+
const icon = bundledSimpleIcon(server);
|
|
937
|
+
return icon ? {
|
|
938
|
+
...server,
|
|
939
|
+
icon
|
|
940
|
+
} : server;
|
|
941
|
+
});
|
|
874
942
|
//#endregion
|
|
875
943
|
export { CUSTOM_MCP_SERVER_CARD, DCR_MCP_SERVER_CARDS, DEFAULT_MCP_SERVER_CARDS, MANUAL_MCP_SERVER_CARDS, MCP_SERVER_SETUP_AUTH, getMcpServerEntry, getMcpServerIconSrc, getMcpServerRuntimeState };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-b/react-components",
|
|
3
|
-
"version": "0.46.
|
|
3
|
+
"version": "0.46.4",
|
|
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": {
|
|
@@ -50,10 +50,11 @@
|
|
|
50
50
|
"react-icons": "^5.7.0",
|
|
51
51
|
"rehype-slug": "^6.0.0",
|
|
52
52
|
"shiki": "^3.23.0",
|
|
53
|
+
"simple-icons": "16.28.0",
|
|
53
54
|
"streamdown": "^2.5.0",
|
|
54
55
|
"unist-util-visit": "^5.1.0",
|
|
55
56
|
"yet-another-react-lightbox": "^3.32.2",
|
|
56
|
-
"@mcp-b/design-tokens": "0.46.
|
|
57
|
+
"@mcp-b/design-tokens": "0.46.4"
|
|
57
58
|
},
|
|
58
59
|
"devDependencies": {
|
|
59
60
|
"@ai-sdk/react": "^3.0.249",
|