@ekkos/cli 1.2.1 → 1.2.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.
- package/dist/commands/init.js +9 -19
- package/dist/commands/run.js +34 -11
- package/package.json +1 -1
package/dist/commands/init.js
CHANGED
|
@@ -251,28 +251,18 @@ async function deployForClaude(apiKey, userId, options) {
|
|
|
251
251
|
catch (error) {
|
|
252
252
|
spinner.fail('MCP server configuration failed');
|
|
253
253
|
}
|
|
254
|
-
// Settings.json (hook registration)
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
254
|
+
// Settings.json (hook registration)
|
|
255
|
+
spinner = (0, ora_1.default)('Deploying hooks configuration...').start();
|
|
256
|
+
try {
|
|
257
|
+
(0, settings_1.deployClaudeSettings)();
|
|
258
258
|
result.settings = true;
|
|
259
|
+
spinner.succeed('Hooks configuration');
|
|
259
260
|
}
|
|
260
|
-
|
|
261
|
-
spinner
|
|
262
|
-
try {
|
|
263
|
-
(0, settings_1.deployClaudeSettings)();
|
|
264
|
-
result.settings = true;
|
|
265
|
-
spinner.succeed('Hooks configuration');
|
|
266
|
-
}
|
|
267
|
-
catch (error) {
|
|
268
|
-
spinner.fail('Hooks configuration failed');
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// Hook scripts — skipped on Windows
|
|
272
|
-
if (platform_1.isWindows) {
|
|
273
|
-
// Skip hook scripts on Windows
|
|
261
|
+
catch (error) {
|
|
262
|
+
spinner.fail('Hooks configuration failed');
|
|
274
263
|
}
|
|
275
|
-
|
|
264
|
+
// Hook scripts
|
|
265
|
+
if (!options.skipHooks) {
|
|
276
266
|
spinner = (0, ora_1.default)('Deploying hook scripts...').start();
|
|
277
267
|
try {
|
|
278
268
|
result.hooks = (0, hooks_1.deployHooks)(apiKey);
|
package/dist/commands/run.js
CHANGED
|
@@ -877,9 +877,8 @@ function launchWithDashboard(options) {
|
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
879
|
/**
|
|
880
|
-
* Launch
|
|
881
|
-
*
|
|
882
|
-
* Claude runs in the original terminal, dashboard runs in the new pane.
|
|
880
|
+
* Launch Claude Code in a new Windows Terminal pane, dashboard stays in current terminal.
|
|
881
|
+
* Dashboard runs where the user typed the command; Claude opens alongside it.
|
|
883
882
|
*/
|
|
884
883
|
function launchWithWindowsTerminal(options) {
|
|
885
884
|
const ekkosCmd = process.argv[1];
|
|
@@ -891,18 +890,42 @@ function launchWithWindowsTerminal(options) {
|
|
|
891
890
|
fs.writeFileSync(markerPath, `${launchTime}\n${cwd}`);
|
|
892
891
|
}
|
|
893
892
|
catch { }
|
|
894
|
-
|
|
893
|
+
// Build the ekkos run command WITHOUT --dashboard (prevent recursion)
|
|
894
|
+
const runArgs = ['run'];
|
|
895
|
+
if (options.session)
|
|
896
|
+
runArgs.push('-s', options.session);
|
|
897
|
+
if (options.bypass)
|
|
898
|
+
runArgs.push('-b');
|
|
899
|
+
if (options.verbose)
|
|
900
|
+
runArgs.push('-v');
|
|
901
|
+
if (options.doctor)
|
|
902
|
+
runArgs.push('-d');
|
|
903
|
+
if (options.research)
|
|
904
|
+
runArgs.push('-r');
|
|
905
|
+
if (options.noInject)
|
|
906
|
+
runArgs.push('--skip-inject');
|
|
907
|
+
if (options.noDna)
|
|
908
|
+
runArgs.push('--skip-dna');
|
|
909
|
+
if (options.noProxy)
|
|
910
|
+
runArgs.push('--skip-proxy');
|
|
911
|
+
const runCommand = `node "${ekkosCmd}" ${runArgs.join(' ')}`;
|
|
895
912
|
try {
|
|
896
|
-
//
|
|
897
|
-
// -V = vertical split, -s 0.
|
|
898
|
-
(0, child_process_1.execSync)(`wt.exe -w 0 split-pane -V -s 0.
|
|
899
|
-
console.log(chalk_1.default.cyan('\n
|
|
900
|
-
console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys'));
|
|
913
|
+
// Launch Claude Code in a new pane (60% width), dashboard stays in current pane
|
|
914
|
+
// -V = vertical split, -s 0.6 = 60% width for Claude
|
|
915
|
+
(0, child_process_1.execSync)(`wt.exe -w 0 split-pane -V -s 0.6 -d "${cwd}" cmd /c "${runCommand}"`, { stdio: 'pipe' });
|
|
916
|
+
console.log(chalk_1.default.cyan('\n Claude Code launched in right pane (60%)'));
|
|
917
|
+
console.log(chalk_1.default.gray(' Switch panes: Alt+Arrow keys\n'));
|
|
901
918
|
}
|
|
902
919
|
catch (err) {
|
|
903
920
|
console.log(chalk_1.default.yellow(` Windows Terminal split failed: ${err.message}`));
|
|
904
921
|
console.log(chalk_1.default.gray(' Run "ekkos dashboard --latest" in a separate terminal'));
|
|
922
|
+
return;
|
|
905
923
|
}
|
|
924
|
+
// Dashboard runs in THIS terminal (the pane user launched from)
|
|
925
|
+
// Use dynamic import to avoid circular dependency
|
|
926
|
+
Promise.resolve().then(() => __importStar(require('./dashboard'))).then(({ dashboardCommand }) => {
|
|
927
|
+
dashboardCommand.parseAsync(['--wait-for-new', '--refresh', '2000'], { from: 'user' });
|
|
928
|
+
});
|
|
906
929
|
}
|
|
907
930
|
async function run(options) {
|
|
908
931
|
// ══════════════════════════════════════════════════════════════════════════
|
|
@@ -938,11 +961,11 @@ async function run(options) {
|
|
|
938
961
|
// ══════════════════════════════════════════════════════════════════════════
|
|
939
962
|
if (options.dashboard) {
|
|
940
963
|
if (isWindows) {
|
|
941
|
-
// Windows:
|
|
964
|
+
// Windows: Claude opens in new pane, dashboard stays in this terminal
|
|
942
965
|
try {
|
|
943
966
|
(0, child_process_1.execSync)('where wt.exe', { encoding: 'utf-8', stdio: 'pipe' });
|
|
944
967
|
launchWithWindowsTerminal(options);
|
|
945
|
-
//
|
|
968
|
+
return; // Dashboard runs in this terminal, Claude is in the new pane
|
|
946
969
|
}
|
|
947
970
|
catch {
|
|
948
971
|
console.log(chalk_1.default.yellow(' Windows Terminal (wt.exe) not found.'));
|