@ai-ecoverse/mcpcat 0.30.2 → 0.30.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.
@@ -145,7 +145,7 @@ The above copyright notice and this permission notice shall be included in all c
145
145
 
146
146
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
147
147
 
148
- quickjs-wasi@3.6.2
148
+ quickjs-wasi@3.6.3
149
149
  License: MIT
150
150
  Homepage: git://github.com/vercel-labs/quickjs-wasi.git
151
151
  ----------------------------------------
@@ -345,7 +345,7 @@ async function restoreExtensions(descriptors, extensionMeta, mainExports, wasiBu
345
345
  }
346
346
 
347
347
  // node_modules/quickjs-wasi/dist/version.js
348
- var VERSION = "3.6.2";
348
+ var VERSION = "3.6.3";
349
349
 
350
350
  // node_modules/quickjs-wasi/dist/index.js
351
351
  var __addDisposableResource = function(env, value, async) {
@@ -1419,6 +1419,17 @@ var QuickJS = class _QuickJS {
1419
1419
  const vm = this;
1420
1420
  vm._ownedHandles.add(resolveHandle);
1421
1421
  vm._ownedHandles.add(rejectHandle);
1422
+ let resolved = false;
1423
+ const settle = (resolver, value) => {
1424
+ if (resolved)
1425
+ return;
1426
+ resolved = true;
1427
+ vm.callFunctionRaw(resolver, vm.undefined, value).dispose();
1428
+ vm._ownedHandles.delete(resolveHandle);
1429
+ vm._ownedHandles.delete(rejectHandle);
1430
+ resolveHandle.dispose();
1431
+ rejectHandle.dispose();
1432
+ };
1422
1433
  let _settled = null;
1423
1434
  return {
1424
1435
  handle: promiseHandle,
@@ -1440,14 +1451,10 @@ var QuickJS = class _QuickJS {
1440
1451
  return _settled;
1441
1452
  },
1442
1453
  resolve(value) {
1443
- vm.callFunctionRaw(resolveHandle, vm.undefined, value).dispose();
1444
- vm._ownedHandles.delete(resolveHandle);
1445
- resolveHandle.dispose();
1454
+ settle(resolveHandle, value);
1446
1455
  },
1447
1456
  reject(value) {
1448
- vm.callFunctionRaw(rejectHandle, vm.undefined, value).dispose();
1449
- vm._ownedHandles.delete(rejectHandle);
1450
- rejectHandle.dispose();
1457
+ settle(rejectHandle, value);
1451
1458
  }
1452
1459
  };
1453
1460
  }
@@ -1858,7 +1858,7 @@ var init_extensions = __esm({
1858
1858
  var VERSION;
1859
1859
  var init_version = __esm({
1860
1860
  "node_modules/quickjs-wasi/dist/version.js"() {
1861
- VERSION = "3.6.2";
1861
+ VERSION = "3.6.3";
1862
1862
  }
1863
1863
  });
1864
1864
 
@@ -3009,6 +3009,17 @@ var init_dist = __esm({
3009
3009
  const vm = this;
3010
3010
  vm._ownedHandles.add(resolveHandle);
3011
3011
  vm._ownedHandles.add(rejectHandle);
3012
+ let resolved = false;
3013
+ const settle = (resolver, value) => {
3014
+ if (resolved)
3015
+ return;
3016
+ resolved = true;
3017
+ vm.callFunctionRaw(resolver, vm.undefined, value).dispose();
3018
+ vm._ownedHandles.delete(resolveHandle);
3019
+ vm._ownedHandles.delete(rejectHandle);
3020
+ resolveHandle.dispose();
3021
+ rejectHandle.dispose();
3022
+ };
3012
3023
  let _settled = null;
3013
3024
  return {
3014
3025
  handle: promiseHandle,
@@ -3030,14 +3041,10 @@ var init_dist = __esm({
3030
3041
  return _settled;
3031
3042
  },
3032
3043
  resolve(value) {
3033
- vm.callFunctionRaw(resolveHandle, vm.undefined, value).dispose();
3034
- vm._ownedHandles.delete(resolveHandle);
3035
- resolveHandle.dispose();
3044
+ settle(resolveHandle, value);
3036
3045
  },
3037
3046
  reject(value) {
3038
- vm.callFunctionRaw(rejectHandle, vm.undefined, value).dispose();
3039
- vm._ownedHandles.delete(rejectHandle);
3040
- rejectHandle.dispose();
3047
+ settle(rejectHandle, value);
3041
3048
  }
3042
3049
  };
3043
3050
  }
@@ -19607,9 +19614,20 @@ function formatToolSchema(tool) {
19607
19614
  return lines.join("\n");
19608
19615
  }
19609
19616
  var NETWORK_HINT = "connection failed (for servers without CORS, link the slicc CLI with npx sliccy@next, or use the browser extension)";
19610
- function transportHint(err) {
19617
+ var LOOPBACK_V4 = /^127\.\d+\.\d+\.\d+$/;
19618
+ function remoteHttps(url) {
19619
+ if (!url) return false;
19620
+ const { protocol, hostname } = new URL(url);
19621
+ const host = hostname.toLowerCase().replace(/\.$/, "");
19622
+ if (protocol !== "https:") return false;
19623
+ return !(host === "localhost" || host.endsWith(".localhost") || host === "host.slicc.internal" || host === "[::1]" || LOOPBACK_V4.test(host));
19624
+ }
19625
+ function transportHint(err, kernelUrl) {
19611
19626
  if (err instanceof TypeError) {
19612
19627
  const cause = err.cause;
19628
+ if (cause?.code === "ECONNREFUSED" && remoteHttps(kernelUrl)) {
19629
+ return `${NETWORK_HINT}: ${err.message}`;
19630
+ }
19613
19631
  if (cause?.code === "ECONNREFUSED" || cause?.code === "ENETUNREACH") {
19614
19632
  return `connection failed: ${err.message}`;
19615
19633
  }
@@ -20682,7 +20700,7 @@ async function resolveAuthProvider(platform2, hasAuthHeader, url, target, config
20682
20700
  }
20683
20701
  return { provider, credentialSecrets };
20684
20702
  }
20685
- function classifyConnectionError(err, target, interrupted) {
20703
+ function classifyConnectionError(err, target, interrupted, platformKind, url) {
20686
20704
  if (err instanceof TransportRefusalError) {
20687
20705
  const hint = "in seven, reach the host via http://host.slicc.internal:<port>; in tests, enable the transport's hostLoopback";
20688
20706
  return {
@@ -20700,7 +20718,8 @@ function classifyConnectionError(err, target, interrupted) {
20700
20718
  if (interrupted) {
20701
20719
  return { code: EXIT_INTERRUPTED, kind: "interrupted", msg: "interrupted" };
20702
20720
  }
20703
- const msg = transportHint(err) ?? `connection failed: ${err.message}`;
20721
+ const kernelUrl = platformKind === "kernel" ? url : void 0;
20722
+ const msg = transportHint(err, kernelUrl) ?? `connection failed: ${err.message}`;
20704
20723
  return { code: EXIT_CONNECTION, kind: "connection", msg };
20705
20724
  }
20706
20725
  function buildRoots(rootArgs, isStdio, cwd) {
@@ -20887,7 +20906,7 @@ async function runClientVerb(platform2, version, parsed) {
20887
20906
  );
20888
20907
  return EXIT_CONNECTION;
20889
20908
  }
20890
- const e = classifyConnectionError(err, target, interrupted);
20909
+ const e = classifyConnectionError(err, target, interrupted, platform2.kind, resolved.url);
20891
20910
  if (e.code === EXIT_INTERRUPTED) {
20892
20911
  await platform2.write(2, "mcpcat: interrupted\n");
20893
20912
  return termExitCode;
@@ -21617,5 +21636,5 @@ try {
21617
21636
  });
21618
21637
  } catch {
21619
21638
  }
21620
- var code = await run(platform, "0.30.2", args);
21639
+ var code = await run(platform, "0.30.4", args);
21621
21640
  process.exit(code);
@@ -1479,7 +1479,7 @@ var init_extensions = __esm({
1479
1479
  var VERSION;
1480
1480
  var init_version = __esm({
1481
1481
  "node_modules/quickjs-wasi/dist/version.js"() {
1482
- VERSION = "3.6.2";
1482
+ VERSION = "3.6.3";
1483
1483
  }
1484
1484
  });
1485
1485
 
@@ -2630,6 +2630,17 @@ var init_dist = __esm({
2630
2630
  const vm = this;
2631
2631
  vm._ownedHandles.add(resolveHandle);
2632
2632
  vm._ownedHandles.add(rejectHandle);
2633
+ let resolved = false;
2634
+ const settle = (resolver, value) => {
2635
+ if (resolved)
2636
+ return;
2637
+ resolved = true;
2638
+ vm.callFunctionRaw(resolver, vm.undefined, value).dispose();
2639
+ vm._ownedHandles.delete(resolveHandle);
2640
+ vm._ownedHandles.delete(rejectHandle);
2641
+ resolveHandle.dispose();
2642
+ rejectHandle.dispose();
2643
+ };
2633
2644
  let _settled = null;
2634
2645
  return {
2635
2646
  handle: promiseHandle,
@@ -2651,14 +2662,10 @@ var init_dist = __esm({
2651
2662
  return _settled;
2652
2663
  },
2653
2664
  resolve(value) {
2654
- vm.callFunctionRaw(resolveHandle, vm.undefined, value).dispose();
2655
- vm._ownedHandles.delete(resolveHandle);
2656
- resolveHandle.dispose();
2665
+ settle(resolveHandle, value);
2657
2666
  },
2658
2667
  reject(value) {
2659
- vm.callFunctionRaw(rejectHandle, vm.undefined, value).dispose();
2660
- vm._ownedHandles.delete(rejectHandle);
2661
- rejectHandle.dispose();
2668
+ settle(rejectHandle, value);
2662
2669
  }
2663
2670
  };
2664
2671
  }
@@ -19124,9 +19131,20 @@ function formatToolSchema(tool) {
19124
19131
  return lines.join("\n");
19125
19132
  }
19126
19133
  var NETWORK_HINT = "connection failed (for servers without CORS, link the slicc CLI with npx sliccy@next, or use the browser extension)";
19127
- function transportHint(err) {
19134
+ var LOOPBACK_V4 = /^127\.\d+\.\d+\.\d+$/;
19135
+ function remoteHttps(url) {
19136
+ if (!url) return false;
19137
+ const { protocol, hostname } = new URL(url);
19138
+ const host = hostname.toLowerCase().replace(/\.$/, "");
19139
+ if (protocol !== "https:") return false;
19140
+ return !(host === "localhost" || host.endsWith(".localhost") || host === "host.slicc.internal" || host === "[::1]" || LOOPBACK_V4.test(host));
19141
+ }
19142
+ function transportHint(err, kernelUrl) {
19128
19143
  if (err instanceof TypeError) {
19129
19144
  const cause = err.cause;
19145
+ if (cause?.code === "ECONNREFUSED" && remoteHttps(kernelUrl)) {
19146
+ return `${NETWORK_HINT}: ${err.message}`;
19147
+ }
19130
19148
  if (cause?.code === "ECONNREFUSED" || cause?.code === "ENETUNREACH") {
19131
19149
  return `connection failed: ${err.message}`;
19132
19150
  }
@@ -20199,7 +20217,7 @@ async function resolveAuthProvider(platform2, hasAuthHeader, url, target, config
20199
20217
  }
20200
20218
  return { provider, credentialSecrets };
20201
20219
  }
20202
- function classifyConnectionError(err, target, interrupted) {
20220
+ function classifyConnectionError(err, target, interrupted, platformKind, url) {
20203
20221
  if (err instanceof TransportRefusalError) {
20204
20222
  const hint = "in seven, reach the host via http://host.slicc.internal:<port>; in tests, enable the transport's hostLoopback";
20205
20223
  return {
@@ -20217,7 +20235,8 @@ function classifyConnectionError(err, target, interrupted) {
20217
20235
  if (interrupted) {
20218
20236
  return { code: EXIT_INTERRUPTED, kind: "interrupted", msg: "interrupted" };
20219
20237
  }
20220
- const msg = transportHint(err) ?? `connection failed: ${err.message}`;
20238
+ const kernelUrl = platformKind === "kernel" ? url : void 0;
20239
+ const msg = transportHint(err, kernelUrl) ?? `connection failed: ${err.message}`;
20221
20240
  return { code: EXIT_CONNECTION, kind: "connection", msg };
20222
20241
  }
20223
20242
  function buildRoots(rootArgs, isStdio, cwd) {
@@ -20404,7 +20423,7 @@ async function runClientVerb(platform2, version, parsed) {
20404
20423
  );
20405
20424
  return EXIT_CONNECTION;
20406
20425
  }
20407
- const e = classifyConnectionError(err, target, interrupted);
20426
+ const e = classifyConnectionError(err, target, interrupted, platform2.kind, resolved.url);
20408
20427
  if (e.code === EXIT_INTERRUPTED) {
20409
20428
  await platform2.write(2, "mcpcat: interrupted\n");
20410
20429
  return termExitCode;
@@ -20964,7 +20983,7 @@ async function main(ctx) {
20964
20983
  packageDir: "/node_modules/@ai-ecoverse/mcpcat"
20965
20984
  });
20966
20985
  const args = ctx.argv.slice(1);
20967
- return run(platform2, "0.30.2", args);
20986
+ return run(platform2, "0.30.4", args);
20968
20987
  }
20969
20988
  export {
20970
20989
  main as default
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/mcpcat",
3
- "version": "0.30.2",
3
+ "version": "0.30.4",
4
4
  "description": "A curl for the Model Context Protocol",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -68,10 +68,15 @@
68
68
  "lefthook": "2.2.2",
69
69
  "monocart-coverage-reports": "2.13.2",
70
70
  "proper-lockfile": "4.1.2",
71
- "quickjs-wasi": "3.6.2",
71
+ "quickjs-wasi": "3.6.3",
72
72
  "semantic-release": "25.0.9",
73
73
  "typescript": "7.0.2"
74
74
  },
75
+ "overrides": {
76
+ "@earendil-works/pi-codemode": {
77
+ "quickjs-wasi": "$quickjs-wasi"
78
+ }
79
+ },
75
80
  "allowScripts": {
76
81
  "esbuild@0.28.2": true
77
82
  }