remoat 0.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 (200) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +297 -0
  3. package/dist/bin/cli.d.ts +2 -0
  4. package/dist/bin/cli.js +80 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/bin/commands/doctor.d.ts +1 -0
  7. package/dist/bin/commands/doctor.js +211 -0
  8. package/dist/bin/commands/doctor.js.map +1 -0
  9. package/dist/bin/commands/open.d.ts +1 -0
  10. package/dist/bin/commands/open.js +187 -0
  11. package/dist/bin/commands/open.js.map +1 -0
  12. package/dist/bin/commands/setup.d.ts +1 -0
  13. package/dist/bin/commands/setup.js +267 -0
  14. package/dist/bin/commands/setup.js.map +1 -0
  15. package/dist/bin/commands/start.d.ts +2 -0
  16. package/dist/bin/commands/start.js +39 -0
  17. package/dist/bin/commands/start.js.map +1 -0
  18. package/dist/bot/index.d.ts +2 -0
  19. package/dist/bot/index.js +1393 -0
  20. package/dist/bot/index.js.map +1 -0
  21. package/dist/commands/chatCommandHandler.d.ts +20 -0
  22. package/dist/commands/chatCommandHandler.js +30 -0
  23. package/dist/commands/chatCommandHandler.js.map +1 -0
  24. package/dist/commands/cleanupCommandHandler.d.ts +21 -0
  25. package/dist/commands/cleanupCommandHandler.js +40 -0
  26. package/dist/commands/cleanupCommandHandler.js.map +1 -0
  27. package/dist/commands/joinCommandHandler.d.ts +19 -0
  28. package/dist/commands/joinCommandHandler.js +27 -0
  29. package/dist/commands/joinCommandHandler.js.map +1 -0
  30. package/dist/commands/messageParser.d.ts +7 -0
  31. package/dist/commands/messageParser.js +29 -0
  32. package/dist/commands/messageParser.js.map +1 -0
  33. package/dist/commands/slashCommandHandler.d.ts +21 -0
  34. package/dist/commands/slashCommandHandler.js +105 -0
  35. package/dist/commands/slashCommandHandler.js.map +1 -0
  36. package/dist/commands/workspaceCommandHandler.d.ts +16 -0
  37. package/dist/commands/workspaceCommandHandler.js +29 -0
  38. package/dist/commands/workspaceCommandHandler.js.map +1 -0
  39. package/dist/database/chatSessionRepository.d.ts +59 -0
  40. package/dist/database/chatSessionRepository.js +110 -0
  41. package/dist/database/chatSessionRepository.js.map +1 -0
  42. package/dist/database/scheduleRepository.d.ts +60 -0
  43. package/dist/database/scheduleRepository.js +106 -0
  44. package/dist/database/scheduleRepository.js.map +1 -0
  45. package/dist/database/templateRepository.d.ts +51 -0
  46. package/dist/database/templateRepository.js +90 -0
  47. package/dist/database/templateRepository.js.map +1 -0
  48. package/dist/database/workspaceBindingRepository.d.ts +48 -0
  49. package/dist/database/workspaceBindingRepository.js +92 -0
  50. package/dist/database/workspaceBindingRepository.js.map +1 -0
  51. package/dist/index.d.ts +1 -0
  52. package/dist/index.js +11 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/middleware/auth.d.ts +5 -0
  55. package/dist/middleware/auth.js +14 -0
  56. package/dist/middleware/auth.js.map +1 -0
  57. package/dist/middleware/sanitize.d.ts +1 -0
  58. package/dist/middleware/sanitize.js +18 -0
  59. package/dist/middleware/sanitize.js.map +1 -0
  60. package/dist/services/antigravityLauncher.d.ts +7 -0
  61. package/dist/services/antigravityLauncher.js +94 -0
  62. package/dist/services/antigravityLauncher.js.map +1 -0
  63. package/dist/services/approvalDetector.d.ts +97 -0
  64. package/dist/services/approvalDetector.js +394 -0
  65. package/dist/services/approvalDetector.js.map +1 -0
  66. package/dist/services/assistantDomExtractor.d.ts +49 -0
  67. package/dist/services/assistantDomExtractor.js +340 -0
  68. package/dist/services/assistantDomExtractor.js.map +1 -0
  69. package/dist/services/autoAcceptService.d.ts +14 -0
  70. package/dist/services/autoAcceptService.js +81 -0
  71. package/dist/services/autoAcceptService.js.map +1 -0
  72. package/dist/services/cdpBridgeManager.d.ts +50 -0
  73. package/dist/services/cdpBridgeManager.js +355 -0
  74. package/dist/services/cdpBridgeManager.js.map +1 -0
  75. package/dist/services/cdpConnectionPool.d.ts +88 -0
  76. package/dist/services/cdpConnectionPool.js +235 -0
  77. package/dist/services/cdpConnectionPool.js.map +1 -0
  78. package/dist/services/cdpService.d.ts +214 -0
  79. package/dist/services/cdpService.js +1423 -0
  80. package/dist/services/cdpService.js.map +1 -0
  81. package/dist/services/chatSessionService.d.ts +89 -0
  82. package/dist/services/chatSessionService.js +738 -0
  83. package/dist/services/chatSessionService.js.map +1 -0
  84. package/dist/services/errorPopupDetector.d.ts +89 -0
  85. package/dist/services/errorPopupDetector.js +274 -0
  86. package/dist/services/errorPopupDetector.js.map +1 -0
  87. package/dist/services/modeService.d.ts +44 -0
  88. package/dist/services/modeService.js +74 -0
  89. package/dist/services/modeService.js.map +1 -0
  90. package/dist/services/modelService.d.ts +36 -0
  91. package/dist/services/modelService.js +64 -0
  92. package/dist/services/modelService.js.map +1 -0
  93. package/dist/services/planningDetector.d.ts +87 -0
  94. package/dist/services/planningDetector.js +321 -0
  95. package/dist/services/planningDetector.js.map +1 -0
  96. package/dist/services/processManager.d.ts +18 -0
  97. package/dist/services/processManager.js +62 -0
  98. package/dist/services/processManager.js.map +1 -0
  99. package/dist/services/progressSender.d.ts +20 -0
  100. package/dist/services/progressSender.js +65 -0
  101. package/dist/services/progressSender.js.map +1 -0
  102. package/dist/services/promptDispatcher.d.ts +38 -0
  103. package/dist/services/promptDispatcher.js +42 -0
  104. package/dist/services/promptDispatcher.js.map +1 -0
  105. package/dist/services/quotaService.d.ts +21 -0
  106. package/dist/services/quotaService.js +191 -0
  107. package/dist/services/quotaService.js.map +1 -0
  108. package/dist/services/responseMonitor.d.ts +129 -0
  109. package/dist/services/responseMonitor.js +996 -0
  110. package/dist/services/responseMonitor.js.map +1 -0
  111. package/dist/services/scheduleService.d.ts +58 -0
  112. package/dist/services/scheduleService.js +135 -0
  113. package/dist/services/scheduleService.js.map +1 -0
  114. package/dist/services/screenshotService.d.ts +55 -0
  115. package/dist/services/screenshotService.js +86 -0
  116. package/dist/services/screenshotService.js.map +1 -0
  117. package/dist/services/telegramTopicManager.d.ts +40 -0
  118. package/dist/services/telegramTopicManager.js +103 -0
  119. package/dist/services/telegramTopicManager.js.map +1 -0
  120. package/dist/services/titleGeneratorService.d.ts +32 -0
  121. package/dist/services/titleGeneratorService.js +114 -0
  122. package/dist/services/titleGeneratorService.js.map +1 -0
  123. package/dist/services/updateCheckService.d.ts +16 -0
  124. package/dist/services/updateCheckService.js +148 -0
  125. package/dist/services/updateCheckService.js.map +1 -0
  126. package/dist/services/userMessageDetector.d.ts +57 -0
  127. package/dist/services/userMessageDetector.js +222 -0
  128. package/dist/services/userMessageDetector.js.map +1 -0
  129. package/dist/services/workspaceService.d.ts +33 -0
  130. package/dist/services/workspaceService.js +65 -0
  131. package/dist/services/workspaceService.js.map +1 -0
  132. package/dist/ui/autoAcceptUi.d.ts +6 -0
  133. package/dist/ui/autoAcceptUi.js +22 -0
  134. package/dist/ui/autoAcceptUi.js.map +1 -0
  135. package/dist/ui/modeUi.d.ts +12 -0
  136. package/dist/ui/modeUi.js +40 -0
  137. package/dist/ui/modeUi.js.map +1 -0
  138. package/dist/ui/modelsUi.d.ts +12 -0
  139. package/dist/ui/modelsUi.js +101 -0
  140. package/dist/ui/modelsUi.js.map +1 -0
  141. package/dist/ui/projectListUi.d.ts +11 -0
  142. package/dist/ui/projectListUi.js +59 -0
  143. package/dist/ui/projectListUi.js.map +1 -0
  144. package/dist/ui/screenshotUi.d.ts +6 -0
  145. package/dist/ui/screenshotUi.js +28 -0
  146. package/dist/ui/screenshotUi.js.map +1 -0
  147. package/dist/ui/sessionPickerUi.d.ts +8 -0
  148. package/dist/ui/sessionPickerUi.js +32 -0
  149. package/dist/ui/sessionPickerUi.js.map +1 -0
  150. package/dist/ui/templateUi.d.ts +5 -0
  151. package/dist/ui/templateUi.js +44 -0
  152. package/dist/ui/templateUi.js.map +1 -0
  153. package/dist/utils/cdpPorts.d.ts +2 -0
  154. package/dist/utils/cdpPorts.js +6 -0
  155. package/dist/utils/cdpPorts.js.map +1 -0
  156. package/dist/utils/config.d.ts +14 -0
  157. package/dist/utils/config.js +12 -0
  158. package/dist/utils/config.js.map +1 -0
  159. package/dist/utils/configLoader.d.ts +23 -0
  160. package/dist/utils/configLoader.js +153 -0
  161. package/dist/utils/configLoader.js.map +1 -0
  162. package/dist/utils/htmlToTelegramMarkdown.d.ts +6 -0
  163. package/dist/utils/htmlToTelegramMarkdown.js +189 -0
  164. package/dist/utils/htmlToTelegramMarkdown.js.map +1 -0
  165. package/dist/utils/i18n.d.ts +3 -0
  166. package/dist/utils/i18n.js +78 -0
  167. package/dist/utils/i18n.js.map +1 -0
  168. package/dist/utils/imageHandler.d.ts +35 -0
  169. package/dist/utils/imageHandler.js +155 -0
  170. package/dist/utils/imageHandler.js.map +1 -0
  171. package/dist/utils/lockfile.d.ts +7 -0
  172. package/dist/utils/lockfile.js +117 -0
  173. package/dist/utils/lockfile.js.map +1 -0
  174. package/dist/utils/logger.d.ts +23 -0
  175. package/dist/utils/logger.js +85 -0
  176. package/dist/utils/logger.js.map +1 -0
  177. package/dist/utils/logo.d.ts +1 -0
  178. package/dist/utils/logo.js +14 -0
  179. package/dist/utils/logo.js.map +1 -0
  180. package/dist/utils/metadataExtractor.d.ts +5 -0
  181. package/dist/utils/metadataExtractor.js +16 -0
  182. package/dist/utils/metadataExtractor.js.map +1 -0
  183. package/dist/utils/pathUtils.d.ts +23 -0
  184. package/dist/utils/pathUtils.js +58 -0
  185. package/dist/utils/pathUtils.js.map +1 -0
  186. package/dist/utils/processLogBuffer.d.ts +17 -0
  187. package/dist/utils/processLogBuffer.js +108 -0
  188. package/dist/utils/processLogBuffer.js.map +1 -0
  189. package/dist/utils/streamMessageFormatter.d.ts +18 -0
  190. package/dist/utils/streamMessageFormatter.js +91 -0
  191. package/dist/utils/streamMessageFormatter.js.map +1 -0
  192. package/dist/utils/telegramFormatter.d.ts +37 -0
  193. package/dist/utils/telegramFormatter.js +445 -0
  194. package/dist/utils/telegramFormatter.js.map +1 -0
  195. package/dist/utils/voiceHandler.d.ts +23 -0
  196. package/dist/utils/voiceHandler.js +169 -0
  197. package/dist/utils/voiceHandler.js.map +1 -0
  198. package/locales/en.json +85 -0
  199. package/locales/ja.json +109 -0
  200. package/package.json +84 -0
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.openAction = openAction;
37
+ const net = __importStar(require("net"));
38
+ const os = __importStar(require("os"));
39
+ const child_process_1 = require("child_process");
40
+ const cdpPorts_1 = require("../../utils/cdpPorts");
41
+ const APP_NAME = 'Antigravity';
42
+ /** Resolve Antigravity path from ANTIGRAVITY_PATH env var, if set. */
43
+ function getCustomPath() {
44
+ return process.env.ANTIGRAVITY_PATH || undefined;
45
+ }
46
+ const C = {
47
+ reset: '\x1b[0m',
48
+ bold: '\x1b[1m',
49
+ dim: '\x1b[2m',
50
+ cyan: '\x1b[36m',
51
+ green: '\x1b[32m',
52
+ red: '\x1b[31m',
53
+ };
54
+ /**
55
+ * Check whether a TCP port is available (not in use) by attempting to listen on it.
56
+ */
57
+ function isPortAvailable(port) {
58
+ return new Promise((resolve) => {
59
+ const server = net.createServer();
60
+ server.once('error', () => resolve(false));
61
+ server.once('listening', () => {
62
+ server.close(() => resolve(true));
63
+ });
64
+ server.listen(port, '127.0.0.1');
65
+ });
66
+ }
67
+ async function findAvailablePort() {
68
+ for (const port of cdpPorts_1.CDP_PORTS) {
69
+ if (await isPortAvailable(port)) {
70
+ return port;
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+ function openMacOS(port) {
76
+ const customPath = getCustomPath();
77
+ return new Promise((resolve, reject) => {
78
+ if (customPath) {
79
+ // Use explicit path: run the binary directly
80
+ const child = (0, child_process_1.spawn)(customPath, [`--remote-debugging-port=${port}`], {
81
+ detached: true,
82
+ stdio: 'ignore',
83
+ });
84
+ child.unref();
85
+ child.on('error', (err) => {
86
+ reject(new Error(`Failed to open ${customPath}: ${err.message}`));
87
+ });
88
+ setTimeout(() => resolve(), 500);
89
+ }
90
+ else {
91
+ // Default: use macOS `open -a` to find the app in /Applications
92
+ (0, child_process_1.execFile)('open', ['-a', APP_NAME, '--args', `--remote-debugging-port=${port}`], (err) => {
93
+ if (err) {
94
+ reject(new Error(`Failed to open ${APP_NAME}: ${err.message}`));
95
+ return;
96
+ }
97
+ resolve();
98
+ });
99
+ }
100
+ });
101
+ }
102
+ function openWindows(port) {
103
+ const executable = getCustomPath() ?? `${APP_NAME}.exe`;
104
+ return new Promise((resolve, reject) => {
105
+ try {
106
+ const child = (0, child_process_1.spawn)(executable, [`--remote-debugging-port=${port}`], {
107
+ detached: true,
108
+ stdio: 'ignore',
109
+ shell: true,
110
+ });
111
+ child.unref();
112
+ child.on('error', (err) => {
113
+ reject(new Error(`Failed to open ${executable}: ${err.message}`));
114
+ });
115
+ setTimeout(() => resolve(), 500);
116
+ }
117
+ catch (err) {
118
+ const msg = err instanceof Error ? err.message : String(err);
119
+ reject(new Error(`Failed to open ${executable}: ${msg}`));
120
+ }
121
+ });
122
+ }
123
+ function openLinux(port) {
124
+ const executable = getCustomPath() ?? APP_NAME.toLowerCase();
125
+ return new Promise((resolve, reject) => {
126
+ try {
127
+ const child = (0, child_process_1.spawn)(executable, [`--remote-debugging-port=${port}`], {
128
+ detached: true,
129
+ stdio: 'ignore',
130
+ });
131
+ child.unref();
132
+ child.on('error', (err) => {
133
+ reject(new Error(`Failed to open ${executable}: ${err.message}`));
134
+ });
135
+ // Give it a moment to detect spawn errors
136
+ setTimeout(() => resolve(), 500);
137
+ }
138
+ catch (err) {
139
+ const msg = err instanceof Error ? err.message : String(err);
140
+ reject(new Error(`Failed to open ${executable}: ${msg}`));
141
+ }
142
+ });
143
+ }
144
+ async function openAction() {
145
+ const platform = os.platform();
146
+ console.log(`\n ${C.cyan}Searching for an available CDP port...${C.reset}`);
147
+ const port = await findAvailablePort();
148
+ if (port === null) {
149
+ console.log(` ${C.red}No available CDP ports found.${C.reset}`);
150
+ console.log(` ${C.dim}All candidate ports are in use: ${cdpPorts_1.CDP_PORTS.join(', ')}${C.reset}`);
151
+ console.log(` ${C.dim}Close an application using one of these ports and try again.${C.reset}\n`);
152
+ process.exitCode = 1;
153
+ return;
154
+ }
155
+ console.log(` ${C.green}Found available port: ${port}${C.reset}`);
156
+ console.log(` ${C.dim}Opening ${APP_NAME} with --remote-debugging-port=${port}...${C.reset}\n`);
157
+ try {
158
+ if (platform === 'darwin') {
159
+ await openMacOS(port);
160
+ }
161
+ else if (platform === 'win32') {
162
+ await openWindows(port);
163
+ }
164
+ else {
165
+ await openLinux(port);
166
+ }
167
+ console.log(` ${C.green}${APP_NAME} opened on CDP port ${port}${C.reset}`);
168
+ console.log(` ${C.dim}Run ${C.reset}${C.cyan}remoat start${C.reset}${C.dim} to connect the bot.${C.reset}\n`);
169
+ }
170
+ catch (error) {
171
+ const msg = error instanceof Error ? error.message : String(error);
172
+ console.log(` ${C.red}${msg}${C.reset}`);
173
+ console.log(` ${C.dim}Make sure ${APP_NAME} is installed on your system.${C.reset}`);
174
+ if (platform === 'darwin') {
175
+ console.log(` ${C.dim}${APP_NAME} must be in /Applications, or set ANTIGRAVITY_PATH in your .env file.${C.reset}`);
176
+ }
177
+ else if (platform === 'linux') {
178
+ console.log(` ${C.dim}Set ANTIGRAVITY_PATH in your .env file (e.g. /opt/applications/antigravity.AppImage).${C.reset}`);
179
+ }
180
+ else {
181
+ console.log(` ${C.dim}Make sure ${APP_NAME}.exe is in your PATH, or set ANTIGRAVITY_PATH in your .env file.${C.reset}`);
182
+ }
183
+ console.log('');
184
+ process.exitCode = 1;
185
+ }
186
+ }
187
+ //# sourceMappingURL=open.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/bin/commands/open.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function setupAction(): Promise<void>;
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.setupAction = setupAction;
37
+ const readline = __importStar(require("readline"));
38
+ const https = __importStar(require("https"));
39
+ const fs = __importStar(require("fs"));
40
+ const os = __importStar(require("os"));
41
+ const path = __importStar(require("path"));
42
+ const configLoader_1 = require("../../utils/configLoader");
43
+ const cdpPorts_1 = require("../../utils/cdpPorts");
44
+ const C = {
45
+ reset: '\x1b[0m',
46
+ bold: '\x1b[1m',
47
+ dim: '\x1b[2m',
48
+ cyan: '\x1b[36m',
49
+ green: '\x1b[32m',
50
+ yellow: '\x1b[33m',
51
+ red: '\x1b[31m',
52
+ magenta: '\x1b[35m',
53
+ };
54
+ const SETUP_LOGO = `
55
+ ${C.cyan} . * .${C.reset}
56
+ ${C.cyan} /\\___/\\ z Z${C.reset}
57
+ ${C.cyan} * ( - . - )____________z${C.reset} *
58
+ ${C.cyan} \\_ __)${C.reset}
59
+ ${C.cyan} \\_ \\________/ /${C.reset} .
60
+ ${C.cyan} \\__) \\__)${C.reset}
61
+
62
+ ${C.bold}~ Remoat Setup (Telegram) ~${C.reset}
63
+ `;
64
+ function isNonEmpty(value) {
65
+ return value.trim().length > 0;
66
+ }
67
+ function isNumericString(value) {
68
+ return /^\d+$/.test(value.trim());
69
+ }
70
+ function parseAllowedUserIds(raw) {
71
+ return raw.split(',').map((id) => id.trim()).filter((id) => id.length > 0);
72
+ }
73
+ function validateAllowedUserIds(raw) {
74
+ const ids = parseAllowedUserIds(raw);
75
+ if (ids.length === 0)
76
+ return 'Please enter at least one user ID.';
77
+ const invalid = ids.find((id) => !isNumericString(id));
78
+ if (invalid)
79
+ return `Invalid user ID: "${invalid}" — must be a numeric string.`;
80
+ return null;
81
+ }
82
+ function expandTilde(raw) {
83
+ if (raw === '~')
84
+ return os.homedir();
85
+ if (raw.startsWith('~/'))
86
+ return path.join(os.homedir(), raw.slice(2));
87
+ return raw;
88
+ }
89
+ function verifyTelegramToken(token) {
90
+ return new Promise((resolve) => {
91
+ const req = https.get(`https://api.telegram.org/bot${token}/getMe`, (res) => {
92
+ let data = '';
93
+ res.on('data', (chunk) => (data += chunk));
94
+ res.on('end', () => {
95
+ if (res.statusCode !== 200) {
96
+ resolve(null);
97
+ return;
98
+ }
99
+ try {
100
+ const json = JSON.parse(data);
101
+ if (json.ok && json.result) {
102
+ resolve({ id: json.result.id, username: json.result.username, first_name: json.result.first_name });
103
+ }
104
+ else {
105
+ resolve(null);
106
+ }
107
+ }
108
+ catch {
109
+ resolve(null);
110
+ }
111
+ });
112
+ });
113
+ req.on('error', () => resolve(null));
114
+ req.setTimeout(10000, () => { req.destroy(); resolve(null); });
115
+ });
116
+ }
117
+ function createInterface() {
118
+ return readline.createInterface({ input: process.stdin, output: process.stdout });
119
+ }
120
+ function ask(rl, prompt) {
121
+ return new Promise((resolve) => { rl.question(prompt, resolve); });
122
+ }
123
+ function askSecret(rl, prompt) {
124
+ return new Promise((resolve) => {
125
+ if (!process.stdin.isTTY) {
126
+ rl.question(prompt, resolve);
127
+ return;
128
+ }
129
+ process.stdout.write(prompt);
130
+ rl.pause();
131
+ const stdin = process.stdin;
132
+ stdin.setRawMode(true);
133
+ stdin.resume();
134
+ stdin.setEncoding('utf8');
135
+ let input = '';
136
+ const onData = (char) => {
137
+ const code = char.charCodeAt(0);
138
+ if (char === '\r' || char === '\n') {
139
+ stdin.setRawMode(false);
140
+ stdin.removeListener('data', onData);
141
+ process.stdout.write('\n');
142
+ rl.resume();
143
+ resolve(input);
144
+ }
145
+ else if (code === 127 || code === 8) {
146
+ if (input.length > 0) {
147
+ input = input.slice(0, -1);
148
+ process.stdout.write('\b \b');
149
+ }
150
+ }
151
+ else if (code === 3) {
152
+ stdin.setRawMode(false);
153
+ process.stdout.write('\n');
154
+ process.exit(0);
155
+ }
156
+ else if (code >= 32) {
157
+ input += char;
158
+ process.stdout.write('*');
159
+ }
160
+ };
161
+ stdin.on('data', onData);
162
+ });
163
+ }
164
+ function stepHeader(step, total, title) {
165
+ console.log(` ${C.cyan}[Step ${step}/${total}]${C.reset} ${C.bold}${title}${C.reset}`);
166
+ }
167
+ function hint(text) {
168
+ console.log(` ${C.dim}${text}${C.reset}`);
169
+ }
170
+ function hintBlank() { console.log(''); }
171
+ function errMsg(text) {
172
+ console.log(` ${C.red}${text}${C.reset}\n`);
173
+ }
174
+ const TOTAL_STEPS = 3;
175
+ async function promptToken(rl) {
176
+ while (true) {
177
+ const token = await askSecret(rl, ` ${C.yellow}>${C.reset} `);
178
+ if (!isNonEmpty(token)) {
179
+ errMsg('Token cannot be empty.');
180
+ continue;
181
+ }
182
+ const trimmed = token.trim();
183
+ process.stdout.write(` ${C.dim}Verifying token...${C.reset}`);
184
+ const botInfo = await verifyTelegramToken(trimmed);
185
+ if (botInfo) {
186
+ process.stdout.write(`\r ${C.green}Verified!${C.reset} Bot: ${C.bold}@${botInfo.username}${C.reset} (${botInfo.first_name})\n`);
187
+ return { token: trimmed, botName: botInfo.username };
188
+ }
189
+ process.stdout.write(`\r ${C.yellow}Could not verify online${C.reset} — using token as-is.\n`);
190
+ return { token: trimmed, botName: null };
191
+ }
192
+ }
193
+ async function promptAllowedUserIds(rl) {
194
+ while (true) {
195
+ const raw = await ask(rl, ` ${C.yellow}>${C.reset} `);
196
+ const error = validateAllowedUserIds(raw);
197
+ if (error === null)
198
+ return parseAllowedUserIds(raw);
199
+ errMsg(`${error}`);
200
+ }
201
+ }
202
+ async function promptWorkspaceDir(rl) {
203
+ const defaultDir = path.join(os.homedir(), 'Code');
204
+ while (true) {
205
+ const raw = await ask(rl, ` ${C.yellow}>${C.reset} [${C.dim}${defaultDir}${C.reset}] `);
206
+ const dir = expandTilde(raw.trim().length > 0 ? raw.trim() : defaultDir);
207
+ const resolved = path.resolve(dir);
208
+ if (fs.existsSync(resolved))
209
+ return resolved;
210
+ const answer = await ask(rl, ` ${C.yellow}"${resolved}" does not exist. Create it? (y/n):${C.reset} `);
211
+ if (answer.trim().toLowerCase() === 'y') {
212
+ fs.mkdirSync(resolved, { recursive: true });
213
+ return resolved;
214
+ }
215
+ errMsg('Please enter an existing directory.');
216
+ }
217
+ }
218
+ async function runSetupWizard() {
219
+ const rl = createInterface();
220
+ try {
221
+ console.log(SETUP_LOGO);
222
+ console.log(` ${C.bold}Interactive setup — ${TOTAL_STEPS} steps${C.reset}\n`);
223
+ stepHeader(1, TOTAL_STEPS, 'Telegram Bot Token');
224
+ hint('1. Open Telegram and search for @BotFather');
225
+ hint('2. Send /newbot and follow the prompts to create a bot');
226
+ hint('3. Copy the bot token BotFather gives you');
227
+ hintBlank();
228
+ const { token: telegramBotToken } = await promptToken(rl);
229
+ console.log('');
230
+ stepHeader(2, TOTAL_STEPS, 'Allowed Telegram User IDs');
231
+ hint('Only these users can send commands to the bot.');
232
+ hint('1. Open Telegram and search for @userinfobot');
233
+ hint('2. Send any message — it replies with your numeric user ID');
234
+ hint('Multiple IDs: separate with commas (e.g. 123456,789012)');
235
+ hintBlank();
236
+ const allowedUserIds = await promptAllowedUserIds(rl);
237
+ console.log('');
238
+ stepHeader(3, TOTAL_STEPS, 'Workspace Base Directory');
239
+ hint('The parent directory where your coding projects live.');
240
+ hint('Remoat will scan subdirectories as workspaces.');
241
+ hintBlank();
242
+ const workspaceBaseDir = await promptWorkspaceDir(rl);
243
+ console.log('');
244
+ return { telegramBotToken, allowedUserIds, workspaceBaseDir };
245
+ }
246
+ finally {
247
+ rl.close();
248
+ }
249
+ }
250
+ async function setupAction() {
251
+ const result = await runSetupWizard();
252
+ configLoader_1.ConfigLoader.save({
253
+ telegramBotToken: result.telegramBotToken,
254
+ allowedUserIds: result.allowedUserIds,
255
+ workspaceBaseDir: result.workspaceBaseDir,
256
+ });
257
+ const configPath = configLoader_1.ConfigLoader.getConfigFilePath();
258
+ console.log(` ${C.green}Setup complete!${C.reset}\n`);
259
+ console.log(` ${C.dim}Saved to${C.reset} ${configPath}\n`);
260
+ console.log(` ${C.cyan}Next steps:${C.reset}`);
261
+ console.log(` ${C.bold}1.${C.reset} Open Antigravity with CDP enabled:`);
262
+ console.log(` ${C.green}remoat open${C.reset}`);
263
+ console.log(` ${C.dim}(auto-selects an available port from: ${cdpPorts_1.CDP_PORTS.join(', ')})${C.reset}\n`);
264
+ console.log(` ${C.bold}2.${C.reset} Run: ${C.green}remoat start${C.reset}\n`);
265
+ console.log(` ${C.bold}3.${C.reset} Open Telegram and message your bot!\n`);
266
+ }
267
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/bin/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function startAction(_opts?: Record<string, unknown>, cmd?: Command): Promise<void>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startAction = startAction;
4
+ const logo_1 = require("../../utils/logo");
5
+ const lockfile_1 = require("../../utils/lockfile");
6
+ const bot_1 = require("../../bot");
7
+ const logger_1 = require("../../utils/logger");
8
+ const package_json_1 = require("../../../package.json");
9
+ const updateCheckService_1 = require("../../services/updateCheckService");
10
+ /**
11
+ * Resolve log level from CLI flags on the root program.
12
+ * Priority: --verbose > --quiet > undefined (fall through to env/config)
13
+ */
14
+ function resolveCliLogLevel(cmd) {
15
+ if (!cmd)
16
+ return undefined;
17
+ const root = cmd.parent ?? cmd;
18
+ const opts = root.opts();
19
+ if (opts.verbose)
20
+ return 'debug';
21
+ if (opts.quiet)
22
+ return 'error';
23
+ return undefined;
24
+ }
25
+ async function startAction(_opts, cmd) {
26
+ const cliLevel = resolveCliLogLevel(cmd);
27
+ if (cliLevel) {
28
+ logger_1.logger.setLogLevel(cliLevel);
29
+ }
30
+ console.log(logo_1.LOGO);
31
+ (0, lockfile_1.acquireLock)();
32
+ // Non-blocking update check (fire-and-forget)
33
+ (0, updateCheckService_1.checkForUpdates)(package_json_1.version).catch(() => { });
34
+ await (0, bot_1.startBot)(cliLevel).catch((err) => {
35
+ logger_1.logger.error('Failed to start bot:', err);
36
+ process.exit(1);
37
+ });
38
+ }
39
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/bin/commands/start.ts"],"names":[],"mappings":";;AAsBA,kCAmBC;AAxCD,2CAAwC;AACxC,mDAAmD;AACnD,mCAAqC;AACrC,+CAA4C;AAE5C,wDAAgD;AAChD,0EAAoE;AAEpE;;;GAGG;AACH,SAAS,kBAAkB,CAAC,GAAwB;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC/B,OAAO,SAAS,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,WAAW,CAC7B,KAA+B,EAC/B,GAAa;IAEb,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,QAAQ,EAAE,CAAC;QACX,eAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAI,CAAC,CAAC;IAClB,IAAA,sBAAW,GAAE,CAAC;IAEd,8CAA8C;IAC9C,IAAA,oCAAe,EAAC,sBAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAEzC,MAAM,IAAA,cAAQ,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnC,eAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { LogLevel } from '../utils/logger';
2
+ export declare const startBot: (cliLogLevel?: LogLevel) => Promise<void>;