browser-debugger-cli 0.5.1 → 0.6.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/README.md +50 -4
- package/dist/__tests__/smoke/error-handling.smoke.test.js +0 -11
- package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
- package/dist/cdp/protocol.d.ts +121 -0
- package/dist/cdp/protocol.d.ts.map +1 -0
- package/dist/cdp/protocol.js +215 -0
- package/dist/cdp/protocol.js.map +1 -0
- package/dist/cdp/schema.d.ts +159 -0
- package/dist/cdp/schema.d.ts.map +1 -0
- package/dist/cdp/schema.js +256 -0
- package/dist/cdp/schema.js.map +1 -0
- package/dist/cdp/types.d.ts +139 -0
- package/dist/cdp/types.d.ts.map +1 -0
- package/dist/cdp/types.js +7 -0
- package/dist/cdp/types.js.map +1 -0
- package/dist/commands/cdp.d.ts +10 -1
- package/dist/commands/cdp.d.ts.map +1 -1
- package/dist/commands/cdp.js +363 -26
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.js +3 -3
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/dom.d.ts.map +1 -1
- package/dist/commands/dom.js +1 -0
- package/dist/commands/dom.js.map +1 -1
- package/dist/commands/domEvalHelpers.d.ts +2 -15
- package/dist/commands/domEvalHelpers.d.ts.map +1 -1
- package/dist/commands/domEvalHelpers.js +1 -1
- package/dist/commands/domEvalHelpers.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +12 -6
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +2 -0
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +13 -1
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/commonOptions.d.ts.map +1 -1
- package/dist/commands/shared/commonOptions.js +2 -2
- package/dist/commands/shared/commonOptions.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +21 -12
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.js +2 -2
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +9 -6
- package/dist/commands/tail.js.map +1 -1
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +15 -2
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/domOperations.d.ts.map +1 -1
- package/dist/connection/domOperations.js +3 -1
- package/dist/connection/domOperations.js.map +1 -1
- package/dist/connection/handlers.d.ts +34 -2
- package/dist/connection/handlers.d.ts.map +1 -1
- package/dist/connection/handlers.js +28 -2
- package/dist/connection/handlers.js.map +1 -1
- package/dist/connection/launcher.d.ts.map +1 -1
- package/dist/connection/launcher.js +14 -2
- package/dist/connection/launcher.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +6 -6
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/connection/typed-cdp.d.ts +144 -0
- package/dist/connection/typed-cdp.d.ts.map +1 -0
- package/dist/connection/typed-cdp.js +120 -0
- package/dist/connection/typed-cdp.js.map +1 -0
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/telemetry/__tests__/network.contract.test.js +124 -93
- package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
- package/dist/telemetry/console.d.ts.map +1 -1
- package/dist/telemetry/console.js +3 -2
- package/dist/telemetry/console.js.map +1 -1
- package/dist/telemetry/dialogs.d.ts.map +1 -1
- package/dist/telemetry/dialogs.js.map +1 -1
- package/dist/telemetry/dom.d.ts.map +1 -1
- package/dist/telemetry/dom.js +3 -1
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/navigation.d.ts.map +1 -1
- package/dist/telemetry/navigation.js.map +1 -1
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js.map +1 -1
- package/dist/types.d.ts +0 -141
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/messages/commands.d.ts +1 -0
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +1 -0
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +30 -3
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +36 -8
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +5 -4
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/ui/messages/validation.d.ts +22 -4
- package/dist/ui/messages/validation.d.ts.map +1 -1
- package/dist/ui/messages/validation.js +26 -5
- package/dist/ui/messages/validation.js.map +1 -1
- package/package.json +2 -1
- package/dist/cli/commands/__tests__/start.unit.test.d.ts +0 -2
- package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +0 -1
- package/dist/cli/commands/__tests__/start.unit.test.js +0 -131
- package/dist/cli/commands/__tests__/start.unit.test.js.map +0 -1
- package/dist/cli/commands/cleanup.d.ts +0 -9
- package/dist/cli/commands/cleanup.d.ts.map +0 -1
- package/dist/cli/commands/cleanup.js +0 -148
- package/dist/cli/commands/cleanup.js.map +0 -1
- package/dist/cli/commands/details.d.ts +0 -9
- package/dist/cli/commands/details.d.ts.map +0 -1
- package/dist/cli/commands/details.js +0 -120
- package/dist/cli/commands/details.js.map +0 -1
- package/dist/cli/commands/peek.d.ts +0 -9
- package/dist/cli/commands/peek.d.ts.map +0 -1
- package/dist/cli/commands/peek.js +0 -64
- package/dist/cli/commands/peek.js.map +0 -1
- package/dist/cli/commands/query.d.ts +0 -9
- package/dist/cli/commands/query.d.ts.map +0 -1
- package/dist/cli/commands/query.js +0 -125
- package/dist/cli/commands/query.js.map +0 -1
- package/dist/cli/commands/start.d.ts +0 -83
- package/dist/cli/commands/start.d.ts.map +0 -1
- package/dist/cli/commands/start.js +0 -204
- package/dist/cli/commands/start.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -9
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -75
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/stop.d.ts +0 -9
- package/dist/cli/commands/stop.d.ts.map +0 -1
- package/dist/cli/commands/stop.js +0 -133
- package/dist/cli/commands/stop.js.map +0 -1
- package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
- package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/detailsFormatter.js +0 -63
- package/dist/cli/formatters/detailsFormatter.js.map +0 -1
- package/dist/cli/formatters/previewFormatter.d.ts +0 -27
- package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/previewFormatter.js +0 -155
- package/dist/cli/formatters/previewFormatter.js.map +0 -1
- package/dist/cli/formatters/statusFormatter.d.ts +0 -42
- package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
- package/dist/cli/formatters/statusFormatter.js +0 -126
- package/dist/cli/formatters/statusFormatter.js.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
- package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
- package/dist/cli/handlers/ChromeBootstrap.js +0 -50
- package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
- package/dist/cli/handlers/OutputBuilder.d.ts +0 -59
- package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
- package/dist/cli/handlers/OutputBuilder.js +0 -136
- package/dist/cli/handlers/OutputBuilder.js.map +0 -1
- package/dist/cli/handlers/OutputWriter.d.ts +0 -15
- package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
- package/dist/cli/handlers/OutputWriter.js +0 -34
- package/dist/cli/handlers/OutputWriter.js.map +0 -1
- package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
- package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
- package/dist/cli/handlers/PreviewWriter.js +0 -118
- package/dist/cli/handlers/PreviewWriter.js.map +0 -1
- package/dist/cli/handlers/SessionLock.d.ts +0 -16
- package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLock.js +0 -35
- package/dist/cli/handlers/SessionLock.js.map +0 -1
- package/dist/cli/handlers/SessionLoop.d.ts +0 -19
- package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
- package/dist/cli/handlers/SessionLoop.js +0 -47
- package/dist/cli/handlers/SessionLoop.js.map +0 -1
- package/dist/cli/handlers/ShutdownController.d.ts +0 -41
- package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
- package/dist/cli/handlers/ShutdownController.js +0 -94
- package/dist/cli/handlers/ShutdownController.js.map +0 -1
- package/dist/cli/handlers/SignalHandler.d.ts +0 -35
- package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
- package/dist/cli/handlers/SignalHandler.js +0 -81
- package/dist/cli/handlers/SignalHandler.js.map +0 -1
- package/dist/cli/handlers/TargetSetup.d.ts +0 -42
- package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
- package/dist/cli/handlers/TargetSetup.js +0 -87
- package/dist/cli/handlers/TargetSetup.js.map +0 -1
- package/dist/cli/handlers/sessionController.d.ts +0 -62
- package/dist/cli/handlers/sessionController.d.ts.map +0 -1
- package/dist/cli/handlers/sessionController.js +0 -316
- package/dist/cli/handlers/sessionController.js.map +0 -1
- package/dist/cli/registry.d.ts +0 -11
- package/dist/cli/registry.d.ts.map +0 -1
- package/dist/cli/registry.js +0 -21
- package/dist/cli/registry.js.map +0 -1
- package/dist/collectors/console.d.ts +0 -19
- package/dist/collectors/console.d.ts.map +0 -1
- package/dist/collectors/console.js +0 -87
- package/dist/collectors/console.js.map +0 -1
- package/dist/collectors/dom.d.ts +0 -21
- package/dist/collectors/dom.d.ts.map +0 -1
- package/dist/collectors/dom.js +0 -99
- package/dist/collectors/dom.js.map +0 -1
- package/dist/collectors/network.d.ts +0 -32
- package/dist/collectors/network.d.ts.map +0 -1
- package/dist/collectors/network.js +0 -191
- package/dist/collectors/network.js.map +0 -1
- package/dist/connection/tabs.d.ts +0 -52
- package/dist/connection/tabs.d.ts.map +0 -1
- package/dist/connection/tabs.js +0 -227
- package/dist/connection/tabs.js.map +0 -1
- package/dist/help/machineReadableHelp.d.ts +0 -100
- package/dist/help/machineReadableHelp.d.ts.map +0 -1
- package/dist/help/machineReadableHelp.js +0 -139
- package/dist/help/machineReadableHelp.js.map +0 -1
- package/dist/session/BdgSession.d.ts +0 -91
- package/dist/session/BdgSession.d.ts.map +0 -1
- package/dist/session/BdgSession.js +0 -230
- package/dist/session/BdgSession.js.map +0 -1
- package/dist/ui/errors/SystemErrors.d.ts +0 -22
- package/dist/ui/errors/SystemErrors.d.ts.map +0 -1
- package/dist/ui/errors/SystemErrors.js +0 -23
- package/dist/ui/errors/SystemErrors.js.map +0 -1
- package/dist/ui/errors.d.ts +0 -39
- package/dist/ui/errors.d.ts.map +0 -1
- package/dist/ui/errors.js +0 -48
- package/dist/ui/errors.js.map +0 -1
- package/dist/ui/messages/deprecation.d.ts +0 -30
- package/dist/ui/messages/deprecation.d.ts.map +0 -1
- package/dist/ui/messages/deprecation.js +0 -49
- package/dist/ui/messages/deprecation.js.map +0 -1
- package/dist/ui/messages/index.d.ts +0 -12
- package/dist/ui/messages/index.d.ts.map +0 -1
- package/dist/ui/messages/index.js +0 -12
- package/dist/ui/messages/index.js.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.d.ts +0 -2
- package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
- package/dist/utils/__tests__/filters.unit.test.js +0 -239
- package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
- package/dist/utils/cdpHandlers.d.ts +0 -31
- package/dist/utils/cdpHandlers.d.ts.map +0 -1
- package/dist/utils/cdpHandlers.js +0 -38
- package/dist/utils/cdpHandlers.js.map +0 -1
- package/dist/utils/chromeDiagnostics.d.ts +0 -16
- package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
- package/dist/utils/chromeDiagnostics.js +0 -37
- package/dist/utils/chromeDiagnostics.js.map +0 -1
- package/dist/utils/errors.d.ts +0 -82
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -88
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/filters.d.ts +0 -148
- package/dist/utils/filters.d.ts.map +0 -1
- package/dist/utils/filters.js +0 -358
- package/dist/utils/filters.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -98
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -93
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/pageReadiness.d.ts +0 -46
- package/dist/utils/pageReadiness.d.ts.map +0 -1
- package/dist/utils/pageReadiness.js +0 -270
- package/dist/utils/pageReadiness.js.map +0 -1
- package/dist/utils/session.d.ts +0 -200
- package/dist/utils/session.d.ts.map +0 -1
- package/dist/utils/session.js +0 -498
- package/dist/utils/session.js.map +0 -1
- package/dist/utils/validation.d.ts +0 -12
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/validation.js +0 -20
- package/dist/utils/validation.js.map +0 -1
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/szymdzum/browser-debugger-cli/actions/workflows/security.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/browser-debugger-cli)
|
|
7
7
|
|
|
8
|
-
Chrome DevTools Protocol in your terminal.
|
|
8
|
+
Chrome DevTools Protocol in your terminal. Self-documenting CDP access with discovery, search, and introspection. Perfect for AI agents and developers who want direct browser control without the framework overhead.
|
|
9
9
|
|
|
10
10
|
## Why This Exists
|
|
11
11
|
Puppeteer is great but heavy. CDP is powerful but raw. This tool sits in between: direct protocol access with session management and a few helpful wrappers. No abstractions hiding what's actually happening.
|
|
@@ -42,9 +42,14 @@ The CLI uses Unix domain sockets for inter-process communication. Windows users
|
|
|
42
42
|
# Start a session
|
|
43
43
|
bdg example.com
|
|
44
44
|
|
|
45
|
+
# Discover what's available
|
|
46
|
+
bdg cdp --list # List all 53 domains
|
|
47
|
+
bdg cdp Network --list # List Network methods
|
|
48
|
+
bdg cdp --search cookie # Search by keyword
|
|
49
|
+
|
|
45
50
|
# Run any CDP command
|
|
46
|
-
bdg cdp Runtime.evaluate --params '{"expression":"document.title","returnByValue":true}'
|
|
47
51
|
bdg cdp Network.getCookies
|
|
52
|
+
bdg cdp Runtime.evaluate --params '{"expression":"document.title","returnByValue":true}'
|
|
48
53
|
|
|
49
54
|
# Check what's running
|
|
50
55
|
bdg status
|
|
@@ -55,6 +60,30 @@ bdg stop
|
|
|
55
60
|
|
|
56
61
|
## What You Can Do
|
|
57
62
|
|
|
63
|
+
### Discover CDP Commands (53 Domains, 300+ Methods)
|
|
64
|
+
|
|
65
|
+
Built-in introspection helps you find what you need without reading docs:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# What can I do with this browser?
|
|
69
|
+
bdg cdp --list
|
|
70
|
+
# Returns: 53 domains (Network, DOM, Page, Runtime, Storage, etc.)
|
|
71
|
+
|
|
72
|
+
# What Network operations exist?
|
|
73
|
+
bdg cdp Network --list
|
|
74
|
+
# Returns: 39 methods with descriptions and parameter counts
|
|
75
|
+
|
|
76
|
+
# How do I use this method?
|
|
77
|
+
bdg cdp Network.getCookies --describe
|
|
78
|
+
# Returns: Full schema with parameters, types, examples
|
|
79
|
+
|
|
80
|
+
# Find cookie-related methods
|
|
81
|
+
bdg cdp --search cookie
|
|
82
|
+
# Returns: 14 methods across domains (Network.getCookies, Storage.getCookies, etc.)
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
All discovery commands output JSON for easy parsing. Perfect for AI agents building automation on the fly.
|
|
86
|
+
|
|
58
87
|
### Run Any CDP Command
|
|
59
88
|
|
|
60
89
|
All 300+ methods from [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/) work out of the box:
|
|
@@ -95,6 +124,25 @@ bdg peek --console --json | jq '[.data.console[] | select(.level == "error")] |
|
|
|
95
124
|
|
|
96
125
|
### For AI Agents
|
|
97
126
|
|
|
127
|
+
**Self-documenting CDP discovery** - agents can explore 300+ browser capabilities without external docs:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
# Agent discovers what's possible
|
|
131
|
+
bdg cdp --list # 53 domains available
|
|
132
|
+
bdg cdp --search screenshot # Find relevant methods
|
|
133
|
+
bdg cdp Page.captureScreenshot --describe # Learn parameters
|
|
134
|
+
bdg cdp Page.captureScreenshot --params '{"format":"png"}' # Execute
|
|
135
|
+
|
|
136
|
+
# All commands return structured JSON for easy parsing
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Why this matters for agents:**
|
|
140
|
+
- No need to memorize CDP docs (1000+ pages)
|
|
141
|
+
- Discover → Learn → Execute in one tool
|
|
142
|
+
- Search by keyword (`--search`)
|
|
143
|
+
- Case-insensitive execution (forgiving for LLM outputs)
|
|
144
|
+
- Semantic exit codes for error handling
|
|
145
|
+
|
|
98
146
|
Claude skill included at `.claude/skills/bdg/` with working automation patterns:
|
|
99
147
|
|
|
100
148
|
- Common CDP workflows (scraping, polling, navigation)
|
|
@@ -108,8 +156,6 @@ bdg --help --json | jq '.command.subcommands[].name'
|
|
|
108
156
|
bdg --help --json | jq '.exitCodes'
|
|
109
157
|
```
|
|
110
158
|
|
|
111
|
-
Agents can figure out what commands exist and how to use them without hardcoded knowledge.
|
|
112
|
-
|
|
113
159
|
### Debug Live Apps
|
|
114
160
|
|
|
115
161
|
Point at localhost, monitor what's happening:
|
|
@@ -31,17 +31,6 @@ void describe('Error Handling Smoke Tests', () => {
|
|
|
31
31
|
// Should provide helpful error message
|
|
32
32
|
assert.ok(result.stderr.includes('daemon'));
|
|
33
33
|
});
|
|
34
|
-
void it('should handle invalid URL gracefully', async () => {
|
|
35
|
-
// Note: URL validation is permissive - "not-a-valid-url" becomes "http://not-a-valid-url/"
|
|
36
|
-
// This test verifies error handling, not URL validation
|
|
37
|
-
const result = await runCommand('http://example.com', ['--port', '9229', '--headless'], {
|
|
38
|
-
timeout: 10000,
|
|
39
|
-
});
|
|
40
|
-
// Should succeed (URL is valid, session starts)
|
|
41
|
-
assert.equal(result.exitCode, 0);
|
|
42
|
-
// Should provide session started message
|
|
43
|
-
assert.ok(/session started|target:/i.test(result.stderr));
|
|
44
|
-
});
|
|
45
34
|
void it('should handle daemon crash during session', async () => {
|
|
46
35
|
// Start session with unique port
|
|
47
36
|
await runCommand('http://example.com', ['--port', '9230', '--headless'], { timeout: 10000 });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handling.smoke.test.js","sourceRoot":"","sources":["../../../src/__tests__/smoke/error-handling.smoke.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,aAAa,GACd,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,KAAK,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC/C,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,wEAAwE;QACxE,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QAC7E,qCAAqC;QACrC,wEAAwE;QACxE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,mDAAmD;QACnD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAE7D,wDAAwD;QACxD,MAAM,CAAC,EAAE,CAAC,kCAAkC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACzF,8BAA8B;QAC9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,cAAc;QACd,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAEpC,uCAAuC;QACvC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,KAAK,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"error-handling.smoke.test.js","sourceRoot":"","sources":["../../../src/__tests__/smoke/error-handling.smoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Protocol Schema Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and parses the Chrome DevTools Protocol schema from the bundled
|
|
5
|
+
* devtools-protocol package. Provides utilities for domain/method lookup
|
|
6
|
+
* and introspection.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProtocolSchema, Domain, Command } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Load the CDP protocol schema.
|
|
11
|
+
*
|
|
12
|
+
* Merges browser_protocol.json and js_protocol.json from devtools-protocol package.
|
|
13
|
+
* The browser protocol contains domains like Network, Page, DOM, etc.
|
|
14
|
+
* The JS protocol contains Runtime, Debugger, Console, Profiler, etc.
|
|
15
|
+
* The merged protocol is cached after first load for performance.
|
|
16
|
+
*
|
|
17
|
+
* @returns CDP protocol schema with all domains, commands, and types
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const protocol = loadProtocol();
|
|
22
|
+
* console.log(`Protocol version: ${protocol.version.major}.${protocol.version.minor}`);
|
|
23
|
+
* console.log(`Domains: ${protocol.domains.length}`); // ~53 domains (47 browser + 6 JS)
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadProtocol(): ProtocolSchema;
|
|
27
|
+
/**
|
|
28
|
+
* Get all domain names from the protocol.
|
|
29
|
+
*
|
|
30
|
+
* @returns Array of domain names (e.g., ['Accessibility', 'Network', 'Runtime'])
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const domains = getDomains();
|
|
35
|
+
* console.log(domains); // ['Accessibility', 'Animation', 'Network', ...]
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function getDomains(): string[];
|
|
39
|
+
/**
|
|
40
|
+
* Find a domain by name (case-insensitive).
|
|
41
|
+
*
|
|
42
|
+
* @param domainName - Domain name to find (e.g., 'network', 'Network', 'NETWORK')
|
|
43
|
+
* @returns Domain object or undefined if not found
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const domain = findDomain('network'); // Case-insensitive
|
|
48
|
+
* console.log(domain?.domain); // 'Network'
|
|
49
|
+
* console.log(domain?.commands.length); // 39
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare function findDomain(domainName: string): Domain | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Find a command within a domain (case-insensitive).
|
|
55
|
+
*
|
|
56
|
+
* @param domainName - Domain name (e.g., 'Network')
|
|
57
|
+
* @param commandName - Command name (e.g., 'getCookies', 'GETCOOKIES')
|
|
58
|
+
* @returns Command object or undefined if not found
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const cmd = findCommand('Network', 'getcookies'); // Case-insensitive
|
|
63
|
+
* console.log(cmd?.name); // 'getCookies'
|
|
64
|
+
* console.log(cmd?.parameters); // [...]
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function findCommand(domainName: string, commandName: string): Command | undefined;
|
|
68
|
+
/**
|
|
69
|
+
* Normalize a CDP method name to proper casing.
|
|
70
|
+
*
|
|
71
|
+
* Converts user input (any case) to CDP's actual method name.
|
|
72
|
+
*
|
|
73
|
+
* @param input - Method name in any format (e.g., 'network.getcookies', 'Runtime.Evaluate')
|
|
74
|
+
* @returns Normalized method name (e.g., 'Network.getCookies') or undefined if not found
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* normalizeMethod('network.getcookies') // 'Network.getCookies'
|
|
79
|
+
* normalizeMethod('runtime.evaluate') // 'Runtime.evaluate'
|
|
80
|
+
* normalizeMethod('NETWORK.GETCOOKIES') // 'Network.getCookies'
|
|
81
|
+
* normalizeMethod('invalid.method') // undefined
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function normalizeMethod(input: string): string | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* Get all commands for a domain.
|
|
87
|
+
*
|
|
88
|
+
* @param domainName - Domain name (case-insensitive)
|
|
89
|
+
* @returns Array of command names or empty array if domain not found
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* ```typescript
|
|
93
|
+
* const commands = getCommandsForDomain('Network');
|
|
94
|
+
* console.log(commands); // ['getCookies', 'setCookie', 'enable', ...]
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function getCommandsForDomain(domainName: string): string[];
|
|
98
|
+
/**
|
|
99
|
+
* Format command signature for help text.
|
|
100
|
+
*
|
|
101
|
+
* @param domainName - Domain name
|
|
102
|
+
* @param commandName - Command name
|
|
103
|
+
* @returns Formatted signature string or undefined if not found
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const sig = formatCommandSignature('Network', 'getCookies');
|
|
108
|
+
* console.log(sig);
|
|
109
|
+
* // Network.getCookies
|
|
110
|
+
* //
|
|
111
|
+
* // Returns all browser cookies for the current URL.
|
|
112
|
+
* //
|
|
113
|
+
* // Parameters:
|
|
114
|
+
* // --urls <array> (optional) - The list of URLs for which to fetch cookies
|
|
115
|
+
* //
|
|
116
|
+
* // Returns:
|
|
117
|
+
* // cookies: Array of Cookie objects
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
export declare function formatCommandSignature(domainName: string, commandName: string): string | undefined;
|
|
121
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/cdp/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAa,MAAM,YAAY,CAAC;AAQ7E;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,IAAI,cAAc,CA2B7C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAGrC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAQxF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiBjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CA4CpB"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Protocol Schema Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and parses the Chrome DevTools Protocol schema from the bundled
|
|
5
|
+
* devtools-protocol package. Provides utilities for domain/method lookup
|
|
6
|
+
* and introspection.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync } from 'fs';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
// Cache the protocol to avoid re-reading the file
|
|
14
|
+
let cachedProtocol = null;
|
|
15
|
+
/**
|
|
16
|
+
* Load the CDP protocol schema.
|
|
17
|
+
*
|
|
18
|
+
* Merges browser_protocol.json and js_protocol.json from devtools-protocol package.
|
|
19
|
+
* The browser protocol contains domains like Network, Page, DOM, etc.
|
|
20
|
+
* The JS protocol contains Runtime, Debugger, Console, Profiler, etc.
|
|
21
|
+
* The merged protocol is cached after first load for performance.
|
|
22
|
+
*
|
|
23
|
+
* @returns CDP protocol schema with all domains, commands, and types
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const protocol = loadProtocol();
|
|
28
|
+
* console.log(`Protocol version: ${protocol.version.major}.${protocol.version.minor}`);
|
|
29
|
+
* console.log(`Domains: ${protocol.domains.length}`); // ~53 domains (47 browser + 6 JS)
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function loadProtocol() {
|
|
33
|
+
if (cachedProtocol) {
|
|
34
|
+
return cachedProtocol;
|
|
35
|
+
}
|
|
36
|
+
// Find the protocol files in node_modules
|
|
37
|
+
// When compiled, __dirname is dist/cdp, so go up to project root
|
|
38
|
+
const browserProtocolPath = join(__dirname, '../../node_modules/devtools-protocol/json/browser_protocol.json');
|
|
39
|
+
const jsProtocolPath = join(__dirname, '../../node_modules/devtools-protocol/json/js_protocol.json');
|
|
40
|
+
const browserProtocol = JSON.parse(readFileSync(browserProtocolPath, 'utf-8'));
|
|
41
|
+
const jsProtocol = JSON.parse(readFileSync(jsProtocolPath, 'utf-8'));
|
|
42
|
+
// Merge the two protocols
|
|
43
|
+
// Use browser protocol as base, add JS protocol domains
|
|
44
|
+
cachedProtocol = {
|
|
45
|
+
version: browserProtocol.version,
|
|
46
|
+
domains: [...browserProtocol.domains, ...jsProtocol.domains],
|
|
47
|
+
};
|
|
48
|
+
return cachedProtocol;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get all domain names from the protocol.
|
|
52
|
+
*
|
|
53
|
+
* @returns Array of domain names (e.g., ['Accessibility', 'Network', 'Runtime'])
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const domains = getDomains();
|
|
58
|
+
* console.log(domains); // ['Accessibility', 'Animation', 'Network', ...]
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export function getDomains() {
|
|
62
|
+
const protocol = loadProtocol();
|
|
63
|
+
return protocol.domains.map((d) => d.domain);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Find a domain by name (case-insensitive).
|
|
67
|
+
*
|
|
68
|
+
* @param domainName - Domain name to find (e.g., 'network', 'Network', 'NETWORK')
|
|
69
|
+
* @returns Domain object or undefined if not found
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* const domain = findDomain('network'); // Case-insensitive
|
|
74
|
+
* console.log(domain?.domain); // 'Network'
|
|
75
|
+
* console.log(domain?.commands.length); // 39
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
export function findDomain(domainName) {
|
|
79
|
+
const protocol = loadProtocol();
|
|
80
|
+
const normalized = domainName.toLowerCase();
|
|
81
|
+
return protocol.domains.find((d) => d.domain.toLowerCase() === normalized);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Find a command within a domain (case-insensitive).
|
|
85
|
+
*
|
|
86
|
+
* @param domainName - Domain name (e.g., 'Network')
|
|
87
|
+
* @param commandName - Command name (e.g., 'getCookies', 'GETCOOKIES')
|
|
88
|
+
* @returns Command object or undefined if not found
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const cmd = findCommand('Network', 'getcookies'); // Case-insensitive
|
|
93
|
+
* console.log(cmd?.name); // 'getCookies'
|
|
94
|
+
* console.log(cmd?.parameters); // [...]
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export function findCommand(domainName, commandName) {
|
|
98
|
+
const domain = findDomain(domainName);
|
|
99
|
+
if (!domain?.commands) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const normalized = commandName.toLowerCase();
|
|
103
|
+
return domain.commands.find((c) => c.name.toLowerCase() === normalized);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Normalize a CDP method name to proper casing.
|
|
107
|
+
*
|
|
108
|
+
* Converts user input (any case) to CDP's actual method name.
|
|
109
|
+
*
|
|
110
|
+
* @param input - Method name in any format (e.g., 'network.getcookies', 'Runtime.Evaluate')
|
|
111
|
+
* @returns Normalized method name (e.g., 'Network.getCookies') or undefined if not found
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* normalizeMethod('network.getcookies') // 'Network.getCookies'
|
|
116
|
+
* normalizeMethod('runtime.evaluate') // 'Runtime.evaluate'
|
|
117
|
+
* normalizeMethod('NETWORK.GETCOOKIES') // 'Network.getCookies'
|
|
118
|
+
* normalizeMethod('invalid.method') // undefined
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export function normalizeMethod(input) {
|
|
122
|
+
const [domainName, commandName] = input.split('.');
|
|
123
|
+
if (!domainName || !commandName) {
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
const domain = findDomain(domainName);
|
|
127
|
+
if (!domain) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const command = findCommand(domain.domain, commandName);
|
|
131
|
+
if (!command) {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
return `${domain.domain}.${command.name}`;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Get all commands for a domain.
|
|
138
|
+
*
|
|
139
|
+
* @param domainName - Domain name (case-insensitive)
|
|
140
|
+
* @returns Array of command names or empty array if domain not found
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```typescript
|
|
144
|
+
* const commands = getCommandsForDomain('Network');
|
|
145
|
+
* console.log(commands); // ['getCookies', 'setCookie', 'enable', ...]
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export function getCommandsForDomain(domainName) {
|
|
149
|
+
const domain = findDomain(domainName);
|
|
150
|
+
if (!domain?.commands) {
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
153
|
+
return domain.commands.map((c) => c.name);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Format command signature for help text.
|
|
157
|
+
*
|
|
158
|
+
* @param domainName - Domain name
|
|
159
|
+
* @param commandName - Command name
|
|
160
|
+
* @returns Formatted signature string or undefined if not found
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const sig = formatCommandSignature('Network', 'getCookies');
|
|
165
|
+
* console.log(sig);
|
|
166
|
+
* // Network.getCookies
|
|
167
|
+
* //
|
|
168
|
+
* // Returns all browser cookies for the current URL.
|
|
169
|
+
* //
|
|
170
|
+
* // Parameters:
|
|
171
|
+
* // --urls <array> (optional) - The list of URLs for which to fetch cookies
|
|
172
|
+
* //
|
|
173
|
+
* // Returns:
|
|
174
|
+
* // cookies: Array of Cookie objects
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export function formatCommandSignature(domainName, commandName) {
|
|
178
|
+
const domain = findDomain(domainName);
|
|
179
|
+
if (!domain) {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
const command = findCommand(domain.domain, commandName);
|
|
183
|
+
if (!command) {
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
const lines = [];
|
|
187
|
+
// Method name
|
|
188
|
+
lines.push(`${domain.domain}.${command.name}`);
|
|
189
|
+
lines.push('');
|
|
190
|
+
// Description
|
|
191
|
+
if (command.description) {
|
|
192
|
+
lines.push(command.description);
|
|
193
|
+
lines.push('');
|
|
194
|
+
}
|
|
195
|
+
// Parameters
|
|
196
|
+
if (command.parameters && command.parameters.length > 0) {
|
|
197
|
+
lines.push('Parameters:');
|
|
198
|
+
command.parameters.forEach((param) => {
|
|
199
|
+
const optional = param.optional ? ' (optional)' : '';
|
|
200
|
+
const desc = param.description ? ` - ${param.description}` : '';
|
|
201
|
+
lines.push(` --${param.name} <${param.type}>${optional}${desc}`);
|
|
202
|
+
});
|
|
203
|
+
lines.push('');
|
|
204
|
+
}
|
|
205
|
+
// Returns
|
|
206
|
+
if (command.returns && command.returns.length > 0) {
|
|
207
|
+
lines.push('Returns:');
|
|
208
|
+
command.returns.forEach((ret) => {
|
|
209
|
+
const desc = ret.description ? ` - ${ret.description}` : '';
|
|
210
|
+
lines.push(` ${ret.name}: ${ret.type ?? ret.$ref}${desc}`);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
return lines.join('\n');
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/cdp/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CDP Schema Introspection
|
|
3
|
+
*
|
|
4
|
+
* Provides structured, agent-friendly schema information for all CDP domains and methods.
|
|
5
|
+
* Follows principles from docs/AGENT_FRIENDLY_TOOLS.md:
|
|
6
|
+
* - Machine-readable output (JSON schema)
|
|
7
|
+
* - Self-describing tools
|
|
8
|
+
* - Structured context without verbosity
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Structured method schema for agent consumption.
|
|
12
|
+
*/
|
|
13
|
+
export interface MethodSchema {
|
|
14
|
+
/** Full method name (Domain.method) */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Domain name */
|
|
17
|
+
domain: string;
|
|
18
|
+
/** Method name */
|
|
19
|
+
method: string;
|
|
20
|
+
/** Human-readable description */
|
|
21
|
+
description?: string;
|
|
22
|
+
/** Whether method is experimental */
|
|
23
|
+
experimental?: boolean;
|
|
24
|
+
/** Whether method is deprecated */
|
|
25
|
+
deprecated?: boolean;
|
|
26
|
+
/** Parameter schema */
|
|
27
|
+
parameters: ParameterSchema[];
|
|
28
|
+
/** Return value schema */
|
|
29
|
+
returns: ReturnSchema[];
|
|
30
|
+
/** Usage example (JSON) */
|
|
31
|
+
example?: {
|
|
32
|
+
command: string;
|
|
33
|
+
params?: Record<string, unknown>;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parameter schema for agent consumption.
|
|
38
|
+
*/
|
|
39
|
+
export interface ParameterSchema {
|
|
40
|
+
/** Parameter name */
|
|
41
|
+
name: string;
|
|
42
|
+
/** Type (string, integer, boolean, array, object, or custom type reference) */
|
|
43
|
+
type: string;
|
|
44
|
+
/** Whether parameter is required */
|
|
45
|
+
required: boolean;
|
|
46
|
+
/** Human-readable description */
|
|
47
|
+
description?: string;
|
|
48
|
+
/** Enum values (if type is enum) */
|
|
49
|
+
enum?: string[];
|
|
50
|
+
/** Array item type (if type is array) */
|
|
51
|
+
items?: string;
|
|
52
|
+
/** Deprecated flag */
|
|
53
|
+
deprecated?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Return value schema for agent consumption.
|
|
57
|
+
*/
|
|
58
|
+
export interface ReturnSchema {
|
|
59
|
+
/** Return value name */
|
|
60
|
+
name: string;
|
|
61
|
+
/** Type (string, integer, boolean, array, object, or custom type reference) */
|
|
62
|
+
type: string;
|
|
63
|
+
/** Whether return value is optional */
|
|
64
|
+
optional: boolean;
|
|
65
|
+
/** Human-readable description */
|
|
66
|
+
description?: string;
|
|
67
|
+
/** Array item type (if type is array) */
|
|
68
|
+
items?: string;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Domain summary for agent consumption.
|
|
72
|
+
*/
|
|
73
|
+
export interface DomainSummary {
|
|
74
|
+
/** Domain name */
|
|
75
|
+
name: string;
|
|
76
|
+
/** Human-readable description */
|
|
77
|
+
description?: string;
|
|
78
|
+
/** Number of commands in this domain */
|
|
79
|
+
commandCount: number;
|
|
80
|
+
/** Number of events in this domain */
|
|
81
|
+
eventCount: number;
|
|
82
|
+
/** Whether domain is experimental */
|
|
83
|
+
experimental?: boolean;
|
|
84
|
+
/** Whether domain is deprecated */
|
|
85
|
+
deprecated?: boolean;
|
|
86
|
+
/** Domain dependencies */
|
|
87
|
+
dependencies?: string[];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get structured schema for a specific method.
|
|
91
|
+
*
|
|
92
|
+
* @param domainName - Domain name (case-insensitive)
|
|
93
|
+
* @param methodName - Method name (case-insensitive)
|
|
94
|
+
* @returns Method schema or undefined if not found
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const schema = getMethodSchema('Network', 'getCookies');
|
|
99
|
+
* console.log(schema.parameters); // [{ name: 'urls', type: 'array', required: false, ... }]
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function getMethodSchema(domainName: string, methodName: string): MethodSchema | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Get all methods in a domain.
|
|
105
|
+
*
|
|
106
|
+
* @param domainName - Domain name (case-insensitive)
|
|
107
|
+
* @returns Array of method schemas
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* const methods = getDomainMethods('Network');
|
|
112
|
+
* console.log(methods.length); // 39
|
|
113
|
+
* console.log(methods[0].name); // 'Network.getIPProtectionProxyStatus'
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare function getDomainMethods(domainName: string): MethodSchema[];
|
|
117
|
+
/**
|
|
118
|
+
* Get summary information for a domain.
|
|
119
|
+
*
|
|
120
|
+
* @param domainName - Domain name (case-insensitive)
|
|
121
|
+
* @returns Domain summary or undefined if not found
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const summary = getDomainSummary('Network');
|
|
126
|
+
* console.log(summary.commandCount); // 39
|
|
127
|
+
* console.log(summary.eventCount); // 12
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function getDomainSummary(domainName: string): DomainSummary | undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Get summaries for all domains.
|
|
133
|
+
*
|
|
134
|
+
* @returns Array of domain summaries
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```typescript
|
|
138
|
+
* const summaries = getAllDomainSummaries();
|
|
139
|
+
* console.log(summaries.length); // 53
|
|
140
|
+
* console.log(summaries.find(d => d.name === 'Network').commandCount); // 39
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export declare function getAllDomainSummaries(): DomainSummary[];
|
|
144
|
+
/**
|
|
145
|
+
* Search methods by keyword (case-insensitive).
|
|
146
|
+
*
|
|
147
|
+
* Searches in method names and descriptions.
|
|
148
|
+
*
|
|
149
|
+
* @param query - Search query
|
|
150
|
+
* @returns Array of matching method schemas
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const cookies = searchMethods('cookie');
|
|
155
|
+
* // Returns: Network.getCookies, Network.setCookie, Network.deleteCookies, etc.
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function searchMethods(query: string): MethodSchema[];
|
|
159
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/cdp/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB;IACvB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,0BAA0B;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,2BAA2B;IAC3B,OAAO,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0BAA0B;IAC1B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAYhG;AA0HD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAOnE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAO9E;AAoBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,IAAI,aAAa,EAAE,CAGvD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAmB3D"}
|