@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.
Files changed (107) hide show
  1. package/AGENTS.md +11 -0
  2. package/CHANGELOG.md +45 -0
  3. package/README.md +105 -11
  4. package/dist/browser/browser-manager.d.ts +7 -1
  5. package/dist/browser/browser-manager.d.ts.map +1 -1
  6. package/dist/browser/browser-manager.js +196 -40
  7. package/dist/browser/browser-manager.js.map +1 -1
  8. package/dist/browser/chrome-launcher.d.ts +13 -2
  9. package/dist/browser/chrome-launcher.d.ts.map +1 -1
  10. package/dist/browser/chrome-launcher.js +33 -4
  11. package/dist/browser/chrome-launcher.js.map +1 -1
  12. package/dist/browser/driver/capabilities.d.ts +22 -0
  13. package/dist/browser/driver/capabilities.d.ts.map +1 -0
  14. package/dist/browser/driver/capabilities.js +70 -0
  15. package/dist/browser/driver/capabilities.js.map +1 -0
  16. package/dist/browser/driver/cdp-driver.d.ts +77 -0
  17. package/dist/browser/driver/cdp-driver.d.ts.map +1 -0
  18. package/dist/browser/driver/cdp-driver.js +190 -0
  19. package/dist/browser/driver/cdp-driver.js.map +1 -0
  20. package/dist/browser/driver/factory.d.ts +10 -0
  21. package/dist/browser/driver/factory.d.ts.map +1 -0
  22. package/dist/browser/driver/factory.js +23 -0
  23. package/dist/browser/driver/factory.js.map +1 -0
  24. package/dist/browser/driver/index.d.ts +6 -0
  25. package/dist/browser/driver/index.d.ts.map +1 -0
  26. package/dist/browser/driver/index.js +5 -0
  27. package/dist/browser/driver/index.js.map +1 -0
  28. package/dist/browser/driver/types.d.ts +106 -0
  29. package/dist/browser/driver/types.d.ts.map +1 -0
  30. package/dist/browser/driver/types.js +25 -0
  31. package/dist/browser/driver/types.js.map +1 -0
  32. package/dist/browser/sessions.d.ts +49 -0
  33. package/dist/browser/sessions.d.ts.map +1 -0
  34. package/dist/browser/sessions.js +249 -0
  35. package/dist/browser/sessions.js.map +1 -0
  36. package/dist/browser/types.d.ts +13 -0
  37. package/dist/browser/types.d.ts.map +1 -1
  38. package/dist/cli/skill-template.d.ts +1 -1
  39. package/dist/cli/skill-template.d.ts.map +1 -1
  40. package/dist/cli/skill-template.js +1 -1
  41. package/dist/cli/skill-template.js.map +1 -1
  42. package/dist/commands/connect.d.ts +2 -2
  43. package/dist/commands/connect.d.ts.map +1 -1
  44. package/dist/commands/connect.js +2 -2
  45. package/dist/commands/connect.js.map +1 -1
  46. package/dist/mcp/server.d.ts +9 -15
  47. package/dist/mcp/server.d.ts.map +1 -1
  48. package/dist/mcp/server.js +32 -74
  49. package/dist/mcp/server.js.map +1 -1
  50. package/dist/mcp/tools/browser.d.ts +2 -3
  51. package/dist/mcp/tools/browser.d.ts.map +1 -1
  52. package/dist/mcp/tools/browser.js +85 -70
  53. package/dist/mcp/tools/browser.js.map +1 -1
  54. package/dist/mcp/tools/connect.d.ts +2 -3
  55. package/dist/mcp/tools/connect.d.ts.map +1 -1
  56. package/dist/mcp/tools/connect.js +9 -9
  57. package/dist/mcp/tools/connect.js.map +1 -1
  58. package/dist/mcp/tools/driver-context.d.ts +14 -0
  59. package/dist/mcp/tools/driver-context.d.ts.map +1 -0
  60. package/dist/mcp/tools/driver-context.js +43 -0
  61. package/dist/mcp/tools/driver-context.js.map +1 -0
  62. package/dist/mcp/tools/files.d.ts.map +1 -1
  63. package/dist/mcp/tools/files.js +5 -15
  64. package/dist/mcp/tools/files.js.map +1 -1
  65. package/dist/mcp/tools/interaction.d.ts.map +1 -1
  66. package/dist/mcp/tools/interaction.js +7 -26
  67. package/dist/mcp/tools/interaction.js.map +1 -1
  68. package/dist/mcp/tools/names.d.ts +1 -1
  69. package/dist/mcp/tools/names.d.ts.map +1 -1
  70. package/dist/mcp/tools/names.js +2 -0
  71. package/dist/mcp/tools/names.js.map +1 -1
  72. package/dist/mcp/tools/network.d.ts.map +1 -1
  73. package/dist/mcp/tools/network.js +3 -11
  74. package/dist/mcp/tools/network.js.map +1 -1
  75. package/dist/mcp/tools/performance.d.ts.map +1 -1
  76. package/dist/mcp/tools/performance.js +2 -12
  77. package/dist/mcp/tools/performance.js.map +1 -1
  78. package/dist/mcp/tools/snapshot.d.ts.map +1 -1
  79. package/dist/mcp/tools/snapshot.js +3 -14
  80. package/dist/mcp/tools/snapshot.js.map +1 -1
  81. package/dist/mcp/tools/styles.d.ts.map +1 -1
  82. package/dist/mcp/tools/styles.js +2 -11
  83. package/dist/mcp/tools/styles.js.map +1 -1
  84. package/package.json +1 -1
  85. package/skills/pilot/SKILL.md +9 -0
  86. package/src/browser/browser-manager.ts +248 -41
  87. package/src/browser/chrome-launcher.ts +40 -4
  88. package/src/browser/driver/capabilities.ts +88 -0
  89. package/src/browser/driver/cdp-driver.ts +260 -0
  90. package/src/browser/driver/factory.ts +33 -0
  91. package/src/browser/driver/index.ts +22 -0
  92. package/src/browser/driver/types.ts +156 -0
  93. package/src/browser/sessions.ts +299 -0
  94. package/src/browser/types.ts +14 -0
  95. package/src/cli/skill-template.ts +1 -1
  96. package/src/commands/connect.ts +3 -3
  97. package/src/mcp/server.ts +48 -91
  98. package/src/mcp/tools/browser.ts +105 -87
  99. package/src/mcp/tools/connect.ts +10 -11
  100. package/src/mcp/tools/driver-context.ts +56 -0
  101. package/src/mcp/tools/files.ts +5 -16
  102. package/src/mcp/tools/interaction.ts +7 -27
  103. package/src/mcp/tools/names.ts +2 -0
  104. package/src/mcp/tools/network.ts +2 -12
  105. package/src/mcp/tools/performance.ts +2 -13
  106. package/src/mcp/tools/snapshot.ts +3 -15
  107. package/src/mcp/tools/styles.ts +2 -12
