@ekkos/cli 1.0.1 → 1.0.2

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.
@@ -525,7 +525,7 @@ function getEkkosEnv() {
525
525
  }
526
526
  // ekkOS-managed Claude installation path
527
527
  const EKKOS_CLAUDE_DIR = path.join(os.homedir(), '.ekkos', 'claude-code');
528
- const EKKOS_CLAUDE_BIN = path.join(EKKOS_CLAUDE_DIR, 'node_modules', '.bin', 'claude');
528
+ const EKKOS_CLAUDE_BIN = path.join(EKKOS_CLAUDE_DIR, 'node_modules', '.bin', isWindows ? 'claude.cmd' : 'claude');
529
529
  /**
530
530
  * Check if a Claude installation exists and get its version
531
531
  * Returns version string if found, null otherwise
@@ -701,7 +701,8 @@ function resolveGlobalClaudePath() {
701
701
  }
702
702
  }
703
703
  try {
704
- const result = (0, child_process_1.execSync)('which claude', { encoding: 'utf-8' }).trim();
704
+ const whichCmd = isWindows ? 'where' : 'which';
705
+ const result = (0, child_process_1.execSync)(`${whichCmd} claude`, { encoding: 'utf-8' }).trim().split('\n')[0];
705
706
  if (result && fs.existsSync(result)) {
706
707
  return result;
707
708
  }
@@ -709,7 +710,7 @@ function resolveGlobalClaudePath() {
709
710
  catch {
710
711
  // Ignore errors
711
712
  }
712
- return 'claude';
713
+ return isWindows ? 'claude.cmd' : 'claude';
713
714
  }
714
715
  /**
715
716
  * Sleep helper
@@ -903,6 +904,8 @@ async function run(options) {
903
904
  // ══════════════════════════════════════════════════════════════════════════
904
905
  if (options.dashboard) {
905
906
  try {
907
+ if (isWindows)
908
+ throw new Error('tmux not supported on Windows');
906
909
  const tmuxPath = (0, child_process_1.execSync)('which tmux', { encoding: 'utf-8' }).trim();
907
910
  if (tmuxPath) {
908
911
  launchWithDashboard(options);
@@ -910,7 +913,10 @@ async function run(options) {
910
913
  }
911
914
  }
912
915
  catch {
913
- console.log(chalk_1.default.yellow(' tmux not found. Install: brew install tmux'));
916
+ const installHint = isWindows
917
+ ? 'Dashboard mode requires tmux (not supported on Windows)'
918
+ : 'tmux not found. Install: brew install tmux';
919
+ console.log(chalk_1.default.yellow(` ${installHint}`));
914
920
  console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
915
921
  console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
916
922
  }
@@ -1752,7 +1758,8 @@ async function run(options) {
1752
1758
  const spawnedProcess = (0, child_process_1.spawn)(claudePath, args, {
1753
1759
  stdio: 'inherit',
1754
1760
  cwd: process.cwd(),
1755
- env: getEkkosEnv()
1761
+ env: getEkkosEnv(),
1762
+ shell: isWindows // Required on Windows to execute .cmd files
1756
1763
  });
1757
1764
  spawnedProcess.on('exit', (code) => process.exit(code ?? 0));
1758
1765
  spawnedProcess.on('error', (e) => {
@@ -1776,7 +1783,8 @@ async function run(options) {
1776
1783
  const spawnedProcess = (0, child_process_1.spawn)(claudePath, args, {
1777
1784
  stdio: 'inherit',
1778
1785
  cwd: process.cwd(),
1779
- env: getEkkosEnv()
1786
+ env: getEkkosEnv(),
1787
+ shell: isWindows // Required on Windows to execute .cmd files
1780
1788
  });
1781
1789
  spawnedProcess.on('exit', (code) => {
1782
1790
  process.exit(code ?? 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekkos/cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Setup ekkOS memory for AI coding assistants (Claude Code, Cursor, Windsurf)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {