@enruana/claude-orka 0.4.3 → 0.4.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.
@@ -0,0 +1,127 @@
1
+ # Claude-Orka Custom tmux Theme
2
+ # This configuration is automatically applied to all Claude-Orka sessions
3
+
4
+ # ============================================
5
+ # GENERAL SETTINGS
6
+ # ============================================
7
+
8
+ # Enable mouse support for easier pane navigation
9
+ set -g mouse on
10
+
11
+ # Start windows and panes at 1 (not 0)
12
+ set -g base-index 1
13
+ setw -g pane-base-index 1
14
+
15
+ # Increase scrollback buffer
16
+ set -g history-limit 10000
17
+
18
+ # Reduce escape time (better for vim users)
19
+ set -sg escape-time 0
20
+
21
+ # Enable focus events
22
+ set -g focus-events on
23
+
24
+ # Enable 256 colors
25
+ set -g default-terminal "screen-256color"
26
+
27
+ # ============================================
28
+ # STATUS BAR THEME
29
+ # ============================================
30
+
31
+ # Status bar position
32
+ set -g status-position top
33
+
34
+ # Status bar update interval
35
+ set -g status-interval 1
36
+
37
+ # Status bar colors
38
+ set -g status-style bg=colour234,fg=colour137
39
+
40
+ # Status bar length
41
+ set -g status-left-length 50
42
+ set -g status-right-length 100
43
+
44
+ # Left side: Session name with Orka branding
45
+ set -g status-left '#[fg=colour232,bg=colour208,bold] 🎭 ORKA #[fg=colour208,bg=colour236,nobold] #[fg=colour208,bg=colour236] #S #[fg=colour236,bg=colour234,nobold] '
46
+
47
+ # Right side: Project info and time
48
+ set -g status-right '#[fg=colour236,bg=colour234]#[fg=colour137,bg=colour236] #{pane_current_path} #[fg=colour240,bg=colour236]#[fg=colour250,bg=colour240] %Y-%m-%d #[fg=colour245,bg=colour240]#[fg=colour232,bg=colour245,bold] %H:%M:%S '
49
+
50
+ # Window status format
51
+ setw -g window-status-format '#[fg=colour234,bg=colour236]#[fg=colour137,bg=colour236] #I:#W #[fg=colour236,bg=colour234]'
52
+
53
+ # Current window status format (highlighted)
54
+ setw -g window-status-current-format '#[fg=colour234,bg=colour208]#[fg=colour232,bg=colour208,bold] #I:#W #[fg=colour208,bg=colour234,nobold]'
55
+
56
+ # Window with activity status
57
+ setw -g window-status-activity-style fg=colour166,bg=colour236
58
+
59
+ # ============================================
60
+ # PANE BORDERS
61
+ # ============================================
62
+
63
+ # Pane border colors
64
+ set -g pane-border-style fg=colour236
65
+ set -g pane-active-border-style fg=colour208
66
+
67
+ # Pane border format (show pane title)
68
+ set -g pane-border-format '#[fg=colour208,bg=colour234] #{pane_index} #{pane_current_command} '
69
+ set -g pane-border-status top
70
+
71
+ # ============================================
72
+ # MESSAGES & COMMAND PROMPT
73
+ # ============================================
74
+
75
+ # Command prompt style
76
+ set -g message-style fg=colour232,bg=colour208,bold
77
+
78
+ # Command prompt message style
79
+ set -g message-command-style fg=colour232,bg=colour166
80
+
81
+ # ============================================
82
+ # CLOCK MODE
83
+ # ============================================
84
+
85
+ # Clock color (prefix + t)
86
+ setw -g clock-mode-colour colour208
87
+
88
+ # ============================================
89
+ # WINDOW MODES
90
+ # ============================================
91
+
92
+ # Copy mode highlighting
93
+ setw -g mode-style fg=colour232,bg=colour208
94
+
95
+ # ============================================
96
+ # KEY BINDINGS (Optional enhancements)
97
+ # ============================================
98
+
99
+ # Reload config easily (prefix + r)
100
+ bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
101
+
102
+ # Better pane splitting (keep current directory)
103
+ bind | split-window -h -c "#{pane_current_path}"
104
+ bind - split-window -v -c "#{pane_current_path}"
105
+
106
+ # Pane navigation with vim-like keys
107
+ bind h select-pane -L
108
+ bind j select-pane -D
109
+ bind k select-pane -U
110
+ bind l select-pane -R
111
+
112
+ # Resize panes with vim-like keys
113
+ bind -r H resize-pane -L 5
114
+ bind -r J resize-pane -D 5
115
+ bind -r K resize-pane -U 5
116
+ bind -r L resize-pane -R 5
117
+
118
+ # ============================================
119
+ # VISUAL INDICATORS
120
+ # ============================================
121
+
122
+ # Bell/Activity
123
+ set -g visual-activity off
124
+ set -g visual-bell off
125
+ set -g visual-silence off
126
+ setw -g monitor-activity on
127
+ set -g bell-action none
package/README.md CHANGED
@@ -136,6 +136,41 @@ orka status
136
136
  - **Fork management** - Create, export, merge, and close forks visually
137
137
  - **Status indicators** - Visual distinction for active, saved, merged, and closed forks
138
138
 
