neoctl 0.2.23 → 0.2.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neoctl",
3
- "version": "0.2.23",
3
+ "version": "0.2.24",
4
4
  "description": "TypeScript scaffold for a streaming agent runtime with a REPL UI layer.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,13 +25,13 @@
25
25
  "node": ">=20"
26
26
  },
27
27
  "scripts": {
28
- "postinstall": "node scripts/verify-ripgrep.cjs --skip-git",
28
+ "postinstall": "node scripts/verify-ripgrep.cjs --skip-git",
29
29
  "vendor:rg": "node scripts/install-ripgrep.cjs",
30
30
  "vendor:rg:all": "node scripts/install-ripgrep.cjs --all",
31
- "verify:rg": "node scripts/verify-ripgrep.cjs",
31
+ "verify:rg": "node scripts/verify-ripgrep.cjs",
32
32
  "build": "node -e \"import('node:fs/promises').then(fs => fs.rm('dist', { recursive: true, force: true })).catch(() => process.exit(1))\" && tsc -p tsconfig.json && node scripts/copy-model-metadata.mjs",
33
33
  "prepare": "npm run build",
34
- "prepack": "npm run build && npm run verify:rg",
34
+ "prepack": "npm run build && npm run verify:rg",
35
35
  "release:local": "node scripts/release-local.mjs",
36
36
  "release-local": "node scripts/release-local.mjs",
37
37
  "standalone": "npm run build && node scripts/build-standalone.mjs",
@@ -28,12 +28,14 @@ for (const [platformKey, executable, format] of TARGETS) {
28
28
  }
29
29
 
30
30
  const executablePath = path.join(VENDOR_ROOT, platformKey, executable);
31
- // Windows does not preserve POSIX executable mode bits when checking out or
32
- // unpacking packages. The non-Windows binaries are only executed on their
33
- // matching platforms, where npm/tar preserves the 0755 mode.
31
+ // Packages published from Windows can lose POSIX executable mode bits in the
32
+ // generated tarball. Restore them during postinstall before validating.
34
33
  if (process.platform !== "win32" && format !== "pe" && (fs.statSync(executablePath).mode & 0o111) === 0) {
35
- throw new Error(`Required ripgrep binary is not executable: ${path.relative(PROJECT_ROOT, executablePath)}`);
36
- }
34
+ fs.chmodSync(executablePath, fs.statSync(executablePath).mode | 0o755);
35
+ if ((fs.statSync(executablePath).mode & 0o111) === 0) {
36
+ throw new Error(`Required ripgrep binary is not executable: ${path.relative(PROJECT_ROOT, executablePath)}`);
37
+ }
38
+ }
37
39
  assertBinaryFormat(executablePath, format, platformKey);
38
40
  const manifestPath = path.join(VENDOR_ROOT, platformKey, "manifest.json");
39
41
  const manifest = JSON.parse(fs.readFileSync(manifestPath, "utf8"));