@ekkos/cli 1.2.5 → 1.2.6
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 +18 -24
- package/package.json +1 -1
package/dist/commands/run.js
CHANGED
|
@@ -880,11 +880,10 @@ function launchWithDashboard(options) {
|
|
|
880
880
|
* Launch a NEW Windows Terminal window with Claude (left 60%) + dashboard (right 40%).
|
|
881
881
|
*
|
|
882
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
|
|
884
|
-
*
|
|
883
|
+
* Instead, we launch a new WT window with both panes pre-defined using a temp .cmd
|
|
884
|
+
* file to avoid Windows quoting hell with nested paths containing spaces.
|
|
885
885
|
*/
|
|
886
886
|
function launchWithWindowsTerminal(options) {
|
|
887
|
-
const ekkosCmd = process.argv[1];
|
|
888
887
|
const cwd = process.cwd();
|
|
889
888
|
const launchTime = Date.now();
|
|
890
889
|
// Write marker file so dashboard knows to wait for a NEW session
|
|
@@ -894,6 +893,7 @@ function launchWithWindowsTerminal(options) {
|
|
|
894
893
|
}
|
|
895
894
|
catch { }
|
|
896
895
|
// Build ekkos run args WITHOUT --dashboard (prevent recursion)
|
|
896
|
+
// Uses `ekkos` directly — it's in PATH since user ran `ekkos --dashboard`
|
|
897
897
|
const runArgs = ['run'];
|
|
898
898
|
if (options.session)
|
|
899
899
|
runArgs.push('-s', options.session);
|
|
@@ -911,28 +911,15 @@ function launchWithWindowsTerminal(options) {
|
|
|
911
911
|
runArgs.push('--skip-dna');
|
|
912
912
|
if (options.noProxy)
|
|
913
913
|
runArgs.push('--skip-proxy');
|
|
914
|
-
//
|
|
915
|
-
const
|
|
916
|
-
const
|
|
917
|
-
|
|
914
|
+
// Write a temp batch file to avoid all quoting issues
|
|
915
|
+
const batPath = path.join(os.tmpdir(), `ekkos-wt-${launchTime}.cmd`);
|
|
916
|
+
const batContent = [
|
|
917
|
+
'@echo off',
|
|
918
|
+
`wt --title "Claude Code" -d "${cwd}" ekkos ${runArgs.join(' ')} ; split-pane -V -s 0.4 --title "ekkOS Dashboard" -d "${cwd}" ekkos dashboard --wait-for-new --refresh 2000`,
|
|
919
|
+
].join('\r\n');
|
|
918
920
|
try {
|
|
919
|
-
|
|
920
|
-
|
|
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' });
|
|
921
|
+
fs.writeFileSync(batPath, batContent);
|
|
922
|
+
(0, child_process_1.execSync)(`"${batPath}"`, { stdio: 'pipe' });
|
|
936
923
|
console.log(chalk_1.default.cyan('\n Launched Claude Code + Dashboard in Windows Terminal'));
|
|
937
924
|
console.log(chalk_1.default.gray(' Claude (left 60%) | Dashboard (right 40%)'));
|
|
938
925
|
console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys\n'));
|
|
@@ -941,6 +928,13 @@ function launchWithWindowsTerminal(options) {
|
|
|
941
928
|
console.log(chalk_1.default.yellow(` Windows Terminal launch failed: ${err.message}`));
|
|
942
929
|
console.log(chalk_1.default.gray(' Run "ekkos dashboard --latest" in a separate terminal'));
|
|
943
930
|
}
|
|
931
|
+
finally {
|
|
932
|
+
// Cleanup temp batch file
|
|
933
|
+
try {
|
|
934
|
+
fs.unlinkSync(batPath);
|
|
935
|
+
}
|
|
936
|
+
catch { }
|
|
937
|
+
}
|
|
944
938
|
}
|
|
945
939
|
async function run(options) {
|
|
946
940
|
// ══════════════════════════════════════════════════════════════════════════
|