mcp-use 1.11.0-canary.16 → 1.11.0-canary.18
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/.tsbuildinfo +1 -1
- package/dist/{chunk-GVHS2DDJ.js → chunk-6TCXBLDE.js} +2 -2
- package/dist/{chunk-RU7FIJVM.js → chunk-BUUAJ4ZA.js} +1 -1
- package/dist/{chunk-76F72Y73.js → chunk-DKK3OEIY.js} +1 -1
- package/dist/{chunk-FMK46JYP.js → chunk-I3NZCYBR.js} +4 -2
- package/dist/{chunk-MGYJYTTX.js → chunk-M6HG2X4Q.js} +10 -1
- package/dist/{chunk-2FOTPDUJ.js → chunk-MIY5EBAT.js} +82 -43
- package/dist/{chunk-6AB7U4KA.js → chunk-OD724W55.js} +10 -4
- package/dist/{chunk-J56ACHX4.js → chunk-SRXA64QS.js} +8 -3
- package/dist/index.cjs +107 -46
- package/dist/index.js +13 -13
- package/dist/src/agents/index.cjs +93 -43
- package/dist/src/agents/index.js +5 -5
- package/dist/src/browser.cjs +101 -45
- package/dist/src/browser.js +10 -10
- package/dist/src/client/browser.d.ts.map +1 -1
- package/dist/src/client.cjs +93 -43
- package/dist/src/client.js +3 -3
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/connectors/http.d.ts +2 -0
- package/dist/src/connectors/http.d.ts.map +1 -1
- package/dist/src/react/index.cjs +105 -46
- package/dist/src/react/index.js +5 -5
- package/dist/src/react/useMcp.d.ts.map +1 -1
- package/dist/src/server/index.cjs +89 -46
- package/dist/src/server/index.js +12 -8
- package/dist/src/server/types/widget.d.ts +2 -2
- package/dist/src/server/types/widget.d.ts.map +1 -1
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -1
- package/dist/src/telemetry/telemetry.d.ts +1 -0
- package/dist/src/telemetry/telemetry.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/{tool-execution-helpers-7ZZVUHAM.js → tool-execution-helpers-YTLQZ7KG.js} +2 -2
- package/package.json +3 -3
package/dist/src/client.cjs
CHANGED
|
@@ -942,7 +942,7 @@ function generateUUID() {
|
|
|
942
942
|
__name(generateUUID, "generateUUID");
|
|
943
943
|
|
|
944
944
|
// src/version.ts
|
|
945
|
-
var VERSION = "1.11.0-canary.
|
|
945
|
+
var VERSION = "1.11.0-canary.18";
|
|
946
946
|
function getPackageVersion() {
|
|
947
947
|
return VERSION;
|
|
948
948
|
}
|
|
@@ -1080,12 +1080,26 @@ var Telemetry = class _Telemetry {
|
|
|
1080
1080
|
"Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable."
|
|
1081
1081
|
);
|
|
1082
1082
|
this._posthogLoading = this._initPostHog();
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1083
|
+
if (this._runtimeEnvironment !== "browser") {
|
|
1084
|
+
try {
|
|
1085
|
+
this._scarfClient = new ScarfEventLogger(
|
|
1086
|
+
this.SCARF_GATEWAY_URL,
|
|
1087
|
+
3e3
|
|
1088
|
+
);
|
|
1089
|
+
} catch (e) {
|
|
1090
|
+
logger.warn(`Failed to initialize Scarf telemetry: ${e}`);
|
|
1091
|
+
this._scarfClient = null;
|
|
1092
|
+
}
|
|
1093
|
+
} else {
|
|
1087
1094
|
this._scarfClient = null;
|
|
1088
1095
|
}
|
|
1096
|
+
if (this._storageCapability === "filesystem" && this._scarfClient) {
|
|
1097
|
+
setTimeout(() => {
|
|
1098
|
+
this.trackPackageDownload({ triggered_by: "initialization" }).catch(
|
|
1099
|
+
(e) => logger.debug(`Failed to track package download: ${e}`)
|
|
1100
|
+
);
|
|
1101
|
+
}, 0);
|
|
1102
|
+
}
|
|
1089
1103
|
}
|
|
1090
1104
|
}
|
|
1091
1105
|
_checkTelemetryDisabled() {
|
|
@@ -1210,47 +1224,65 @@ var Telemetry = class _Telemetry {
|
|
|
1210
1224
|
break;
|
|
1211
1225
|
case "session-only":
|
|
1212
1226
|
default:
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1227
|
+
try {
|
|
1228
|
+
this._currUserId = `session-${generateUUID()}`;
|
|
1229
|
+
} catch (uuidError) {
|
|
1230
|
+
this._currUserId = `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1231
|
+
}
|
|
1217
1232
|
break;
|
|
1218
1233
|
}
|
|
1219
|
-
if (this._storageCapability === "filesystem" && this._currUserId) {
|
|
1220
|
-
this._trackPackageDownloadInternal(this._currUserId, {
|
|
1221
|
-
triggered_by: "user_id_property"
|
|
1222
|
-
}).catch((e) => logger.debug(`Failed to track package download: ${e}`));
|
|
1223
|
-
}
|
|
1224
1234
|
} catch (e) {
|
|
1225
|
-
logger.debug(`Failed to get/create user ID: ${e}`);
|
|
1226
1235
|
this._currUserId = this.UNKNOWN_USER_ID;
|
|
1227
1236
|
}
|
|
1228
1237
|
return this._currUserId;
|
|
1229
1238
|
}
|
|
1230
1239
|
/**
|
|
1231
1240
|
* Get or create user ID from filesystem (Node.js/Bun)
|
|
1241
|
+
* Falls back to session ID if filesystem operations fail
|
|
1232
1242
|
*/
|
|
1233
1243
|
_getUserIdFromFilesystem() {
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1244
|
+
try {
|
|
1245
|
+
let fs2, os, path2;
|
|
1246
|
+
try {
|
|
1247
|
+
fs2 = require("fs");
|
|
1248
|
+
os = require("os");
|
|
1249
|
+
path2 = require("path");
|
|
1250
|
+
} catch (requireError) {
|
|
1251
|
+
try {
|
|
1252
|
+
const sessionId = `session-${generateUUID()}`;
|
|
1253
|
+
return sessionId;
|
|
1254
|
+
} catch (uuidError) {
|
|
1255
|
+
return `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1256
|
+
}
|
|
1257
|
+
}
|
|
1258
|
+
if (!this._userIdPath) {
|
|
1259
|
+
this._userIdPath = path2.join(
|
|
1260
|
+
this._getCacheHome(os, path2),
|
|
1261
|
+
"mcp_use_3",
|
|
1262
|
+
"telemetry_user_id"
|
|
1263
|
+
);
|
|
1264
|
+
}
|
|
1265
|
+
const isFirstTime = !fs2.existsSync(this._userIdPath);
|
|
1266
|
+
if (isFirstTime) {
|
|
1267
|
+
fs2.mkdirSync(path2.dirname(this._userIdPath), { recursive: true });
|
|
1268
|
+
let newUserId;
|
|
1269
|
+
try {
|
|
1270
|
+
newUserId = generateUUID();
|
|
1271
|
+
} catch (uuidError) {
|
|
1272
|
+
newUserId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1273
|
+
}
|
|
1274
|
+
fs2.writeFileSync(this._userIdPath, newUserId);
|
|
1275
|
+
return newUserId;
|
|
1276
|
+
}
|
|
1277
|
+
const userId = fs2.readFileSync(this._userIdPath, "utf-8").trim();
|
|
1278
|
+
return userId;
|
|
1279
|
+
} catch (e) {
|
|
1280
|
+
try {
|
|
1281
|
+
return `session-${generateUUID()}`;
|
|
1282
|
+
} catch (uuidError) {
|
|
1283
|
+
return `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1284
|
+
}
|
|
1252
1285
|
}
|
|
1253
|
-
return fs2.readFileSync(this._userIdPath, "utf-8").trim();
|
|
1254
1286
|
}
|
|
1255
1287
|
/**
|
|
1256
1288
|
* Get or create user ID from localStorage (Browser)
|
|
@@ -1259,14 +1291,22 @@ var Telemetry = class _Telemetry {
|
|
|
1259
1291
|
try {
|
|
1260
1292
|
let userId = localStorage.getItem(USER_ID_STORAGE_KEY);
|
|
1261
1293
|
if (!userId) {
|
|
1262
|
-
|
|
1294
|
+
try {
|
|
1295
|
+
userId = generateUUID();
|
|
1296
|
+
} catch (uuidError) {
|
|
1297
|
+
userId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1298
|
+
}
|
|
1263
1299
|
localStorage.setItem(USER_ID_STORAGE_KEY, userId);
|
|
1264
|
-
logger.debug(`Created new browser user ID`);
|
|
1265
1300
|
}
|
|
1266
1301
|
return userId;
|
|
1267
1302
|
} catch (e) {
|
|
1268
|
-
|
|
1269
|
-
|
|
1303
|
+
let sessionId;
|
|
1304
|
+
try {
|
|
1305
|
+
sessionId = `session-${generateUUID()}`;
|
|
1306
|
+
} catch (uuidError) {
|
|
1307
|
+
sessionId = `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1308
|
+
}
|
|
1309
|
+
return sessionId;
|
|
1270
1310
|
}
|
|
1271
1311
|
}
|
|
1272
1312
|
_getCacheHome(os, path2) {
|
|
@@ -1295,6 +1335,7 @@ var Telemetry = class _Telemetry {
|
|
|
1295
1335
|
if (!this._posthogNodeClient && !this._posthogBrowserClient && !this._scarfClient) {
|
|
1296
1336
|
return;
|
|
1297
1337
|
}
|
|
1338
|
+
const currentUserId = this.userId;
|
|
1298
1339
|
const properties = { ...event.properties };
|
|
1299
1340
|
properties.mcp_use_version = getPackageVersion();
|
|
1300
1341
|
properties.language = "typescript";
|
|
@@ -1302,9 +1343,8 @@ var Telemetry = class _Telemetry {
|
|
|
1302
1343
|
properties.runtime = this._runtimeEnvironment;
|
|
1303
1344
|
if (this._posthogNodeClient) {
|
|
1304
1345
|
try {
|
|
1305
|
-
logger.debug(`CAPTURE: PostHog Node Event ${event.name}`);
|
|
1306
1346
|
this._posthogNodeClient.capture({
|
|
1307
|
-
distinctId:
|
|
1347
|
+
distinctId: currentUserId,
|
|
1308
1348
|
event: event.name,
|
|
1309
1349
|
properties
|
|
1310
1350
|
});
|
|
@@ -1314,10 +1354,9 @@ var Telemetry = class _Telemetry {
|
|
|
1314
1354
|
}
|
|
1315
1355
|
if (this._posthogBrowserClient) {
|
|
1316
1356
|
try {
|
|
1317
|
-
logger.debug(`CAPTURE: PostHog Browser Event ${event.name}`);
|
|
1318
1357
|
this._posthogBrowserClient.capture(event.name, {
|
|
1319
1358
|
...properties,
|
|
1320
|
-
distinct_id:
|
|
1359
|
+
distinct_id: currentUserId
|
|
1321
1360
|
});
|
|
1322
1361
|
} catch (e) {
|
|
1323
1362
|
logger.debug(
|
|
@@ -1329,7 +1368,7 @@ var Telemetry = class _Telemetry {
|
|
|
1329
1368
|
try {
|
|
1330
1369
|
const scarfProperties = {
|
|
1331
1370
|
...properties,
|
|
1332
|
-
user_id:
|
|
1371
|
+
user_id: currentUserId,
|
|
1333
1372
|
event: event.name
|
|
1334
1373
|
};
|
|
1335
1374
|
await this._scarfClient.logEvent(scarfProperties);
|
|
@@ -3143,6 +3182,7 @@ var HttpConnector = class extends BaseConnector {
|
|
|
3143
3182
|
sseReadTimeout;
|
|
3144
3183
|
clientInfo;
|
|
3145
3184
|
preferSse;
|
|
3185
|
+
disableSseFallback;
|
|
3146
3186
|
transportType = null;
|
|
3147
3187
|
streamableTransport = null;
|
|
3148
3188
|
constructor(baseUrl, opts = {}) {
|
|
@@ -3159,6 +3199,7 @@ var HttpConnector = class extends BaseConnector {
|
|
|
3159
3199
|
version: "1.0.0"
|
|
3160
3200
|
};
|
|
3161
3201
|
this.preferSse = opts.preferSse ?? false;
|
|
3202
|
+
this.disableSseFallback = opts.disableSseFallback ?? false;
|
|
3162
3203
|
}
|
|
3163
3204
|
/** Establish connection to the MCP implementation via HTTP (streamable or SSE). */
|
|
3164
3205
|
async connect() {
|
|
@@ -3215,6 +3256,13 @@ var HttpConnector = class extends BaseConnector {
|
|
|
3215
3256
|
authError.code = 401;
|
|
3216
3257
|
throw authError;
|
|
3217
3258
|
}
|
|
3259
|
+
if (this.disableSseFallback) {
|
|
3260
|
+
logger.info("SSE fallback disabled - failing connection");
|
|
3261
|
+
await this.cleanupResources();
|
|
3262
|
+
throw new Error(
|
|
3263
|
+
`Streamable HTTP connection failed: ${fallbackReason}. SSE fallback is disabled.`
|
|
3264
|
+
);
|
|
3265
|
+
}
|
|
3218
3266
|
logger.info("\u{1F504} Falling back to SSE transport...");
|
|
3219
3267
|
try {
|
|
3220
3268
|
await this.connectWithSse(baseUrl);
|
|
@@ -3579,6 +3627,8 @@ function createConnectorFromConfig(serverConfig, connectorOptions) {
|
|
|
3579
3627
|
authToken: serverConfig.auth_token || serverConfig.authToken,
|
|
3580
3628
|
// Only force SSE if explicitly requested
|
|
3581
3629
|
preferSse: serverConfig.preferSse || transport === "sse",
|
|
3630
|
+
// Disable SSE fallback if explicitly disabled in config
|
|
3631
|
+
disableSseFallback: serverConfig.disableSseFallback,
|
|
3582
3632
|
...connectorOptions
|
|
3583
3633
|
});
|
|
3584
3634
|
}
|
package/dist/src/client.js
CHANGED
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
MCPClient,
|
|
5
5
|
VMCodeExecutor,
|
|
6
6
|
isVMAvailable
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-I3NZCYBR.js";
|
|
8
8
|
import {
|
|
9
9
|
MCPSession
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-M6HG2X4Q.js";
|
|
11
|
+
import "../chunk-MIY5EBAT.js";
|
|
12
12
|
import "../chunk-FRUZDWXH.js";
|
|
13
13
|
import "../chunk-3GQAWCBQ.js";
|
|
14
14
|
export {
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGpE;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC/C,aAAa,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAKjE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAGpE;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAC/C,aAAa,CA0Bf"}
|
|
@@ -10,6 +10,7 @@ export interface HttpConnectorOptions extends ConnectorInitOptions {
|
|
|
10
10
|
version: string;
|
|
11
11
|
};
|
|
12
12
|
preferSse?: boolean;
|
|
13
|
+
disableSseFallback?: boolean;
|
|
13
14
|
}
|
|
14
15
|
export declare class HttpConnector extends BaseConnector {
|
|
15
16
|
private readonly baseUrl;
|
|
@@ -18,6 +19,7 @@ export declare class HttpConnector extends BaseConnector {
|
|
|
18
19
|
private readonly sseReadTimeout;
|
|
19
20
|
private readonly clientInfo;
|
|
20
21
|
private readonly preferSse;
|
|
22
|
+
private readonly disableSseFallback;
|
|
21
23
|
private transportType;
|
|
22
24
|
private streamableTransport;
|
|
23
25
|
constructor(baseUrl: string, opts?: HttpConnectorOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/connectors/http.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/connectors/http.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IACpC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,aAAa,CAA0C;IAC/D,OAAO,CAAC,mBAAmB,CAA8C;gBAE7D,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,oBAAyB;IAmB5D,mFAAmF;IAC7E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA8HhB,yBAAyB;YAkJzB,cAAc;IAqE5B,IAAI,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM7C;IAED;;OAEG;IACH,gBAAgB,IAAI,iBAAiB,GAAG,KAAK,GAAG,IAAI;CAGrD"}
|
package/dist/src/react/index.cjs
CHANGED
|
@@ -918,7 +918,7 @@ function generateUUID() {
|
|
|
918
918
|
__name(generateUUID, "generateUUID");
|
|
919
919
|
|
|
920
920
|
// src/version.ts
|
|
921
|
-
var VERSION = "1.11.0-canary.
|
|
921
|
+
var VERSION = "1.11.0-canary.18";
|
|
922
922
|
function getPackageVersion() {
|
|
923
923
|
return VERSION;
|
|
924
924
|
}
|
|
@@ -1056,12 +1056,26 @@ var Telemetry = class _Telemetry {
|
|
|
1056
1056
|
"Anonymized telemetry enabled. Set MCP_USE_ANONYMIZED_TELEMETRY=false to disable."
|
|
1057
1057
|
);
|
|
1058
1058
|
this._posthogLoading = this._initPostHog();
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1059
|
+
if (this._runtimeEnvironment !== "browser") {
|
|
1060
|
+
try {
|
|
1061
|
+
this._scarfClient = new ScarfEventLogger(
|
|
1062
|
+
this.SCARF_GATEWAY_URL,
|
|
1063
|
+
3e3
|
|
1064
|
+
);
|
|
1065
|
+
} catch (e) {
|
|
1066
|
+
logger.warn(`Failed to initialize Scarf telemetry: ${e}`);
|
|
1067
|
+
this._scarfClient = null;
|
|
1068
|
+
}
|
|
1069
|
+
} else {
|
|
1063
1070
|
this._scarfClient = null;
|
|
1064
1071
|
}
|
|
1072
|
+
if (this._storageCapability === "filesystem" && this._scarfClient) {
|
|
1073
|
+
setTimeout(() => {
|
|
1074
|
+
this.trackPackageDownload({ triggered_by: "initialization" }).catch(
|
|
1075
|
+
(e) => logger.debug(`Failed to track package download: ${e}`)
|
|
1076
|
+
);
|
|
1077
|
+
}, 0);
|
|
1078
|
+
}
|
|
1065
1079
|
}
|
|
1066
1080
|
}
|
|
1067
1081
|
_checkTelemetryDisabled() {
|
|
@@ -1186,47 +1200,65 @@ var Telemetry = class _Telemetry {
|
|
|
1186
1200
|
break;
|
|
1187
1201
|
case "session-only":
|
|
1188
1202
|
default:
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1203
|
+
try {
|
|
1204
|
+
this._currUserId = `session-${generateUUID()}`;
|
|
1205
|
+
} catch (uuidError) {
|
|
1206
|
+
this._currUserId = `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1207
|
+
}
|
|
1193
1208
|
break;
|
|
1194
1209
|
}
|
|
1195
|
-
if (this._storageCapability === "filesystem" && this._currUserId) {
|
|
1196
|
-
this._trackPackageDownloadInternal(this._currUserId, {
|
|
1197
|
-
triggered_by: "user_id_property"
|
|
1198
|
-
}).catch((e) => logger.debug(`Failed to track package download: ${e}`));
|
|
1199
|
-
}
|
|
1200
1210
|
} catch (e) {
|
|
1201
|
-
logger.debug(`Failed to get/create user ID: ${e}`);
|
|
1202
1211
|
this._currUserId = this.UNKNOWN_USER_ID;
|
|
1203
1212
|
}
|
|
1204
1213
|
return this._currUserId;
|
|
1205
1214
|
}
|
|
1206
1215
|
/**
|
|
1207
1216
|
* Get or create user ID from filesystem (Node.js/Bun)
|
|
1217
|
+
* Falls back to session ID if filesystem operations fail
|
|
1208
1218
|
*/
|
|
1209
1219
|
_getUserIdFromFilesystem() {
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1220
|
+
try {
|
|
1221
|
+
let fs, os, path;
|
|
1222
|
+
try {
|
|
1223
|
+
fs = require("fs");
|
|
1224
|
+
os = require("os");
|
|
1225
|
+
path = require("path");
|
|
1226
|
+
} catch (requireError) {
|
|
1227
|
+
try {
|
|
1228
|
+
const sessionId = `session-${generateUUID()}`;
|
|
1229
|
+
return sessionId;
|
|
1230
|
+
} catch (uuidError) {
|
|
1231
|
+
return `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
if (!this._userIdPath) {
|
|
1235
|
+
this._userIdPath = path.join(
|
|
1236
|
+
this._getCacheHome(os, path),
|
|
1237
|
+
"mcp_use_3",
|
|
1238
|
+
"telemetry_user_id"
|
|
1239
|
+
);
|
|
1240
|
+
}
|
|
1241
|
+
const isFirstTime = !fs.existsSync(this._userIdPath);
|
|
1242
|
+
if (isFirstTime) {
|
|
1243
|
+
fs.mkdirSync(path.dirname(this._userIdPath), { recursive: true });
|
|
1244
|
+
let newUserId;
|
|
1245
|
+
try {
|
|
1246
|
+
newUserId = generateUUID();
|
|
1247
|
+
} catch (uuidError) {
|
|
1248
|
+
newUserId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1249
|
+
}
|
|
1250
|
+
fs.writeFileSync(this._userIdPath, newUserId);
|
|
1251
|
+
return newUserId;
|
|
1252
|
+
}
|
|
1253
|
+
const userId = fs.readFileSync(this._userIdPath, "utf-8").trim();
|
|
1254
|
+
return userId;
|
|
1255
|
+
} catch (e) {
|
|
1256
|
+
try {
|
|
1257
|
+
return `session-${generateUUID()}`;
|
|
1258
|
+
} catch (uuidError) {
|
|
1259
|
+
return `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1260
|
+
}
|
|
1228
1261
|
}
|
|
1229
|
-
return fs.readFileSync(this._userIdPath, "utf-8").trim();
|
|
1230
1262
|
}
|
|
1231
1263
|
/**
|
|
1232
1264
|
* Get or create user ID from localStorage (Browser)
|
|
@@ -1235,14 +1267,22 @@ var Telemetry = class _Telemetry {
|
|
|
1235
1267
|
try {
|
|
1236
1268
|
let userId = localStorage.getItem(USER_ID_STORAGE_KEY);
|
|
1237
1269
|
if (!userId) {
|
|
1238
|
-
|
|
1270
|
+
try {
|
|
1271
|
+
userId = generateUUID();
|
|
1272
|
+
} catch (uuidError) {
|
|
1273
|
+
userId = `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1274
|
+
}
|
|
1239
1275
|
localStorage.setItem(USER_ID_STORAGE_KEY, userId);
|
|
1240
|
-
logger.debug(`Created new browser user ID`);
|
|
1241
1276
|
}
|
|
1242
1277
|
return userId;
|
|
1243
1278
|
} catch (e) {
|
|
1244
|
-
|
|
1245
|
-
|
|
1279
|
+
let sessionId;
|
|
1280
|
+
try {
|
|
1281
|
+
sessionId = `session-${generateUUID()}`;
|
|
1282
|
+
} catch (uuidError) {
|
|
1283
|
+
sessionId = `session-${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
|
|
1284
|
+
}
|
|
1285
|
+
return sessionId;
|
|
1246
1286
|
}
|
|
1247
1287
|
}
|
|
1248
1288
|
_getCacheHome(os, path) {
|
|
@@ -1271,6 +1311,7 @@ var Telemetry = class _Telemetry {
|
|
|
1271
1311
|
if (!this._posthogNodeClient && !this._posthogBrowserClient && !this._scarfClient) {
|
|
1272
1312
|
return;
|
|
1273
1313
|
}
|
|
1314
|
+
const currentUserId = this.userId;
|
|
1274
1315
|
const properties = { ...event.properties };
|
|
1275
1316
|
properties.mcp_use_version = getPackageVersion();
|
|
1276
1317
|
properties.language = "typescript";
|
|
@@ -1278,9 +1319,8 @@ var Telemetry = class _Telemetry {
|
|
|
1278
1319
|
properties.runtime = this._runtimeEnvironment;
|
|
1279
1320
|
if (this._posthogNodeClient) {
|
|
1280
1321
|
try {
|
|
1281
|
-
logger.debug(`CAPTURE: PostHog Node Event ${event.name}`);
|
|
1282
1322
|
this._posthogNodeClient.capture({
|
|
1283
|
-
distinctId:
|
|
1323
|
+
distinctId: currentUserId,
|
|
1284
1324
|
event: event.name,
|
|
1285
1325
|
properties
|
|
1286
1326
|
});
|
|
@@ -1290,10 +1330,9 @@ var Telemetry = class _Telemetry {
|
|
|
1290
1330
|
}
|
|
1291
1331
|
if (this._posthogBrowserClient) {
|
|
1292
1332
|
try {
|
|
1293
|
-
logger.debug(`CAPTURE: PostHog Browser Event ${event.name}`);
|
|
1294
1333
|
this._posthogBrowserClient.capture(event.name, {
|
|
1295
1334
|
...properties,
|
|
1296
|
-
distinct_id:
|
|
1335
|
+
distinct_id: currentUserId
|
|
1297
1336
|
});
|
|
1298
1337
|
} catch (e) {
|
|
1299
1338
|
logger.debug(
|
|
@@ -1305,7 +1344,7 @@ var Telemetry = class _Telemetry {
|
|
|
1305
1344
|
try {
|
|
1306
1345
|
const scarfProperties = {
|
|
1307
1346
|
...properties,
|
|
1308
|
-
user_id:
|
|
1347
|
+
user_id: currentUserId,
|
|
1309
1348
|
event: event.name
|
|
1310
1349
|
};
|
|
1311
1350
|
await this._scarfClient.logEvent(scarfProperties);
|
|
@@ -2043,6 +2082,7 @@ var HttpConnector = class extends BaseConnector {
|
|
|
2043
2082
|
sseReadTimeout;
|
|
2044
2083
|
clientInfo;
|
|
2045
2084
|
preferSse;
|
|
2085
|
+
disableSseFallback;
|
|
2046
2086
|
transportType = null;
|
|
2047
2087
|
streamableTransport = null;
|
|
2048
2088
|
constructor(baseUrl, opts = {}) {
|
|
@@ -2059,6 +2099,7 @@ var HttpConnector = class extends BaseConnector {
|
|
|
2059
2099
|
version: "1.0.0"
|
|
2060
2100
|
};
|
|
2061
2101
|
this.preferSse = opts.preferSse ?? false;
|
|
2102
|
+
this.disableSseFallback = opts.disableSseFallback ?? false;
|
|
2062
2103
|
}
|
|
2063
2104
|
/** Establish connection to the MCP implementation via HTTP (streamable or SSE). */
|
|
2064
2105
|
async connect() {
|
|
@@ -2115,6 +2156,13 @@ var HttpConnector = class extends BaseConnector {
|
|
|
2115
2156
|
authError.code = 401;
|
|
2116
2157
|
throw authError;
|
|
2117
2158
|
}
|
|
2159
|
+
if (this.disableSseFallback) {
|
|
2160
|
+
logger.info("SSE fallback disabled - failing connection");
|
|
2161
|
+
await this.cleanupResources();
|
|
2162
|
+
throw new Error(
|
|
2163
|
+
`Streamable HTTP connection failed: ${fallbackReason}. SSE fallback is disabled.`
|
|
2164
|
+
);
|
|
2165
|
+
}
|
|
2118
2166
|
logger.info("\u{1F504} Falling back to SSE transport...");
|
|
2119
2167
|
try {
|
|
2120
2168
|
await this.connectWithSse(baseUrl);
|
|
@@ -2756,7 +2804,9 @@ var BrowserMCPClient = class _BrowserMCPClient extends BaseMCPClient {
|
|
|
2756
2804
|
wrapTransport,
|
|
2757
2805
|
clientOptions,
|
|
2758
2806
|
samplingCallback,
|
|
2759
|
-
elicitationCallback
|
|
2807
|
+
elicitationCallback,
|
|
2808
|
+
disableSseFallback,
|
|
2809
|
+
preferSse
|
|
2760
2810
|
} = serverConfig;
|
|
2761
2811
|
if (!url) {
|
|
2762
2812
|
throw new Error("Server URL is required");
|
|
@@ -2772,8 +2822,12 @@ var BrowserMCPClient = class _BrowserMCPClient extends BaseMCPClient {
|
|
|
2772
2822
|
// ← Pass client options (capabilities, etc.) to connector
|
|
2773
2823
|
samplingCallback,
|
|
2774
2824
|
// ← Pass sampling callback to connector
|
|
2775
|
-
elicitationCallback
|
|
2825
|
+
elicitationCallback,
|
|
2776
2826
|
// ← Pass elicitation callback to connector
|
|
2827
|
+
disableSseFallback,
|
|
2828
|
+
// ← Disable automatic SSE fallback
|
|
2829
|
+
preferSse
|
|
2830
|
+
// ← Use SSE transport directly
|
|
2777
2831
|
};
|
|
2778
2832
|
if (clientOptions) {
|
|
2779
2833
|
console.log(
|
|
@@ -3213,7 +3267,12 @@ function useMcp(options) {
|
|
|
3213
3267
|
const serverName = "inspector-server";
|
|
3214
3268
|
const serverConfig = {
|
|
3215
3269
|
url,
|
|
3216
|
-
transport: transportTypeParam === "sse" ? "http" : transportTypeParam
|
|
3270
|
+
transport: transportTypeParam === "sse" ? "http" : transportTypeParam,
|
|
3271
|
+
// Disable SSE fallback when using explicit HTTP transport (not SSE)
|
|
3272
|
+
// This prevents automatic HTTP → SSE fallback at the connector level
|
|
3273
|
+
disableSseFallback: transportTypeParam === "http",
|
|
3274
|
+
// Use SSE transport when explicitly requested
|
|
3275
|
+
preferSse: transportTypeParam === "sse"
|
|
3217
3276
|
};
|
|
3218
3277
|
if (customHeaders && Object.keys(customHeaders).length > 0) {
|
|
3219
3278
|
serverConfig.headers = customHeaders;
|
package/dist/src/react/index.js
CHANGED
|
@@ -9,18 +9,18 @@ import {
|
|
|
9
9
|
useWidgetProps,
|
|
10
10
|
useWidgetState,
|
|
11
11
|
useWidgetTheme
|
|
12
|
-
} from "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
12
|
+
} from "../../chunk-SRXA64QS.js";
|
|
13
|
+
import "../../chunk-OD724W55.js";
|
|
14
|
+
import "../../chunk-M6HG2X4Q.js";
|
|
15
15
|
import {
|
|
16
16
|
Tel,
|
|
17
17
|
Telemetry,
|
|
18
18
|
setTelemetrySource
|
|
19
|
-
} from "../../chunk-
|
|
19
|
+
} from "../../chunk-MIY5EBAT.js";
|
|
20
|
+
import "../../chunk-FRUZDWXH.js";
|
|
20
21
|
import {
|
|
21
22
|
onMcpAuthorization
|
|
22
23
|
} from "../../chunk-J75I2C26.js";
|
|
23
|
-
import "../../chunk-FRUZDWXH.js";
|
|
24
24
|
import "../../chunk-3GQAWCBQ.js";
|
|
25
25
|
export {
|
|
26
26
|
Tel as BrowserTelemetry,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMcp.d.ts","sourceRoot":"","sources":["../../../src/react/useMcp.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"useMcp.d.ts","sourceRoot":"","sources":["../../../src/react/useMcp.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAQ9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,YAAY,CAqwC3D"}
|