harnessed 3.9.2 → 3.9.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/cli.mjs CHANGED
@@ -777,9 +777,7 @@ async function checkMcpAvailability() {
777
777
  const parsed = JSON.parse(raw);
778
778
  const servers = parsed.mcpServers ?? {};
779
779
  const serverNames = Object.keys(servers);
780
- installed = TARGET_SERVERS.filter(
781
- (s) => serverNames.some((n) => n.includes(s) || s.includes(n))
782
- );
780
+ installed = TARGET_SERVERS.filter((s) => serverNames.includes(s));
783
781
  missing = TARGET_SERVERS.filter((s) => !installed.includes(s));
784
782
  } catch {
785
783
  }
@@ -811,10 +809,10 @@ async function checkMcpAvailability() {
811
809
  var TARGET_SERVERS, SERVER_INSTALL_COMMANDS;
812
810
  var init_check_mcp_availability = __esm({
813
811
  "src/cli/lib/check-mcp-availability.ts"() {
814
- TARGET_SERVERS = ["tavily-mcp", "exa-mcp", "chrome-devtools"];
812
+ TARGET_SERVERS = ["tavily-remote-mcp", "exa", "chrome-devtools"];
815
813
  SERVER_INSTALL_COMMANDS = {
816
- "tavily-mcp": "claude mcp add tavily-remote-mcp --transport http https://mcp.tavily.com/mcp/",
817
- "exa-mcp": "claude mcp add --transport http exa https://mcp.exa.ai/mcp",
814
+ "tavily-remote-mcp": "claude mcp add tavily-remote-mcp --transport http https://mcp.tavily.com/mcp/",
815
+ exa: "claude mcp add --transport http exa https://mcp.exa.ai/mcp",
818
816
  // chrome-devtools: official Claude marketplace direct install (v3.9.2 dogfood
819
817
  // confirmed — was assumed npx in v3.9.1 SPEC, corrected to official marketplace).
820
818
  "chrome-devtools": "claude plugin install chrome-devtools-mcp"
@@ -1120,15 +1118,14 @@ async function runAutoInstall(opts) {
1120
1118
  out.skipped.push(check.name);
1121
1119
  continue;
1122
1120
  }
1123
- let chainOk = true;
1121
+ const failureReasons = [];
1124
1122
  for (const cmd of commands) {
1125
1123
  const tokens = cmd.split(/\s+/).filter((t2) => t2.length > 0);
1126
1124
  const exe = tokens[0];
1127
1125
  const args = tokens.slice(1);
1128
1126
  if (exe === void 0) {
1129
- out.failed.push({ name: check.name, reason: `empty command in install_commands` });
1130
- chainOk = false;
1131
- break;
1127
+ failureReasons.push(`empty command in install_commands`);
1128
+ continue;
1132
1129
  }
1133
1130
  const r = spawnSync(exe, args, {
1134
1131
  encoding: "utf8",
@@ -1139,16 +1136,28 @@ async function runAutoInstall(opts) {
1139
1136
  shell: true
1140
1137
  });
1141
1138
  if (r.status !== 0) {
1142
- const reason = r.error !== void 0 ? `spawn error: ${r.error.message}` : `exit code ${r.status ?? "<unknown>"} on \`${cmd}\``;
1143
- out.failed.push({ name: check.name, reason });
1144
- console.error(` \u2717 failed ${check.name} \u2014 ${reason}`);
1145
- chainOk = false;
1146
- break;
1139
+ const reason = r.error !== void 0 ? `spawn error on \`${cmd}\`: ${r.error.message}` : `exit ${r.status ?? "<unknown>"} on \`${cmd}\``;
1140
+ failureReasons.push(reason);
1141
+ console.error(` \u2717 ${cmd} \u2014 ${reason}`);
1147
1142
  }
1148
1143
  }
1149
- if (chainOk) {
1144
+ if (failureReasons.length === 0) {
1150
1145
  out.installed.push(check.name);
1151
1146
  console.log(` \u2713 installed ${check.name}`);
1147
+ } else if (failureReasons.length === commands.length) {
1148
+ out.failed.push({
1149
+ name: check.name,
1150
+ reason: `all commands failed (${failureReasons.length})`
1151
+ });
1152
+ console.error(` \u2717 failed ${check.name} \u2014 all ${commands.length} commands failed`);
1153
+ } else {
1154
+ out.failed.push({
1155
+ name: check.name,
1156
+ reason: `partial: ${failureReasons.length}/${commands.length} commands failed`
1157
+ });
1158
+ console.error(
1159
+ ` \u26A0 ${check.name} \u2014 partial: ${failureReasons.length}/${commands.length} commands failed (others succeeded)`
1160
+ );
1152
1161
  }
1153
1162
  }
1154
1163
  console.log(
@@ -1165,7 +1174,7 @@ var init_auto_install = __esm({
1165
1174
 
1166
1175
  // package.json
1167
1176
  var package_default = {
1168
- version: "3.9.2"};
1177
+ version: "3.9.4"};
1169
1178
 
1170
1179
  // src/manifest/errors.ts
1171
1180
  function instancePathToKeyPath(instancePath) {