claudedesk 1.0.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/LICENSE +21 -0
- package/README.md +431 -0
- package/config/repos.example.json +128 -0
- package/config/settings.example.json +64 -0
- package/config/skills/code-review.md +76 -0
- package/config/skills/full-check.md +26 -0
- package/config/skills/lint-fix.md +23 -0
- package/dist/api/agent-routes.d.ts +2 -0
- package/dist/api/agent-routes.d.ts.map +1 -0
- package/dist/api/agent-routes.js +251 -0
- package/dist/api/agent-routes.js.map +1 -0
- package/dist/api/app-routes.d.ts +2 -0
- package/dist/api/app-routes.d.ts.map +1 -0
- package/dist/api/app-routes.js +150 -0
- package/dist/api/app-routes.js.map +1 -0
- package/dist/api/docker-routes.d.ts +2 -0
- package/dist/api/docker-routes.d.ts.map +1 -0
- package/dist/api/docker-routes.js +167 -0
- package/dist/api/docker-routes.js.map +1 -0
- package/dist/api/middleware.d.ts +6 -0
- package/dist/api/middleware.d.ts.map +1 -0
- package/dist/api/middleware.js +293 -0
- package/dist/api/middleware.js.map +1 -0
- package/dist/api/pin-auth.d.ts +65 -0
- package/dist/api/pin-auth.d.ts.map +1 -0
- package/dist/api/pin-auth.js +218 -0
- package/dist/api/pin-auth.js.map +1 -0
- package/dist/api/routes.d.ts +2 -0
- package/dist/api/routes.d.ts.map +1 -0
- package/dist/api/routes.js +473 -0
- package/dist/api/routes.js.map +1 -0
- package/dist/api/settings-routes.d.ts +2 -0
- package/dist/api/settings-routes.d.ts.map +1 -0
- package/dist/api/settings-routes.js +570 -0
- package/dist/api/settings-routes.js.map +1 -0
- package/dist/api/skill-routes.d.ts +2 -0
- package/dist/api/skill-routes.d.ts.map +1 -0
- package/dist/api/skill-routes.js +88 -0
- package/dist/api/skill-routes.js.map +1 -0
- package/dist/api/terminal-routes.d.ts +2 -0
- package/dist/api/terminal-routes.d.ts.map +1 -0
- package/dist/api/terminal-routes.js +3524 -0
- package/dist/api/terminal-routes.js.map +1 -0
- package/dist/api/tunnel-routes.d.ts +2 -0
- package/dist/api/tunnel-routes.d.ts.map +1 -0
- package/dist/api/tunnel-routes.js +196 -0
- package/dist/api/tunnel-routes.js.map +1 -0
- package/dist/api/workspace-routes.d.ts +3 -0
- package/dist/api/workspace-routes.d.ts.map +1 -0
- package/dist/api/workspace-routes.js +649 -0
- package/dist/api/workspace-routes.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +276 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/assets/index-B4r0njGe.js +780 -0
- package/dist/client/assets/index-CY_9MyE0.css +1 -0
- package/dist/client/favicon.svg +5 -0
- package/dist/client/icons/icon-192.svg +5 -0
- package/dist/client/icons/icon-512.svg +5 -0
- package/dist/client/icons/logo-with-message.png +0 -0
- package/dist/client/icons/logo.png +0 -0
- package/dist/client/index.html +25 -0
- package/dist/client/manifest.json +62 -0
- package/dist/client/sw.js +243 -0
- package/dist/config/agent-usage.d.ts +34 -0
- package/dist/config/agent-usage.d.ts.map +1 -0
- package/dist/config/agent-usage.js +87 -0
- package/dist/config/agent-usage.js.map +1 -0
- package/dist/config/repos.d.ts +34 -0
- package/dist/config/repos.d.ts.map +1 -0
- package/dist/config/repos.js +412 -0
- package/dist/config/repos.js.map +1 -0
- package/dist/config/settings.d.ts +634 -0
- package/dist/config/settings.d.ts.map +1 -0
- package/dist/config/settings.js +459 -0
- package/dist/config/settings.js.map +1 -0
- package/dist/config/skills.d.ts +18 -0
- package/dist/config/skills.d.ts.map +1 -0
- package/dist/config/skills.js +174 -0
- package/dist/config/skills.js.map +1 -0
- package/dist/config/workspaces.d.ts +961 -0
- package/dist/config/workspaces.d.ts.map +1 -0
- package/dist/config/workspaces.js +482 -0
- package/dist/config/workspaces.js.map +1 -0
- package/dist/core/app-manager.d.ts +85 -0
- package/dist/core/app-manager.d.ts.map +1 -0
- package/dist/core/app-manager.js +447 -0
- package/dist/core/app-manager.js.map +1 -0
- package/dist/core/claude-invoker.d.ts +49 -0
- package/dist/core/claude-invoker.d.ts.map +1 -0
- package/dist/core/claude-invoker.js +583 -0
- package/dist/core/claude-invoker.js.map +1 -0
- package/dist/core/claude-session-reader.d.ts +25 -0
- package/dist/core/claude-session-reader.d.ts.map +1 -0
- package/dist/core/claude-session-reader.js +184 -0
- package/dist/core/claude-session-reader.js.map +1 -0
- package/dist/core/claude-usage-query.d.ts +78 -0
- package/dist/core/claude-usage-query.d.ts.map +1 -0
- package/dist/core/claude-usage-query.js +294 -0
- package/dist/core/claude-usage-query.js.map +1 -0
- package/dist/core/git-credential-helper.d.ts +57 -0
- package/dist/core/git-credential-helper.d.ts.map +1 -0
- package/dist/core/git-credential-helper.js +176 -0
- package/dist/core/git-credential-helper.js.map +1 -0
- package/dist/core/git-sandbox.d.ts +135 -0
- package/dist/core/git-sandbox.d.ts.map +1 -0
- package/dist/core/git-sandbox.js +907 -0
- package/dist/core/git-sandbox.js.map +1 -0
- package/dist/core/github-integration.d.ts +66 -0
- package/dist/core/github-integration.d.ts.map +1 -0
- package/dist/core/github-integration.js +350 -0
- package/dist/core/github-integration.js.map +1 -0
- package/dist/core/github-oauth.d.ts +88 -0
- package/dist/core/github-oauth.d.ts.map +1 -0
- package/dist/core/github-oauth.js +244 -0
- package/dist/core/github-oauth.js.map +1 -0
- package/dist/core/gitlab-integration.d.ts +66 -0
- package/dist/core/gitlab-integration.d.ts.map +1 -0
- package/dist/core/gitlab-integration.js +353 -0
- package/dist/core/gitlab-integration.js.map +1 -0
- package/dist/core/gitlab-oauth.d.ts +100 -0
- package/dist/core/gitlab-oauth.d.ts.map +1 -0
- package/dist/core/gitlab-oauth.js +366 -0
- package/dist/core/gitlab-oauth.js.map +1 -0
- package/dist/core/insights-extractor.d.ts +68 -0
- package/dist/core/insights-extractor.d.ts.map +1 -0
- package/dist/core/insights-extractor.js +402 -0
- package/dist/core/insights-extractor.js.map +1 -0
- package/dist/core/logger.d.ts +27 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +70 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/process-runner.d.ts +27 -0
- package/dist/core/process-runner.d.ts.map +1 -0
- package/dist/core/process-runner.js +147 -0
- package/dist/core/process-runner.js.map +1 -0
- package/dist/core/project-detector.d.ts +30 -0
- package/dist/core/project-detector.d.ts.map +1 -0
- package/dist/core/project-detector.js +482 -0
- package/dist/core/project-detector.js.map +1 -0
- package/dist/core/qr-generator.d.ts +18 -0
- package/dist/core/qr-generator.d.ts.map +1 -0
- package/dist/core/qr-generator.js +61 -0
- package/dist/core/qr-generator.js.map +1 -0
- package/dist/core/remote-tunnel-manager.d.ts +59 -0
- package/dist/core/remote-tunnel-manager.d.ts.map +1 -0
- package/dist/core/remote-tunnel-manager.js +235 -0
- package/dist/core/remote-tunnel-manager.js.map +1 -0
- package/dist/core/shared-docker-manager.d.ts +41 -0
- package/dist/core/shared-docker-manager.d.ts.map +1 -0
- package/dist/core/shared-docker-manager.js +409 -0
- package/dist/core/shared-docker-manager.js.map +1 -0
- package/dist/core/skill-executor.d.ts +25 -0
- package/dist/core/skill-executor.d.ts.map +1 -0
- package/dist/core/skill-executor.js +171 -0
- package/dist/core/skill-executor.js.map +1 -0
- package/dist/core/terminal-session.d.ts +149 -0
- package/dist/core/terminal-session.d.ts.map +1 -0
- package/dist/core/terminal-session.js +2340 -0
- package/dist/core/terminal-session.js.map +1 -0
- package/dist/core/tunnel-manager.d.ts +35 -0
- package/dist/core/tunnel-manager.d.ts.map +1 -0
- package/dist/core/tunnel-manager.js +137 -0
- package/dist/core/tunnel-manager.js.map +1 -0
- package/dist/core/usage-manager.d.ts +57 -0
- package/dist/core/usage-manager.d.ts.map +1 -0
- package/dist/core/usage-manager.js +363 -0
- package/dist/core/usage-manager.js.map +1 -0
- package/dist/core/ws-manager.d.ts +39 -0
- package/dist/core/ws-manager.d.ts.map +1 -0
- package/dist/core/ws-manager.js +190 -0
- package/dist/core/ws-manager.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +229 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +868 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +119 -0
- package/dist/types.js.map +1 -0
- package/package.json +96 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import { createServer } from 'http';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { existsSync } from 'fs';
|
|
5
|
+
import { apiRouter } from './api/routes.js';
|
|
6
|
+
import { terminalRouter } from './api/terminal-routes.js';
|
|
7
|
+
import { appRouter } from './api/app-routes.js';
|
|
8
|
+
import { authMiddleware, rateLimitMiddleware, errorHandler, getAuthToken } from './api/middleware.js';
|
|
9
|
+
import { sharedDockerManager } from './core/shared-docker-manager.js';
|
|
10
|
+
import { settingsManager } from './config/settings.js';
|
|
11
|
+
import { wsManager } from './core/ws-manager.js';
|
|
12
|
+
import { terminalSessionManager } from './core/terminal-session.js';
|
|
13
|
+
import { tunnelManager } from './core/tunnel-manager.js';
|
|
14
|
+
import { appManager } from './core/app-manager.js';
|
|
15
|
+
import { remoteTunnelManager } from './core/remote-tunnel-manager.js';
|
|
16
|
+
let serverInstance = null;
|
|
17
|
+
/**
|
|
18
|
+
* Clean up orphaned terminal worktrees from deleted sessions on startup
|
|
19
|
+
*/
|
|
20
|
+
function cleanupOrphanedTerminalWorktrees() {
|
|
21
|
+
console.log('[Startup] Checking for orphaned terminal worktrees...');
|
|
22
|
+
const cleanedCount = terminalSessionManager.cleanupOrphanedWorktrees();
|
|
23
|
+
if (cleanedCount > 0) {
|
|
24
|
+
console.log(`[Startup] Cleaned up ${cleanedCount} orphaned terminal worktree(s)`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function startServer(options = {}) {
|
|
28
|
+
const PORT = options.port ?? (process.env.CLAUDEDESK_PORT ? parseInt(process.env.CLAUDEDESK_PORT, 10) : 8787);
|
|
29
|
+
const HOST = options.host ?? (process.env.ALLOW_REMOTE === 'true' ? '0.0.0.0' : '127.0.0.1');
|
|
30
|
+
// SEC-02: Warn when remote access is enabled
|
|
31
|
+
if (HOST === '0.0.0.0') {
|
|
32
|
+
console.warn('');
|
|
33
|
+
console.warn('╔════════════════════════════════════════════════════════════════╗');
|
|
34
|
+
console.warn('║ ⚠️ SECURITY WARNING ⚠️ ║');
|
|
35
|
+
console.warn('╠════════════════════════════════════════════════════════════════╣');
|
|
36
|
+
console.warn('║ ALLOW_REMOTE=true: Server is accessible from your network ║');
|
|
37
|
+
console.warn('║ Anyone on your network can access this instance ║');
|
|
38
|
+
console.warn('║ Only use this in trusted network environments ║');
|
|
39
|
+
console.warn('╚════════════════════════════════════════════════════════════════╝');
|
|
40
|
+
console.warn('');
|
|
41
|
+
}
|
|
42
|
+
// Run terminal worktree cleanup on startup
|
|
43
|
+
cleanupOrphanedTerminalWorktrees();
|
|
44
|
+
const app = express();
|
|
45
|
+
// Middleware
|
|
46
|
+
app.use(express.json());
|
|
47
|
+
app.use(authMiddleware);
|
|
48
|
+
app.use(rateLimitMiddleware);
|
|
49
|
+
// API routes
|
|
50
|
+
app.use('/api', apiRouter);
|
|
51
|
+
app.use('/api/terminal', terminalRouter);
|
|
52
|
+
app.use('/api/apps', appRouter);
|
|
53
|
+
// Static UI files - serve from Vite build
|
|
54
|
+
const staticDir = join(process.cwd(), 'dist', 'client');
|
|
55
|
+
if (existsSync(staticDir)) {
|
|
56
|
+
app.use(express.static(staticDir));
|
|
57
|
+
}
|
|
58
|
+
// SPA fallback - serve index.html for non-API routes
|
|
59
|
+
app.get('*', (req, res) => {
|
|
60
|
+
if (!req.path.startsWith('/api')) {
|
|
61
|
+
const indexPath = join(staticDir, 'index.html');
|
|
62
|
+
if (existsSync(indexPath)) {
|
|
63
|
+
res.sendFile(indexPath);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
res.status(404).send('UI not built. Run: npm run build:client');
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// Error handler
|
|
71
|
+
app.use(errorHandler);
|
|
72
|
+
// Create HTTP server (needed for WebSocket)
|
|
73
|
+
const server = createServer(app);
|
|
74
|
+
serverInstance = server;
|
|
75
|
+
// Initialize WebSocket server
|
|
76
|
+
const authToken = getAuthToken();
|
|
77
|
+
wsManager.initialize(server, authToken);
|
|
78
|
+
// Initialize terminal session manager (loads saved sessions)
|
|
79
|
+
// This is imported above, which triggers initialization
|
|
80
|
+
// Start server
|
|
81
|
+
server.listen(PORT, HOST, async () => {
|
|
82
|
+
// Auto-start Docker services if enabled
|
|
83
|
+
const dockerSettings = settingsManager.getDocker();
|
|
84
|
+
let dockerStatus = 'Docker: disabled';
|
|
85
|
+
if (dockerSettings.enabled && dockerSettings.autoStart) {
|
|
86
|
+
sharedDockerManager.start()
|
|
87
|
+
.then(() => {
|
|
88
|
+
console.log('[Docker] Auto-started shared Docker services');
|
|
89
|
+
})
|
|
90
|
+
.catch((err) => {
|
|
91
|
+
console.warn('[Docker] Failed to auto-start:', err.message);
|
|
92
|
+
});
|
|
93
|
+
dockerStatus = 'Docker: auto-starting...';
|
|
94
|
+
}
|
|
95
|
+
else if (dockerSettings.enabled) {
|
|
96
|
+
dockerStatus = 'Docker: enabled (manual start)';
|
|
97
|
+
}
|
|
98
|
+
// Auto-start remote tunnel if enabled
|
|
99
|
+
const tunnelSettings = settingsManager.getTunnel();
|
|
100
|
+
let tunnelStatus = 'Tunnel: disabled';
|
|
101
|
+
if (tunnelSettings.enabled && tunnelSettings.autoStart) {
|
|
102
|
+
remoteTunnelManager.start()
|
|
103
|
+
.then((result) => {
|
|
104
|
+
if (result.success) {
|
|
105
|
+
console.log('[Tunnel] Auto-started remote access tunnel:', result.url);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.warn('[Tunnel] Failed to auto-start:', result.error);
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
.catch((err) => {
|
|
112
|
+
console.warn('[Tunnel] Failed to auto-start:', err.message);
|
|
113
|
+
});
|
|
114
|
+
tunnelStatus = 'Tunnel: auto-starting...';
|
|
115
|
+
}
|
|
116
|
+
else if (tunnelSettings.enabled) {
|
|
117
|
+
tunnelStatus = 'Tunnel: enabled (manual start)';
|
|
118
|
+
}
|
|
119
|
+
const sessionCount = terminalSessionManager.getAllSessions().length;
|
|
120
|
+
const terminalStatus = sessionCount > 0
|
|
121
|
+
? `Terminal: ${sessionCount} session(s)`
|
|
122
|
+
: 'Terminal: ready';
|
|
123
|
+
const networkInfo = HOST === '0.0.0.0'
|
|
124
|
+
? `Network: ${HOST}:${PORT} (remote access enabled)`
|
|
125
|
+
: `Network: localhost only`;
|
|
126
|
+
console.log(`
|
|
127
|
+
╔═══════════════════════════════════════════════════════════╗
|
|
128
|
+
║ CLAUDEDESK v2.0.0 ║
|
|
129
|
+
╠═══════════════════════════════════════════════════════════╣
|
|
130
|
+
║ Server running at: http://localhost:${PORT} ║
|
|
131
|
+
║ WebSocket: ws://localhost:${PORT}/ws ║
|
|
132
|
+
║ ${networkInfo.padEnd(43)}║
|
|
133
|
+
║ ${terminalStatus.padEnd(43)}║
|
|
134
|
+
║ ${dockerStatus.padEnd(43)}║
|
|
135
|
+
║ ${tunnelStatus.padEnd(43)}║
|
|
136
|
+
╚═══════════════════════════════════════════════════════════╝
|
|
137
|
+
`);
|
|
138
|
+
});
|
|
139
|
+
// REL-03: Comprehensive graceful shutdown to prevent orphaned processes
|
|
140
|
+
let isShuttingDown = false;
|
|
141
|
+
async function gracefulShutdown(signal) {
|
|
142
|
+
if (isShuttingDown) {
|
|
143
|
+
console.log(`[Shutdown] Already shutting down, ignoring ${signal}`);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
isShuttingDown = true;
|
|
147
|
+
console.log(`\n[Shutdown] Received ${signal}, cleaning up...`);
|
|
148
|
+
try {
|
|
149
|
+
// 1. Close WebSocket connections
|
|
150
|
+
console.log('[Shutdown] Closing WebSocket connections...');
|
|
151
|
+
wsManager.shutdown();
|
|
152
|
+
// 2. Stop all running apps
|
|
153
|
+
console.log('[Shutdown] Stopping running apps...');
|
|
154
|
+
await appManager.stopAllApps();
|
|
155
|
+
// 3. Stop all job tunnels (cloudflared processes)
|
|
156
|
+
console.log('[Shutdown] Stopping tunnels...');
|
|
157
|
+
await tunnelManager.stopAllTunnels();
|
|
158
|
+
// 4. Clean up terminal sessions (kills Claude processes)
|
|
159
|
+
console.log('[Shutdown] Cleaning up terminal sessions...');
|
|
160
|
+
const sessions = terminalSessionManager.getAllSessions();
|
|
161
|
+
for (const session of sessions) {
|
|
162
|
+
try {
|
|
163
|
+
await terminalSessionManager.deleteSession(session.id);
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
console.warn(`[Shutdown] Failed to clean up session ${session.id}:`, err);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// 5. Stop Docker services if they were auto-started
|
|
170
|
+
const dockerSettings = settingsManager.getDocker();
|
|
171
|
+
if (dockerSettings.enabled && dockerSettings.autoStart) {
|
|
172
|
+
console.log('[Shutdown] Stopping Docker services...');
|
|
173
|
+
try {
|
|
174
|
+
await sharedDockerManager.stop();
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
console.warn('[Shutdown] Failed to stop Docker:', err);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// 6. Stop remote tunnel
|
|
181
|
+
console.log('[Shutdown] Stopping remote tunnel...');
|
|
182
|
+
try {
|
|
183
|
+
await remoteTunnelManager.shutdown();
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
console.warn('[Shutdown] Failed to stop tunnel:', err);
|
|
187
|
+
}
|
|
188
|
+
// 7. Close HTTP server
|
|
189
|
+
console.log('[Shutdown] Closing HTTP server...');
|
|
190
|
+
server.close();
|
|
191
|
+
console.log('[Shutdown] Cleanup complete');
|
|
192
|
+
}
|
|
193
|
+
catch (err) {
|
|
194
|
+
console.error('[Shutdown] Error during cleanup:', err);
|
|
195
|
+
}
|
|
196
|
+
process.exit(0);
|
|
197
|
+
}
|
|
198
|
+
process.on('SIGINT', () => gracefulShutdown('SIGINT'));
|
|
199
|
+
process.on('SIGTERM', () => gracefulShutdown('SIGTERM'));
|
|
200
|
+
// Handle uncaught errors to prevent zombie processes
|
|
201
|
+
process.on('uncaughtException', (err) => {
|
|
202
|
+
console.error('[Fatal] Uncaught exception:', err);
|
|
203
|
+
gracefulShutdown('uncaughtException').catch(() => process.exit(1));
|
|
204
|
+
});
|
|
205
|
+
process.on('unhandledRejection', (reason) => {
|
|
206
|
+
console.error('[Fatal] Unhandled rejection:', reason);
|
|
207
|
+
gracefulShutdown('unhandledRejection').catch(() => process.exit(1));
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
// Backward compatibility: if this file is run directly, start the server
|
|
211
|
+
// Cross-platform: Windows paths need file:/// prefix, Unix paths get it from the leading /
|
|
212
|
+
const isDirectRun = (() => {
|
|
213
|
+
const scriptPath = process.argv[1]?.replace(/\\/g, '/');
|
|
214
|
+
if (!scriptPath)
|
|
215
|
+
return false;
|
|
216
|
+
// Windows: C:/path needs file:///C:/path (3 slashes)
|
|
217
|
+
// Unix: /path with file:// becomes file:///path (the / in path adds the 3rd slash)
|
|
218
|
+
const fileUrl = /^[a-zA-Z]:/.test(scriptPath)
|
|
219
|
+
? `file:///${scriptPath}`
|
|
220
|
+
: `file://${scriptPath}`;
|
|
221
|
+
return import.meta.url === fileUrl;
|
|
222
|
+
})();
|
|
223
|
+
if (isDirectRun) {
|
|
224
|
+
startServer().catch((err) => {
|
|
225
|
+
console.error('[Fatal] Failed to start server:', err);
|
|
226
|
+
process.exit(1);
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|