@@ -1,12 +1,9 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { BrowserManager } from '../browser.js';
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 { attachDialogHandler } from '../browser/interaction/dialogs.js';
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
- manager: null,
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
- function attachEventHandlers(manager) {
45
- let monitoredClient = null;
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.manager) {
101
- await context.manager.destroy();
102
- context.manager = null;
58
+ if (context.driver) {
59
+ await context.driver.destroy();
60
+ context.driver = null;
103
61
  }
104
62
  }
105
63
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
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 { BrowserManager } from '../../browser.js';
3
- import type { BrowserContext } from '../server.js';
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;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA4PnD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,kBAAkB,EAAE,MAAM,cAAc,GACvC,IAAI,CA4cN"}
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 { executeScreenshot } from '../../commands/screenshot.js';
3
- import { executeNavigate } from '../../commands/navigate.js';
4
- import { executeClick } from '../../commands/click.js';
5
- import { executeType } from '../../commands/type.js';
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(30000)
158
- .describe('Timeout waiting for Chrome DevTools to become ready, in milliseconds.')
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 requireClient(context) {
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.manager?.isConnected()) {
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.manager) {
219
- await context.manager.destroy();
220
- context.manager = null;
205
+ if (context.driver) {
206
+ await context.driver.destroy();
207
+ context.driver = null;
221
208
  }
222
- const manager = makeBrowserManager();
223
- const { headless: effectiveHeadless, viewport: effectiveViewport } = await manager.launch({
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.manager = manager;
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.manager) {
232
+ if (!context.driver) {
246
233
  return {
247
- content: [{ type: 'text', text: 'Browser is not running.' }]
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.manager.destroy();
251
- context.manager = null;
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 { client } = requireClient(context);
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 { client, manager } = requireClient(context);
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 { client } = requireClient(context);
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
- const { client } = requireClient(context);
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 { client } = requireClient(context);
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 { client, manager } = requireClient(context);
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 { client } = requireClient(context);
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 { manager } = requireClient(context);
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 { manager } = requireClient(context);
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
- const { manager } = requireClient(context);
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
- const { manager } = requireClient(context);
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 { client, manager } = requireClient(context);
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: deviceScaleFactor ?? current?.deviceScaleFactor ?? 1,
448
- mobile: effectiveMobile,
449
- responsive: false,
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 { manager } = requireClient(context);
480
+ const driver = requireDriver(context);
466
481
  switch (action) {
467
482
  case 'list': {
468
- const tabs = await executeListTabs(manager);
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 executeNewTab(manager, url);
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 executeSwitchTab(manager, targetId);
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 executeCloseTab(manager, targetId);
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":"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"}
@@ -1,5 +1,4 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import type { BrowserContext } from '../server.js';
3
- import type { BrowserManager } from '../../browser/browser-manager.js';
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,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAiBvE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,kBAAkB,EAAE,MAAM,cAAc,GACvC,IAAI,CAqCN"}
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, makeBrowserManager) {
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.manager?.isConnected()) {
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.manager) {
29
- await context.manager.destroy();
30
- context.manager = null;
28
+ if (context.driver) {
29
+ await context.driver.destroy();
30
+ context.driver = null;
31
31
  }
32
- const manager = makeBrowserManager();
32
+ const driver = makeDriver();
33
33
  try {
34
- const result = await executeConnect(manager, { host, port });
35
- context.manager = manager;
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 manager.destroy();
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;AAIxB,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,kBAAwC;IAExC,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,8OAA8O,EAC9O,YAAY,EACZ,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QACvB,IAAI,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,wEAAwE;qBAC/E;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,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,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,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"}