@sudu-cli/fronted-preview-mcp 1.0.0-beta.4 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/dist/handlers/autoFixLoop.d.ts +3 -10
- package/dist/handlers/autoFixLoop.js +10 -49
- package/dist/handlers/autoFixLoop.js.map +1 -1
- package/dist/handlers/click.d.ts +9 -0
- package/dist/handlers/click.js +93 -0
- package/dist/handlers/click.js.map +1 -0
- package/dist/handlers/fill.d.ts +10 -0
- package/dist/handlers/fill.js +129 -0
- package/dist/handlers/fill.js.map +1 -0
- package/dist/handlers/inspect.d.ts +11 -0
- package/dist/handlers/inspect.js +138 -0
- package/dist/handlers/inspect.js.map +1 -0
- package/dist/handlers/screenshot.d.ts +10 -0
- package/dist/handlers/screenshot.js +135 -0
- package/dist/handlers/screenshot.js.map +1 -0
- package/dist/handlers/typescriptDiagnostics.d.ts +9 -0
- package/dist/index.js +215 -0
- package/dist/index.js.map +1 -1
- package/dist/navigate.d.ts +9 -0
- package/dist/navigate.js +78 -0
- package/dist/navigate.js.map +1 -0
- package/dist/strategies/baseStrategy.d.ts +27 -0
- package/dist/strategies/baseStrategy.js +23 -0
- package/dist/strategies/baseStrategy.js.map +1 -0
- package/dist/strategies/index.d.ts +9 -0
- package/dist/strategies/index.js +22 -0
- package/dist/strategies/index.js.map +1 -0
- package/dist/strategies/missingImport.d.ts +16 -0
- package/dist/strategies/missingImport.js +156 -0
- package/dist/strategies/missingImport.js.map +1 -0
- package/dist/strategies/missingProperty.d.ts +13 -0
- package/dist/strategies/missingProperty.js +134 -0
- package/dist/strategies/missingProperty.js.map +1 -0
- package/dist/strategies/networkError.d.ts +10 -0
- package/dist/strategies/networkError.js +56 -0
- package/dist/strategies/networkError.js.map +1 -0
- package/dist/strategies/nullCheckInsertion.d.ts +14 -0
- package/dist/strategies/nullCheckInsertion.js +138 -0
- package/dist/strategies/nullCheckInsertion.js.map +1 -0
- package/dist/strategies/typeAssignment.d.ts +13 -0
- package/dist/strategies/typeAssignment.js +121 -0
- package/dist/strategies/typeAssignment.js.map +1 -0
- package/dist/strategies/unusedImportRemoval.d.ts +11 -0
- package/dist/strategies/unusedImportRemoval.js +138 -0
- package/dist/strategies/unusedImportRemoval.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { CDPConnectionManager } from '../cdp/connectionManager.js';
|
|
2
|
+
import { createMCPError, createMCPSuccess } from '../types.js';
|
|
3
|
+
export async function handleScreenshot(args) {
|
|
4
|
+
const { selector, format = 'png', quality = 80, fullPage = false, timeout = 10000 } = args;
|
|
5
|
+
const cdpManager = CDPConnectionManager.getInstance();
|
|
6
|
+
try {
|
|
7
|
+
// Connect to CDP if not already connected
|
|
8
|
+
const connection = await cdpManager.getConnection(9222);
|
|
9
|
+
// Wait for page to be ready if selector is specified
|
|
10
|
+
if (selector) {
|
|
11
|
+
const selectorStartTime = Date.now();
|
|
12
|
+
while (Date.now() - selectorStartTime < timeout) {
|
|
13
|
+
const result = await connection.send('Runtime.evaluate', {
|
|
14
|
+
expression: `document.querySelector('${selector}') !== null`
|
|
15
|
+
});
|
|
16
|
+
if (result.result && result.result.value === true) {
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
await new Promise(resolve => setTimeout(resolve, 100, undefined));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Take screenshot based on parameters
|
|
23
|
+
const screenshotParams = {
|
|
24
|
+
format: format,
|
|
25
|
+
quality: quality
|
|
26
|
+
};
|
|
27
|
+
if (fullPage) {
|
|
28
|
+
const metrics = await connection.send('Page.getLayoutMetrics');
|
|
29
|
+
if (metrics && metrics.cssLayoutViewport) {
|
|
30
|
+
screenshotParams.width = Math.ceil(metrics.cssLayoutViewport.clientWidth);
|
|
31
|
+
screenshotParams.height = Math.ceil(metrics.cssLayoutViewport.clientHeight);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
let screenshotData;
|
|
35
|
+
let size;
|
|
36
|
+
if (selector) {
|
|
37
|
+
// Take screenshot of specific element
|
|
38
|
+
const elementInfo = await connection.send('Runtime.evaluate', {
|
|
39
|
+
expression: `
|
|
40
|
+
const element = document.querySelector('${selector}');
|
|
41
|
+
const rect = element.getBoundingClientRect();
|
|
42
|
+
{
|
|
43
|
+
x: rect.left,
|
|
44
|
+
y: rect.top,
|
|
45
|
+
width: rect.width,
|
|
46
|
+
height: rect.height,
|
|
47
|
+
scrollX: window.pageXOffset,
|
|
48
|
+
scrollY: window.pageYOffset
|
|
49
|
+
}
|
|
50
|
+
`,
|
|
51
|
+
returnByValue: true
|
|
52
|
+
});
|
|
53
|
+
const rect = elementInfo.result.value;
|
|
54
|
+
// Scroll to element if needed
|
|
55
|
+
await connection.send('Runtime.evaluate', {
|
|
56
|
+
expression: `
|
|
57
|
+
const element = document.querySelector('${selector}');
|
|
58
|
+
element.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });
|
|
59
|
+
`
|
|
60
|
+
});
|
|
61
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
62
|
+
// Take screenshot of element
|
|
63
|
+
const screenshotResult = await connection.send('Page.captureScreenshot', {
|
|
64
|
+
...screenshotParams,
|
|
65
|
+
clip: {
|
|
66
|
+
x: rect.x,
|
|
67
|
+
y: rect.y,
|
|
68
|
+
width: rect.width,
|
|
69
|
+
height: rect.height,
|
|
70
|
+
scale: 1
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
screenshotData = screenshotResult.data;
|
|
74
|
+
size = {
|
|
75
|
+
width: rect.width,
|
|
76
|
+
height: rect.height
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Take full page screenshot
|
|
81
|
+
const screenshotResult = await connection.send('Page.captureScreenshot', screenshotParams);
|
|
82
|
+
screenshotData = screenshotResult.data;
|
|
83
|
+
if (fullPage) {
|
|
84
|
+
// For full page, we need to get the actual dimensions
|
|
85
|
+
const metrics = await connection.send('Page.getLayoutMetrics');
|
|
86
|
+
if (metrics && metrics.cssLayoutViewport) {
|
|
87
|
+
size = {
|
|
88
|
+
width: Math.ceil(metrics.cssLayoutViewport.clientWidth),
|
|
89
|
+
height: Math.ceil(metrics.cssLayoutViewport.clientHeight)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
size = {
|
|
94
|
+
width: 1920, // Default fallback
|
|
95
|
+
height: 1080 // Default fallback
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// For viewport screenshot, we need to get viewport dimensions
|
|
101
|
+
const viewport = await connection.send('Page.getLayoutMetrics');
|
|
102
|
+
if (viewport && viewport.cssLayoutViewport) {
|
|
103
|
+
size = {
|
|
104
|
+
width: viewport.cssLayoutViewport.clientWidth,
|
|
105
|
+
height: viewport.cssLayoutViewport.clientHeight
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
size = {
|
|
110
|
+
width: 1920, // Default fallback
|
|
111
|
+
height: 1080 // Default fallback
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
const result = {
|
|
117
|
+
screenshotSuccess: true,
|
|
118
|
+
format: format,
|
|
119
|
+
size: size,
|
|
120
|
+
selectorUsed: selector,
|
|
121
|
+
timestamp: new Date().toISOString()
|
|
122
|
+
};
|
|
123
|
+
// Return base64 encoded screenshot data
|
|
124
|
+
return createMCPSuccess({
|
|
125
|
+
message: 'Screenshot captured successfully',
|
|
126
|
+
...result,
|
|
127
|
+
data: screenshotData
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error('Screenshot error:', error);
|
|
132
|
+
return createMCPError('SCREENSHOT_ERROR', `Failed to capture screenshot: ${error instanceof Error ? error.message : String(error)}`, undefined, 'Check if Chrome is running with --remote-debugging-port=9222');
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=screenshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../src/handlers/screenshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,14 @@ interface GetTypeScriptDiagnosticsArgs {
|
|
|
5
5
|
files?: string[];
|
|
6
6
|
includeWarnings?: boolean;
|
|
7
7
|
}
|
|
8
|
+
export interface DiagnosticInfo {
|
|
9
|
+
file: string;
|
|
10
|
+
line: number;
|
|
11
|
+
column: number;
|
|
12
|
+
code: number;
|
|
13
|
+
message: string;
|
|
14
|
+
severity: 'error' | 'warning' | 'suggestion' | 'message';
|
|
15
|
+
category: 'typescript' | 'semantic' | 'syntactic' | 'declaration' | 'global' | 'config';
|
|
16
|
+
}
|
|
8
17
|
declare function handleGetTypeScriptDiagnostics(args: GetTypeScriptDiagnosticsArgs): Promise<MCPToolResponse>;
|
|
9
18
|
export { handleGetTypeScriptDiagnostics };
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,11 @@ import { handleQuickPreview } from './handlers/quickPreview.js';
|
|
|
10
10
|
import { handleCheckPageErrors } from './handlers/checkPageErrors.js';
|
|
11
11
|
import { handleGetTypeScriptDiagnostics } from './handlers/typescriptDiagnostics.js';
|
|
12
12
|
import { handleAutoFixLoop } from './handlers/autoFixLoop.js';
|
|
13
|
+
import { handleClick } from './handlers/click.js';
|
|
14
|
+
import { handleFill } from './handlers/fill.js';
|
|
15
|
+
import { handleNavigate } from './navigate.js';
|
|
16
|
+
import { handleScreenshot } from './handlers/screenshot.js';
|
|
17
|
+
import { handleInspect } from './handlers/inspect.js';
|
|
13
18
|
const server = new McpServer({
|
|
14
19
|
name: 'frontend-preview',
|
|
15
20
|
version: '1.0.0',
|
|
@@ -287,6 +292,216 @@ server.tool('auto_fix_loop', 'Automatically detect and fix frontend errors in an
|
|
|
287
292
|
return { content };
|
|
288
293
|
});
|
|
289
294
|
// ============================================================
|
|
295
|
+
// Tool: click
|
|
296
|
+
// ============================================================
|
|
297
|
+
server.tool('click', 'Click on a page element using CSS selector or XPath. ' +
|
|
298
|
+
'Supports left, right, and middle clicks with optional click count. ' +
|
|
299
|
+
'Waits for element to be available and clickable before performing the action.\n\n' +
|
|
300
|
+
'Returns { elementFound, elementClickable, clickSuccess, elementInfo, timestamp }.\n\n' +
|
|
301
|
+
'WHEN TO USE:\n' +
|
|
302
|
+
'- User wants to interact with page elements\n' +
|
|
303
|
+
'- Testing button clicks, link navigation\n' +
|
|
304
|
+
'- Automating form interactions\n\n' +
|
|
305
|
+
'PREREQUISITE:\n' +
|
|
306
|
+
'- Chrome must be running with --remote-debugging-port=9222\n' +
|
|
307
|
+
'- Page must be loaded before calling this tool\n\n' +
|
|
308
|
+
'AFTER THIS TOOL:\n' +
|
|
309
|
+
'- Check elementInfo for clicked element details\n' +
|
|
310
|
+
'- Use take_snapshot to verify page state after click', {
|
|
311
|
+
selector: z
|
|
312
|
+
.string()
|
|
313
|
+
.describe('CSS selector or XPath of the element to click (e.g., "#submit-btn", ".login-button", "//button[@id=\'submit\']")'),
|
|
314
|
+
timeout: z
|
|
315
|
+
.number()
|
|
316
|
+
.min(1000)
|
|
317
|
+
.max(30000)
|
|
318
|
+
.optional()
|
|
319
|
+
.describe('Milliseconds to wait for element availability. Defaults to 5000.'),
|
|
320
|
+
button: z
|
|
321
|
+
.enum(['left', 'right', 'middle'])
|
|
322
|
+
.optional()
|
|
323
|
+
.describe('Mouse button to use. Defaults to "left".'),
|
|
324
|
+
clickCount: z
|
|
325
|
+
.number()
|
|
326
|
+
.min(1)
|
|
327
|
+
.max(5)
|
|
328
|
+
.optional()
|
|
329
|
+
.describe('Number of times to click. Defaults to 1.'),
|
|
330
|
+
}, async (args) => {
|
|
331
|
+
return await handleClick(args);
|
|
332
|
+
});
|
|
333
|
+
// ============================================================
|
|
334
|
+
// Tool: fill
|
|
335
|
+
// ============================================================
|
|
336
|
+
server.tool('fill', 'Fill form input fields with specified values. ' +
|
|
337
|
+
'Supports text inputs, textareas, and select dropdowns. ' +
|
|
338
|
+
'Can clear fields first and add delays for React/Vue reactivity.\n\n' +
|
|
339
|
+
'Returns { elementFound, elementInputType, fillSuccess, elementInfo, timestamp }.\n\n' +
|
|
340
|
+
'WHEN TO USE:\n' +
|
|
341
|
+
'- User wants to fill out forms automatically\n' +
|
|
342
|
+
'- Testing form submissions\n' +
|
|
343
|
+
'- Automating data entry workflows\n\n' +
|
|
344
|
+
'PREREQUISITE:\n' +
|
|
345
|
+
'- Chrome must be running with --remote-debugging-port=9222\n' +
|
|
346
|
+
'- Page must be loaded before calling this tool\n\n' +
|
|
347
|
+
'AFTER THIS TOOL:\n' +
|
|
348
|
+
'- Verify fillSuccess to ensure value was set correctly\n' +
|
|
349
|
+
'- Use take_snapshot to check form state', {
|
|
350
|
+
selector: z
|
|
351
|
+
.string()
|
|
352
|
+
.describe('CSS selector of the input field to fill (e.g., "#username", "#email", ".form-input")'),
|
|
353
|
+
value: z
|
|
354
|
+
.string()
|
|
355
|
+
.describe('Value to set in the input field'),
|
|
356
|
+
timeout: z
|
|
357
|
+
.number()
|
|
358
|
+
.min(1000)
|
|
359
|
+
.max(30000)
|
|
360
|
+
.optional()
|
|
361
|
+
.describe('Milliseconds to wait for element availability. Defaults to 5000.'),
|
|
362
|
+
clearFirst: z
|
|
363
|
+
.boolean()
|
|
364
|
+
.optional()
|
|
365
|
+
.describe('Clear the field before filling. Defaults to true.'),
|
|
366
|
+
delay: z
|
|
367
|
+
.number()
|
|
368
|
+
.min(0)
|
|
369
|
+
.max(5000)
|
|
370
|
+
.optional()
|
|
371
|
+
.describe('Delay in milliseconds after filling to allow React/Vue reactivity. Defaults to 100.'),
|
|
372
|
+
}, async (args) => {
|
|
373
|
+
return await handleFill(args);
|
|
374
|
+
});
|
|
375
|
+
// ============================================================
|
|
376
|
+
// Tool: navigate
|
|
377
|
+
// ============================================================
|
|
378
|
+
server.tool('navigate', 'Navigate to a specific URL and wait for page load. ' +
|
|
379
|
+
'Supports different wait conditions and optional selector waiting.\n\n' +
|
|
380
|
+
'Returns { navigationSuccess, pageLoaded, loadTime, finalUrl, title, waitForSelectorFound, timestamp }.\n\n' +
|
|
381
|
+
'WHEN TO USE:\n' +
|
|
382
|
+
'- User wants to navigate to specific pages\n' +
|
|
383
|
+
'- Testing multi-page applications\n' +
|
|
384
|
+
'- Setting up page state before other actions\n\n' +
|
|
385
|
+
'PREREQUISITE:\n' +
|
|
386
|
+
'- Chrome must be running with --remote-debugging-port=9222\n\n' +
|
|
387
|
+
'AFTER THIS TOOL:\n' +
|
|
388
|
+
'- Use take_snapshot to verify page loaded correctly\n' +
|
|
389
|
+
'- Check loadTime for performance metrics\n' +
|
|
390
|
+
'- Use other tools to interact with the loaded page', {
|
|
391
|
+
url: z
|
|
392
|
+
.string()
|
|
393
|
+
.describe('URL to navigate to (e.g., "https://example.com", "/dashboard")'),
|
|
394
|
+
timeout: z
|
|
395
|
+
.number()
|
|
396
|
+
.min(1000)
|
|
397
|
+
.max(60000)
|
|
398
|
+
.optional()
|
|
399
|
+
.describe('Milliseconds to wait for navigation. Defaults to 10000.'),
|
|
400
|
+
waitUntil: z
|
|
401
|
+
.enum(['load', 'domcontentloaded', 'networkidle', 'commit'])
|
|
402
|
+
.optional()
|
|
403
|
+
.describe('When to consider navigation complete. Defaults to "load".'),
|
|
404
|
+
waitForSelector: z
|
|
405
|
+
.string()
|
|
406
|
+
.optional()
|
|
407
|
+
.describe('Optional CSS selector to wait for after navigation.'),
|
|
408
|
+
}, async (args) => {
|
|
409
|
+
return await handleNavigate(args);
|
|
410
|
+
});
|
|
411
|
+
// ============================================================
|
|
412
|
+
// Tool: screenshot
|
|
413
|
+
// ============================================================
|
|
414
|
+
server.tool('screenshot', 'Capture screenshots of the page or specific elements. ' +
|
|
415
|
+
'Supports full page, viewport, and element-specific screenshots. ' +
|
|
416
|
+
'Multiple formats and quality options available.\n\n' +
|
|
417
|
+
'Returns { screenshotSuccess, format, size, selectorUsed, timestamp, data }.\n\n' +
|
|
418
|
+
'WHEN TO USE:\n' +
|
|
419
|
+
'- User wants visual documentation of page state\n' +
|
|
420
|
+
-'Capturing error states or UI issues\n' +
|
|
421
|
+
'- Creating visual test reports\n\n' +
|
|
422
|
+
'PREREQUISITE:\n' +
|
|
423
|
+
'- Chrome must be running with --remote-debugging-port=9222\n' +
|
|
424
|
+
'- Page must be loaded before calling this tool\n\n' +
|
|
425
|
+
'AFTER THIS TOOL:\n' +
|
|
426
|
+
'- Use base64 data to save or display the screenshot\n' +
|
|
427
|
+
'- Check size for dimension information\n' +
|
|
428
|
+
'- Combine with element inspection for detailed UI analysis', {
|
|
429
|
+
selector: z
|
|
430
|
+
.string()
|
|
431
|
+
.optional()
|
|
432
|
+
.describe('Optional CSS selector of element to screenshot. If omitted, captures full page or viewport.'),
|
|
433
|
+
format: z
|
|
434
|
+
.enum(['png', 'jpeg', 'webp'])
|
|
435
|
+
.optional()
|
|
436
|
+
.describe('Image format. Defaults to "png".'),
|
|
437
|
+
quality: z
|
|
438
|
+
.number()
|
|
439
|
+
.min(0)
|
|
440
|
+
.max(100)
|
|
441
|
+
.optional()
|
|
442
|
+
.describe('Image quality (0-100). Only applies to JPEG/WebP. Defaults to 80.'),
|
|
443
|
+
fullPage: z
|
|
444
|
+
.boolean()
|
|
445
|
+
.optional()
|
|
446
|
+
.describe('Capture full page instead of viewport. Defaults to false.'),
|
|
447
|
+
timeout: z
|
|
448
|
+
.number()
|
|
449
|
+
.min(1000)
|
|
450
|
+
.max(30000)
|
|
451
|
+
.optional()
|
|
452
|
+
.describe('Milliseconds to wait for element availability if selector is specified. Defaults to 10000.'),
|
|
453
|
+
}, async (args) => {
|
|
454
|
+
return await handleScreenshot(args);
|
|
455
|
+
});
|
|
456
|
+
// ============================================================
|
|
457
|
+
// Tool: inspect
|
|
458
|
+
// ============================================================
|
|
459
|
+
server.tool('inspect', 'Get detailed information about a page element. ' +
|
|
460
|
+
'Returns comprehensive element data including attributes, styles, ' +
|
|
461
|
+
'position, children, and accessibility information.\n\n' +
|
|
462
|
+
'Returns { elementFound, elementInfo, timestamp }.\n\n' +
|
|
463
|
+
'WHEN TO USE:\n' +
|
|
464
|
+
'- User wants detailed element information for debugging\n' +
|
|
465
|
+
'- Understanding page structure and element properties\n' +
|
|
466
|
+
'- Debugging CSS styling and layout issues\n\n' +
|
|
467
|
+
'PREREQUISITE:\n' +
|
|
468
|
+
'- Chrome must be running with --remote-debugging-port=9222\n' +
|
|
469
|
+
'- Page must be loaded before calling this tool\n\n' +
|
|
470
|
+
'AFTER THIS TOOL:\n' +
|
|
471
|
+
'- Use elementInfo for detailed debugging\n' +
|
|
472
|
+
'- Combine with screenshot to understand visual context\n' +
|
|
473
|
+
'- Use for CSS debugging and layout analysis', {
|
|
474
|
+
selector: z
|
|
475
|
+
.string()
|
|
476
|
+
.describe('CSS selector or XPath of element to inspect (e.g., ".header", "#main-content", "//div[@class=\'container\']")'),
|
|
477
|
+
timeout: z
|
|
478
|
+
.number()
|
|
479
|
+
.min(1000)
|
|
480
|
+
.max(30000)
|
|
481
|
+
.optional()
|
|
482
|
+
.describe('Milliseconds to wait for element availability. Defaults to 5000.'),
|
|
483
|
+
includeStyles: z
|
|
484
|
+
.boolean()
|
|
485
|
+
.optional()
|
|
486
|
+
.describe('Include computed CSS styles. Defaults to true.'),
|
|
487
|
+
includeAttributes: z
|
|
488
|
+
.boolean()
|
|
489
|
+
.optional()
|
|
490
|
+
.describe('Include element attributes. Defaults to true.'),
|
|
491
|
+
includeChildren: z
|
|
492
|
+
.boolean()
|
|
493
|
+
.optional()
|
|
494
|
+
.describe('Include child elements. Defaults to false.'),
|
|
495
|
+
maxDepth: z
|
|
496
|
+
.number()
|
|
497
|
+
.min(0)
|
|
498
|
+
.max(5)
|
|
499
|
+
.optional()
|
|
500
|
+
.describe('Maximum depth for children traversal. Defaults to 2.'),
|
|
501
|
+
}, async (args) => {
|
|
502
|
+
return await handleInspect(args);
|
|
503
|
+
});
|
|
504
|
+
// ============================================================
|
|
290
505
|
// Server startup
|
|
291
506
|
// ============================================================
|
|
292
507
|
export async function main() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,6DAA6D;IAC3D,kFAAkF;IAClF,6EAA6E;IAC7E,+DAA+D;IAC/D,gBAAgB;IAChB,oEAAoE;IACpE,uEAAuE;IACvE,oBAAoB;IACpB,yEAAyE;IACzE,wEAAwE;IACxE,oBAAoB;IACpB,+EAA+E;IAC/E,iEAAiE,EACnE;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,yFAAyF,CAC1F;CACJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kEAAkE;IAChE,sEAAsE;IACtE,wDAAwD;IACxD,sDAAsD;IACtD,gBAAgB;IAChB,oEAAoE;IACpE,kDAAkD;IAClD,oBAAoB;IACpB,6EAA6E;IAC7E,4DAA4D;IAC5D,oBAAoB;IACpB,8DAA8D;IAC9D,yDAAyD;IACzD,qDAAqD,EACvD;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,gEAAgE,CACjE;CACJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,oEAAoE;IAClE,mDAAmD;IACnD,gDAAgD;IAChD,gBAAgB;IAChB,gEAAgE;IAChE,oBAAoB;IACpB,gFAAgF;IAChF,0CAA0C,EAC5C,EAAE,EACF,KAAK,IAAI,EAAE;IACT,OAAO,MAAM,mBAAmB,EAAE,CAAC;AACrC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,eAAe,EACf,0DAA0D;IACxD,qEAAqE;IACrE,oDAAoD;IACpD,kEAAkE;IAClE,4BAA4B;IAC5B,+DAA+D;IAC/D,2DAA2D;IAC3D,oDAAoD;IACpD,oDAAoD;IACpD,oBAAoB;IACpB,8DAA8D;IAC9D,0DAA0D;IAC1D,qFAAqF;IACrF,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,2EAA2E;IAC3E,oCAAoC;IACpC,gFAAgF;IAChF,mFAAmF;IACnF,qEAAqE;IACrE,gEAAgE,EAClE;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yFAAyF,CAAC;IACtG,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0FAA0F,CAAC;CACxG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,0BAA0B;AAC1B,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,+DAA+D;IAC7D,yEAAyE;IACzE,iEAAiE;IACjE,4DAA4D;IAC5D,8EAA8E;IAC9E,2CAA2C;IAC3C,oHAAoH;IACpH,gBAAgB;IAChB,2DAA2D;IAC3D,4DAA4D;IAC5D,sCAAsC;IACtC,iBAAiB;IACjB,8DAA8D;IAC9D,2FAA2F;IAC3F,oBAAoB;IACpB,4DAA4D;IAC5D,8CAA8C;IAC9C,gEAAgE;IAChE,6EAA6E,EAC/E;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yFAAyF,CAAC;IACtG,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,mCAAmC;AACnC,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,6EAA6E;IAC3E,4EAA4E;IAC5E,2GAA2G;IAC3G,gBAAgB;IAChB,oDAAoD;IACpD,iDAAiD;IACjD,kCAAkC;IAClC,4CAA4C;IAC5C,iBAAiB;IACjB,6CAA6C;IAC7C,uDAAuD;IACvD,oBAAoB;IACpB,kDAAkD;IAClD,4BAA4B;IAC5B,0DAA0D,EAC5D;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yFAAyF,CAAC;IACtG,YAAY,EAAE,CAAC;SACZ,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,8EAA8E,CAAC;IAC3F,KAAK,EAAE,CAAC;SACL,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,gGAAgG,CAAC;IAC7G,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,8BAA8B,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC,CACF,CAAC;AAIF,+DAA+D;AAC/D,sBAAsB;AACtB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,eAAe,EACf,qEAAqE;IACnE,uEAAuE;IACvE,+EAA+E;IAC/E,+CAA+C;IAC/C,oGAAoG;IACpG,gBAAgB;IAChB,yDAAyD;IACzD,2DAA2D;IAC3D,+CAA+C;IAC/C,qCAAqC;IACrC,iBAAiB;IACjB,4FAA4F;IAC5F,kEAAkE;IAClE,2FAA2F;IAC3F,oBAAoB;IACpB,yDAAyD;IACzD,2DAA2D;IAC3D,gEAAgE;IAChE,2EAA2E;IAC3E,kDAAkD,EACpD;IACE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yFAAyF,CAAC;IACtG,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,oDAAoD,CAAC;IACjE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,mBAAmB,EAAE,CAAC;SACnB,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,MAAM,CAAC;SACX,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,aAAa,EAAE,CAAC;SACb,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,YAAY,EAAE,CAAC;SACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,4EAA4E,CAAC;IACzF,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CAAC,gIAAgI,CAAC;CAC9I,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG;QACd;YACE,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,4BAA4B;gBAC5B,eAAe,MAAM,CAAC,UAAU,IAAI;gBACpC,iBAAiB,MAAM,CAAC,WAAW,IAAI;gBACvC,qBAAqB,MAAM,CAAC,eAAe,IAAI;gBAC/C,YAAY,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM;gBAC5C,cAAc,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACjD;KACF,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,cAAc,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,qBAAqB,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC/G,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,OAAO,EACP,uDAAuD;IACrD,qEAAqE;IACrE,mFAAmF;IACnF,uFAAuF;IACvF,gBAAgB;IAChB,+CAA+C;IAC/C,4CAA4C;IAC5C,oCAAoC;IACpC,iBAAiB;IACjB,8DAA8D;IAC9D,oDAAoD;IACpD,oBAAoB;IACpB,mDAAmD;IACnD,sDAAsD,EACxD;IACE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,kHAAkH,CAAC;IAC/H,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACjC,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,aAAa;AACb,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,MAAM,EACN,gDAAgD;IAC9C,yDAAyD;IACzD,qEAAqE;IACrE,sFAAsF;IACtF,gBAAgB;IAChB,gDAAgD;IAChD,8BAA8B;IAC9B,uCAAuC;IACvC,iBAAiB;IACjB,8DAA8D;IAC9D,oDAAoD;IACpD,oBAAoB;IACpB,0DAA0D;IAC1D,yCAAyC,EAC3C;IACE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,sFAAsF,CAAC;IACnG,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,IAAI,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,qFAAqF,CAAC;CACnG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,UAAU,EACV,qDAAqD;IACnD,uEAAuE;IACvE,4GAA4G;IAC5G,gBAAgB;IAChB,8CAA8C;IAC9C,qCAAqC;IACrC,kDAAkD;IAClD,iBAAiB;IACjB,gEAAgE;IAChE,oBAAoB;IACpB,uDAAuD;IACvD,4CAA4C;IAC5C,oDAAoD,EACtD;IACE,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;IACtE,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;SAC3D,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,wDAAwD;IACtD,kEAAkE;IAClE,qDAAqD;IACrD,iFAAiF;IACjF,gBAAgB;IAChB,mDAAmD;IACnD,CAAE,uCAAuC;IACzC,oCAAoC;IACpC,iBAAiB;IACjB,8DAA8D;IAC9D,oDAAoD;IACpD,oBAAoB;IACpB,uDAAuD;IACvD,0CAA0C;IAC1C,4DAA4D,EAC9D;IACE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6FAA6F,CAAC;IAC1G,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SAC7B,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAC/C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mEAAmE,CAAC;IAChF,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,4FAA4F,CAAC;CAC1G,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAC/D,MAAM,CAAC,IAAI,CACT,SAAS,EACT,iDAAiD;IAC/C,mEAAmE;IACnE,wDAAwD;IACxD,uDAAuD;IACvD,gBAAgB;IAChB,2DAA2D;IAC3D,yDAAyD;IACzD,+CAA+C;IAC/C,iBAAiB;IACjB,8DAA8D;IAC9D,oDAAoD;IACpD,oBAAoB;IACpB,4CAA4C;IAC5C,0DAA0D;IAC1D,6CAA6C,EAC/C;IACE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,CAAC,+GAA+G,CAAC;IAC5H,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,aAAa,EAAE,CAAC;SACb,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,iBAAiB,EAAE,CAAC;SACjB,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,eAAe,EAAE,CAAC;SACf,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,4CAA4C,CAAC;IACzD,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;CACpE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CACF,CAAC;AAEF,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,yEAAyE;AACzE,MAAM,YAAY,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjF,IAAI,YAAY,EAAE,CAAC;IACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { MCPToolResponse } from './types.js';
|
|
2
|
+
interface NavigateArgs {
|
|
3
|
+
url: string;
|
|
4
|
+
timeout?: number;
|
|
5
|
+
waitUntil?: 'load' | 'domcontentloaded' | 'networkidle' | 'commit';
|
|
6
|
+
waitForSelector?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function handleNavigate(args: NavigateArgs): Promise<MCPToolResponse>;
|
|
9
|
+
export {};
|
package/dist/navigate.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CDPConnectionManager } from './cdp/connectionManager.js';
|
|
2
|
+
import { createMCPError, createMCPSuccess } from './types.js';
|
|
3
|
+
export async function handleNavigate(args) {
|
|
4
|
+
const { url, timeout = 10000, waitUntil = 'load', waitForSelector } = args;
|
|
5
|
+
const cdpManager = CDPConnectionManager.getInstance();
|
|
6
|
+
try {
|
|
7
|
+
// Connect to CDP if not already connected
|
|
8
|
+
const connection = await cdpManager.getConnection(9222);
|
|
9
|
+
const startTime = Date.now();
|
|
10
|
+
// Navigate to the URL
|
|
11
|
+
await connection.send('Page.navigate', {
|
|
12
|
+
url: url
|
|
13
|
+
});
|
|
14
|
+
// Wait for page load based on waitUntil parameter
|
|
15
|
+
let pageLoaded = false;
|
|
16
|
+
const loadTimeout = timeout;
|
|
17
|
+
const loadStartTime = Date.now();
|
|
18
|
+
while (Date.now() - loadStartTime < loadTimeout) {
|
|
19
|
+
const result = await connection.send('Page.getNavigationHistory');
|
|
20
|
+
if (result.entries && result.entries.length > 0) {
|
|
21
|
+
const currentEntry = result.entries[result.currentIndex];
|
|
22
|
+
if (currentEntry.url === url) {
|
|
23
|
+
pageLoaded = true;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
await new Promise(resolve => setTimeout(resolve, 100, undefined));
|
|
28
|
+
}
|
|
29
|
+
if (!pageLoaded) {
|
|
30
|
+
return createMCPError('TIMEOUT', `Navigation to ${url} timed out after ${timeout}ms`, undefined, 'Check if the page is loading properly');
|
|
31
|
+
}
|
|
32
|
+
// Wait for additional conditions if specified
|
|
33
|
+
let waitForSelectorFound = false;
|
|
34
|
+
if (waitForSelector) {
|
|
35
|
+
const selectorTimeout = Math.min(5000, timeout - (Date.now() - loadStartTime));
|
|
36
|
+
const selectorStartTime = Date.now();
|
|
37
|
+
while (Date.now() - selectorStartTime < selectorTimeout) {
|
|
38
|
+
const result = await connection.send('Runtime.evaluate', {
|
|
39
|
+
expression: `document.querySelector('${waitForSelector}') !== null`
|
|
40
|
+
});
|
|
41
|
+
if (result.result && result.result.value === true) {
|
|
42
|
+
waitForSelectorFound = true;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
await new Promise(resolve => setTimeout(resolve, 100, undefined));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Get final page info
|
|
49
|
+
const pageInfo = await connection.send('Runtime.evaluate', {
|
|
50
|
+
expression: `
|
|
51
|
+
{
|
|
52
|
+
url: window.location.href,
|
|
53
|
+
title: document.title,
|
|
54
|
+
readyState: document.readyState,
|
|
55
|
+
loadTime: Date.now() - ${startTime}
|
|
56
|
+
}
|
|
57
|
+
`,
|
|
58
|
+
returnByValue: true
|
|
59
|
+
});
|
|
60
|
+
const pageInfoData = pageInfo.result.value;
|
|
61
|
+
const loadTime = Date.now() - startTime;
|
|
62
|
+
const result = {
|
|
63
|
+
navigationSuccess: true,
|
|
64
|
+
pageLoaded: pageLoaded,
|
|
65
|
+
loadTime: loadTime,
|
|
66
|
+
finalUrl: pageInfoData.url,
|
|
67
|
+
title: pageInfoData.title,
|
|
68
|
+
waitForSelectorFound: waitForSelectorFound,
|
|
69
|
+
timestamp: new Date().toISOString()
|
|
70
|
+
};
|
|
71
|
+
return createMCPSuccess({ message: 'Navigation completed successfully', ...result });
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('Navigation error:', error);
|
|
75
|
+
return createMCPError('PAGE_NAVIGATION_FAILED', `Failed to navigate to ${url}: ${error instanceof Error ? error.message : String(error)}`, undefined, 'Check if Chrome is running with --remote-debugging-port=9222');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=navigate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigate.js","sourceRoot":"","sources":["../src/navigate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Project, SourceFile } from 'ts-morph';
|
|
2
|
+
import { DiagnosticInfo } from '../handlers/typescriptDiagnostics.js';
|
|
3
|
+
import { ConsoleError } from '../handlers/autoFixLoop.js';
|
|
4
|
+
export interface FixContext {
|
|
5
|
+
projectDir: string;
|
|
6
|
+
project: Project;
|
|
7
|
+
tsConfigPath: string;
|
|
8
|
+
}
|
|
9
|
+
export interface FixResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
message: string;
|
|
12
|
+
changes: Array<{
|
|
13
|
+
file: string;
|
|
14
|
+
description: string;
|
|
15
|
+
diff?: string;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export interface FixStrategy {
|
|
19
|
+
errorType: 'typescript' | 'console' | 'network';
|
|
20
|
+
pattern: RegExp;
|
|
21
|
+
canFix(error: DiagnosticInfo | ConsoleError): boolean;
|
|
22
|
+
fix(context: FixContext, error: DiagnosticInfo | ConsoleError): Promise<FixResult>;
|
|
23
|
+
}
|
|
24
|
+
export declare function createFixContext(projectDir: string, tsConfigPath: string): FixContext;
|
|
25
|
+
export declare function saveChanges(context: FixContext): void;
|
|
26
|
+
export declare function getSourceFile(context: FixContext, filePath: string): SourceFile | undefined;
|
|
27
|
+
export declare function getRelativePath(context: FixContext, filePath: string): string;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Project } from 'ts-morph';
|
|
2
|
+
export function createFixContext(projectDir, tsConfigPath) {
|
|
3
|
+
const project = new Project({
|
|
4
|
+
tsConfigFilePath: tsConfigPath,
|
|
5
|
+
skipAddingFilesFromTsConfig: false,
|
|
6
|
+
skipFileDependencyResolution: true,
|
|
7
|
+
skipLoadingLibFiles: true,
|
|
8
|
+
});
|
|
9
|
+
return { projectDir, project, tsConfigPath };
|
|
10
|
+
}
|
|
11
|
+
export function saveChanges(context) {
|
|
12
|
+
context.project.saveSync();
|
|
13
|
+
}
|
|
14
|
+
export function getSourceFile(context, filePath) {
|
|
15
|
+
const fullPath = filePath.startsWith('/') ? filePath : `${context.projectDir}/${filePath}`;
|
|
16
|
+
return context.project.getSourceFile(fullPath);
|
|
17
|
+
}
|
|
18
|
+
export function getRelativePath(context, filePath) {
|
|
19
|
+
const fullPath = filePath.startsWith('/') ? filePath : `${context.projectDir}/${filePath}`;
|
|
20
|
+
const relative = fullPath.replace(context.projectDir + '/', '');
|
|
21
|
+
return relative;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=baseStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"baseStrategy.js","sourceRoot":"","sources":["../../src/strategies/baseStrategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2N,MAAM,UAAU,CAAC;AAuB5P,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,YAAoB;IACvE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,gBAAgB,EAAE,YAAY;QAC9B,2BAA2B,EAAE,KAAK;QAClC,4BAA4B,EAAE,IAAI;QAClC,mBAAmB,EAAE,IAAI;KAC1B,CAAC,CAAC;IACH,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAmB;IAC7C,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAmB,EAAE,QAAgB;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAC3F,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAmB,EAAE,QAAgB;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;IAC3F,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './baseStrategy.js';
|
|
2
|
+
export { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
|
|
3
|
+
export { missingPropertyStrategy } from './missingProperty.js';
|
|
4
|
+
export { typeAssignmentStrategy } from './typeAssignment.js';
|
|
5
|
+
export { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
|
|
6
|
+
export { missingImportStrategy } from './missingImport.js';
|
|
7
|
+
export { networkErrorStrategy } from './networkError.js';
|
|
8
|
+
import { FixStrategy } from './baseStrategy.js';
|
|
9
|
+
export declare const defaultFixStrategies: FixStrategy[];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export * from './baseStrategy.js';
|
|
2
|
+
export { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
|
|
3
|
+
export { missingPropertyStrategy } from './missingProperty.js';
|
|
4
|
+
export { typeAssignmentStrategy } from './typeAssignment.js';
|
|
5
|
+
export { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
|
|
6
|
+
export { missingImportStrategy } from './missingImport.js';
|
|
7
|
+
export { networkErrorStrategy } from './networkError.js';
|
|
8
|
+
import { unusedImportRemovalStrategy } from './unusedImportRemoval.js';
|
|
9
|
+
import { missingPropertyStrategy } from './missingProperty.js';
|
|
10
|
+
import { typeAssignmentStrategy } from './typeAssignment.js';
|
|
11
|
+
import { nullCheckInsertionStrategy } from './nullCheckInsertion.js';
|
|
12
|
+
import { missingImportStrategy } from './missingImport.js';
|
|
13
|
+
import { networkErrorStrategy } from './networkError.js';
|
|
14
|
+
export const defaultFixStrategies = [
|
|
15
|
+
unusedImportRemovalStrategy,
|
|
16
|
+
missingPropertyStrategy,
|
|
17
|
+
typeAssignmentStrategy,
|
|
18
|
+
nullCheckInsertionStrategy,
|
|
19
|
+
missingImportStrategy,
|
|
20
|
+
networkErrorStrategy,
|
|
21
|
+
];
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/strategies/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,2BAA2B;IAC3B,uBAAuB;IACvB,sBAAsB;IACtB,0BAA0B;IAC1B,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { FixStrategy, FixContext, FixResult } from './baseStrategy.js';
|
|
2
|
+
import { DiagnosticInfo } from '../handlers/typescriptDiagnostics.js';
|
|
3
|
+
import { ConsoleError } from '../handlers/autoFixLoop.js';
|
|
4
|
+
export declare class MissingImportStrategy implements FixStrategy {
|
|
5
|
+
errorType: "typescript";
|
|
6
|
+
pattern: RegExp;
|
|
7
|
+
canFix(error: DiagnosticInfo | ConsoleError): boolean;
|
|
8
|
+
fix(context: FixContext, error: DiagnosticInfo | ConsoleError): Promise<FixResult>;
|
|
9
|
+
private addImportFromModule;
|
|
10
|
+
private findAndAddImport;
|
|
11
|
+
private getExportedSymbols;
|
|
12
|
+
private getModuleSpecifier;
|
|
13
|
+
private getRelativeImportPath;
|
|
14
|
+
private generateDiff;
|
|
15
|
+
}
|
|
16
|
+
export declare const missingImportStrategy: MissingImportStrategy;
|