@ekkos/cli 1.1.3 → 1.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.
- package/dist/commands/run.js +24 -13
- package/package.json +1 -1
package/dist/commands/run.js
CHANGED
|
@@ -639,24 +639,30 @@ function installEkkosClaudeVersion() {
|
|
|
639
639
|
* 3. npx with pinned version (fallback if install fails)
|
|
640
640
|
*/
|
|
641
641
|
function resolveClaudePath() {
|
|
642
|
-
//
|
|
642
|
+
// When 'latest', prefer system Claude (user keeps it updated via brew/npm)
|
|
643
|
+
if (PINNED_CLAUDE_VERSION === 'latest') {
|
|
644
|
+
const globalPath = resolveGlobalClaudePath();
|
|
645
|
+
if (globalPath !== 'claude' && fs.existsSync(globalPath)) {
|
|
646
|
+
return globalPath;
|
|
647
|
+
}
|
|
648
|
+
// No system Claude found — fall through to ekkOS-managed install
|
|
649
|
+
}
|
|
650
|
+
// ekkOS-managed installation (for pinned versions or no system Claude)
|
|
643
651
|
if (fs.existsSync(EKKOS_CLAUDE_BIN) && checkClaudeVersion(EKKOS_CLAUDE_BIN)) {
|
|
644
652
|
return EKKOS_CLAUDE_BIN;
|
|
645
653
|
}
|
|
646
|
-
//
|
|
654
|
+
// Auto-install to ekkOS-managed directory
|
|
647
655
|
if (installEkkosClaudeVersion()) {
|
|
648
656
|
if (fs.existsSync(EKKOS_CLAUDE_BIN)) {
|
|
649
657
|
return EKKOS_CLAUDE_BIN;
|
|
650
658
|
}
|
|
651
659
|
}
|
|
652
|
-
//
|
|
653
|
-
// This is rare - only happens if install failed
|
|
660
|
+
// Fall back to npx (rare - only if install failed)
|
|
654
661
|
return `npx:${PINNED_CLAUDE_VERSION}`;
|
|
655
662
|
}
|
|
656
663
|
/**
|
|
657
664
|
* Original resolve function for fallback to global install
|
|
658
665
|
*/
|
|
659
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
660
666
|
function resolveGlobalClaudePath() {
|
|
661
667
|
// Windows global paths
|
|
662
668
|
if (isWindows) {
|
|
@@ -898,17 +904,22 @@ async function run(options) {
|
|
|
898
904
|
// DASHBOARD MODE: Launch via tmux with isolated dashboard pane (60/40)
|
|
899
905
|
// ══════════════════════════════════════════════════════════════════════════
|
|
900
906
|
if (options.dashboard) {
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
907
|
+
if (isWindows) {
|
|
908
|
+
console.log(chalk_1.default.yellow(' Dashboard split-pane requires tmux (not available on Windows)'));
|
|
909
|
+
console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
|
|
910
|
+
console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
|
|
911
|
+
}
|
|
912
|
+
else {
|
|
913
|
+
try {
|
|
914
|
+
(0, child_process_1.execSync)('command -v tmux', { encoding: 'utf-8', stdio: 'pipe' }).trim();
|
|
904
915
|
launchWithDashboard(options);
|
|
905
916
|
return;
|
|
906
917
|
}
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
918
|
+
catch {
|
|
919
|
+
console.log(chalk_1.default.yellow(' tmux not found. Install: brew install tmux'));
|
|
920
|
+
console.log(chalk_1.default.gray(' Alternative: run "ekkos dashboard --latest" in a separate terminal'));
|
|
921
|
+
console.log(chalk_1.default.gray(' Continuing without dashboard...\n'));
|
|
922
|
+
}
|
|
912
923
|
}
|
|
913
924
|
}
|
|
914
925
|
// Generate instance ID for this run
|