@kybernesis/create 0.24.0 → 0.24.1

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/upgrade.js +14 -1
  2. package/package.json +1 -1
package/dist/upgrade.js CHANGED
@@ -989,6 +989,10 @@ export async function upgrade(options = {}) {
989
989
  installedMajorMinor &&
990
990
  targetMajorMinor &&
991
991
  (installedMajorMinor[0] !== targetMajorMinor[0] || installedMajorMinor[1] !== targetMajorMinor[1]));
992
+ // eve already at the pin but saved as a range (an agent scaffolded before
993
+ // the pin was exact, or installed by hand): pin it in place. The version
994
+ // does not move, so this is not a change to plan or approve.
995
+ const loosePin = Boolean(eveTarget && eveInstalled === eveTarget && targets.some((target) => target.name === "eve" && target.currentRange !== eveTarget));
992
996
  const changed = [...new Set(targets
993
997
  .filter((target) => target.installedVersion !== target.targetVersion && !(target.name === "eve" && versionLt(target.targetVersion, target.installedVersion)))
994
998
  .map((target) => `${target.name}@${target.targetVersion}`))];
@@ -1009,6 +1013,15 @@ export async function upgrade(options = {}) {
1009
1013
  }
1010
1014
  repairLocalQueueTimeouts(cwd, deps);
1011
1015
  if (changed.length === 0) {
1016
+ if (loosePin) {
1017
+ const pinned = commandResult("npm", ["install", "--save-exact", `eve@${eveTarget}`], cwd);
1018
+ if (pinned.status !== 0) {
1019
+ console.log(red(`\nCould not pin eve exactly to ${eveTarget}:\n${pinned.stderr.trim()}`));
1020
+ process.exitCode = 1;
1021
+ return;
1022
+ }
1023
+ console.log(` ${green("✓")} eve pinned exactly to ${eveTarget} ${dim("(was a range)")}`);
1024
+ }
1012
1025
  console.log(`\n${green("Everything is at latest certified versions.")}\n`);
1013
1026
  repairBuzzSetup(cwd, deps);
1014
1027
  repairRemovedDefaultTools(cwd);
@@ -1043,7 +1056,7 @@ export async function upgrade(options = {}) {
1043
1056
  }
1044
1057
  // Outside a clean install, eve goes in with --save-exact for the same
1045
1058
  // reason rewriteManifest pins it: npm would save a caret by default.
1046
- const eveChange = changed.find((spec) => spec.startsWith("eve@"));
1059
+ const eveChange = changed.find((spec) => spec.startsWith("eve@")) ?? (loosePin ? `eve@${eveTarget}` : undefined);
1047
1060
  const others = changed.filter((spec) => spec !== eveChange);
1048
1061
  /**
1049
1062
  * A third-party extension whose declared peer range trails the certified
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kybernesis/create",
3
- "version": "0.24.0",
3
+ "version": "0.24.1",
4
4
  "description": "The Kybernesis agent scaffolder and FDE toolkit: one command to a governed, remembering, multiplayer, self-testing eve agent \u2014 plus doctor and upgrade.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",