139
+ ### 🎨 Custom tmux Theme
140
+
141
+ - **Automatic branding** - Claude-Orka sessions get a custom orange theme
142
+ - **Enhanced status bar** - Shows session name, project path, and current time
143
+ - **Visual hierarchy** - Distinct colors for active/inactive panes and windows
144
+ - **Mouse support** - Click to select panes and windows
145
+ - **Vim-like navigation** - Optional h/j/k/l keys for pane movement
146
+ - **Persistent configuration** - Theme automatically applied to all new sessions
147
+
148
+ The custom theme makes it easy to distinguish Claude-Orka managed sessions from regular tmux sessions. The orange branding 🎭 appears in the status bar, with the session name and project information clearly visible.
149
+
150
+ **Customization:**
151
+
152
+ To modify the theme, edit `.tmux.orka.conf` in your Claude-Orka installation:
153
+
154
+ ```bash
155
+ # Find your global installation
156
+ npm root -g
157
+ # Edit the config
158
+ vim $(npm root -g)/@enruana/claude-orka/.tmux.orka.conf
159
+ ```
160
+
161
+ Or create your own theme file and source it manually:
162
+ ```bash
163
+ # After creating a session
164
+ tmux source-file ~/.my-custom-theme.conf -t <session-name>
165
+ ```
166
+
167
+ **Key Features of the Theme:**
168
+ - **Orange highlights** (#208) for active windows and Orka branding
169
+ - **Top status bar** with session info
170
+ - **Pane borders** with titles showing current command
171
+ - **Enhanced readability** with high contrast colors
172
+ - **Powerline-style separators** for a modern look
173
+
139
174
  ---
140
175
 
141
176
  ## CLI Reference
@@ -1186,6 +1221,32 @@ interface ForkSummary {
1186
1221
 
1187
1222
  The Electron UI provides a visual interface for managing Claude Code sessions and forks. It automatically launches when you create or resume a session.
1188
1223
 
1224
+ ### Screenshots
1225
+
1226
+ **Active Fork with Visual Hierarchy**
1227
+
1228
+ ![Active Fork](https://raw.githubusercontent.com/enruana/claude-orka/refs/heads/main/public/1-fork.png)
1229
+
1230
+ *Visual session tree showing main branch and an active fork with parent-child relationship*
1231
+
1232
+ ---
1233
+
1234
+ **Closed and Merged Forks**
1235
+
1236
+ ![Closed and Merged Forks](https://raw.githubusercontent.com/enruana/claude-orka/refs/heads/main/public/2-forks-closed-merged.png)
1237
+
1238
+ *Compact visual representation: Red circles for closed forks, green circles for merged forks*
1239
+
1240
+ ---
1241
+
1242
+ **Fork Info Modal**
1243
+
1244
+ ![Fork Merged Dialog](https://raw.githubusercontent.com/enruana/claude-orka/refs/heads/main/public/3-fork-merged-dialog.png)
1245
+
1246
+ *Detailed fork information modal with export file access for merged forks*
1247
+
1248
+ ---
1249
+
1189
1250
  ### Features
1190
1251
 
1191
1252
  #### Visual Session Tree
package/dist/cli.js CHANGED
@@ -3,12 +3,12 @@
3
3
  // src/cli/index.ts
4
4
  import { Command } from "commander";
5
5
  import { readFileSync } from "fs";
6
- import { fileURLToPath as fileURLToPath2 } from "url";
7
- import { dirname as dirname2, join } from "path";
6
+ import { fileURLToPath as fileURLToPath3 } from "url";
7
+ import { dirname as dirname3, join as join2 } from "path";
8
8
 
9
9
  // src/core/StateManager.ts
10
- import path3 from "path";
11
- import fs3 from "fs-extra";
10
+ import path4 from "path";
11
+ import fs4 from "fs-extra";
12
12
 
13
13
  // src/utils/tmux.ts
14
14
  import execa from "execa";
@@ -68,6 +68,11 @@ var Logger = class {
68
68
  var logger = new Logger();
69
69
 
70
70
  // src/utils/tmux.ts
71
+ import * as path2 from "path";
72
+ import * as fs2 from "fs";
73
+ import { fileURLToPath } from "url";
74
+ var __filename = fileURLToPath(import.meta.url);
75
+ var __dirname = path2.dirname(__filename);
71
76
  var TmuxError = class extends Error {
72
77
  constructor(message, command, originalError) {
73
78
  super(message);
@@ -96,6 +101,7 @@ var TmuxCommands = class {
96
101
  logger.debug(`Creating tmux session: ${name} at ${projectPath}`);
97
102
  await execa("tmux", ["new-session", "-d", "-s", name, "-c", projectPath]);
98
103
  logger.info(`Tmux session created: ${name}`);
104
+ await this.applyOrkaTheme(name);
99
105
  } catch (error) {
100
106
  throw new TmuxError(
101
107
  `Failed to create tmux session: ${name}`,
@@ -104,6 +110,37 @@ var TmuxCommands = class {
104
110
  );
105
111
  }
106
112
  }
113
+ /**
114
+ * Apply Claude-Orka custom tmux theme to a session
115
+ */
116
+ static async applyOrkaTheme(sessionName) {
117
+ try {
118
+ const possiblePaths = [
119
+ // When installed globally via npm
120
+ path2.join(__dirname, "../../.tmux.orka.conf"),
121
+ // When running from source
122
+ path2.join(process.cwd(), ".tmux.orka.conf"),
123
+ // Fallback: check in the module directory
124
+ path2.join(__dirname, "../../../.tmux.orka.conf")
125
+ ];
126
+ let configPath = null;
127
+ for (const p of possiblePaths) {
128
+ if (fs2.existsSync(p)) {
129
+ configPath = p;
130
+ break;
131
+ }
132
+ }
133
+ if (!configPath) {
134
+ logger.warn("Claude-Orka tmux config not found, skipping theme application");
135
+ return;
136
+ }
137
+ logger.debug(`Applying Orka theme from: ${configPath}`);
138
+ await execa("tmux", ["source-file", "-t", sessionName, configPath]);
139
+ logger.info("Claude-Orka theme applied successfully");
140
+ } catch (error) {
141
+ logger.warn("Failed to apply Orka theme, continuing with default tmux theme", error);
142
+ }
143
+ }
107
144
  /**
108
145
  * Abrir una terminal que se adjunte a una sesión tmux existente
109
146
  * (Solo macOS por ahora)
@@ -386,18 +423,18 @@ var TmuxCommands = class {
386
423
  };
387
424
 
388
425
  // src/utils/claude-history.ts
389
- import fs2 from "fs-extra";
426
+ import fs3 from "fs-extra";
390
427
  import os from "os";
391
- import path2 from "path";
392
- var CLAUDE_HISTORY_PATH = path2.join(os.homedir(), ".claude", "history.jsonl");
428
+ import path3 from "path";
429
+ var CLAUDE_HISTORY_PATH = path3.join(os.homedir(), ".claude", "history.jsonl");
393
430
  async function readClaudeHistory() {
394
431
  try {
395
- const exists = await fs2.pathExists(CLAUDE_HISTORY_PATH);
432
+ const exists = await fs3.pathExists(CLAUDE_HISTORY_PATH);
396
433
  if (!exists) {
397
434
  logger.warn(`Claude history file not found: ${CLAUDE_HISTORY_PATH}`);
398
435
  return [];
399
436
  }
400
- const content = await fs2.readFile(CLAUDE_HISTORY_PATH, "utf-8");
437
+ const content = await fs3.readFile(CLAUDE_HISTORY_PATH, "utf-8");
401
438
  const lines = content.trim().split("\n").filter(Boolean);
402
439
  const entries = [];
403
440
  for (const line of lines) {
@@ -440,9 +477,9 @@ var StateManager = class {
440
477
  orkaDir;
441
478
  statePath;
442
479
  constructor(projectPath) {
443
- this.projectPath = path3.resolve(projectPath);
444
- this.orkaDir = path3.join(this.projectPath, ".claude-orka");
445
- this.statePath = path3.join(this.orkaDir, "state.json");
480
+ this.projectPath = path4.resolve(projectPath);
481
+ this.orkaDir = path4.join(this.projectPath, ".claude-orka");
482
+ this.statePath = path4.join(this.orkaDir, "state.json");
446
483
  }
447
484
  /**
448
485
  * Initialize StateManager
@@ -451,7 +488,7 @@ var StateManager = class {
451
488
  async initialize() {
452
489
  logger.debug("Initializing StateManager");
453
490
  await this.ensureDirectories();
454
- if (!await fs3.pathExists(this.statePath)) {
491
+ if (!await fs4.pathExists(this.statePath)) {
455
492
  logger.info("Creating initial state.json");
456
493
  const initialState = {
457
494
  version: "1.0.0",
@@ -467,7 +504,7 @@ var StateManager = class {
467
504
  * Create directory structure
468
505
  */
469
506
  async ensureDirectories() {
470
- await fs3.ensureDir(this.orkaDir);
507
+ await fs4.ensureDir(this.orkaDir);
471
508
  logger.debug("Directories ensured");
472
509
  }
473
510
  /**
@@ -475,7 +512,7 @@ var StateManager = class {
475
512
  */
476
513
  async read() {
477
514
  try {
478
- const content = await fs3.readFile(this.statePath, "utf-8");
515
+ const content = await fs4.readFile(this.statePath, "utf-8");
479
516
  return JSON.parse(content);
480
517
  } catch (error) {
481
518
  logger.error("Failed to read state:", error);
@@ -488,7 +525,7 @@ var StateManager = class {
488
525
  async save(state) {
489
526
  try {
490
527
  state.lastUpdated = (/* @__PURE__ */ new Date()).toISOString();
491
- await fs3.writeFile(this.statePath, JSON.stringify(state, null, 2), "utf-8");
528
+ await fs4.writeFile(this.statePath, JSON.stringify(state, null, 2), "utf-8");
492
529
  logger.debug("State saved");
493
530
  } catch (error) {
494
531
  logger.error("Failed to save state:", error);
@@ -704,8 +741,8 @@ var StateManager = class {
704
741
  */
705
742
  async saveContext(type, id, content) {
706
743
  const contextPath = type === "session" ? this.getSessionContextPath(id) : this.getForkContextPath(id);
707
- const fullPath = path3.join(this.projectPath, contextPath);
708
- await fs3.writeFile(fullPath, content, "utf-8");
744
+ const fullPath = path4.join(this.projectPath, contextPath);
745
+ await fs4.writeFile(fullPath, content, "utf-8");
709
746
  logger.info(`Context saved: ${contextPath}`);
710
747
  return contextPath;
711
748
  }
@@ -713,11 +750,11 @@ var StateManager = class {
713
750
  * Leer un contexto desde archivo
714
751
  */
715
752
  async readContext(contextPath) {
716
- const fullPath = path3.join(this.projectPath, contextPath);
717
- if (!await fs3.pathExists(fullPath)) {
753
+ const fullPath = path4.join(this.projectPath, contextPath);
754
+ if (!await fs4.pathExists(fullPath)) {
718
755
  throw new Error(`Context file not found: ${contextPath}`);
719
756
  }
720
- return await fs3.readFile(fullPath, "utf-8");
757
+ return await fs4.readFile(fullPath, "utf-8");
721
758
  }
722
759
  // --- HELPERS ---
723
760
  /**
@@ -742,15 +779,15 @@ var StateManager = class {
742
779
 
743
780
  // src/core/SessionManager.ts
744
781
  import { v4 as uuidv4 } from "uuid";
745
- import path4 from "path";
746
- import { fileURLToPath } from "url";
747
- import { dirname } from "path";
748
- import fs4 from "fs-extra";
782
+ import path5 from "path";
783
+ import { fileURLToPath as fileURLToPath2 } from "url";
784
+ import { dirname as dirname2 } from "path";
785
+ import fs5 from "fs-extra";
749
786
  import { spawn } from "child_process";
750
787
  import { createRequire } from "module";
751
788
  var require2 = createRequire(import.meta.url);
752
- var __filename = fileURLToPath(import.meta.url);
753
- var __dirname = dirname(__filename);
789
+ var __filename2 = fileURLToPath2(import.meta.url);
790
+ var __dirname2 = dirname2(__filename2);
754
791
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
755
792
  var SessionManager = class {
756
793
  stateManager;
@@ -1127,12 +1164,12 @@ var SessionManager = class {
1127
1164
  throw new Error(`Fork ${forkId} not found`);
1128
1165
  }
1129
1166
  logger.info(`Generating export for fork: ${fork.name}`);
1130
- const exportsDir = path4.join(this.projectPath, ".claude-orka", "exports");
1131
- await fs4.ensureDir(exportsDir);
1167
+ const exportsDir = path5.join(this.projectPath, ".claude-orka", "exports");
1168
+ await fs5.ensureDir(exportsDir);
1132
1169
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
1133
1170
  const exportName = `fork-${fork.name}-${timestamp}.md`;
1134
1171
  const relativeExportPath = `.claude-orka/exports/${exportName}`;
1135
- const absoluteExportPath = path4.join(this.projectPath, relativeExportPath);
1172
+ const absoluteExportPath = path5.join(this.projectPath, relativeExportPath);
1136
1173
  const prompt = `
1137
1174
  Please generate a complete summary of this fork conversation "${fork.name}" and save it to the file:
1138
1175
  \`${absoluteExportPath}\`
@@ -1208,17 +1245,17 @@ Write the summary in Markdown format and save it to the specified file.
1208
1245
  throw new Error(`Parent ${parentName} is not active. Cannot send merge command.`);
1209
1246
  }
1210
1247
  let contextPath = fork.contextPath;
1211
- let fullPath = path4.join(this.projectPath, contextPath);
1212
- let exists = await fs4.pathExists(fullPath);
1248
+ let fullPath = path5.join(this.projectPath, contextPath);
1249
+ let exists = await fs5.pathExists(fullPath);
1213
1250
  if (!exists) {
1214
1251
  logger.warn(`Export file not found: ${contextPath}. Looking for most recent export...`);
1215
- const exportsDir = path4.join(this.projectPath, ".claude-orka", "exports");
1216
- const files = await fs4.readdir(exportsDir);
1252
+ const exportsDir = path5.join(this.projectPath, ".claude-orka", "exports");
1253
+ const files = await fs5.readdir(exportsDir);
1217
1254
  const forkExports = files.filter((f) => f.startsWith(`fork-${fork.name}-`) && f.endsWith(".md")).sort().reverse();
1218
1255
  if (forkExports.length > 0) {
1219
1256
  contextPath = `.claude-orka/exports/${forkExports[0]}`;
1220
- fullPath = path4.join(this.projectPath, contextPath);
1221
- exists = await fs4.pathExists(fullPath);
1257
+ fullPath = path5.join(this.projectPath, contextPath);
1258
+ exists = await fs5.pathExists(fullPath);
1222
1259
  logger.info(`Using most recent export: ${contextPath}`);
1223
1260
  }
1224
1261
  }
@@ -1298,11 +1335,11 @@ Analyze the content and help me integrate the changes and learnings from the for
1298
1335
  logger.warn("Electron not available, skipping UI launch");
1299
1336
  return;
1300
1337
  }
1301
- let mainPath = path4.join(__dirname, "../../electron/main/main.js");
1302
- if (!fs4.existsSync(mainPath)) {
1303
- mainPath = path4.join(__dirname, "../../dist/electron/main/main.js");
1338
+ let mainPath = path5.join(__dirname2, "../../electron/main/main.js");
1339
+ if (!fs5.existsSync(mainPath)) {
1340
+ mainPath = path5.join(__dirname2, "../../dist/electron/main/main.js");
1304
1341
  }
1305
- if (!fs4.existsSync(mainPath)) {
1342
+ if (!fs5.existsSync(mainPath)) {
1306
1343
  logger.warn(`Electron main.js not found at ${mainPath}, skipping UI launch`);
1307
1344
  return;
1308
1345
  }
@@ -1810,8 +1847,8 @@ ${statusEmoji} ${chalk.bold(session.name)}`);
1810
1847
 
1811
1848
  // src/cli/utils/errors.ts
1812
1849
  import chalk2 from "chalk";
1813
- import fs5 from "fs";
1814
- import path5 from "path";
1850
+ import fs6 from "fs";
1851
+ import path6 from "path";
1815
1852
  var CLIError = class extends Error {
1816
1853
  constructor(message, exitCode = 1) {
1817
1854
  super(message);
@@ -1843,8 +1880,8 @@ function validateForkId(forkId) {
1843
1880
  }
1844
1881
  }
1845
1882
  function validateInitialized(projectPath) {
1846
- const orkaDir = path5.join(projectPath, ".claude-orka");
1847
- if (!fs5.existsSync(orkaDir)) {
1883
+ const orkaDir = path6.join(projectPath, ".claude-orka");
1884
+ if (!fs6.existsSync(orkaDir)) {
1848
1885
  throw new CLIError(
1849
1886
  'Project not initialized. Run "orka init" first.',
1850
1887
  2
@@ -2237,8 +2274,8 @@ function mergeCommand(program2) {
2237
2274
 
2238
2275
  // src/cli/commands/doctor.ts
2239
2276
  import execa2 from "execa";
2240
- import fs6 from "fs-extra";
2241
- import path6 from "path";
2277
+ import fs7 from "fs-extra";
2278
+ import path7 from "path";
2242
2279
  import chalk4 from "chalk";
2243
2280
  function doctorCommand(program2) {
2244
2281
  program2.command("doctor").description("Check system dependencies and configuration").action(async () => {
@@ -2329,11 +2366,11 @@ async function checkClaude() {
2329
2366
  }
2330
2367
  async function checkProjectInit() {
2331
2368
  const projectPath = process.cwd();
2332
- const orkaDir = path6.join(projectPath, ".claude-orka");
2333
- const stateFile = path6.join(orkaDir, "state.json");
2369
+ const orkaDir = path7.join(projectPath, ".claude-orka");
2370
+ const stateFile = path7.join(orkaDir, "state.json");
2334
2371
  try {
2335
- const dirExists = await fs6.pathExists(orkaDir);
2336
- const stateExists = await fs6.pathExists(stateFile);
2372
+ const dirExists = await fs7.pathExists(orkaDir);
2373
+ const stateExists = await fs7.pathExists(stateFile);
2337
2374
  if (dirExists && stateExists) {
2338
2375
  return {
2339
2376
  name: "Project initialization",
@@ -2370,9 +2407,9 @@ async function checkProjectInit() {
2370
2407
  async function checkWritePermissions() {
2371
2408
  const projectPath = process.cwd();
2372
2409
  try {
2373
- const testFile = path6.join(projectPath, ".claude-orka-write-test");
2374
- await fs6.writeFile(testFile, "test");
2375
- await fs6.remove(testFile);
2410
+ const testFile = path7.join(projectPath, ".claude-orka-write-test");
2411
+ await fs7.writeFile(testFile, "test");
2412
+ await fs7.remove(testFile);
2376
2413
  return {
2377
2414
  name: "Write permissions",
2378
2415
  status: "pass",
@@ -2391,11 +2428,11 @@ async function checkWritePermissions() {
2391
2428
  }
2392
2429
  async function checkClaudeDir() {
2393
2430
  const homeDir = process.env.HOME || process.env.USERPROFILE || "";
2394
- const claudeDir = path6.join(homeDir, ".claude");
2395
- const historyFile = path6.join(claudeDir, "history.jsonl");
2431
+ const claudeDir = path7.join(homeDir, ".claude");
2432
+ const historyFile = path7.join(claudeDir, "history.jsonl");
2396
2433
  try {
2397
- const dirExists = await fs6.pathExists(claudeDir);
2398
- const historyExists = await fs6.pathExists(historyFile);
2434
+ const dirExists = await fs7.pathExists(claudeDir);
2435
+ const historyExists = await fs7.pathExists(historyFile);
2399
2436
  if (dirExists && historyExists) {
2400
2437
  return {
2401
2438
  name: "Claude directory",
@@ -2612,13 +2649,13 @@ async function checkClaudeCLI() {
2612
2649
  }
2613
2650
 
2614
2651
  // src/cli/index.ts
2615
- var __filename2 = fileURLToPath2(import.meta.url);
2616
- var __dirname2 = dirname2(__filename2);
2617
- var packageJsonPath = join(__dirname2, "../package.json");
2652
+ var __filename3 = fileURLToPath3(import.meta.url);
2653
+ var __dirname3 = dirname3(__filename3);
2654
+ var packageJsonPath = join2(__dirname3, "../package.json");
2618
2655
  try {
2619
2656
  readFileSync(packageJsonPath, "utf-8");
2620
2657
  } catch {
2621
- packageJsonPath = join(__dirname2, "../../package.json");
2658
+ packageJsonPath = join2(__dirname3, "../../package.json");
2622
2659
  }
2623
2660
  var packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
2624
2661
  var version = packageJson.version;
@@ -1,11 +1,11 @@
1
1
  // electron/main/main.ts
2
2
  import { app, BrowserWindow, ipcMain, shell } from "electron";
3
- import path5 from "path";
4
- import { fileURLToPath as fileURLToPath2 } from "url";
3
+ import path6 from "path";
4
+ import { fileURLToPath as fileURLToPath3 } from "url";
5
5
 
6
6
  // src/core/StateManager.ts
7
- import path3 from "path";
8
- import fs3 from "fs-extra";
7
+ import path4 from "path";
8
+ import fs4 from "fs-extra";
9
9
 
10
10
  // src/utils/tmux.ts
11
11
  import execa from "execa";
@@ -65,6 +65,11 @@ var Logger = class {
65
65
  var logger = new Logger();
66
66
 
67
67
  // src/utils/tmux.ts
68
+ import * as path2 from "path";
69
+ import * as fs2 from "fs";
70
+ import { fileURLToPath } from "url";
71
+ var __filename = fileURLToPath(import.meta.url);
72
+ var __dirname = path2.dirname(__filename);
68
73
  var TmuxError = class extends Error {
69
74
  constructor(message, command, originalError) {
70
75
  super(message);
@@ -93,6 +98,7 @@ var TmuxCommands = class {
93
98
  logger.debug(`Creating tmux session: ${name} at ${projectPath}`);
94
99
  await execa("tmux", ["new-session", "-d", "-s", name, "-c", projectPath]);
95
100
  logger.info(`Tmux session created: ${name}`);
101
+ await this.applyOrkaTheme(name);
96
102
  } catch (error) {
97
103
  throw new TmuxError(
98
104
  `Failed to create tmux session: ${name}`,
@@ -101,6 +107,37 @@ var TmuxCommands = class {
101
107
  );
102
108
  }
103
109
  }
110
+ /**
111
+ * Apply Claude-Orka custom tmux theme to a session
112
+ */
113
+ static async applyOrkaTheme(sessionName) {
114
+ try {
115
+ const possiblePaths = [
116
+ // When installed globally via npm
117
+ path2.join(__dirname, "../../.tmux.orka.conf"),
118
+ // When running from source
119
+ path2.join(process.cwd(), ".tmux.orka.conf"),
120
+ // Fallback: check in the module directory
121
+ path2.join(__dirname, "../../../.tmux.orka.conf")
122
+ ];
123
+ let configPath = null;
124
+ for (const p of possiblePaths) {
125
+ if (fs2.existsSync(p)) {
126
+ configPath = p;
127
+ break;
128
+ }
129
+ }
130
+ if (!configPath) {
131
+ logger.warn("Claude-Orka tmux config not found, skipping theme application");
132
+ return;
133
+ }
134
+ logger.debug(`Applying Orka theme from: ${configPath}`);
135
+ await execa("tmux", ["source-file", "-t", sessionName, configPath]);
136
+ logger.info("Claude-Orka theme applied successfully");
137
+ } catch (error) {
138
+ logger.warn("Failed to apply Orka theme, continuing with default tmux theme", error);
139
+ }
140
+ }
104
141
  /**
105
142
  * Abrir una terminal que se adjunte a una sesión tmux existente
106
143
  * (Solo macOS por ahora)
@@ -383,18 +420,18 @@ var TmuxCommands = class {
383
420
  };
384
421
 
385
422
  // src/utils/claude-history.ts
386
- import fs2 from "fs-extra";
423
+ import fs3 from "fs-extra";
387
424
  import os from "os";
388
- import path2 from "path";
389
- var CLAUDE_HISTORY_PATH = path2.join(os.homedir(), ".claude", "history.jsonl");
425
+ import path3 from "path";
426
+ var CLAUDE_HISTORY_PATH = path3.join(os.homedir(), ".claude", "history.jsonl");
390
427
  async function readClaudeHistory() {
391
428
  try {
392
- const exists = await fs2.pathExists(CLAUDE_HISTORY_PATH);
429
+ const exists = await fs3.pathExists(CLAUDE_HISTORY_PATH);
393
430
  if (!exists) {
394
431
  logger.warn(`Claude history file not found: ${CLAUDE_HISTORY_PATH}`);
395
432
  return [];
396
433
  }
397
- const content = await fs2.readFile(CLAUDE_HISTORY_PATH, "utf-8");
434
+ const content = await fs3.readFile(CLAUDE_HISTORY_PATH, "utf-8");
398
435
  const lines = content.trim().split("\n").filter(Boolean);
399
436
  const entries = [];
400
437
  for (const line of lines) {
@@ -437,9 +474,9 @@ var StateManager = class {
437
474
  orkaDir;
438
475
  statePath;
439
476
  constructor(projectPath) {
440
- this.projectPath = path3.resolve(projectPath);
441
- this.orkaDir = path3.join(this.projectPath, ".claude-orka");
442
- this.statePath = path3.join(this.orkaDir, "state.json");
477
+ this.projectPath = path4.resolve(projectPath);
478
+ this.orkaDir = path4.join(this.projectPath, ".claude-orka");
479
+ this.statePath = path4.join(this.orkaDir, "state.json");
443
480
  }
444
481
  /**
445
482
  * Initialize StateManager
@@ -448,7 +485,7 @@ var StateManager = class {
448
485
  async initialize() {
449
486
  logger.debug("Initializing StateManager");
450
487
  await this.ensureDirectories();
451
- if (!await fs3.pathExists(this.statePath)) {
488
+ if (!await fs4.pathExists(this.statePath)) {
452
489
  logger.info("Creating initial state.json");
453
490
  const initialState = {
454
491
  version: "1.0.0",
@@ -464,7 +501,7 @@ var StateManager = class {
464
501
  * Create directory structure
465
502
  */
466
503
  async ensureDirectories() {
467
- await fs3.ensureDir(this.orkaDir);
504
+ await fs4.ensureDir(this.orkaDir);
468
505
  logger.debug("Directories ensured");
469
506
  }
470
507
  /**
@@ -472,7 +509,7 @@ var StateManager = class {
472
509
  */
473
510
  async read() {
474
511
  try {
475
- const content = await fs3.readFile(this.statePath, "utf-8");
512
+ const content = await fs4.readFile(this.statePath, "utf-8");
476
513
  return JSON.parse(content);
477
514
  } catch (error) {
478
515
  logger.error("Failed to read state:", error);
@@ -485,7 +522,7 @@ var StateManager = class {
485
522
  async save(state) {
486
523
  try {
487
524
  state.lastUpdated = (/* @__PURE__ */ new Date()).toISOString();
488
- await fs3.writeFile(this.statePath, JSON.stringify(state, null, 2), "utf-8");
525
+ await fs4.writeFile(this.statePath, JSON.stringify(state, null, 2), "utf-8");
489
526
  logger.debug("State saved");
490
527
  } catch (error) {
491
528
  logger.error("Failed to save state:", error);
@@ -701,8 +738,8 @@ var StateManager = class {
701
738
  */
702
739
  async saveContext(type, id, content) {
703
740
  const contextPath = type === "session" ? this.getSessionContextPath(id) : this.getForkContextPath(id);
704
- const fullPath = path3.join(this.projectPath, contextPath);
705
- await fs3.writeFile(fullPath, content, "utf-8");
741
+ const fullPath = path4.join(this.projectPath, contextPath);
742
+ await fs4.writeFile(fullPath, content, "utf-8");
706
743
  logger.info(`Context saved: ${contextPath}`);
707
744
  return contextPath;
708
745
  }
@@ -710,11 +747,11 @@ var StateManager = class {
710
747
  * Leer un contexto desde archivo
711
748
  */
712
749
  async readContext(contextPath) {
713
- const fullPath = path3.join(this.projectPath, contextPath);
714
- if (!await fs3.pathExists(fullPath)) {
750
+ const fullPath = path4.join(this.projectPath, contextPath);
751
+ if (!await fs4.pathExists(fullPath)) {
715
752
  throw new Error(`Context file not found: ${contextPath}`);
716
753
  }
717
- return await fs3.readFile(fullPath, "utf-8");
754
+ return await fs4.readFile(fullPath, "utf-8");
718
755
  }
719
756
  // --- HELPERS ---
720
757
  /**
@@ -739,15 +776,15 @@ var StateManager = class {
739
776
 
740
777
  // src/core/SessionManager.ts
741
778
  import { v4 as uuidv4 } from "uuid";
742
- import path4 from "path";
743
- import { fileURLToPath } from "url";
744
- import { dirname } from "path";
745
- import fs4 from "fs-extra";
779
+ import path5 from "path";
780
+ import { fileURLToPath as fileURLToPath2 } from "url";
781
+ import { dirname as dirname2 } from "path";
782
+ import fs5 from "fs-extra";
746
783
  import { spawn } from "child_process";
747
784
  import { createRequire } from "module";
748
785
  var require2 = createRequire(import.meta.url);
749
- var __filename = fileURLToPath(import.meta.url);
750
- var __dirname = dirname(__filename);
786
+ var __filename2 = fileURLToPath2(import.meta.url);
787
+ var __dirname2 = dirname2(__filename2);
751
788
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
752
789
  var SessionManager = class {
753
790
  stateManager;
@@ -1124,12 +1161,12 @@ var SessionManager = class {
1124
1161
  throw new Error(`Fork ${forkId} not found`);
1125
1162
  }
1126
1163
  logger.info(`Generating export for fork: ${fork.name}`);
1127
- const exportsDir = path4.join(this.projectPath, ".claude-orka", "exports");
1128
- await fs4.ensureDir(exportsDir);
1164
+ const exportsDir = path5.join(this.projectPath, ".claude-orka", "exports");
1165
+ await fs5.ensureDir(exportsDir);
1129
1166
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
1130
1167
  const exportName = `fork-${fork.name}-${timestamp}.md`;
1131
1168
  const relativeExportPath = `.claude-orka/exports/${exportName}`;
1132
- const absoluteExportPath = path4.join(this.projectPath, relativeExportPath);
1169
+ const absoluteExportPath = path5.join(this.projectPath, relativeExportPath);
1133
1170
  const prompt = `
1134
1171
  Please generate a complete summary of this fork conversation "${fork.name}" and save it to the file:
1135
1172
  \`${absoluteExportPath}\`
@@ -1205,17 +1242,17 @@ Write the summary in Markdown format and save it to the specified file.
1205
1242
  throw new Error(`Parent ${parentName} is not active. Cannot send merge command.`);
1206
1243
  }
1207
1244
  let contextPath = fork.contextPath;
1208
- let fullPath = path4.join(this.projectPath, contextPath);
1209
- let exists = await fs4.pathExists(fullPath);
1245
+ let fullPath = path5.join(this.projectPath, contextPath);
1246
+ let exists = await fs5.pathExists(fullPath);
1210
1247
  if (!exists) {
1211
1248
  logger.warn(`Export file not found: ${contextPath}. Looking for most recent export...`);
1212
- const exportsDir = path4.join(this.projectPath, ".claude-orka", "exports");
1213
- const files = await fs4.readdir(exportsDir);
1249
+ const exportsDir = path5.join(this.projectPath, ".claude-orka", "exports");
1250
+ const files = await fs5.readdir(exportsDir);
1214
1251
  const forkExports = files.filter((f) => f.startsWith(`fork-${fork.name}-`) && f.endsWith(".md")).sort().reverse();
1215
1252
  if (forkExports.length > 0) {
1216
1253
  contextPath = `.claude-orka/exports/${forkExports[0]}`;
1217
- fullPath = path4.join(this.projectPath, contextPath);
1218
- exists = await fs4.pathExists(fullPath);
1254
+ fullPath = path5.join(this.projectPath, contextPath);
1255
+ exists = await fs5.pathExists(fullPath);
1219
1256
  logger.info(`Using most recent export: ${contextPath}`);
1220
1257
  }
1221
1258
  }
@@ -1295,11 +1332,11 @@ Analyze the content and help me integrate the changes and learnings from the for
1295
1332
  logger.warn("Electron not available, skipping UI launch");
1296
1333
  return;
1297
1334
  }
1298
- let mainPath = path4.join(__dirname, "../../electron/main/main.js");
1299
- if (!fs4.existsSync(mainPath)) {
1300
- mainPath = path4.join(__dirname, "../../dist/electron/main/main.js");
1335
+ let mainPath = path5.join(__dirname2, "../../electron/main/main.js");
1336
+ if (!fs5.existsSync(mainPath)) {
1337
+ mainPath = path5.join(__dirname2, "../../dist/electron/main/main.js");
1301
1338
  }
1302
- if (!fs4.existsSync(mainPath)) {
1339
+ if (!fs5.existsSync(mainPath)) {
1303
1340
  logger.warn(`Electron main.js not found at ${mainPath}, skipping UI launch`);
1304
1341
  return;
1305
1342
  }
@@ -1574,8 +1611,8 @@ var ClaudeOrka = class {
1574
1611
  // electron/main/main.ts
1575
1612
  import chokidar from "chokidar";
1576
1613
  import execa2 from "execa";
1577
- var __filename2 = fileURLToPath2(import.meta.url);
1578
- var __dirname2 = path5.dirname(__filename2);
1614
+ var __filename3 = fileURLToPath3(import.meta.url);
1615
+ var __dirname3 = path6.dirname(__filename3);
1579
1616
  var windows = /* @__PURE__ */ new Map();
1580
1617
  var currentSessionId = null;
1581
1618
  var currentProjectPath = null;
@@ -1585,7 +1622,7 @@ function createWindow(sessionId, projectPath) {
1585
1622
  existingWindow.focus();
1586
1623
  return existingWindow;
1587
1624
  }
1588
- const projectName = path5.basename(projectPath);
1625
+ const projectName = path6.basename(projectPath);
1589
1626
  const mainWindow = new BrowserWindow({
1590
1627
  width: 600,
1591
1628
  height: 800,
@@ -1597,7 +1634,7 @@ function createWindow(sessionId, projectPath) {
1597
1634
  resizable: true,
1598
1635
  title: `Claude Orka - ${projectName}`,
1599
1636
  webPreferences: {
1600
- preload: path5.join(__dirname2, "../preload/preload.js"),
1637
+ preload: path6.join(__dirname3, "../preload/preload.js"),
1601
1638
  contextIsolation: true,
1602
1639
  nodeIntegration: false
1603
1640
  }
@@ -1607,7 +1644,7 @@ function createWindow(sessionId, projectPath) {
1607
1644
  if (process.env.NODE_ENV === "development") {
1608
1645
  mainWindow.loadURL("http://localhost:5173");
1609
1646
  } else {
1610
- const indexPath = path5.join(__dirname2, "../renderer/index.html");
1647
+ const indexPath = path6.join(__dirname3, "../renderer/index.html");
1611
1648
  mainWindow.loadFile(indexPath);
1612
1649
  }
1613
1650
  watchStateFile(projectPath, mainWindow);
@@ -1618,7 +1655,7 @@ function createWindow(sessionId, projectPath) {
1618
1655
  return mainWindow;
1619
1656
  }
1620
1657
  function watchStateFile(projectPath, window) {
1621
- const statePath = path5.join(projectPath, ".claude-orka/state.json");
1658
+ const statePath = path6.join(projectPath, ".claude-orka/state.json");
1622
1659
  const watcher = chokidar.watch(statePath, {
1623
1660
  persistent: true,
1624
1661
  ignoreInitial: true
@@ -1707,7 +1744,7 @@ ipcMain.handle("open-export-file", async (_, exportPath) => {
1707
1744
  if (!currentProjectPath) {
1708
1745
  throw new Error("No active project");
1709
1746
  }
1710
- const fullPath = path5.join(currentProjectPath, exportPath);
1747
+ const fullPath = path6.join(currentProjectPath, exportPath);
1711
1748
  await shell.openPath(fullPath);
1712
1749
  });
1713
1750
  ipcMain.handle("open-project-folder", async () => {
@@ -18,6 +18,10 @@ export declare class TmuxCommands {
18
18
  * Crear una nueva sesión tmux en modo detached
19
19
  */
20
20
  static createSession(name: string, projectPath: string): Promise<void>;
21
+ /**
22
+ * Apply Claude-Orka custom tmux theme to a session
23
+ */
24
+ private static applyOrkaTheme;
21
25
  /**
22
26
  * Abrir una terminal que se adjunte a una sesión tmux existente
23
27
  * (Solo macOS por ahora)
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../../src/utils/tmux.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IACE,OAAO,EAAE,MAAM;IAAS,aAAa,CAAC,EAAE,GAAG;gBAAnE,OAAO,EAAE,MAAM,EAAS,OAAO,EAAE,MAAM,EAAS,aAAa,CAAC,EAAE,GAAG,YAAA;CAIhF;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;WACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5E;;;OAGG;WACU,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CnE;;OAEG;WACU,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;OAEG;WACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjE;;OAEG;WACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBhE;;OAEG;WACU,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBlE;;;;;OAKG;WACU,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BvF;;;;OAIG;WACU,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB9D;;OAEG;WACU,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;;OAGG;WACU,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalE;;OAEG;WACU,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;;;OAIG;WACU,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE;;;;;OAKG;WACU,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBnF;;OAEG;WACU,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAmB1E"}
1
+ {"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../../src/utils/tmux.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IACE,OAAO,EAAE,MAAM;IAAS,aAAa,CAAC,EAAE,GAAG;gBAAnE,OAAO,EAAE,MAAM,EAAS,OAAO,EAAE,MAAM,EAAS,aAAa,CAAC,EAAE,GAAG,YAAA;CAIhF;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS5C;;OAEG;WACU,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5E;;OAEG;mBACkB,cAAc;IAqCnC;;;OAGG;WACU,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CnE;;OAEG;WACU,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D;;OAEG;WACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjE;;OAEG;WACU,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBhE;;OAEG;WACU,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAsBlE;;;;;OAKG;WACU,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BvF;;;;OAIG;WACU,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmB9D;;OAEG;WACU,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcpD;;;OAGG;WACU,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalE;;OAEG;WACU,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;;;OAIG;WACU,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAavE;;;;;OAKG;WACU,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAqBnF;;OAEG;WACU,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAmB1E"}
@@ -1,5 +1,11 @@
1
1
  import execa from 'execa';
2
2
  import { logger } from './logger';
3
+ import * as path from 'path';
4
+ import * as fs from 'fs';
5
+ import { fileURLToPath } from 'url';
6
+ // Get __dirname equivalent in ES modules
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
3
9
  /**
4
10
  * Error personalizado para comandos tmux
5
11
  */
@@ -37,11 +43,48 @@ export class TmuxCommands {
37
43
  logger.debug(`Creating tmux session: ${name} at ${projectPath}`);
38
44
  await execa('tmux', ['new-session', '-d', '-s', name, '-c', projectPath]);
39
45
  logger.info(`Tmux session created: ${name}`);
46
+ // Apply Claude-Orka custom theme
47
+ await this.applyOrkaTheme(name);
40
48
  }
41
49
  catch (error) {
42
50
  throw new TmuxError(`Failed to create tmux session: ${name}`, `tmux new-session -d -s ${name} -c ${projectPath}`, error);
43
51
  }
44
52
  }
53
+ /**
54
+ * Apply Claude-Orka custom tmux theme to a session
55
+ */
56
+ static async applyOrkaTheme(sessionName) {
57
+ try {
58
+ // Find the config file (look for it in the package installation directory)
59
+ const possiblePaths = [
60
+ // When installed globally via npm
61
+ path.join(__dirname, '../../.tmux.orka.conf'),
62
+ // When running from source
63
+ path.join(process.cwd(), '.tmux.orka.conf'),
64
+ // Fallback: check in the module directory
65
+ path.join(__dirname, '../../../.tmux.orka.conf'),
66
+ ];
67
+ let configPath = null;
68
+ for (const p of possiblePaths) {
69
+ if (fs.existsSync(p)) {
70
+ configPath = p;
71
+ break;
72
+ }
73
+ }
74
+ if (!configPath) {
75
+ logger.warn('Claude-Orka tmux config not found, skipping theme application');
76
+ return;
77
+ }
78
+ logger.debug(`Applying Orka theme from: ${configPath}`);
79
+ // Source the config file for this specific session
80
+ await execa('tmux', ['source-file', '-t', sessionName, configPath]);
81
+ logger.info('Claude-Orka theme applied successfully');
82
+ }
83
+ catch (error) {
84
+ // Don't fail the session creation if theme application fails
85
+ logger.warn('Failed to apply Orka theme, continuing with default tmux theme', error);
86
+ }
87
+ }
45
88
  /**
46
89
  * Abrir una terminal que se adjunte a una sesión tmux existente
47
90
  * (Solo macOS por ahora)
@@ -1 +1 @@
1
- {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../../src/utils/tmux.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../../src/utils/tmux.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enruana/claude-orka",
3
- "version": "0.4.3",
3
+ "version": "0.4.5",
4
4
  "description": "SDK for orchestrating Claude Code sessions with tmux - Branch management for conversations",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,6 +54,7 @@
54
54
  "files": [
55
55
  "dist",
56
56
  "bin",
57
+ ".tmux.orka.conf",
57
58
  "README.md",
58
59
  "LICENSE"
59
60
  ],