dmux 5.0.0 → 5.2.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 (176) hide show
  1. package/README.md +44 -141
  2. package/dist/actions/implementations/closeAction.d.ts.map +1 -1
  3. package/dist/actions/implementations/closeAction.js +25 -20
  4. package/dist/actions/implementations/closeAction.js.map +1 -1
  5. package/dist/actions/implementations/mergeAction.d.ts.map +1 -1
  6. package/dist/actions/implementations/mergeAction.js +2 -1
  7. package/dist/actions/implementations/mergeAction.js.map +1 -1
  8. package/dist/actions/merge/conflictResolution.d.ts.map +1 -1
  9. package/dist/actions/merge/conflictResolution.js +2 -1
  10. package/dist/actions/merge/conflictResolution.js.map +1 -1
  11. package/dist/actions/merge/mergeExecution.d.ts.map +1 -1
  12. package/dist/actions/merge/mergeExecution.js +2 -1
  13. package/dist/actions/merge/mergeExecution.js.map +1 -1
  14. package/dist/components/dialogs/SettingsDialog.d.ts.map +1 -1
  15. package/dist/components/dialogs/SettingsDialog.js +3 -1
  16. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  17. package/dist/components/panes/MergePane.d.ts +1 -0
  18. package/dist/components/panes/MergePane.d.ts.map +1 -1
  19. package/dist/components/panes/MergePane.js +14 -3
  20. package/dist/components/panes/MergePane.js.map +1 -1
  21. package/dist/components/popups/projectSelectPopup.d.ts +7 -0
  22. package/dist/components/popups/projectSelectPopup.d.ts.map +1 -0
  23. package/dist/components/popups/projectSelectPopup.js +124 -0
  24. package/dist/components/popups/projectSelectPopup.js.map +1 -0
  25. package/dist/components/popups/settingsPopup.js +25 -8
  26. package/dist/components/popups/settingsPopup.js.map +1 -1
  27. package/dist/components/popups/shared/DirectoryList.d.ts +14 -0
  28. package/dist/components/popups/shared/DirectoryList.d.ts.map +1 -0
  29. package/dist/components/popups/shared/DirectoryList.js +46 -0
  30. package/dist/components/popups/shared/DirectoryList.js.map +1 -0
  31. package/dist/components/popups/shared/index.d.ts +1 -0
  32. package/dist/components/popups/shared/index.d.ts.map +1 -1
  33. package/dist/components/popups/shared/index.js +1 -0
  34. package/dist/components/popups/shared/index.js.map +1 -1
  35. package/dist/components/popups/shortcutsPopup.js +8 -9
  36. package/dist/components/popups/shortcutsPopup.js.map +1 -1
  37. package/dist/hooks/useAutoUpdater.d.ts.map +1 -1
  38. package/dist/hooks/useAutoUpdater.js +42 -23
  39. package/dist/hooks/useAutoUpdater.js.map +1 -1
  40. package/dist/hooks/useInputHandling.d.ts.map +1 -1
  41. package/dist/hooks/useInputHandling.js +25 -5
  42. package/dist/hooks/useInputHandling.js.map +1 -1
  43. package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
  44. package/dist/hooks/useWorktreeActions.js +16 -8
  45. package/dist/hooks/useWorktreeActions.js.map +1 -1
  46. package/dist/index.js +8 -3
  47. package/dist/index.js.map +1 -1
  48. package/dist/server/embedded-assets.d.ts.map +1 -1
  49. package/dist/server/embedded-assets.js +41 -30
  50. package/dist/server/embedded-assets.js.map +1 -1
  51. package/dist/services/AutoUpdater.d.ts +4 -0
  52. package/dist/services/AutoUpdater.d.ts.map +1 -1
  53. package/dist/services/AutoUpdater.js +23 -0
  54. package/dist/services/AutoUpdater.js.map +1 -1
  55. package/dist/services/PopupManager.d.ts +2 -1
  56. package/dist/services/PopupManager.d.ts.map +1 -1
  57. package/dist/services/PopupManager.js +31 -11
  58. package/dist/services/PopupManager.js.map +1 -1
  59. package/dist/services/TmuxService.d.ts +6 -1
  60. package/dist/services/TmuxService.d.ts.map +1 -1
  61. package/dist/services/TmuxService.js +11 -1
  62. package/dist/services/TmuxService.js.map +1 -1
  63. package/dist/services/WorktreeCleanupService.d.ts +22 -0
  64. package/dist/services/WorktreeCleanupService.d.ts.map +1 -0
  65. package/dist/services/WorktreeCleanupService.js +80 -0
  66. package/dist/services/WorktreeCleanupService.js.map +1 -0
  67. package/dist/types.d.ts +5 -1
  68. package/dist/types.d.ts.map +1 -1
  69. package/dist/utils/agentLaunch.d.ts +4 -0
  70. package/dist/utils/agentLaunch.d.ts.map +1 -1
  71. package/dist/utils/agentLaunch.js +24 -0
  72. package/dist/utils/agentLaunch.js.map +1 -1
  73. package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
  74. package/dist/utils/conflictResolutionPane.js +61 -23
  75. package/dist/utils/conflictResolutionPane.js.map +1 -1
  76. package/dist/utils/dirScanner.d.ts +30 -0
  77. package/dist/utils/dirScanner.d.ts.map +1 -0
  78. package/dist/utils/dirScanner.js +99 -0
  79. package/dist/utils/dirScanner.js.map +1 -0
  80. package/dist/utils/generated-agents-doc.d.ts +1 -1
  81. package/dist/utils/generated-agents-doc.js +1 -1
  82. package/dist/utils/git.d.ts +13 -0
  83. package/dist/utils/git.d.ts.map +1 -1
  84. package/dist/utils/git.js +20 -0
  85. package/dist/utils/git.js.map +1 -1
  86. package/dist/utils/hooks.d.ts.map +1 -1
  87. package/dist/utils/hooks.js +51 -19
  88. package/dist/utils/hooks.js.map +1 -1
  89. package/dist/utils/hooksDocs.d.ts +1 -1
  90. package/dist/utils/mergeExecution.d.ts.map +1 -1
  91. package/dist/utils/mergeExecution.js +6 -3
  92. package/dist/utils/mergeExecution.js.map +1 -1
  93. package/dist/utils/onboarding.d.ts +9 -0
  94. package/dist/utils/onboarding.d.ts.map +1 -0
  95. package/dist/utils/onboarding.js +110 -0
  96. package/dist/utils/onboarding.js.map +1 -0
  97. package/dist/utils/openRouterApiKeySetup.d.ts +28 -0
  98. package/dist/utils/openRouterApiKeySetup.d.ts.map +1 -0
  99. package/dist/utils/openRouterApiKeySetup.js +143 -0
  100. package/dist/utils/openRouterApiKeySetup.js.map +1 -0
  101. package/dist/utils/paneCreation.d.ts.map +1 -1
  102. package/dist/utils/paneCreation.js +116 -53
  103. package/dist/utils/paneCreation.js.map +1 -1
  104. package/dist/utils/promptStore.d.ts +7 -0
  105. package/dist/utils/promptStore.d.ts.map +1 -0
  106. package/dist/utils/promptStore.js +75 -0
  107. package/dist/utils/promptStore.js.map +1 -0
  108. package/dist/utils/reopenWorktree.d.ts.map +1 -1
  109. package/dist/utils/reopenWorktree.js +11 -4
  110. package/dist/utils/reopenWorktree.js.map +1 -1
  111. package/dist/utils/settingsManager.d.ts.map +1 -1
  112. package/dist/utils/settingsManager.js +59 -0
  113. package/dist/utils/settingsManager.js.map +1 -1
  114. package/dist/utils/tmux.d.ts +2 -1
  115. package/dist/utils/tmux.d.ts.map +1 -1
  116. package/dist/utils/tmux.js +3 -1
  117. package/dist/utils/tmux.js.map +1 -1
  118. package/dist/workers/updateChecker.js +21 -6
  119. package/dist/workers/updateChecker.js.map +1 -1
  120. package/package.json +5 -8
  121. package/dist/components/popups/remotePopup.d.ts +0 -6
  122. package/dist/components/popups/remotePopup.d.ts.map +0 -1
  123. package/dist/components/popups/remotePopup.js +0 -166
  124. package/dist/components/popups/remotePopup.js.map +0 -1
  125. package/dist/hooks/useTunnelManagement.d.ts +0 -18
  126. package/dist/hooks/useTunnelManagement.d.ts.map +0 -1
  127. package/dist/hooks/useTunnelManagement.js +0 -55
  128. package/dist/hooks/useTunnelManagement.js.map +0 -1
  129. package/dist/server/actionsApi.d.ts +0 -37
  130. package/dist/server/actionsApi.d.ts.map +0 -1
  131. package/dist/server/actionsApi.js +0 -256
  132. package/dist/server/actionsApi.js.map +0 -1
  133. package/dist/server/index.d.ts +0 -21
  134. package/dist/server/index.d.ts.map +0 -1
  135. package/dist/server/index.js +0 -100
  136. package/dist/server/index.js.map +0 -1
  137. package/dist/server/routes/actionsRoutes.d.ts +0 -2
  138. package/dist/server/routes/actionsRoutes.d.ts.map +0 -1
  139. package/dist/server/routes/actionsRoutes.js +0 -110
  140. package/dist/server/routes/actionsRoutes.js.map +0 -1
  141. package/dist/server/routes/healthRoutes.d.ts +0 -13
  142. package/dist/server/routes/healthRoutes.d.ts.map +0 -1
  143. package/dist/server/routes/healthRoutes.js +0 -70
  144. package/dist/server/routes/healthRoutes.js.map +0 -1
  145. package/dist/server/routes/index.d.ts +0 -8
  146. package/dist/server/routes/index.d.ts.map +0 -1
  147. package/dist/server/routes/index.js +0 -67
  148. package/dist/server/routes/index.js.map +0 -1
  149. package/dist/server/routes/keysRoutes.d.ts +0 -33
  150. package/dist/server/routes/keysRoutes.d.ts.map +0 -1
  151. package/dist/server/routes/keysRoutes.js +0 -128
  152. package/dist/server/routes/keysRoutes.js.map +0 -1
  153. package/dist/server/routes/panesRoutes.d.ts +0 -2
  154. package/dist/server/routes/panesRoutes.d.ts.map +0 -1
  155. package/dist/server/routes/panesRoutes.js +0 -414
  156. package/dist/server/routes/panesRoutes.js.map +0 -1
  157. package/dist/server/routes/settingsRoutes.d.ts +0 -94
  158. package/dist/server/routes/settingsRoutes.d.ts.map +0 -1
  159. package/dist/server/routes/settingsRoutes.js +0 -159
  160. package/dist/server/routes/settingsRoutes.js.map +0 -1
  161. package/dist/server/routes/streamRoutes.d.ts +0 -18
  162. package/dist/server/routes/streamRoutes.d.ts.map +0 -1
  163. package/dist/server/routes/streamRoutes.js +0 -87
  164. package/dist/server/routes/streamRoutes.js.map +0 -1
  165. package/dist/server/routes/tunnelRoutes.d.ts +0 -11
  166. package/dist/server/routes/tunnelRoutes.d.ts.map +0 -1
  167. package/dist/server/routes/tunnelRoutes.js +0 -28
  168. package/dist/server/routes/tunnelRoutes.js.map +0 -1
  169. package/dist/server/routes.d.ts +0 -17
  170. package/dist/server/routes.d.ts.map +0 -1
  171. package/dist/server/routes.js +0 -17
  172. package/dist/server/routes.js.map +0 -1
  173. package/dist/services/TunnelService.d.ts +0 -10
  174. package/dist/services/TunnelService.d.ts.map +0 -1
  175. package/dist/services/TunnelService.js +0 -98
  176. package/dist/services/TunnelService.js.map +0 -1
