@everydaydevopsio/pilot 0.6.2 → 0.7.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/AGENTS.md +11 -0
- package/CHANGELOG.md +45 -0
- package/README.md +105 -11
- package/dist/browser/browser-manager.d.ts +7 -1
- package/dist/browser/browser-manager.d.ts.map +1 -1
- package/dist/browser/browser-manager.js +196 -40
- package/dist/browser/browser-manager.js.map +1 -1
- package/dist/browser/chrome-launcher.d.ts +13 -2
- package/dist/browser/chrome-launcher.d.ts.map +1 -1
- package/dist/browser/chrome-launcher.js +33 -4
- package/dist/browser/chrome-launcher.js.map +1 -1
- package/dist/browser/driver/capabilities.d.ts +22 -0
- package/dist/browser/driver/capabilities.d.ts.map +1 -0
- package/dist/browser/driver/capabilities.js +70 -0
- package/dist/browser/driver/capabilities.js.map +1 -0
- package/dist/browser/driver/cdp-driver.d.ts +77 -0
- package/dist/browser/driver/cdp-driver.d.ts.map +1 -0
- package/dist/browser/driver/cdp-driver.js +190 -0
- package/dist/browser/driver/cdp-driver.js.map +1 -0
- package/dist/browser/driver/factory.d.ts +10 -0
- package/dist/browser/driver/factory.d.ts.map +1 -0
- package/dist/browser/driver/factory.js +23 -0
- package/dist/browser/driver/factory.js.map +1 -0
- package/dist/browser/driver/index.d.ts +6 -0
- package/dist/browser/driver/index.d.ts.map +1 -0
- package/dist/browser/driver/index.js +5 -0
- package/dist/browser/driver/index.js.map +1 -0
- package/dist/browser/driver/types.d.ts +106 -0
- package/dist/browser/driver/types.d.ts.map +1 -0
- package/dist/browser/driver/types.js +25 -0
- package/dist/browser/driver/types.js.map +1 -0
- package/dist/browser/sessions.d.ts +49 -0
- package/dist/browser/sessions.d.ts.map +1 -0
- package/dist/browser/sessions.js +249 -0
- package/dist/browser/sessions.js.map +1 -0
- package/dist/browser/types.d.ts +13 -0
- package/dist/browser/types.d.ts.map +1 -1
- package/dist/cli/skill-template.d.ts +1 -1
- package/dist/cli/skill-template.d.ts.map +1 -1
- package/dist/cli/skill-template.js +1 -1
- package/dist/cli/skill-template.js.map +1 -1
- package/dist/commands/connect.d.ts +2 -2
- package/dist/commands/connect.d.ts.map +1 -1
- package/dist/commands/connect.js +2 -2
- package/dist/commands/connect.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -15
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +32 -74
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/browser.d.ts +2 -3
- package/dist/mcp/tools/browser.d.ts.map +1 -1
- package/dist/mcp/tools/browser.js +85 -70
- package/dist/mcp/tools/browser.js.map +1 -1
- package/dist/mcp/tools/connect.d.ts +2 -3
- package/dist/mcp/tools/connect.d.ts.map +1 -1
- package/dist/mcp/tools/connect.js +9 -9
- package/dist/mcp/tools/connect.js.map +1 -1
- package/dist/mcp/tools/driver-context.d.ts +14 -0
- package/dist/mcp/tools/driver-context.d.ts.map +1 -0
- package/dist/mcp/tools/driver-context.js +43 -0
- package/dist/mcp/tools/driver-context.js.map +1 -0
- package/dist/mcp/tools/files.d.ts.map +1 -1
- package/dist/mcp/tools/files.js +5 -15
- package/dist/mcp/tools/files.js.map +1 -1
- package/dist/mcp/tools/interaction.d.ts.map +1 -1
- package/dist/mcp/tools/interaction.js +7 -26
- package/dist/mcp/tools/interaction.js.map +1 -1
- package/dist/mcp/tools/names.d.ts +1 -1
- package/dist/mcp/tools/names.d.ts.map +1 -1
- package/dist/mcp/tools/names.js +2 -0
- package/dist/mcp/tools/names.js.map +1 -1
- package/dist/mcp/tools/network.d.ts.map +1 -1
- package/dist/mcp/tools/network.js +3 -11
- package/dist/mcp/tools/network.js.map +1 -1
- package/dist/mcp/tools/performance.d.ts.map +1 -1
- package/dist/mcp/tools/performance.js +2 -12
- package/dist/mcp/tools/performance.js.map +1 -1
- package/dist/mcp/tools/snapshot.d.ts.map +1 -1
- package/dist/mcp/tools/snapshot.js +3 -14
- package/dist/mcp/tools/snapshot.js.map +1 -1
- package/dist/mcp/tools/styles.d.ts.map +1 -1
- package/dist/mcp/tools/styles.js +2 -11
- package/dist/mcp/tools/styles.js.map +1 -1
- package/package.json +1 -1
- package/skills/pilot/SKILL.md +9 -0
- package/src/browser/browser-manager.ts +248 -41
- package/src/browser/chrome-launcher.ts +40 -4
- package/src/browser/driver/capabilities.ts +88 -0
- package/src/browser/driver/cdp-driver.ts +260 -0
- package/src/browser/driver/factory.ts +33 -0
- package/src/browser/driver/index.ts +22 -0
- package/src/browser/driver/types.ts +156 -0
- package/src/browser/sessions.ts +299 -0
- package/src/browser/types.ts +14 -0
- package/src/cli/skill-template.ts +1 -1
- package/src/commands/connect.ts +3 -3
- package/src/mcp/server.ts +48 -91
- package/src/mcp/tools/browser.ts +105 -87
- package/src/mcp/tools/connect.ts +10 -11
- package/src/mcp/tools/driver-context.ts +56 -0
- package/src/mcp/tools/files.ts +5 -16
- package/src/mcp/tools/interaction.ts +7 -27
- package/src/mcp/tools/names.ts +2 -0
- package/src/mcp/tools/network.ts +2 -12
- package/src/mcp/tools/performance.ts +2 -13
- package/src/mcp/tools/snapshot.ts +3 -15
- package/src/mcp/tools/styles.ts +2 -12
package/dist/mcp/server.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import {
|
|
2
|
+
import { createDriver } from '../browser/driver/factory.js';
|
|
3
3
|
import { ElementRefMap } from '../browser/inspect/element-ref.js';
|
|
4
|
-
import { resetCssState } from '../browser/inspect/styles.js';
|
|
5
4
|
import { DialogQueue } from '../browser/interaction/dialogs.js';
|
|
6
|
-
import {
|
|
7
|
-
import { DownloadTracker, enableDownloads, attachDownloadHandler } from '../browser/interaction/downloads.js';
|
|
5
|
+
import { DownloadTracker } from '../browser/interaction/downloads.js';
|
|
8
6
|
import { NetworkBuffer } from '../browser/network/network-buffer.js';
|
|
9
|
-
import { attachNetworkMonitor } from '../browser/network/network-monitor.js';
|
|
10
7
|
import { loadConfig } from '../util/config.js';
|
|
11
8
|
import { ConsoleBuffer } from './console-buffer.js';
|
|
12
9
|
import { registerBrowserTools } from './tools/browser.js';
|
|
@@ -20,86 +17,47 @@ import { registerFilesTools } from './tools/files.js';
|
|
|
20
17
|
import { createTraceState } from '../browser/performance/trace.js';
|
|
21
18
|
import { registerPerformanceTools } from './tools/performance.js';
|
|
22
19
|
import { registerConnectTools } from './tools/connect.js';
|
|
20
|
+
import { withCapabilityGate } from './tools/driver-context.js';
|
|
21
|
+
/**
|
|
22
|
+
* Register every Pilot tool behind the capability gate, so a tool the active
|
|
23
|
+
* driver cannot support fails before its handler runs.
|
|
24
|
+
*/
|
|
25
|
+
export function registerAllTools(server, context, makeDriver) {
|
|
26
|
+
const gated = withCapabilityGate(server, () => context.driver);
|
|
27
|
+
registerBrowserTools(gated, context, makeDriver);
|
|
28
|
+
registerErrorTools(gated, context.consoleBuffer);
|
|
29
|
+
registerSnapshotTools(gated, context);
|
|
30
|
+
registerInteractionTools(gated, context);
|
|
31
|
+
registerNetworkTools(gated, context);
|
|
32
|
+
registerRuntimeTools(gated, context.consoleBuffer);
|
|
33
|
+
registerStylesTools(gated, context);
|
|
34
|
+
registerFilesTools(gated, context);
|
|
35
|
+
registerPerformanceTools(gated, context);
|
|
36
|
+
registerConnectTools(gated, context, makeDriver);
|
|
37
|
+
}
|
|
23
38
|
export async function createMcpServer(config) {
|
|
24
39
|
const server = new McpServer({
|
|
25
40
|
name: 'pilot',
|
|
26
41
|
version: '0.1.0'
|
|
27
42
|
});
|
|
28
|
-
const consoleBuffer = new ConsoleBuffer(config.bufferSize);
|
|
29
|
-
const elementRefMap = new ElementRefMap();
|
|
30
|
-
const networkBuffer = new NetworkBuffer();
|
|
31
|
-
const dialogQueue = new DialogQueue();
|
|
32
|
-
const downloadTracker = new DownloadTracker();
|
|
33
|
-
const traceState = createTraceState();
|
|
34
43
|
const context = {
|
|
35
|
-
|
|
36
|
-
consoleBuffer,
|
|
37
|
-
elementRefMap,
|
|
38
|
-
networkBuffer,
|
|
39
|
-
dialogQueue,
|
|
40
|
-
downloadTracker,
|
|
41
|
-
traceState,
|
|
44
|
+
driver: null,
|
|
45
|
+
consoleBuffer: new ConsoleBuffer(config.bufferSize),
|
|
46
|
+
elementRefMap: new ElementRefMap(),
|
|
47
|
+
networkBuffer: new NetworkBuffer(),
|
|
48
|
+
dialogQueue: new DialogQueue(),
|
|
49
|
+
downloadTracker: new DownloadTracker(),
|
|
50
|
+
traceState: createTraceState(),
|
|
42
51
|
baseConfig: config
|
|
43
52
|
};
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
function ensureMonitors() {
|
|
47
|
-
const client = manager.getClient();
|
|
48
|
-
if (client && client !== monitoredClient) {
|
|
49
|
-
attachNetworkMonitor(client, networkBuffer);
|
|
50
|
-
attachDialogHandler(client, dialogQueue);
|
|
51
|
-
attachDownloadHandler(client, downloadTracker);
|
|
52
|
-
void enableDownloads(client).catch(() => {
|
|
53
|
-
// Download behavior setup may fail in some environments
|
|
54
|
-
});
|
|
55
|
-
monitoredClient = client;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
manager.setEventCallback((event, data) => {
|
|
59
|
-
if (event === 'console_message') {
|
|
60
|
-
consoleBuffer.push(data);
|
|
61
|
-
}
|
|
62
|
-
if (event === 'page_navigated') {
|
|
63
|
-
elementRefMap.invalidate();
|
|
64
|
-
}
|
|
65
|
-
if (event === 'browser_connected') {
|
|
66
|
-
ensureMonitors();
|
|
67
|
-
}
|
|
68
|
-
if (event === 'browser_disconnected') {
|
|
69
|
-
monitoredClient = null;
|
|
70
|
-
resetCssState();
|
|
71
|
-
dialogQueue.clear();
|
|
72
|
-
downloadTracker.clear();
|
|
73
|
-
}
|
|
74
|
-
// Reattach after tab switch (new client, no connect event)
|
|
75
|
-
ensureMonitors();
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
function makeBrowserManager() {
|
|
79
|
-
const browserConfig = loadConfig({
|
|
80
|
-
cdpPort: config.cdpPort,
|
|
81
|
-
cdpHost: config.cdpHost
|
|
82
|
-
});
|
|
83
|
-
const manager = new BrowserManager(browserConfig);
|
|
84
|
-
attachEventHandlers(manager);
|
|
85
|
-
return manager;
|
|
86
|
-
}
|
|
87
|
-
registerBrowserTools(server, context, makeBrowserManager);
|
|
88
|
-
registerErrorTools(server, consoleBuffer);
|
|
89
|
-
registerSnapshotTools(server, context);
|
|
90
|
-
registerInteractionTools(server, context);
|
|
91
|
-
registerNetworkTools(server, context);
|
|
92
|
-
registerRuntimeTools(server, consoleBuffer);
|
|
93
|
-
registerStylesTools(server, context);
|
|
94
|
-
registerFilesTools(server, context);
|
|
95
|
-
registerPerformanceTools(server, context);
|
|
96
|
-
registerConnectTools(server, context, makeBrowserManager);
|
|
53
|
+
const makeDriver = () => createDriver('chrome', loadConfig({ cdpPort: config.cdpPort, cdpHost: config.cdpHost }), context);
|
|
54
|
+
registerAllTools(server, context, makeDriver);
|
|
97
55
|
return {
|
|
98
56
|
server,
|
|
99
57
|
cleanup: async () => {
|
|
100
|
-
if (context.
|
|
101
|
-
await context.
|
|
102
|
-
context.
|
|
58
|
+
if (context.driver) {
|
|
59
|
+
await context.driver.destroy();
|
|
60
|
+
context.driver = null;
|
|
103
61
|
}
|
|
104
62
|
}
|
|
105
63
|
};
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
export declare function registerBrowserTools(server: McpServer, context: BrowserContext, makeBrowserManager: () => BrowserManager): void;
|
|
2
|
+
import type { BrowserContext, DriverFactory } from '../server.js';
|
|
3
|
+
export declare function registerBrowserTools(server: McpServer, context: BrowserContext, makeDriver: DriverFactory): void;
|
|
5
4
|
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAsOlE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,GACxB,IAAI,CAsfN"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { executeEvaluate } from '../../commands/evaluate.js';
|
|
7
|
-
import { executeWait } from '../../commands/wait.js';
|
|
8
|
-
import { executePageInfo } from '../../commands/page_info.js';
|
|
9
|
-
import { executeListTabs, executeNewTab, executeCloseTab, executeSwitchTab } from '../../commands/tabs.js';
|
|
10
|
-
import { VIEWPORT_PRESETS, applyViewport } from '../../viewport.js';
|
|
2
|
+
import { DEFAULT_STARTUP_TIMEOUT_MS } from '../../browser/chrome-launcher.js';
|
|
3
|
+
import { listProfiles, pilotDataDir, stopPilotBrowsers } from '../../browser/sessions.js';
|
|
4
|
+
import { VIEWPORT_PRESETS } from '../../viewport.js';
|
|
5
|
+
import { requireDriver } from './driver-context.js';
|
|
11
6
|
// Raw shapes for MCP SDK (expects ZodRawShape, not ZodObject)
|
|
12
7
|
const screenshotShape = {
|
|
13
8
|
format: z
|
|
@@ -154,8 +149,8 @@ const startShape = {
|
|
|
154
149
|
.number()
|
|
155
150
|
.int()
|
|
156
151
|
.positive()
|
|
157
|
-
.default(
|
|
158
|
-
.describe(
|
|
152
|
+
.default(DEFAULT_STARTUP_TIMEOUT_MS)
|
|
153
|
+
.describe(`Timeout waiting for Chrome DevTools to become ready, in milliseconds. Defaults to ${DEFAULT_STARTUP_TIMEOUT_MS}. Startup fails immediately if Chrome exits, so raising this only helps when Chrome is slow to start (for example a first run on a Linux server with software rendering).`)
|
|
159
154
|
};
|
|
160
155
|
const newTabShape = {
|
|
161
156
|
url: z
|
|
@@ -195,17 +190,9 @@ const viewportResizeShape = {
|
|
|
195
190
|
.optional()
|
|
196
191
|
.describe('Emulate a mobile device. Defaults to the current value if omitted.')
|
|
197
192
|
};
|
|
198
|
-
function
|
|
199
|
-
const manager = context.manager;
|
|
200
|
-
if (!manager || !manager.isConnected()) {
|
|
201
|
-
throw new Error('Browser not started. Call browser_start first.');
|
|
202
|
-
}
|
|
203
|
-
const client = manager.getClient();
|
|
204
|
-
return { client, manager };
|
|
205
|
-
}
|
|
206
|
-
export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
193
|
+
export function registerBrowserTools(server, context, makeDriver) {
|
|
207
194
|
server.tool('browser_start', 'Launch the Chrome browser. Call this before using any other browser tools.', startShape, async ({ headless, chromePath, profileName, viewport, viewportWidth, viewportHeight, deviceScaleFactor, responsive, startupTimeoutMs }) => {
|
|
208
|
-
if (context.
|
|
195
|
+
if (context.driver?.isConnected()) {
|
|
209
196
|
return {
|
|
210
197
|
content: [
|
|
211
198
|
{
|
|
@@ -215,12 +202,12 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
215
202
|
]
|
|
216
203
|
};
|
|
217
204
|
}
|
|
218
|
-
if (context.
|
|
219
|
-
await context.
|
|
220
|
-
context.
|
|
205
|
+
if (context.driver) {
|
|
206
|
+
await context.driver.destroy();
|
|
207
|
+
context.driver = null;
|
|
221
208
|
}
|
|
222
|
-
const
|
|
223
|
-
const { headless: effectiveHeadless, viewport: effectiveViewport } = await
|
|
209
|
+
const driver = makeDriver();
|
|
210
|
+
const { headless: effectiveHeadless, viewport: effectiveViewport } = await driver.launch({
|
|
224
211
|
headless,
|
|
225
212
|
chromePath,
|
|
226
213
|
profileName,
|
|
@@ -231,7 +218,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
231
218
|
responsive,
|
|
232
219
|
startupTimeoutMs
|
|
233
220
|
});
|
|
234
|
-
context.
|
|
221
|
+
context.driver = driver;
|
|
235
222
|
return {
|
|
236
223
|
content: [
|
|
237
224
|
{
|
|
@@ -242,20 +229,66 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
242
229
|
};
|
|
243
230
|
});
|
|
244
231
|
server.tool('browser_stop', 'Stop the Chrome browser and free all resources.', {}, async () => {
|
|
245
|
-
if (!context.
|
|
232
|
+
if (!context.driver) {
|
|
246
233
|
return {
|
|
247
|
-
content: [
|
|
234
|
+
content: [
|
|
235
|
+
{
|
|
236
|
+
type: 'text',
|
|
237
|
+
text: 'Browser is not running. This Pilot session is not tracking a launched or connected browser; a failed browser_start stops the Chrome it launched and reports the outcome in its error.'
|
|
238
|
+
}
|
|
239
|
+
]
|
|
248
240
|
};
|
|
249
241
|
}
|
|
250
|
-
await context.
|
|
251
|
-
context.
|
|
242
|
+
await context.driver.destroy();
|
|
243
|
+
context.driver = null;
|
|
252
244
|
return {
|
|
253
245
|
content: [{ type: 'text', text: 'Browser stopped.' }]
|
|
254
246
|
};
|
|
255
247
|
});
|
|
248
|
+
server.tool('browser_status', 'Show the browser tracked by this Pilot session and the lock state of every Pilot profile on this machine (including browsers started by other Pilot sessions). Read-only. Use it to diagnose "profile already in use" errors.', {}, async () => {
|
|
249
|
+
const status = {
|
|
250
|
+
session: context.driver?.getSessionInfo() ?? {
|
|
251
|
+
mode: 'none',
|
|
252
|
+
connected: false
|
|
253
|
+
},
|
|
254
|
+
dataDir: pilotDataDir(),
|
|
255
|
+
profiles: listProfiles()
|
|
256
|
+
};
|
|
257
|
+
return {
|
|
258
|
+
content: [
|
|
259
|
+
{ type: 'text', text: JSON.stringify(status, null, 2) }
|
|
260
|
+
]
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
server.tool('browser_stop_all', 'Stop every Pilot-managed Chrome on this machine: the browser in this session plus any Chrome holding a Pilot profile lock, including ones started by other Pilot sessions. Only processes whose command line shows Chrome using a Pilot profile directory are stopped; browsers on other hosts and unverifiable locks are skipped. Also removes stale locks. Ask the user before calling this, since it can close browsers other agents are using.', {}, async () => {
|
|
264
|
+
const lines = [];
|
|
265
|
+
if (context.driver) {
|
|
266
|
+
const info = context.driver.getSessionInfo();
|
|
267
|
+
await context.driver.destroy();
|
|
268
|
+
context.driver = null;
|
|
269
|
+
if (info.mode === 'launched') {
|
|
270
|
+
lines.push(`this session: stopped Chrome pid ${info.pid} (profile "${info.profile}")`);
|
|
271
|
+
}
|
|
272
|
+
else if (info.mode === 'external') {
|
|
273
|
+
lines.push(`this session: disconnected from ${info.host}:${info.cdpPort} (not stopped; Pilot did not launch it)`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
for (const result of await stopPilotBrowsers()) {
|
|
277
|
+
lines.push(`${result.profile}: ${result.outcome} - ${result.detail}`);
|
|
278
|
+
}
|
|
279
|
+
return {
|
|
280
|
+
content: [
|
|
281
|
+
{
|
|
282
|
+
type: 'text',
|
|
283
|
+
text: lines.length > 0
|
|
284
|
+
? lines.join('\n')
|
|
285
|
+
: 'No Pilot-managed browsers were running.'
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
};
|
|
289
|
+
});
|
|
256
290
|
server.tool('browser_screenshot', 'Capture a screenshot of the current browser viewport or full page', screenshotShape, async ({ format, quality, fullPage }) => {
|
|
257
|
-
const
|
|
258
|
-
const result = await executeScreenshot(client, {
|
|
291
|
+
const result = await requireDriver(context).screenshot({
|
|
259
292
|
format,
|
|
260
293
|
quality,
|
|
261
294
|
fullPage
|
|
@@ -282,8 +315,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
282
315
|
};
|
|
283
316
|
});
|
|
284
317
|
server.tool('browser_navigate', 'Navigate to a URL and wait for page load', navigateShape, async ({ url, waitUntil, timeoutMs }) => {
|
|
285
|
-
const
|
|
286
|
-
const result = await executeNavigate(client, manager, {
|
|
318
|
+
const result = await requireDriver(context).navigate({
|
|
287
319
|
url,
|
|
288
320
|
waitUntil,
|
|
289
321
|
timeoutMs
|
|
@@ -311,8 +343,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
311
343
|
isError: true
|
|
312
344
|
};
|
|
313
345
|
}
|
|
314
|
-
const
|
|
315
|
-
const result = await executeClick(client, params, context.elementRefMap);
|
|
346
|
+
const result = await requireDriver(context).click(params);
|
|
316
347
|
return {
|
|
317
348
|
content: [
|
|
318
349
|
{
|
|
@@ -323,8 +354,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
323
354
|
};
|
|
324
355
|
});
|
|
325
356
|
server.tool('browser_type', 'Type text into the focused element, a ref (from browser_snapshot), or a CSS selector. Generates keystroke events (use browser_fill to replace a field value entirely).', typeShape, async (params) => {
|
|
326
|
-
|
|
327
|
-
await executeType(client, params, context.elementRefMap);
|
|
357
|
+
await requireDriver(context).type(params);
|
|
328
358
|
const target = params.ref ?? params.selector;
|
|
329
359
|
return {
|
|
330
360
|
content: [
|
|
@@ -336,8 +366,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
336
366
|
};
|
|
337
367
|
});
|
|
338
368
|
server.tool('browser_evaluate', 'Execute JavaScript in the page context and return the result', evaluateShape, async ({ expression, awaitPromise, timeoutMs }) => {
|
|
339
|
-
const
|
|
340
|
-
const result = await executeEvaluate(client, {
|
|
369
|
+
const result = await requireDriver(context).evaluate({
|
|
341
370
|
expression,
|
|
342
371
|
awaitPromise,
|
|
343
372
|
timeoutMs
|
|
@@ -366,8 +395,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
366
395
|
isError: true
|
|
367
396
|
};
|
|
368
397
|
}
|
|
369
|
-
const
|
|
370
|
-
const result = await executeWait(client, manager, params);
|
|
398
|
+
const result = await requireDriver(context).wait(params);
|
|
371
399
|
return {
|
|
372
400
|
content: [
|
|
373
401
|
{
|
|
@@ -378,8 +406,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
378
406
|
};
|
|
379
407
|
});
|
|
380
408
|
server.tool('browser_page_info', 'Get information about the current page (URL, title, ready state)', {}, async () => {
|
|
381
|
-
const
|
|
382
|
-
const result = await executePageInfo(client);
|
|
409
|
+
const result = await requireDriver(context).pageInfo();
|
|
383
410
|
return {
|
|
384
411
|
content: [
|
|
385
412
|
{
|
|
@@ -390,8 +417,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
390
417
|
};
|
|
391
418
|
});
|
|
392
419
|
server.tool('browser_list_tabs', 'List all open browser tabs with their target IDs, URLs, titles, and active status', {}, async () => {
|
|
393
|
-
const
|
|
394
|
-
const tabs = await executeListTabs(manager);
|
|
420
|
+
const tabs = await requireDriver(context).listTabs();
|
|
395
421
|
return {
|
|
396
422
|
content: [
|
|
397
423
|
{
|
|
@@ -402,8 +428,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
402
428
|
};
|
|
403
429
|
});
|
|
404
430
|
server.tool('browser_new_tab', 'Open a new browser tab, optionally navigating to a URL', newTabShape, async ({ url }) => {
|
|
405
|
-
const
|
|
406
|
-
const result = await executeNewTab(manager, url);
|
|
431
|
+
const result = await requireDriver(context).newTab(url);
|
|
407
432
|
return {
|
|
408
433
|
content: [
|
|
409
434
|
{
|
|
@@ -414,8 +439,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
414
439
|
};
|
|
415
440
|
});
|
|
416
441
|
server.tool('browser_close_tab', 'Close a browser tab by its target ID. Cannot close the currently active tab.', closeTabShape, async ({ targetId }) => {
|
|
417
|
-
|
|
418
|
-
await executeCloseTab(manager, targetId);
|
|
442
|
+
await requireDriver(context).closeTab(targetId);
|
|
419
443
|
return {
|
|
420
444
|
content: [
|
|
421
445
|
{
|
|
@@ -426,8 +450,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
426
450
|
};
|
|
427
451
|
});
|
|
428
452
|
server.tool('browser_switch_tab', 'Switch the active browser tab to the one with the given target ID. All subsequent commands will target this tab.', switchTabShape, async ({ targetId }) => {
|
|
429
|
-
|
|
430
|
-
await executeSwitchTab(manager, targetId);
|
|
453
|
+
await requireDriver(context).switchTab(targetId);
|
|
431
454
|
return {
|
|
432
455
|
content: [
|
|
433
456
|
{
|
|
@@ -438,20 +461,12 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
438
461
|
};
|
|
439
462
|
});
|
|
440
463
|
server.tool('browser_viewport_resize', 'Resize the browser viewport to new dimensions. Updates both the window size and the rendering viewport. Disables responsive mode so the viewport stays locked at the specified size.', viewportResizeShape, async ({ width, height, deviceScaleFactor, mobile }) => {
|
|
441
|
-
const
|
|
442
|
-
const current = manager.getViewportConfig();
|
|
443
|
-
const effectiveMobile = mobile ?? current?.mobile ?? false;
|
|
444
|
-
const newConfig = {
|
|
464
|
+
const newConfig = await requireDriver(context).resizeViewport({
|
|
445
465
|
width,
|
|
446
466
|
height,
|
|
447
|
-
deviceScaleFactor
|
|
448
|
-
mobile
|
|
449
|
-
|
|
450
|
-
...(effectiveMobile &&
|
|
451
|
-
current?.userAgent && { userAgent: current.userAgent })
|
|
452
|
-
};
|
|
453
|
-
await applyViewport(client, newConfig);
|
|
454
|
-
manager.setViewportConfig(newConfig);
|
|
467
|
+
deviceScaleFactor,
|
|
468
|
+
mobile
|
|
469
|
+
});
|
|
455
470
|
return {
|
|
456
471
|
content: [
|
|
457
472
|
{
|
|
@@ -462,10 +477,10 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
462
477
|
};
|
|
463
478
|
});
|
|
464
479
|
server.tool('browser_tabs', 'Manage browser tabs. Actions: "list" shows all tabs, "new" opens a tab (optional url), "select" switches to a tab (requires targetId), "close" closes a tab (requires targetId).', tabsShape, async ({ action, targetId, url }) => {
|
|
465
|
-
const
|
|
480
|
+
const driver = requireDriver(context);
|
|
466
481
|
switch (action) {
|
|
467
482
|
case 'list': {
|
|
468
|
-
const tabs = await
|
|
483
|
+
const tabs = await driver.listTabs();
|
|
469
484
|
return {
|
|
470
485
|
content: [
|
|
471
486
|
{ type: 'text', text: JSON.stringify(tabs, null, 2) }
|
|
@@ -473,7 +488,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
473
488
|
};
|
|
474
489
|
}
|
|
475
490
|
case 'new': {
|
|
476
|
-
const result = await
|
|
491
|
+
const result = await driver.newTab(url);
|
|
477
492
|
return {
|
|
478
493
|
content: [
|
|
479
494
|
{
|
|
@@ -495,7 +510,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
495
510
|
isError: true
|
|
496
511
|
};
|
|
497
512
|
}
|
|
498
|
-
await
|
|
513
|
+
await driver.switchTab(targetId);
|
|
499
514
|
return {
|
|
500
515
|
content: [
|
|
501
516
|
{
|
|
@@ -517,7 +532,7 @@ export function registerBrowserTools(server, context, makeBrowserManager) {
|
|
|
517
532
|
isError: true
|
|
518
533
|
};
|
|
519
534
|
}
|
|
520
|
-
await
|
|
535
|
+
await driver.closeTab(targetId);
|
|
521
536
|
return {
|
|
522
537
|
content: [
|
|
523
538
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/mcp/tools/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../src/mcp/tools/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,8DAA8D;AAE9D,MAAM,eAAe,GAAG;IACtB,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACrB,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,4BAA4B,CAAC;IACzC,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,uCAAuC,CAAC;IACpD,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,kDAAkD,CAAC;CAChE,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IACpD,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;SACjD,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,wDAAwD,CAAC;IACrE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,oCAAoC,CAAC;CAClD,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IACjE,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC1D,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;IAC1D,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACjC,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,cAAc,CAAC;IAC3B,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,uCAAuC,CAAC;IACpD,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,8BAA8B,CAAC;CAC5C,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;IACzC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,+CAA+C,CAAC;IAC5D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACvE,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IACpE,YAAY,EAAE,CAAC;SACZ,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,8BAA8B,CAAC;IAC3C,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,oCAAoC,CAAC;CAClD,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACtE,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,iCAAiC,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC3E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACpE,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,iBAAiB,CAAC;CAC/B,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,CAAC;SACR,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,8GAA8G,CAC/G;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,sDAAsD,CAAC;IACnE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,sLAAsL,CACvL;IACH,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAA0B,CAAC;SAC5D,QAAQ,EAAE;SACV,QAAQ,CACP,oBAAoB,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;SACjD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;SAC5D,IAAI,CAAC,IAAI,CAAC,oDAAoD,CAClE;IACH,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,8DAA8D,CAAC;IAC3E,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,kHAAkH,CACnH;IACH,UAAU,EAAE,CAAC;SACV,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,6QAA6Q,CAC9Q;IACH,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,OAAO,CAAC,0BAA0B,CAAC;SACnC,QAAQ,CACP,qFAAqF,0BAA0B,2KAA2K,CAC3R;CACJ,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;CACvE,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC/D,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;CACnE,CAAC;AAEF,MAAM,SAAS,GAAG;IAChB,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;SACxC,QAAQ,CACP,kEAAkE,CACnE;IACH,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mDAAmD,CAAC;IAChE,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,0EAA0E,CAC3E;CACJ,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC7E,iBAAiB,EAAE,CAAC;SACjB,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CACP,sEAAsE,CACvE;IACH,MAAM,EAAE,CAAC;SACN,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CACP,oEAAoE,CACrE;CACJ,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,OAAuB,EACvB,UAAyB;IAEzB,MAAM,CAAC,IAAI,CACT,eAAe,EACf,4EAA4E,EAC5E,UAAU,EACV,KAAK,EAAE,EACL,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EACjB,EAAE,EAAE;QACH,IAAI,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,6BAA6B;qBACpC;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAChE,MAAM,MAAM,CAAC,MAAM,CAAC;YAClB,QAAQ;YACR,UAAU;YACV,WAAW;YACX,QAAQ;YACR,aAAa;YACb,cAAc;YACd,iBAAiB;YACjB,UAAU;YACV,gBAAgB;SACjB,CAAC,CAAC;QACL,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;QAExB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,kBAAkB,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,eAAe,iBAAiB,GAAG;iBAC5G;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,iDAAiD,EACjD,EAAE,EACF,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,uLAAuL;qBAC9L;iBACF;aACF,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QAEtB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;SAC/D,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,+NAA+N,EAC/N,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG;YACb,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI;gBAC3C,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,KAAK;aACjB;YACD,OAAO,EAAE,YAAY,EAAE;YACvB,QAAQ,EAAE,YAAY,EAAE;SACzB,CAAC;QACF,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;aACjE;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,obAAob,EACpb,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CACR,oCAAoC,IAAI,CAAC,GAAG,cAAc,IAAI,CAAC,OAAO,IAAI,CAC3E,CAAC;YACJ,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CACR,mCAAmC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,yCAAyC,CACtG,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,MAAM,iBAAiB,EAAE,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EACF,KAAK,CAAC,MAAM,GAAG,CAAC;wBACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,CAAC,CAAC,yCAAyC;iBAChD;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,mEAAmE,EACnE,eAAe,EACf,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;YACrD,MAAM;YACN,OAAO;YACP,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC1E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,OAAgB;wBACtB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;wBACpB,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW;qBACzD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,wBAAwB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE;iBAC9D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,0CAA0C,EAC1C,aAAa,EACb,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACnD,GAAG;YACH,SAAS;YACT,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,gBAAgB,MAAM,CAAC,GAAG,aAAa,MAAM,CAAC,MAAM,GAAG;iBAC9D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,gFAAgF,EAChF,UAAU,EACV,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IACE,MAAM,CAAC,GAAG,KAAK,SAAS;YACxB,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,EAClD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,8DAA8D;qBACrE;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1D,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,eAAe,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,GAAG;iBAC9C;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,wKAAwK,EACxK,SAAS,EACT,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC;QAC7C,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,UAAU,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;iBACjE;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,8DAA8D,EAC9D,aAAa,EACb,KAAK,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YACnD,UAAU;YACV,YAAY;YACZ,SAAS;SACV,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAC1C,IAAI,EACJ,CAAC,CACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,0FAA0F,EAC1F,SAAS,EACT,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IACE,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,MAAM,CAAC,eAAe,KAAK,SAAS;YACpC,MAAM,CAAC,WAAW,KAAK,SAAS;YAChC,MAAM,CAAC,EAAE,KAAK,SAAS,EACvB,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gDAAgD;qBACvD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,qBAAqB,MAAM,CAAC,OAAO,IAAI;iBAC9C;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,kEAAkE,EAClE,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAEvD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;iBACtC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,mFAAmF,EACnF,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QAErD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBACpC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,wDAAwD,EACxD,WAAW,EACX,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QAChB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAExD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,GAAG,GAAG;iBAC1E;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,8EAA8E,EAC9E,aAAa,EACb,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,OAAO,QAAQ,UAAU;iBAChC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kHAAkH,EAClH,cAAc,EACd,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,mBAAmB,QAAQ,GAAG;iBACrC;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,sLAAsL,EACtL,mBAAmB,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;YAC5D,KAAK;YACL,MAAM;YACN,iBAAiB;YACjB,MAAM;SACP,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,uBAAuB,KAAK,IAAI,MAAM,UAAU,SAAS,CAAC,iBAAiB,aAAa,SAAS,CAAC,MAAM,IAAI;iBACnH;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,cAAc,EACd,kLAAkL,EAClL,SAAS,EACT,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEtC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrC,OAAO;oBACL,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;qBAC/D;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,6BAA6B,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,GAAG,GAAG;yBAC1E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,+CAA+C;6BACtD;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,mBAAmB,QAAQ,GAAG;yBACrC;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,8CAA8C;6BACrD;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAChC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,OAAO,QAAQ,UAAU;yBAChC;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type { BrowserContext } from '../server.js';
|
|
3
|
-
|
|
4
|
-
export declare function registerConnectTools(server: McpServer, context: BrowserContext, makeBrowserManager: () => BrowserManager): void;
|
|
2
|
+
import type { BrowserContext, DriverFactory } from '../server.js';
|
|
3
|
+
export declare function registerConnectTools(server: McpServer, context: BrowserContext, makeDriver: DriverFactory): void;
|
|
5
4
|
//# sourceMappingURL=connect.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAiBlE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,GACxB,IAAI,CAqCN"}
|
|
@@ -13,9 +13,9 @@ const connectShape = {
|
|
|
13
13
|
.default(9222)
|
|
14
14
|
.describe('Chrome debugging port (default: 9222)')
|
|
15
15
|
};
|
|
16
|
-
export function registerConnectTools(server, context,
|
|
16
|
+
export function registerConnectTools(server, context, makeDriver) {
|
|
17
17
|
server.tool('browser_connect', 'Connect to an existing Chrome instance with remote debugging enabled. Start Chrome with --remote-debugging-port=PORT, then use this tool to connect. Lists available tabs after connecting. Use browser_switch_tab to select a specific tab.', connectShape, async ({ host, port }) => {
|
|
18
|
-
if (context.
|
|
18
|
+
if (context.driver?.isConnected()) {
|
|
19
19
|
return {
|
|
20
20
|
content: [
|
|
21
21
|
{
|
|
@@ -25,14 +25,14 @@ export function registerConnectTools(server, context, makeBrowserManager) {
|
|
|
25
25
|
]
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
if (context.
|
|
29
|
-
await context.
|
|
30
|
-
context.
|
|
28
|
+
if (context.driver) {
|
|
29
|
+
await context.driver.destroy();
|
|
30
|
+
context.driver = null;
|
|
31
31
|
}
|
|
32
|
-
const
|
|
32
|
+
const driver = makeDriver();
|
|
33
33
|
try {
|
|
34
|
-
const result = await executeConnect(
|
|
35
|
-
context.
|
|
34
|
+
const result = await executeConnect(driver, { host, port });
|
|
35
|
+
context.driver = driver;
|
|
36
36
|
return {
|
|
37
37
|
content: [
|
|
38
38
|
{ type: 'text', text: formatConnectResult(result) }
|
|
@@ -40,7 +40,7 @@ export function registerConnectTools(server, context, makeBrowserManager) {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
catch (err) {
|
|
43
|
-
await
|
|
43
|
+
await driver.destroy();
|
|
44
44
|
throw err;
|
|
45
45
|
}
|
|
46
46
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/mcp/tools/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../src/mcp/tools/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhF,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,4CAA4C,CAAC;IACzD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,uCAAuC,CAAC;CACrD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,MAAiB,EACjB,OAAuB,EACvB,UAAyB;IAEzB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,8OAA8O,EAC9O,YAAY,EACZ,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;YAClC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wEAAwE;qBAC/E;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE;iBAC7D;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { BrowserDriver } from '../../browser/driver/types.js';
|
|
3
|
+
/** Return the connected driver or fail with the standard "not started" error. */
|
|
4
|
+
export declare function requireDriver(context: {
|
|
5
|
+
driver: BrowserDriver | null;
|
|
6
|
+
}): BrowserDriver;
|
|
7
|
+
/**
|
|
8
|
+
* Wrap an McpServer so every registered tool first checks that the active
|
|
9
|
+
* driver (if any) has the capabilities the tool declares in TOOL_CAPABILITIES.
|
|
10
|
+
* Registering a tool without a capability declaration throws, so new tools
|
|
11
|
+
* cannot skip the check.
|
|
12
|
+
*/
|
|
13
|
+
export declare function withCapabilityGate(server: McpServer, getDriver: () => BrowserDriver | null): McpServer;
|
|
14
|
+
//# sourceMappingURL=driver-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-context.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/driver-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CAC9B,GAAG,aAAa,CAMhB;AAMD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,aAAa,GAAG,IAAI,GACpC,SAAS,CAuBX"}
|