@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.
@@ -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) — skipped on Windows (proxy-only mode)
255
- if (platform_1.isWindows) {
256
- spinner = (0, ora_1.default)('Hooks skipped (Windows proxy-only mode)').start();
257
- spinner.info('Hooks skipped (Windows uses proxy-only mode)');
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
- else {
261
- spinner = (0, ora_1.default)('Deploying hooks configuration...').start();
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
- else if (!options.skipHooks) {
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);
@@ -877,9 +877,8 @@ function launchWithDashboard(options) {
877
877
  }
878
878
  }
879
879
  /**
880
- * Launch dashboard in a separate Windows Terminal pane.
881
- * Unlike tmux, wt.exe opens a new split pane but doesn't manage the session —
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
- const dashCommand = `node "${ekkosCmd}" dashboard --wait-for-new --refresh 2000`;
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
- // wt.exe split-pane launches a new pane in the current Windows Terminal window
897
- // -V = vertical split, -s 0.4 = 40% width for dashboard, -d = working directory
898
- (0, child_process_1.execSync)(`wt.exe -w 0 split-pane -V -s 0.4 -d "${cwd}" cmd /c "${dashCommand}"`, { stdio: 'pipe' });
899
- console.log(chalk_1.default.cyan('\n Dashboard launched in right pane (40%)'));
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: launch dashboard in a separate Windows Terminal pane
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
- // Don't return continue to launch Claude in this terminal
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.'));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ekkos/cli",
3
- "version": "1.2.1",
3
+ "version": "1.2.2",
4
4
  "description": "Setup ekkOS memory for AI coding assistants (Claude Code, Cursor, Windsurf)",
5
5
  "main": "dist/index.js",
6
6
  "bin": {