@@ -1,67 +0,0 @@
1
- import { eventHandler, setHeader } from 'h3';
2
- import { createPanesRoutes } from './panesRoutes.js';
3
- import { createStreamRoutes } from './streamRoutes.js';
4
- import { createKeysRoutes } from './keysRoutes.js';
5
- import { createActionsRoutes } from './actionsRoutes.js';
6
- import { createSettingsRoutes } from './settingsRoutes.js';
7
- import { createTunnelRoutes } from './tunnelRoutes.js';
8
- import { createHealthRoutes } from './healthRoutes.js';
9
- /**
10
- * Sets up all application routes
11
- * @param app - The h3 app instance
12
- * @param server - Optional server instance for tunnel functionality
13
- */
14
- export function setupRoutes(app, server) {
15
- // CORS middleware for all routes
16
- app.use('/', eventHandler(async (event) => {
17
- // Get the origin from the request
18
- const origin = event.node.req.headers.origin;
19
- // Allow any origin (including tunnel URLs) for SSE and API requests
20
- if (origin) {
21
- setHeader(event, 'Access-Control-Allow-Origin', origin);
22
- setHeader(event, 'Access-Control-Allow-Credentials', 'true');
23
- }
24
- else {
25
- setHeader(event, 'Access-Control-Allow-Origin', '*');
26
- }
27
- setHeader(event, 'Access-Control-Allow-Methods', 'GET, POST, PATCH, OPTIONS');
28
- setHeader(event, 'Access-Control-Allow-Headers', 'Content-Type, Cache-Control');
29
- setHeader(event, 'Access-Control-Max-Age', 86400); // 24 hours
30
- if (event.node.req.method === 'OPTIONS') {
31
- event.node.res.statusCode = 204;
32
- return '';
33
- }
34
- }));
35
- // Mount settings routes (includes session, hooks, logs)
36
- const settingsRoutes = createSettingsRoutes();
37
- settingsRoutes.forEach(route => {
38
- app.use(route.path, route.handler);
39
- });
40
- // Mount tunnel routes
41
- const tunnelRoutes = createTunnelRoutes(server);
42
- tunnelRoutes.forEach(route => {
43
- app.use(route.path, route.handler);
44
- });
45
- // Mount actions routes (uses createRouter internally)
46
- const actionsRouter = createActionsRoutes();
47
- app.use(actionsRouter);
48
- // Mount panes routes (uses createRouter internally)
49
- const panesRouter = createPanesRoutes();
50
- app.use(panesRouter);
51
- // Mount stream routes
52
- const streamRoutes = createStreamRoutes();
53
- streamRoutes.forEach(route => {
54
- app.use(route.path, route.handler);
55
- });
56
- // Mount keys routes
57
- const keysRoutes = createKeysRoutes();
58
- keysRoutes.forEach(route => {
59
- app.use(route.path, route.handler);
60
- });
61
- // Mount health routes (includes static file serving - MUST BE LAST)
62
- const healthRoutes = createHealthRoutes();
63
- healthRoutes.forEach(route => {
64
- app.use(route.path, route.handler);
65
- });
66
- }
67
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- export declare function createKeysRoutes(): {
2
- path: string;
3
- handler: import("h3").EventHandler<import("h3").EventHandlerRequest, Promise<{
4
- error: string;
5
- success?: undefined;
6
- text?: undefined;
7
- characterCount?: undefined;
8
- details?: undefined;
9
- key?: undefined;
10
- } | {
11
- success: boolean;
12
- text: any;
13
- characterCount: any;
14
- error?: undefined;
15
- details?: undefined;
16
- key?: undefined;
17
- } | {
18
- error: string;
19
- details: any;
20
- success?: undefined;
21
- text?: undefined;
22
- characterCount?: undefined;
23
- key?: undefined;
24
- } | {
25
- success: boolean;
26
- key: any;
27
- error?: undefined;
28
- text?: undefined;
29
- characterCount?: undefined;
30
- details?: undefined;
31
- }>>;
32
- }[];
33
- //# sourceMappingURL=keysRoutes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keysRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/routes/keysRoutes.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmI/B"}
@@ -1,128 +0,0 @@
1
- import { eventHandler, readBody } from 'h3';
2
- import { StateManager } from '../../shared/StateManager.js';
3
- import { LogService } from '../../services/LogService.js';
4
- import { TmuxService } from '../../services/TmuxService.js';
5
- const stateManager = StateManager.getInstance();
6
- const tmuxService = TmuxService.getInstance();
7
- export function createKeysRoutes() {
8
- return [
9
- // POST /api/keys/:paneId - Send keystrokes to pane
10
- {
11
- path: '/api/keys',
12
- handler: eventHandler(async (event) => {
13
- // Only accept POST requests
14
- if (event.node.req.method !== 'POST') {
15
- event.node.res.statusCode = 405;
16
- return { error: 'Method not allowed' };
17
- }
18
- const url = event.node.req.url || '';
19
- const dmuxId = url.startsWith('/') ? url.substring(1) : url;
20
- if (!dmuxId || dmuxId.includes('/')) {
21
- event.node.res.statusCode = 404;
22
- return { error: 'Invalid pane ID' };
23
- }
24
- // Find the pane by dmux ID
25
- const pane = stateManager.getPaneById(decodeURIComponent(dmuxId));
26
- if (!pane || !pane.paneId) {
27
- event.node.res.statusCode = 404;
28
- return { error: 'Pane not found' };
29
- }
30
- // Read the keystroke data from the request body
31
- const body = await readBody(event);
32
- // Support bulk text input (for sending multiple characters at once)
33
- if (body && typeof body.text === 'string') {
34
- try {
35
- // Send the entire text at once using literal mode
36
- // This is much more efficient than sending character-by-character from the frontend
37
- await tmuxService.sendKeys(pane.paneId, `-l ${JSON.stringify(body.text)}`);
38
- return { success: true, text: body.text, characterCount: body.text.length };
39
- }
40
- catch (error) {
41
- const msg = 'Failed to send text to pane';
42
- console.error(msg, error);
43
- LogService.getInstance().error(msg, 'routes', pane.id, error instanceof Error ? error : undefined);
44
- event.node.res.statusCode = 500;
45
- return { error: 'Failed to send text', details: error.message };
46
- }
47
- }
48
- // Original single-key handling
49
- if (!body || typeof body.key !== 'string') {
50
- event.node.res.statusCode = 400;
51
- return { error: 'Missing or invalid key/text data' };
52
- }
53
- try {
54
- // Map special keys to tmux send-keys format
55
- const key = body.key;
56
- let tmuxKey = key;
57
- // Handle special keys
58
- const specialKeys = {
59
- 'Enter': 'Enter',
60
- 'Tab': 'Tab',
61
- 'Backspace': 'BSpace',
62
- 'Delete': 'DC', // Delete Character
63
- 'Escape': 'Escape',
64
- 'ArrowUp': 'Up',
65
- 'ArrowDown': 'Down',
66
- 'ArrowLeft': 'Left',
67
- 'ArrowRight': 'Right',
68
- 'Home': 'Home',
69
- 'End': 'End',
70
- 'PageUp': 'PageUp',
71
- 'PageDown': 'PageDown',
72
- 'Space': 'Space'
73
- };
74
- // Priority order: Ctrl/Alt combinations first, then special keys, then regular
75
- // Handle Ctrl+ combinations with regular characters
76
- if (body.ctrlKey && key.length === 1 && !specialKeys[key]) {
77
- tmuxKey = `C-${key.toLowerCase()}`;
78
- }
79
- // Handle Alt+ combinations with regular characters
80
- else if (body.altKey && key.length === 1 && !specialKeys[key]) {
81
- tmuxKey = `M-${key.toLowerCase()}`;
82
- }
83
- // Handle Shift+Tab
84
- else if (body.shiftKey && key === 'Tab') {
85
- tmuxKey = 'BTab';
86
- }
87
- // Handle Shift+Enter - send the escape sequence using printf to handle escape character
88
- else if (body.shiftKey && key === 'Enter') {
89
- // Send ESC[13;2~ which is the standard Shift+Enter sequence
90
- const bufferName = 'dmux-shift-enter';
91
- await tmuxService.setBuffer(bufferName, '\x1b[13;2~');
92
- await tmuxService.pasteBuffer(bufferName, pane.paneId);
93
- await tmuxService.deleteBuffer(bufferName);
94
- return { success: true, key: 'Shift+Enter (CSI sequence)' };
95
- }
96
- // Handle Ctrl+ with special keys
97
- else if (body.ctrlKey && specialKeys[key]) {
98
- tmuxKey = `C-${specialKeys[key]}`;
99
- }
100
- // Handle Alt+ with special keys
101
- else if (body.altKey && specialKeys[key]) {
102
- tmuxKey = `M-${specialKeys[key]}`;
103
- }
104
- // Handle special keys alone
105
- else if (specialKeys[key]) {
106
- tmuxKey = specialKeys[key];
107
- }
108
- // Regular character - use sendKeys which handles literal flag
109
- else if (key.length === 1) {
110
- await tmuxService.sendKeys(pane.paneId, `-l ${JSON.stringify(key)}`);
111
- return { success: true, key: key };
112
- }
113
- // Send the key to tmux (for all non-literal keys)
114
- await tmuxService.sendKeys(pane.paneId, tmuxKey);
115
- return { success: true, key: tmuxKey };
116
- }
117
- catch (error) {
118
- const msg = 'Failed to send keys to pane';
119
- console.error(msg, error);
120
- LogService.getInstance().error(msg, 'routes', pane.id, error instanceof Error ? error : undefined);
121
- event.node.res.statusCode = 500;
122
- return { error: 'Failed to send keys', details: error.message };
123
- }
124
- })
125
- }
126
- ];
127
- }
128
- //# sourceMappingURL=keysRoutes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keysRoutes.js","sourceRoot":"","sources":["../../../src/server/routes/keysRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function createPanesRoutes(): import("h3").Router;
2
- //# sourceMappingURL=panesRoutes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"panesRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/routes/panesRoutes.ts"],"names":[],"mappings":"AAoCA,wBAAgB,iBAAiB,wBAydhC"}