enigma-cli 1.16.2 → 1.16.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.
@@ -3,6 +3,6 @@
3
3
  "version": "1.1.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Minimal-code discipline - YAGNI ladder, deletion over addition, no unrequested abstractions, and the enigma: shortcut-marking convention; intensity via the minimal-code setting.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "3469a7e554b63a5ae3b1a4a127a0765d760649511fa9dfa9cdbcb04b4431fd64"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "On-demand over-engineering review - diff review, whole-repo audit, and enigma: debt-marker ledger (tags delete/stdlib/native/yagni/shrink, line/dep scoring); lists cuts, applies nothing.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "f742a2be3f328b9ea1ff9a35a449177c2cbec35ad16e46f7054b7a873a2ab017"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.1.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Backend/API architecture: controller-service-repository layering, API and request optimization, server-side caching (Redis), and Zod boundary validation.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "a46c3cd00aa5f47adb1e7907f1d2bc6f5562f7a272890dee9b1121976ac04ae1"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.1.1",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Ciphera code style conventions (formatting, naming, imports, comments, code-level anti-patterns; TypeScript-first, language-agnostic).",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "74f638aec13e8c93257fe1ad604c28b07e9a7c456796a4ceefcc99217d9e7039"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Pre-delivery self-review gate, prioritized review dimensions, and change-quality criteria.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "3d3bbe0602d5bbb4afe37648fe3c2fa39376b1bcbac5d8c441f01fad1e866ed0"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.9.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Core engineering execution policy and harness orchestration (highest-authority rules).",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "82d246faa4770248a36f143926fbf06bd3ffc082959014184548b57193770fab"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.1.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Senior database architecture policy: query optimization, anti-duplication/normalization, scalability, and RGPD/GDPR encryption.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "2883bcecb3202683ae6f81b073c3d6a9cec9c55029e011bdd06ba7ac3537297e"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Reproduce-isolate-fix debugging methodology with root-cause discipline and regression verification.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "14b0064c8b33a0dc85e51464b05005cf5801c756b1101789a6924b9548420f6b"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Dependency and supply-chain security: lockfiles and reproducible installs, version pinning, vulnerability auditing, vetting/minimizing packages, vendoring, and SBOM/provenance.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "6375d835c2aef2c9bd31ce116444dc3d796f510f9970a213aa3ac4696d7e21b9"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "431645565aec8a4ab4cd17247139f78c377a9bcfcfc4ee1d6f252199c332d86f"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.3.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Frontend architecture: reusable components, abstraction thresholds, state management, no-op save detection, large-list rendering (infinite scroll/pagination, virtualization, skeletons, progressive loading), and optimistic UI with rollback.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "26962db5a8b607e95098a6d88977aee59a10bd14e03afe97245f2b013fd21a9a"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.3.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Git & contribution policy (senior engineering standards).",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "73a978ef11f4def067f9252fc3e2e6aa737a08b6d58ad8a2a45cbcd4b02813f6"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Application and AI-agent security: secrets, authn/authz (least privilege), OWASP Top 10, transport/crypto baseline, secure logging, and agent/MCP/tool-use safety.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "9971e9d9127397d0152e89d24aad3191e2935e55a8483db7fd15f5d4d7a60e7a"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Create new skills, modify and improve existing skills, and measure skill performance with evals and benchmarks.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "699586cce82ec0a5458288b598ee7e5ebdddb3dfcf19db354d8bc5e85e47c1c7"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.1.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Exhaustive completion discipline for long/multi-item tasks - inventory, coverage ledger, verified done.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "6e3facba307eb2b55cefbab2e4b2a346a2b82f93c3ef47e11ebeb78c3c9453a8"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.2.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Test strategy, coverage gates, deterministic tests, mocking discipline, regression-first bug fixing, and test-suite organization (layout by type/domain, mirrored paths, file naming, fixture/helper placement).",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "3bdf591057b760f674fb2b1425f63acb426cda2c4f042e1a74c5a5d3807df664"
8
8
  }
@@ -3,6 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Strict frontend + backend schema validation, schema consistency, and safe client-facing error handling.",
6
- "cliVersion": "1.16.2",
6
+ "cliVersion": "1.16.4",
7
7
  "sha": "a33622a2f810ee4cea39824cb1a7ca34b355a917d4224025df50d77dd74f0b3a"
