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.
Files changed (266) hide show
  1. package/README.md +50 -4
  2. package/dist/__tests__/smoke/error-handling.smoke.test.js +0 -11
  3. package/dist/__tests__/smoke/error-handling.smoke.test.js.map +1 -1
  4. package/dist/cdp/protocol.d.ts +121 -0
  5. package/dist/cdp/protocol.d.ts.map +1 -0
  6. package/dist/cdp/protocol.js +215 -0
  7. package/dist/cdp/protocol.js.map +1 -0
  8. package/dist/cdp/schema.d.ts +159 -0
  9. package/dist/cdp/schema.d.ts.map +1 -0
  10. package/dist/cdp/schema.js +256 -0
  11. package/dist/cdp/schema.js.map +1 -0
  12. package/dist/cdp/types.d.ts +139 -0
  13. package/dist/cdp/types.d.ts.map +1 -0
  14. package/dist/cdp/types.js +7 -0
  15. package/dist/cdp/types.js.map +1 -0
  16. package/dist/commands/cdp.d.ts +10 -1
  17. package/dist/commands/cdp.d.ts.map +1 -1
  18. package/dist/commands/cdp.js +363 -26
  19. package/dist/commands/cdp.js.map +1 -1
  20. package/dist/commands/cleanup.js +3 -3
  21. package/dist/commands/cleanup.js.map +1 -1
  22. package/dist/commands/dom.d.ts.map +1 -1
  23. package/dist/commands/dom.js +1 -0
  24. package/dist/commands/dom.js.map +1 -1
  25. package/dist/commands/domEvalHelpers.d.ts +2 -15
  26. package/dist/commands/domEvalHelpers.d.ts.map +1 -1
  27. package/dist/commands/domEvalHelpers.js +1 -1
  28. package/dist/commands/domEvalHelpers.js.map +1 -1
  29. package/dist/commands/peek.d.ts.map +1 -1
  30. package/dist/commands/peek.js +12 -6
  31. package/dist/commands/peek.js.map +1 -1
  32. package/dist/commands/shared/CommandRunner.d.ts +2 -0
  33. package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
  34. package/dist/commands/shared/CommandRunner.js +13 -1
  35. package/dist/commands/shared/CommandRunner.js.map +1 -1
  36. package/dist/commands/shared/commonOptions.d.ts.map +1 -1
  37. package/dist/commands/shared/commonOptions.js +2 -2
  38. package/dist/commands/shared/commonOptions.js.map +1 -1
  39. package/dist/commands/start.d.ts.map +1 -1
  40. package/dist/commands/start.js +21 -12
  41. package/dist/commands/start.js.map +1 -1
  42. package/dist/commands/status.js +2 -2
  43. package/dist/commands/status.js.map +1 -1
  44. package/dist/commands/stop.js +2 -2
  45. package/dist/commands/stop.js.map +1 -1
  46. package/dist/commands/tail.d.ts.map +1 -1
  47. package/dist/commands/tail.js +9 -6
  48. package/dist/commands/tail.js.map +1 -1
  49. package/dist/connection/cdp.d.ts.map +1 -1
  50. package/dist/connection/cdp.js +15 -2
  51. package/dist/connection/cdp.js.map +1 -1
  52. package/dist/connection/domOperations.d.ts.map +1 -1
  53. package/dist/connection/domOperations.js +3 -1
  54. package/dist/connection/domOperations.js.map +1 -1
  55. package/dist/connection/handlers.d.ts +34 -2
  56. package/dist/connection/handlers.d.ts.map +1 -1
  57. package/dist/connection/handlers.js +28 -2
  58. package/dist/connection/handlers.js.map +1 -1
  59. package/dist/connection/launcher.d.ts.map +1 -1
  60. package/dist/connection/launcher.js +14 -2
  61. package/dist/connection/launcher.js.map +1 -1
  62. package/dist/connection/pageReadiness.d.ts.map +1 -1
  63. package/dist/connection/pageReadiness.js +6 -6
  64. package/dist/connection/pageReadiness.js.map +1 -1
  65. package/dist/connection/typed-cdp.d.ts +144 -0
  66. package/dist/connection/typed-cdp.d.ts.map +1 -0
  67. package/dist/connection/typed-cdp.js +120 -0
  68. package/dist/connection/typed-cdp.js.map +1 -0
  69. package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
  70. package/dist/daemon/worker/commandRegistry.js.map +1 -1
  71. package/dist/telemetry/__tests__/network.contract.test.js +124 -93
  72. package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
  73. package/dist/telemetry/console.d.ts.map +1 -1
  74. package/dist/telemetry/console.js +3 -2
  75. package/dist/telemetry/console.js.map +1 -1
  76. package/dist/telemetry/dialogs.d.ts.map +1 -1
  77. package/dist/telemetry/dialogs.js.map +1 -1
  78. package/dist/telemetry/dom.d.ts.map +1 -1
  79. package/dist/telemetry/dom.js +3 -1
  80. package/dist/telemetry/dom.js.map +1 -1
  81. package/dist/telemetry/navigation.d.ts.map +1 -1
  82. package/dist/telemetry/navigation.js.map +1 -1
  83. package/dist/telemetry/network.d.ts.map +1 -1
  84. package/dist/telemetry/network.js.map +1 -1
  85. package/dist/types.d.ts +0 -141
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/ui/messages/commands.d.ts +1 -0
  88. package/dist/ui/messages/commands.d.ts.map +1 -1
  89. package/dist/ui/messages/commands.js +1 -0
  90. package/dist/ui/messages/commands.js.map +1 -1
  91. package/dist/ui/messages/errors.d.ts +30 -3
  92. package/dist/ui/messages/errors.d.ts.map +1 -1
  93. package/dist/ui/messages/errors.js +36 -8
  94. package/dist/ui/messages/errors.js.map +1 -1
  95. package/dist/ui/messages/session.d.ts.map +1 -1
  96. package/dist/ui/messages/session.js +5 -4
  97. package/dist/ui/messages/session.js.map +1 -1
  98. package/dist/ui/messages/validation.d.ts +22 -4
  99. package/dist/ui/messages/validation.d.ts.map +1 -1
  100. package/dist/ui/messages/validation.js +26 -5
  101. package/dist/ui/messages/validation.js.map +1 -1
  102. package/package.json +2 -1
  103. package/dist/cli/commands/__tests__/start.unit.test.d.ts +0 -2
  104. package/dist/cli/commands/__tests__/start.unit.test.d.ts.map +0 -1
  105. package/dist/cli/commands/__tests__/start.unit.test.js +0 -131
  106. package/dist/cli/commands/__tests__/start.unit.test.js.map +0 -1
  107. package/dist/cli/commands/cleanup.d.ts +0 -9
  108. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  109. package/dist/cli/commands/cleanup.js +0 -148
  110. package/dist/cli/commands/cleanup.js.map +0 -1
  111. package/dist/cli/commands/details.d.ts +0 -9
  112. package/dist/cli/commands/details.d.ts.map +0 -1
  113. package/dist/cli/commands/details.js +0 -120
  114. package/dist/cli/commands/details.js.map +0 -1
  115. package/dist/cli/commands/peek.d.ts +0 -9
  116. package/dist/cli/commands/peek.d.ts.map +0 -1
  117. package/dist/cli/commands/peek.js +0 -64
  118. package/dist/cli/commands/peek.js.map +0 -1
  119. package/dist/cli/commands/query.d.ts +0 -9
  120. package/dist/cli/commands/query.d.ts.map +0 -1
  121. package/dist/cli/commands/query.js +0 -125
  122. package/dist/cli/commands/query.js.map +0 -1
  123. package/dist/cli/commands/start.d.ts +0 -83
  124. package/dist/cli/commands/start.d.ts.map +0 -1
  125. package/dist/cli/commands/start.js +0 -204
  126. package/dist/cli/commands/start.js.map +0 -1
  127. package/dist/cli/commands/status.d.ts +0 -9
  128. package/dist/cli/commands/status.d.ts.map +0 -1
  129. package/dist/cli/commands/status.js +0 -75
  130. package/dist/cli/commands/status.js.map +0 -1
  131. package/dist/cli/commands/stop.d.ts +0 -9
  132. package/dist/cli/commands/stop.d.ts.map +0 -1
  133. package/dist/cli/commands/stop.js +0 -133
  134. package/dist/cli/commands/stop.js.map +0 -1
  135. package/dist/cli/formatters/detailsFormatter.d.ts +0 -10
  136. package/dist/cli/formatters/detailsFormatter.d.ts.map +0 -1
  137. package/dist/cli/formatters/detailsFormatter.js +0 -63
  138. package/dist/cli/formatters/detailsFormatter.js.map +0 -1
  139. package/dist/cli/formatters/previewFormatter.d.ts +0 -27
  140. package/dist/cli/formatters/previewFormatter.d.ts.map +0 -1
  141. package/dist/cli/formatters/previewFormatter.js +0 -155
  142. package/dist/cli/formatters/previewFormatter.js.map +0 -1
  143. package/dist/cli/formatters/statusFormatter.d.ts +0 -42
  144. package/dist/cli/formatters/statusFormatter.d.ts.map +0 -1
  145. package/dist/cli/formatters/statusFormatter.js +0 -126
  146. package/dist/cli/formatters/statusFormatter.js.map +0 -1
  147. package/dist/cli/handlers/ChromeBootstrap.d.ts +0 -24
  148. package/dist/cli/handlers/ChromeBootstrap.d.ts.map +0 -1
  149. package/dist/cli/handlers/ChromeBootstrap.js +0 -50
  150. package/dist/cli/handlers/ChromeBootstrap.js.map +0 -1
  151. package/dist/cli/handlers/OutputBuilder.d.ts +0 -59
  152. package/dist/cli/handlers/OutputBuilder.d.ts.map +0 -1
  153. package/dist/cli/handlers/OutputBuilder.js +0 -136
  154. package/dist/cli/handlers/OutputBuilder.js.map +0 -1
  155. package/dist/cli/handlers/OutputWriter.d.ts +0 -15
  156. package/dist/cli/handlers/OutputWriter.d.ts.map +0 -1
  157. package/dist/cli/handlers/OutputWriter.js +0 -34
  158. package/dist/cli/handlers/OutputWriter.js.map +0 -1
  159. package/dist/cli/handlers/PreviewWriter.d.ts +0 -52
  160. package/dist/cli/handlers/PreviewWriter.d.ts.map +0 -1
  161. package/dist/cli/handlers/PreviewWriter.js +0 -118
  162. package/dist/cli/handlers/PreviewWriter.js.map +0 -1
  163. package/dist/cli/handlers/SessionLock.d.ts +0 -16
  164. package/dist/cli/handlers/SessionLock.d.ts.map +0 -1
  165. package/dist/cli/handlers/SessionLock.js +0 -35
  166. package/dist/cli/handlers/SessionLock.js.map +0 -1
  167. package/dist/cli/handlers/SessionLoop.d.ts +0 -19
  168. package/dist/cli/handlers/SessionLoop.d.ts.map +0 -1
  169. package/dist/cli/handlers/SessionLoop.js +0 -47
  170. package/dist/cli/handlers/SessionLoop.js.map +0 -1
  171. package/dist/cli/handlers/ShutdownController.d.ts +0 -41
  172. package/dist/cli/handlers/ShutdownController.d.ts.map +0 -1
  173. package/dist/cli/handlers/ShutdownController.js +0 -94
  174. package/dist/cli/handlers/ShutdownController.js.map +0 -1
  175. package/dist/cli/handlers/SignalHandler.d.ts +0 -35
  176. package/dist/cli/handlers/SignalHandler.d.ts.map +0 -1
  177. package/dist/cli/handlers/SignalHandler.js +0 -81
  178. package/dist/cli/handlers/SignalHandler.js.map +0 -1
  179. package/dist/cli/handlers/TargetSetup.d.ts +0 -42
  180. package/dist/cli/handlers/TargetSetup.d.ts.map +0 -1
  181. package/dist/cli/handlers/TargetSetup.js +0 -87
  182. package/dist/cli/handlers/TargetSetup.js.map +0 -1
  183. package/dist/cli/handlers/sessionController.d.ts +0 -62
  184. package/dist/cli/handlers/sessionController.d.ts.map +0 -1
  185. package/dist/cli/handlers/sessionController.js +0 -316
  186. package/dist/cli/handlers/sessionController.js.map +0 -1
  187. package/dist/cli/registry.d.ts +0 -11
  188. package/dist/cli/registry.d.ts.map +0 -1
  189. package/dist/cli/registry.js +0 -21
  190. package/dist/cli/registry.js.map +0 -1
  191. package/dist/collectors/console.d.ts +0 -19
  192. package/dist/collectors/console.d.ts.map +0 -1
  193. package/dist/collectors/console.js +0 -87
  194. package/dist/collectors/console.js.map +0 -1
  195. package/dist/collectors/dom.d.ts +0 -21
  196. package/dist/collectors/dom.d.ts.map +0 -1
  197. package/dist/collectors/dom.js +0 -99
  198. package/dist/collectors/dom.js.map +0 -1
  199. package/dist/collectors/network.d.ts +0 -32
  200. package/dist/collectors/network.d.ts.map +0 -1
  201. package/dist/collectors/network.js +0 -191
  202. package/dist/collectors/network.js.map +0 -1
  203. package/dist/connection/tabs.d.ts +0 -52
  204. package/dist/connection/tabs.d.ts.map +0 -1
  205. package/dist/connection/tabs.js +0 -227
  206. package/dist/connection/tabs.js.map +0 -1
  207. package/dist/help/machineReadableHelp.d.ts +0 -100
  208. package/dist/help/machineReadableHelp.d.ts.map +0 -1
  209. package/dist/help/machineReadableHelp.js +0 -139
  210. package/dist/help/machineReadableHelp.js.map +0 -1
  211. package/dist/session/BdgSession.d.ts +0 -91
  212. package/dist/session/BdgSession.d.ts.map +0 -1
  213. package/dist/session/BdgSession.js +0 -230
  214. package/dist/session/BdgSession.js.map +0 -1
  215. package/dist/ui/errors/SystemErrors.d.ts +0 -22
  216. package/dist/ui/errors/SystemErrors.d.ts.map +0 -1
  217. package/dist/ui/errors/SystemErrors.js +0 -23
  218. package/dist/ui/errors/SystemErrors.js.map +0 -1
  219. package/dist/ui/errors.d.ts +0 -39
  220. package/dist/ui/errors.d.ts.map +0 -1
  221. package/dist/ui/errors.js +0 -48
  222. package/dist/ui/errors.js.map +0 -1
  223. package/dist/ui/messages/deprecation.d.ts +0 -30
  224. package/dist/ui/messages/deprecation.d.ts.map +0 -1
  225. package/dist/ui/messages/deprecation.js +0 -49
  226. package/dist/ui/messages/deprecation.js.map +0 -1
  227. package/dist/ui/messages/index.d.ts +0 -12
  228. package/dist/ui/messages/index.d.ts.map +0 -1
  229. package/dist/ui/messages/index.js +0 -12
  230. package/dist/ui/messages/index.js.map +0 -1
  231. package/dist/utils/__tests__/filters.unit.test.d.ts +0 -2
  232. package/dist/utils/__tests__/filters.unit.test.d.ts.map +0 -1
  233. package/dist/utils/__tests__/filters.unit.test.js +0 -239
  234. package/dist/utils/__tests__/filters.unit.test.js.map +0 -1
  235. package/dist/utils/cdpHandlers.d.ts +0 -31
  236. package/dist/utils/cdpHandlers.d.ts.map +0 -1
  237. package/dist/utils/cdpHandlers.js +0 -38
  238. package/dist/utils/cdpHandlers.js.map +0 -1
  239. package/dist/utils/chromeDiagnostics.d.ts +0 -16
  240. package/dist/utils/chromeDiagnostics.d.ts.map +0 -1
  241. package/dist/utils/chromeDiagnostics.js +0 -37
  242. package/dist/utils/chromeDiagnostics.js.map +0 -1
  243. package/dist/utils/errors.d.ts +0 -82
  244. package/dist/utils/errors.d.ts.map +0 -1
  245. package/dist/utils/errors.js +0 -88
  246. package/dist/utils/errors.js.map +0 -1
  247. package/dist/utils/filters.d.ts +0 -148
  248. package/dist/utils/filters.d.ts.map +0 -1
  249. package/dist/utils/filters.js +0 -358
  250. package/dist/utils/filters.js.map +0 -1
  251. package/dist/utils/logger.d.ts +0 -98
  252. package/dist/utils/logger.d.ts.map +0 -1
  253. package/dist/utils/logger.js +0 -93
  254. package/dist/utils/logger.js.map +0 -1
  255. package/dist/utils/pageReadiness.d.ts +0 -46
  256. package/dist/utils/pageReadiness.d.ts.map +0 -1
  257. package/dist/utils/pageReadiness.js +0 -270
  258. package/dist/utils/pageReadiness.js.map +0 -1
  259. package/dist/utils/session.d.ts +0 -200
  260. package/dist/utils/session.d.ts.map +0 -1
  261. package/dist/utils/session.js +0 -498
  262. package/dist/utils/session.js.map +0 -1
  263. package/dist/utils/validation.d.ts +0 -12
  264. package/dist/utils/validation.d.ts.map +0 -1
  265. package/dist/utils/validation.js +0 -20
  266. package/dist/utils/validation.js.map +0 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Security](https://github.com/szymdzum/browser-debugger-cli/actions/workflows/security.yml/badge.svg)](https://github.com/szymdzum/browser-debugger-cli/actions/workflows/security.yml)
6
6
  [![npm downloads](https://img.shields.io/npm/dt/browser-debugger-cli?color=blue)](https://www.npmjs.com/package/browser-debugger-cli)
7
7
 
8
- Chrome DevTools Protocol in your terminal. Run any CDP command, pipe the output, build browser automation with tools you already know. Design to be agent friendly
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":"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"}
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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAIpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,kDAAkD;AAClD,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,YAAY;IAC1B,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,0CAA0C;IAC1C,iEAAiE;IACjE,MAAM,mBAAmB,GAAG,IAAI,CAC9B,SAAS,EACT,iEAAiE,CAClE,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,CACzB,SAAS,EACT,4DAA4D,CAC7D,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAmB,CAAC;IACjG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAmB,CAAC;IAEvF,0BAA0B;IAC1B,wDAAwD;IACxD,cAAc,GAAG;QACf,OAAO,EAAE,eAAe,CAAC,OAAO;QAChC,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC;KAC7D,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,WAAmB;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAkB;IACrD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CACpC,UAAkB,EAClB,WAAmB;IAEnB,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,cAAc;IACd,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,cAAc;IACd,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAgB,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,UAAU;IACV,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -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"}