real-browser-mcp-server 1.2.0 → 1.2.2

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 (120) hide show
  1. package/README.md +96 -9
  2. package/dist/lib/cjs/index.d.ts +2 -0
  3. package/dist/lib/cjs/index.d.ts.map +1 -0
  4. package/dist/lib/cjs/index.js +385 -0
  5. package/dist/lib/cjs/index.js.map +1 -0
  6. package/dist/lib/cjs/module/pageController.d.ts +2 -0
  7. package/dist/lib/cjs/module/pageController.d.ts.map +1 -0
  8. package/{lib → dist/lib}/cjs/module/pageController.js +28 -29
  9. package/dist/lib/cjs/module/pageController.js.map +1 -0
  10. package/dist/lib/cjs/module/turnstile.d.ts +2 -0
  11. package/dist/lib/cjs/module/turnstile.d.ts.map +1 -0
  12. package/{lib → dist/lib}/cjs/module/turnstile.js +24 -12
  13. package/dist/lib/cjs/module/turnstile.js.map +1 -0
  14. package/dist/src/index.d.ts +11 -0
  15. package/dist/src/index.d.ts.map +1 -0
  16. package/dist/src/index.js +118 -0
  17. package/dist/src/index.js.map +1 -0
  18. package/dist/src/mcp/handlers/browser.d.ts +30 -0
  19. package/dist/src/mcp/handlers/browser.d.ts.map +1 -0
  20. package/dist/src/mcp/handlers/browser.js +231 -0
  21. package/dist/src/mcp/handlers/browser.js.map +1 -0
  22. package/dist/src/mcp/handlers/dom.d.ts +134 -0
  23. package/dist/src/mcp/handlers/dom.d.ts.map +1 -0
  24. package/dist/src/mcp/handlers/dom.js +551 -0
  25. package/dist/src/mcp/handlers/dom.js.map +1 -0
  26. package/dist/src/mcp/handlers/extract.d.ts +59 -0
  27. package/dist/src/mcp/handlers/extract.d.ts.map +1 -0
  28. package/dist/src/mcp/handlers/extract.js +455 -0
  29. package/dist/src/mcp/handlers/extract.js.map +1 -0
  30. package/dist/src/mcp/handlers/form-handlers.d.ts +9 -0
  31. package/dist/src/mcp/handlers/form-handlers.d.ts.map +1 -0
  32. package/dist/src/mcp/handlers/form-handlers.js +56 -0
  33. package/dist/src/mcp/handlers/form-handlers.js.map +1 -0
  34. package/dist/src/mcp/handlers/helpers.d.ts +47 -0
  35. package/dist/src/mcp/handlers/helpers.d.ts.map +1 -0
  36. package/dist/src/mcp/handlers/helpers.js +515 -0
  37. package/dist/src/mcp/handlers/helpers.js.map +1 -0
  38. package/dist/src/mcp/handlers/index.d.ts +6 -0
  39. package/dist/src/mcp/handlers/index.d.ts.map +1 -0
  40. package/dist/src/mcp/handlers/index.js +61 -0
  41. package/dist/src/mcp/handlers/index.js.map +1 -0
  42. package/dist/src/mcp/handlers/media-handlers.d.ts +10 -0
  43. package/dist/src/mcp/handlers/media-handlers.d.ts.map +1 -0
  44. package/dist/src/mcp/handlers/media-handlers.js +535 -0
  45. package/dist/src/mcp/handlers/media-handlers.js.map +1 -0
  46. package/dist/src/mcp/handlers/network.d.ts +147 -0
  47. package/dist/src/mcp/handlers/network.d.ts.map +1 -0
  48. package/dist/src/mcp/handlers/network.js +1135 -0
  49. package/dist/src/mcp/handlers/network.js.map +1 -0
  50. package/dist/src/mcp/handlers/state.d.ts +34 -0
  51. package/dist/src/mcp/handlers/state.d.ts.map +1 -0
  52. package/dist/src/mcp/handlers/state.js +225 -0
  53. package/dist/src/mcp/handlers/state.js.map +1 -0
  54. package/dist/src/mcp/handlers/utility-handlers.d.ts +167 -0
  55. package/dist/src/mcp/handlers/utility-handlers.d.ts.map +1 -0
  56. package/dist/src/mcp/handlers/utility-handlers.js +280 -0
  57. package/dist/src/mcp/handlers/utility-handlers.js.map +1 -0
  58. package/dist/src/mcp/handlers/vision.d.ts +127 -0
  59. package/dist/src/mcp/handlers/vision.d.ts.map +1 -0
  60. package/dist/src/mcp/handlers/vision.js +483 -0
  61. package/dist/src/mcp/handlers/vision.js.map +1 -0
  62. package/dist/src/mcp/index.d.ts +3 -0
  63. package/dist/src/mcp/index.d.ts.map +1 -0
  64. package/dist/src/mcp/index.js +166 -0
  65. package/dist/src/mcp/index.js.map +1 -0
  66. package/dist/src/mcp/server.d.ts +2 -0
  67. package/dist/src/mcp/server.d.ts.map +1 -0
  68. package/dist/src/mcp/server.js +117 -0
  69. package/dist/src/mcp/server.js.map +1 -0
  70. package/dist/src/mcp/tools.d.ts +8 -0
  71. package/dist/src/mcp/tools.d.ts.map +1 -0
  72. package/{src → dist/src}/mcp/tools.js +12 -11
  73. package/dist/src/mcp/tools.js.map +1 -0
  74. package/dist/src/shared/cache-manager.d.ts +80 -0
  75. package/dist/src/shared/cache-manager.d.ts.map +1 -0
  76. package/dist/src/shared/cache-manager.js +221 -0
  77. package/dist/src/shared/cache-manager.js.map +1 -0
  78. package/dist/src/shared/tools.d.ts +2 -0
  79. package/dist/src/shared/tools.d.ts.map +1 -0
  80. package/dist/src/shared/tools.js +599 -0
  81. package/dist/src/shared/tools.js.map +1 -0
  82. package/dist/src/types.d.ts +365 -0
  83. package/dist/src/types.d.ts.map +1 -0
  84. package/dist/src/types.js +9 -0
  85. package/dist/src/types.js.map +1 -0
  86. package/dist/test/cjs/test.d.ts +11 -0
  87. package/dist/test/cjs/test.d.ts.map +1 -0
  88. package/dist/test/cjs/test.js +289 -0
  89. package/dist/test/cjs/test.js.map +1 -0
  90. package/dist/test/mcp/smoke-test.d.ts +29 -0
  91. package/dist/test/mcp/smoke-test.d.ts.map +1 -0
  92. package/dist/test/mcp/smoke-test.js +132 -0
  93. package/dist/test/mcp/smoke-test.js.map +1 -0
  94. package/lib/esm/index.mjs +232 -79
  95. package/lib/esm/module/pageController.mjs +21 -18
  96. package/lib/esm/module/turnstile.mjs +7 -0
  97. package/package.json +25 -15
  98. package/typings.d.ts +12 -6
  99. package/.github/ISSUE_TEMPLATE/general_issue.yaml +0 -58
  100. package/.github/SETUP.md +0 -111
  101. package/.github/workflows/publish.yml +0 -135
  102. package/Dockerfile +0 -79
  103. package/lib/cjs/adblocker.bin +0 -0
  104. package/lib/cjs/index.js +0 -249
  105. package/src/ai/action-parser.js +0 -274
  106. package/src/ai/core.js +0 -378
  107. package/src/ai/element-finder.js +0 -466
  108. package/src/ai/index.js +0 -82
  109. package/src/ai/page-analyzer.js +0 -304
  110. package/src/ai/selector-healer.js +0 -236
  111. package/src/index.js +0 -121
  112. package/src/mcp/handlers.js +0 -5071
  113. package/src/mcp/index.js +0 -190
  114. package/src/mcp/server.js +0 -144
  115. package/src/shared/tools.js +0 -618
  116. package/test/cjs/test.js +0 -259
  117. package/test/esm/package.json +0 -13
  118. package/test/esm/test.js +0 -226
  119. package/test/esm/test_option2.js +0 -46
  120. package/test/esm/test_playwright_ghost.js +0 -30
