@burdenoff/vibe-agent 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.
Files changed (100) hide show
  1. package/.env.example +8 -0
  2. package/LICENSE +22 -0
  3. package/README.md +290 -0
  4. package/dist/app.d.ts +15 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +445 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/cli.d.ts +3 -0
  9. package/dist/cli.d.ts.map +1 -0
  10. package/dist/cli.js +1043 -0
  11. package/dist/cli.js.map +1 -0
  12. package/dist/db/schema.d.ts +145 -0
  13. package/dist/db/schema.d.ts.map +1 -0
  14. package/dist/db/schema.js +536 -0
  15. package/dist/db/schema.js.map +1 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +61 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/middleware/ModuleAuth.d.ts +61 -0
  21. package/dist/middleware/ModuleAuth.d.ts.map +1 -0
  22. package/dist/middleware/ModuleAuth.js +220 -0
  23. package/dist/middleware/ModuleAuth.js.map +1 -0
  24. package/dist/middleware/auth.d.ts +3 -0
  25. package/dist/middleware/auth.d.ts.map +1 -0
  26. package/dist/middleware/auth.js +11 -0
  27. package/dist/middleware/auth.js.map +1 -0
  28. package/dist/migrations/remove-notes-prompts.d.ts +13 -0
  29. package/dist/migrations/remove-notes-prompts.d.ts.map +1 -0
  30. package/dist/migrations/remove-notes-prompts.js +148 -0
  31. package/dist/migrations/remove-notes-prompts.js.map +1 -0
  32. package/dist/routes/bookmarks.d.ts +3 -0
  33. package/dist/routes/bookmarks.d.ts.map +1 -0
  34. package/dist/routes/bookmarks.js +186 -0
  35. package/dist/routes/bookmarks.js.map +1 -0
  36. package/dist/routes/config.d.ts +3 -0
  37. package/dist/routes/config.d.ts.map +1 -0
  38. package/dist/routes/config.js +108 -0
  39. package/dist/routes/config.js.map +1 -0
  40. package/dist/routes/files.d.ts +3 -0
  41. package/dist/routes/files.d.ts.map +1 -0
  42. package/dist/routes/files.js +471 -0
  43. package/dist/routes/files.js.map +1 -0
  44. package/dist/routes/git.d.ts +3 -0
  45. package/dist/routes/git.d.ts.map +1 -0
  46. package/dist/routes/git.js +498 -0
  47. package/dist/routes/git.js.map +1 -0
  48. package/dist/routes/moduleRegistry.d.ts +41 -0
  49. package/dist/routes/moduleRegistry.d.ts.map +1 -0
  50. package/dist/routes/moduleRegistry.js +356 -0
  51. package/dist/routes/moduleRegistry.js.map +1 -0
  52. package/dist/routes/notifications.d.ts +3 -0
  53. package/dist/routes/notifications.d.ts.map +1 -0
  54. package/dist/routes/notifications.js +250 -0
  55. package/dist/routes/notifications.js.map +1 -0
  56. package/dist/routes/port-forward.d.ts +3 -0
  57. package/dist/routes/port-forward.d.ts.map +1 -0
  58. package/dist/routes/port-forward.js +205 -0
  59. package/dist/routes/port-forward.js.map +1 -0
  60. package/dist/routes/projects.d.ts +3 -0
  61. package/dist/routes/projects.d.ts.map +1 -0
  62. package/dist/routes/projects.js +442 -0
  63. package/dist/routes/projects.js.map +1 -0
  64. package/dist/routes/ssh.d.ts +3 -0
  65. package/dist/routes/ssh.d.ts.map +1 -0
  66. package/dist/routes/ssh.js +192 -0
  67. package/dist/routes/ssh.js.map +1 -0
  68. package/dist/routes/tasks.d.ts +3 -0
  69. package/dist/routes/tasks.d.ts.map +1 -0
  70. package/dist/routes/tasks.js +183 -0
  71. package/dist/routes/tasks.js.map +1 -0
  72. package/dist/routes/tmux.d.ts +3 -0
  73. package/dist/routes/tmux.d.ts.map +1 -0
  74. package/dist/routes/tmux.js +1191 -0
  75. package/dist/routes/tmux.js.map +1 -0
  76. package/dist/routes/tunnel.d.ts +25 -0
  77. package/dist/routes/tunnel.d.ts.map +1 -0
  78. package/dist/routes/tunnel.js +449 -0
  79. package/dist/routes/tunnel.js.map +1 -0
  80. package/dist/services/ModulePermissions.d.ts +100 -0
  81. package/dist/services/ModulePermissions.d.ts.map +1 -0
  82. package/dist/services/ModulePermissions.js +312 -0
  83. package/dist/services/ModulePermissions.js.map +1 -0
  84. package/dist/services/ModuleRegistryService.d.ts +152 -0
  85. package/dist/services/ModuleRegistryService.d.ts.map +1 -0
  86. package/dist/services/ModuleRegistryService.js +522 -0
  87. package/dist/services/ModuleRegistryService.js.map +1 -0
  88. package/dist/services/agent.service.d.ts +19 -0
  89. package/dist/services/agent.service.d.ts.map +1 -0
  90. package/dist/services/agent.service.js +88 -0
  91. package/dist/services/agent.service.js.map +1 -0
  92. package/dist/services/bootstrap.d.ts +22 -0
  93. package/dist/services/bootstrap.d.ts.map +1 -0
  94. package/dist/services/bootstrap.js +206 -0
  95. package/dist/services/bootstrap.js.map +1 -0
  96. package/dist/services/service-manager.d.ts +50 -0
  97. package/dist/services/service-manager.d.ts.map +1 -0
  98. package/dist/services/service-manager.js +382 -0
  99. package/dist/services/service-manager.js.map +1 -0
  100. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/routes/tmux.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { FastifyPluginAsync } from 'fastify';
