@ngocsangairvds/vsaf 3.1.4 → 3.1.5

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/package.json +1 -1
  2. package/src/utils.js +4 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngocsangairvds/vsaf",
3
- "version": "3.1.4",
3
+ "version": "3.1.5",
4
4
  "description": "VSAF — Agentic AI SDLC Framework. 3 integrated tools: BMAD, GitNexus, Superpowers. 2-layer review.",
5
5
  "keywords": ["claude", "claude-code", "ai", "sdlc", "framework", "bmad", "gitnexus", "superpowers"],
6
6
  "bin": {
package/src/utils.js CHANGED
@@ -14,12 +14,14 @@ const step = (msg) => console.log(`\n\x1b[1m${msg}\x1b[0m`);
14
14
  const isWindows = process.platform === 'win32';
15
15
 
16
16
  function hasCommand(cmd) {
17
+ // Try --version first (works on most CLIs across all platforms)
17
18
  const versionCheck = spawnSync(cmd, ['--version'], { stdio: 'ignore', shell: isWindows });
18
19
  if (versionCheck.status === 0) return true;
19
20
 
20
- // Some CLIs don't support --version but are still available on PATH.
21
+ // Fallback: check if command exists on PATH
21
22
  if (isWindows) {
22
- const whereCheck = spawnSync('where', [cmd], { stdio: 'ignore', shell: true });
23
+ // 'where' is a native Windows command; run as a single string via shell
24
+ const whereCheck = spawnSync(`where "${cmd}"`, { stdio: 'ignore', shell: true });
23
25
  return whereCheck.status === 0;
24
26
  } else {
25
27
  const pathCheck = spawnSync('sh', ['-c', `command -v "${cmd}"`], { stdio: 'ignore', shell: false });