@ekkos/cli 1.2.3 → 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 -13
- package/package.json +1 -1
package/dist/commands/run.js
CHANGED
|
@@ -877,10 +877,13 @@ function launchWithDashboard(options) {
|
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
879
|
/**
|
|
880
|
-
* Launch
|
|
881
|
-
*
|
|
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).
|
|
882
885
|
*/
|
|
883
|
-
function launchWithWindowsTerminal() {
|
|
886
|
+
function launchWithWindowsTerminal(options) {
|
|
884
887
|
const ekkosCmd = process.argv[1];
|
|
885
888
|
const cwd = process.cwd();
|
|
886
889
|
const launchTime = Date.now();
|
|
@@ -890,19 +893,54 @@ function launchWithWindowsTerminal() {
|
|
|
890
893
|
fs.writeFileSync(markerPath, `${launchTime}\n${cwd}`);
|
|
891
894
|
}
|
|
892
895
|
catch { }
|
|
893
|
-
|
|
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
|
-
|
|
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%)'));
|
|
899
938
|
console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys\n'));
|
|
900
939
|
}
|
|
901
940
|
catch (err) {
|
|
902
|
-
console.log(chalk_1.default.yellow(` Windows Terminal
|
|
941
|
+
console.log(chalk_1.default.yellow(` Windows Terminal launch failed: ${err.message}`));
|
|
903
942
|
console.log(chalk_1.default.gray(' Run "ekkos dashboard --latest" in a separate terminal'));
|
|
904
943
|
}
|
|
905
|
-
// Don't return — run() continues to launch Claude in this (left) terminal
|
|
906
944
|
}
|
|
907
945
|
async function run(options) {
|
|
908
946
|
// ══════════════════════════════════════════════════════════════════════════
|
|
@@ -938,11 +976,12 @@ async function run(options) {
|
|
|
938
976
|
// ══════════════════════════════════════════════════════════════════════════
|
|
939
977
|
if (options.dashboard) {
|
|
940
978
|
if (isWindows) {
|
|
941
|
-
// 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)
|
|
942
981
|
try {
|
|
943
982
|
(0, child_process_1.execSync)('where wt.exe', { encoding: 'utf-8', stdio: 'pipe' });
|
|
944
|
-
launchWithWindowsTerminal();
|
|
945
|
-
//
|
|
983
|
+
launchWithWindowsTerminal(options);
|
|
984
|
+
return; // Both panes launched in new window — exit this terminal
|
|
946
985
|
}
|
|
947
986
|
catch {
|
|
948
987
|
console.log(chalk_1.default.yellow(' Windows Terminal (wt.exe) not found.'));
|