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.
- package/README.md +44 -141
- package/dist/actions/implementations/closeAction.d.ts.map +1 -1
- package/dist/actions/implementations/closeAction.js +25 -20
- package/dist/actions/implementations/closeAction.js.map +1 -1
- package/dist/actions/implementations/mergeAction.d.ts.map +1 -1
- package/dist/actions/implementations/mergeAction.js +2 -1
- package/dist/actions/implementations/mergeAction.js.map +1 -1
- package/dist/actions/merge/conflictResolution.d.ts.map +1 -1
- package/dist/actions/merge/conflictResolution.js +2 -1
- package/dist/actions/merge/conflictResolution.js.map +1 -1
- package/dist/actions/merge/mergeExecution.d.ts.map +1 -1
- package/dist/actions/merge/mergeExecution.js +2 -1
- package/dist/actions/merge/mergeExecution.js.map +1 -1
- package/dist/components/dialogs/SettingsDialog.d.ts.map +1 -1
- package/dist/components/dialogs/SettingsDialog.js +3 -1
- package/dist/components/dialogs/SettingsDialog.js.map +1 -1
- package/dist/components/panes/MergePane.d.ts +1 -0
- package/dist/components/panes/MergePane.d.ts.map +1 -1
- package/dist/components/panes/MergePane.js +14 -3
- package/dist/components/panes/MergePane.js.map +1 -1
- package/dist/components/popups/projectSelectPopup.d.ts +7 -0
- package/dist/components/popups/projectSelectPopup.d.ts.map +1 -0
- package/dist/components/popups/projectSelectPopup.js +124 -0
- package/dist/components/popups/projectSelectPopup.js.map +1 -0
- package/dist/components/popups/settingsPopup.js +25 -8
- package/dist/components/popups/settingsPopup.js.map +1 -1
- package/dist/components/popups/shared/DirectoryList.d.ts +14 -0
- package/dist/components/popups/shared/DirectoryList.d.ts.map +1 -0
- package/dist/components/popups/shared/DirectoryList.js +46 -0
- package/dist/components/popups/shared/DirectoryList.js.map +1 -0
- package/dist/components/popups/shared/index.d.ts +1 -0
- package/dist/components/popups/shared/index.d.ts.map +1 -1
- package/dist/components/popups/shared/index.js +1 -0
- package/dist/components/popups/shared/index.js.map +1 -1
- package/dist/components/popups/shortcutsPopup.js +8 -9
- package/dist/components/popups/shortcutsPopup.js.map +1 -1
- package/dist/hooks/useAutoUpdater.d.ts.map +1 -1
- package/dist/hooks/useAutoUpdater.js +42 -23
- package/dist/hooks/useAutoUpdater.js.map +1 -1
- package/dist/hooks/useInputHandling.d.ts.map +1 -1
- package/dist/hooks/useInputHandling.js +25 -5
- package/dist/hooks/useInputHandling.js.map +1 -1
- package/dist/hooks/useWorktreeActions.d.ts.map +1 -1
- package/dist/hooks/useWorktreeActions.js +16 -8
- package/dist/hooks/useWorktreeActions.js.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/server/embedded-assets.d.ts.map +1 -1
- package/dist/server/embedded-assets.js +41 -30
- package/dist/server/embedded-assets.js.map +1 -1
- package/dist/services/AutoUpdater.d.ts +4 -0
- package/dist/services/AutoUpdater.d.ts.map +1 -1
- package/dist/services/AutoUpdater.js +23 -0
- package/dist/services/AutoUpdater.js.map +1 -1
- package/dist/services/PopupManager.d.ts +2 -1
- package/dist/services/PopupManager.d.ts.map +1 -1
- package/dist/services/PopupManager.js +31 -11
- package/dist/services/PopupManager.js.map +1 -1
- package/dist/services/TmuxService.d.ts +6 -1
- package/dist/services/TmuxService.d.ts.map +1 -1
- package/dist/services/TmuxService.js +11 -1
- package/dist/services/TmuxService.js.map +1 -1
- package/dist/services/WorktreeCleanupService.d.ts +22 -0
- package/dist/services/WorktreeCleanupService.d.ts.map +1 -0
- package/dist/services/WorktreeCleanupService.js +80 -0
- package/dist/services/WorktreeCleanupService.js.map +1 -0
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/agentLaunch.d.ts +4 -0
- package/dist/utils/agentLaunch.d.ts.map +1 -1
- package/dist/utils/agentLaunch.js +24 -0
- package/dist/utils/agentLaunch.js.map +1 -1
- package/dist/utils/conflictResolutionPane.d.ts.map +1 -1
- package/dist/utils/conflictResolutionPane.js +61 -23
- package/dist/utils/conflictResolutionPane.js.map +1 -1
- package/dist/utils/dirScanner.d.ts +30 -0
- package/dist/utils/dirScanner.d.ts.map +1 -0
- package/dist/utils/dirScanner.js +99 -0
- package/dist/utils/dirScanner.js.map +1 -0
- package/dist/utils/generated-agents-doc.d.ts +1 -1
- package/dist/utils/generated-agents-doc.js +1 -1
- package/dist/utils/git.d.ts +13 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +20 -0
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/hooks.d.ts.map +1 -1
- package/dist/utils/hooks.js +51 -19
- package/dist/utils/hooks.js.map +1 -1
- package/dist/utils/hooksDocs.d.ts +1 -1
- package/dist/utils/mergeExecution.d.ts.map +1 -1
- package/dist/utils/mergeExecution.js +6 -3
- package/dist/utils/mergeExecution.js.map +1 -1
- package/dist/utils/onboarding.d.ts +9 -0
- package/dist/utils/onboarding.d.ts.map +1 -0
- package/dist/utils/onboarding.js +110 -0
- package/dist/utils/onboarding.js.map +1 -0
- package/dist/utils/openRouterApiKeySetup.d.ts +28 -0
- package/dist/utils/openRouterApiKeySetup.d.ts.map +1 -0
- package/dist/utils/openRouterApiKeySetup.js +143 -0
- package/dist/utils/openRouterApiKeySetup.js.map +1 -0
- package/dist/utils/paneCreation.d.ts.map +1 -1
- package/dist/utils/paneCreation.js +116 -53
- package/dist/utils/paneCreation.js.map +1 -1
- package/dist/utils/promptStore.d.ts +7 -0
- package/dist/utils/promptStore.d.ts.map +1 -0
- package/dist/utils/promptStore.js +75 -0
- package/dist/utils/promptStore.js.map +1 -0
- package/dist/utils/reopenWorktree.d.ts.map +1 -1
- package/dist/utils/reopenWorktree.js +11 -4
- package/dist/utils/reopenWorktree.js.map +1 -1
- package/dist/utils/settingsManager.d.ts.map +1 -1
- package/dist/utils/settingsManager.js +59 -0
- package/dist/utils/settingsManager.js.map +1 -1
- package/dist/utils/tmux.d.ts +2 -1
- package/dist/utils/tmux.d.ts.map +1 -1
- package/dist/utils/tmux.js +3 -1
- package/dist/utils/tmux.js.map +1 -1
- package/dist/workers/updateChecker.js +21 -6
- package/dist/workers/updateChecker.js.map +1 -1
- package/package.json +5 -8
- package/dist/components/popups/remotePopup.d.ts +0 -6
- package/dist/components/popups/remotePopup.d.ts.map +0 -1
- package/dist/components/popups/remotePopup.js +0 -166
- package/dist/components/popups/remotePopup.js.map +0 -1
- package/dist/hooks/useTunnelManagement.d.ts +0 -18
- package/dist/hooks/useTunnelManagement.d.ts.map +0 -1
- package/dist/hooks/useTunnelManagement.js +0 -55
- package/dist/hooks/useTunnelManagement.js.map +0 -1
- package/dist/server/actionsApi.d.ts +0 -37
- package/dist/server/actionsApi.d.ts.map +0 -1
- package/dist/server/actionsApi.js +0 -256
- package/dist/server/actionsApi.js.map +0 -1
- package/dist/server/index.d.ts +0 -21
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -100
- package/dist/server/index.js.map +0 -1
- package/dist/server/routes/actionsRoutes.d.ts +0 -2
- package/dist/server/routes/actionsRoutes.d.ts.map +0 -1
- package/dist/server/routes/actionsRoutes.js +0 -110
- package/dist/server/routes/actionsRoutes.js.map +0 -1
- package/dist/server/routes/healthRoutes.d.ts +0 -13
- package/dist/server/routes/healthRoutes.d.ts.map +0 -1
- package/dist/server/routes/healthRoutes.js +0 -70
- package/dist/server/routes/healthRoutes.js.map +0 -1
- package/dist/server/routes/index.d.ts +0 -8
- package/dist/server/routes/index.d.ts.map +0 -1
- package/dist/server/routes/index.js +0 -67
- package/dist/server/routes/index.js.map +0 -1
- package/dist/server/routes/keysRoutes.d.ts +0 -33
- package/dist/server/routes/keysRoutes.d.ts.map +0 -1
- package/dist/server/routes/keysRoutes.js +0 -128
- package/dist/server/routes/keysRoutes.js.map +0 -1
- package/dist/server/routes/panesRoutes.d.ts +0 -2
- package/dist/server/routes/panesRoutes.d.ts.map +0 -1
- package/dist/server/routes/panesRoutes.js +0 -414
- package/dist/server/routes/panesRoutes.js.map +0 -1
- package/dist/server/routes/settingsRoutes.d.ts +0 -94
- package/dist/server/routes/settingsRoutes.d.ts.map +0 -1
- package/dist/server/routes/settingsRoutes.js +0 -159
- package/dist/server/routes/settingsRoutes.js.map +0 -1
- package/dist/server/routes/streamRoutes.d.ts +0 -18
- package/dist/server/routes/streamRoutes.d.ts.map +0 -1
- package/dist/server/routes/streamRoutes.js +0 -87
- package/dist/server/routes/streamRoutes.js.map +0 -1
- package/dist/server/routes/tunnelRoutes.d.ts +0 -11
- package/dist/server/routes/tunnelRoutes.d.ts.map +0 -1
- package/dist/server/routes/tunnelRoutes.js +0 -28
- package/dist/server/routes/tunnelRoutes.js.map +0 -1
- package/dist/server/routes.d.ts +0 -17
- package/dist/server/routes.d.ts.map +0 -1
- package/dist/server/routes.js +0 -17
- package/dist/server/routes.js.map +0 -1
- package/dist/services/TunnelService.d.ts +0 -10
- package/dist/services/TunnelService.d.ts.map +0 -1
- package/dist/services/TunnelService.js +0 -98
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"panesRoutes.d.ts","sourceRoot":"","sources":["../../../src/server/routes/panesRoutes.ts"],"names":[],"mappings":"AAoCA,wBAAgB,iBAAiB,wBAydhC"}
|