@enruana/claude-orka 0.2.1 → 0.3.0

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.
Files changed (42) hide show
  1. package/dist/cli.js +48 -2
  2. package/dist/electron/main/main.d.ts +1 -4
  3. package/dist/electron/main/main.d.ts.map +1 -1
  4. package/dist/electron/main/main.js +148 -43
  5. package/dist/electron/main/main.js.map +1 -1
  6. package/dist/electron/preload/preload.d.ts +0 -23
  7. package/dist/electron/preload/preload.d.ts.map +1 -1
  8. package/dist/electron/preload/preload.js +13 -29
  9. package/dist/electron/preload/preload.js.map +1 -1
  10. package/dist/electron/renderer/src/App.d.ts +3 -0
  11. package/dist/electron/renderer/src/App.d.ts.map +1 -0
  12. package/dist/electron/renderer/src/App.js +74 -0
  13. package/dist/electron/renderer/src/App.js.map +1 -0
  14. package/dist/electron/renderer/src/components/ActionPanel.d.ts +9 -0
  15. package/dist/electron/renderer/src/components/ActionPanel.d.ts.map +1 -0
  16. package/dist/electron/renderer/src/components/ActionPanel.js +29 -0
  17. package/dist/electron/renderer/src/components/ActionPanel.js.map +1 -0
  18. package/dist/electron/renderer/src/components/NodeCard.d.ts +11 -0
  19. package/dist/electron/renderer/src/components/NodeCard.d.ts.map +1 -0
  20. package/dist/electron/renderer/src/components/NodeCard.js +45 -0
  21. package/dist/electron/renderer/src/components/NodeCard.js.map +1 -0
  22. package/dist/electron/renderer/src/components/SessionInfo.d.ts +7 -0
  23. package/dist/electron/renderer/src/components/SessionInfo.d.ts.map +1 -0
  24. package/dist/electron/renderer/src/components/SessionInfo.js +49 -0
  25. package/dist/electron/renderer/src/components/SessionInfo.js.map +1 -0
  26. package/dist/electron/renderer/src/components/SessionTree.d.ts +10 -0
  27. package/dist/electron/renderer/src/components/SessionTree.d.ts.map +1 -0
  28. package/dist/electron/renderer/src/components/SessionTree.js +57 -0
  29. package/dist/electron/renderer/src/components/SessionTree.js.map +1 -0
  30. package/dist/electron/renderer/src/main.d.ts +2 -0
  31. package/dist/electron/renderer/src/main.d.ts.map +1 -0
  32. package/dist/electron/renderer/src/main.js +7 -0
  33. package/dist/electron/renderer/src/main.js.map +1 -0
  34. package/dist/electron/renderer/vite.config.d.ts +3 -0
  35. package/dist/electron/renderer/vite.config.d.ts.map +1 -0
  36. package/dist/electron/renderer/vite.config.js +20 -0
  37. package/dist/electron/renderer/vite.config.js.map +1 -0
  38. package/dist/src/core/SessionManager.d.ts +4 -0
  39. package/dist/src/core/SessionManager.d.ts.map +1 -1
  40. package/dist/src/core/SessionManager.js +53 -1
  41. package/dist/src/core/SessionManager.js.map +1 -1
  42. package/package.json +16 -5
package/dist/cli.js CHANGED
@@ -725,6 +725,7 @@ var StateManager = class {
725
725
  import { v4 as uuidv4 } from "uuid";
726
726
  import path3 from "path";
727
727
  import fs3 from "fs-extra";
728
+ import { spawn } from "child_process";
728
729
  var sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
729
730
  var SessionManager = class {
730
731
  stateManager;
@@ -785,6 +786,9 @@ var SessionManager = class {
785
786
  };
786
787
  await this.stateManager.addSession(session);
787
788
  logger.info(`Session created: ${sessionName} (${sessionId})`);
789
+ if (openTerminal) {
790
+ await this.launchUI(sessionId);
791
+ }
788
792
  return session;
789
793
  }
790
794
  /**
@@ -797,6 +801,14 @@ var SessionManager = class {
797
801
  }
798
802
  logger.info(`Resuming session: ${session.name}`);
799
803
  const tmuxSessionId = `orka-${sessionId}`;
804
+ if (session.status === "active") {
805
+ logger.info(`Session is already active, reconnecting...`);
806
+ if (openTerminal) {
807
+ await TmuxCommands.openTerminalWindow(tmuxSessionId);
808
+ await this.launchUI(sessionId);
809
+ }
810
+ return session;
811
+ }
800
812
  await TmuxCommands.createSession(tmuxSessionId, this.projectPath);
801
813
  if (openTerminal) {
802
814
  await TmuxCommands.openTerminalWindow(tmuxSessionId);
@@ -822,6 +834,9 @@ var SessionManager = class {
822
834
  }
823
835
  }
824
836
  logger.info(`Session resumed: ${session.name}`);
837
+ if (openTerminal) {
838
+ await this.launchUI(sessionId);
839
+ }
825
840
  return session;
826
841
  }
827
842
  /**
@@ -1184,6 +1199,37 @@ Analyze the content and help me integrate the changes and learnings from the for
1184
1199
  await TmuxCommands.sendEnter(paneId);
1185
1200
  await sleep(8e3);
1186
1201
  }
1202
+ /**
1203
+ * Launch Electron UI for a session
1204
+ */
1205
+ async launchUI(sessionId) {
1206
+ try {
1207
+ let electronPath;
1208
+ try {
1209
+ electronPath = __require("electron");
1210
+ } catch (error) {
1211
+ logger.warn("Electron not available, skipping UI launch");
1212
+ return;
1213
+ }
1214
+ const mainPath = path3.join(__dirname, "../electron/main/main.js");
1215
+ if (!fs3.existsSync(mainPath)) {
1216
+ logger.warn("Electron main.js not found, skipping UI launch");
1217
+ return;
1218
+ }
1219
+ const electronProcess = spawn(
1220
+ electronPath,
1221
+ [mainPath, "--session-id", sessionId, "--project-path", this.projectPath],
1222
+ {
1223
+ detached: true,
1224
+ stdio: "ignore"
1225
+ }
1226
+ );
1227
+ electronProcess.unref();
1228
+ logger.info(`Launched UI for session ${sessionId}`);
1229
+ } catch (error) {
1230
+ logger.warn(`Failed to launch UI: ${error}`);
1231
+ }
1232
+ }
1187
1233
  };
1188
1234
 
1189
1235
  // src/core/ClaudeOrka.ts
