@kybernesis/create 0.1.0 → 0.1.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 +42 -3
  2. package/package.json +1 -1
package/dist/upgrade.js CHANGED
@@ -1,17 +1,28 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { bold, capture, dim, green, red, run, yellow } from "./util.js";
3
+ import { EVE_VERSION, bold, capture, dim, green, red, run, yellow } from "./util.js";
4
4
  const PACKAGES = [
5
5
  "@kybernesis/arcana",
6
6
  "@kybernesis/enterprise",
7
7
  "@kybernesis/multiplayer",
8
8
  "@kybernesis/evals",
9
9
  ];
10
+ function versionLt(a, b) {
11
+ const pa = a.split(".").map(Number);
12
+ const pb = b.split(".").map(Number);
13
+ for (let i = 0; i < 3; i++) {
14
+ if ((pa[i] ?? 0) < (pb[i] ?? 0))
15
+ return true;
16
+ if ((pa[i] ?? 0) > (pb[i] ?? 0))
17
+ return false;
18
+ }
19
+ return false;
20
+ }
10
21
  export async function upgrade(skipEval) {
11
22
  const cwd = process.cwd();
12
23
  const pkg = JSON.parse(readFileSync(join(cwd, "package.json"), "utf8"));
13
24
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
14
- console.log(bold("\nkyb upgrade — checking @kybernesis/* against npm\n"));
25
+ console.log(bold("\nkyb upgrade — checking @kybernesis/* and eve against npm\n"));
15
26
  const toUpgrade = [];
16
27
  for (const name of PACKAGES) {
17
28
  if (!deps[name])
@@ -29,13 +40,41 @@ export async function upgrade(skipEval) {
29
40
  toUpgrade.push(`${name}@${latest}`);
30
41
  }
31
42
  }
43
+ // eve itself: upgrade to the KYBERNESIS-CERTIFIED version, never blindly to
44
+ // npm latest. Certification happens in the platform repo — packages are
45
+ // tested against a new eve, then the pin in @kybernesis/create advances,
46
+ // then this command carries client agents there behind their eval gate.
47
+ let eveChanged = false;
48
+ const eveInstalled = capture("node", ["-p", "require('eve/package.json').version"], cwd)?.trim();
49
+ const eveLatest = capture("npm", ["view", "eve", "version"])?.trim();
50
+ if (eveInstalled) {
51
+ if (versionLt(eveInstalled, EVE_VERSION)) {
52
+ console.log(` ${yellow("↑")} eve: ${eveInstalled} → ${EVE_VERSION} ${dim("(Kybernesis-certified)")}`);
53
+ toUpgrade.push(`eve@${EVE_VERSION}`);
54
+ eveChanged = true;
55
+ }
56
+ else if (versionLt(EVE_VERSION, eveInstalled)) {
57
+ console.log(` ${yellow("!")} eve@${eveInstalled} is AHEAD of the certified ${EVE_VERSION} ${dim("— unsupported territory")}`);
58
+ }
59
+ else {
60
+ console.log(` ${green("✓")} eve@${eveInstalled} ${dim("(certified)")}`);
61
+ }
62
+ if (eveLatest && versionLt(EVE_VERSION, eveLatest)) {
63
+ console.log(dim(` note: eve@${eveLatest} exists upstream; ${EVE_VERSION} is the newest Kybernesis-certified version.`));
64
+ }
65
+ }
32
66
  if (toUpgrade.length === 0) {
33
- console.log(`\n${green("Everything is at latest.")}\n`);
67
+ console.log(`\n${green("Everything is at latest certified versions.")}\n`);
34
68
  return;
35
69
  }
36
70
  console.log(bold(`\nInstalling: ${toUpgrade.join(", ")}\n`));
37
71
  run("npm", ["install", ...toUpgrade], { cwd });
38
72
  run("npm", ["run", "typecheck"], { cwd });
73
+ if (eveChanged) {
74
+ // A framework bump must also pass discovery/compile, not just types.
75
+ const infoOk = run("npx", ["eve", "info"], { cwd, allowFail: true, quiet: true });
76
+ console.log(infoOk ? green(" ✓ eve discovery clean after framework upgrade") : red(" ✗ eve info failed after framework upgrade — inspect before going further"));
77
+ }
39
78
  if (skipEval) {
40
79
  console.log(yellow("\nEval gate SKIPPED (--skip-eval). Run `npm run eval` before deploying.\n"));
41
80
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kybernesis/create",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "The Kybernesis agent scaffolder and FDE toolkit: one command to a governed, remembering, multiplayer, self-testing eve agent — plus doctor and upgrade.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",