@yawlabs/mcph 0.49.0 → 0.51.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.
Files changed (2) hide show
  1. package/dist/index.js +55 -13
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1668,7 +1668,7 @@ function selectFlakyNamespaces(entries, limit) {
1668
1668
  }
1669
1669
 
1670
1670
  // src/doctor-cmd.ts
1671
- var VERSION = true ? "0.49.0" : "dev";
1671
+ var VERSION = true ? "0.51.0" : "dev";
1672
1672
  async function runDoctor(opts = {}) {
1673
1673
  if (opts.json) return runDoctorJson(opts);
1674
1674
  const lines = [];
@@ -3109,7 +3109,7 @@ Or re-run with --run to upgrade in place.`);
3109
3109
  return { exitCode: 3, lines };
3110
3110
  }
3111
3111
  function readCurrentVersion() {
3112
- return true ? "0.49.0" : "dev";
3112
+ return true ? "0.51.0" : "dev";
3113
3113
  }
3114
3114
 
3115
3115
  // src/auto-upgrade.ts
@@ -3157,7 +3157,7 @@ function defaultSpawn2(cmd, args) {
3157
3157
  async function maybeAutoUpgrade(deps = {}) {
3158
3158
  const optOut = process.env.MCPH_AUTO_UPGRADE;
3159
3159
  if (optOut === "0" || optOut?.toLowerCase() === "false") return;
3160
- const current = deps.currentVersion ?? (true ? "0.49.0" : "dev");
3160
+ const current = deps.currentVersion ?? (true ? "0.51.0" : "dev");
3161
3161
  if (current === "dev") return;
3162
3162
  const method = detectInstallMethod(deps.argvPath ?? process.argv[1]);
3163
3163
  const latest = await (deps.fetchLatestImpl ?? fetchLatestVersion2)();
@@ -3325,6 +3325,39 @@ function detectMissingCredentials(stderrOrMessage) {
3325
3325
  return [...found];
3326
3326
  }
3327
3327
 
3328
+ // src/error-category.ts
3329
+ var RX_HTTP_401 = /\b401\b/;
3330
+ var RX_HTTP_403 = /\b403\b/;
3331
+ var RX_HTTP_404 = /\b404\b/;
3332
+ var RX_HTTP_429 = /\b429\b/;
3333
+ var RX_NO_TOKEN = /no [a-z_]*token (configured|set)/i;
3334
+ function classifyError(text) {
3335
+ if (!text) return "upstream_error";
3336
+ const t = text.toLowerCase();
3337
+ if (t.includes("-32001") || t.includes("timed out") || t.includes(" timeout")) {
3338
+ return "timeout";
3339
+ }
3340
+ if (t.includes("-32602") || t.includes("invalid input") || t.includes("invalid_type") || t.includes("invalid arguments")) {
3341
+ return "validation_error";
3342
+ }
3343
+ if (t.includes("unknown tool") || t.includes("-32601") || t.includes("method not found")) {
3344
+ return "unknown_tool";
3345
+ }
3346
+ if (t.includes("auto-reconnect failed") || t.includes("connection closed")) {
3347
+ return "connection_lost";
3348
+ }
3349
+ if (RX_HTTP_429.test(t) || t.includes("rate limit") || t.includes("too many requests")) {
3350
+ return "rate_limited";
3351
+ }
3352
+ if (RX_HTTP_401.test(t) || RX_HTTP_403.test(t) || t.includes("unauthorized") || t.includes("forbidden") || t.includes("permission denied") || RX_NO_TOKEN.test(text)) {
3353
+ return "unauthorized";
3354
+ }
3355
+ if (RX_HTTP_404.test(t) || t.includes("not found")) {
3356
+ return "not_found";
3357
+ }
3358
+ return "upstream_error";
3359
+ }
3360
+
3328
3361
  // src/exec-engine.ts
3329
3362
  function parseRefPath(raw) {
3330
3363
  if (typeof raw !== "string" || raw.length === 0) return null;
@@ -5301,7 +5334,7 @@ function categorizeSpawnError(err) {
5301
5334
  }
5302
5335
  async function connectToUpstream(config, onDisconnect, onListChanged) {
5303
5336
  const client = new Client(
5304
- { name: "mcph", version: true ? "0.49.0" : "dev" },
5337
+ { name: "mcph", version: true ? "0.51.0" : "dev" },
5305
5338
  { capabilities: {} }
5306
5339
  );
5307
5340
  let transport;
@@ -5609,7 +5642,7 @@ var ConnectServer = class _ConnectServer {
5609
5642
  this.apiUrl = apiUrl6;
5610
5643
  this.token = token6;
5611
5644
  this.server = new Server(
5612
- { name: "mcph", version: true ? "0.49.0" : "dev" },
5645
+ { name: "mcph", version: true ? "0.51.0" : "dev" },
5613
5646
  {
5614
5647
  capabilities: {
5615
5648
  tools: { listChanged: true },
@@ -6030,13 +6063,15 @@ var ConnectServer = class _ConnectServer {
6030
6063
  const namespaces = resolveNamespaces(args);
6031
6064
  const toolsFilter = namespaces.length === 1 && Array.isArray(args.tools) && args.tools.every((t) => typeof t === "string") ? args.tools : void 0;
6032
6065
  const result2 = await this.handleActivate(namespaces, progress, toolsFilter);
6066
+ const category = result2.isError ? classifyError(result2.content?.[0]?.text) : void 0;
6033
6067
  for (const ns of namespaces) {
6034
6068
  recordConnectEvent({
6035
6069
  namespace: ns,
6036
6070
  toolName: null,
6037
6071
  action: "activate",
6038
6072
  latencyMs: null,
6039
- success: !result2.isError
6073
+ success: !result2.isError,
6074
+ errorCategory: category
6040
6075
  });
6041
6076
  }
6042
6077
  return this.attachGuideNudge(result2);
@@ -6044,13 +6079,15 @@ var ConnectServer = class _ConnectServer {
6044
6079
  if (name === META_TOOLS.deactivate.name) {
6045
6080
  const namespaces = resolveNamespaces(args);
6046
6081
  const result2 = await this.handleDeactivate(namespaces);
6082
+ const category = result2.isError ? classifyError(result2.content?.[0]?.text) : void 0;
6047
6083
  for (const ns of namespaces) {
6048
6084
  recordConnectEvent({
6049
6085
  namespace: ns,
6050
6086
  toolName: null,
6051
6087
  action: "deactivate",
6052
6088
  latencyMs: null,
6053
- success: !result2.isError
6089
+ success: !result2.isError,
6090
+ errorCategory: category
6054
6091
  });
6055
6092
  }
6056
6093
  return this.attachGuideNudge(result2);
@@ -6062,7 +6099,8 @@ var ConnectServer = class _ConnectServer {
6062
6099
  toolName: null,
6063
6100
  action: "import",
6064
6101
  latencyMs: null,
6065
- success: !result2.isError
6102
+ success: !result2.isError,
6103
+ errorCategory: result2.isError ? classifyError(result2.content?.[0]?.text) : void 0
6066
6104
  });
6067
6105
  return this.attachGuideNudge(result2);
6068
6106
  }
@@ -6073,7 +6111,8 @@ var ConnectServer = class _ConnectServer {
6073
6111
  toolName: null,
6074
6112
  action: "install",
6075
6113
  latencyMs: null,
6076
- success: !result2.isError
6114
+ success: !result2.isError,
6115
+ errorCategory: result2.isError ? classifyError(result2.content?.[0]?.text) : void 0
6077
6116
  });
6078
6117
  return this.attachGuideNudge(result2);
6079
6118
  }
@@ -6090,7 +6129,8 @@ var ConnectServer = class _ConnectServer {
6090
6129
  toolName: toolArg || null,
6091
6130
  action: "read_tool",
6092
6131
  latencyMs: null,
6093
- success: !result2.isError
6132
+ success: !result2.isError,
6133
+ errorCategory: result2.isError ? classifyError(result2.content?.[0]?.text) : void 0
6094
6134
  });
6095
6135
  return this.attachGuideNudge(result2);
6096
6136
  }
@@ -6105,7 +6145,8 @@ var ConnectServer = class _ConnectServer {
6105
6145
  toolName: null,
6106
6146
  action: "exec",
6107
6147
  latencyMs: null,
6108
- success: !result2.isError
6148
+ success: !result2.isError,
6149
+ errorCategory: result2.isError ? classifyError(result2.content?.[0]?.text) : void 0
6109
6150
  });
6110
6151
  return this.attachGuideNudge(result2);
6111
6152
  }
@@ -6218,7 +6259,8 @@ var ConnectServer = class _ConnectServer {
6218
6259
  toolName: route.originalName,
6219
6260
  action: "tool_call",
6220
6261
  latencyMs,
6221
- success: !result.isError
6262
+ success: !result.isError,
6263
+ errorCategory: result.isError ? classifyError(result.content?.[0]?.text) : void 0
6222
6264
  });
6223
6265
  if (!result.isError && Array.isArray(result.content)) {
6224
6266
  try {
@@ -7998,7 +8040,7 @@ if (subcommand === "compliance") {
7998
8040
  `);
7999
8041
  process.exit(0);
8000
8042
  } else if (subcommand === "--version" || subcommand === "-V") {
8001
- process.stdout.write(`mcph ${true ? "0.49.0" : "dev"}
8043
+ process.stdout.write(`mcph ${true ? "0.51.0" : "dev"}
8002
8044
  `);
8003
8045
  process.exit(0);
8004
8046
  } else if (subcommand && !subcommand.startsWith("-")) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yawlabs/mcph",
3
- "version": "0.49.0",
3
+ "version": "0.51.0",
4
4
  "description": "mcp.hosting — one install, all your MCP servers, managed from the cloud",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Yaw Labs <support@mcp.hosting> (https://mcp.hosting)",