@@ -2474,8 +2520,8 @@ async function checkClaudeCLI() {
2474
2520
 
2475
2521
  // src/cli/index.ts
2476
2522
  var __filename = fileURLToPath(import.meta.url);
2477
- var __dirname = dirname(__filename);
2478
- var packageJsonPath = join(__dirname, "../package.json");
2523
+ var __dirname2 = dirname(__filename);
2524
+ var packageJsonPath = join(__dirname2, "../package.json");
2479
2525
  var packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
2480
2526
  var version = packageJson.version;
2481
2527
  var program = new Command();
@@ -1,5 +1,2 @@
1
- import { BrowserWindow } from 'electron';
2
- declare let mainWindow: BrowserWindow | null;
3
- declare let projectPath: string | null;
4
- export { mainWindow, projectPath };
1
+ export {};
5
2
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../electron/main/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,aAAa,EAAU,MAAM,UAAU,CAAA;AAIrD,QAAA,IAAI,UAAU,EAAE,aAAa,GAAG,IAAW,CAAA;AAC3C,QAAA,IAAI,WAAW,EAAE,MAAM,GAAG,IAAW,CAAA;AA0ErC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../electron/main/main.ts"],"names":[],"mappings":""}
@@ -1,66 +1,171 @@
1
- import { app, BrowserWindow, dialog } from 'electron';
2
- import * as path from 'path';
3
- import { setupIPC } from './ipc-handlers';
4
- let mainWindow = null;
5
- let projectPath = null;
6
- function createWindow() {
7
- mainWindow = new BrowserWindow({
8
- width: 1200,
1
+ import { app, BrowserWindow, ipcMain } from 'electron';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { ClaudeOrka } from '../../src/core/ClaudeOrka';
5
+ import chokidar from 'chokidar';
6
+ import execa from 'execa';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = path.dirname(__filename);
9
+ // Store windows by project path
10
+ const windows = new Map();
11
+ // Store active sessions
12
+ let currentSessionId = null;
13
+ let currentProjectPath = null;
14
+ function createWindow(sessionId, projectPath) {
15
+ // If window already exists for this project, focus it
16
+ if (windows.has(projectPath)) {
17
+ const existingWindow = windows.get(projectPath);
18
+ existingWindow.focus();
19
+ return existingWindow;
20
+ }
21
+ const mainWindow = new BrowserWindow({
22
+ width: 600,
9
23
  height: 800,
10
- minWidth: 900,
24
+ minWidth: 500,
11
25
  minHeight: 600,
26
+ frame: false,
27
+ transparent: true,
28
+ alwaysOnTop: true,
29
+ resizable: true,
12
30
  webPreferences: {
13
31
  preload: path.join(__dirname, '../preload/preload.js'),
14
- nodeIntegration: false,
15
32
  contextIsolation: true,
33
+ nodeIntegration: false,
16
34
  },
17
- title: 'Claude Orka',
18
- backgroundColor: '#1a1a1a',
19
35
  });
20
- // Cargar el HTML
21
- mainWindow.loadFile(path.join(__dirname, '../renderer/index.html'));
22
- // DevTools en modo desarrollo
23
- if (process.argv.includes('--dev')) {
36
+ // Store session info
37
+ currentSessionId = sessionId;
38
+ currentProjectPath = projectPath;
39
+ // Load UI
40
+ if (process.env.NODE_ENV === 'development') {
41
+ // Dev mode - load from Vite dev server
42
+ mainWindow.loadURL('http://localhost:5173');
24
43
  mainWindow.webContents.openDevTools();
25
44
  }
45
+ else {
46
+ // Production - load from built files
47
+ const indexPath = path.join(__dirname, '../renderer/index.html');
48
+ mainWindow.loadFile(indexPath);
49
+ }
50
+ // Watch state.json for changes
51
+ watchStateFile(projectPath, mainWindow);
52
+ // Store window
53
+ windows.set(projectPath, mainWindow);
26
54
  mainWindow.on('closed', () => {
27
- mainWindow = null;
55
+ windows.delete(projectPath);
28
56
  });
57
+ return mainWindow;
29
58
  }
30
- async function selectProjectPath() {
31
- const result = await dialog.showOpenDialog({
32
- properties: ['openDirectory'],
33
- title: 'Selecciona el directorio del proyecto',
34
- buttonLabel: 'Seleccionar',
59
+ function watchStateFile(projectPath, window) {
60
+ const statePath = path.join(projectPath, '.claude-orka/state.json');
61
+ const watcher = chokidar.watch(statePath, {
62
+ persistent: true,
63
+ ignoreInitial: true,
64
+ });
65
+ watcher.on('change', async () => {
66
+ try {
67
+ const orka = new ClaudeOrka(projectPath);
68
+ await orka.initialize();
69
+ if (currentSessionId) {
70
+ const session = await orka.getSession(currentSessionId);
71
+ if (session) {
72
+ window.webContents.send('state-updated', session);
73
+ }
74
+ }
75
+ }
76
+ catch (error) {
77
+ console.error('Error watching state file:', error);
78
+ }
79
+ });
80
+ window.on('closed', () => {
81
+ watcher.close();
35
82
  });
36
- if (!result.canceled && result.filePaths.length > 0) {
37
- projectPath = result.filePaths[0];
38
- return projectPath;
39
- }
40
- return null;
41
83
  }
42
- app.on('ready', async () => {
43
- // Pedir al usuario que seleccione el proyecto
44
- const selectedPath = await selectProjectPath();
45
- if (!selectedPath) {
46
- console.log('No se seleccionó ningún proyecto, cerrando...');
47
- app.quit();
84
+ // IPC Handlers
85
+ ipcMain.handle('get-session', async () => {
86
+ if (!currentSessionId || !currentProjectPath) {
87
+ throw new Error('No active session');
88
+ }
89
+ const orka = new ClaudeOrka(currentProjectPath);
90
+ await orka.initialize();
91
+ const session = await orka.getSession(currentSessionId);
92
+ return session;
93
+ });
94
+ ipcMain.handle('select-node', async (_, nodeId) => {
95
+ if (!currentSessionId || !currentProjectPath) {
96
+ throw new Error('No active session');
97
+ }
98
+ const orka = new ClaudeOrka(currentProjectPath);
99
+ await orka.initialize();
100
+ const session = await orka.getSession(currentSessionId);
101
+ if (!session)
48
102
  return;
103
+ // Get tmux pane ID for the selected node
104
+ let tmuxPaneId;
105
+ if (nodeId === 'main') {
106
+ tmuxPaneId = session.main?.tmuxPaneId;
107
+ }
108
+ else {
109
+ const fork = session.forks.find((f) => f.id === nodeId);
110
+ tmuxPaneId = fork?.tmuxPaneId;
111
+ }
112
+ if (tmuxPaneId) {
113
+ // Focus the tmux pane
114
+ await execa('tmux', ['select-pane', '-t', tmuxPaneId]);
49
115
  }
50
- // Configurar IPC handlers con el path del proyecto
51
- setupIPC(selectedPath);
52
- // Crear ventana
53
- createWindow();
116
+ });
117
+ ipcMain.handle('create-fork', async (_, sessionId, name) => {
118
+ if (!currentProjectPath) {
119
+ throw new Error('No active project');
120
+ }
121
+ const orka = new ClaudeOrka(currentProjectPath);
122
+ await orka.initialize();
123
+ const fork = await orka.createFork(sessionId, name);
124
+ return fork;
125
+ });
126
+ ipcMain.handle('export-fork', async (_, sessionId, forkId) => {
127
+ if (!currentProjectPath) {
128
+ throw new Error('No active project');
129
+ }
130
+ const orka = new ClaudeOrka(currentProjectPath);
131
+ await orka.initialize();
132
+ const summary = await orka.generateForkExport(sessionId, forkId);
133
+ return summary;
134
+ });
135
+ ipcMain.handle('merge-fork', async (_, sessionId, forkId) => {
136
+ if (!currentProjectPath) {
137
+ throw new Error('No active project');
138
+ }
139
+ const orka = new ClaudeOrka(currentProjectPath);
140
+ await orka.initialize();
141
+ await orka.generateExportAndMerge(sessionId, forkId);
142
+ });
143
+ ipcMain.on('close-window', (event) => {
144
+ const window = BrowserWindow.fromWebContents(event.sender);
145
+ window?.close();
146
+ });
147
+ // App lifecycle
148
+ app.whenReady().then(() => {
149
+ // Get session ID and project path from command line args
150
+ const args = process.argv.slice(2);
151
+ const sessionIdIndex = args.indexOf('--session-id');
152
+ const projectPathIndex = args.indexOf('--project-path');
153
+ if (sessionIdIndex !== -1 && args[sessionIdIndex + 1]) {
154
+ const sessionId = args[sessionIdIndex + 1];
155
+ const projectPath = projectPathIndex !== -1 && args[projectPathIndex + 1]
156
+ ? args[projectPathIndex + 1]
157
+ : process.cwd();
158
+ createWindow(sessionId, projectPath);
159
+ }
160
+ app.on('activate', () => {
161
+ if (BrowserWindow.getAllWindows().length === 0) {
162
+ // Don't create window on activate if no session
163
+ }
164
+ });
54
165
  });
55
166
  app.on('window-all-closed', () => {
56
167
  if (process.platform !== 'darwin') {
57
168
  app.quit();
58
169
  }
59
170
  });
60
- app.on('activate', () => {
61
- if (mainWindow === null) {
62
- createWindow();
63
- }
64
- });
65
- export { mainWindow, projectPath };
66
171
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../electron/main/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,IAAI,UAAU,GAAyB,IAAI,CAAA;AAC3C,IAAI,WAAW,GAAkB,IAAI,CAAA;AAErC,SAAS,YAAY;IACnB,UAAU,GAAG,IAAI,aAAa,CAAC;QAC7B,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,GAAG;QACX,QAAQ,EAAE,GAAG;QACb,SAAS,EAAE,GAAG;QACd,cAAc,EAAE;YACd,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC;YACtD,eAAe,EAAE,KAAK;YACtB,gBAAgB,EAAE,IAAI;SACvB;QACD,KAAK,EAAE,aAAa;QACpB,eAAe,EAAE,SAAS;KAC3B,CAAC,CAAA;IAEF,iBAAiB;IACjB,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAA;IAEnE,8BAA8B;IAC9B,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE,CAAA;IACvC,CAAC;IAED,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QAC3B,UAAU,GAAG,IAAI,CAAA;IACnB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC;QACzC,UAAU,EAAE,CAAC,eAAe,CAAC;QAC7B,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EAAE,aAAa;KAC3B,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;QACjC,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;IACzB,8CAA8C;IAC9C,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAA;IAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAA;QAC5D,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,OAAM;IACR,CAAC;IAED,mDAAmD;IACnD,QAAQ,CAAC,YAAY,CAAC,CAAA;IAEtB,gBAAgB;IAChB,YAAY,EAAE,CAAA;AAChB,CAAC,CAAC,CAAA;AAEF,GAAG,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,EAAE,CAAA;IACZ,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;IACtB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,YAAY,EAAE,CAAA;IAChB,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../electron/main/main.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,2 @@
1
- /**
2
- * API expuesta al renderer process
3
- */
4
- declare const orkaAPI: {
5
- initialize: () => Promise<any>;
6
- createSession: (name?: string, openTerminal?: boolean) => Promise<any>;
7
- getSessions: (filters?: any) => Promise<any>;
8
- listSessions: (filters?: any) => Promise<any>;
9
- getSession: (sessionId: string) => Promise<any>;
10
- resumeSession: (sessionId: string, openTerminal?: boolean) => Promise<any>;
11
- closeSession: (sessionId: string, saveContext?: boolean) => Promise<any>;
12
- deleteSession: (sessionId: string) => Promise<any>;
13
- createFork: (sessionId: string, name?: string, vertical?: boolean) => Promise<any>;
14
- closeFork: (sessionId: string, forkId: string, saveContext?: boolean) => Promise<any>;
15
- resumeFork: (sessionId: string, forkId: string) => Promise<any>;
16
- deleteFork: (sessionId: string, forkId: string) => Promise<any>;
17
- send: (sessionId: string, command: string, target?: string) => Promise<any>;
18
- sendCommand: (sessionId: string, forkId: string, command: string) => Promise<any>;
19
- export: (sessionId: string, forkId: string, customName?: string) => Promise<any>;
20
- merge: (sessionId: string, forkId: string) => Promise<any>;
21
- mergeAndClose: (sessionId: string, forkId: string) => Promise<any>;
22
- };
23
- export type OrkaAPI = typeof orkaAPI;
24
1
  export {};
25
2
  //# sourceMappingURL=preload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../../electron/preload/preload.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,QAAA,MAAM,OAAO;;2BAKY,MAAM,iBAAiB,OAAO;4BAC7B,GAAG;6BACF,GAAG;4BACJ,MAAM;+BACH,MAAM,iBAAiB,OAAO;8BAC/B,MAAM,gBAAgB,OAAO;+BAE5B,MAAM;4BAGT,MAAM,SAAS,MAAM,aAAa,OAAO;2BAE1C,MAAM,UAAU,MAAM,gBAAgB,OAAO;4BAE5C,MAAM,UAAU,MAAM;4BAEtB,MAAM,UAAU,MAAM;sBAI5B,MAAM,WAAW,MAAM,WAAW,MAAM;6BAEjC,MAAM,UAAU,MAAM,WAAW,MAAM;wBAI5C,MAAM,UAAU,MAAM,eAAe,MAAM;uBAE5C,MAAM,UAAU,MAAM;+BAEd,MAAM,UAAU,MAAM;CAElD,CAAA;AAMD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAA"}
1
+ {"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../../electron/preload/preload.ts"],"names":[],"mappings":""}
@@ -1,31 +1,15 @@
1
1
  import { contextBridge, ipcRenderer } from 'electron';
2
- /**
3
- * API expuesta al renderer process
4
- */
5
- const orkaAPI = {
6
- // Inicialización
7
- initialize: () => ipcRenderer.invoke('orka:initialize'),
8
- // Sesiones
9
- createSession: (name, openTerminal) => ipcRenderer.invoke('orka:createSession', name, openTerminal),
10
- getSessions: (filters) => ipcRenderer.invoke('orka:listSessions', filters), // Alias para app.js
11
- listSessions: (filters) => ipcRenderer.invoke('orka:listSessions', filters),
12
- getSession: (sessionId) => ipcRenderer.invoke('orka:getSession', sessionId),
13
- resumeSession: (sessionId, openTerminal) => ipcRenderer.invoke('orka:resumeSession', sessionId, openTerminal),
14
- closeSession: (sessionId, saveContext) => ipcRenderer.invoke('orka:closeSession', sessionId, saveContext),
15
- deleteSession: (sessionId) => ipcRenderer.invoke('orka:deleteSession', sessionId),
16
- // Forks
17
- createFork: (sessionId, name, vertical) => ipcRenderer.invoke('orka:createFork', sessionId, name, vertical),
18
- closeFork: (sessionId, forkId, saveContext) => ipcRenderer.invoke('orka:closeFork', sessionId, forkId, saveContext),
19
- resumeFork: (sessionId, forkId) => ipcRenderer.invoke('orka:resumeFork', sessionId, forkId),
20
- deleteFork: (sessionId, forkId) => ipcRenderer.invoke('orka:deleteFork', sessionId, forkId),
21
- // Comandos
22
- send: (sessionId, command, target) => ipcRenderer.invoke('orka:send', sessionId, command, target),
23
- sendCommand: (sessionId, forkId, command) => ipcRenderer.invoke('orka:send', sessionId, command, forkId), // Alias para app.js
24
- // Export & Merge
25
- export: (sessionId, forkId, customName) => ipcRenderer.invoke('orka:export', sessionId, forkId, customName),
26
- merge: (sessionId, forkId) => ipcRenderer.invoke('orka:merge', sessionId, forkId),
27
- mergeAndClose: (sessionId, forkId) => ipcRenderer.invoke('orka:mergeAndClose', sessionId, forkId),
28
- };
29
- // Exponer API al renderer
30
- contextBridge.exposeInMainWorld('orka', orkaAPI);
2
+ // Expose protected methods that allow the renderer process to use
3
+ // the ipcRenderer without exposing the entire object
4
+ contextBridge.exposeInMainWorld('electronAPI', {
5
+ getSession: () => ipcRenderer.invoke('get-session'),
6
+ selectNode: (nodeId) => ipcRenderer.invoke('select-node', nodeId),
7
+ createFork: (sessionId, name) => ipcRenderer.invoke('create-fork', sessionId, name),
8
+ exportFork: (sessionId, forkId) => ipcRenderer.invoke('export-fork', sessionId, forkId),
9
+ mergeFork: (sessionId, forkId) => ipcRenderer.invoke('merge-fork', sessionId, forkId),
10
+ onStateUpdate: (callback) => {
11
+ ipcRenderer.on('state-updated', (_, session) => callback(session));
12
+ },
13
+ closeWindow: () => ipcRenderer.send('close-window'),
14
+ });
31
15
  //# sourceMappingURL=preload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../../electron/preload/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAErD;;GAEG;AACH,MAAM,OAAO,GAAG;IACd,iBAAiB;IACjB,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC;IAEvD,WAAW;IACX,aAAa,EAAE,CAAC,IAAa,EAAE,YAAsB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,EAAE,YAAY,CAAC;IACtH,WAAW,EAAE,CAAC,OAAa,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,EAAE,oBAAoB;IACtG,YAAY,EAAE,CAAC,OAAa,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACjF,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,CAAC;IACnF,aAAa,EAAE,CAAC,SAAiB,EAAE,YAAsB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,EAAE,YAAY,CAAC;IAC/H,YAAY,EAAE,CAAC,SAAiB,EAAE,WAAqB,EAAE,EAAE,CACzD,WAAW,CAAC,MAAM,CAAC,mBAAmB,EAAE,SAAS,EAAE,WAAW,CAAC;IACjE,aAAa,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAEzF,QAAQ;IACR,UAAU,EAAE,CAAC,SAAiB,EAAE,IAAa,EAAE,QAAkB,EAAE,EAAE,CACnE,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC;IAClE,SAAS,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,WAAqB,EAAE,EAAE,CACtE,WAAW,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;IACtE,UAAU,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAChD,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC;IAC1D,UAAU,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAChD,WAAW,CAAC,MAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,MAAM,CAAC;IAE1D,WAAW;IACX,IAAI,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAE,MAAe,EAAE,EAAE,CAC5D,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAC7D,WAAW,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAe,EAAE,EAAE,CAClE,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,oBAAoB;IAEnF,iBAAiB;IACjB,MAAM,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,UAAmB,EAAE,EAAE,CACjE,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAClE,KAAK,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAC3C,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;IACrD,aAAa,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CACnD,WAAW,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,EAAE,MAAM,CAAC;CAC9D,CAAA;AAED,0BAA0B;AAC1B,aAAa,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"preload.js","sourceRoot":"","sources":["../../../electron/preload/preload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAGrD,kEAAkE;AAClE,qDAAqD;AACrD,aAAa,CAAC,iBAAiB,CAAC,aAAa,EAAE;IAC7C,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC;IAEnD,UAAU,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC;IAEzE,UAAU,EAAE,CAAC,SAAiB,EAAE,IAAY,EAAE,EAAE,CAC9C,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC;IAEpD,UAAU,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAChD,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC;IAEtD,SAAS,EAAE,CAAC,SAAiB,EAAE,MAAc,EAAE,EAAE,CAC/C,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC;IAErD,aAAa,EAAE,CAAC,QAAoC,EAAE,EAAE;QACtD,WAAW,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,WAAW,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;CACpD,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import './styles/global.css';
2
+ export declare function App(): import("react").JSX.Element;
3
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../electron/renderer/src/App.tsx"],"names":[],"mappings":"AAKA,OAAO,qBAAqB,CAAA;AAE5B,wBAAgB,GAAG,gCA4FlB"}
@@ -0,0 +1,74 @@
1
+ import { useState, useEffect } from 'react';
2
+ import { SessionTree } from './components/SessionTree';
3
+ import { SessionInfo } from './components/SessionInfo';
4
+ import { ActionPanel } from './components/ActionPanel';
5
+ import './styles/global.css';
6
+ export function App() {
7
+ const [session, setSession] = useState(null);
8
+ const [selectedNode, setSelectedNode] = useState('main');
9
+ const [loading, setLoading] = useState(true);
10
+ useEffect(() => {
11
+ // Request session data from main process
12
+ window.electronAPI.getSession().then((sessionData) => {
13
+ setSession(sessionData);
14
+ setLoading(false);
15
+ });
16
+ // Listen for state updates
17
+ window.electronAPI.onStateUpdate((updatedSession) => {
18
+ setSession(updatedSession);
19
+ });
20
+ }, []);
21
+ const handleNodeClick = async (nodeId) => {
22
+ setSelectedNode(nodeId);
23
+ await window.electronAPI.selectNode(nodeId);
24
+ };
25
+ const handleCreateFork = async () => {
26
+ if (!session)
27
+ return;
28
+ const forkName = prompt('Enter fork name:');
29
+ if (!forkName)
30
+ return;
31
+ await window.electronAPI.createFork(session.id, forkName);
32
+ };
33
+ const handleExportFork = async () => {
34
+ if (!session || selectedNode === 'main')
35
+ return;
36
+ await window.electronAPI.exportFork(session.id, selectedNode);
37
+ };
38
+ const handleMergeFork = async () => {
39
+ if (!session || selectedNode === 'main')
40
+ return;
41
+ const confirm = window.confirm(`Are you sure you want to merge "${selectedNode}" to main?`);
42
+ if (!confirm)
43
+ return;
44
+ await window.electronAPI.mergeFork(session.id, selectedNode);
45
+ };
46
+ if (loading) {
47
+ return (<div className="loading">
48
+ <div className="spinner"></div>
49
+ <p>Loading session...</p>
50
+ </div>);
51
+ }
52
+ if (!session) {
53
+ return (<div className="error">
54
+ <p>No session data available</p>
55
+ </div>);
56
+ }
57
+ return (<div className="app">
58
+ <div className="titlebar" data-tauri-drag-region>
59
+ <span className="titlebar-text">🎭 Claude-Orka</span>
60
+ <button className="titlebar-button" onClick={() => window.electronAPI.closeWindow()}>
61
+
62
+ </button>
63
+ </div>
64
+
65
+ <SessionInfo session={session}/>
66
+
67
+ <div className="content">
68
+ <SessionTree session={session} selectedNode={selectedNode} onNodeClick={handleNodeClick}/>
69
+ </div>
70
+
71
+ <ActionPanel selectedNode={selectedNode} onCreateFork={handleCreateFork} onExportFork={handleExportFork} onMergeFork={handleMergeFork}/>
72
+ </div>);
73
+ }
74
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../../electron/renderer/src/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface ActionPanelProps {
2
+ selectedNode: string;
3
+ onCreateFork: () => void;
4
+ onExportFork: () => void;
5
+ onMergeFork: () => void;
6
+ }
7
+ export declare function ActionPanel({ selectedNode, onCreateFork, onExportFork, onMergeFork, }: ActionPanelProps): import("react").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=ActionPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionPanel.d.ts","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/ActionPanel.tsx"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,EAAE,gBAAgB,+BA2ClB"}
@@ -0,0 +1,29 @@
1
+ import { GitBranch, Upload, GitMerge } from 'lucide-react';
2
+ export function ActionPanel({ selectedNode, onCreateFork, onExportFork, onMergeFork, }) {
3
+ const isForkSelected = selectedNode !== 'main';
4
+ return (<div className="action-panel">
5
+ <div className="action-panel-header">
6
+ <span className="action-panel-title">
7
+ Actions for: <strong>{selectedNode === 'main' ? 'MAIN' : selectedNode.slice(0, 8)}...</strong>
8
+ </span>
9
+ </div>
10
+
11
+ <div className="action-buttons">
12
+ <button className="action-button primary" onClick={onCreateFork} title="Create a new fork from the current branch">
13
+ <GitBranch size={18}/>
14
+ <span>New Fork</span>
15
+ </button>
16
+
17
+ <button className="action-button" onClick={onExportFork} disabled={!isForkSelected} title="Export fork summary">
18
+ <Upload size={18}/>
19
+ <span>Export</span>
20
+ </button>
21
+
22
+ <button className="action-button" onClick={onMergeFork} disabled={!isForkSelected} title="Merge fork back to main">
23
+ <GitMerge size={18}/>
24
+ <span>Merge</span>
25
+ </button>
26
+ </div>
27
+ </div>);
28
+ }
29
+ //# sourceMappingURL=ActionPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/ActionPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAS1D,MAAM,UAAU,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACM;IACjB,MAAM,cAAc,GAAG,YAAY,KAAK,MAAM,CAAA;IAE9C,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAC3B;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAClC;QAAA,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAClC;uBAAa,CAAC,MAAM,CAAC,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAC/F;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAC7B;QAAA,CAAC,MAAM,CACL,SAAS,CAAC,uBAAuB,CACjC,OAAO,CAAC,CAAC,YAAY,CAAC,CACtB,KAAK,CAAC,2CAA2C,CAEjD;UAAA,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACpB;UAAA,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CACtB;QAAA,EAAE,MAAM,CAER;;QAAA,CAAC,MAAM,CACL,SAAS,CAAC,eAAe,CACzB,OAAO,CAAC,CAAC,YAAY,CAAC,CACtB,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAC1B,KAAK,CAAC,qBAAqB,CAE3B;UAAA,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACjB;UAAA,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CACpB;QAAA,EAAE,MAAM,CAER;;QAAA,CAAC,MAAM,CACL,SAAS,CAAC,eAAe,CACzB,OAAO,CAAC,CAAC,WAAW,CAAC,CACrB,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAC1B,KAAK,CAAC,yBAAyB,CAE/B;UAAA,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACnB;UAAA,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CACnB;QAAA,EAAE,MAAM,CACV;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ interface NodeCardProps {
2
+ data: {
3
+ label: string;
4
+ status: string;
5
+ claudeSessionId?: string;
6
+ selected: boolean;
7
+ };
8
+ }
9
+ export declare function NodeCard({ data }: NodeCardProps): import("react").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=NodeCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCard.d.ts","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/NodeCard.tsx"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,QAAQ,EAAE,OAAO,CAAA;KAClB,CAAA;CACF;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,aAAa,+BA+C/C"}
@@ -0,0 +1,45 @@
1
+ import { Handle, Position } from 'reactflow';
2
+ import { Circle, CheckCircle, PlayCircle } from 'lucide-react';
3
+ export function NodeCard({ data }) {
4
+ const getStatusIcon = () => {
5
+ switch (data.status) {
6
+ case 'active':
7
+ return <PlayCircle className="status-icon active" size={16}/>;
8
+ case 'saved':
9
+ return <CheckCircle className="status-icon saved" size={16}/>;
10
+ default:
11
+ return <Circle className="status-icon" size={16}/>;
12
+ }
13
+ };
14
+ const getStatusColor = () => {
15
+ switch (data.status) {
16
+ case 'active':
17
+ return 'active';
18
+ case 'saved':
19
+ return 'saved';
20
+ case 'merged':
21
+ return 'merged';
22
+ default:
23
+ return '';
24
+ }
25
+ };
26
+ return (<div className={`node-card ${data.selected ? 'selected' : ''} ${getStatusColor()}`}>
27
+ <Handle type="target" position={Position.Top} className="node-handle"/>
28
+
29
+ <div className="node-header">
30
+ {getStatusIcon()}
31
+ <span className="node-label">{data.label}</span>
32
+ </div>
33
+
34
+ {data.claudeSessionId && (<div className="node-id">
35
+ {data.claudeSessionId.slice(0, 8)}...
36
+ </div>)}
37
+
38
+ <div className="node-status-badge">
39
+ {data.status}
40
+ </div>
41
+
42
+ <Handle type="source" position={Position.Bottom} className="node-handle"/>
43
+ </div>);
44
+ }
45
+ //# sourceMappingURL=NodeCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCard.js","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/NodeCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAW9D,MAAM,UAAU,QAAQ,CAAC,EAAE,IAAI,EAAiB;IAC9C,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAA;YAChE,KAAK,OAAO;gBACV,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAA;YAChE;gBACE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAA;QACvD,CAAC;IACH,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,GAAG,EAAE;QAC1B,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAA;YACjB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAA;YAChB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAA;YACjB;gBACE,OAAO,EAAE,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,cAAc,EAAE,EAAE,CAAC,CACjF;MAAA,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,EAErE;;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,CAC1B;QAAA,CAAC,aAAa,EAAE,CAChB;QAAA,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CACjD;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,IAAI,CAAC,eAAe,IAAI,CACvB,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CACtB;UAAA,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpC,EAAE,GAAG,CAAC,CACP,CAED;;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAChC;QAAA,CAAC,IAAI,CAAC,MAAM,CACd;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,aAAa,EAC1E;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Session } from '../../../../src/models/Session';
2
+ interface SessionInfoProps {
3
+ session: Session;
4
+ }
5
+ export declare function SessionInfo({ session }: SessionInfoProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=SessionInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInfo.d.ts","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/SessionInfo.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,gBAAgB,+BAiDxD"}
@@ -0,0 +1,49 @@
1
+ import { Clock, FolderOpen, GitBranch } from 'lucide-react';
2
+ export function SessionInfo({ session }) {
3
+ const formatDate = (date) => {
4
+ const d = new Date(date);
5
+ const now = new Date();
6
+ const diff = now.getTime() - d.getTime();
7
+ const hours = Math.floor(diff / (1000 * 60 * 60));
8
+ const days = Math.floor(hours / 24);
9
+ if (days > 0) {
10
+ return `${days} day${days > 1 ? 's' : ''} ago`;
11
+ }
12
+ else if (hours > 0) {
13
+ return `${hours} hour${hours > 1 ? 's' : ''} ago`;
14
+ }
15
+ else {
16
+ return 'Just now';
17
+ }
18
+ };
19
+ const activeForks = session.forks.filter((f) => f.status === 'active').length;
20
+ const savedForks = session.forks.filter((f) => f.status === 'saved').length;
21
+ return (<div className="session-info">
22
+ <div className="session-info-header">
23
+ <h2 className="session-name">{session.name || 'Unnamed Session'}</h2>
24
+ <div className={`session-status-badge ${session.status}`}>
25
+ {session.status}
26
+ </div>
27
+ </div>
28
+
29
+ <div className="session-meta">
30
+ <div className="session-meta-item">
31
+ <Clock size={14}/>
32
+ <span>{formatDate(session.createdAt)}</span>
33
+ </div>
34
+
35
+ <div className="session-meta-item">
36
+ <FolderOpen size={14}/>
37
+ <span>{session.projectPath?.split('/').pop()}</span>
38
+ </div>
39
+
40
+ <div className="session-meta-item">
41
+ <GitBranch size={14}/>
42
+ <span>
43
+ {activeForks + savedForks} fork{activeForks + savedForks !== 1 ? 's' : ''}
44
+ </span>
45
+ </div>
46
+ </div>
47
+ </div>);
48
+ }
49
+ //# sourceMappingURL=SessionInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionInfo.js","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/SessionInfo.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAO3D,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAoB;IACvD,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;QAClC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAA;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAA;QAEnC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;QAChD,CAAC;aAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,KAAK,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAA;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAA;IAE3E,OAAO,CACL,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAC3B;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,qBAAqB,CAClC;QAAA,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,EAAE,EAAE,CACpE;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,wBAAwB,OAAO,CAAC,MAAM,EAAE,CAAC,CACvD;UAAA,CAAC,OAAO,CAAC,MAAM,CACjB;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAC3B;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAChC;UAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAChB;UAAA,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAC7C;QAAA,EAAE,GAAG,CAEL;;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAChC;UAAA,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACrB;UAAA,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,CACrD;QAAA,EAAE,GAAG,CAEL;;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAChC;UAAA,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACpB;UAAA,CAAC,IAAI,CACH;YAAA,CAAC,WAAW,GAAG,UAAU,CAAE,KAAI,CAAC,WAAW,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC3E;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import 'reactflow/dist/style.css';
2
+ import type { Session } from '../../../../src/models/Session';
3
+ interface SessionTreeProps {
4
+ session: Session;
5
+ selectedNode: string;
6
+ onNodeClick: (nodeId: string) => void;
7
+ }
8
+ export declare function SessionTree({ session, selectedNode, onNodeClick }: SessionTreeProps): import("react").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=SessionTree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTree.d.ts","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/SessionTree.tsx"],"names":[],"mappings":"AAOA,OAAO,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC;AAMD,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,gBAAgB,+BA+DnF"}
@@ -0,0 +1,57 @@
1
+ import ReactFlow, { Background, Controls, MarkerType, } from 'reactflow';
2
+ import 'reactflow/dist/style.css';
3
+ import { NodeCard } from './NodeCard';
4
+ const nodeTypes = {
5
+ sessionNode: NodeCard,
6
+ };
7
+ export function SessionTree({ session, selectedNode, onNodeClick }) {
8
+ // Create nodes for main and forks
9
+ const nodes = [
10
+ {
11
+ id: 'main',
12
+ type: 'sessionNode',
13
+ position: { x: 250, y: 50 },
14
+ data: {
15
+ label: 'MAIN',
16
+ status: session.main?.status || session.status,
17
+ claudeSessionId: session.main?.claudeSessionId,
18
+ selected: selectedNode === 'main',
19
+ },
20
+ },
21
+ ...session.forks.map((fork, index) => ({
22
+ id: fork.id,
23
+ type: 'sessionNode',
24
+ position: {
25
+ x: 100 + index * 150 - (session.forks.length * 75) + 250,
26
+ y: 200,
27
+ },
28
+ data: {
29
+ label: fork.name || `Fork ${index + 1}`,
30
+ status: fork.status,
31
+ claudeSessionId: fork.claudeSessionId,
32
+ selected: selectedNode === fork.id,
33
+ },
34
+ })),
35
+ ];
36
+ // Create edges from main to each fork
37
+ const edges = session.forks.map((fork) => ({
38
+ id: `main-${fork.id}`,
39
+ source: 'main',
40
+ target: fork.id,
41
+ animated: fork.status === 'active',
42
+ markerEnd: {
43
+ type: MarkerType.ArrowClosed,
44
+ },
45
+ style: {
46
+ stroke: fork.status === 'active' ? '#a6e3a1' : '#585b70',
47
+ strokeWidth: 2,
48
+ },
49
+ }));
50
+ return (<div style={{ width: '100%', height: '100%' }}>
51
+ <ReactFlow nodes={nodes} edges={edges} nodeTypes={nodeTypes} onNodeClick={(_, node) => onNodeClick(node.id)} fitView minZoom={0.5} maxZoom={1.5} defaultViewport={{ x: 0, y: 0, zoom: 1 }} proOptions={{ hideAttribution: true }}>
52
+ <Background />
53
+ <Controls />
54
+ </ReactFlow>
55
+ </div>);
56
+ }
57
+ //# sourceMappingURL=SessionTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionTree.js","sourceRoot":"","sources":["../../../../../electron/renderer/src/components/SessionTree.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../../electron/renderer/src/main.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import { App } from './App';
4
+ ReactDOM.createRoot(document.getElementById('root')).render(<React.StrictMode>
5
+ <App />
6
+ </React.StrictMode>);
7
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../electron/renderer/src/main.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAC,CAAC,MAAM,CAC1D,CAAC,KAAK,CAAC,UAAU,CACf;IAAA,CAAC,GAAG,CAAC,AAAD,EACN;EAAA,EAAE,KAAK,CAAC,UAAU,CAAC,CACpB,CAAA"}
@@ -0,0 +1,3 @@
1
+ declare const _default: import("vite").UserConfig;
2
+ export default _default;
3
+ //# sourceMappingURL=vite.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.d.ts","sourceRoot":"","sources":["../../../electron/renderer/vite.config.ts"],"names":[],"mappings":";AAIA,wBAeE"}
@@ -0,0 +1,20 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import path from 'path';
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ base: './',
7
+ build: {
8
+ outDir: '../../dist/electron/renderer',
9
+ emptyOutDir: true,
10
+ rollupOptions: {
11
+ input: {
12
+ main: path.resolve(__dirname, 'index.html'),
13
+ },
14
+ },
15
+ },
16
+ server: {
17
+ port: 5173,
18
+ },
19
+ });
20
+ //# sourceMappingURL=vite.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.config.js","sourceRoot":"","sources":["../../../electron/renderer/vite.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,MAAM,sBAAsB,CAAA;AACxC,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,eAAe,YAAY,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,IAAI,EAAE,IAAI;IACV,KAAK,EAAE;QACL,MAAM,EAAE,8BAA8B;QACtC,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE;YACb,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC;aAC5C;SACF;KACF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,IAAI;KACX;CACF,CAAC,CAAA"}
@@ -80,5 +80,9 @@ export declare class SessionManager {
80
80
  * Initialize Claude en un pane con prompt inicial
81
81
  */
82
82
  private initializeClaude;
83
+ /**
84
+ * Launch Electron UI for a session
85
+ */
86
+ private launchUI;
83
87
  }
84
88
  //# sourceMappingURL=SessionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../src/core/SessionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAoBzD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAAQ;gBAEf,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,QAAQ;IAQd;;OAEG;IACG,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAkDzE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAmD7E;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQ5D;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DnF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClE;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BlE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnF;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmE5E;;;OAGG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DjE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASpE;;OAEG;YACW,gBAAgB;CAmC/B"}
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../../../src/core/SessionManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAqBzD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAAQ;gBAEf,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,QAAQ;IAQd;;OAEG;IACG,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAuDzE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAqE7E;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BpD;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAIhE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAQ5D;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DnF;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuClE;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BjE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BlE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnF;;;OAGG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmE5E;;;OAGG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+DjE;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASpE;;OAEG;YACW,gBAAgB;IAoC9B;;OAEG;YACW,QAAQ;CAsCvB"}
@@ -3,6 +3,7 @@ import { TmuxCommands, logger, getExistingSessionIds, detectNewSessionId } from
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
  import path from 'path';
5
5
  import fs from 'fs-extra';
6
+ import { spawn } from 'child_process';
6
7
  const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
7
8
  /**
8
9
  * Gestiona sesiones de Claude Code usando tmux
@@ -70,6 +71,10 @@ export class SessionManager {
70
71
  };
71
72
  await this.stateManager.addSession(session);
72
73
  logger.info(`Session created: ${sessionName} (${sessionId})`);
74
+ // Launch UI
75
+ if (openTerminal) {
76
+ await this.launchUI(sessionId);
77
+ }
73
78
  return session;
74
79
  }
75
80
  /**
@@ -82,7 +87,16 @@ export class SessionManager {
82
87
  }
83
88
  logger.info(`Resuming session: ${session.name}`);
84
89
  const tmuxSessionId = `orka-${sessionId}`;
85
- // 1. Crear nueva tmux session
90
+ // Check if session is already active
91
+ if (session.status === 'active') {
92
+ logger.info(`Session is already active, reconnecting...`);
93
+ if (openTerminal) {
94
+ await TmuxCommands.openTerminalWindow(tmuxSessionId);
95
+ await this.launchUI(sessionId);
96
+ }
97
+ return session;
98
+ }
99
+ // 1. Crear nueva tmux session (only if not active)
86
100
  await TmuxCommands.createSession(tmuxSessionId, this.projectPath);
87
101
  if (openTerminal) {
88
102
  await TmuxCommands.openTerminalWindow(tmuxSessionId);
@@ -112,6 +126,10 @@ export class SessionManager {
112
126
  }
113
127
  }
114
128
  logger.info(`Session resumed: ${session.name}`);
129
+ // Launch UI
130
+ if (openTerminal) {
131
+ await this.launchUI(sessionId);
132
+ }
115
133
  return session;
116
134
  }
117
135
  /**
@@ -497,5 +515,39 @@ Analyze the content and help me integrate the changes and learnings from the for
497
515
  // 3. Esperar a que Claude inicie y procese el prompt
498
516
  await sleep(8000); // 8 segundos para que Claude inicie y registre la sesión
499
517
  }
518
+ /**
519
+ * Launch Electron UI for a session
520
+ */
521
+ async launchUI(sessionId) {
522
+ try {
523
+ // Try to require electron
524
+ let electronPath;
525
+ try {
526
+ electronPath = require('electron');
527
+ }
528
+ catch (error) {
529
+ logger.warn('Electron not available, skipping UI launch');
530
+ return;
531
+ }
532
+ // Get the path to the compiled main.js
533
+ const mainPath = path.join(__dirname, '../electron/main/main.js');
534
+ // Check if the main.js exists (in production build)
535
+ if (!fs.existsSync(mainPath)) {
536
+ logger.warn('Electron main.js not found, skipping UI launch');
537
+ return;
538
+ }
539
+ // Launch Electron detached
540
+ const electronProcess = spawn(electronPath, [mainPath, '--session-id', sessionId, '--project-path', this.projectPath], {
541
+ detached: true,
542
+ stdio: 'ignore',
543
+ });
544
+ electronProcess.unref();
545
+ logger.info(`Launched UI for session ${sessionId}`);
546
+ }
547
+ catch (error) {
548
+ logger.warn(`Failed to launch UI: ${error}`);
549
+ // Don't throw - UI is optional
550
+ }
551
+ }
500
552
  }
501
553
  //# sourceMappingURL=SessionManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../../src/core/SessionManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC1F,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,UAAU,CAAA;AAEzB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAc/E;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,YAAY,CAAc;IAC1B,WAAW,CAAQ;IAE3B,YAAY,WAAmB;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;IAC3C,CAAC;IAED,6CAA6C;IAC7C,WAAW;IACX,6CAA6C;IAE7C;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAAa,EAAE,YAAY,GAAG,IAAI;QACpD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAA;QAC1B,MAAM,WAAW,GAAG,IAAI,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,QAAQ,SAAS,EAAE,CAAA;QAEzC,MAAM,CAAC,IAAI,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAA;QAE/C,yBAAyB;QACzB,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAEjE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QAEjB,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAC9D,MAAM,CAAC,KAAK,CAAC,iBAAiB,MAAM,EAAE,CAAC,CAAA;QAEvC,iEAAiE;QACjE,MAAM,eAAe,GAAG,MAAM,EAAE,CAAA;QAChC,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,eAAe;YAC1B,WAAW,EAAE,WAAW;SACzB,CAAC,CAAA;QAEF,6BAA6B;QAC7B,MAAM,OAAO,GAAY;YACvB,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,WAAW;YACjB,aAAa;YACb,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtC,IAAI,EAAE;gBACJ,eAAe;gBACf,UAAU,EAAE,MAAM;gBAClB,MAAM,EAAE,QAAQ;aACjB;YACD,KAAK,EAAE,EAAE;SACV,CAAA;QAED,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC3C,MAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,KAAK,SAAS,GAAG,CAAC,CAAA;QAE7D,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB,EAAE,YAAY,GAAG,IAAI;QACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAEhD,MAAM,aAAa,GAAG,QAAQ,SAAS,EAAE,CAAA;QAEzC,8BAA8B;QAC9B,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAEjE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QAEjB,qBAAqB;QACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAE9D,kEAAkE;QAClE,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;YAC7C,WAAW,EAAE,OAAO,CAAC,IAAI;SAC1B,CAAC,CAAA;QAEF,oBAAoB;QACpB,OAAO,CAAC,aAAa,GAAG,aAAa,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAA;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QAC9B,OAAO,CAAC,MAAM,GAAG,QAAQ,CAAA;QACzB,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,6BAA6B;QAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;QACzE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,aAAa,cAAc,CAAC,MAAM,aAAa,CAAC,CAAA;YAC5D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAC/C,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAE/C,4BAA4B;QAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAA;QACtE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;QAC1C,CAAC;QAED,+DAA+D;QAC/D,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1B,MAAM,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvD,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QAC7B,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QACnC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAA;QACxB,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAE/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC/C,MAAM,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAEhD,wBAAwB;QACxB,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QACpC,CAAC;QAED,qBAAqB;QACrB,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAChD,MAAM,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAwB;QACzC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IACtD,CAAC;IAED,6CAA6C;IAC7C,QAAQ;IACR,6CAA6C;IAE7C;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,IAAa,EAAE,QAAQ,GAAG,KAAK;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,IAAI,QAAQ,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAA;QAE3D,MAAM,CAAC,IAAI,CAAC,kBAAkB,QAAQ,eAAe,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAEpE,yBAAyB;QACzB,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAA;QAC7D,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QAEjB,gDAAgD;QAChD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAA;QAE3C,2DAA2D;QAC3D,MAAM,WAAW,GAAG,MAAM,qBAAqB,EAAE,CAAA;QACjD,MAAM,CAAC,KAAK,CAAC,kCAAkC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QAElE,0CAA0C;QAC1C,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;YACtC,IAAI,EAAE,MAAM;YACZ,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;YAC7C,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;QAEF,gDAAgD;QAChD,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAExE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAA;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAA;QAE1D,oCAAoC;QACpC,MAAM,IAAI,GAAS;YACjB,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,cAAc,EAAE,sBAAsB;YACvD,UAAU,EAAE,UAAU;YACtB,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAA;QAED,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxB,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,iBAAiB,QAAQ,KAAK,MAAM,GAAG,CAAC,CAAA;QACpD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAE1C,yBAAyB;QACzB,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;QAC1D,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;QAEjB,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACpE,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAEhD,+DAA+D;QAC/D,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;YACtC,IAAI,EAAE,QAAQ;YACd,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,WAAW,EAAE,IAAI,CAAC,IAAI;SACvB,CAAC,CAAA;QAEF,qBAAqB;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QAEtB,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAEzC,4DAA4D;QAC5D,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9C,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;QACrB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAE3B,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACjE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAE1C,wBAAwB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;QAED,qBAAqB;QACrB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;QAClC,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,6CAA6C;IAC7C,WAAW;IACX,6CAA6C;IAE7C;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,OAAe;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;QAClD,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QAC7D,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAErD,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc,EAAE,OAAe;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;QAC/D,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACrD,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE7C,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;IACjD,CAAC;IAED,6CAA6C;IAC7C,iBAAiB;IACjB,6CAA6C;IAE7C;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,MAAc;QACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAEvD,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAA;QACzE,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAE9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAChE,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,IAAI,IAAI,SAAS,KAAK,CAAA;QACtD,MAAM,kBAAkB,GAAG,wBAAwB,UAAU,EAAE,CAAA;QAE/D,oBAAoB;QACpB,MAAM,MAAM,GAAG;gEAC6C,IAAI,CAAC,IAAI;IACrE,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;CAuBrB,CAAC,IAAI,EAAE,CAAA;QAEJ,iBAAiB;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;QACzE,CAAC;QAED,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACpD,MAAM,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAE7C,oBAAoB;QACpB,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAA;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,sCAAsC,kBAAkB,EAAE,CAAC,CAAA;QACvE,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;QAE5E,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,MAAc;QAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAA;QACH,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,UAAU,CAAC,CAAA;QAEhD,kCAAkC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;QAC9D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAE5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,0BAA0B,IAAI,CAAC,WAAW,6CAA6C,CACxF,CAAA;QACH,CAAC;QAED,4BAA4B;QAC5B,MAAM,WAAW,GAAG;qCACa,IAAI,CAAC,IAAI;yBACrB,IAAI,CAAC,WAAW;;;;;CAKxC,CAAC,IAAI,EAAE,CAAA;QAEJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;QACxE,CAAC;QAED,MAAM,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAA;QACjE,MAAM,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAErD,wBAAwB;QACxB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAExC,4BAA4B;QAC5B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC5C,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;QAC7B,CAAC;QAED,OAAO,CAAC,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC/C,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,iBAAiB,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,MAAc;QAChD,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;QAC5E,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACzD,CAAC;IAED,6CAA6C;IAC7C,mBAAmB;IACnB,6CAA6C;IAE7C;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAAoB;QACjE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAE5F,oBAAoB;QACpB,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7D,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACpC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QAEhB,iCAAiC;QACjC,IAAI,OAAO,GAAG,EAAE,CAAA;QAEhB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK;gBACR,MAAM,SAAS,GAAG,6CAA6C,WAAW,mCAAmC,CAAA;gBAC7G,OAAO,GAAG,uBAAuB,SAAS,KAAK,SAAS,GAAG,CAAA;gBAC3D,MAAK;YAEP,KAAK,QAAQ;gBACX,MAAM,YAAY,GAAG,qBAAqB,WAAW,IAAI,CAAA;gBACzD,OAAO,GAAG,mBAAmB,eAAe,KAAK,YAAY,GAAG,CAAA;gBAChE,MAAK;YAEP,KAAK,MAAM;gBACT,MAAM,UAAU,GAAG,0BAA0B,QAAQ,2EAA2E,CAAA;gBAChI,OAAO,GAAG,mBAAmB,eAAe,oBAAoB,UAAU,GAAG,CAAA;gBAC7E,MAAK;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,cAAc,OAAO,EAAE,CAAC,CAAA;QACpC,MAAM,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5C,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAEpC,qDAAqD;QACrD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,yDAAyD;IAC7E,CAAC;CACF"}
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../../../src/core/SessionManager.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.2.1",
3
+ "version": "0.3.0",
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",
@@ -9,9 +9,10 @@
9
9
  "orka": "./bin/orka.js"
10
10
  },
11
11
  "scripts": {
12
- "build": "npm run build:sdk && npm run build:cli",
12
+ "build": "npm run build:sdk && npm run build:cli && npm run build:ui",
13
13
  "build:sdk": "tsc",
14
- "build:cli": "esbuild src/cli/index.ts --bundle --platform=node --format=esm --outfile=dist/cli.js --external:@anthropic-ai/claude-agent-sdk --external:chalk --external:cli-table3 --external:commander --external:execa --external:fs-extra --external:nanoid --external:ora --external:uuid",
14
+ "build:cli": "esbuild src/cli/index.ts --bundle --platform=node --format=esm --outfile=dist/cli.js --external:@anthropic-ai/claude-agent-sdk --external:chalk --external:cli-table3 --external:commander --external:execa --external:fs-extra --external:nanoid --external:ora --external:uuid --external:electron --external:react --external:react-dom --external:reactflow --external:lucide-react",
15
+ "build:ui": "vite build electron/renderer --outDir dist/electron/renderer --emptyOutDir",
15
16
  "build:electron": "tsc && npm run copy:renderer",
16
17
  "copy:renderer": "mkdir -p dist/electron/renderer && cp -r electron/renderer/*.html electron/renderer/*.css electron/renderer/*.js dist/electron/renderer/",
17
18
  "dev": "tsx watch src/index.ts",
@@ -19,6 +20,7 @@
19
20
  "orka": "tsx src/cli/index.ts",
20
21
  "cli:link": "npm link",
21
22
  "cli:unlink": "npm unlink -g claude-orka",
23
+ "ui:dev": "vite electron/renderer",
22
24
  "electron": "npm run build:electron && electron .",
23
25
  "electron:dev": "npm run build:electron && electron . --dev",
24
26
  "type-check": "tsc --noEmit",
@@ -58,22 +60,31 @@
58
60
  "@anthropic-ai/claude-agent-sdk": "^0.1.46",
59
61
  "@types/uuid": "^10.0.0",
60
62
  "chalk": "^5.6.2",
63
+ "chokidar": "^4.0.3",
61
64
  "cli-table3": "^0.6.5",
62
65
  "commander": "^14.0.2",
66
+ "electron": "^28.0.0",
63
67
  "execa": "^5.1.1",
64
68
  "fs-extra": "^11.2.0",
69
+ "lucide-react": "^0.554.0",
65
70
  "nanoid": "^3.3.7",
66
71
  "ora": "^9.0.0",
72
+ "react": "^19.2.0",
73
+ "react-dom": "^19.2.0",
74
+ "reactflow": "^11.11.4",
67
75
  "uuid": "^13.0.0"
68
76
  },
69
77
  "devDependencies": {
70
78
  "@types/fs-extra": "^11.0.4",
71
79
  "@types/node": "^20.10.0",
72
- "electron": "^28.0.0",
80
+ "@types/react": "^19.2.6",
81
+ "@types/react-dom": "^19.2.3",
82
+ "@vitejs/plugin-react": "^4.7.0",
73
83
  "electron-builder": "^24.9.1",
74
84
  "esbuild": "^0.27.0",
75
85
  "tsx": "^4.7.0",
76
- "typescript": "^5.3.0"
86
+ "typescript": "^5.3.0",
87
+ "vite": "^6.4.1"
77
88
  },
78
89
  "engines": {
79
90
  "node": ">=18.0.0"