2
+ /**
3
+ * Get the current agent tunnel URL (or null if not running).
4
+ */
5
+ export declare function getAgentTunnelUrl(): string | null;
6
+ /**
7
+ * Start the main agent tunnel (cloudflared → localhost:agentPort).
8
+ * This is called once on agent boot. Only one agent tunnel runs at a time.
9
+ */
10
+ export declare function startAgentTunnel(agentPort: number): Promise<string | null>;
11
+ /**
12
+ * Stop the main agent tunnel.
13
+ */
14
+ export declare function stopAgentTunnel(): void;
15
+ export declare const tunnelRoutes: FastifyPluginAsync;
16
+ /**
17
+ * Start a tunnel for a given port (used internally by other routes).
18
+ * Returns the tunnel record with publicUrl if available.
19
+ */
20
+ export declare function startTunnelForPort(db: import('../db/schema.js').default, io: import('socket.io').Server, localPort: number, sessionId?: string): Promise<{
21
+ id: string;
22
+ publicUrl: string | null;
23
+ pid: number | null;
24
+ }>;
25
+ //# sourceMappingURL=tunnel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/routes/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAkB7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAEjD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6EhF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAOtC;AA0CD,eAAO,MAAM,YAAY,EAAE,kBAgQ1B,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,OAAO,iBAAiB,EAAE,OAAO,EACrC,EAAE,EAAE,OAAO,WAAW,EAAE,MAAM,EAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CA4FvE"}
@@ -0,0 +1,449 @@
1
+ import { spawn } from 'child_process';
2
+ const CLOUDFLARED_PATH = process.env.CLOUDFLARED_PATH || 'cloudflared';
3
+ // Track running cloudflared processes in memory
4
+ const activeTunnelProcesses = new Map();
5
+ // ── Main agent tunnel (single tunnel to the agent API port) ────────────────
6
+ let agentTunnelProcess = null;
7
+ let agentTunnelUrl = null;
8
+ /**
9
+ * Get the current agent tunnel URL (or null if not running).
10
+ */
11
+ export function getAgentTunnelUrl() {
12
+ return agentTunnelUrl;
13
+ }
14
+ /**
15
+ * Start the main agent tunnel (cloudflared → localhost:agentPort).
16
+ * This is called once on agent boot. Only one agent tunnel runs at a time.
17
+ */
18
+ export async function startAgentTunnel(agentPort) {
19
+ // If already running and healthy, return existing URL
20
+ if (agentTunnelProcess?.pid) {
21
+ try {
22
+ process.kill(agentTunnelProcess.pid, 0);
23
+ if (agentTunnelUrl) {
24
+ console.log(`[AgentTunnel] Already running: ${agentTunnelUrl}`);
25
+ return agentTunnelUrl;
26
+ }
27
+ }
28
+ catch {
29
+ // Process is dead, clean up
30
+ agentTunnelProcess = null;
31
+ agentTunnelUrl = null;
32
+ }
33
+ }
34
+ console.log(`[AgentTunnel] Starting cloudflared tunnel → localhost:${agentPort}`);
35
+ const proc = spawn(CLOUDFLARED_PATH, ['tunnel', '--url', `http://localhost:${agentPort}`], {
36
+ detached: true,
37
+ stdio: ['ignore', 'pipe', 'pipe'],
38
+ });
39
+ if (!proc.pid) {
40
+ throw new Error('Failed to spawn cloudflared for agent tunnel');
41
+ }
42
+ agentTunnelProcess = proc;
43
+ proc.unref();
44
+ // Extract tunnel URL from cloudflared output
45
+ let buffer = '';
46
+ let resolved = false;
47
+ const url = await new Promise((resolve) => {
48
+ const timeout = setTimeout(() => {
49
+ if (!resolved) {
50
+ resolved = true;
51
+ resolve(null);
52
+ }
53
+ }, 30_000);
54
+ const onData = (data) => {
55
+ buffer += data.toString();
56
+ if (!resolved) {
57
+ const found = extractTunnelUrl(buffer);
58
+ if (found) {
59
+ resolved = true;
60
+ clearTimeout(timeout);
61
+ resolve(found);
62
+ }
63
+ }
64
+ };
65
+ proc.stderr?.on('data', onData);
66
+ proc.stdout?.on('data', onData);
67
+ proc.on('error', () => {
68
+ if (!resolved) {
69
+ resolved = true;
70
+ clearTimeout(timeout);
71
+ resolve(null);
72
+ }
73
+ });
74
+ proc.on('exit', (code) => {
75
+ if (!resolved) {
76
+ resolved = true;
77
+ clearTimeout(timeout);
78
+ resolve(null);
79
+ }
80
+ if (code !== null && code !== 0) {
81
+ console.warn(`[AgentTunnel] cloudflared exited with code ${code}`);
82
+ agentTunnelProcess = null;
83
+ agentTunnelUrl = null;
84
+ }
85
+ });
86
+ });
87
+ agentTunnelUrl = url;
88
+ if (url) {
89
+ console.log(`[AgentTunnel] ✅ Tunnel ready: ${url}`);
90
+ }
91
+ else {
92
+ console.warn('[AgentTunnel] ⚠️ Could not extract tunnel URL within timeout');
93
+ }
94
+ return url;
95
+ }
96
+ /**
97
+ * Stop the main agent tunnel.
98
+ */
99
+ export function stopAgentTunnel() {
100
+ if (agentTunnelProcess?.pid) {
101
+ console.log('[AgentTunnel] Stopping agent tunnel...');
102
+ try {
103
+ process.kill(agentTunnelProcess.pid, 'SIGTERM');
104
+ }
105
+ catch { /* already dead */ }
106
+ agentTunnelProcess = null;
107
+ }
108
+ agentTunnelUrl = null;
109
+ }
110
+ /**
111
+ * Parse cloudflared stderr output to extract the assigned public URL.
112
+ * cloudflared outputs to stderr and the URL contains trycloudflare.com
113
+ */
114
+ function extractTunnelUrl(output) {
115
+ // cloudflared quick tunnel outputs a line like:
116
+ // +-------------------------------------------+
117
+ // | https://some-random-words.trycloudflare.com |
118
+ // +-------------------------------------------+
119
+ // or a log line like: INF | https://xxx.trycloudflare.com
120
+ const lines = output.split('\n');
121
+ for (const line of lines) {
122
+ const urlMatch = line.match(/(https:\/\/[a-zA-Z0-9-]+\.trycloudflare\.com)/);
123
+ if (urlMatch) {
124
+ return urlMatch[1];
125
+ }
126
+ }
127
+ return null;
128
+ }
129
+ /**
130
+ * Gracefully kill a process: SIGTERM first, then SIGKILL after timeout.
131
+ */
132
+ async function gracefulKill(pid, timeoutMs = 3000) {
133
+ try {
134
+ process.kill(pid, 'SIGTERM');
135
+ }
136
+ catch {
137
+ return; // Process already dead
138
+ }
139
+ await new Promise(resolve => setTimeout(resolve, timeoutMs));
140
+ try {
141
+ process.kill(pid, 0); // Check if still alive
142
+ process.kill(pid, 'SIGKILL');
143
+ }
144
+ catch {
145
+ // Process is gone, that's fine
146
+ }
147
+ }
148
+ export const tunnelRoutes = async (fastify) => {
149
+ // POST /start - Start a cloudflared tunnel for a given local port
150
+ fastify.post('/start', async (request, reply) => {
151
+ const { localPort, subdomain, sessionId } = request.body;
152
+ if (!localPort || typeof localPort !== 'number' || localPort < 1 || localPort > 65535) {
153
+ return reply.code(400).send({ error: 'Invalid localPort: must be a number between 1 and 65535' });
154
+ }
155
+ // Check if there's already an active tunnel for this port
156
+ const existing = fastify.db.getTunnelByPort(localPort);
157
+ if (existing) {
158
+ return reply.code(409).send({
159
+ error: `An active tunnel already exists for port ${localPort}`,
160
+ tunnel: existing,
161
+ });
162
+ }
163
+ // Create the DB record
164
+ const tunnel = fastify.db.createTunnel(localPort, subdomain, sessionId);
165
+ try {
166
+ // Build cloudflared command args
167
+ const args = ['tunnel', '--url', `http://localhost:${localPort}`];
168
+ const cloudflaredProcess = spawn(CLOUDFLARED_PATH, args, {
169
+ detached: true,
170
+ stdio: ['ignore', 'pipe', 'pipe'],
171
+ });
172
+ if (!cloudflaredProcess.pid) {
173
+ fastify.db.updateTunnel(tunnel.id, { status: 'error' });
174
+ return reply.code(500).send({ error: 'Failed to spawn cloudflared process' });
175
+ }
176
+ activeTunnelProcesses.set(tunnel.id, cloudflaredProcess);
177
+ // Update with PID immediately
178
+ fastify.db.updateTunnel(tunnel.id, {
179
+ pid: cloudflaredProcess.pid,
180
+ status: 'active',
181
+ });
182
+ // Parse stderr to find the tunnel URL (cloudflared outputs URL to stderr)
183
+ let stderrBuffer = '';
184
+ let urlResolved = false;
185
+ const urlPromise = new Promise((resolve) => {
186
+ const timeout = setTimeout(() => {
187
+ if (!urlResolved) {
188
+ urlResolved = true;
189
+ resolve(null);
190
+ }
191
+ }, 30000); // 30 second timeout for URL extraction
192
+ cloudflaredProcess.stderr?.on('data', (data) => {
193
+ stderrBuffer += data.toString();
194
+ if (!urlResolved) {
195
+ const url = extractTunnelUrl(stderrBuffer);
196
+ if (url) {
197
+ urlResolved = true;
198
+ clearTimeout(timeout);
199
+ resolve(url);
200
+ }
201
+ }
202
+ });
203
+ cloudflaredProcess.stdout?.on('data', (data) => {
204
+ // Some versions may output to stdout as well
205
+ stderrBuffer += data.toString();
206
+ if (!urlResolved) {
207
+ const url = extractTunnelUrl(stderrBuffer);
208
+ if (url) {
209
+ urlResolved = true;
210
+ clearTimeout(timeout);
211
+ resolve(url);
212
+ }
213
+ }
214
+ });
215
+ cloudflaredProcess.on('error', () => {
216
+ if (!urlResolved) {
217
+ urlResolved = true;
218
+ clearTimeout(timeout);
219
+ resolve(null);
220
+ }
221
+ });
222
+ cloudflaredProcess.on('exit', (code) => {
223
+ if (!urlResolved) {
224
+ urlResolved = true;
225
+ clearTimeout(timeout);
226
+ resolve(null);
227
+ }
228
+ // Clean up on unexpected exit
229
+ if (code !== null && code !== 0) {
230
+ activeTunnelProcesses.delete(tunnel.id);
231
+ fastify.db.updateTunnel(tunnel.id, { status: 'inactive', pid: undefined, publicUrl: undefined });
232
+ fastify.io.emit('tunnel:stopped', { id: tunnel.id, localPort, reason: `process exited with code ${code}` });
233
+ }
234
+ });
235
+ });
236
+ cloudflaredProcess.unref();
237
+ const publicUrl = await urlPromise;
238
+ if (publicUrl) {
239
+ fastify.db.updateTunnel(tunnel.id, { publicUrl });
240
+ fastify.io.emit('tunnel:url-ready', { id: tunnel.id, localPort, publicUrl });
241
+ }
242
+ fastify.io.emit('tunnel:started', {
243
+ id: tunnel.id,
244
+ localPort,
245
+ publicUrl: publicUrl || null,
246
+ pid: cloudflaredProcess.pid,
247
+ });
248
+ const updatedTunnel = fastify.db.getTunnel(tunnel.id);
249
+ return {
250
+ id: updatedTunnel?.id,
251
+ localPort: updatedTunnel?.localPort,
252
+ publicUrl: updatedTunnel?.publicUrl || null,
253
+ pid: updatedTunnel?.pid,
254
+ status: updatedTunnel?.status,
255
+ sessionId: updatedTunnel?.sessionId || null,
256
+ };
257
+ }
258
+ catch (error) {
259
+ fastify.db.updateTunnel(tunnel.id, { status: 'error' });
260
+ return reply.code(500).send({
261
+ error: 'Failed to start cloudflared tunnel',
262
+ details: error instanceof Error ? error.message : 'Unknown error',
263
+ });
264
+ }
265
+ });
266
+ // GET / - List all tunnels
267
+ fastify.get('/', async (_request, _reply) => {
268
+ const tunnels = fastify.db.listTunnels();
269
+ return { tunnels };
270
+ });
271
+ // GET /status - Get overall tunnel status
272
+ fastify.get('/status', async (_request, _reply) => {
273
+ const tunnels = fastify.db.listTunnels();
274
+ const active = tunnels.filter(t => t.status === 'active');
275
+ const inactive = tunnels.filter(t => t.status === 'inactive');
276
+ const errored = tunnels.filter(t => t.status === 'error');
277
+ return {
278
+ total: tunnels.length,
279
+ active: active.length,
280
+ inactive: inactive.length,
281
+ errored: errored.length,
282
+ tunnels: active.map(t => ({
283
+ id: t.id,
284
+ localPort: t.localPort,
285
+ publicUrl: t.publicUrl,
286
+ pid: t.pid,
287
+ sessionId: t.sessionId,
288
+ })),
289
+ };
290
+ });
291
+ // GET /:id - Get tunnel details
292
+ fastify.get('/:id', async (request, reply) => {
293
+ const { id } = request.params;
294
+ const tunnel = fastify.db.getTunnel(id);
295
+ if (!tunnel) {
296
+ return reply.code(404).send({ error: 'Tunnel not found' });
297
+ }
298
+ // Verify process is still alive if marked active
299
+ if (tunnel.status === 'active' && tunnel.pid) {
300
+ try {
301
+ process.kill(tunnel.pid, 0);
302
+ }
303
+ catch {
304
+ // Process is dead, update status
305
+ fastify.db.updateTunnel(id, { status: 'inactive', pid: undefined, publicUrl: undefined });
306
+ activeTunnelProcesses.delete(id);
307
+ const updated = fastify.db.getTunnel(id);
308
+ return { tunnel: updated };
309
+ }
310
+ }
311
+ return { tunnel };
312
+ });
313
+ // POST /:id/stop - Stop a tunnel
314
+ fastify.post('/:id/stop', async (request, reply) => {
315
+ const { id } = request.params;
316
+ const tunnel = fastify.db.getTunnel(id);
317
+ if (!tunnel) {
318
+ return reply.code(404).send({ error: 'Tunnel not found' });
319
+ }
320
+ if (tunnel.status !== 'active') {
321
+ return reply.code(400).send({ error: 'Tunnel is not active' });
322
+ }
323
+ // Kill the cloudflared process
324
+ if (tunnel.pid) {
325
+ await gracefulKill(tunnel.pid);
326
+ }
327
+ activeTunnelProcesses.delete(id);
328
+ fastify.db.updateTunnel(id, { status: 'inactive', pid: undefined, publicUrl: undefined });
329
+ fastify.io.emit('tunnel:stopped', { id, localPort: tunnel.localPort });
330
+ return { success: true };
331
+ });
332
+ // DELETE /:id - Delete tunnel record (stop if running, then remove)
333
+ fastify.delete('/:id', async (request, reply) => {
334
+ const { id } = request.params;
335
+ const tunnel = fastify.db.getTunnel(id);
336
+ if (!tunnel) {
337
+ return reply.code(404).send({ error: 'Tunnel not found' });
338
+ }
339
+ // Stop if active
340
+ if (tunnel.status === 'active' && tunnel.pid) {
341
+ await gracefulKill(tunnel.pid);
342
+ activeTunnelProcesses.delete(id);
343
+ fastify.io.emit('tunnel:stopped', { id, localPort: tunnel.localPort });
344
+ }
345
+ fastify.db.deleteTunnel(id);
346
+ return { success: true };
347
+ });
348
+ // Cleanup all tunnel processes on server shutdown
349
+ fastify.addHook('onClose', async () => {
350
+ // Stop per-session tunnels
351
+ for (const [id, proc] of activeTunnelProcesses) {
352
+ if (proc.pid) {
353
+ try {
354
+ process.kill(proc.pid, 'SIGTERM');
355
+ }
356
+ catch {
357
+ // Process already gone
358
+ }
359
+ }
360
+ fastify.db.updateTunnel(id, { status: 'inactive', pid: undefined, publicUrl: undefined });
361
+ }
362
+ activeTunnelProcesses.clear();
363
+ // Stop main agent tunnel
364
+ stopAgentTunnel();
365
+ });
366
+ };
367
+ /**
368
+ * Start a tunnel for a given port (used internally by other routes).
369
+ * Returns the tunnel record with publicUrl if available.
370
+ */
371
+ export async function startTunnelForPort(db, io, localPort, sessionId) {
372
+ const tunnel = db.createTunnel(localPort, undefined, sessionId);
373
+ const args = ['tunnel', '--url', `http://localhost:${localPort}`];
374
+ const cloudflaredProcess = spawn(CLOUDFLARED_PATH, args, {
375
+ detached: true,
376
+ stdio: ['ignore', 'pipe', 'pipe'],
377
+ });
378
+ if (!cloudflaredProcess.pid) {
379
+ db.updateTunnel(tunnel.id, { status: 'error' });
380
+ return { id: tunnel.id, publicUrl: null, pid: null };
381
+ }
382
+ activeTunnelProcesses.set(tunnel.id, cloudflaredProcess);
383
+ db.updateTunnel(tunnel.id, { pid: cloudflaredProcess.pid, status: 'active' });
384
+ let stderrBuffer = '';
385
+ let urlResolved = false;
386
+ const urlPromise = new Promise((resolve) => {
387
+ const timeout = setTimeout(() => {
388
+ if (!urlResolved) {
389
+ urlResolved = true;
390
+ resolve(null);
391
+ }
392
+ }, 30000);
393
+ cloudflaredProcess.stderr?.on('data', (data) => {
394
+ stderrBuffer += data.toString();
395
+ if (!urlResolved) {
396
+ const url = extractTunnelUrl(stderrBuffer);
397
+ if (url) {
398
+ urlResolved = true;
399
+ clearTimeout(timeout);
400
+ resolve(url);
401
+ }
402
+ }
403
+ });
404
+ cloudflaredProcess.stdout?.on('data', (data) => {
405
+ stderrBuffer += data.toString();
406
+ if (!urlResolved) {
407
+ const url = extractTunnelUrl(stderrBuffer);
408
+ if (url) {
409
+ urlResolved = true;
410
+ clearTimeout(timeout);
411
+ resolve(url);
412
+ }
413
+ }
414
+ });
415
+ cloudflaredProcess.on('error', () => {
416
+ if (!urlResolved) {
417
+ urlResolved = true;
418
+ clearTimeout(timeout);
419
+ resolve(null);
420
+ }
421
+ });
422
+ cloudflaredProcess.on('exit', (code) => {
423
+ if (!urlResolved) {
424
+ urlResolved = true;
425
+ clearTimeout(timeout);
426
+ resolve(null);
427
+ }
428
+ if (code !== null && code !== 0) {
429
+ activeTunnelProcesses.delete(tunnel.id);
430
+ db.updateTunnel(tunnel.id, { status: 'inactive', pid: undefined, publicUrl: undefined });
431
+ io.emit('tunnel:stopped', { id: tunnel.id, localPort, reason: `process exited with code ${code}` });
432
+ }
433
+ });
434
+ });
435
+ cloudflaredProcess.unref();
436
+ const publicUrl = await urlPromise;
437
+ if (publicUrl) {
438
+ db.updateTunnel(tunnel.id, { publicUrl });
439
+ io.emit('tunnel:url-ready', { id: tunnel.id, localPort, publicUrl });
440
+ }
441
+ io.emit('tunnel:started', {
442
+ id: tunnel.id,
443
+ localPort,
444
+ publicUrl: publicUrl || null,
445
+ pid: cloudflaredProcess.pid,
446
+ });
447
+ return { id: tunnel.id, publicUrl, pid: cloudflaredProcess.pid };
448
+ }
449
+ //# sourceMappingURL=tunnel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel.js","sourceRoot":"","sources":["../../src/routes/tunnel.ts"],"names":[],"mappings":"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"}