@everydaydevopsio/pilot 0.6.3 → 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 +5 -0
- package/CHANGELOG.md +16 -0
- package/README.md +19 -2
- 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/types.d.ts +3 -0
- package/dist/browser/types.d.ts.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 +38 -72
- 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/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/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/types.ts +3 -0
- package/src/commands/connect.ts +3 -3
- package/src/mcp/server.ts +48 -91
- package/src/mcp/tools/browser.ts +39 -90
- 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/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/AGENTS.md
CHANGED
|
@@ -13,3 +13,8 @@
|
|
|
13
13
|
- When adding, renaming, or removing a Pilot MCP tool, update the Codex tool allowlist and verify the Claude `.mcp.json` local-server configuration in the same change.
|
|
14
14
|
- Build Pilot with `pnpm run build` before testing either MCP configuration so `dist/mcp/index.js` reflects the current source.
|
|
15
15
|
- Preserve environment entries needed by the local development session, such as the Linux `DISPLAY` value. Do not assume one display number works on every machine or remote session.
|
|
16
|
+
|
|
17
|
+
## Releases
|
|
18
|
+
|
|
19
|
+
- Always release by running the `publish.yml` workflow with a `release_type` of `patch`, `minor`, or `major`, for example `gh workflow run publish.yml -f release_type=patch`. The workflow computes the version, updates `package.json` and `CHANGELOG.md`, creates and pushes the tag, publishes to npm, and creates the GitHub release.
|
|
20
|
+
- Do not create or push release tags directly, and do not bump the version in `package.json` or edit the release entries in `CHANGELOG.md` by hand.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.7.0] - 2026-11-04
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
- Browser MCP tools now run through a shared `BrowserDriver`, with capability checks to gate tool access based on driver support. (#63)
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
|
|
11
|
+
- No standalone bug fixes are included in this release.
|
|
12
|
+
|
|
13
|
+
### Changes
|
|
14
|
+
|
|
15
|
+
- Updated agent guidance to require releases through the `publish.yml` workflow. (#57)
|
|
16
|
+
|
|
17
|
+
**Full changelog:** [0.6.3...0.7.0](../../compare/0.6.3...0.7.0)
|
|
18
|
+
|
|
3
19
|
## [0.6.3] - 2026-11-03
|
|
4
20
|
|
|
5
21
|
This release adds browser session management tools and improves Chrome startup, recovery, and shutdown reliability.
|
package/README.md
CHANGED
|
@@ -469,6 +469,22 @@ pnpm run test:e2e:mcp
|
|
|
469
469
|
pnpm run test:e2e:mcp:docker
|
|
470
470
|
```
|
|
471
471
|
|
|
472
|
+
## Browser Support
|
|
473
|
+
|
|
474
|
+
Pilot drives Chrome today. MCP tools call a browser-agnostic `BrowserDriver`
|
|
475
|
+
(`src/browser/driver/`); `CdpDriver` implements it for Chrome over the Chrome
|
|
476
|
+
DevTools Protocol. Each driver declares capabilities, and a tool whose
|
|
477
|
+
capabilities the active browser lacks fails with
|
|
478
|
+
`<tool> is not supported by <browser>`. `browser_status` reports the driven
|
|
479
|
+
browser as `session.browser`.
|
|
480
|
+
|
|
481
|
+
Planned drivers: Firefox on macOS
|
|
482
|
+
([#58](https://github.com/everydaydevopsio/pilot/issues/58)), Firefox on Linux
|
|
483
|
+
and Windows ([#59](https://github.com/everydaydevopsio/pilot/issues/59)), Safari
|
|
484
|
+
on macOS ([#60](https://github.com/everydaydevopsio/pilot/issues/60)), and
|
|
485
|
+
WebKit via Playwright
|
|
486
|
+
([#61](https://github.com/everydaydevopsio/pilot/issues/61)).
|
|
487
|
+
|
|
472
488
|
## Project Structure
|
|
473
489
|
|
|
474
490
|
```
|
|
@@ -478,6 +494,7 @@ src/
|
|
|
478
494
|
│ ├── browser-manager.ts # BrowserManager orchestrator
|
|
479
495
|
│ ├── chrome-launcher.ts # Chrome process management
|
|
480
496
|
│ ├── connection.ts # CDP connection + reconnect
|
|
497
|
+
│ ├── driver/ # BrowserDriver interface, CdpDriver, capability gating
|
|
481
498
|
│ ├── events.ts # CDP event listeners
|
|
482
499
|
│ ├── sessions.ts # Profile lock status and stop-all
|
|
483
500
|
│ ├── tabs.ts # Tab management
|
|
@@ -488,8 +505,8 @@ src/
|
|
|
488
505
|
│ ├── performance/ # Tracing + analysis
|
|
489
506
|
│ └── security/ # Origin allow/block lists
|
|
490
507
|
├── cli/ # CLI commands (init, Linux preflight)
|
|
491
|
-
├── commands/ #
|
|
492
|
-
├── mcp/ # MCP server + tool registrations
|
|
508
|
+
├── commands/ # CDP command implementations used by CdpDriver
|
|
509
|
+
├── mcp/ # MCP server + tool registrations (call BrowserDriver only)
|
|
493
510
|
└── util/ # Config, logger
|
|
494
511
|
```
|
|
495
512
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ToolName } from '../../mcp/tools/names.js';
|
|
2
|
+
import type { BrowserKind, Capability } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Capabilities each MCP tool needs from the active driver. Tools mapped to an
|
|
5
|
+
* empty list either manage the session itself (start/stop/status) or only read
|
|
6
|
+
* buffers that every driver fills.
|
|
7
|
+
*/
|
|
8
|
+
export declare const TOOL_CAPABILITIES: Readonly<Record<ToolName, readonly Capability[]>>;
|
|
9
|
+
export declare class CapabilityError extends Error {
|
|
10
|
+
readonly tool: ToolName;
|
|
11
|
+
readonly browser: BrowserKind;
|
|
12
|
+
readonly missing: readonly Capability[];
|
|
13
|
+
constructor(tool: ToolName, browser: BrowserKind, missing: readonly Capability[]);
|
|
14
|
+
}
|
|
15
|
+
export declare function missingCapabilities(tool: ToolName, capabilities: ReadonlySet<Capability>): Capability[];
|
|
16
|
+
export declare function assertToolSupported(tool: ToolName, driver: {
|
|
17
|
+
kind: BrowserKind;
|
|
18
|
+
capabilities: ReadonlySet<Capability>;
|
|
19
|
+
}): void;
|
|
20
|
+
/** Tools the given capability set cannot run, for status and docs output. */
|
|
21
|
+
export declare function unsupportedTools(capabilities: ReadonlySet<Capability>): ToolName[];
|
|
22
|
+
//# sourceMappingURL=capabilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../../src/browser/driver/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CACtC,MAAM,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC,CAuCxC,CAAC;AAEF,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,QAAQ,CAAC,IAAI,EAAE,QAAQ;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE;gBAF9B,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,SAAS,UAAU,EAAE;CAO1C;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,GACpC,UAAU,EAAE,CAEd;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;CAAE,GACnE,IAAI,CAKN;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,WAAW,CAAC,UAAU,CAAC,GACpC,QAAQ,EAAE,CAIZ"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capabilities each MCP tool needs from the active driver. Tools mapped to an
|
|
3
|
+
* empty list either manage the session itself (start/stop/status) or only read
|
|
4
|
+
* buffers that every driver fills.
|
|
5
|
+
*/
|
|
6
|
+
export const TOOL_CAPABILITIES = {
|
|
7
|
+
browser_start: [],
|
|
8
|
+
browser_stop: [],
|
|
9
|
+
browser_status: [],
|
|
10
|
+
browser_stop_all: [],
|
|
11
|
+
browser_connect: ['connectExisting'],
|
|
12
|
+
browser_screenshot: ['screenshot'],
|
|
13
|
+
browser_navigate: ['navigation'],
|
|
14
|
+
browser_click: ['input'],
|
|
15
|
+
browser_type: ['input'],
|
|
16
|
+
browser_evaluate: ['evaluate'],
|
|
17
|
+
browser_wait: ['evaluate'],
|
|
18
|
+
browser_page_info: ['evaluate'],
|
|
19
|
+
browser_list_tabs: ['tabs'],
|
|
20
|
+
browser_new_tab: ['tabs'],
|
|
21
|
+
browser_close_tab: ['tabs'],
|
|
22
|
+
browser_switch_tab: ['tabs'],
|
|
23
|
+
browser_tabs: ['tabs'],
|
|
24
|
+
browser_viewport_resize: ['viewport'],
|
|
25
|
+
browser_get_console_logs: ['console'],
|
|
26
|
+
browser_get_errors: ['console'],
|
|
27
|
+
browser_clear_errors: ['console'],
|
|
28
|
+
browser_console: ['console'],
|
|
29
|
+
browser_errors: ['console'],
|
|
30
|
+
browser_snapshot: ['accessibilitySnapshot'],
|
|
31
|
+
browser_find: ['accessibilitySnapshot'],
|
|
32
|
+
browser_fill: ['input'],
|
|
33
|
+
browser_hover: ['input'],
|
|
34
|
+
browser_press_key: ['input'],
|
|
35
|
+
browser_select: ['input'],
|
|
36
|
+
browser_check: ['input'],
|
|
37
|
+
browser_scroll: ['input'],
|
|
38
|
+
browser_network: ['network'],
|
|
39
|
+
browser_styles: ['styles'],
|
|
40
|
+
browser_dialog: ['dialogs'],
|
|
41
|
+
browser_upload: ['uploads'],
|
|
42
|
+
browser_downloads: ['downloads'],
|
|
43
|
+
browser_performance: ['performanceTrace']
|
|
44
|
+
};
|
|
45
|
+
export class CapabilityError extends Error {
|
|
46
|
+
tool;
|
|
47
|
+
browser;
|
|
48
|
+
missing;
|
|
49
|
+
constructor(tool, browser, missing) {
|
|
50
|
+
super(`${tool} is not supported by ${browser} (missing capabilities: ${missing.join(', ')}).`);
|
|
51
|
+
this.tool = tool;
|
|
52
|
+
this.browser = browser;
|
|
53
|
+
this.missing = missing;
|
|
54
|
+
this.name = 'CapabilityError';
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export function missingCapabilities(tool, capabilities) {
|
|
58
|
+
return TOOL_CAPABILITIES[tool].filter((c) => !capabilities.has(c));
|
|
59
|
+
}
|
|
60
|
+
export function assertToolSupported(tool, driver) {
|
|
61
|
+
const missing = missingCapabilities(tool, driver.capabilities);
|
|
62
|
+
if (missing.length > 0) {
|
|
63
|
+
throw new CapabilityError(tool, driver.kind, missing);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** Tools the given capability set cannot run, for status and docs output. */
|
|
67
|
+
export function unsupportedTools(capabilities) {
|
|
68
|
+
return Object.keys(TOOL_CAPABILITIES).filter((tool) => missingCapabilities(tool, capabilities).length > 0);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/browser/driver/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { BrowserManager } from '../browser-manager.js';
|
|
2
|
+
import type { LaunchOptions, SessionInfo, TabInfo } from '../types.js';
|
|
3
|
+
import type { Config } from '../../util/config.js';
|
|
4
|
+
import { type ViewportConfig } from '../../viewport.js';
|
|
5
|
+
import { type CheckParams } from '../../commands/check.js';
|
|
6
|
+
import { type ClickParams } from '../../commands/click.js';
|
|
7
|
+
import { type DialogParams } from '../../commands/dialog.js';
|
|
8
|
+
import { type EvaluateParams } from '../../commands/evaluate.js';
|
|
9
|
+
import { type FillParams } from '../../commands/fill.js';
|
|
10
|
+
import { type FindQuery } from '../../commands/find.js';
|
|
11
|
+
import { type HoverParams } from '../../commands/hover.js';
|
|
12
|
+
import { type NavigateParams } from '../../commands/navigate.js';
|
|
13
|
+
import { type NetworkParams } from '../../commands/network.js';
|
|
14
|
+
import { type PerformanceParams } from '../../commands/performance.js';
|
|
15
|
+
import { type PressKeyParams } from '../../commands/press_key.js';
|
|
16
|
+
import { type ScreenshotParams } from '../../commands/screenshot.js';
|
|
17
|
+
import { type ScrollParams } from '../../commands/scroll.js';
|
|
18
|
+
import { type SelectParams } from '../../commands/select.js';
|
|
19
|
+
import { type StylesParams } from '../../commands/styles.js';
|
|
20
|
+
import { type NewTabResult } from '../../commands/tabs.js';
|
|
21
|
+
import { type TypeParams } from '../../commands/type.js';
|
|
22
|
+
import { type UploadParams } from '../../commands/upload.js';
|
|
23
|
+
import { type WaitParams } from '../../commands/wait.js';
|
|
24
|
+
import { type BrowserDriver, type ConnectExistingOptions, type DriverSession, type ViewportResizeParams } from './types.js';
|
|
25
|
+
/**
|
|
26
|
+
* Chrome driver over the Chrome DevTools Protocol. BrowserManager owns the
|
|
27
|
+
* Chrome process and CDP connection; this class wires CDP events into the
|
|
28
|
+
* session buffers and maps driver calls onto the CDP command implementations.
|
|
29
|
+
*/
|
|
30
|
+
export declare class CdpDriver implements BrowserDriver {
|
|
31
|
+
private readonly session;
|
|
32
|
+
private readonly manager;
|
|
33
|
+
readonly kind: "chrome";
|
|
34
|
+
readonly capabilities: ReadonlySet<"viewport" | "input" | "evaluate" | "dialogs" | "navigation" | "styles" | "tabs" | "screenshot" | "accessibilitySnapshot" | "console" | "network" | "uploads" | "downloads" | "performanceTrace" | "connectExisting">;
|
|
35
|
+
private monitoredClient;
|
|
36
|
+
constructor(session: DriverSession, manager: BrowserManager);
|
|
37
|
+
static create(config: Config, session: DriverSession): CdpDriver;
|
|
38
|
+
private onBrowserEvent;
|
|
39
|
+
private ensureMonitors;
|
|
40
|
+
private client;
|
|
41
|
+
launch(opts?: LaunchOptions): Promise<{
|
|
42
|
+
headless: boolean;
|
|
43
|
+
viewport: string;
|
|
44
|
+
}>;
|
|
45
|
+
connectExisting(opts: ConnectExistingOptions): Promise<{
|
|
46
|
+
tabs: TabInfo[];
|
|
47
|
+
}>;
|
|
48
|
+
destroy(): Promise<void>;
|
|
49
|
+
isConnected(): boolean;
|
|
50
|
+
getSessionInfo(): SessionInfo;
|
|
51
|
+
listTabs(): Promise<TabInfo[]>;
|
|
52
|
+
newTab(url?: string): Promise<NewTabResult>;
|
|
53
|
+
closeTab(targetId: string): Promise<void>;
|
|
54
|
+
switchTab(targetId: string): Promise<void>;
|
|
55
|
+
navigate(params: NavigateParams): Promise<import("../../commands/navigate.js").NavigateResult>;
|
|
56
|
+
pageInfo(): Promise<import("../../commands/page_info.js").PageInfoResult>;
|
|
57
|
+
evaluate(params: EvaluateParams): Promise<import("../../commands/evaluate.js").EvaluateResult>;
|
|
58
|
+
wait(params: WaitParams): Promise<import("../../commands/wait.js").WaitResult>;
|
|
59
|
+
screenshot(params: ScreenshotParams): Promise<import("../../commands/screenshot.js").ScreenshotResult>;
|
|
60
|
+
resizeViewport(params: ViewportResizeParams): Promise<ViewportConfig>;
|
|
61
|
+
snapshot(): Promise<import("../../commands/snapshot.js").SnapshotCommandResult>;
|
|
62
|
+
find(query: FindQuery): Promise<import("../../commands/find.js").FindCommandResult>;
|
|
63
|
+
styles(params: StylesParams): Promise<import("../../commands/styles.js").StylesCommandResult>;
|
|
64
|
+
click(params: ClickParams): Promise<import("../../commands/click.js").ClickResult>;
|
|
65
|
+
type(params: TypeParams): Promise<import("../../commands/type.js").TypeResult>;
|
|
66
|
+
fill(params: FillParams): Promise<import("../../commands/fill.js").FillResult>;
|
|
67
|
+
hover(params: HoverParams): Promise<import("../../commands/hover.js").HoverResult>;
|
|
68
|
+
pressKey(params: PressKeyParams): Promise<import("../../commands/press_key.js").PressKeyResult>;
|
|
69
|
+
select(params: SelectParams): Promise<import("../../commands/select.js").SelectResult>;
|
|
70
|
+
check(params: CheckParams): Promise<import("../../commands/check.js").CheckResult>;
|
|
71
|
+
scroll(params: ScrollParams): Promise<import("../../commands/scroll.js").ScrollResult>;
|
|
72
|
+
dialog(params: DialogParams): Promise<import("../../commands/dialog.js").DialogResult>;
|
|
73
|
+
upload(params: UploadParams): Promise<import("../../commands/upload.js").UploadResult>;
|
|
74
|
+
network(params: NetworkParams): Promise<import("../../commands/network.js").NetworkResult>;
|
|
75
|
+
performance(params: PerformanceParams): Promise<import("../../commands/performance.js").PerformanceResult>;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=cdp-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp-driver.d.ts","sourceRoot":"","sources":["../../../src/browser/driver/cdp-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { BrowserManager } from '../browser-manager.js';
|
|
2
|
+
import { resetCssState } from '../inspect/styles.js';
|
|
3
|
+
import { attachDialogHandler } from '../interaction/dialogs.js';
|
|
4
|
+
import { attachDownloadHandler, enableDownloads } from '../interaction/downloads.js';
|
|
5
|
+
import { attachNetworkMonitor } from '../network/network-monitor.js';
|
|
6
|
+
import { applyViewport } from '../../viewport.js';
|
|
7
|
+
import { executeCheck } from '../../commands/check.js';
|
|
8
|
+
import { executeClick } from '../../commands/click.js';
|
|
9
|
+
import { executeDialog } from '../../commands/dialog.js';
|
|
10
|
+
import { executeEvaluate } from '../../commands/evaluate.js';
|
|
11
|
+
import { executeFill } from '../../commands/fill.js';
|
|
12
|
+
import { executeFind } from '../../commands/find.js';
|
|
13
|
+
import { executeHover } from '../../commands/hover.js';
|
|
14
|
+
import { executeNavigate } from '../../commands/navigate.js';
|
|
15
|
+
import { executeNetwork } from '../../commands/network.js';
|
|
16
|
+
import { executePageInfo } from '../../commands/page_info.js';
|
|
17
|
+
import { executePerformance } from '../../commands/performance.js';
|
|
18
|
+
import { executePressKey } from '../../commands/press_key.js';
|
|
19
|
+
import { executeScreenshot } from '../../commands/screenshot.js';
|
|
20
|
+
import { executeScroll } from '../../commands/scroll.js';
|
|
21
|
+
import { executeSelect } from '../../commands/select.js';
|
|
22
|
+
import { executeSnapshot } from '../../commands/snapshot.js';
|
|
23
|
+
import { executeStyles } from '../../commands/styles.js';
|
|
24
|
+
import { executeCloseTab, executeListTabs, executeNewTab, executeSwitchTab } from '../../commands/tabs.js';
|
|
25
|
+
import { executeType } from '../../commands/type.js';
|
|
26
|
+
import { executeUpload } from '../../commands/upload.js';
|
|
27
|
+
import { executeWait } from '../../commands/wait.js';
|
|
28
|
+
import { CAPABILITIES } from './types.js';
|
|
29
|
+
const CDP_CAPABILITIES = new Set(CAPABILITIES);
|
|
30
|
+
/**
|
|
31
|
+
* Chrome driver over the Chrome DevTools Protocol. BrowserManager owns the
|
|
32
|
+
* Chrome process and CDP connection; this class wires CDP events into the
|
|
33
|
+
* session buffers and maps driver calls onto the CDP command implementations.
|
|
34
|
+
*/
|
|
35
|
+
export class CdpDriver {
|
|
36
|
+
session;
|
|
37
|
+
manager;
|
|
38
|
+
kind = 'chrome';
|
|
39
|
+
capabilities = CDP_CAPABILITIES;
|
|
40
|
+
monitoredClient = null;
|
|
41
|
+
constructor(session, manager) {
|
|
42
|
+
this.session = session;
|
|
43
|
+
this.manager = manager;
|
|
44
|
+
manager.setEventCallback((event, data) => this.onBrowserEvent(event, data));
|
|
45
|
+
}
|
|
46
|
+
static create(config, session) {
|
|
47
|
+
return new CdpDriver(session, new BrowserManager(config));
|
|
48
|
+
}
|
|
49
|
+
onBrowserEvent(event, data) {
|
|
50
|
+
if (event === 'console_message') {
|
|
51
|
+
this.session.consoleBuffer.push(data);
|
|
52
|
+
}
|
|
53
|
+
if (event === 'page_navigated') {
|
|
54
|
+
this.session.elementRefMap.invalidate();
|
|
55
|
+
}
|
|
56
|
+
if (event === 'browser_disconnected') {
|
|
57
|
+
this.monitoredClient = null;
|
|
58
|
+
resetCssState();
|
|
59
|
+
this.session.dialogQueue.clear();
|
|
60
|
+
this.session.downloadTracker.clear();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Covers browser_connected and tab switches, which swap the CDP client
|
|
64
|
+
// without emitting a connect event.
|
|
65
|
+
this.ensureMonitors();
|
|
66
|
+
}
|
|
67
|
+
ensureMonitors() {
|
|
68
|
+
const client = this.manager.getClient();
|
|
69
|
+
if (!client || client === this.monitoredClient)
|
|
70
|
+
return;
|
|
71
|
+
attachNetworkMonitor(client, this.session.networkBuffer);
|
|
72
|
+
attachDialogHandler(client, this.session.dialogQueue);
|
|
73
|
+
attachDownloadHandler(client, this.session.downloadTracker);
|
|
74
|
+
void enableDownloads(client).catch(() => {
|
|
75
|
+
// Download behavior setup may fail in some environments
|
|
76
|
+
});
|
|
77
|
+
this.monitoredClient = client;
|
|
78
|
+
}
|
|
79
|
+
client() {
|
|
80
|
+
const client = this.manager.getClient();
|
|
81
|
+
if (!client) {
|
|
82
|
+
throw new Error('Browser not started. Call browser_start first.');
|
|
83
|
+
}
|
|
84
|
+
return client;
|
|
85
|
+
}
|
|
86
|
+
launch(opts) {
|
|
87
|
+
return this.manager.launch(opts);
|
|
88
|
+
}
|
|
89
|
+
connectExisting(opts) {
|
|
90
|
+
return this.manager.connectExisting(opts);
|
|
91
|
+
}
|
|
92
|
+
destroy() {
|
|
93
|
+
return this.manager.destroy();
|
|
94
|
+
}
|
|
95
|
+
isConnected() {
|
|
96
|
+
return this.manager.isConnected();
|
|
97
|
+
}
|
|
98
|
+
getSessionInfo() {
|
|
99
|
+
return { browser: this.kind, ...this.manager.getSessionInfo() };
|
|
100
|
+
}
|
|
101
|
+
listTabs() {
|
|
102
|
+
return executeListTabs(this.manager);
|
|
103
|
+
}
|
|
104
|
+
newTab(url) {
|
|
105
|
+
return executeNewTab(this.manager, url);
|
|
106
|
+
}
|
|
107
|
+
closeTab(targetId) {
|
|
108
|
+
return executeCloseTab(this.manager, targetId);
|
|
109
|
+
}
|
|
110
|
+
switchTab(targetId) {
|
|
111
|
+
return executeSwitchTab(this.manager, targetId);
|
|
112
|
+
}
|
|
113
|
+
navigate(params) {
|
|
114
|
+
return executeNavigate(this.client(), this.manager, params);
|
|
115
|
+
}
|
|
116
|
+
pageInfo() {
|
|
117
|
+
return executePageInfo(this.client());
|
|
118
|
+
}
|
|
119
|
+
evaluate(params) {
|
|
120
|
+
return executeEvaluate(this.client(), params);
|
|
121
|
+
}
|
|
122
|
+
wait(params) {
|
|
123
|
+
return executeWait(this.client(), this.manager, params);
|
|
124
|
+
}
|
|
125
|
+
screenshot(params) {
|
|
126
|
+
return executeScreenshot(this.client(), params);
|
|
127
|
+
}
|
|
128
|
+
async resizeViewport(params) {
|
|
129
|
+
const client = this.client();
|
|
130
|
+
const current = this.manager.getViewportConfig();
|
|
131
|
+
const mobile = params.mobile ?? current?.mobile ?? false;
|
|
132
|
+
const config = {
|
|
133
|
+
width: params.width,
|
|
134
|
+
height: params.height,
|
|
135
|
+
deviceScaleFactor: params.deviceScaleFactor ?? current?.deviceScaleFactor ?? 1,
|
|
136
|
+
mobile,
|
|
137
|
+
responsive: false,
|
|
138
|
+
...(mobile && current?.userAgent && { userAgent: current.userAgent })
|
|
139
|
+
};
|
|
140
|
+
await applyViewport(client, config);
|
|
141
|
+
this.manager.setViewportConfig(config);
|
|
142
|
+
return config;
|
|
143
|
+
}
|
|
144
|
+
snapshot() {
|
|
145
|
+
return executeSnapshot(this.client(), this.session.elementRefMap);
|
|
146
|
+
}
|
|
147
|
+
find(query) {
|
|
148
|
+
return executeFind(this.client(), this.session.elementRefMap, query);
|
|
149
|
+
}
|
|
150
|
+
styles(params) {
|
|
151
|
+
return executeStyles(this.client(), this.session.elementRefMap, params);
|
|
152
|
+
}
|
|
153
|
+
click(params) {
|
|
154
|
+
return executeClick(this.client(), params, this.session.elementRefMap);
|
|
155
|
+
}
|
|
156
|
+
type(params) {
|
|
157
|
+
return executeType(this.client(), params, this.session.elementRefMap);
|
|
158
|
+
}
|
|
159
|
+
fill(params) {
|
|
160
|
+
return executeFill(this.client(), this.session.elementRefMap, params);
|
|
161
|
+
}
|
|
162
|
+
hover(params) {
|
|
163
|
+
return executeHover(this.client(), this.session.elementRefMap, params);
|
|
164
|
+
}
|
|
165
|
+
pressKey(params) {
|
|
166
|
+
return executePressKey(this.client(), params);
|
|
167
|
+
}
|
|
168
|
+
select(params) {
|
|
169
|
+
return executeSelect(this.client(), this.session.elementRefMap, params);
|
|
170
|
+
}
|
|
171
|
+
check(params) {
|
|
172
|
+
return executeCheck(this.client(), this.session.elementRefMap, params);
|
|
173
|
+
}
|
|
174
|
+
scroll(params) {
|
|
175
|
+
return executeScroll(this.client(), this.session.elementRefMap, params);
|
|
176
|
+
}
|
|
177
|
+
dialog(params) {
|
|
178
|
+
return executeDialog(this.client(), this.session.dialogQueue, params);
|
|
179
|
+
}
|
|
180
|
+
upload(params) {
|
|
181
|
+
return executeUpload(this.client(), this.session.elementRefMap, params);
|
|
182
|
+
}
|
|
183
|
+
network(params) {
|
|
184
|
+
return executeNetwork(this.client(), this.session.networkBuffer, params);
|
|
185
|
+
}
|
|
186
|
+
performance(params) {
|
|
187
|
+
return executePerformance(this.client(), this.session.traceState, params);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=cdp-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdp-driver.js","sourceRoot":"","sources":["../../../src/browser/driver/cdp-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Config } from '../../util/config.js';
|
|
2
|
+
import type { BrowserDriver, BrowserKind, DriverSession } from './types.js';
|
|
3
|
+
/** Tracking issues for browsers that do not have a driver yet. */
|
|
4
|
+
export declare const PLANNED_DRIVERS: Readonly<Record<Exclude<BrowserKind, 'chrome'>, string>>;
|
|
5
|
+
export declare class UnsupportedBrowserError extends Error {
|
|
6
|
+
readonly browser: Exclude<BrowserKind, 'chrome'>;
|
|
7
|
+
constructor(browser: Exclude<BrowserKind, 'chrome'>);
|
|
8
|
+
}
|
|
9
|
+
export declare function createDriver(kind: BrowserKind, config: Config, session: DriverSession): BrowserDriver;
|
|
10
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/browser/driver/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5E,kEAAkE;AAClE,eAAO,MAAM,eAAe,EAAE,QAAQ,CACpC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAK/C,CAAC;AAEF,qBAAa,uBAAwB,SAAQ,KAAK;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;gBAAvC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;CAO7D;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,aAAa,GACrB,aAAa,CAKf"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CdpDriver } from './cdp-driver.js';
|
|
2
|
+
/** Tracking issues for browsers that do not have a driver yet. */
|
|
3
|
+
export const PLANNED_DRIVERS = {
|
|
4
|
+
firefox: 'https://github.com/everydaydevopsio/pilot/issues/58',
|
|
5
|
+
safari: 'https://github.com/everydaydevopsio/pilot/issues/60',
|
|
6
|
+
webkit: 'https://github.com/everydaydevopsio/pilot/issues/61'
|
|
7
|
+
};
|
|
8
|
+
export class UnsupportedBrowserError extends Error {
|
|
9
|
+
browser;
|
|
10
|
+
constructor(browser) {
|
|
11
|
+
super(`Pilot does not support ${browser} yet; only chrome is available. ` +
|
|
12
|
+
`Progress is tracked in ${PLANNED_DRIVERS[browser]}.`);
|
|
13
|
+
this.browser = browser;
|
|
14
|
+
this.name = 'UnsupportedBrowserError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function createDriver(kind, config, session) {
|
|
18
|
+
if (kind === 'chrome') {
|
|
19
|
+
return CdpDriver.create(config, session);
|
|
20
|
+
}
|
|
21
|
+
throw new UnsupportedBrowserError(kind);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/browser/driver/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,kEAAkE;AAClE,MAAM,CAAC,MAAM,eAAe,GAExB;IACF,OAAO,EAAE,qDAAqD;IAC9D,MAAM,EAAE,qDAAqD;IAC7D,MAAM,EAAE,qDAAqD;CAC9D,CAAC;AAEF,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC3B;IAArB,YAAqB,OAAuC;QAC1D,KAAK,CACH,0BAA0B,OAAO,kCAAkC;YACjE,0BAA0B,eAAe,CAAC,OAAO,CAAC,GAAG,CACxD,CAAC;QAJiB,YAAO,GAAP,OAAO,CAAgC;QAK1D,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,IAAiB,EACjB,MAAc,EACd,OAAsB;IAEtB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { CdpDriver } from './cdp-driver.js';
|
|
2
|
+
export { TOOL_CAPABILITIES, CapabilityError, assertToolSupported, missingCapabilities, unsupportedTools } from './capabilities.js';
|
|
3
|
+
export { createDriver, PLANNED_DRIVERS, UnsupportedBrowserError } from './factory.js';
|
|
4
|
+
export { BROWSER_KINDS, CAPABILITIES } from './types.js';
|
|
5
|
+
export type { BrowserDriver, BrowserKind, Capability, ConnectExistingOptions, DriverSession, ViewportResizeParams } from './types.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,sBAAsB,EACtB,aAAa,EACb,oBAAoB,EACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { CdpDriver } from './cdp-driver.js';
|
|
2
|
+
export { TOOL_CAPABILITIES, CapabilityError, assertToolSupported, missingCapabilities, unsupportedTools } from './capabilities.js';
|
|
3
|
+
export { createDriver, PLANNED_DRIVERS, UnsupportedBrowserError } from './factory.js';
|
|
4
|
+
export { BROWSER_KINDS, CAPABILITIES } from './types.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,uBAAuB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { ConsoleBuffer } from '../../mcp/console-buffer.js';
|
|
2
|
+
import type { ElementRefMap } from '../inspect/element-ref.js';
|
|
3
|
+
import type { DialogQueue } from '../interaction/dialogs.js';
|
|
4
|
+
import type { DownloadTracker } from '../interaction/downloads.js';
|
|
5
|
+
import type { NetworkBuffer } from '../network/network-buffer.js';
|
|
6
|
+
import type { TraceState } from '../performance/trace.js';
|
|
7
|
+
import type { LaunchOptions, SessionInfo, TabInfo } from '../types.js';
|
|
8
|
+
import type { ViewportConfig } from '../../viewport.js';
|
|
9
|
+
import type { CheckParams, CheckResult } from '../../commands/check.js';
|
|
10
|
+
import type { ClickParams, ClickResult } from '../../commands/click.js';
|
|
11
|
+
import type { DialogParams, DialogResult } from '../../commands/dialog.js';
|
|
12
|
+
import type { EvaluateParams, EvaluateResult } from '../../commands/evaluate.js';
|
|
13
|
+
import type { FillParams, FillResult } from '../../commands/fill.js';
|
|
14
|
+
import type { FindCommandResult, FindQuery } from '../../commands/find.js';
|
|
15
|
+
import type { HoverParams, HoverResult } from '../../commands/hover.js';
|
|
16
|
+
import type { NavigateParams, NavigateResult } from '../../commands/navigate.js';
|
|
17
|
+
import type { NetworkParams, NetworkResult } from '../../commands/network.js';
|
|
18
|
+
import type { PageInfoResult } from '../../commands/page_info.js';
|
|
19
|
+
import type { PerformanceParams, PerformanceResult } from '../../commands/performance.js';
|
|
20
|
+
import type { PressKeyParams, PressKeyResult } from '../../commands/press_key.js';
|
|
21
|
+
import type { ScreenshotParams, ScreenshotResult } from '../../commands/screenshot.js';
|
|
22
|
+
import type { ScrollParams, ScrollResult } from '../../commands/scroll.js';
|
|
23
|
+
import type { SelectParams, SelectResult } from '../../commands/select.js';
|
|
24
|
+
import type { SnapshotCommandResult } from '../../commands/snapshot.js';
|
|
25
|
+
import type { StylesCommandResult, StylesParams } from '../../commands/styles.js';
|
|
26
|
+
import type { NewTabResult } from '../../commands/tabs.js';
|
|
27
|
+
import type { TypeParams, TypeResult } from '../../commands/type.js';
|
|
28
|
+
import type { UploadParams, UploadResult } from '../../commands/upload.js';
|
|
29
|
+
import type { WaitParams, WaitResult } from '../../commands/wait.js';
|
|
30
|
+
/** Browsers Pilot knows about. Only `chrome` has a driver today. */
|
|
31
|
+
export declare const BROWSER_KINDS: readonly ["chrome", "firefox", "safari", "webkit"];
|
|
32
|
+
export type BrowserKind = (typeof BROWSER_KINDS)[number];
|
|
33
|
+
/**
|
|
34
|
+
* Features a driver may or may not provide. Each MCP tool declares the
|
|
35
|
+
* capabilities it needs (see capabilities.ts); a tool whose capabilities the
|
|
36
|
+
* active driver lacks fails with a CapabilityError before touching the browser.
|
|
37
|
+
*/
|
|
38
|
+
export declare const CAPABILITIES: readonly ["tabs", "navigation", "evaluate", "input", "screenshot", "viewport", "accessibilitySnapshot", "styles", "console", "network", "dialogs", "uploads", "downloads", "performanceTrace", "connectExisting"];
|
|
39
|
+
export type Capability = (typeof CAPABILITIES)[number];
|
|
40
|
+
/**
|
|
41
|
+
* Per-session buffers shared between a driver and the MCP tools. The driver
|
|
42
|
+
* fills them from browser events; tools such as browser_console read them
|
|
43
|
+
* directly.
|
|
44
|
+
*/
|
|
45
|
+
export interface DriverSession {
|
|
46
|
+
consoleBuffer: ConsoleBuffer;
|
|
47
|
+
elementRefMap: ElementRefMap;
|
|
48
|
+
networkBuffer: NetworkBuffer;
|
|
49
|
+
dialogQueue: DialogQueue;
|
|
50
|
+
downloadTracker: DownloadTracker;
|
|
51
|
+
traceState: TraceState;
|
|
52
|
+
}
|
|
53
|
+
export interface ConnectExistingOptions {
|
|
54
|
+
host?: string;
|
|
55
|
+
port?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface ViewportResizeParams {
|
|
58
|
+
width: number;
|
|
59
|
+
height: number;
|
|
60
|
+
deviceScaleFactor?: number;
|
|
61
|
+
mobile?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Browser-agnostic surface the MCP tools call. Each implementation owns its
|
|
65
|
+
* protocol (CDP, WebDriver BiDi, ...) and must not leak protocol types here.
|
|
66
|
+
*/
|
|
67
|
+
export interface BrowserDriver {
|
|
68
|
+
readonly kind: BrowserKind;
|
|
69
|
+
readonly capabilities: ReadonlySet<Capability>;
|
|
70
|
+
launch(opts?: LaunchOptions): Promise<{
|
|
71
|
+
headless: boolean;
|
|
72
|
+
viewport: string;
|
|
73
|
+
}>;
|
|
74
|
+
connectExisting(opts: ConnectExistingOptions): Promise<{
|
|
75
|
+
tabs: TabInfo[];
|
|
76
|
+
}>;
|
|
77
|
+
destroy(): Promise<void>;
|
|
78
|
+
isConnected(): boolean;
|
|
79
|
+
getSessionInfo(): SessionInfo;
|
|
80
|
+
listTabs(): Promise<TabInfo[]>;
|
|
81
|
+
newTab(url?: string): Promise<NewTabResult>;
|
|
82
|
+
closeTab(targetId: string): Promise<void>;
|
|
83
|
+
switchTab(targetId: string): Promise<void>;
|
|
84
|
+
navigate(params: NavigateParams): Promise<NavigateResult>;
|
|
85
|
+
pageInfo(): Promise<PageInfoResult>;
|
|
86
|
+
evaluate(params: EvaluateParams): Promise<EvaluateResult>;
|
|
87
|
+
wait(params: WaitParams): Promise<WaitResult>;
|
|
88
|
+
screenshot(params: ScreenshotParams): Promise<ScreenshotResult>;
|
|
89
|
+
resizeViewport(params: ViewportResizeParams): Promise<ViewportConfig>;
|
|
90
|
+
snapshot(): Promise<SnapshotCommandResult>;
|
|
91
|
+
find(query: FindQuery): Promise<FindCommandResult>;
|
|
92
|
+
styles(params: StylesParams): Promise<StylesCommandResult>;
|
|
93
|
+
click(params: ClickParams): Promise<ClickResult>;
|
|
94
|
+
type(params: TypeParams): Promise<TypeResult>;
|
|
95
|
+
fill(params: FillParams): Promise<FillResult>;
|
|
96
|
+
hover(params: HoverParams): Promise<HoverResult>;
|
|
97
|
+
pressKey(params: PressKeyParams): Promise<PressKeyResult>;
|
|
98
|
+
select(params: SelectParams): Promise<SelectResult>;
|
|
99
|
+
check(params: CheckParams): Promise<CheckResult>;
|
|
100
|
+
scroll(params: ScrollParams): Promise<ScrollResult>;
|
|
101
|
+
dialog(params: DialogParams): Promise<DialogResult>;
|
|
102
|
+
upload(params: UploadParams): Promise<UploadResult>;
|
|
103
|
+
network(params: NetworkParams): Promise<NetworkResult>;
|
|
104
|
+
performance(params: PerformanceParams): Promise<PerformanceResult>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|