@helmisatria/mcp-chrome-bridge 1.0.30

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 (129) hide show
  1. package/README.md +183 -0
  2. package/dist/README.md +25 -0
  3. package/dist/agent/attachment-service.d.ts +83 -0
  4. package/dist/agent/attachment-service.js +370 -0
  5. package/dist/agent/attachment-service.js.map +1 -0
  6. package/dist/agent/ccr-detector.d.ts +59 -0
  7. package/dist/agent/ccr-detector.js +311 -0
  8. package/dist/agent/ccr-detector.js.map +1 -0
  9. package/dist/agent/chat-service.d.ts +50 -0
  10. package/dist/agent/chat-service.js +439 -0
  11. package/dist/agent/chat-service.js.map +1 -0
  12. package/dist/agent/db/client.d.ts +26 -0
  13. package/dist/agent/db/client.js +244 -0
  14. package/dist/agent/db/client.js.map +1 -0
  15. package/dist/agent/db/index.d.ts +5 -0
  16. package/dist/agent/db/index.js +22 -0
  17. package/dist/agent/db/index.js.map +1 -0
  18. package/dist/agent/db/schema.d.ts +711 -0
  19. package/dist/agent/db/schema.js +121 -0
  20. package/dist/agent/db/schema.js.map +1 -0
  21. package/dist/agent/directory-picker.d.ts +11 -0
  22. package/dist/agent/directory-picker.js +149 -0
  23. package/dist/agent/directory-picker.js.map +1 -0
  24. package/dist/agent/engines/claude.d.ts +79 -0
  25. package/dist/agent/engines/claude.js +1338 -0
  26. package/dist/agent/engines/claude.js.map +1 -0
  27. package/dist/agent/engines/codex.d.ts +48 -0
  28. package/dist/agent/engines/codex.js +822 -0
  29. package/dist/agent/engines/codex.js.map +1 -0
  30. package/dist/agent/engines/types.d.ts +133 -0
  31. package/dist/agent/engines/types.js +3 -0
  32. package/dist/agent/engines/types.js.map +1 -0
  33. package/dist/agent/message-service.d.ts +56 -0
  34. package/dist/agent/message-service.js +198 -0
  35. package/dist/agent/message-service.js.map +1 -0
  36. package/dist/agent/open-project.d.ts +25 -0
  37. package/dist/agent/open-project.js +469 -0
  38. package/dist/agent/open-project.js.map +1 -0
  39. package/dist/agent/project-service.d.ts +49 -0
  40. package/dist/agent/project-service.js +254 -0
  41. package/dist/agent/project-service.js.map +1 -0
  42. package/dist/agent/project-types.d.ts +27 -0
  43. package/dist/agent/project-types.js +3 -0
  44. package/dist/agent/project-types.js.map +1 -0
  45. package/dist/agent/session-service.d.ts +198 -0
  46. package/dist/agent/session-service.js +292 -0
  47. package/dist/agent/session-service.js.map +1 -0
  48. package/dist/agent/storage.d.ts +27 -0
  49. package/dist/agent/storage.js +73 -0
  50. package/dist/agent/storage.js.map +1 -0
  51. package/dist/agent/stream-manager.d.ts +42 -0
  52. package/dist/agent/stream-manager.js +243 -0
  53. package/dist/agent/stream-manager.js.map +1 -0
  54. package/dist/agent/tool-bridge.d.ts +44 -0
  55. package/dist/agent/tool-bridge.js +50 -0
  56. package/dist/agent/tool-bridge.js.map +1 -0
  57. package/dist/agent/types.d.ts +6 -0
  58. package/dist/agent/types.js +3 -0
  59. package/dist/agent/types.js.map +1 -0
  60. package/dist/cli.d.ts +2 -0
  61. package/dist/cli.js +224 -0
  62. package/dist/cli.js.map +1 -0
  63. package/dist/constant/index.d.ts +60 -0
  64. package/dist/constant/index.js +80 -0
  65. package/dist/constant/index.js.map +1 -0
  66. package/dist/file-handler.d.ts +41 -0
  67. package/dist/file-handler.js +295 -0
  68. package/dist/file-handler.js.map +1 -0
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.js +35 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/mcp/mcp-server-stdio.d.ts +72 -0
  73. package/dist/mcp/mcp-server-stdio.js +143 -0
  74. package/dist/mcp/mcp-server-stdio.js.map +1 -0
  75. package/dist/mcp/mcp-server.d.ts +36 -0
  76. package/dist/mcp/mcp-server.js +26 -0
  77. package/dist/mcp/mcp-server.js.map +1 -0
  78. package/dist/mcp/register-tools.d.ts +2 -0
  79. package/dist/mcp/register-tools.js +148 -0
  80. package/dist/mcp/register-tools.js.map +1 -0
  81. package/dist/mcp/stdio-config.json +3 -0
  82. package/dist/native-messaging-host.d.ts +42 -0
  83. package/dist/native-messaging-host.js +312 -0
  84. package/dist/native-messaging-host.js.map +1 -0
  85. package/dist/run_host.bat +194 -0
  86. package/dist/run_host.sh +264 -0
  87. package/dist/scripts/browser-config.d.ts +28 -0
  88. package/dist/scripts/browser-config.js +229 -0
  89. package/dist/scripts/browser-config.js.map +1 -0
  90. package/dist/scripts/build.d.ts +1 -0
  91. package/dist/scripts/build.js +126 -0
  92. package/dist/scripts/build.js.map +1 -0
  93. package/dist/scripts/constant.d.ts +4 -0
  94. package/dist/scripts/constant.js +8 -0
  95. package/dist/scripts/constant.js.map +1 -0
  96. package/dist/scripts/doctor.d.ts +70 -0
  97. package/dist/scripts/doctor.js +930 -0
  98. package/dist/scripts/doctor.js.map +1 -0
  99. package/dist/scripts/postinstall.d.ts +2 -0
  100. package/dist/scripts/postinstall.js +246 -0
  101. package/dist/scripts/postinstall.js.map +1 -0
  102. package/dist/scripts/register-dev.d.ts +1 -0
  103. package/dist/scripts/register-dev.js +5 -0
  104. package/dist/scripts/register-dev.js.map +1 -0
  105. package/dist/scripts/register.d.ts +2 -0
  106. package/dist/scripts/register.js +28 -0
  107. package/dist/scripts/register.js.map +1 -0
  108. package/dist/scripts/report.d.ts +96 -0
  109. package/dist/scripts/report.js +686 -0
  110. package/dist/scripts/report.js.map +1 -0
  111. package/dist/scripts/utils.d.ts +64 -0
  112. package/dist/scripts/utils.js +443 -0
  113. package/dist/scripts/utils.js.map +1 -0
  114. package/dist/server/index.d.ts +35 -0
  115. package/dist/server/index.js +312 -0
  116. package/dist/server/index.js.map +1 -0
  117. package/dist/server/routes/agent.d.ts +21 -0
  118. package/dist/server/routes/agent.js +971 -0
  119. package/dist/server/routes/agent.js.map +1 -0
  120. package/dist/server/routes/index.d.ts +4 -0
  121. package/dist/server/routes/index.js +9 -0
  122. package/dist/server/routes/index.js.map +1 -0
  123. package/dist/trace-analyzer.d.ts +14 -0
  124. package/dist/trace-analyzer.js +113 -0
  125. package/dist/trace-analyzer.js.map +1 -0
  126. package/dist/util/logger.d.ts +1 -0
  127. package/dist/util/logger.js +43 -0
  128. package/dist/util/logger.js.map +1 -0
  129. package/package.json +91 -0