@@ -0,0 +1,280 @@
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.utilityHandlers = void 0;
37
+ // Utility handlers — General-purpose tools
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs"));
40
+ const state_1 = require("./state");
41
+ // ═══════════════════════════════════════════════════════════════
42
+ // Utility Handlers — General-purpose tools
43
+ // ═══════════════════════════════════════════════════════════════
44
+ exports.utilityHandlers = {
45
+ _validateCaptchaText(text, expectedLength, allowedChars) {
46
+ if (!text || text.trim() === '')
47
+ return { valid: false, reason: 'Empty text' };
48
+ if (expectedLength && text.length !== expectedLength) {
49
+ return { valid: false, reason: `Expected ${expectedLength} chars, got ${text.length}` };
50
+ }
51
+ if (allowedChars) {
52
+ const regex = new RegExp('^[' + allowedChars + ']+$');
53
+ if (!regex.test(text))
54
+ return { valid: false, reason: 'Contains chars outside allowed set: ' + allowedChars };
55
+ }
56
+ return { valid: true };
57
+ },
58
+ async search_regex(params) {
59
+ const { page } = (0, state_1.requireBrowser)();
60
+ const { pattern, flags = 'gi', source = 'html' } = params;
61
+ (0, state_1.notifyProgress)('search_regex', 'started', `Searching pattern: ${pattern}`);
62
+ let content;
63
+ if (source === 'html') {
64
+ content = await page.content();
65
+ }
66
+ else if (source === 'scripts') {
67
+ content = await page.$$eval('script', scripts => scripts.map(s => s.textContent).join('\n'));
68
+ }
69
+ else {
70
+ content = await page.evaluate(() => document.body.innerText);
71
+ }
72
+ const regex = new RegExp(pattern, flags);
73
+ const matches = content.match(regex) || [];
74
+ (0, state_1.notifyProgress)('search_regex', 'completed', `Found ${matches.length} matches`, { matchCount: matches.length });
75
+ return { success: true, pattern, matchCount: matches.length, matches: matches.slice(0, 100) };
76
+ },
77
+ async progress_tracker(params = {}) {
78
+ const { action = 'get', taskName, progress } = params;
79
+ switch (action) {
80
+ case 'start':
81
+ state_1.state.progressTasks[taskName] = { progress: 0, startTime: Date.now() };
82
+ (0, state_1.notifyProgress)('progress_tracker', 'started', `Task started: ${taskName}`);
83
+ break;
84
+ case 'update':
85
+ if (state_1.state.progressTasks[taskName]) {
86
+ state_1.state.progressTasks[taskName].progress = progress;
87
+ (0, state_1.notifyProgress)('progress_tracker', 'progress', `${taskName}: ${progress}%`, { taskName, progress });
88
+ }
89
+ break;
90
+ case 'complete':
91
+ if (state_1.state.progressTasks[taskName]) {
92
+ state_1.state.progressTasks[taskName].progress = 100;
93
+ state_1.state.progressTasks[taskName].endTime = Date.now();
94
+ const duration = state_1.state.progressTasks[taskName].endTime - state_1.state.progressTasks[taskName].startTime;
95
+ (0, state_1.notifyProgress)('progress_tracker', 'completed', `${taskName} completed in ${duration}ms`, { taskName, duration });
96
+ }
97
+ break;
98
+ }
99
+ return { success: true, tasks: state_1.state.progressTasks };
100
+ },
101
+ async deep_analysis(params = {}) {
102
+ const { page } = (0, state_1.requireBrowser)();
103
+ const { types = ['all'], detailed = true } = params;
104
+ (0, state_1.notifyProgress)('deep_analysis', 'started', 'Analyzing page...');
105
+ const analysis = await page.evaluate(() => {
106
+ const result = {
107
+ seo: {
108
+ title: document.title,
109
+ titleLength: document.title.length,
110
+ h1Count: document.querySelectorAll('h1').length,
111
+ metaDescription: document.querySelector('meta[name="description"]')?.content,
112
+ canonicalUrl: document.querySelector('link[rel="canonical"]')?.href,
113
+ hasViewport: !!document.querySelector('meta[name="viewport"]')
114
+ },
115
+ performance: {
116
+ domElements: document.querySelectorAll('*').length,
117
+ scripts: document.querySelectorAll('script').length,
118
+ stylesheets: document.querySelectorAll('link[rel="stylesheet"]').length,
119
+ images: document.querySelectorAll('img').length
120
+ },
121
+ accessibility: {
122
+ imagesWithoutAlt: document.querySelectorAll('img:not([alt])').length,
123
+ linksCount: document.querySelectorAll('a').length,
124
+ formsCount: document.querySelectorAll('form').length,
125
+ inputsWithoutLabel: document.querySelectorAll('input:not([aria-label]):not([id])').length
126
+ },
127
+ security: {
128
+ isHttps: location.protocol === 'https:',
129
+ hasCSP: !!document.querySelector('meta[http-equiv="Content-Security-Policy"]'),
130
+ externalScripts: [...document.querySelectorAll('script[src]')].filter(s => !s.src.includes(location.hostname)).length
131
+ }
132
+ };
133
+ return result;
134
+ });
135
+ (0, state_1.notifyProgress)('deep_analysis', 'completed', `Analysis complete: ${analysis.performance.domElements} DOM elements`, { domElements: analysis.performance.domElements });
136
+ return { success: true, url: page.url(), analysis };
137
+ },
138
+ async file_downloader(params) {
139
+ const { page } = (0, state_1.requireBrowser)();
140
+ const { url, filename, directory = './downloads' } = params;
141
+ (0, state_1.notifyProgress)('file_downloader', 'started', `Downloading: ${url}`);
142
+ if (!fs.existsSync(directory)) {
143
+ fs.mkdirSync(directory, { recursive: true });
144
+ }
145
+ const response = await page.goto(url, { waitUntil: 'networkidle' });
146
+ if (!response) {
147
+ (0, state_1.notifyProgress)('file_downloader', 'error', 'Failed to get response');
148
+ return { success: false, error: 'Failed to get response' };
149
+ }
150
+ const buffer = await response.body();
151
+ const outputFilename = filename || path.basename(new URL(url).pathname) || 'download';
152
+ const outputPath = path.join(directory, outputFilename);
153
+ fs.writeFileSync(outputPath, buffer);
154
+ (0, state_1.notifyProgress)('file_downloader', 'completed', `Downloaded: ${outputFilename} (${buffer.length} bytes)`, { filename: outputPath, size: buffer.length });
155
+ return { success: true, filename: outputPath, size: buffer.length };
156
+ },
157
+ async iframe_handler(params = {}) {
158
+ const { page } = (0, state_1.requireBrowser)();
159
+ const { action = 'list', selector, index } = params;
160
+ (0, state_1.notifyProgress)('iframe_handler', 'started', `iFrame action: ${action}`);
161
+ const frames = page.frames();
162
+ switch (action) {
163
+ case 'list':
164
+ (0, state_1.notifyProgress)('iframe_handler', 'completed', `Found ${frames.length} frames`);
165
+ return {
166
+ success: true,
167
+ count: frames.length,
168
+ frames: frames.map((f, i) => ({ index: i, name: f.name(), url: f.url() }))
169
+ };
170
+ case 'switch':
171
+ const targetFrame = selector
172
+ ? await page.$(selector).then(el => el?.contentFrame())
173
+ : frames[index];
174
+ if (targetFrame) {
175
+ (0, state_1.notifyProgress)('iframe_handler', 'completed', `Switched to frame: ${targetFrame.url()}`);
176
+ return { success: true, switched: true, url: targetFrame.url() };
177
+ }
178
+ (0, state_1.notifyProgress)('iframe_handler', 'error', 'Frame not found');
179
+ return { success: false, error: 'Frame not found' };
180
+ case 'content':
181
+ const frame = selector
182
+ ? await page.$(selector).then(el => el?.contentFrame())
183
+ : frames[index || 0];
184
+ if (frame) {
185
+ const content = await frame.content();
186
+ (0, state_1.notifyProgress)('iframe_handler', 'completed', `Got frame content: ${content.length} chars`);
187
+ return { success: true, content };
188
+ }
189
+ return { success: false, error: 'Frame not found' };
190
+ case 'exit':
191
+ (0, state_1.notifyProgress)('iframe_handler', 'completed', 'Returned to main frame');
192
+ return { success: true, message: 'Returned to main frame' };
193
+ }
194
+ return { success: false, error: 'Invalid action' };
195
+ },
196
+ async js_scrape(params) {
197
+ const { page } = (0, state_1.requireBrowser)();
198
+ const { selector, waitForJS = true, timeout = 10000 } = params;
199
+ (0, state_1.notifyProgress)('js_scrape', 'started', `Scraping: ${selector}`);
200
+ if (waitForJS) {
201
+ await page.waitForSelector(selector, { timeout });
202
+ (0, state_1.notifyProgress)('js_scrape', 'progress', 'Element found, extracting content...');
203
+ }
204
+ const content = await page.$eval(selector, el => ({
205
+ html: el.outerHTML,
206
+ text: el.innerText,
207
+ attributes: Object.fromEntries([...el.attributes].map(a => [a.name, a.value]))
208
+ }));
209
+ (0, state_1.notifyProgress)('js_scrape', 'completed', `Scraped ${content.text.length} characters`, { selector });
210
+ return { success: true, selector, content };
211
+ },
212
+ async execute_js(params) {
213
+ const { page } = (0, state_1.requireBrowser)();
214
+ const { code, returnValue = true, iframe, iframeSelector, waitForIframe = true, timeout = 30000 } = params;
215
+ (0, state_1.notifyProgress)('execute_js', 'started', `Executing JavaScript...${iframe !== undefined ? ` (iframe ${iframe})` : ''}`);
216
+ // Get the correct context (page or iframe)
217
+ let context = page;
218
+ let frameInfo = null;
219
+ if (iframe !== undefined || iframeSelector) {
220
+ try {
221
+ const frames = page.frames();
222
+ if (iframe !== undefined) {
223
+ if (iframe === 0) {
224
+ context = page.mainFrame();
225
+ frameInfo = { index: 0, url: page.url(), isMain: true };
226
+ }
227
+ else if (frames[iframe]) {
228
+ context = frames[iframe];
229
+ frameInfo = { index: iframe, url: frames[iframe].url() };
230
+ (0, state_1.notifyProgress)('execute_js', 'progress', `Switched to iframe ${iframe}: ${frames[iframe].url().substring(0, 50)}...`);
231
+ }
232
+ else {
233
+ (0, state_1.notifyProgress)('execute_js', 'error', `iframe index ${iframe} not found. Total frames: ${frames.length}`);
234
+ return { success: false, error: `iframe index ${iframe} not found. Available: 0-${frames.length - 1}` };
235
+ }
236
+ }
237
+ else if (iframeSelector) {
238
+ const iframeHandle = await page.$(iframeSelector);
239
+ if (iframeHandle) {
240
+ const frame = await iframeHandle.contentFrame();
241
+ if (frame) {
242
+ context = frame;
243
+ frameInfo = { selector: iframeSelector, url: frame.url() };
244
+ (0, state_1.notifyProgress)('execute_js', 'progress', `Switched to iframe by selector: ${iframeSelector}`);
245
+ }
246
+ }
247
+ else {
248
+ return { success: false, error: `iframe selector not found: ${iframeSelector}` };
249
+ }
250
+ }
251
+ // Wait for iframe to be ready if needed
252
+ if (waitForIframe && context !== page) {
253
+ try {
254
+ await context.waitForFunction(() => document.readyState === 'complete', { timeout: 5000 });
255
+ }
256
+ catch (e) {
257
+ (0, state_1.notifyProgress)('execute_js', 'progress', 'Warning: iframe may not be fully loaded');
258
+ }
259
+ }
260
+ }
261
+ catch (e) {
262
+ (0, state_1.notifyProgress)('execute_js', 'error', `iframe switch failed: ${e.message}`);
263
+ return { success: false, error: `iframe switch failed: ${e.message}` };
264
+ }
265
+ }
266
+ try {
267
+ const result = await context.evaluate(code);
268
+ (0, state_1.notifyProgress)('execute_js', 'completed', 'JavaScript executed', {
269
+ hasResult: result !== undefined,
270
+ iframe: frameInfo
271
+ });
272
+ return { success: true, result: returnValue ? result : undefined, iframe: frameInfo };
273
+ }
274
+ catch (evalError) {
275
+ (0, state_1.notifyProgress)('execute_js', 'error', `Execution error: ${evalError.message}`);
276
+ return { success: false, error: evalError.message, iframe: frameInfo };
277
+ }
278
+ }
279
+ };
280
+ //# sourceMappingURL=utility-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-handlers.js","sourceRoot":"","sources":["../../../../src/mcp/handlers/utility-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ export declare const visionHandlers: {
2
+ solve_captcha(params?: any): Promise<{
3
+ success: boolean;
4
+ error: string;
5
+ solved?: undefined;
6
+ method?: undefined;
7
+ captchaText?: undefined;
8
+ attempt?: undefined;
9
+ formResult?: undefined;
10
+ submitted?: undefined;
11
+ mcpContent?: undefined;
12
+ type?: undefined;
13
+ submitMessage?: undefined;
14
+ } | {
15
+ success: boolean;
16
+ solved: boolean;
17
+ method: string;
18
+ captchaText: any;
19
+ attempt: number;
20
+ formResult: any;
21
+ submitted: any;
22
+ error?: undefined;
23
+ mcpContent?: undefined;
24
+ type?: undefined;
25
+ submitMessage?: undefined;
26
+ } | {
27
+ success: boolean;
28
+ mcpContent: ({
29
+ type: string;
30
+ text: string;
31
+ data?: undefined;
32
+ mimeType?: undefined;
33
+ } | {
34
+ type: string;
35
+ data: any;
36
+ mimeType: string;
37
+ text?: undefined;
38
+ })[];
39
+ error?: undefined;
40
+ solved?: undefined;
41
+ method?: undefined;
42
+ captchaText?: undefined;
43
+ attempt?: undefined;
44
+ formResult?: undefined;
45
+ submitted?: undefined;
46
+ type?: undefined;
47
+ submitMessage?: undefined;
48
+ } | {
49
+ success: boolean;
50
+ error: any;
51
+ type: string;
52
+ formResult: any;
53
+ solved?: undefined;
54
+ method?: undefined;
55
+ captchaText?: undefined;
56
+ attempt?: undefined;
57
+ submitted?: undefined;
58
+ mcpContent?: undefined;
59
+ submitMessage?: undefined;
60
+ } | {
61
+ success: boolean;
62
+ error: string;
63
+ formResult: any;
64
+ solved?: undefined;
65
+ method?: undefined;
66
+ captchaText?: undefined;
67
+ attempt?: undefined;
68
+ submitted?: undefined;
69
+ mcpContent?: undefined;
70
+ type?: undefined;
71
+ submitMessage?: undefined;
72
+ } | {
73
+ success: boolean;
74
+ type: string;
75
+ solved: boolean;
76
+ formResult: any;
77
+ submitted: any;
78
+ submitMessage: any;
79
+ error?: undefined;
80
+ method?: undefined;
81
+ captchaText?: undefined;
82
+ attempt?: undefined;
83
+ mcpContent?: undefined;
84
+ } | {
85
+ success: boolean;
86
+ type: string;
87
+ solved: boolean;
88
+ formResult: any;
89
+ error?: undefined;
90
+ method?: undefined;
91
+ captchaText?: undefined;
92
+ attempt?: undefined;
93
+ submitted?: undefined;
94
+ mcpContent?: undefined;
95
+ submitMessage?: undefined;
96
+ }>;
97
+ see_page(params?: any): Promise<{
98
+ success: boolean;
99
+ error: string;
100
+ } | {
101
+ success: boolean;
102
+ url: any;
103
+ title: any;
104
+ viewport: any;
105
+ scroll: {
106
+ y: any;
107
+ pageHeight: any;
108
+ };
109
+ visibleInteractiveElements: number;
110
+ domText: string | undefined;
111
+ elements: any[];
112
+ savedTo: any;
113
+ mcpContent: ({
114
+ type: string;
115
+ data: string;
116
+ mimeType: string;
117
+ text?: undefined;
118
+ } | {
119
+ type: string;
120
+ text: string;
121
+ data?: undefined;
122
+ mimeType?: undefined;
123
+ })[];
124
+ error?: undefined;
125
+ }>;
126
+ };
127
+ //# sourceMappingURL=vision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vision.d.ts","sourceRoot":"","sources":["../../../../src/mcp/handlers/vision.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc;2BACG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAuVR,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsJ3B,CAAC"}