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.
Files changed (182) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +431 -0
  3. package/config/repos.example.json +128 -0
  4. package/config/settings.example.json +64 -0
  5. package/config/skills/code-review.md +76 -0
  6. package/config/skills/full-check.md +26 -0
  7. package/config/skills/lint-fix.md +23 -0
  8. package/dist/api/agent-routes.d.ts +2 -0
  9. package/dist/api/agent-routes.d.ts.map +1 -0
  10. package/dist/api/agent-routes.js +251 -0
  11. package/dist/api/agent-routes.js.map +1 -0
  12. package/dist/api/app-routes.d.ts +2 -0
  13. package/dist/api/app-routes.d.ts.map +1 -0
  14. package/dist/api/app-routes.js +150 -0
  15. package/dist/api/app-routes.js.map +1 -0
  16. package/dist/api/docker-routes.d.ts +2 -0
  17. package/dist/api/docker-routes.d.ts.map +1 -0
  18. package/dist/api/docker-routes.js +167 -0
  19. package/dist/api/docker-routes.js.map +1 -0
  20. package/dist/api/middleware.d.ts +6 -0
  21. package/dist/api/middleware.d.ts.map +1 -0
  22. package/dist/api/middleware.js +293 -0
  23. package/dist/api/middleware.js.map +1 -0
  24. package/dist/api/pin-auth.d.ts +65 -0
  25. package/dist/api/pin-auth.d.ts.map +1 -0
  26. package/dist/api/pin-auth.js +218 -0
  27. package/dist/api/pin-auth.js.map +1 -0
  28. package/dist/api/routes.d.ts +2 -0
  29. package/dist/api/routes.d.ts.map +1 -0
  30. package/dist/api/routes.js +473 -0
  31. package/dist/api/routes.js.map +1 -0
  32. package/dist/api/settings-routes.d.ts +2 -0
  33. package/dist/api/settings-routes.d.ts.map +1 -0
  34. package/dist/api/settings-routes.js +570 -0
  35. package/dist/api/settings-routes.js.map +1 -0
  36. package/dist/api/skill-routes.d.ts +2 -0
  37. package/dist/api/skill-routes.d.ts.map +1 -0
  38. package/dist/api/skill-routes.js +88 -0
  39. package/dist/api/skill-routes.js.map +1 -0
  40. package/dist/api/terminal-routes.d.ts +2 -0
  41. package/dist/api/terminal-routes.d.ts.map +1 -0
  42. package/dist/api/terminal-routes.js +3524 -0
  43. package/dist/api/terminal-routes.js.map +1 -0
  44. package/dist/api/tunnel-routes.d.ts +2 -0
  45. package/dist/api/tunnel-routes.d.ts.map +1 -0
  46. package/dist/api/tunnel-routes.js +196 -0
  47. package/dist/api/tunnel-routes.js.map +1 -0
  48. package/dist/api/workspace-routes.d.ts +3 -0
  49. package/dist/api/workspace-routes.d.ts.map +1 -0
  50. package/dist/api/workspace-routes.js +649 -0
  51. package/dist/api/workspace-routes.js.map +1 -0
  52. package/dist/cli.d.ts +3 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +276 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/client/assets/index-B4r0njGe.js +780 -0
  57. package/dist/client/assets/index-CY_9MyE0.css +1 -0
  58. package/dist/client/favicon.svg +5 -0
  59. package/dist/client/icons/icon-192.svg +5 -0
  60. package/dist/client/icons/icon-512.svg +5 -0
  61. package/dist/client/icons/logo-with-message.png +0 -0
  62. package/dist/client/icons/logo.png +0 -0
  63. package/dist/client/index.html +25 -0
  64. package/dist/client/manifest.json +62 -0
  65. package/dist/client/sw.js +243 -0
  66. package/dist/config/agent-usage.d.ts +34 -0
  67. package/dist/config/agent-usage.d.ts.map +1 -0
  68. package/dist/config/agent-usage.js +87 -0
  69. package/dist/config/agent-usage.js.map +1 -0
  70. package/dist/config/repos.d.ts +34 -0
  71. package/dist/config/repos.d.ts.map +1 -0
  72. package/dist/config/repos.js +412 -0
  73. package/dist/config/repos.js.map +1 -0
  74. package/dist/config/settings.d.ts +634 -0
  75. package/dist/config/settings.d.ts.map +1 -0
  76. package/dist/config/settings.js +459 -0
  77. package/dist/config/settings.js.map +1 -0
  78. package/dist/config/skills.d.ts +18 -0
  79. package/dist/config/skills.d.ts.map +1 -0
  80. package/dist/config/skills.js +174 -0
  81. package/dist/config/skills.js.map +1 -0
  82. package/dist/config/workspaces.d.ts +961 -0
  83. package/dist/config/workspaces.d.ts.map +1 -0
  84. package/dist/config/workspaces.js +482 -0
  85. package/dist/config/workspaces.js.map +1 -0
  86. package/dist/core/app-manager.d.ts +85 -0
  87. package/dist/core/app-manager.d.ts.map +1 -0
  88. package/dist/core/app-manager.js +447 -0
  89. package/dist/core/app-manager.js.map +1 -0
  90. package/dist/core/claude-invoker.d.ts +49 -0
  91. package/dist/core/claude-invoker.d.ts.map +1 -0
  92. package/dist/core/claude-invoker.js +583 -0
  93. package/dist/core/claude-invoker.js.map +1 -0
  94. package/dist/core/claude-session-reader.d.ts +25 -0
  95. package/dist/core/claude-session-reader.d.ts.map +1 -0
  96. package/dist/core/claude-session-reader.js +184 -0
  97. package/dist/core/claude-session-reader.js.map +1 -0
  98. package/dist/core/claude-usage-query.d.ts +78 -0
  99. package/dist/core/claude-usage-query.d.ts.map +1 -0
  100. package/dist/core/claude-usage-query.js +294 -0
  101. package/dist/core/claude-usage-query.js.map +1 -0
  102. package/dist/core/git-credential-helper.d.ts +57 -0
  103. package/dist/core/git-credential-helper.d.ts.map +1 -0
  104. package/dist/core/git-credential-helper.js +176 -0
  105. package/dist/core/git-credential-helper.js.map +1 -0
  106. package/dist/core/git-sandbox.d.ts +135 -0
  107. package/dist/core/git-sandbox.d.ts.map +1 -0
  108. package/dist/core/git-sandbox.js +907 -0
  109. package/dist/core/git-sandbox.js.map +1 -0
  110. package/dist/core/github-integration.d.ts +66 -0
  111. package/dist/core/github-integration.d.ts.map +1 -0
  112. package/dist/core/github-integration.js +350 -0
  113. package/dist/core/github-integration.js.map +1 -0
  114. package/dist/core/github-oauth.d.ts +88 -0
  115. package/dist/core/github-oauth.d.ts.map +1 -0
  116. package/dist/core/github-oauth.js +244 -0
  117. package/dist/core/github-oauth.js.map +1 -0
  118. package/dist/core/gitlab-integration.d.ts +66 -0
  119. package/dist/core/gitlab-integration.d.ts.map +1 -0
  120. package/dist/core/gitlab-integration.js +353 -0
  121. package/dist/core/gitlab-integration.js.map +1 -0
  122. package/dist/core/gitlab-oauth.d.ts +100 -0
  123. package/dist/core/gitlab-oauth.d.ts.map +1 -0
  124. package/dist/core/gitlab-oauth.js +366 -0
  125. package/dist/core/gitlab-oauth.js.map +1 -0
  126. package/dist/core/insights-extractor.d.ts +68 -0
  127. package/dist/core/insights-extractor.d.ts.map +1 -0
  128. package/dist/core/insights-extractor.js +402 -0
  129. package/dist/core/insights-extractor.js.map +1 -0
  130. package/dist/core/logger.d.ts +27 -0
  131. package/dist/core/logger.d.ts.map +1 -0
  132. package/dist/core/logger.js +70 -0
  133. package/dist/core/logger.js.map +1 -0
  134. package/dist/core/process-runner.d.ts +27 -0
  135. package/dist/core/process-runner.d.ts.map +1 -0
  136. package/dist/core/process-runner.js +147 -0
  137. package/dist/core/process-runner.js.map +1 -0
  138. package/dist/core/project-detector.d.ts +30 -0
  139. package/dist/core/project-detector.d.ts.map +1 -0
  140. package/dist/core/project-detector.js +482 -0
  141. package/dist/core/project-detector.js.map +1 -0
  142. package/dist/core/qr-generator.d.ts +18 -0
  143. package/dist/core/qr-generator.d.ts.map +1 -0
  144. package/dist/core/qr-generator.js +61 -0
  145. package/dist/core/qr-generator.js.map +1 -0
  146. package/dist/core/remote-tunnel-manager.d.ts +59 -0
  147. package/dist/core/remote-tunnel-manager.d.ts.map +1 -0
  148. package/dist/core/remote-tunnel-manager.js +235 -0
  149. package/dist/core/remote-tunnel-manager.js.map +1 -0
  150. package/dist/core/shared-docker-manager.d.ts +41 -0
  151. package/dist/core/shared-docker-manager.d.ts.map +1 -0
  152. package/dist/core/shared-docker-manager.js +409 -0
  153. package/dist/core/shared-docker-manager.js.map +1 -0
  154. package/dist/core/skill-executor.d.ts +25 -0
  155. package/dist/core/skill-executor.d.ts.map +1 -0
  156. package/dist/core/skill-executor.js +171 -0
  157. package/dist/core/skill-executor.js.map +1 -0
  158. package/dist/core/terminal-session.d.ts +149 -0
  159. package/dist/core/terminal-session.d.ts.map +1 -0
  160. package/dist/core/terminal-session.js +2340 -0
  161. package/dist/core/terminal-session.js.map +1 -0
  162. package/dist/core/tunnel-manager.d.ts +35 -0
  163. package/dist/core/tunnel-manager.d.ts.map +1 -0
  164. package/dist/core/tunnel-manager.js +137 -0
  165. package/dist/core/tunnel-manager.js.map +1 -0
  166. package/dist/core/usage-manager.d.ts +57 -0
  167. package/dist/core/usage-manager.d.ts.map +1 -0
  168. package/dist/core/usage-manager.js +363 -0
  169. package/dist/core/usage-manager.js.map +1 -0
  170. package/dist/core/ws-manager.d.ts +39 -0
  171. package/dist/core/ws-manager.d.ts.map +1 -0
  172. package/dist/core/ws-manager.js +190 -0
  173. package/dist/core/ws-manager.js.map +1 -0
  174. package/dist/index.d.ts +7 -0
  175. package/dist/index.d.ts.map +1 -0
  176. package/dist/index.js +229 -0
  177. package/dist/index.js.map +1 -0
  178. package/dist/types.d.ts +868 -0
  179. package/dist/types.d.ts.map +1 -0
  180. package/dist/types.js +119 -0
  181. package/dist/types.js.map +1 -0
  182. package/package.json +96 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-detector.js","sourceRoot":"","sources":["../../src/core/project-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface QRResult {
2
+ success: boolean;
3
+ ascii?: string;
4
+ error?: string;
5
+ }
6
+ /**
7
+ * Generate an ASCII QR code for terminal display
8
+ */
9
+ export declare function generateTerminalQR(url: string): Promise<QRResult>;
10
+ /**
11
+ * Generate a data URL for the QR code (for UI display)
12
+ */
13
+ export declare function generateQRDataUrl(url: string): Promise<string | null>;
14
+ /**
15
+ * Display QR code and connection info in the terminal
16
+ */
17
+ export declare function displayMobileAccessInfo(localUrl: string, tunnelUrl: string | null, token: string): Promise<void>;
18
+ //# sourceMappingURL=qr-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-generator.d.ts","sourceRoot":"","sources":["../../src/core/qr-generator.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAYvE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAc3E;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,61 @@
1
+ import QRCode from 'qrcode';
2
+ /**
3
+ * Generate an ASCII QR code for terminal display
4
+ */
5
+ export async function generateTerminalQR(url) {
6
+ try {
7
+ const ascii = await QRCode.toString(url, {
8
+ type: 'terminal',
9
+ small: true,
10
+ margin: 1,
11
+ });
12
+ return { success: true, ascii };
13
+ }
14
+ catch (error) {
15
+ const errorMsg = error instanceof Error ? error.message : String(error);
16
+ return { success: false, error: errorMsg };
17
+ }
18
+ }
19
+ /**
20
+ * Generate a data URL for the QR code (for UI display)
21
+ */
22
+ export async function generateQRDataUrl(url) {
23
+ try {
24
+ return await QRCode.toDataURL(url, {
25
+ margin: 1,
26
+ width: 200,
27
+ color: {
28
+ dark: '#000000',
29
+ light: '#ffffff',
30
+ },
31
+ });
32
+ }
33
+ catch (error) {
34
+ console.error('Failed to generate QR data URL:', error);
35
+ return null;
36
+ }
37
+ }
38
+ /**
39
+ * Display QR code and connection info in the terminal
40
+ */
41
+ export async function displayMobileAccessInfo(localUrl, tunnelUrl, token) {
42
+ if (!tunnelUrl) {
43
+ console.log(`
44
+ MOBILE ACCESS
45
+ To enable mobile access, enable tunnel in Settings or set tunnel.autoStart: true
46
+ `);
47
+ return;
48
+ }
49
+ // Build the URL with embedded token for easy mobile login
50
+ const mobileUrl = `${tunnelUrl}?token=${encodeURIComponent(token)}`;
51
+ const qrResult = await generateTerminalQR(mobileUrl);
52
+ console.log(`
53
+ MOBILE ACCESS`);
54
+ if (qrResult.success && qrResult.ascii) {
55
+ console.log(qrResult.ascii);
56
+ }
57
+ console.log(` Scan QR code or visit:
58
+ ${mobileUrl}
59
+ `);
60
+ }
61
+ //# sourceMappingURL=qr-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qr-generator.js","sourceRoot":"","sources":["../../src/core/qr-generator.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAQ5B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvC,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;YACjC,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,GAAG;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;aACjB;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,SAAwB,EACxB,KAAa;IAEb,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC;;;CAGf,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,0DAA0D;IAC1D,MAAM,SAAS,GAAG,GAAG,SAAS,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAEpE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,CAAC;gBACE,CAAC,CAAC;IAEhB,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC;IACV,SAAS;CACZ,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { EventEmitter } from 'events';
2
+ export type TunnelStatus = 'stopped' | 'starting' | 'running' | 'error';
3
+ interface TunnelState {
4
+ status: TunnelStatus;
5
+ url: string | null;
6
+ startedAt: string | null;
7
+ error: string | null;
8
+ reconnectAttempt: number;
9
+ }
10
+ /**
11
+ * Manages Cloudflare Tunnel (cloudflared) lifecycle for remote access
12
+ * Implements Quick Tunnels (no account required) with reconnection logic
13
+ */
14
+ export declare class RemoteTunnelManager extends EventEmitter {
15
+ private process;
16
+ private state;
17
+ private reconnectTimer;
18
+ private maxReconnectAttempts;
19
+ private reconnectDelays;
20
+ constructor();
21
+ /**
22
+ * Get current tunnel status
23
+ */
24
+ getStatus(): TunnelState;
25
+ /**
26
+ * Check if cloudflared is installed
27
+ */
28
+ isCloudflaredInstalled(): Promise<{
29
+ installed: boolean;
30
+ version: string | null;
31
+ }>;
32
+ /**
33
+ * Start the tunnel
34
+ */
35
+ start(): Promise<{
36
+ success: boolean;
37
+ url?: string;
38
+ error?: string;
39
+ }>;
40
+ /**
41
+ * Stop the tunnel
42
+ */
43
+ stop(): Promise<void>;
44
+ /**
45
+ * Handle unexpected disconnect and attempt reconnection
46
+ */
47
+ private handleDisconnect;
48
+ /**
49
+ * Update state and emit event
50
+ */
51
+ private updateState;
52
+ /**
53
+ * Graceful shutdown
54
+ */
55
+ shutdown(): Promise<void>;
56
+ }
57
+ export declare const remoteTunnelManager: RemoteTunnelManager;
58
+ export {};
59
+ //# sourceMappingURL=remote-tunnel-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-tunnel-manager.d.ts","sourceRoot":"","sources":["../../src/core/remote-tunnel-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAExE,UAAU,WAAW;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,KAAK,CAMX;IACF,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,eAAe,CAAwB;;IAM/C;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IA6BvF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAqG1E;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC;AAGD,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
@@ -0,0 +1,235 @@
1
+ import { spawn } from 'child_process';
2
+ import { EventEmitter } from 'events';
3
+ import { settingsManager } from '../config/settings.js';
4
+ /**
5
+ * Manages Cloudflare Tunnel (cloudflared) lifecycle for remote access
6
+ * Implements Quick Tunnels (no account required) with reconnection logic
7
+ */
8
+ export class RemoteTunnelManager extends EventEmitter {
9
+ process = null;
10
+ state = {
11
+ status: 'stopped',
12
+ url: null,
13
+ startedAt: null,
14
+ error: null,
15
+ reconnectAttempt: 0,
16
+ };
17
+ reconnectTimer = null;
18
+ maxReconnectAttempts = 3;
19
+ reconnectDelays = [5000, 10000, 30000]; // 5s, 10s, 30s
20
+ constructor() {
21
+ super();
22
+ }
23
+ /**
24
+ * Get current tunnel status
25
+ */
26
+ getStatus() {
27
+ return { ...this.state };
28
+ }
29
+ /**
30
+ * Check if cloudflared is installed
31
+ */
32
+ async isCloudflaredInstalled() {
33
+ return new Promise((resolve) => {
34
+ const proc = spawn('cloudflared', ['--version']);
35
+ let output = '';
36
+ proc.stdout?.on('data', (data) => {
37
+ output += data.toString();
38
+ });
39
+ proc.stderr?.on('data', (data) => {
40
+ output += data.toString();
41
+ });
42
+ proc.on('close', (code) => {
43
+ if (code === 0) {
44
+ // Extract version from output (e.g., "cloudflared version 2023.10.0")
45
+ const match = output.match(/cloudflared version ([\d.]+)/i);
46
+ resolve({ installed: true, version: match ? match[1] : null });
47
+ }
48
+ else {
49
+ resolve({ installed: false, version: null });
50
+ }
51
+ });
52
+ proc.on('error', () => {
53
+ resolve({ installed: false, version: null });
54
+ });
55
+ });
56
+ }
57
+ /**
58
+ * Start the tunnel
59
+ */
60
+ async start() {
61
+ // Check if already running
62
+ if (this.state.status === 'running') {
63
+ return { success: true, url: this.state.url };
64
+ }
65
+ // Check if cloudflared is installed
66
+ const { installed } = await this.isCloudflaredInstalled();
67
+ if (!installed) {
68
+ const error = 'cloudflared is not installed. Please install it from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation/';
69
+ this.updateState({ status: 'error', error });
70
+ return { success: false, error };
71
+ }
72
+ this.updateState({ status: 'starting', error: null });
73
+ return new Promise((resolve) => {
74
+ // Get the port from environment or default
75
+ const port = process.env.CLAUDEDESK_PORT ? parseInt(process.env.CLAUDEDESK_PORT, 10) : 8787;
76
+ // Start cloudflared tunnel (Quick Tunnel - no account required)
77
+ // This creates a temporary tunnel with a random subdomain
78
+ this.process = spawn('cloudflared', ['tunnel', '--url', `http://localhost:${port}`]);
79
+ let resolved = false;
80
+ // Helper to parse URL from cloudflared output
81
+ const parseUrl = (output, source) => {
82
+ console.log(`[Tunnel ${source}]`, output.trim());
83
+ // Look for the tunnel URL in the output
84
+ // Example: "https://moderators-spirit-chi-person.trycloudflare.com"
85
+ const urlMatch = output.match(/https:\/\/[a-z0-9-]+\.trycloudflare\.com/i);
86
+ if (urlMatch && !resolved) {
87
+ const url = urlMatch[0];
88
+ this.updateState({
89
+ status: 'running',
90
+ url,
91
+ startedAt: new Date().toISOString(),
92
+ error: null,
93
+ reconnectAttempt: 0,
94
+ });
95
+ // Save the last tunnel URL
96
+ settingsManager.updateTunnel({ lastTunnelUrl: url });
97
+ resolved = true;
98
+ resolve({ success: true, url });
99
+ }
100
+ };
101
+ // Parse stdout for tunnel URL
102
+ this.process.stdout?.on('data', (data) => {
103
+ parseUrl(data.toString(), 'stdout');
104
+ });
105
+ // Parse stderr for tunnel URL (cloudflared outputs URL to stderr on Windows)
106
+ this.process.stderr?.on('data', (data) => {
107
+ parseUrl(data.toString(), 'stderr');
108
+ });
109
+ // Handle process exit
110
+ this.process.on('close', (code) => {
111
+ console.log(`[Tunnel] Process exited with code ${code}`);
112
+ // If we haven't resolved yet, this is an error
113
+ if (!resolved) {
114
+ const error = `cloudflared exited with code ${code}. Check if cloudflared is installed correctly.`;
115
+ this.updateState({ status: 'error', error });
116
+ resolved = true;
117
+ resolve({ success: false, error });
118
+ }
119
+ else {
120
+ // Process exited after running - attempt reconnect if enabled
121
+ this.handleDisconnect();
122
+ }
123
+ });
124
+ this.process.on('error', (err) => {
125
+ const error = `Failed to start cloudflared: ${err.message}`;
126
+ console.error('[Tunnel]', error);
127
+ if (!resolved) {
128
+ this.updateState({ status: 'error', error });
129
+ resolved = true;
130
+ resolve({ success: false, error });
131
+ }
132
+ });
133
+ // Timeout after 30 seconds if we don't get a URL
134
+ setTimeout(() => {
135
+ if (!resolved) {
136
+ this.stop();
137
+ const error = 'Timeout waiting for tunnel URL. Check cloudflared logs.';
138
+ this.updateState({ status: 'error', error });
139
+ resolved = true;
140
+ resolve({ success: false, error });
141
+ }
142
+ }, 30000);
143
+ });
144
+ }
145
+ /**
146
+ * Stop the tunnel
147
+ */
148
+ async stop() {
149
+ // Clear reconnect timer
150
+ if (this.reconnectTimer) {
151
+ clearTimeout(this.reconnectTimer);
152
+ this.reconnectTimer = null;
153
+ }
154
+ if (this.process) {
155
+ this.process.kill('SIGTERM');
156
+ // Wait for process to exit gracefully (max 5 seconds)
157
+ await new Promise((resolve) => {
158
+ if (!this.process) {
159
+ resolve();
160
+ return;
161
+ }
162
+ const timeout = setTimeout(() => {
163
+ if (this.process) {
164
+ this.process.kill('SIGKILL');
165
+ }
166
+ resolve();
167
+ }, 5000);
168
+ this.process.on('close', () => {
169
+ clearTimeout(timeout);
170
+ resolve();
171
+ });
172
+ });
173
+ this.process = null;
174
+ }
175
+ this.updateState({
176
+ status: 'stopped',
177
+ url: null,
178
+ startedAt: null,
179
+ error: null,
180
+ reconnectAttempt: 0,
181
+ });
182
+ }
183
+ /**
184
+ * Handle unexpected disconnect and attempt reconnection
185
+ */
186
+ handleDisconnect() {
187
+ const settings = settingsManager.getTunnel();
188
+ // Don't reconnect if tunnel is disabled
189
+ if (!settings.enabled) {
190
+ this.updateState({ status: 'stopped', url: null, startedAt: null });
191
+ return;
192
+ }
193
+ // Check if we've exceeded max reconnect attempts
194
+ if (this.state.reconnectAttempt >= this.maxReconnectAttempts) {
195
+ const error = `Tunnel disconnected and failed to reconnect after ${this.maxReconnectAttempts} attempts`;
196
+ console.error('[Tunnel]', error);
197
+ this.updateState({ status: 'error', error });
198
+ return;
199
+ }
200
+ // Calculate delay for this attempt
201
+ const delay = this.reconnectDelays[Math.min(this.state.reconnectAttempt, this.reconnectDelays.length - 1)];
202
+ const attemptNum = this.state.reconnectAttempt + 1;
203
+ console.log(`[Tunnel] Attempting reconnect ${attemptNum}/${this.maxReconnectAttempts} in ${delay}ms...`);
204
+ this.updateState({
205
+ status: 'starting',
206
+ url: null,
207
+ startedAt: null,
208
+ reconnectAttempt: attemptNum,
209
+ });
210
+ // Schedule reconnect
211
+ this.reconnectTimer = setTimeout(async () => {
212
+ const result = await this.start();
213
+ if (!result.success) {
214
+ // Reconnect failed, handleDisconnect will be called again by process exit handler
215
+ console.error('[Tunnel] Reconnect attempt failed:', result.error);
216
+ }
217
+ }, delay);
218
+ }
219
+ /**
220
+ * Update state and emit event
221
+ */
222
+ updateState(updates) {
223
+ this.state = { ...this.state, ...updates };
224
+ this.emit('statusChange', this.state);
225
+ }
226
+ /**
227
+ * Graceful shutdown
228
+ */
229
+ async shutdown() {
230
+ await this.stop();
231
+ }
232
+ }
233
+ // Singleton instance
234
+ export const remoteTunnelManager = new RemoteTunnelManager();
235
+ //# sourceMappingURL=remote-tunnel-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-tunnel-manager.js","sourceRoot":"","sources":["../../src/core/remote-tunnel-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ export interface ServiceStatus {
2
+ name: string;
3
+ status: 'running' | 'stopped' | 'error' | 'starting';
4
+ port: number;
5
+ containerId?: string;
6
+ health?: 'healthy' | 'unhealthy' | 'starting' | 'none';
7
+ }
8
+ export interface SharedDockerState {
9
+ status: 'stopped' | 'starting' | 'running' | 'stopping' | 'error';
10
+ services: Record<string, ServiceStatus>;
11
+ error?: string;
12
+ startedAt?: string;
13
+ }
14
+ export interface ConnectionInfo {
15
+ url: string;
16
+ env: Record<string, string>;
17
+ }
18
+ export declare class SharedDockerManager {
19
+ private state;
20
+ private composeFilePath;
21
+ private configDir;
22
+ constructor();
23
+ isDockerAvailable(): Promise<boolean>;
24
+ isComposeAvailable(): Promise<boolean>;
25
+ private getComposeCommand;
26
+ generateComposeFile(): string;
27
+ private writeComposeFile;
28
+ start(): Promise<SharedDockerState>;
29
+ stop(): Promise<SharedDockerState>;
30
+ restart(): Promise<SharedDockerState>;
31
+ private waitForHealthy;
32
+ private checkContainerHealth;
33
+ private refreshServiceStatuses;
34
+ private getContainerStatus;
35
+ getStatus(): Promise<SharedDockerState>;
36
+ getServiceLogs(serviceName: string, tail?: number): Promise<string>;
37
+ getConnectionInfo(): Record<string, ConnectionInfo>;
38
+ getDockerServicesContext(): string;
39
+ }
40
+ export declare const sharedDockerManager: SharedDockerManager;
41
+ //# sourceMappingURL=shared-docker-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-docker-manager.d.ts","sourceRoot":"","sources":["../../src/core/shared-docker-manager.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,MAAM,CAAC;CACxD;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IAClE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAS;;IAWpB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB5C,OAAO,CAAC,iBAAiB;IASzB,mBAAmB,IAAI,MAAM;IA+D7B,OAAO,CAAC,gBAAgB;IASlB,KAAK,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAiFnC,IAAI,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA0ClC,OAAO,IAAI,OAAO,CAAC,iBAAiB,CAAC;YAK7B,cAAc;YA4Bd,oBAAoB;YAYpB,sBAAsB;YAuBtB,kBAAkB;IAuC1B,SAAS,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAgCvC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAetE,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAoCnD,wBAAwB,IAAI,MAAM;CAqCnC;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}