@@ -0,0 +1,469 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.openFileInVSCode = openFileInVSCode;
7
+ exports.openProjectDirectory = openProjectDirectory;
8
+ /**
9
+ * Open Project Service.
10
+ *
11
+ * Provides cross-platform functionality to open a project directory in:
12
+ * - VS Code (or compatible editors)
13
+ * - System terminal
14
+ *
15
+ * Security:
16
+ * - Uses validateRootPath() for path validation (allowed directories check)
17
+ * - Uses spawn() with args array (shell: false) to prevent command injection
18
+ *
19
+ * Platform Support:
20
+ * - macOS: Terminal.app, VS Code via 'code' or 'open -b'
21
+ * - Windows: Windows Terminal, PowerShell, VS Code
22
+ * - Linux: gnome-terminal, konsole, xfce4-terminal, xterm
23
+ */
24
+ const node_os_1 = __importDefault(require("node:os"));
25
+ const node_path_1 = __importDefault(require("node:path"));
26
+ const promises_1 = require("node:fs/promises");
27
+ const node_child_process_1 = require("node:child_process");
28
+ const project_service_1 = require("./project-service");
29
+ // ============================================================
30
+ // Utility Functions
31
+ // ============================================================
32
+ /**
33
+ * Convert spawn error to human-readable string.
34
+ */
35
+ function formatSpawnError(err) {
36
+ if (err instanceof Error) {
37
+ const errnoErr = err;
38
+ if (errnoErr.code) {
39
+ return `${errnoErr.code}: ${err.message}`;
40
+ }
41
+ return err.message;
42
+ }
43
+ return String(err);
44
+ }
45
+ /**
46
+ * Format process exit information.
47
+ */
48
+ function formatExitFailure(code, signal) {
49
+ if (typeof code === 'number') {
50
+ return `Exit code ${code}`;
51
+ }
52
+ if (signal) {
53
+ return `Terminated by signal ${signal}`;
54
+ }
55
+ return 'Exited with unknown status';
56
+ }
57
+ // ============================================================
58
+ // Launch Logic
59
+ // ============================================================
60
+ /**
61
+ * Attempt to launch a process.
62
+ *
63
+ * Strategy:
64
+ * - If spawn fails immediately (e.g., ENOENT): return failure
65
+ * - If process exits quickly with code 0: return success
66
+ * - If process exits quickly with non-zero: return failure
67
+ * - If process is still running after successAfterMs: return success
68
+ * (for long-lived terminal processes)
69
+ */
70
+ async function tryLaunch(attempt) {
71
+ var _a;
72
+ const successAfterMs = (_a = attempt.successAfterMs) !== null && _a !== void 0 ? _a : 1500;
73
+ const detached = attempt.detached !== false;
74
+ return new Promise((resolve) => {
75
+ let settled = false;
76
+ let timer = null;
77
+ const cleanup = () => {
78
+ if (timer) {
79
+ clearTimeout(timer);
80
+ timer = null;
81
+ }
82
+ child.removeAllListeners('error');
83
+ child.removeAllListeners('exit');
84
+ };
85
+ const child = (0, node_child_process_1.spawn)(attempt.cmd, attempt.args, {
86
+ shell: false,
87
+ stdio: 'ignore',
88
+ detached,
89
+ });
90
+ if (detached) {
91
+ // Let the child process continue independently
92
+ child.unref();
93
+ }
94
+ child.once('error', (err) => {
95
+ if (settled)
96
+ return;
97
+ settled = true;
98
+ cleanup();
99
+ resolve({ success: false, error: formatSpawnError(err) });
100
+ });
101
+ child.once('exit', (code, signal) => {
102
+ if (settled)
103
+ return;
104
+ settled = true;
105
+ cleanup();
106
+ if (code === 0) {
107
+ resolve({ success: true });
108
+ }
109
+ else {
110
+ resolve({ success: false, error: formatExitFailure(code, signal) });
111
+ }
112
+ });
113
+ // If process is still running after timeout, consider it successful
114
+ timer = setTimeout(() => {
115
+ if (settled)
116
+ return;
117
+ settled = true;
118
+ cleanup();
119
+ resolve({ success: true });
120
+ }, successAfterMs);
121
+ });
122
+ }
123
+ /**
124
+ * Try multiple launch attempts in sequence until one succeeds.
125
+ */
126
+ async function runFallbackSequence(errorTitle, attempts) {
127
+ const errors = [];
128
+ for (const attempt of attempts) {
129
+ const result = await tryLaunch(attempt);
130
+ if (result.success) {
131
+ return;
132
+ }
133
+ errors.push(`${attempt.label}: ${result.error}`);
134
+ }
135
+ throw new Error(`${errorTitle}\n${errors.map((e) => ` - ${e}`).join('\n')}`);
136
+ }
137
+ // ============================================================
138
+ // VS Code
139
+ // ============================================================
140
+ /**
141
+ * Open directory in VS Code.
142
+ *
143
+ * Strategy:
144
+ * - All platforms: try 'code' command first
145
+ * - Windows: also try 'code.cmd'
146
+ * - macOS: fallback to 'open -b com.microsoft.VSCode'
147
+ */
148
+ async function openInVSCode(absolutePath) {
149
+ const platform = node_os_1.default.platform();
150
+ const attempts = [
151
+ {
152
+ label: 'code',
153
+ cmd: 'code',
154
+ args: [absolutePath],
155
+ successAfterMs: 8000, // VS Code takes time to start
156
+ },
157
+ ];
158
+ // Windows: code.cmd is the batch wrapper
159
+ if (platform === 'win32') {
160
+ attempts.push({
161
+ label: 'code.cmd',
162
+ cmd: 'code.cmd',
163
+ args: [absolutePath],
164
+ successAfterMs: 8000,
165
+ });
166
+ }
167
+ // macOS: fallback to bundle identifier
168
+ if (platform === 'darwin') {
169
+ attempts.push({
170
+ label: 'open -b com.microsoft.VSCode',
171
+ cmd: 'open',
172
+ args: ['-b', 'com.microsoft.VSCode', absolutePath],
173
+ successAfterMs: 3000,
174
+ });
175
+ }
176
+ await runFallbackSequence(`Failed to open VS Code for: ${absolutePath}`, attempts);
177
+ }
178
+ /**
179
+ * Open a file in VS Code at a specific line/column.
180
+ *
181
+ * Uses 'code -g file:line:col' syntax for goto functionality.
182
+ * Also opens the project root with -r to reuse existing window.
183
+ *
184
+ * Security:
185
+ * - Validates that file path stays within project root
186
+ * - Uses spawn with args array (no shell interpolation)
187
+ *
188
+ * @param projectRoot - Project root directory (for security validation and -r flag)
189
+ * @param filePath - File path (relative or absolute)
190
+ * @param line - Optional line number (1-based)
191
+ * @param column - Optional column number (1-based)
192
+ */
193
+ async function openFileInVSCode(projectRoot, filePath, line, column) {
194
+ var _a;
195
+ try {
196
+ // Validate project root
197
+ const projectValidation = await (0, project_service_1.validateRootPath)(projectRoot);
198
+ if (!projectValidation.valid) {
199
+ return {
200
+ success: false,
201
+ error: (_a = projectValidation.error) !== null && _a !== void 0 ? _a : 'Invalid project rootPath',
202
+ };
203
+ }
204
+ if (!projectValidation.exists) {
205
+ return {
206
+ success: false,
207
+ error: `Project directory does not exist: ${projectValidation.absolute}`,
208
+ };
209
+ }
210
+ const rootAbs = projectValidation.absolute;
211
+ // Validate file path
212
+ const trimmedFile = String(filePath !== null && filePath !== void 0 ? filePath : '').trim();
213
+ if (!trimmedFile) {
214
+ return { success: false, error: 'filePath is required' };
215
+ }
216
+ // Resolve file path with smart fallback
217
+ // Some frameworks (Vue/Vite) return paths like "/src/components/Foo.vue" which
218
+ // look absolute but are actually relative to project root. We try multiple strategies:
219
+ // 1. If path looks absolute and exists as-is, use it
220
+ // 2. Otherwise, strip leading slash and try as relative path
221
+ // 3. Finally, try as relative path directly
222
+ let absoluteFile = '';
223
+ let fileExists = false;
224
+ if (node_path_1.default.isAbsolute(trimmedFile)) {
225
+ // Try as true absolute path first
226
+ const asAbsolute = node_path_1.default.resolve(trimmedFile);
227
+ try {
228
+ const fileStat = await (0, promises_1.stat)(asAbsolute);
229
+ if (fileStat.isFile()) {
230
+ absoluteFile = asAbsolute;
231
+ fileExists = true;
232
+ }
233
+ }
234
+ catch (_b) {
235
+ // Not found as absolute path
236
+ }
237
+ // If not found and path starts with /, try stripping it and treating as relative
238
+ if (!fileExists && trimmedFile.startsWith('/')) {
239
+ const strippedPath = trimmedFile.slice(1);
240
+ const asRelative = node_path_1.default.resolve(rootAbs, strippedPath);
241
+ try {
242
+ const fileStat = await (0, promises_1.stat)(asRelative);
243
+ if (fileStat.isFile()) {
244
+ absoluteFile = asRelative;
245
+ fileExists = true;
246
+ }
247
+ }
248
+ catch (_c) {
249
+ // Not found as relative path either
250
+ }
251
+ }
252
+ // Default to absolute interpretation if nothing found
253
+ if (!absoluteFile) {
254
+ absoluteFile = node_path_1.default.resolve(trimmedFile);
255
+ }
256
+ }
257
+ else {
258
+ // Relative path - resolve against project root
259
+ absoluteFile = node_path_1.default.resolve(rootAbs, trimmedFile);
260
+ }
261
+ // Security: ensure file stays within project root
262
+ const relativeToRoot = node_path_1.default.relative(rootAbs, absoluteFile);
263
+ if (relativeToRoot.startsWith('..') || node_path_1.default.isAbsolute(relativeToRoot)) {
264
+ return { success: false, error: 'File path must be within project directory' };
265
+ }
266
+ // Check file exists
267
+ if (!fileExists) {
268
+ try {
269
+ const fileStat = await (0, promises_1.stat)(absoluteFile);
270
+ if (!fileStat.isFile()) {
271
+ return { success: false, error: `Not a file: ${absoluteFile}` };
272
+ }
273
+ }
274
+ catch (_d) {
275
+ return { success: false, error: `File does not exist: ${absoluteFile}` };
276
+ }
277
+ }
278
+ // Validate and sanitize line/column
279
+ const safeLine = typeof line === 'number' && Number.isFinite(line) && line > 0 ? Math.floor(line) : undefined;
280
+ const safeColumn = typeof column === 'number' && Number.isFinite(column) && column > 0
281
+ ? Math.floor(column)
282
+ : undefined;
283
+ // Build goto argument: file:line:col
284
+ let gotoArg = absoluteFile;
285
+ if (safeLine) {
286
+ gotoArg += `:${safeLine}`;
287
+ if (safeColumn) {
288
+ gotoArg += `:${safeColumn}`;
289
+ }
290
+ }
291
+ const platform = node_os_1.default.platform();
292
+ // Build launch attempts
293
+ // Use -r to reuse existing window, -g for goto
294
+ const attempts = [
295
+ {
296
+ label: 'code -r -g',
297
+ cmd: 'code',
298
+ args: ['-r', rootAbs, '-g', gotoArg],
299
+ successAfterMs: 8000,
300
+ },
301
+ ];
302
+ if (platform === 'win32') {
303
+ attempts.push({
304
+ label: 'code.cmd -r -g',
305
+ cmd: 'code.cmd',
306
+ args: ['-r', rootAbs, '-g', gotoArg],
307
+ successAfterMs: 8000,
308
+ });
309
+ }
310
+ if (platform === 'darwin') {
311
+ // macOS: use --args to pass flags to VS Code
312
+ attempts.push({
313
+ label: 'open -b com.microsoft.VSCode --args',
314
+ cmd: 'open',
315
+ args: ['-b', 'com.microsoft.VSCode', '--args', '-r', rootAbs, '-g', gotoArg],
316
+ successAfterMs: 3000,
317
+ });
318
+ }
319
+ await runFallbackSequence(`Failed to open VS Code for: ${gotoArg}`, attempts);
320
+ return { success: true };
321
+ }
322
+ catch (error) {
323
+ return { success: false, error: formatSpawnError(error) };
324
+ }
325
+ }
326
+ // ============================================================
327
+ // Terminal
328
+ // ============================================================
329
+ /**
330
+ * Open directory in system terminal.
331
+ */
332
+ async function openInTerminal(absolutePath) {
333
+ const platform = node_os_1.default.platform();
334
+ switch (platform) {
335
+ case 'darwin':
336
+ return openTerminalDarwin(absolutePath);
337
+ case 'win32':
338
+ return openTerminalWindows(absolutePath);
339
+ case 'linux':
340
+ return openTerminalLinux(absolutePath);
341
+ default:
342
+ throw new Error(`Unsupported platform: ${platform}`);
343
+ }
344
+ }
345
+ /**
346
+ * macOS: Open Terminal.app with directory.
347
+ */
348
+ async function openTerminalDarwin(absolutePath) {
349
+ await runFallbackSequence(`Failed to open Terminal for: ${absolutePath}`, [
350
+ {
351
+ label: 'open -a Terminal',
352
+ cmd: 'open',
353
+ args: ['-a', 'Terminal', absolutePath],
354
+ successAfterMs: 3000,
355
+ },
356
+ ]);
357
+ }
358
+ /**
359
+ * Windows: Open Windows Terminal or PowerShell.
360
+ */
361
+ async function openTerminalWindows(absolutePath) {
362
+ await runFallbackSequence(`Failed to open terminal for: ${absolutePath}`, [
363
+ // Windows Terminal (wt)
364
+ {
365
+ label: 'wt -d',
366
+ cmd: 'wt',
367
+ args: ['-d', absolutePath],
368
+ successAfterMs: 3000,
369
+ },
370
+ // PowerShell fallback - using -LiteralPath to handle special characters
371
+ // Use powershell.exe for better PATH compatibility
372
+ {
373
+ label: 'powershell.exe Set-Location',
374
+ cmd: 'powershell.exe',
375
+ args: ['-NoExit', '-Command', 'Set-Location -LiteralPath $args[0]', absolutePath],
376
+ successAfterMs: 1500,
377
+ },
378
+ ]);
379
+ }
380
+ /**
381
+ * Linux: Try common terminal emulators in sequence.
382
+ */
383
+ async function openTerminalLinux(absolutePath) {
384
+ await runFallbackSequence(`Failed to open terminal for: ${absolutePath}. Please install gnome-terminal, konsole, xfce4-terminal, or xterm.`, [
385
+ // GNOME Terminal
386
+ {
387
+ label: 'gnome-terminal',
388
+ cmd: 'gnome-terminal',
389
+ args: ['--working-directory', absolutePath],
390
+ successAfterMs: 3000,
391
+ },
392
+ // KDE Konsole
393
+ {
394
+ label: 'konsole',
395
+ cmd: 'konsole',
396
+ args: ['--workdir', absolutePath],
397
+ successAfterMs: 3000,
398
+ },
399
+ // XFCE Terminal
400
+ {
401
+ label: 'xfce4-terminal',
402
+ cmd: 'xfce4-terminal',
403
+ args: ['--working-directory', absolutePath],
404
+ successAfterMs: 3000,
405
+ },
406
+ // xterm (last resort)
407
+ {
408
+ label: 'xterm',
409
+ cmd: 'xterm',
410
+ // Use bash with positional parameter to safely pass the path
411
+ args: ['-e', 'bash', '-lc', 'cd -- "$1" && exec "${SHELL:-bash}"', '_', absolutePath],
412
+ successAfterMs: 3000,
413
+ },
414
+ ]);
415
+ }
416
+ // ============================================================
417
+ // Public API
418
+ // ============================================================
419
+ /**
420
+ * Open a project directory in the specified target application.
421
+ *
422
+ * @param rootPath - The project directory path
423
+ * @param target - 'vscode' or 'terminal'
424
+ * @returns Response indicating success or failure with error message
425
+ */
426
+ async function openProjectDirectory(rootPath, target) {
427
+ var _a;
428
+ try {
429
+ // Validate path security and existence
430
+ const validation = await (0, project_service_1.validateRootPath)(rootPath);
431
+ if (!validation.valid) {
432
+ return {
433
+ success: false,
434
+ error: (_a = validation.error) !== null && _a !== void 0 ? _a : 'Invalid project rootPath',
435
+ };
436
+ }
437
+ if (!validation.exists) {
438
+ return {
439
+ success: false,
440
+ error: `Directory does not exist: ${validation.absolute}`,
441
+ };
442
+ }
443
+ const absolutePath = validation.absolute;
444
+ // Open in target application
445
+ switch (target) {
446
+ case 'vscode':
447
+ await openInVSCode(absolutePath);
448
+ return { success: true };
449
+ case 'terminal':
450
+ await openInTerminal(absolutePath);
451
+ return { success: true };
452
+ default: {
453
+ // Type guard for exhaustive check
454
+ const _exhaustive = target;
455
+ return {
456
+ success: false,
457
+ error: `Unsupported target: ${String(_exhaustive)}`,
458
+ };
459
+ }
460
+ }
461
+ }
462
+ catch (error) {
463
+ return {
464
+ success: false,
465
+ error: formatSpawnError(error),
466
+ };
467
+ }
468
+ }
469
+ //# sourceMappingURL=open-project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-project.js","sourceRoot":"","sources":["../../src/agent/open-project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { AgentProject } from 'chrome-mcp-shared';
2
+ import type { CreateOrUpdateProjectInput } from './project-types';
3
+ /**
4
+ * Result of path validation.
5
+ */
6
+ export interface PathValidationResult {
7
+ valid: boolean;
8
+ absolute: string;
9
+ exists: boolean;
10
+ needsCreation: boolean;
11
+ error?: string;
12
+ }
13
+ /**
14
+ * Validate a root path without creating it.
15
+ * Returns validation result including whether directory needs creation.
16
+ */
17
+ export declare function validateRootPath(rootPath: string): Promise<PathValidationResult>;
18
+ /**
19
+ * Create a project directory after user confirmation.
20
+ * This should only be called after validateRootPath returns needsCreation: true.
21
+ */
22
+ export declare function createProjectDirectory(absolutePath: string): Promise<void>;
23
+ /**
24
+ * List all projects, sorted by last activity (most recent first).
25
+ */
26
+ export declare function listProjects(): Promise<AgentProject[]>;
27
+ /**
28
+ * Get a single project by ID.
29
+ */
30
+ export declare function getProject(id: string): Promise<AgentProject | undefined>;
31
+ /**
32
+ * Create or update a project.
33
+ */
34
+ export declare function upsertProject(input: CreateOrUpdateProjectInput): Promise<AgentProject>;
35
+ /**
36
+ * Delete a project by ID.
37
+ * Messages are automatically deleted via cascade.
38
+ */
39
+ export declare function deleteProject(id: string): Promise<void>;
40
+ /**
41
+ * Update the last activity timestamp for a project.
42
+ */
43
+ export declare function touchProjectActivity(id: string): Promise<void>;
44
+ /**
45
+ * Update the active Claude session ID for a project.
46
+ * This is called when the SDK returns a system/init message with a new session_id.
47
+ * Pass empty string or null to clear the session ID.
48
+ */
49
+ export declare function updateProjectClaudeSessionId(id: string, claudeSessionId: string | null): Promise<void>;