8
8
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "enigma-darwin-arm64": "2a3f446515dde107ccdf92d0ff75decf81682a7793db65acbaeabfc823269d52",
3
- "enigma-linux-arm64": "d211de605cd49db07eda9fb611a2b8b9b998058416a49b67bd8aa331b5f9c4f9",
4
- "enigma-linux-x64": "5badb7fb1b84ab4ffccad8463c82414e4d70bef8e3ed6c5c81890b51cdc8db38",
5
- "enigma-win32-x64.exe": "f4097f0501be0413837c15e0cd9091b9e6dcd90a18ce16082133036bda0e9661"
2
+ "enigma-darwin-arm64": "16fec5483670c4e62a71dc52cf3d27cfe4375e50fefd09ba4aa815bc6c0f2c57",
3
+ "enigma-linux-arm64": "cfcda54f4eb76d4186395659724654851dae9d5ba96791e33cf22b8b49f818b3",
4
+ "enigma-linux-x64": "785bb0a419e02290ca85a1ab4513e7d5984455f0d1bbc1808f941aa6148d842a",
5
+ "enigma-win32-x64.exe": "4136aad3befe5d3114fc0d21cda5343ccfac7d90863081b4e20aa44f491c6117"
6
6
  }
package/bin/download.mjs CHANGED
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { dirname } from "node:path";
15
15
  import { createHash } from "node:crypto";
16
- import { chmodSync, existsSync, mkdirSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
16
+ import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
17
17
 
18
18
  import {
19
19
  ARCH,
@@ -47,10 +47,36 @@ function assetUrl(asset) {
47
47
  return url;
48
48
  };
49
49
 
50
- /** Returns the installed binary path if already present, else null. */
50
+ /** Sidecar recording the sha256 of the currently-installed binary (next to the binary). */
51
+ function sidecarPath() {
52
+ return `${binTargetPath()}.sha256`;
53
+ };
54
+
55
+ /** The sha256 this package version expects for the host's asset, or null if none is known. */
56
+ function expectedSha() {
57
+ const choice = selectAsset();
58
+ return choice ? choice.sha256 : null;
59
+ };
60
+
61
+ /**
62
+ * Returns the installed binary path only if it is present AND matches the sha256 this
63
+ * package version expects (recorded in the sidecar at download time). Returns null when
64
+ * the binary is missing, has no sidecar, or the sidecar does not match - i.e. it is stale
65
+ * after a package update - so the caller re-downloads the correct one. This is what makes
66
+ * `npm install -g enigma-cli@latest` actually swap a binary that npm left in place (the
67
+ * binary is not in the tarball; npm does not track or remove it on update). When there are
68
+ * no checksums (a source checkout / workspace install), trust whatever binary is present.
69
+ */
51
70
  export function installedBinary() {
52
71
  const target = binTargetPath();
53
- return existsSync(target) ? target : null;
72
+ if (!existsSync(target)) return null;
73
+ const expected = expectedSha();
74
+ if (!expected) return target;
75
+ try {
76
+ return readFileSync(sidecarPath(), "utf8").trim() === expected ? target : null;
77
+ } catch {
78
+ return null;
79
+ }
54
80
  };
55
81
 
56
82
  /**
@@ -86,6 +112,10 @@ export async function downloadBinary({ log = () => {} } = {}) {
86
112
  // rename is atomic on POSIX; on Windows it fails over an existing file, so drop it first.
87
113
  if (existsSync(target)) try { unlinkSync(target); } catch { /* in use; rename will surface the error */ }
88
114
  renameSync(tmp, target);
115
+ // Record the installed sha so installedBinary() can detect a stale binary after an
116
+ // update without re-hashing the whole file on every launch. Best-effort: a missing
117
+ // sidecar just triggers one extra re-download next time.
118
+ try { writeFileSync(sidecarPath(), choice.sha256); } catch { /* sidecar is best-effort */ }
89
119
  log(`Installed ${choice.asset} -> ${target}`);
90
120
  return target;
91
121
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enigma-cli",
3
- "version": "1.16.2",
3
+ "version": "1.16.4",
4
4
  "description": "Everything you need to work with a coding agent: install shared policy skills for Claude Code, OpenAI Codex and opencode, and set up portable git security hooks.",
5
5
  "type": "module",
6
6
  "bin": {