@eddym06/custom-chrome-mcp 1.0.4 → 1.1.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.
- package/CONDITIONAL_DESCRIPTIONS.md +174 -0
- package/FUTURE_FEATURES.txt +1503 -0
- package/README.md +300 -3
- package/TEST_WORKFLOW.md +311 -0
- package/USAGE_GUIDE.md +393 -0
- package/demo_features.ts +115 -0
- package/dist/chrome-connector.d.ts +31 -4
- package/dist/chrome-connector.d.ts.map +1 -1
- package/dist/chrome-connector.js +402 -53
- package/dist/chrome-connector.js.map +1 -1
- package/dist/index.js +69 -12
- package/dist/index.js.map +1 -1
- package/dist/tests/execute-script-tests.d.ts +62 -0
- package/dist/tests/execute-script-tests.d.ts.map +1 -0
- package/dist/tests/execute-script-tests.js +280 -0
- package/dist/tests/execute-script-tests.js.map +1 -0
- package/dist/tests/run-execute-tests.d.ts +7 -0
- package/dist/tests/run-execute-tests.d.ts.map +1 -0
- package/dist/tests/run-execute-tests.js +88 -0
- package/dist/tests/run-execute-tests.js.map +1 -0
- package/dist/tools/advanced-network.backup.d.ts +245 -0
- package/dist/tools/advanced-network.backup.d.ts.map +1 -0
- package/dist/tools/advanced-network.backup.js +996 -0
- package/dist/tools/advanced-network.backup.js.map +1 -0
- package/dist/tools/advanced-network.d.ts +580 -0
- package/dist/tools/advanced-network.d.ts.map +1 -0
- package/dist/tools/advanced-network.js +1325 -0
- package/dist/tools/advanced-network.js.map +1 -0
- package/dist/tools/anti-detection.d.ts.map +1 -1
- package/dist/tools/anti-detection.js +13 -8
- package/dist/tools/anti-detection.js.map +1 -1
- package/dist/tools/capture.d.ts +15 -9
- package/dist/tools/capture.d.ts.map +1 -1
- package/dist/tools/capture.js +21 -12
- package/dist/tools/capture.js.map +1 -1
- package/dist/tools/interaction.d.ts +84 -10
- package/dist/tools/interaction.d.ts.map +1 -1
- package/dist/tools/interaction.js +88 -33
- package/dist/tools/interaction.js.map +1 -1
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +43 -21
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/network-accessibility.d.ts +67 -0
- package/dist/tools/network-accessibility.d.ts.map +1 -0
- package/dist/tools/network-accessibility.js +367 -0
- package/dist/tools/network-accessibility.js.map +1 -0
- package/dist/tools/playwright-launcher.d.ts +1 -1
- package/dist/tools/playwright-launcher.js +6 -6
- package/dist/tools/playwright-launcher.js.map +1 -1
- package/dist/tools/service-worker.d.ts +2 -2
- package/dist/tools/service-worker.d.ts.map +1 -1
- package/dist/tools/service-worker.js +22 -12
- package/dist/tools/service-worker.js.map +1 -1
- package/dist/tools/session.d.ts.map +1 -1
- package/dist/tools/session.js +23 -14
- package/dist/tools/session.js.map +1 -1
- package/dist/tools/system.d.ts +2 -2
- package/dist/tools/system.d.ts.map +1 -1
- package/dist/tools/system.js +9 -5
- package/dist/tools/system.js.map +1 -1
- package/dist/utils/truncate.d.ts +29 -0
- package/dist/utils/truncate.d.ts.map +1 -0
- package/dist/utils/truncate.js +46 -0
- package/dist/utils/truncate.js.map +1 -0
- package/dist/verify-tools.d.ts +7 -0
- package/dist/verify-tools.d.ts.map +1 -0
- package/dist/verify-tools.js +137 -0
- package/dist/verify-tools.js.map +1 -0
- package/package.json +3 -3
- package/recordings/demo_recording.har +3036 -0
- package/.npmrc.example +0 -2
- package/test-playwright.js +0 -57
|
@@ -8,14 +8,15 @@ export function createInteractionTools(connector) {
|
|
|
8
8
|
// Click element
|
|
9
9
|
{
|
|
10
10
|
name: 'click',
|
|
11
|
-
description: 'Click on
|
|
11
|
+
description: '⚠️ CRITICAL WORKFLOW: BEFORE clicking, ALWAYS use get_html or screenshot FIRST to analyze page and identify correct selectors. NEVER guess selectors blindly. | Click/press/tap on any element (button, link, checkbox, etc.) using CSS selector. PROPER WORKFLOW: 1️⃣ navigate to page → 2️⃣ get_html to see available elements → 3️⃣ identify correct CSS selector from HTML → 4️⃣ THEN click with verified selector. Use when user says "click button", "press submit", "tap link".',
|
|
12
12
|
inputSchema: z.object({
|
|
13
13
|
selector: z.string().describe('CSS selector of element to click'),
|
|
14
14
|
tabId: z.string().optional().describe('Tab ID (optional)'),
|
|
15
|
-
waitForSelector: z.boolean().
|
|
16
|
-
timeout: z.number().
|
|
15
|
+
waitForSelector: z.boolean().default(true).describe('Wait for selector to be visible'),
|
|
16
|
+
timeout: z.number().default(30000).describe('Timeout in milliseconds')
|
|
17
17
|
}),
|
|
18
18
|
handler: async ({ selector, tabId, waitForSelector, timeout = 30000 }) => {
|
|
19
|
+
await connector.verifyConnection();
|
|
19
20
|
const client = await connector.getTabClient(tabId);
|
|
20
21
|
const { Runtime, DOM } = client;
|
|
21
22
|
await Runtime.enable();
|
|
@@ -57,15 +58,16 @@ export function createInteractionTools(connector) {
|
|
|
57
58
|
// Type text
|
|
58
59
|
{
|
|
59
60
|
name: 'type',
|
|
60
|
-
description: 'Type text into
|
|
61
|
+
description: '⚠️ PREREQUISITE: Use get_html FIRST to identify input field selectors. | Type/write/enter text into input fields, textboxes, search boxes, textareas. PROPER WORKFLOW: 1️⃣ get_html to find input elements → 2️⃣ identify selector (input#email, textarea.message) → 3️⃣ type text → 4️⃣ optionally press Enter. Use when user says "type in search box", "enter text", "write in field", "fill form".',
|
|
61
62
|
inputSchema: z.object({
|
|
62
63
|
selector: z.string().describe('CSS selector of input element'),
|
|
63
64
|
text: z.string().describe('Text to type'),
|
|
64
65
|
tabId: z.string().optional().describe('Tab ID (optional)'),
|
|
65
|
-
clearFirst: z.boolean().
|
|
66
|
-
timeout: z.number().
|
|
66
|
+
clearFirst: z.boolean().default(true).describe('Clear existing text first'),
|
|
67
|
+
timeout: z.number().default(30000).describe('Timeout in milliseconds')
|
|
67
68
|
}),
|
|
68
69
|
handler: async ({ selector, text, tabId, clearFirst, timeout = 30000 }) => {
|
|
70
|
+
await connector.verifyConnection();
|
|
69
71
|
const client = await connector.getTabClient(tabId);
|
|
70
72
|
const { Runtime } = client;
|
|
71
73
|
await Runtime.enable();
|
|
@@ -103,12 +105,13 @@ export function createInteractionTools(connector) {
|
|
|
103
105
|
// Get text content
|
|
104
106
|
{
|
|
105
107
|
name: 'get_text',
|
|
106
|
-
description: '
|
|
108
|
+
description: '📝 Extracts visible text from elements. USE THIS WHEN: 1️⃣ Verifying click/action worked (check if new text appeared). 2️⃣ Scraping content (articles, prices, names). 3️⃣ Reading dynamic text loaded after interaction. 4️⃣ Confirming success/error messages. PREREQUISITE: Run get_html first to identify correct selector. Returns: Rendered text only (no HTML tags). Use for: content verification, web scraping, text analysis.',
|
|
107
109
|
inputSchema: z.object({
|
|
108
110
|
selector: z.string().describe('CSS selector of element'),
|
|
109
111
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
110
112
|
}),
|
|
111
113
|
handler: async ({ selector, tabId }) => {
|
|
114
|
+
await connector.verifyConnection();
|
|
112
115
|
const client = await connector.getTabClient(tabId);
|
|
113
116
|
const { Runtime } = client;
|
|
114
117
|
await Runtime.enable();
|
|
@@ -134,13 +137,14 @@ export function createInteractionTools(connector) {
|
|
|
134
137
|
// Get attribute
|
|
135
138
|
{
|
|
136
139
|
name: 'get_attribute',
|
|
137
|
-
description: '
|
|
140
|
+
description: '🔍 Retrieves HTML attribute values from elements. USE THIS WHEN: 1️⃣ Getting link URLs (href from <a> tags). 2️⃣ Getting image sources (src from <img>). 3️⃣ Getting data attributes (data-id, data-value). 4️⃣ Getting element IDs/classes for verification. 5️⃣ Checking disabled/readonly states. WORKFLOW: get_html → identify element → get_attribute(selector, "href"). Common attributes: href, src, id, class, data-*, alt, title, value, disabled.',
|
|
138
141
|
inputSchema: z.object({
|
|
139
142
|
selector: z.string().describe('CSS selector of element'),
|
|
140
143
|
attribute: z.string().describe('Attribute name to get'),
|
|
141
144
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
142
145
|
}),
|
|
143
146
|
handler: async ({ selector, attribute, tabId }) => {
|
|
147
|
+
await connector.verifyConnection();
|
|
144
148
|
const client = await connector.getTabClient(tabId);
|
|
145
149
|
const { Runtime } = client;
|
|
146
150
|
await Runtime.enable();
|
|
@@ -164,42 +168,91 @@ export function createInteractionTools(connector) {
|
|
|
164
168
|
// Execute JavaScript
|
|
165
169
|
{
|
|
166
170
|
name: 'execute_script',
|
|
167
|
-
description: '
|
|
171
|
+
description: 'Executes JavaScript code in page context. BEST PRACTICES: 1️⃣ Prefer get_html/click/type when possible (simpler & safer). 2️⃣ Use execute_script ONLY for: complex queries (querySelectorAll with map/filter), accessing window variables/functions, triggering custom events, advanced DOM manipulation. 3️⃣ ALWAYS use "return" statement to get results. 4️⃣ Return simple values (strings, numbers, arrays, plain objects) - NOT DOM nodes or Handles. EXAMPLES: return Array.from(document.querySelectorAll(".item")).map(e => e.textContent); | return window.appConfig; | return document.title;',
|
|
168
172
|
inputSchema: z.object({
|
|
169
|
-
script: z.string().describe('JavaScript code to execute'),
|
|
173
|
+
script: z.string().describe('JavaScript code to execute. MUST include "return" statement for results. Return serializable values only (no DOM nodes).'),
|
|
170
174
|
tabId: z.string().optional().describe('Tab ID (optional) - MUST be a Page/Tab ID, not a Service Worker ID'),
|
|
171
|
-
awaitPromise: z.boolean().
|
|
172
|
-
|
|
175
|
+
awaitPromise: z.boolean().default(false).describe('Wait for promise to resolve'),
|
|
176
|
+
timeoutMs: z.number().default(30000).optional().describe('Timeout in milliseconds (default: 30000). AI should specify based on script complexity: simple queries 5000ms, complex operations 30000ms, heavy computations 60000ms.')
|
|
173
177
|
}),
|
|
174
|
-
handler: async ({ script, tabId, awaitPromise,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
178
|
+
handler: async ({ script, tabId, awaitPromise, timeoutMs = 30000 }) => {
|
|
179
|
+
try {
|
|
180
|
+
await connector.verifyConnection();
|
|
181
|
+
const client = await connector.getTabClient(tabId);
|
|
182
|
+
const { Runtime } = client;
|
|
183
|
+
await Runtime.enable();
|
|
184
|
+
// Wrap script to ensure it returns serializable values
|
|
185
|
+
const wrappedScript = `
|
|
186
|
+
(function() {
|
|
187
|
+
try {
|
|
188
|
+
const result = (function() {
|
|
189
|
+
${script}
|
|
190
|
+
})();
|
|
191
|
+
|
|
192
|
+
// Ensure result is serializable
|
|
193
|
+
if (result === undefined) return null;
|
|
194
|
+
if (result === null) return null;
|
|
195
|
+
if (typeof result === 'function') return '[Function]';
|
|
196
|
+
if (result instanceof Node || result instanceof Element) {
|
|
197
|
+
return '[DOM Node - use get_text or get_attribute instead]';
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return result;
|
|
201
|
+
} catch (e) {
|
|
202
|
+
return { __error: true, message: e.message, stack: e.stack };
|
|
203
|
+
}
|
|
204
|
+
})()
|
|
205
|
+
`;
|
|
206
|
+
const result = await withTimeout(Runtime.evaluate({
|
|
207
|
+
expression: wrappedScript,
|
|
208
|
+
awaitPromise,
|
|
209
|
+
returnByValue: true,
|
|
210
|
+
userGesture: true
|
|
211
|
+
}), timeoutMs, `Script execution timed out after ${timeoutMs}ms`);
|
|
212
|
+
// Check for evaluation exceptions
|
|
213
|
+
if (result.exceptionDetails) {
|
|
214
|
+
const errorMsg = result.exceptionDetails.exception?.description || result.exceptionDetails.text || 'Unknown error';
|
|
215
|
+
return {
|
|
216
|
+
success: false,
|
|
217
|
+
error: `Script execution failed: ${errorMsg}`,
|
|
218
|
+
exceptionDetails: result.exceptionDetails
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
// Check for wrapped error
|
|
222
|
+
const resultValue = result.result.value;
|
|
223
|
+
if (resultValue && resultValue.__error) {
|
|
224
|
+
return {
|
|
225
|
+
success: false,
|
|
226
|
+
error: `Script error: ${resultValue.message}`,
|
|
227
|
+
stack: resultValue.stack
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
success: true,
|
|
232
|
+
result: resultValue
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
return {
|
|
237
|
+
success: false,
|
|
238
|
+
error: error.message || 'Script execution failed',
|
|
239
|
+
suggestion: 'Ensure: 1) Script has return statement, 2) Returns serializable values (not DOM nodes), 3) Page is loaded, 4) TabId is correct'
|
|
240
|
+
};
|
|
185
241
|
}
|
|
186
|
-
return {
|
|
187
|
-
success: true,
|
|
188
|
-
result: result.result.value
|
|
189
|
-
};
|
|
190
242
|
}
|
|
191
243
|
},
|
|
192
244
|
// Scroll
|
|
193
245
|
{
|
|
194
246
|
name: 'scroll',
|
|
195
|
-
description: '
|
|
247
|
+
description: '⬇️ Scrolls page/element to position. USE THIS WHEN: 1️⃣ Target element below fold (need to scroll to make visible). 2️⃣ Lazy-loading content (scroll triggers image/content load). 3️⃣ Infinite scroll pages (scroll down loads more items). 4️⃣ Taking full-page screenshot (scroll to bottom first). 5️⃣ Content not visible in viewport. TRIGGERS: "scroll down", "load more content", "see bottom of page". Common: scroll(0, 9999) for bottom, scroll(0, 0) for top.',
|
|
196
248
|
inputSchema: z.object({
|
|
197
|
-
x: z.number().
|
|
249
|
+
x: z.number().default(0).describe('Horizontal scroll position'),
|
|
198
250
|
y: z.number().optional().describe('Vertical scroll position'),
|
|
199
251
|
selector: z.string().optional().describe('CSS selector to scroll (scrolls window if not provided)'),
|
|
200
252
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
201
253
|
}),
|
|
202
254
|
handler: async ({ x, y, selector, tabId }) => {
|
|
255
|
+
await connector.verifyConnection();
|
|
203
256
|
const client = await connector.getTabClient(tabId);
|
|
204
257
|
const { Runtime } = client;
|
|
205
258
|
await Runtime.enable();
|
|
@@ -217,13 +270,14 @@ export function createInteractionTools(connector) {
|
|
|
217
270
|
// Wait for selector
|
|
218
271
|
{
|
|
219
272
|
name: 'wait_for_selector',
|
|
220
|
-
description: '
|
|
273
|
+
description: '⏱️ Waits for element to appear in DOM. USE THIS WHEN: 1️⃣ After click, waiting for modal/popup to appear. 2️⃣ After form submit, waiting for success message. 3️⃣ After AJAX load, waiting for new content. 4️⃣ Click triggers animation/transition. WORKFLOW: click → wait_for_selector → THEN interact with new element. TIMEOUT: Set based on expected load time (fast: 5000ms, normal: 15000ms, slow: 30000ms). Prevents "element not found" errors by waiting for dynamic content.',
|
|
221
274
|
inputSchema: z.object({
|
|
222
275
|
selector: z.string().describe('CSS selector to wait for'),
|
|
223
|
-
|
|
276
|
+
timeoutMs: z.number().default(30000).optional().describe('Timeout in milliseconds (default: 30000). AI should set: quick animations 5000ms, normal loads 15000ms, slow APIs 30000ms.'),
|
|
224
277
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
225
278
|
}),
|
|
226
|
-
handler: async ({ selector,
|
|
279
|
+
handler: async ({ selector, timeoutMs = 30000, tabId }) => {
|
|
280
|
+
await connector.verifyConnection();
|
|
227
281
|
const client = await connector.getTabClient(tabId);
|
|
228
282
|
const { Runtime } = client;
|
|
229
283
|
await Runtime.enable();
|
|
@@ -232,7 +286,7 @@ export function createInteractionTools(connector) {
|
|
|
232
286
|
expression: `document.querySelector('${selector}') !== null`
|
|
233
287
|
});
|
|
234
288
|
return result.result.value === true;
|
|
235
|
-
},
|
|
289
|
+
}, timeoutMs);
|
|
236
290
|
if (!found) {
|
|
237
291
|
throw new Error(`Timeout waiting for selector: ${selector}`);
|
|
238
292
|
}
|
|
@@ -252,6 +306,7 @@ export function createInteractionTools(connector) {
|
|
|
252
306
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
253
307
|
}),
|
|
254
308
|
handler: async ({ selector, value, tabId }) => {
|
|
309
|
+
await connector.verifyConnection();
|
|
255
310
|
const client = await connector.getTabClient(tabId);
|
|
256
311
|
const { Runtime } = client;
|
|
257
312
|
await Runtime.enable();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CAAC,SAA0B;IAC/D,OAAO;QACL,gBAAgB;QAChB;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,eAAe;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,eAAe;;;;;;;;;;yBAsE/B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAiGL,GAAG;;;;;;;;;;;;;;;;;;;yBAwBD,GAAG;;;;;;;;;;;;;;yBAsCH,GAAG;;;;;KAgBnC"}
|
package/dist/tools/navigation.js
CHANGED
|
@@ -8,32 +8,46 @@ export function createNavigationTools(connector) {
|
|
|
8
8
|
// Navigate to URL
|
|
9
9
|
{
|
|
10
10
|
name: 'navigate',
|
|
11
|
-
description: '
|
|
11
|
+
description: '🌐 PRIMARY NAVIGATION TOOL - Opens/loads/visits any URL. ✅ USE THIS for: "go to", "open", "navigate to", "visit", "load page", "browse to" any website. Navigates in CURRENT tab (doesn\'t create new tab). Examples: "go to apple.com", "navigate to google.com", "visit youtube.com". 📋 WORKFLOW: 1️⃣ navigate → 2️⃣ wait_for_load_state(networkidle) → 3️⃣ get_html (analyze) → 4️⃣ interact. ❌ DO NOT use create_tab for simple navigation!',
|
|
12
12
|
inputSchema: z.object({
|
|
13
13
|
url: z.string().describe('URL to navigate to'),
|
|
14
14
|
tabId: z.string().optional().describe('Tab ID (optional, uses current tab if not specified)'),
|
|
15
|
-
waitUntil: z.enum(['load', 'domcontentloaded', 'networkidle']).
|
|
15
|
+
waitUntil: z.enum(['load', 'domcontentloaded', 'networkidle']).default('load')
|
|
16
16
|
.describe('Wait until this event fires'),
|
|
17
|
-
timeout: z.number().
|
|
17
|
+
timeout: z.number().default(30000).describe('Timeout in milliseconds')
|
|
18
18
|
}),
|
|
19
19
|
handler: async ({ url, tabId, waitUntil, timeout = 30000 }) => {
|
|
20
|
+
console.error(`[Navigation] Starting navigation to ${url} (tab: ${tabId || 'active'})`);
|
|
21
|
+
// VERIFY CONNECTION FIRST
|
|
22
|
+
await connector.verifyConnection();
|
|
20
23
|
if (!isValidUrl(url)) {
|
|
24
|
+
console.error(`[Navigation] Invalid URL rejected: ${url}`);
|
|
21
25
|
throw new Error(`Invalid URL: ${url}`);
|
|
22
26
|
}
|
|
27
|
+
console.error(`[Navigation] Connecting to tab...`);
|
|
23
28
|
const client = await connector.getTabClient(tabId);
|
|
29
|
+
console.error(`[Navigation] Connected to tab. Enabling Page domain...`);
|
|
24
30
|
const { Page } = client;
|
|
25
31
|
await Page.enable();
|
|
26
|
-
|
|
27
|
-
//
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
32
|
+
console.error(`[Navigation] Setting up event listener for ${waitUntil}...`);
|
|
33
|
+
// Set up the event listener BEFORE navigating
|
|
34
|
+
let eventPromise;
|
|
35
|
+
if (waitUntil === 'load') {
|
|
36
|
+
eventPromise = Page.loadEventFired();
|
|
37
|
+
}
|
|
38
|
+
else if (waitUntil === 'domcontentloaded') {
|
|
39
|
+
eventPromise = Page.domContentEventFired();
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// For networkidle, just wait a bit
|
|
43
|
+
eventPromise = new Promise(r => setTimeout(r, 1000));
|
|
44
|
+
}
|
|
45
|
+
console.error(`[Navigation] Page domain enabled. Sending navigate command...`);
|
|
46
|
+
const navResponse = await Page.navigate({ url });
|
|
47
|
+
console.error(`[Navigation] Navigate response:`, navResponse);
|
|
48
|
+
console.error(`[Navigation] Waiting for ${waitUntil} event...`);
|
|
49
|
+
await withTimeout(eventPromise, timeout, `Navigation to ${url} timed out`);
|
|
50
|
+
console.error(`[Navigation] Event received successfully!`);
|
|
37
51
|
await humanDelay();
|
|
38
52
|
return {
|
|
39
53
|
success: true,
|
|
@@ -45,11 +59,12 @@ export function createNavigationTools(connector) {
|
|
|
45
59
|
// Go back
|
|
46
60
|
{
|
|
47
61
|
name: 'go_back',
|
|
48
|
-
description: '
|
|
62
|
+
description: 'Go back in browser history - same as pressing the back button. Use when user says "go back", "navigate back", "return to previous page", "press back button".',
|
|
49
63
|
inputSchema: z.object({
|
|
50
64
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
51
65
|
}),
|
|
52
66
|
handler: async ({ tabId }) => {
|
|
67
|
+
await connector.verifyConnection();
|
|
53
68
|
const client = await connector.getTabClient(tabId);
|
|
54
69
|
const { Page } = client;
|
|
55
70
|
await Page.enable();
|
|
@@ -71,6 +86,7 @@ export function createNavigationTools(connector) {
|
|
|
71
86
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
72
87
|
}),
|
|
73
88
|
handler: async ({ tabId }) => {
|
|
89
|
+
await connector.verifyConnection();
|
|
74
90
|
const client = await connector.getTabClient(tabId);
|
|
75
91
|
const { Page } = client;
|
|
76
92
|
await Page.enable();
|
|
@@ -90,9 +106,10 @@ export function createNavigationTools(connector) {
|
|
|
90
106
|
description: 'Reload the current page',
|
|
91
107
|
inputSchema: z.object({
|
|
92
108
|
tabId: z.string().optional().describe('Tab ID (optional)'),
|
|
93
|
-
ignoreCache: z.boolean().
|
|
109
|
+
ignoreCache: z.boolean().default(false).describe('Ignore cache when reloading')
|
|
94
110
|
}),
|
|
95
111
|
handler: async ({ tabId, ignoreCache }) => {
|
|
112
|
+
await connector.verifyConnection();
|
|
96
113
|
const client = await connector.getTabClient(tabId);
|
|
97
114
|
const { Page } = client;
|
|
98
115
|
await Page.enable();
|
|
@@ -108,9 +125,10 @@ export function createNavigationTools(connector) {
|
|
|
108
125
|
// List tabs
|
|
109
126
|
{
|
|
110
127
|
name: 'list_tabs',
|
|
111
|
-
description: '
|
|
128
|
+
description: '📋 Lists all open browser tabs. USE THIS WHEN: 1️⃣ Need to switch between tabs (get tab IDs). 2️⃣ Multiple tabs open, need to find specific one by title/URL. 3️⃣ Verifying tab was created. 4️⃣ Managing multiple pages simultaneously. 5️⃣ Debugging: "which tab am I in?". Returns: tab IDs, titles, URLs. Use returned ID with tabId parameter in other tools.',
|
|
112
129
|
inputSchema: z.object({}),
|
|
113
130
|
handler: async () => {
|
|
131
|
+
await connector.verifyConnection();
|
|
114
132
|
const tabs = await connector.listTabs();
|
|
115
133
|
return {
|
|
116
134
|
success: true,
|
|
@@ -126,11 +144,12 @@ export function createNavigationTools(connector) {
|
|
|
126
144
|
// Create new tab
|
|
127
145
|
{
|
|
128
146
|
name: 'create_tab',
|
|
129
|
-
description: '
|
|
147
|
+
description: '➕ Creates NEW/ADDITIONAL browser tab. USE THIS ONLY when user explicitly wants MULTIPLE tabs or says "open in new tab", "create another tab", "new window". ❌ DO NOT USE for simple navigation! For "go to URL" or "navigate to", use navigate tool instead. create_tab is for managing multiple tabs simultaneously.',
|
|
130
148
|
inputSchema: z.object({
|
|
131
149
|
url: z.string().optional().describe('URL to open in new tab (optional)')
|
|
132
150
|
}),
|
|
133
151
|
handler: async ({ url }) => {
|
|
152
|
+
await connector.verifyConnection();
|
|
134
153
|
const newTab = await connector.createTab(url);
|
|
135
154
|
await humanDelay();
|
|
136
155
|
return {
|
|
@@ -147,11 +166,12 @@ export function createNavigationTools(connector) {
|
|
|
147
166
|
// Close tab
|
|
148
167
|
{
|
|
149
168
|
name: 'close_tab',
|
|
150
|
-
description: '
|
|
169
|
+
description: '❌ Closes specific tab by ID. USE THIS WHEN: Cleaning up after multi-tab workflow, closing popups/ads, managing tab overflow. PREREQUISITE: list_tabs to get tab ID. CAUTION: Cannot close if it\'s the only tab.',
|
|
151
170
|
inputSchema: z.object({
|
|
152
171
|
tabId: z.string().describe('Tab ID to close')
|
|
153
172
|
}),
|
|
154
173
|
handler: async ({ tabId }) => {
|
|
174
|
+
await connector.verifyConnection();
|
|
155
175
|
await connector.closeTab(tabId);
|
|
156
176
|
await humanDelay();
|
|
157
177
|
return {
|
|
@@ -163,11 +183,12 @@ export function createNavigationTools(connector) {
|
|
|
163
183
|
// Activate/switch to tab
|
|
164
184
|
{
|
|
165
185
|
name: 'switch_tab',
|
|
166
|
-
description: '
|
|
186
|
+
description: '🔄 Switches focus to specific tab. USE THIS WHEN: Working with multiple tabs, need to interact with different page. WORKFLOW: list_tabs → get target tab ID → switch_tab → interact with that tab.',
|
|
167
187
|
inputSchema: z.object({
|
|
168
188
|
tabId: z.string().describe('Tab ID to switch to')
|
|
169
189
|
}),
|
|
170
190
|
handler: async ({ tabId }) => {
|
|
191
|
+
await connector.verifyConnection();
|
|
171
192
|
await connector.activateTab(tabId);
|
|
172
193
|
await humanDelay();
|
|
173
194
|
return {
|
|
@@ -179,11 +200,12 @@ export function createNavigationTools(connector) {
|
|
|
179
200
|
// Get current URL
|
|
180
201
|
{
|
|
181
202
|
name: 'get_url',
|
|
182
|
-
description: '
|
|
203
|
+
description: '🔗 Gets current page URL. USE THIS WHEN: 1️⃣ Verifying navigation worked (check URL changed). 2️⃣ Checking if redirect happened. 3️⃣ Confirming on correct page before interaction. 4️⃣ Extracting URL parameters (parse returned URL). 5️⃣ Debugging: "where am I?". Returns: Full URL including protocol, domain, path, query params.',
|
|
183
204
|
inputSchema: z.object({
|
|
184
205
|
tabId: z.string().optional().describe('Tab ID (optional)')
|
|
185
206
|
}),
|
|
186
207
|
handler: async ({ tabId }) => {
|
|
208
|
+
await connector.verifyConnection();
|
|
187
209
|
const client = await connector.getTabClient(tabId);
|
|
188
210
|
const { Page } = client;
|
|
189
211
|
await Page.enable();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,UAAU,qBAAqB,CAAC,SAA0B;IAC9D,OAAO;QACL,kBAAkB;QAClB;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Network Interception and Accessibility Tools
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import type { ChromeConnector } from '../chrome-connector.js';
|
|
6
|
+
export declare function createNetworkAccessibilityTools(connector: ChromeConnector): ({
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: z.ZodObject<{
|
|
10
|
+
tabId: z.ZodOptional<z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
tabId?: string | undefined;
|
|
13
|
+
}, {
|
|
14
|
+
tabId?: string | undefined;
|
|
15
|
+
}>;
|
|
16
|
+
handler: ({ tabId }: any) => Promise<{
|
|
17
|
+
success: boolean;
|
|
18
|
+
interceptedRequests: never[];
|
|
19
|
+
count: number;
|
|
20
|
+
message: string;
|
|
21
|
+
} | {
|
|
22
|
+
success: boolean;
|
|
23
|
+
interceptedRequests: {
|
|
24
|
+
requestId: any;
|
|
25
|
+
url: any;
|
|
26
|
+
method: any;
|
|
27
|
+
resourceType: any;
|
|
28
|
+
headers: any;
|
|
29
|
+
}[];
|
|
30
|
+
count: number;
|
|
31
|
+
message?: undefined;
|
|
32
|
+
}>;
|
|
33
|
+
} | {
|
|
34
|
+
name: string;
|
|
35
|
+
description: string;
|
|
36
|
+
inputSchema: z.ZodObject<{
|
|
37
|
+
tabId: z.ZodOptional<z.ZodString>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
tabId?: string | undefined;
|
|
40
|
+
}, {
|
|
41
|
+
tabId?: string | undefined;
|
|
42
|
+
}>;
|
|
43
|
+
handler: ({ tabId }: any) => Promise<{
|
|
44
|
+
success: boolean;
|
|
45
|
+
message: string;
|
|
46
|
+
}>;
|
|
47
|
+
} | {
|
|
48
|
+
name: string;
|
|
49
|
+
description: string;
|
|
50
|
+
inputSchema: z.ZodObject<{
|
|
51
|
+
tabId: z.ZodOptional<z.ZodString>;
|
|
52
|
+
interestingOnly: z.ZodDefault<z.ZodBoolean>;
|
|
53
|
+
}, "strip", z.ZodTypeAny, {
|
|
54
|
+
interestingOnly: boolean;
|
|
55
|
+
tabId?: string | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
tabId?: string | undefined;
|
|
58
|
+
interestingOnly?: boolean | undefined;
|
|
59
|
+
}>;
|
|
60
|
+
handler: ({ tabId, interestingOnly }: any) => Promise<{
|
|
61
|
+
success: boolean;
|
|
62
|
+
snapshot: string;
|
|
63
|
+
nodeCount: any;
|
|
64
|
+
totalNodes: any;
|
|
65
|
+
}>;
|
|
66
|
+
})[];
|
|
67
|
+
//# sourceMappingURL=network-accessibility.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network-accessibility.d.ts","sourceRoot":"","sources":["../../src/tools/network-accessibility.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D,wBAAgB,+BAA+B,CAAC,SAAS,EAAE,eAAe;;;;;;;;;;yBAqDzC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAkLH,GAAG;;;;;;;;;;;;;;;;;0CA0GqB,GAAG;;;;;;KAgF3D"}
|