@ekkos/cli 1.2.4 → 1.2.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 +52 -14
- package/package.json +1 -1
package/dist/commands/run.js
CHANGED
|
@@ -877,11 +877,13 @@ function launchWithDashboard(options) {
|
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
879
|
/**
|
|
880
|
-
* Launch
|
|
881
|
-
*
|
|
882
|
-
*
|
|
880
|
+
* Launch a NEW Windows Terminal window with Claude (left 60%) + dashboard (right 40%).
|
|
881
|
+
*
|
|
882
|
+
* wt.exe cannot split the CURRENT window from a script (microsoft/terminal#4656).
|
|
883
|
+
* Instead, we launch a new WT window with both panes pre-defined using semicolons,
|
|
884
|
+
* matching the macOS tmux approach (new session with both panes).
|
|
883
885
|
*/
|
|
884
|
-
function launchWithWindowsTerminal() {
|
|
886
|
+
function launchWithWindowsTerminal(options) {
|
|
885
887
|
const ekkosCmd = process.argv[1];
|
|
886
888
|
const cwd = process.cwd();
|
|
887
889
|
const launchTime = Date.now();
|
|
@@ -891,19 +893,54 @@ function launchWithWindowsTerminal() {
|
|
|
891
893
|
fs.writeFileSync(markerPath, `${launchTime}\n${cwd}`);
|
|
892
894
|
}
|
|
893
895
|
catch { }
|
|
896
|
+
// Build ekkos run args WITHOUT --dashboard (prevent recursion)
|
|
897
|
+
const runArgs = ['run'];
|
|
898
|
+
if (options.session)
|
|
899
|
+
runArgs.push('-s', options.session);
|
|
900
|
+
if (options.bypass)
|
|
901
|
+
runArgs.push('-b');
|
|
902
|
+
if (options.verbose)
|
|
903
|
+
runArgs.push('-v');
|
|
904
|
+
if (options.doctor)
|
|
905
|
+
runArgs.push('-d');
|
|
906
|
+
if (options.research)
|
|
907
|
+
runArgs.push('-r');
|
|
908
|
+
if (options.noInject)
|
|
909
|
+
runArgs.push('--skip-inject');
|
|
910
|
+
if (options.noDna)
|
|
911
|
+
runArgs.push('--skip-dna');
|
|
912
|
+
if (options.noProxy)
|
|
913
|
+
runArgs.push('--skip-proxy');
|
|
914
|
+
// Escape paths for cmd shell
|
|
915
|
+
const nodeExe = process.execPath;
|
|
916
|
+
const claudeCmd = `"${nodeExe}" "${ekkosCmd}" ${runArgs.join(' ')}`;
|
|
917
|
+
const dashCmd = `"${nodeExe}" "${ekkosCmd}" dashboard --wait-for-new --refresh 2000`;
|
|
894
918
|
try {
|
|
895
|
-
//
|
|
896
|
-
//
|
|
897
|
-
//
|
|
898
|
-
|
|
899
|
-
|
|
919
|
+
// Launch new WT window with both panes pre-defined:
|
|
920
|
+
// Pane 0 (left, 60%): Claude Code
|
|
921
|
+
// Pane 1 (right, 40%): Dashboard
|
|
922
|
+
// Uses semicolon syntax to define multiple panes in one wt.exe invocation.
|
|
923
|
+
// --title sets pane titles for easy identification.
|
|
924
|
+
const wtCmd = [
|
|
925
|
+
'wt.exe',
|
|
926
|
+
'--title "Claude Code"',
|
|
927
|
+
`-d "${cwd}"`,
|
|
928
|
+
claudeCmd,
|
|
929
|
+
'\\;', // semicolon separator (escaped for cmd)
|
|
930
|
+
'split-pane -V -s 0.4',
|
|
931
|
+
'--title "ekkOS Dashboard"',
|
|
932
|
+
`-d "${cwd}"`,
|
|
933
|
+
dashCmd,
|
|
934
|
+
].join(' ');
|
|
935
|
+
(0, child_process_1.execSync)(wtCmd, { stdio: 'pipe' });
|
|
936
|
+
console.log(chalk_1.default.cyan('\n Launched Claude Code + Dashboard in Windows Terminal'));
|
|
937
|
+
console.log(chalk_1.default.gray(' Claude (left 60%) | Dashboard (right 40%)'));
|
|
900
938
|
console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys\n'));
|
|
901
939
|
}
|
|
902
940
|
catch (err) {
|
|
903
|
-
console.log(chalk_1.default.yellow(` Windows Terminal
|
|
941
|
+
console.log(chalk_1.default.yellow(` Windows Terminal launch failed: ${err.message}`));
|
|
904
942
|
console.log(chalk_1.default.gray(' Run "ekkos dashboard --latest" in a separate terminal'));
|
|
905
943
|
}
|
|
906
|
-
// Don't return — run() continues to launch Claude in this (left) terminal
|
|
907
944
|
}
|
|
908
945
|
async function run(options) {
|
|
909
946
|
// ══════════════════════════════════════════════════════════════════════════
|
|
@@ -939,11 +976,12 @@ async function run(options) {
|
|
|
939
976
|
// ══════════════════════════════════════════════════════════════════════════
|
|
940
977
|
if (options.dashboard) {
|
|
941
978
|
if (isWindows) {
|
|
942
|
-
// Windows:
|
|
979
|
+
// Windows: launch NEW WT window with Claude (left) + dashboard (right)
|
|
980
|
+
// wt.exe cannot split the current window from a script (microsoft/terminal#4656)
|
|
943
981
|
try {
|
|
944
982
|
(0, child_process_1.execSync)('where wt.exe', { encoding: 'utf-8', stdio: 'pipe' });
|
|
945
|
-
launchWithWindowsTerminal();
|
|
946
|
-
//
|
|
983
|
+
launchWithWindowsTerminal(options);
|
|
984
|
+
return; // Both panes launched in new window — exit this terminal
|
|
947
985
|
}
|
|
948
986
|
catch {
|
|
949
987
|
console.log(chalk_1.default.yellow(' Windows Terminal (wt.exe) not found.'));
|