mcp-use 1.10.5 → 1.11.0-canary.10
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/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/{chunk-IY632ZQS.js → chunk-3GB7G5X7.js} +2 -2
- package/dist/{chunk-E42PSMPK.js → chunk-5QAXQTDL.js} +1 -1
- package/dist/{chunk-C7WHRUWQ.js → chunk-BEGEDH6P.js} +196 -496
- package/dist/{chunk-MO5FM5B2.js → chunk-BLGIG2QD.js} +443 -969
- package/dist/{chunk-XG7SR6G4.js → chunk-CBJTHTR4.js} +3 -8
- package/dist/{chunk-34R6SIER.js → chunk-FRUZDWXH.js} +1 -1
- package/dist/chunk-GUB5GQDD.js +101 -0
- package/dist/chunk-GXNAXUDI.js +0 -0
- package/dist/{chunk-CPG2WZUL.js → chunk-JRGQRPTN.js} +1 -1
- package/dist/chunk-MFSO5PUW.js +1049 -0
- package/dist/{chunk-UD5FSFEZ.js → chunk-NXFHUS7A.js} +171 -11
- package/dist/chunk-ULFNVP5Z.js +12 -0
- package/dist/chunk-UWWLWLS2.js +62 -0
- package/dist/chunk-VTEYN43V.js +1055 -0
- package/dist/{chunk-YOHGE3NK.js → chunk-XPTKLSBC.js} +16 -2
- package/dist/index.cjs +5065 -4608
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +53 -1068
- package/dist/{langfuse-N5Y5BSXK.js → langfuse-74RGPTAH.js} +2 -2
- package/dist/notifications-FLGIFS56.js +9 -0
- package/dist/src/adapters/base.d.ts +44 -0
- package/dist/src/adapters/base.d.ts.map +1 -1
- package/dist/src/adapters/index.cjs +1346 -0
- package/dist/src/adapters/index.js +11 -0
- package/dist/src/adapters/langchain_adapter.d.ts +12 -1
- package/dist/src/adapters/langchain_adapter.d.ts.map +1 -1
- package/dist/src/agents/index.cjs +3141 -159
- package/dist/src/agents/index.d.ts +2 -0
- package/dist/src/agents/index.d.ts.map +1 -1
- package/dist/src/agents/index.js +10 -6
- package/dist/src/agents/mcp_agent.d.ts +59 -37
- package/dist/src/agents/mcp_agent.d.ts.map +1 -1
- package/dist/src/agents/remote.d.ts +25 -0
- package/dist/src/agents/remote.d.ts.map +1 -1
- package/dist/src/agents/types.d.ts +76 -0
- package/dist/src/agents/types.d.ts.map +1 -1
- package/dist/src/agents/utils/index.d.ts +1 -0
- package/dist/src/agents/utils/index.d.ts.map +1 -1
- package/dist/src/agents/utils/llm_provider.d.ts +53 -0
- package/dist/src/agents/utils/llm_provider.d.ts.map +1 -0
- package/dist/src/browser.cjs +1856 -423
- package/dist/src/browser.d.ts +1 -2
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +26 -15
- package/dist/src/client/base.d.ts +1 -0
- package/dist/src/client/base.d.ts.map +1 -1
- package/dist/src/client/browser.d.ts +2 -2
- package/dist/src/client/browser.d.ts.map +1 -1
- package/dist/src/client/prompts.cjs +1 -1
- package/dist/src/client/prompts.js +5 -4
- package/dist/src/client.cjs +3787 -0
- package/dist/src/client.js +20 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/connectors/base.d.ts +8 -0
- package/dist/src/connectors/base.d.ts.map +1 -1
- package/dist/src/connectors/index.d.ts +0 -1
- package/dist/src/connectors/index.d.ts.map +1 -1
- package/dist/src/managers/server_manager.d.ts.map +1 -1
- package/dist/src/managers/tools/connect_mcp_server.d.ts.map +1 -1
- package/dist/src/react/index.cjs +259 -298
- package/dist/src/react/index.js +6 -5
- package/dist/src/react/types.d.ts +42 -4
- package/dist/src/react/types.d.ts.map +1 -1
- package/dist/src/react/useMcp.d.ts.map +1 -1
- package/dist/src/react/useWidget.d.ts +11 -7
- package/dist/src/react/useWidget.d.ts.map +1 -1
- package/dist/src/react/widget-types.d.ts +6 -2
- package/dist/src/react/widget-types.d.ts.map +1 -1
- package/dist/src/server/endpoints/mount-mcp.d.ts.map +1 -1
- package/dist/src/server/index.cjs +1379 -208
- package/dist/src/server/index.d.ts +2 -0
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +1353 -249
- package/dist/src/server/mcp-server.d.ts +5 -1
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/notifications/index.d.ts +1 -1
- package/dist/src/server/notifications/index.d.ts.map +1 -1
- package/dist/src/server/notifications/notification-registration.d.ts +51 -0
- package/dist/src/server/notifications/notification-registration.d.ts.map +1 -1
- package/dist/src/server/sessions/index.d.ts +3 -1
- package/dist/src/server/sessions/index.d.ts.map +1 -1
- package/dist/src/server/sessions/session-manager.d.ts +36 -19
- package/dist/src/server/sessions/session-manager.d.ts.map +1 -1
- package/dist/src/server/sessions/stores/filesystem.d.ts +121 -0
- package/dist/src/server/sessions/stores/filesystem.d.ts.map +1 -0
- package/dist/src/server/sessions/stores/index.d.ts +94 -0
- package/dist/src/server/sessions/stores/index.d.ts.map +1 -0
- package/dist/src/server/sessions/stores/memory.d.ts +82 -0
- package/dist/src/server/sessions/stores/memory.d.ts.map +1 -0
- package/dist/src/server/sessions/stores/redis.d.ts +164 -0
- package/dist/src/server/sessions/stores/redis.d.ts.map +1 -0
- package/dist/src/server/sessions/streams/index.d.ts +77 -0
- package/dist/src/server/sessions/streams/index.d.ts.map +1 -0
- package/dist/src/server/sessions/streams/memory.d.ts +76 -0
- package/dist/src/server/sessions/streams/memory.d.ts.map +1 -0
- package/dist/src/server/sessions/streams/redis.d.ts +146 -0
- package/dist/src/server/sessions/streams/redis.d.ts.map +1 -0
- package/dist/src/server/types/common.d.ts +120 -17
- package/dist/src/server/types/common.d.ts.map +1 -1
- package/dist/src/server/types/resource.d.ts +16 -0
- package/dist/src/server/types/resource.d.ts.map +1 -1
- package/dist/src/server/types/widget.d.ts +21 -2
- package/dist/src/server/types/widget.d.ts.map +1 -1
- package/dist/src/server/utils/response-helpers.d.ts +12 -6
- package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/index.d.ts +1 -1
- package/dist/src/server/widgets/index.d.ts.map +1 -1
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -1
- package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -1
- package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-helpers.d.ts +22 -0
- package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-types.d.ts +2 -0
- package/dist/src/server/widgets/widget-types.d.ts.map +1 -1
- package/dist/src/session.d.ts +16 -2
- package/dist/src/session.d.ts.map +1 -1
- package/dist/src/task_managers/index.d.ts +10 -1
- package/dist/src/task_managers/index.d.ts.map +1 -1
- package/dist/src/task_managers/sse.d.ts +34 -1
- package/dist/src/task_managers/sse.d.ts.map +1 -1
- package/dist/src/task_managers/streamable_http.d.ts +8 -2
- package/dist/src/task_managers/streamable_http.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/{tool-execution-helpers-XTDKRH6N.js → tool-execution-helpers-N7R7YGAW.js} +3 -3
- package/dist/tsup.config.d.ts.map +1 -1
- package/package.json +47 -14
- package/dist/src/connectors/websocket.d.ts +0 -38
- package/dist/src/connectors/websocket.d.ts.map +0 -1
- package/dist/src/task_managers/websocket.d.ts +0 -18
- package/dist/src/task_managers/websocket.d.ts.map +0 -1
- /package/dist/{chunk-EW4MJSHA.js → chunk-LGDFGYRL.js} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BrowserMCPClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-GUB5GQDD.js";
|
|
4
4
|
import {
|
|
5
5
|
BrowserOAuthClientProvider,
|
|
6
6
|
sanitizeUrl
|
|
7
7
|
} from "./chunk-J75I2C26.js";
|
|
8
8
|
import {
|
|
9
9
|
Tel
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-3GB7G5X7.js";
|
|
11
11
|
import {
|
|
12
12
|
__name
|
|
13
13
|
} from "./chunk-3GQAWCBQ.js";
|
|
@@ -101,6 +101,11 @@ function useMcp(options) {
|
|
|
101
101
|
if (clientRef.current) {
|
|
102
102
|
try {
|
|
103
103
|
const serverName = "inspector-server";
|
|
104
|
+
const session = clientRef.current.getSession(serverName);
|
|
105
|
+
if (session && session._healthCheckCleanup) {
|
|
106
|
+
session._healthCheckCleanup();
|
|
107
|
+
session._healthCheckCleanup = null;
|
|
108
|
+
}
|
|
104
109
|
await clientRef.current.closeSession(serverName);
|
|
105
110
|
} catch (err) {
|
|
106
111
|
if (!quiet) addLog("warn", "Error closing session:", err);
|
|
@@ -240,9 +245,25 @@ function useMcp(options) {
|
|
|
240
245
|
serverName,
|
|
241
246
|
false
|
|
242
247
|
);
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
248
|
+
session.on("notification", (notification) => {
|
|
249
|
+
onNotification?.(notification);
|
|
250
|
+
if (notification.method === "notifications/tools/list_changed") {
|
|
251
|
+
addLog("info", "Tools list changed, auto-refreshing...");
|
|
252
|
+
refreshTools().catch(
|
|
253
|
+
(err) => addLog("warn", "Auto-refresh tools failed:", err)
|
|
254
|
+
);
|
|
255
|
+
} else if (notification.method === "notifications/resources/list_changed") {
|
|
256
|
+
addLog("info", "Resources list changed, auto-refreshing...");
|
|
257
|
+
refreshResources().catch(
|
|
258
|
+
(err) => addLog("warn", "Auto-refresh resources failed:", err)
|
|
259
|
+
);
|
|
260
|
+
} else if (notification.method === "notifications/prompts/list_changed") {
|
|
261
|
+
addLog("info", "Prompts list changed, auto-refreshing...");
|
|
262
|
+
refreshPrompts().catch(
|
|
263
|
+
(err) => addLog("warn", "Auto-refresh prompts failed:", err)
|
|
264
|
+
);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
246
267
|
await session.initialize();
|
|
247
268
|
addLog("info", "\u2705 Successfully connected to MCP server");
|
|
248
269
|
addLog("info", "Server info:", session.connector.serverInfo);
|
|
@@ -258,6 +279,63 @@ function useMcp(options) {
|
|
|
258
279
|
);
|
|
259
280
|
setState("ready");
|
|
260
281
|
successfulTransportRef.current = transportTypeParam;
|
|
282
|
+
const setupConnectionMonitoring = /* @__PURE__ */ __name(() => {
|
|
283
|
+
let healthCheckInterval = null;
|
|
284
|
+
let lastSuccessfulCheck = Date.now();
|
|
285
|
+
const HEALTH_CHECK_INTERVAL = 1e4;
|
|
286
|
+
const HEALTH_CHECK_TIMEOUT = 3e4;
|
|
287
|
+
const checkConnectionHealth = /* @__PURE__ */ __name(async () => {
|
|
288
|
+
if (!isMountedRef.current || stateRef.current !== "ready") {
|
|
289
|
+
if (healthCheckInterval) {
|
|
290
|
+
clearInterval(healthCheckInterval);
|
|
291
|
+
healthCheckInterval = null;
|
|
292
|
+
}
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
await session.connector.listTools();
|
|
297
|
+
lastSuccessfulCheck = Date.now();
|
|
298
|
+
} catch (err) {
|
|
299
|
+
const timeSinceLastSuccess = Date.now() - lastSuccessfulCheck;
|
|
300
|
+
if (timeSinceLastSuccess > HEALTH_CHECK_TIMEOUT) {
|
|
301
|
+
addLog(
|
|
302
|
+
"warn",
|
|
303
|
+
`Connection appears to be broken (no response for ${Math.round(timeSinceLastSuccess / 1e3)}s), attempting to reconnect...`
|
|
304
|
+
);
|
|
305
|
+
if (healthCheckInterval) {
|
|
306
|
+
clearInterval(healthCheckInterval);
|
|
307
|
+
healthCheckInterval = null;
|
|
308
|
+
}
|
|
309
|
+
if (autoReconnectRef.current && isMountedRef.current) {
|
|
310
|
+
setState("discovering");
|
|
311
|
+
addLog("info", "Auto-reconnecting to MCP server...");
|
|
312
|
+
setTimeout(
|
|
313
|
+
() => {
|
|
314
|
+
if (isMountedRef.current && stateRef.current === "discovering") {
|
|
315
|
+
connect();
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
typeof autoReconnectRef.current === "number" ? autoReconnectRef.current : DEFAULT_RECONNECT_DELAY
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}, "checkConnectionHealth");
|
|
324
|
+
healthCheckInterval = setInterval(
|
|
325
|
+
checkConnectionHealth,
|
|
326
|
+
HEALTH_CHECK_INTERVAL
|
|
327
|
+
);
|
|
328
|
+
return () => {
|
|
329
|
+
if (healthCheckInterval) {
|
|
330
|
+
clearInterval(healthCheckInterval);
|
|
331
|
+
healthCheckInterval = null;
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
}, "setupConnectionMonitoring");
|
|
335
|
+
if (autoReconnect) {
|
|
336
|
+
const cleanup = setupConnectionMonitoring();
|
|
337
|
+
session._healthCheckCleanup = cleanup;
|
|
338
|
+
}
|
|
261
339
|
Tel.getInstance().trackUseMcpConnection({
|
|
262
340
|
url,
|
|
263
341
|
transportType: transportTypeParam,
|
|
@@ -609,6 +687,70 @@ function useMcp(options) {
|
|
|
609
687
|
throw err;
|
|
610
688
|
}
|
|
611
689
|
}, [state]);
|
|
690
|
+
const refreshTools = useCallback(async () => {
|
|
691
|
+
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
692
|
+
addLog("debug", "Cannot refresh tools - client not ready");
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
addLog("debug", "Refreshing tools list");
|
|
696
|
+
try {
|
|
697
|
+
const serverName = "inspector-server";
|
|
698
|
+
const session = clientRef.current.getSession(serverName);
|
|
699
|
+
if (!session) {
|
|
700
|
+
addLog("warn", "No active session found for tools refresh");
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
703
|
+
const toolsResult = await session.connector.listTools();
|
|
704
|
+
setTools(toolsResult || []);
|
|
705
|
+
addLog("info", "Tools list refreshed successfully");
|
|
706
|
+
} catch (err) {
|
|
707
|
+
addLog("warn", "Failed to refresh tools:", err);
|
|
708
|
+
}
|
|
709
|
+
}, [addLog]);
|
|
710
|
+
const refreshResources = useCallback(async () => {
|
|
711
|
+
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
712
|
+
addLog("debug", "Cannot refresh resources - client not ready");
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
addLog("debug", "Refreshing resources list");
|
|
716
|
+
try {
|
|
717
|
+
const serverName = "inspector-server";
|
|
718
|
+
const session = clientRef.current.getSession(serverName);
|
|
719
|
+
if (!session) {
|
|
720
|
+
addLog("warn", "No active session found for resources refresh");
|
|
721
|
+
return;
|
|
722
|
+
}
|
|
723
|
+
const resourcesResult = await session.connector.listAllResources();
|
|
724
|
+
setResources(resourcesResult.resources || []);
|
|
725
|
+
addLog("info", "Resources list refreshed successfully");
|
|
726
|
+
} catch (err) {
|
|
727
|
+
addLog("warn", "Failed to refresh resources:", err);
|
|
728
|
+
}
|
|
729
|
+
}, [addLog]);
|
|
730
|
+
const refreshPrompts = useCallback(async () => {
|
|
731
|
+
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
732
|
+
addLog("debug", "Cannot refresh prompts - client not ready");
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
addLog("debug", "Refreshing prompts list");
|
|
736
|
+
try {
|
|
737
|
+
const serverName = "inspector-server";
|
|
738
|
+
const session = clientRef.current.getSession(serverName);
|
|
739
|
+
if (!session) {
|
|
740
|
+
addLog("warn", "No active session found for prompts refresh");
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
const promptsResult = await session.connector.listPrompts();
|
|
744
|
+
setPrompts(promptsResult.prompts || []);
|
|
745
|
+
addLog("info", "Prompts list refreshed successfully");
|
|
746
|
+
} catch (err) {
|
|
747
|
+
addLog("warn", "Failed to refresh prompts:", err);
|
|
748
|
+
}
|
|
749
|
+
}, [addLog]);
|
|
750
|
+
const refreshAll = useCallback(async () => {
|
|
751
|
+
addLog("info", "Refreshing all lists (tools, resources, prompts)");
|
|
752
|
+
await Promise.all([refreshTools(), refreshResources(), refreshPrompts()]);
|
|
753
|
+
}, [refreshTools, refreshResources, refreshPrompts, addLog]);
|
|
612
754
|
const getPrompt = useCallback(
|
|
613
755
|
async (name, args) => {
|
|
614
756
|
if (stateRef.current !== "ready" || !clientRef.current) {
|
|
@@ -760,6 +902,10 @@ function useMcp(options) {
|
|
|
760
902
|
listResources,
|
|
761
903
|
listPrompts,
|
|
762
904
|
getPrompt,
|
|
905
|
+
refreshTools,
|
|
906
|
+
refreshResources,
|
|
907
|
+
refreshPrompts,
|
|
908
|
+
refreshAll,
|
|
763
909
|
retry,
|
|
764
910
|
disconnect,
|
|
765
911
|
authenticate,
|
|
@@ -907,6 +1053,15 @@ function useWidget(defaultProps) {
|
|
|
907
1053
|
const toolInput = provider === "openai" ? useOpenAiGlobal("toolInput") : urlParams.toolInput;
|
|
908
1054
|
const toolOutput = provider === "openai" ? useOpenAiGlobal("toolOutput") : urlParams.toolOutput;
|
|
909
1055
|
const toolResponseMetadata = useOpenAiGlobal("toolResponseMetadata");
|
|
1056
|
+
const widgetProps = useMemo(() => {
|
|
1057
|
+
if (toolResponseMetadata && typeof toolResponseMetadata === "object") {
|
|
1058
|
+
const metaProps = toolResponseMetadata["mcp-use/props"];
|
|
1059
|
+
if (metaProps) {
|
|
1060
|
+
return metaProps;
|
|
1061
|
+
}
|
|
1062
|
+
}
|
|
1063
|
+
return defaultProps || {};
|
|
1064
|
+
}, [toolResponseMetadata, defaultProps]);
|
|
910
1065
|
const widgetState = useOpenAiGlobal("widgetState");
|
|
911
1066
|
const theme = useOpenAiGlobal("theme");
|
|
912
1067
|
const displayMode = useOpenAiGlobal("displayMode");
|
|
@@ -971,9 +1126,13 @@ function useWidget(defaultProps) {
|
|
|
971
1126
|
},
|
|
972
1127
|
[widgetState, localWidgetState]
|
|
973
1128
|
);
|
|
1129
|
+
const isPending = useMemo(() => {
|
|
1130
|
+
return provider === "openai" && toolResponseMetadata === null;
|
|
1131
|
+
}, [provider, toolResponseMetadata]);
|
|
974
1132
|
return {
|
|
975
1133
|
// Props and state (with defaults)
|
|
976
|
-
props:
|
|
1134
|
+
props: widgetProps,
|
|
1135
|
+
toolInput: toolInput || {},
|
|
977
1136
|
output: toolOutput ?? null,
|
|
978
1137
|
metadata: toolResponseMetadata ?? null,
|
|
979
1138
|
state: localWidgetState,
|
|
@@ -995,7 +1154,8 @@ function useWidget(defaultProps) {
|
|
|
995
1154
|
openExternal,
|
|
996
1155
|
requestDisplayMode,
|
|
997
1156
|
// Availability
|
|
998
|
-
isAvailable: isOpenAiAvailable
|
|
1157
|
+
isAvailable: isOpenAiAvailable,
|
|
1158
|
+
isPending
|
|
999
1159
|
};
|
|
1000
1160
|
}
|
|
1001
1161
|
__name(useWidget, "useWidget");
|
|
@@ -1098,7 +1258,7 @@ function WidgetControls({
|
|
|
1098
1258
|
);
|
|
1099
1259
|
const isFullscreen = displayMode === "fullscreen" && isAvailable;
|
|
1100
1260
|
const isPip = displayMode === "pip" && isAvailable;
|
|
1101
|
-
const
|
|
1261
|
+
const isInInspector = typeof window !== "undefined" && window.location.pathname.includes("/inspector/api/");
|
|
1102
1262
|
useEffect4(() => {
|
|
1103
1263
|
const timeoutId = setTimeout(() => {
|
|
1104
1264
|
if (typeof window !== "undefined" && window.openai) {
|
|
@@ -1430,7 +1590,7 @@ function WidgetControls({
|
|
|
1430
1590
|
className: getPositionClasses().join(" "),
|
|
1431
1591
|
style: getPositionOffsetStyles()
|
|
1432
1592
|
},
|
|
1433
|
-
!
|
|
1593
|
+
!isInInspector && /* @__PURE__ */ React4.createElement(React4.Fragment, null, !isFullscreen && !isPip && /* @__PURE__ */ React4.createElement(React4.Fragment, null, (viewControls === true || viewControls === "fullscreen") && /* @__PURE__ */ React4.createElement(IconButton, { onClick: handleFullscreen, label: "Fullscreen" }, /* @__PURE__ */ React4.createElement("path", { d: "M15 3h6v6" }), /* @__PURE__ */ React4.createElement("path", { d: "m21 3-7 7" }), /* @__PURE__ */ React4.createElement("path", { d: "m3 21 7-7" }), /* @__PURE__ */ React4.createElement("path", { d: "M9 21H3v-6" })), (viewControls === true || viewControls === "pip") && /* @__PURE__ */ React4.createElement(IconButton, { onClick: handlePip, label: "Picture in Picture" }, /* @__PURE__ */ React4.createElement("path", { d: "M21 9V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10c0 1.1.9 2 2 2h4" }), /* @__PURE__ */ React4.createElement("rect", { width: "10", height: "7", x: "12", y: "13", rx: "2" }))), enableDebugger && /* @__PURE__ */ React4.createElement(IconButton, { onClick: handleToggleOverlay, label: "Debug Info" }, /* @__PURE__ */ React4.createElement("path", { d: "M12 20v-9" }), /* @__PURE__ */ React4.createElement("path", { d: "M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z" }), /* @__PURE__ */ React4.createElement("path", { d: "M14.12 3.88 16 2" }), /* @__PURE__ */ React4.createElement("path", { d: "M21 21a4 4 0 0 0-3.81-4" }), /* @__PURE__ */ React4.createElement("path", { d: "M21 5a4 4 0 0 1-3.55 3.97" }), /* @__PURE__ */ React4.createElement("path", { d: "M22 13h-4" }), /* @__PURE__ */ React4.createElement("path", { d: "M3 21a4 4 0 0 1 3.81-4" }), /* @__PURE__ */ React4.createElement("path", { d: "M3 5a4 4 0 0 0 3.55 3.97" }), /* @__PURE__ */ React4.createElement("path", { d: "M6 13H2" }), /* @__PURE__ */ React4.createElement("path", { d: "m8 2 1.88 1.88" }), /* @__PURE__ */ React4.createElement("path", { d: "M9 7.13V6a3 3 0 1 1 6 0v1.13" })))
|
|
1434
1594
|
),
|
|
1435
1595
|
children
|
|
1436
1596
|
), isOverlayOpen && enableDebugger && /* @__PURE__ */ React4.createElement(
|
|
@@ -1588,7 +1748,7 @@ function McpUseProvider({
|
|
|
1588
1748
|
let mounted = true;
|
|
1589
1749
|
(async () => {
|
|
1590
1750
|
try {
|
|
1591
|
-
const routerModule = await import("react-router
|
|
1751
|
+
const routerModule = await import("react-router");
|
|
1592
1752
|
if (mounted) {
|
|
1593
1753
|
setBrowserRouter(() => routerModule.BrowserRouter);
|
|
1594
1754
|
setIsRouterLoading(false);
|
|
@@ -1597,7 +1757,7 @@ function McpUseProvider({
|
|
|
1597
1757
|
if (mounted) {
|
|
1598
1758
|
setRouterError(
|
|
1599
1759
|
new Error(
|
|
1600
|
-
"\u274C react-router
|
|
1760
|
+
"\u274C react-router not installed!\n\nTo use MCP widgets with McpUseProvider, you need to install:\n\n npm install react-router\n # or\n pnpm add react-router\n\nThis dependency is automatically included in projects created with 'create-mcp-use-app'."
|
|
1601
1761
|
)
|
|
1602
1762
|
);
|
|
1603
1763
|
setIsRouterLoading(false);
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__name
|
|
3
|
+
} from "./chunk-3GQAWCBQ.js";
|
|
4
|
+
|
|
5
|
+
// src/server/utils/jsonrpc-helpers.ts
|
|
6
|
+
function createNotification(method, params) {
|
|
7
|
+
return {
|
|
8
|
+
jsonrpc: "2.0",
|
|
9
|
+
method,
|
|
10
|
+
...params && { params }
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
__name(createNotification, "createNotification");
|
|
14
|
+
function createRequest(id, method, params) {
|
|
15
|
+
return {
|
|
16
|
+
jsonrpc: "2.0",
|
|
17
|
+
id,
|
|
18
|
+
method,
|
|
19
|
+
...params && { params }
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
__name(createRequest, "createRequest");
|
|
23
|
+
|
|
24
|
+
// src/server/sessions/notifications.ts
|
|
25
|
+
async function sendNotificationToAll(sessions, method, params) {
|
|
26
|
+
const notification = createNotification(method, params);
|
|
27
|
+
for (const [sessionId, session] of sessions.entries()) {
|
|
28
|
+
try {
|
|
29
|
+
await session.transport.send(notification);
|
|
30
|
+
} catch (error) {
|
|
31
|
+
console.warn(
|
|
32
|
+
`[MCP] Failed to send notification to session ${sessionId}:`,
|
|
33
|
+
error
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
__name(sendNotificationToAll, "sendNotificationToAll");
|
|
39
|
+
async function sendNotificationToSession(sessions, sessionId, method, params) {
|
|
40
|
+
const session = sessions.get(sessionId);
|
|
41
|
+
if (!session) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
const notification = createNotification(method, params);
|
|
45
|
+
try {
|
|
46
|
+
await session.transport.send(notification);
|
|
47
|
+
return true;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.warn(
|
|
50
|
+
`[MCP] Failed to send notification to session ${sessionId}:`,
|
|
51
|
+
error
|
|
52
|
+
);
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
__name(sendNotificationToSession, "sendNotificationToSession");
|
|
57
|
+
|
|
58
|
+
export {
|
|
59
|
+
createRequest,
|
|
60
|
+
sendNotificationToAll,
|
|
61
|
+
sendNotificationToSession
|
|
62
|
+
};
|