harnessed 3.9.6 → 3.9.7

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
@@ -1200,7 +1200,7 @@ var init_auto_install = __esm({
1200
1200
 
1201
1201
  // package.json
1202
1202
  var package_default = {
1203
- version: "3.9.6"};
1203
+ version: "3.9.7"};
1204
1204
 
1205
1205
  // src/manifest/errors.ts
1206
1206
  function instancePathToKeyPath(instancePath) {
@@ -6285,20 +6285,9 @@ function registerSetup(program2) {
6285
6285
  } else {
6286
6286
  console.warn(t("setup.step_d.skipped", { message: dResult.message }));
6287
6287
  }
6288
- let updateInstalled2 = raw.updateInstalled === true;
6289
- if (!updateInstalled2 && !dryRun && raw.nonInteractive !== true) {
6290
- const isTty = process.stdin.isTTY === true && process.stdout.isTTY === true;
6291
- if (isTty) {
6292
- const { confirm: confirm4, isCancel: isCancel5 } = await import('@clack/prompts');
6293
- const ans = await confirm4({
6294
- message: "Update already-installed third-party plugins? (excludes MCP servers)",
6295
- initialValue: false
6296
- });
6297
- if (!isCancel5(ans) && ans === true) updateInstalled2 = true;
6298
- }
6299
- }
6300
6288
  const manifestPaths = await listBaseManifests2(pkgRoot);
6301
- const b = await runStepBInstall(manifestPaths, { updateInstalled: updateInstalled2 });
6289
+ const forceFirstPass = raw.updateInstalled === true;
6290
+ const b = await runStepBInstall(manifestPaths, { updateInstalled: forceFirstPass });
6302
6291
  const stepBMs = (b.elapsedMs / 1e3).toFixed(1);
6303
6292
  console.log(
6304
6293
  t("setup.step_b_complete", {
@@ -6316,6 +6305,29 @@ function registerSetup(program2) {
6316
6305
  );
6317
6306
  for (const n of b.skipped) console.log(` [B] skipped ${n}`);
6318
6307
  for (const n of b.failed) console.error(` [B] failed ${n}`);
6308
+ if (!forceFirstPass && !dryRun && raw.nonInteractive !== true && b.alreadyInstalled.length > 0) {
6309
+ const isTty = process.stdin.isTTY === true && process.stdout.isTTY === true;
6310
+ if (isTty) {
6311
+ const { confirm: confirm4, isCancel: isCancel5 } = await import('@clack/prompts');
6312
+ const ans = await confirm4({
6313
+ message: `Update ${b.alreadyInstalled.length} already-installed plugin(s) listed above? (MCP servers excluded \u2014 they ignore force-update)`,
6314
+ initialValue: false
6315
+ });
6316
+ if (!isCancel5(ans) && ans === true) {
6317
+ const b2 = await runStepBInstall(manifestPaths, { updateInstalled: true });
6318
+ const stepB2Ms = (b2.elapsedMs / 1e3).toFixed(1);
6319
+ console.log(
6320
+ `
6321
+ Force-update pass complete: ${b2.installed.length} installed / ${b2.alreadyInstalled.length} still-already-installed (MCP) / ${b2.skipped.length} skipped / ${b2.failed.length} failed [parallel ${stepB2Ms}s]`
6322
+ );
6323
+ for (const n of b2.installed) console.log(` [B*] installed ${n}`);
6324
+ for (const n of b2.alreadyInstalled)
6325
+ console.log(` [B*] already-installed ${n} (MCP / no force-update)`);
6326
+ for (const n of b2.skipped) console.log(` [B*] skipped ${n}`);
6327
+ for (const n of b2.failed) console.error(` [B*] failed ${n}`);
6328
+ }
6329
+ }
6330
+ }
6319
6331
  console.log(
6320
6332
  t("setup.complete", {
6321
6333
  skills: skillsInstalled,