@bctrl/sdk 1.0.1

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 (260) hide show
  1. package/README.md +75 -0
  2. package/dist/agents/browser-use/index.d.ts +1 -0
  3. package/dist/agents/browser-use/index.js +9 -0
  4. package/dist/agents/browser-use/namespace.d.ts +39 -0
  5. package/dist/agents/browser-use/namespace.js +93 -0
  6. package/dist/agents/index.d.ts +2 -0
  7. package/dist/agents/index.js +17 -0
  8. package/dist/agents/stagehand/core.d.ts +93 -0
  9. package/dist/agents/stagehand/core.js +144 -0
  10. package/dist/agents/stagehand/index.d.ts +3 -0
  11. package/dist/agents/stagehand/index.js +24 -0
  12. package/dist/agents/stagehand/namespace.d.ts +51 -0
  13. package/dist/agents/stagehand/namespace.js +65 -0
  14. package/dist/ai-credentials/client.d.ts +12 -0
  15. package/dist/ai-credentials/client.js +70 -0
  16. package/dist/ai-credentials/index.d.ts +1 -0
  17. package/dist/ai-credentials/index.js +1 -0
  18. package/dist/base/event-binding.d.ts +7 -0
  19. package/dist/base/event-binding.js +23 -0
  20. package/dist/base/types.d.ts +109 -0
  21. package/dist/base/types.js +4 -0
  22. package/dist/bctrl.d.ts +37 -0
  23. package/dist/bctrl.js +77 -0
  24. package/dist/browser-extensions/client.d.ts +15 -0
  25. package/dist/browser-extensions/client.js +72 -0
  26. package/dist/browser-extensions/index.d.ts +2 -0
  27. package/dist/browser-extensions/index.js +1 -0
  28. package/dist/browser-profiles/client.d.ts +11 -0
  29. package/dist/browser-profiles/client.js +63 -0
  30. package/dist/browser-profiles/index.d.ts +1 -0
  31. package/dist/browser-profiles/index.js +1 -0
  32. package/dist/captcha/index.d.ts +1 -0
  33. package/dist/captcha/index.js +1 -0
  34. package/dist/captcha/namespace.d.ts +34 -0
  35. package/dist/captcha/namespace.js +41 -0
  36. package/dist/client/index.d.ts +1 -0
  37. package/dist/client/index.js +1 -0
  38. package/dist/client/rpc.d.ts +83 -0
  39. package/dist/client/rpc.js +354 -0
  40. package/dist/config.d.ts +5 -0
  41. package/dist/config.js +28 -0
  42. package/dist/constants/browser.d.ts +2 -0
  43. package/dist/constants/browser.js +1 -0
  44. package/dist/contracts/agent-tools.d.ts +45 -0
  45. package/dist/contracts/agent-tools.js +31 -0
  46. package/dist/contracts/automation.d.ts +265 -0
  47. package/dist/contracts/automation.js +109 -0
  48. package/dist/contracts/browser-management.d.ts +179 -0
  49. package/dist/contracts/browser-management.js +95 -0
  50. package/dist/contracts/browser-use.d.ts +136 -0
  51. package/dist/contracts/browser-use.js +93 -0
  52. package/dist/contracts/captcha.d.ts +114 -0
  53. package/dist/contracts/captcha.js +40 -0
  54. package/dist/contracts/desktop.d.ts +223 -0
  55. package/dist/contracts/desktop.js +121 -0
  56. package/dist/contracts/drivers/playwright.d.ts +2008 -0
  57. package/dist/contracts/drivers/playwright.js +2033 -0
  58. package/dist/contracts/drivers/puppeteer.d.ts +1221 -0
  59. package/dist/contracts/drivers/puppeteer.js +941 -0
  60. package/dist/contracts/drivers/selenium.d.ts +156 -0
  61. package/dist/contracts/drivers/selenium.js +61 -0
  62. package/dist/contracts/drivers/stagehand.d.ts +155 -0
  63. package/dist/contracts/drivers/stagehand.js +7 -0
  64. package/dist/contracts/extensions.d.ts +13 -0
  65. package/dist/contracts/extensions.js +9 -0
  66. package/dist/contracts/index.d.ts +13 -0
  67. package/dist/contracts/index.js +13 -0
  68. package/dist/contracts/public-api.d.ts +360 -0
  69. package/dist/contracts/public-api.js +17 -0
  70. package/dist/contracts/runtime.d.ts +81 -0
  71. package/dist/contracts/runtime.js +16 -0
  72. package/dist/contracts/stagehand.d.ts +253 -0
  73. package/dist/contracts/stagehand.js +145 -0
  74. package/dist/contracts/storage.d.ts +51 -0
  75. package/dist/contracts/storage.js +56 -0
  76. package/dist/contracts/vault.d.ts +119 -0
  77. package/dist/contracts/vault.js +112 -0
  78. package/dist/contracts/version.d.ts +3 -0
  79. package/dist/contracts/version.js +16 -0
  80. package/dist/desktop.d.ts +2 -0
  81. package/dist/desktop.js +3 -0
  82. package/dist/drivers/desktop/index.d.ts +65 -0
  83. package/dist/drivers/desktop/index.js +68 -0
  84. package/dist/drivers/desktop/session.d.ts +313 -0
  85. package/dist/drivers/desktop/session.js +432 -0
  86. package/dist/drivers/playwright/event-emitter.d.ts +160 -0
  87. package/dist/drivers/playwright/event-emitter.js +297 -0
  88. package/dist/drivers/playwright/generated/api-request-context.d.ts +137 -0
  89. package/dist/drivers/playwright/generated/api-request-context.js +154 -0
  90. package/dist/drivers/playwright/generated/api-response.d.ts +119 -0
  91. package/dist/drivers/playwright/generated/api-response.js +123 -0
  92. package/dist/drivers/playwright/generated/browser-context.d.ts +284 -0
  93. package/dist/drivers/playwright/generated/browser-context.js +458 -0
  94. package/dist/drivers/playwright/generated/browser.d.ts +120 -0
  95. package/dist/drivers/playwright/generated/browser.js +151 -0
  96. package/dist/drivers/playwright/generated/clock.d.ts +80 -0
  97. package/dist/drivers/playwright/generated/clock.js +94 -0
  98. package/dist/drivers/playwright/generated/console-message.d.ts +94 -0
  99. package/dist/drivers/playwright/generated/console-message.js +89 -0
  100. package/dist/drivers/playwright/generated/coverage.d.ts +57 -0
  101. package/dist/drivers/playwright/generated/coverage.js +66 -0
  102. package/dist/drivers/playwright/generated/dialog.d.ts +79 -0
  103. package/dist/drivers/playwright/generated/dialog.js +80 -0
  104. package/dist/drivers/playwright/generated/element-handle.d.ts +399 -0
  105. package/dist/drivers/playwright/generated/element-handle.js +501 -0
  106. package/dist/drivers/playwright/generated/frame-locator.d.ts +34 -0
  107. package/dist/drivers/playwright/generated/frame-locator.js +63 -0
  108. package/dist/drivers/playwright/generated/frame.d.ts +557 -0
  109. package/dist/drivers/playwright/generated/frame.js +634 -0
  110. package/dist/drivers/playwright/generated/js-handle.d.ts +72 -0
  111. package/dist/drivers/playwright/generated/js-handle.js +92 -0
  112. package/dist/drivers/playwright/generated/keyboard.d.ts +103 -0
  113. package/dist/drivers/playwright/generated/keyboard.js +113 -0
  114. package/dist/drivers/playwright/generated/locator.d.ts +795 -0
  115. package/dist/drivers/playwright/generated/locator.js +974 -0
  116. package/dist/drivers/playwright/generated/mouse.d.ts +97 -0
  117. package/dist/drivers/playwright/generated/mouse.js +109 -0
  118. package/dist/drivers/playwright/generated/page.d.ts +762 -0
  119. package/dist/drivers/playwright/generated/page.js +988 -0
  120. package/dist/drivers/playwright/generated/touchscreen.d.ts +34 -0
  121. package/dist/drivers/playwright/generated/touchscreen.js +37 -0
  122. package/dist/drivers/playwright/generated/tracing.d.ts +78 -0
  123. package/dist/drivers/playwright/generated/tracing.js +80 -0
  124. package/dist/drivers/playwright/generated/worker.d.ts +53 -0
  125. package/dist/drivers/playwright/generated/worker.js +59 -0
  126. package/dist/drivers/playwright/index.d.ts +19 -0
  127. package/dist/drivers/playwright/index.js +20 -0
  128. package/dist/drivers/playwright/remote-base.d.ts +62 -0
  129. package/dist/drivers/playwright/remote-base.js +86 -0
  130. package/dist/drivers/playwright/types.d.ts +148 -0
  131. package/dist/drivers/playwright/types.js +8 -0
  132. package/dist/drivers/puppeteer/errors.d.ts +50 -0
  133. package/dist/drivers/puppeteer/errors.js +71 -0
  134. package/dist/drivers/puppeteer/event-emitter.d.ts +145 -0
  135. package/dist/drivers/puppeteer/event-emitter.js +259 -0
  136. package/dist/drivers/puppeteer/generated/accessibility.d.ts +77 -0
  137. package/dist/drivers/puppeteer/generated/accessibility.js +74 -0
  138. package/dist/drivers/puppeteer/generated/browser-context.d.ts +116 -0
  139. package/dist/drivers/puppeteer/generated/browser-context.js +168 -0
  140. package/dist/drivers/puppeteer/generated/browser.d.ts +169 -0
  141. package/dist/drivers/puppeteer/generated/browser.js +246 -0
  142. package/dist/drivers/puppeteer/generated/console-message.d.ts +54 -0
  143. package/dist/drivers/puppeteer/generated/console-message.js +69 -0
  144. package/dist/drivers/puppeteer/generated/coverage.d.ts +49 -0
  145. package/dist/drivers/puppeteer/generated/coverage.js +57 -0
  146. package/dist/drivers/puppeteer/generated/dialog.d.ts +46 -0
  147. package/dist/drivers/puppeteer/generated/dialog.js +60 -0
  148. package/dist/drivers/puppeteer/generated/element-handle.d.ts +261 -0
  149. package/dist/drivers/puppeteer/generated/element-handle.js +341 -0
  150. package/dist/drivers/puppeteer/generated/file-chooser.d.ts +34 -0
  151. package/dist/drivers/puppeteer/generated/file-chooser.js +43 -0
  152. package/dist/drivers/puppeteer/generated/frame.d.ts +221 -0
  153. package/dist/drivers/puppeteer/generated/frame.js +302 -0
  154. package/dist/drivers/puppeteer/generated/http-request.d.ts +195 -0
  155. package/dist/drivers/puppeteer/generated/http-request.js +243 -0
  156. package/dist/drivers/puppeteer/generated/http-response.d.ts +142 -0
  157. package/dist/drivers/puppeteer/generated/http-response.js +169 -0
  158. package/dist/drivers/puppeteer/generated/js-handle.d.ts +104 -0
  159. package/dist/drivers/puppeteer/generated/js-handle.js +125 -0
  160. package/dist/drivers/puppeteer/generated/keyboard.d.ts +79 -0
  161. package/dist/drivers/puppeteer/generated/keyboard.js +89 -0
  162. package/dist/drivers/puppeteer/generated/locator.d.ts +141 -0
  163. package/dist/drivers/puppeteer/generated/locator.js +164 -0
  164. package/dist/drivers/puppeteer/generated/mouse.d.ts +74 -0
  165. package/dist/drivers/puppeteer/generated/mouse.js +94 -0
  166. package/dist/drivers/puppeteer/generated/page.d.ts +604 -0
  167. package/dist/drivers/puppeteer/generated/page.js +776 -0
  168. package/dist/drivers/puppeteer/generated/target.d.ts +105 -0
  169. package/dist/drivers/puppeteer/generated/target.js +123 -0
  170. package/dist/drivers/puppeteer/generated/touchscreen.d.ts +87 -0
  171. package/dist/drivers/puppeteer/generated/touchscreen.js +103 -0
  172. package/dist/drivers/puppeteer/generated/tracing.d.ts +38 -0
  173. package/dist/drivers/puppeteer/generated/tracing.js +43 -0
  174. package/dist/drivers/puppeteer/generated/web-worker.d.ts +63 -0
  175. package/dist/drivers/puppeteer/generated/web-worker.js +73 -0
  176. package/dist/drivers/puppeteer/index.d.ts +21 -0
  177. package/dist/drivers/puppeteer/index.js +23 -0
  178. package/dist/drivers/puppeteer/remote-base.d.ts +57 -0
  179. package/dist/drivers/puppeteer/remote-base.js +79 -0
  180. package/dist/drivers/puppeteer/types.d.ts +178 -0
  181. package/dist/drivers/puppeteer/types.js +8 -0
  182. package/dist/drivers/selenium/driver.d.ts +28 -0
  183. package/dist/drivers/selenium/driver.js +169 -0
  184. package/dist/drivers/selenium/element.d.ts +34 -0
  185. package/dist/drivers/selenium/element.js +73 -0
  186. package/dist/drivers/selenium/index.d.ts +3 -0
  187. package/dist/drivers/selenium/index.js +5 -0
  188. package/dist/drivers/selenium/types.d.ts +2 -0
  189. package/dist/drivers/selenium/types.js +12 -0
  190. package/dist/drivers/stagehand/generated/context.d.ts +127 -0
  191. package/dist/drivers/stagehand/generated/context.js +153 -0
  192. package/dist/drivers/stagehand/generated/locator.d.ts +324 -0
  193. package/dist/drivers/stagehand/generated/locator.js +368 -0
  194. package/dist/drivers/stagehand/generated/page.d.ts +377 -0
  195. package/dist/drivers/stagehand/generated/page.js +439 -0
  196. package/dist/drivers/stagehand/generated/response.d.ts +197 -0
  197. package/dist/drivers/stagehand/generated/response.js +232 -0
  198. package/dist/drivers/stagehand/index.d.ts +5 -0
  199. package/dist/drivers/stagehand/index.js +8 -0
  200. package/dist/drivers/stagehand/types.d.ts +1 -0
  201. package/dist/drivers/stagehand/types.js +7 -0
  202. package/dist/errors.d.ts +47 -0
  203. package/dist/errors.js +157 -0
  204. package/dist/extensions/client.d.ts +47 -0
  205. package/dist/extensions/client.js +154 -0
  206. package/dist/extensions/index.d.ts +1 -0
  207. package/dist/extensions/index.js +1 -0
  208. package/dist/index.d.ts +12 -0
  209. package/dist/index.js +23 -0
  210. package/dist/internal/dev-client.d.ts +5 -0
  211. package/dist/internal/dev-client.js +9 -0
  212. package/dist/internal/rpc-targets.d.ts +17 -0
  213. package/dist/internal/rpc-targets.js +58 -0
  214. package/dist/internal/serialization.d.ts +32 -0
  215. package/dist/internal/serialization.js +42 -0
  216. package/dist/internal/transport.d.ts +24 -0
  217. package/dist/internal/transport.js +29 -0
  218. package/dist/playwright.d.ts +1 -0
  219. package/dist/playwright.js +2 -0
  220. package/dist/puppeteer.d.ts +1 -0
  221. package/dist/puppeteer.js +2 -0
  222. package/dist/selenium.d.ts +1 -0
  223. package/dist/selenium.js +2 -0
  224. package/dist/stagehand.d.ts +1 -0
  225. package/dist/stagehand.js +2 -0
  226. package/dist/storage/client.d.ts +151 -0
  227. package/dist/storage/client.js +329 -0
  228. package/dist/storage/index.d.ts +2 -0
  229. package/dist/storage/index.js +4 -0
  230. package/dist/telemetry.d.ts +18 -0
  231. package/dist/telemetry.js +93 -0
  232. package/dist/updates/client.d.ts +8 -0
  233. package/dist/updates/client.js +128 -0
  234. package/dist/updates/index.d.ts +1 -0
  235. package/dist/updates/index.js +1 -0
  236. package/dist/utils/http.d.ts +39 -0
  237. package/dist/utils/http.js +88 -0
  238. package/dist/utils/index.d.ts +4 -0
  239. package/dist/utils/index.js +4 -0
  240. package/dist/utils/logger.d.ts +27 -0
  241. package/dist/utils/logger.js +74 -0
  242. package/dist/utils/schema.d.ts +17 -0
  243. package/dist/utils/schema.js +31 -0
  244. package/dist/utils/url.d.ts +5 -0
  245. package/dist/utils/url.js +7 -0
  246. package/dist/vault/client.d.ts +43 -0
  247. package/dist/vault/client.js +123 -0
  248. package/dist/vault/index.d.ts +1 -0
  249. package/dist/vault/index.js +1 -0
  250. package/dist/version.d.ts +1 -0
  251. package/dist/version.js +4 -0
  252. package/dist/workspaces/browser-runtime.d.ts +251 -0
  253. package/dist/workspaces/browser-runtime.js +1025 -0
  254. package/dist/workspaces/client.d.ts +48 -0
  255. package/dist/workspaces/client.js +222 -0
  256. package/dist/workspaces/index.d.ts +2 -0
  257. package/dist/workspaces/index.js +2 -0
  258. package/dist/workspaces/runtime-event-pump.d.ts +65 -0
  259. package/dist/workspaces/runtime-event-pump.js +716 -0
  260. package/package.json +56 -0
@@ -0,0 +1,941 @@
1
+ /**
2
+ * AUTO-GENERATED FILE - DO NOT EDIT
3
+ *
4
+ * Generated from: packages/automation-spec/src/drivers/puppeteer/options.ts
5
+ * Run `pnpm generate:sdk-contracts` to regenerate.
6
+ */
7
+ /**
8
+ * Puppeteer-specific option schemas
9
+ *
10
+ * These match the real Puppeteer API 1:1.
11
+ * @see https://pptr.dev/api
12
+ */
13
+ import { z } from 'zod';
14
+ // ============================================================================
15
+ // Puppeteer Wait Until Values
16
+ // ============================================================================
17
+ export const PuppeteerWaitUntilSchema = z.enum([
18
+ 'load',
19
+ 'domcontentloaded',
20
+ 'networkidle0',
21
+ 'networkidle2',
22
+ ]);
23
+ // waitUntil can be a single value or array of values
24
+ export const PuppeteerWaitUntilOptionSchema = z.union([
25
+ PuppeteerWaitUntilSchema,
26
+ z.array(PuppeteerWaitUntilSchema),
27
+ ]);
28
+ // ============================================================================
29
+ // Navigation Options
30
+ // ============================================================================
31
+ export const PuppeteerGotoOptionsSchema = z.object({
32
+ waitUntil: PuppeteerWaitUntilOptionSchema.optional(),
33
+ timeout: z.number().nonnegative().optional(),
34
+ referer: z.string().optional(),
35
+ referrerPolicy: z.string().optional(),
36
+ });
37
+ export const PuppeteerWaitForNavigationOptionsSchema = z.object({
38
+ waitUntil: PuppeteerWaitUntilOptionSchema.optional(),
39
+ timeout: z.number().nonnegative().optional(),
40
+ });
41
+ // ReloadOptions extends WaitForOptions - https://pptr.dev/api/puppeteer.reloadoptions
42
+ export const PuppeteerReloadOptionsSchema = PuppeteerWaitForNavigationOptionsSchema.extend({
43
+ ignoreCache: z.boolean().optional(),
44
+ });
45
+ // WaitForNetworkIdleOptions - https://pptr.dev/api/puppeteer.waitfornetworkidleoptions
46
+ export const PuppeteerWaitForNetworkIdleOptionsSchema = z.object({
47
+ /** Maximum number of concurrent network connections to be considered inactive. Default: 0 */
48
+ concurrency: z.number().int().nonnegative().optional(),
49
+ /** Time in milliseconds the network should be idle. Default: 500 */
50
+ idleTime: z.number().nonnegative().optional(),
51
+ /** Maximum wait time in milliseconds. Pass 0 to disable timeout. Default: 30000 */
52
+ timeout: z.number().nonnegative().optional(),
53
+ });
54
+ // ============================================================================
55
+ // HTTP Response (serialized for RPC)
56
+ // ============================================================================
57
+ // RemoteAddress - https://pptr.dev/api/puppeteer.remoteaddress
58
+ export const PuppeteerRemoteAddressSchema = z.object({
59
+ ip: z.string().optional(),
60
+ port: z.number().optional(),
61
+ });
62
+ // SecurityDetails - https://pptr.dev/api/puppeteer.securitydetails
63
+ export const PuppeteerSecurityDetailsSchema = z.object({
64
+ issuer: z.string(),
65
+ protocol: z.string(),
66
+ subjectName: z.string(),
67
+ validFrom: z.number(),
68
+ validTo: z.number(),
69
+ subjectAlternativeNames: z.array(z.string()),
70
+ });
71
+ // ResourceTiming - https://developer.chrome.com/docs/devtools/network/reference/#timing
72
+ // Based on CDP Network.ResourceTiming
73
+ export const PuppeteerResourceTimingSchema = z.object({
74
+ requestTime: z.number(),
75
+ proxyStart: z.number(),
76
+ proxyEnd: z.number(),
77
+ dnsStart: z.number(),
78
+ dnsEnd: z.number(),
79
+ connectStart: z.number(),
80
+ connectEnd: z.number(),
81
+ sslStart: z.number(),
82
+ sslEnd: z.number(),
83
+ workerStart: z.number(),
84
+ workerReady: z.number(),
85
+ workerFetchStart: z.number(),
86
+ workerRespondWithSettled: z.number(),
87
+ sendStart: z.number(),
88
+ sendEnd: z.number(),
89
+ pushStart: z.number(),
90
+ pushEnd: z.number(),
91
+ receiveHeadersStart: z.number(),
92
+ receiveHeadersEnd: z.number(),
93
+ });
94
+ // HTTPResponse (serialized for RPC) - https://pptr.dev/api/puppeteer.httpresponse
95
+ // Extended with responseId for RPC tracking and all synchronous properties serialized
96
+ export const PuppeteerHTTPResponseSchema = z.object({
97
+ responseId: z.string(),
98
+ url: z.string(),
99
+ status: z.number(),
100
+ statusText: z.string(),
101
+ headers: z.record(z.string(), z.string()),
102
+ ok: z.boolean(),
103
+ fromCache: z.boolean(),
104
+ fromServiceWorker: z.boolean(),
105
+ remoteAddress: PuppeteerRemoteAddressSchema.optional(),
106
+ securityDetails: PuppeteerSecurityDetailsSchema.optional(),
107
+ timing: PuppeteerResourceTimingSchema.optional(),
108
+ // References for related objects (fetched via RPC if needed)
109
+ requestId: z.string().optional(),
110
+ frameId: z.string().optional(),
111
+ });
112
+ // ============================================================================
113
+ // Mouse Options
114
+ // ============================================================================
115
+ // MouseButton - https://pptr.dev/api/puppeteer.mousebutton
116
+ export const PuppeteerMouseButtonSchema = z.enum(['left', 'right', 'middle', 'back', 'forward']);
117
+ // Point - https://pptr.dev/api/puppeteer.point
118
+ export const PuppeteerPointSchema = z.object({
119
+ x: z.number(),
120
+ y: z.number(),
121
+ });
122
+ // Offset - https://pptr.dev/api/puppeteer.offset
123
+ export const PuppeteerOffsetSchema = z.object({
124
+ x: z.number(),
125
+ y: z.number(),
126
+ });
127
+ // MouseOptions - https://pptr.dev/api/puppeteer.mouseoptions
128
+ export const PuppeteerMouseOptionsSchema = z.object({
129
+ button: PuppeteerMouseButtonSchema.optional(),
130
+ clickCount: z.number().int().positive().optional(), // deprecated
131
+ });
132
+ // MouseClickOptions extends MouseOptions - https://pptr.dev/api/puppeteer.mouseclickoptions
133
+ export const PuppeteerMouseClickOptionsSchema = PuppeteerMouseOptionsSchema.extend({
134
+ count: z.number().int().positive().optional(),
135
+ delay: z.number().nonnegative().optional(),
136
+ });
137
+ // ClickOptions extends MouseClickOptions - https://pptr.dev/api/puppeteer.clickoptions
138
+ export const PuppeteerClickOptionsSchema = PuppeteerMouseClickOptionsSchema.extend({
139
+ offset: PuppeteerOffsetSchema.optional(),
140
+ /** @experimental If true, highlights the click location for debugging. */
141
+ debugHighlight: z.boolean().optional(),
142
+ });
143
+ // MouseMoveOptions - https://pptr.dev/api/puppeteer.mousemoveoptions
144
+ export const PuppeteerMouseMoveOptionsSchema = z.object({
145
+ steps: z.number().int().positive().optional(),
146
+ });
147
+ // MouseWheelOptions - https://pptr.dev/api/puppeteer.mousewheeloptions
148
+ export const PuppeteerMouseWheelOptionsSchema = z.object({
149
+ deltaX: z.number().optional(),
150
+ deltaY: z.number().optional(),
151
+ });
152
+ // DragData - https://chromedevtools.github.io/devtools-protocol/tot/Input/#type-DragData
153
+ // Used by drag, dragEnter, dragOver, drop methods
154
+ export const PuppeteerDragDataItemSchema = z.object({
155
+ mimeType: z.string(),
156
+ data: z.string(),
157
+ title: z.string().optional(),
158
+ baseURL: z.string().optional(),
159
+ });
160
+ export const PuppeteerDragDataSchema = z.object({
161
+ items: z.array(PuppeteerDragDataItemSchema),
162
+ files: z.array(z.string()).optional(),
163
+ dragOperationsMask: z.number().int(),
164
+ });
165
+ // KeyboardTypeOptions - https://pptr.dev/api/puppeteer.keyboardtypeoptions
166
+ export const PuppeteerKeyboardTypeOptionsSchema = z.object({
167
+ delay: z.number().nonnegative().optional(),
168
+ });
169
+ // KeyDownOptions - https://pptr.dev/api/puppeteer.keydownoptions
170
+ export const PuppeteerKeyDownOptionsSchema = z.object({
171
+ text: z.string().optional(),
172
+ commands: z.array(z.string()).optional(),
173
+ });
174
+ // KeyPressOptions - https://pptr.dev/api/puppeteer.keypressoptions
175
+ export const PuppeteerKeyPressOptionsSchema = z.object({
176
+ delay: z.number().nonnegative().optional(),
177
+ text: z.string().optional(),
178
+ commands: z.array(z.string()).optional(),
179
+ });
180
+ // ============================================================================
181
+ // Wait Options
182
+ // ============================================================================
183
+ export const PuppeteerWaitForOptionsSchema = z.object({
184
+ timeout: z.number().positive().optional(),
185
+ visible: z.boolean().optional(),
186
+ hidden: z.boolean().optional(),
187
+ });
188
+ // ============================================================================
189
+ // Screenshot Options
190
+ // ============================================================================
191
+ // ScreenshotClip extends BoundingBox - https://pptr.dev/api/puppeteer.screenshotclip
192
+ export const PuppeteerScreenshotClipSchema = z.object({
193
+ x: z.number(),
194
+ y: z.number(),
195
+ width: z.number().positive(),
196
+ height: z.number().positive(),
197
+ scale: z.number().positive().optional(), // default: 1
198
+ });
199
+ // Keep alias for backwards compatibility
200
+ /** @deprecated Use PuppeteerScreenshotClipSchema instead */
201
+ export const PuppeteerClipRegionSchema = PuppeteerScreenshotClipSchema;
202
+ // ImageFormat - https://pptr.dev/api/puppeteer.imageformat
203
+ export const PuppeteerImageFormatSchema = z.enum(['png', 'jpeg', 'webp']);
204
+ export const PuppeteerScreenshotOptionsSchema = z.object({
205
+ path: z.string().optional(),
206
+ type: PuppeteerImageFormatSchema.optional(),
207
+ quality: z.number().int().min(0).max(100).optional(),
208
+ fullPage: z.boolean().optional(),
209
+ clip: PuppeteerScreenshotClipSchema.optional(),
210
+ omitBackground: z.boolean().optional(),
211
+ encoding: z.enum(['base64', 'binary']).optional(),
212
+ captureBeyondViewport: z.boolean().optional(),
213
+ fromSurface: z.boolean().optional(), // default: true - capture from surface rather than view
214
+ optimizeForSpeed: z.boolean().optional(), // default: false
215
+ });
216
+ // ============================================================================
217
+ // PDF Options
218
+ // ============================================================================
219
+ export const PuppeteerPDFMarginSchema = z.object({
220
+ top: z.union([z.string(), z.number()]).optional(),
221
+ right: z.union([z.string(), z.number()]).optional(),
222
+ bottom: z.union([z.string(), z.number()]).optional(),
223
+ left: z.union([z.string(), z.number()]).optional(),
224
+ });
225
+ // PaperFormat - https://pptr.dev/api/puppeteer.paperformat
226
+ export const PuppeteerPaperFormatSchema = z.enum([
227
+ 'letter',
228
+ 'legal',
229
+ 'tabloid',
230
+ 'ledger',
231
+ 'a0',
232
+ 'a1',
233
+ 'a2',
234
+ 'a3',
235
+ 'a4',
236
+ 'a5',
237
+ 'a6',
238
+ ]);
239
+ export const PuppeteerPDFOptionsSchema = z.object({
240
+ path: z.string().optional(),
241
+ scale: z.number().positive().optional(),
242
+ displayHeaderFooter: z.boolean().optional(),
243
+ headerTemplate: z.string().optional(),
244
+ footerTemplate: z.string().optional(),
245
+ printBackground: z.boolean().optional(),
246
+ landscape: z.boolean().optional(),
247
+ pageRanges: z.string().optional(),
248
+ format: z.union([PuppeteerPaperFormatSchema, z.string()]).optional(),
249
+ width: z.union([z.string(), z.number()]).optional(),
250
+ height: z.union([z.string(), z.number()]).optional(),
251
+ margin: PuppeteerPDFMarginSchema.optional(),
252
+ preferCSSPageSize: z.boolean().optional(),
253
+ omitBackground: z.boolean().optional(),
254
+ timeout: z.number().nonnegative().optional(), // 0 disables timeout
255
+ /** @experimental Generate a document outline. */
256
+ outline: z.boolean().optional(),
257
+ /** @experimental Generate a tagged (accessible) PDF. Default: true */
258
+ tagged: z.boolean().optional(),
259
+ /** Wait for document.fonts.ready before generating PDF. Default: true */
260
+ waitForFonts: z.boolean().optional(),
261
+ });
262
+ // ============================================================================
263
+ // Viewport Options
264
+ // ============================================================================
265
+ export const PuppeteerViewportSchema = z.object({
266
+ width: z.number().int().positive(),
267
+ height: z.number().int().positive(),
268
+ deviceScaleFactor: z.number().positive().optional(),
269
+ isMobile: z.boolean().optional(),
270
+ hasTouch: z.boolean().optional(),
271
+ isLandscape: z.boolean().optional(),
272
+ });
273
+ // ============================================================================
274
+ // Cookie Options
275
+ // ============================================================================
276
+ // CookiePartitionKey - https://pptr.dev/api/puppeteer.cookiepartitionkey
277
+ // Represents a cookie partition key in Chrome
278
+ export const PuppeteerCookiePartitionKeySchema = z.object({
279
+ sourceOrigin: z.string(), // Required - site of top-level URL
280
+ hasCrossSiteAncestor: z.boolean().optional(), // Chrome only
281
+ });
282
+ // CookieSameSite - https://pptr.dev/api/puppeteer.cookiesamesite
283
+ export const PuppeteerCookieSameSiteSchema = z.enum(['Strict', 'Lax', 'None']);
284
+ // CookiePriority - https://pptr.dev/api/puppeteer.cookiepriority
285
+ export const PuppeteerCookiePrioritySchema = z.enum(['Low', 'Medium', 'High']);
286
+ // CookieSourceScheme - https://pptr.dev/api/puppeteer.cookiesourcescheme
287
+ export const PuppeteerCookieSourceSchemeSchema = z.enum(['Unset', 'NonSecure', 'Secure']);
288
+ // Cookie - returned by cookies() method
289
+ export const PuppeteerCookieSchema = z.object({
290
+ name: z.string(),
291
+ value: z.string(),
292
+ domain: z.string().optional(),
293
+ path: z.string().optional(),
294
+ expires: z.number().optional(),
295
+ httpOnly: z.boolean().optional(),
296
+ secure: z.boolean().optional(),
297
+ sameSite: PuppeteerCookieSameSiteSchema.optional(),
298
+ });
299
+ // CookieData - for browser.setCookie() - https://pptr.dev/api/puppeteer.cookiedata
300
+ export const PuppeteerCookieDataSchema = z.object({
301
+ name: z.string(),
302
+ value: z.string(),
303
+ domain: z.string(),
304
+ path: z.string().optional(),
305
+ expires: z.number().optional(),
306
+ httpOnly: z.boolean().optional(),
307
+ secure: z.boolean().optional(),
308
+ sameSite: PuppeteerCookieSameSiteSchema.optional(),
309
+ priority: PuppeteerCookiePrioritySchema.optional(),
310
+ sameParty: z.boolean().optional(),
311
+ sourceScheme: PuppeteerCookieSourceSchemeSchema.optional(),
312
+ partitionKey: z.union([PuppeteerCookiePartitionKeySchema, z.string()]).optional(),
313
+ });
314
+ // DeleteCookiesRequest - for deleteMatchingCookies() - https://pptr.dev/api/puppeteer.deletecookiesrequest
315
+ export const PuppeteerDeleteCookiesRequestSchema = z.object({
316
+ name: z.string(),
317
+ domain: z.string().optional(),
318
+ path: z.string().optional(),
319
+ url: z.string().optional(),
320
+ partitionKey: z.union([PuppeteerCookiePartitionKeySchema, z.string()]).optional(),
321
+ });
322
+ // ============================================================================
323
+ // Window Options
324
+ // ============================================================================
325
+ // WindowState - https://pptr.dev/api/puppeteer.windowstate
326
+ export const PuppeteerWindowStateSchema = z.enum([
327
+ 'normal',
328
+ 'minimized',
329
+ 'maximized',
330
+ 'fullscreen',
331
+ ]);
332
+ // WindowBounds - https://pptr.dev/api/puppeteer.windowbounds
333
+ export const PuppeteerWindowBoundsSchema = z.object({
334
+ left: z.number().optional(),
335
+ top: z.number().optional(),
336
+ width: z.number().optional(),
337
+ height: z.number().optional(),
338
+ windowState: PuppeteerWindowStateSchema.optional(),
339
+ });
340
+ // ============================================================================
341
+ // Target Options
342
+ // ============================================================================
343
+ // TargetType - https://pptr.dev/api/puppeteer.targettype
344
+ export const PuppeteerTargetTypeSchema = z.enum([
345
+ 'background_page',
346
+ 'browser',
347
+ 'other',
348
+ 'page',
349
+ 'service_worker',
350
+ 'shared_worker',
351
+ 'webview',
352
+ ]);
353
+ // Target (serialized for RPC) - https://pptr.dev/api/puppeteer.target
354
+ export const PuppeteerTargetSchema = z.object({
355
+ targetId: z.string(),
356
+ type: PuppeteerTargetTypeSchema,
357
+ url: z.string(),
358
+ title: z.string().optional(),
359
+ attached: z.boolean().optional(),
360
+ openerId: z.string().optional(),
361
+ browserContextId: z.string().optional(),
362
+ });
363
+ // WaitForTargetOptions - https://pptr.dev/api/puppeteer.waitfortargetoptions
364
+ // Note: AbortSignal cannot be serialized over RPC, so it's omitted
365
+ export const PuppeteerWaitForTargetOptionsSchema = z.object({
366
+ timeout: z.number().optional(), // default 30000ms, 0 to disable
367
+ });
368
+ // TargetFilter - for RPC-based waitForTarget (replaces predicate function)
369
+ // Since functions can't be serialized, we use filter criteria instead
370
+ export const PuppeteerTargetFilterSchema = z.object({
371
+ type: PuppeteerTargetTypeSchema.optional(),
372
+ url: z.string().optional(), // exact match or regex pattern
373
+ urlPattern: z.string().optional(), // regex pattern for URL matching
374
+ });
375
+ // ============================================================================
376
+ // Browser Context Options
377
+ // ============================================================================
378
+ // DownloadPolicy - https://pptr.dev/api/puppeteer.downloadpolicy
379
+ export const PuppeteerDownloadPolicySchema = z.enum(['deny', 'allow', 'allowAndName', 'default']);
380
+ // DownloadBehavior - https://pptr.dev/api/puppeteer.downloadbehavior
381
+ export const PuppeteerDownloadBehaviorSchema = z.object({
382
+ policy: PuppeteerDownloadPolicySchema,
383
+ downloadPath: z.string().optional(),
384
+ });
385
+ // BrowserContextOptions - https://pptr.dev/api/puppeteer.browsercontextoptions
386
+ export const PuppeteerBrowserContextOptionsSchema = z.object({
387
+ /** Proxy server with optional port to use for all requests. */
388
+ proxyServer: z.string().optional(),
389
+ /** Bypass the proxy for the given list of hosts. */
390
+ proxyBypassList: z.array(z.string()).optional(),
391
+ /** Behavior definition for when downloading a file. */
392
+ downloadBehavior: PuppeteerDownloadBehaviorSchema.optional(),
393
+ });
394
+ // ============================================================================
395
+ // Permission Options
396
+ // ============================================================================
397
+ // Permission - https://pptr.dev/api/puppeteer.permission
398
+ export const PuppeteerPermissionSchema = z.enum([
399
+ 'geolocation',
400
+ 'midi',
401
+ 'notifications',
402
+ 'camera',
403
+ 'microphone',
404
+ 'background-sync',
405
+ 'ambient-light-sensor',
406
+ 'accelerometer',
407
+ 'gyroscope',
408
+ 'magnetometer',
409
+ 'accessibility-events',
410
+ 'clipboard-read',
411
+ 'clipboard-write',
412
+ 'clipboard-sanitized-write',
413
+ 'payment-handler',
414
+ 'persistent-storage',
415
+ 'idle-detection',
416
+ 'midi-sysex',
417
+ ]);
418
+ // ============================================================================
419
+ // Geolocation Options
420
+ // ============================================================================
421
+ export const PuppeteerGeolocationSchema = z.object({
422
+ latitude: z.number().min(-90).max(90),
423
+ longitude: z.number().min(-180).max(180),
424
+ accuracy: z.number().positive().optional(),
425
+ });
426
+ // ============================================================================
427
+ // Bounding Box Result
428
+ // ============================================================================
429
+ export const PuppeteerBoundingBoxSchema = z.object({
430
+ x: z.number(),
431
+ y: z.number(),
432
+ width: z.number(),
433
+ height: z.number(),
434
+ });
435
+ // ============================================================================
436
+ // Box Model
437
+ // ============================================================================
438
+ // BoxModel - https://pptr.dev/api/puppeteer.boxmodel
439
+ export const PuppeteerBoxModelSchema = z.object({
440
+ content: z.array(PuppeteerPointSchema),
441
+ padding: z.array(PuppeteerPointSchema),
442
+ border: z.array(PuppeteerPointSchema),
443
+ margin: z.array(PuppeteerPointSchema),
444
+ width: z.number(),
445
+ height: z.number(),
446
+ });
447
+ // ============================================================================
448
+ // Autofill Options
449
+ // ============================================================================
450
+ // CreditCard - https://pptr.dev/api/puppeteer.elementhandle.autofill
451
+ export const PuppeteerCreditCardSchema = z.object({
452
+ number: z.string(),
453
+ name: z.string(),
454
+ expiryMonth: z.string(),
455
+ expiryYear: z.string(),
456
+ cvc: z.string(),
457
+ });
458
+ // AutofillData - https://pptr.dev/api/puppeteer.elementhandle.autofill
459
+ export const PuppeteerAutofillDataSchema = z.object({
460
+ creditCard: PuppeteerCreditCardSchema,
461
+ });
462
+ // ============================================================================
463
+ // Wait for Selector Options
464
+ // ============================================================================
465
+ // WaitForSelectorOptions - https://pptr.dev/api/puppeteer.waitforselectoroptions
466
+ export const PuppeteerWaitForSelectorOptionsSchema = z.object({
467
+ visible: z.boolean().optional(),
468
+ hidden: z.boolean().optional(),
469
+ timeout: z.number().optional(),
470
+ });
471
+ // ============================================================================
472
+ // Frame Add Script/Style Tag Options
473
+ // ============================================================================
474
+ // FrameAddScriptTagOptions - https://pptr.dev/api/puppeteer.frameaddscripttagoptions
475
+ export const PuppeteerFrameAddScriptTagOptionsSchema = z.object({
476
+ url: z.string().optional(),
477
+ path: z.string().optional(),
478
+ content: z.string().optional(),
479
+ type: z.string().optional(),
480
+ id: z.string().optional(),
481
+ });
482
+ // FrameAddStyleTagOptions - https://pptr.dev/api/puppeteer.frameaddstyletagoptions
483
+ export const PuppeteerFrameAddStyleTagOptionsSchema = z.object({
484
+ url: z.string().optional(),
485
+ path: z.string().optional(),
486
+ content: z.string().optional(),
487
+ });
488
+ // ============================================================================
489
+ // Select Option
490
+ // ============================================================================
491
+ export const PuppeteerSelectOptionSchema = z.object({
492
+ value: z.string().optional(),
493
+ label: z.string().optional(),
494
+ index: z.number().int().optional(),
495
+ });
496
+ // ============================================================================
497
+ // Serialized Element (for RPC)
498
+ // ============================================================================
499
+ export const PuppeteerSerializedElementSchema = z.object({
500
+ tagName: z.string(),
501
+ id: z.string().optional(),
502
+ className: z.string().optional(),
503
+ textContent: z.string().optional(),
504
+ innerText: z.string().optional(),
505
+ innerHTML: z.string().optional(),
506
+ attributes: z.record(z.string(), z.string()).optional(),
507
+ });
508
+ // ============================================================================
509
+ // Device Emulation
510
+ // ============================================================================
511
+ // Device - https://pptr.dev/api/puppeteer.device
512
+ export const PuppeteerDeviceSchema = z.object({
513
+ name: z.string(),
514
+ userAgent: z.string(),
515
+ viewport: PuppeteerViewportSchema,
516
+ });
517
+ // ============================================================================
518
+ // Idle State Emulation
519
+ // ============================================================================
520
+ // IdleOverrides - for emulateIdleState
521
+ export const PuppeteerIdleOverridesSchema = z.object({
522
+ isUserActive: z.boolean(),
523
+ isScreenUnlocked: z.boolean(),
524
+ });
525
+ // ============================================================================
526
+ // Media Features
527
+ // ============================================================================
528
+ // MediaFeature - for emulateMediaFeatures
529
+ export const PuppeteerMediaFeatureSchema = z.object({
530
+ name: z.string(),
531
+ value: z.string(),
532
+ });
533
+ // ============================================================================
534
+ // Network Conditions
535
+ // ============================================================================
536
+ // NetworkConditions - for emulateNetworkConditions
537
+ export const PuppeteerNetworkConditionsSchema = z.object({
538
+ download: z.number(), // Download speed (bytes/s), -1 to disable
539
+ upload: z.number(), // Upload speed (bytes/s), -1 to disable
540
+ latency: z.number(), // Latency (ms)
541
+ });
542
+ // ============================================================================
543
+ // HTTP Request (serialized for RPC)
544
+ // ============================================================================
545
+ // ResourceType - https://pptr.dev/api/puppeteer.resourcetype
546
+ export const PuppeteerResourceTypeSchema = z.enum([
547
+ 'document',
548
+ 'stylesheet',
549
+ 'image',
550
+ 'media',
551
+ 'font',
552
+ 'script',
553
+ 'texttrack',
554
+ 'xhr',
555
+ 'fetch',
556
+ 'prefetch',
557
+ 'eventsource',
558
+ 'websocket',
559
+ 'manifest',
560
+ 'signedexchange',
561
+ 'ping',
562
+ 'cspviolationreport',
563
+ 'preflight',
564
+ 'other',
565
+ ]);
566
+ // ErrorCode - https://pptr.dev/api/puppeteer.errorcode
567
+ // Network error codes for HTTPRequest.abort()
568
+ export const PuppeteerErrorCodeSchema = z.enum([
569
+ 'aborted',
570
+ 'accessdenied',
571
+ 'addressunreachable',
572
+ 'blockedbyclient',
573
+ 'blockedbyresponse',
574
+ 'connectionaborted',
575
+ 'connectionclosed',
576
+ 'connectionfailed',
577
+ 'connectionrefused',
578
+ 'connectionreset',
579
+ 'internetdisconnected',
580
+ 'namenotresolved',
581
+ 'timedout',
582
+ 'failed',
583
+ ]);
584
+ // InterceptResolutionAction - https://pptr.dev/api/puppeteer.interceptresolutionaction
585
+ export const PuppeteerInterceptResolutionActionSchema = z.enum([
586
+ 'abort',
587
+ 'already-handled',
588
+ 'continue',
589
+ 'disabled',
590
+ 'none',
591
+ 'respond',
592
+ ]);
593
+ // InterceptResolutionState - https://pptr.dev/api/puppeteer.interceptresolutionstate
594
+ export const PuppeteerInterceptResolutionStateSchema = z.object({
595
+ action: PuppeteerInterceptResolutionActionSchema,
596
+ priority: z.number().optional(),
597
+ });
598
+ // ContinueRequestOverrides - https://pptr.dev/api/puppeteer.continuerequestoverrides
599
+ export const PuppeteerContinueRequestOverridesSchema = z.object({
600
+ url: z.string().optional(),
601
+ method: z.string().optional(),
602
+ postData: z.string().optional(),
603
+ headers: z.record(z.string(), z.string()).optional(),
604
+ });
605
+ // ResponseForRequest - https://pptr.dev/api/puppeteer.responseforrequest
606
+ export const PuppeteerResponseForRequestSchema = z.object({
607
+ status: z.number(),
608
+ headers: z.record(z.string(), z.unknown()).optional(),
609
+ contentType: z.string().optional(),
610
+ body: z.union([z.string(), z.instanceof(Uint8Array)]).optional(),
611
+ });
612
+ // Initiator - CDP Network.Initiator type
613
+ // @see https://chromedevtools.github.io/devtools-protocol/tot/Network/#type-Initiator
614
+ export const PuppeteerInitiatorTypeSchema = z.enum([
615
+ 'parser',
616
+ 'script',
617
+ 'preload',
618
+ 'SignedExchange',
619
+ 'preflight',
620
+ 'other',
621
+ ]);
622
+ export const PuppeteerInitiatorSchema = z.object({
623
+ type: PuppeteerInitiatorTypeSchema,
624
+ url: z.string().optional(),
625
+ lineNumber: z.number().optional(),
626
+ columnNumber: z.number().optional(),
627
+ requestId: z.string().optional(),
628
+ });
629
+ // HTTPRequest (serialized) - https://pptr.dev/api/puppeteer.httprequest
630
+ // Extended to include requestId for RPC tracking
631
+ export const PuppeteerHTTPRequestSchema = z.object({
632
+ requestId: z.string(),
633
+ url: z.string(),
634
+ method: z.string(),
635
+ headers: z.record(z.string(), z.string()),
636
+ postData: z.string().optional(),
637
+ hasPostData: z.boolean().optional(),
638
+ resourceType: PuppeteerResourceTypeSchema,
639
+ isNavigationRequest: z.boolean(),
640
+ initiator: PuppeteerInitiatorSchema.optional(),
641
+ redirectChain: z.array(z.string()).optional(), // Array of requestIds
642
+ responseId: z.string().optional(), // Reference to associated response
643
+ frameId: z.string().optional(), // Reference to frame that initiated
644
+ });
645
+ // ============================================================================
646
+ // Frame (serialized for RPC)
647
+ // ============================================================================
648
+ // Frame (serialized) - https://pptr.dev/api/puppeteer.frame
649
+ export const PuppeteerFrameSchema = z.object({
650
+ frameId: z.string(),
651
+ url: z.string(),
652
+ name: z.string().optional(),
653
+ parentFrameId: z.string().optional(),
654
+ isDetached: z.boolean().optional(),
655
+ isOOPFrame: z.boolean().optional(),
656
+ });
657
+ // ============================================================================
658
+ // WebWorker (serialized for RPC)
659
+ // ============================================================================
660
+ // WebWorker (serialized) - https://pptr.dev/api/puppeteer.webworker
661
+ export const PuppeteerWebWorkerSchema = z.object({
662
+ workerId: z.string(),
663
+ url: z.string(),
664
+ });
665
+ // ============================================================================
666
+ // RemoteObject (CDP Protocol types for JSHandle)
667
+ // ============================================================================
668
+ // RemoteObjectType - from CDP Protocol.Runtime.RemoteObject.type
669
+ // @see https://chromedevtools.github.io/devtools-protocol/tot/Runtime/#type-RemoteObject
670
+ export const PuppeteerRemoteObjectTypeSchema = z.enum([
671
+ 'object',
672
+ 'function',
673
+ 'undefined',
674
+ 'string',
675
+ 'number',
676
+ 'boolean',
677
+ 'symbol',
678
+ 'bigint',
679
+ ]);
680
+ // RemoteObjectSubtype - from CDP Protocol.Runtime.RemoteObject.subtype
681
+ export const PuppeteerRemoteObjectSubtypeSchema = z.enum([
682
+ 'array',
683
+ 'null',
684
+ 'node',
685
+ 'regexp',
686
+ 'date',
687
+ 'map',
688
+ 'set',
689
+ 'weakmap',
690
+ 'weakset',
691
+ 'iterator',
692
+ 'generator',
693
+ 'error',
694
+ 'proxy',
695
+ 'promise',
696
+ 'typedarray',
697
+ 'arraybuffer',
698
+ 'dataview',
699
+ 'webassemblymemory',
700
+ 'wasmvalue',
701
+ ]);
702
+ // RemoteObject - CDP Protocol.Runtime.RemoteObject (simplified for RPC)
703
+ export const PuppeteerRemoteObjectSchema = z.object({
704
+ type: PuppeteerRemoteObjectTypeSchema,
705
+ subtype: PuppeteerRemoteObjectSubtypeSchema.optional(),
706
+ className: z.string().optional(),
707
+ value: z.unknown().optional(),
708
+ unserializableValue: z.string().optional(),
709
+ description: z.string().optional(),
710
+ objectId: z.string().optional(),
711
+ });
712
+ // ============================================================================
713
+ // Vision Deficiency
714
+ // ============================================================================
715
+ export const PuppeteerVisionDeficiencySchema = z.enum([
716
+ 'none',
717
+ 'achromatopsia',
718
+ 'blurredVision',
719
+ 'deuteranopia',
720
+ 'protanopia',
721
+ 'tritanopia',
722
+ ]);
723
+ // SerializedAXNode Zod schema
724
+ export const PuppeteerSerializedAXNodeSchema = z.lazy(() => z.object({
725
+ // Required - the role of the node (e.g., 'button', 'heading', 'link')
726
+ role: z.string(),
727
+ // Common properties
728
+ name: z.string().optional(),
729
+ value: z.union([z.string(), z.number()]).optional(),
730
+ description: z.string().optional(),
731
+ keyshortcuts: z.string().optional(),
732
+ roledescription: z.string().optional(),
733
+ valuetext: z.string().optional(),
734
+ url: z.string().optional(),
735
+ // Boolean state properties
736
+ disabled: z.boolean().optional(),
737
+ expanded: z.boolean().optional(),
738
+ focused: z.boolean().optional(),
739
+ modal: z.boolean().optional(),
740
+ multiline: z.boolean().optional(),
741
+ multiselectable: z.boolean().optional(),
742
+ readonly: z.boolean().optional(),
743
+ required: z.boolean().optional(),
744
+ selected: z.boolean().optional(),
745
+ // Mixed state properties (can be boolean or 'mixed')
746
+ checked: z.union([z.boolean(), z.literal('mixed')]).optional(),
747
+ pressed: z.union([z.boolean(), z.literal('mixed')]).optional(),
748
+ // Numeric properties
749
+ level: z.number().optional(),
750
+ valuemin: z.number().optional(),
751
+ valuemax: z.number().optional(),
752
+ // Enum properties
753
+ autocomplete: z.enum(['none', 'inline', 'list', 'both']).optional(),
754
+ haspopup: z.enum(['false', 'menu', 'listbox', 'tree', 'grid', 'dialog']).optional(),
755
+ invalid: z.enum(['grammar', 'spelling', 'page', 'step', 'true', 'false']).optional(),
756
+ orientation: z.enum(['vertical', 'horizontal']).optional(),
757
+ // Recursive children
758
+ children: z.array(PuppeteerSerializedAXNodeSchema).optional(),
759
+ }));
760
+ // SnapshotOptions - https://pptr.dev/api/puppeteer.snapshotoptions
761
+ // Options for Accessibility.snapshot()
762
+ export const PuppeteerSnapshotOptionsSchema = z.object({
763
+ /**
764
+ * Prune uninteresting nodes from the tree.
765
+ * @default true
766
+ */
767
+ interestingOnly: z.boolean().optional(),
768
+ /**
769
+ * Root element handle to get the accessibility tree for.
770
+ * Note: For RPC, we use an element handle ID string instead of the actual ElementHandle.
771
+ * If not provided, defaults to the root node of the entire page.
772
+ */
773
+ root: z.string().optional(),
774
+ });
775
+ // ============================================================================
776
+ // Tracing Options
777
+ // ============================================================================
778
+ // TracingOptions - https://pptr.dev/api/puppeteer.tracingoptions
779
+ export const PuppeteerTracingOptionsSchema = z.object({
780
+ categories: z.array(z.string()).optional(),
781
+ path: z.string().optional(),
782
+ screenshots: z.boolean().optional(),
783
+ });
784
+ // ============================================================================
785
+ // Dialog Options
786
+ // ============================================================================
787
+ // DialogType - https://pptr.dev/api/puppeteer.dialog
788
+ export const PuppeteerDialogTypeSchema = z.enum(['alert', 'confirm', 'prompt', 'beforeunload']);
789
+ // Dialog (serialized for RPC) - https://pptr.dev/api/puppeteer.dialog
790
+ export const PuppeteerDialogSchema = z.object({
791
+ dialogId: z.string(),
792
+ type: PuppeteerDialogTypeSchema,
793
+ message: z.string(),
794
+ defaultValue: z.string(),
795
+ });
796
+ // ============================================================================
797
+ // ConsoleMessage Options
798
+ // ============================================================================
799
+ // ConsoleMessageType - https://pptr.dev/api/puppeteer.consolemessagetype
800
+ export const PuppeteerConsoleMessageTypeSchema = z.enum([
801
+ 'log',
802
+ 'debug',
803
+ 'info',
804
+ 'error',
805
+ 'warn',
806
+ 'dir',
807
+ 'dirxml',
808
+ 'table',
809
+ 'trace',
810
+ 'clear',
811
+ 'startGroup',
812
+ 'startGroupCollapsed',
813
+ 'endGroup',
814
+ 'assert',
815
+ 'profile',
816
+ 'profileEnd',
817
+ 'count',
818
+ 'timeEnd',
819
+ 'verbose',
820
+ ]);
821
+ // ConsoleMessageLocation - https://pptr.dev/api/puppeteer.consolemessagelocation
822
+ export const PuppeteerConsoleMessageLocationSchema = z.object({
823
+ url: z.string().optional(),
824
+ lineNumber: z.number().optional(),
825
+ columnNumber: z.number().optional(),
826
+ });
827
+ // ConsoleMessage (serialized for RPC) - https://pptr.dev/api/puppeteer.consolemessage
828
+ export const PuppeteerConsoleMessageSchema = z.object({
829
+ type: PuppeteerConsoleMessageTypeSchema,
830
+ text: z.string(),
831
+ location: PuppeteerConsoleMessageLocationSchema,
832
+ stackTrace: z.array(PuppeteerConsoleMessageLocationSchema),
833
+ args: z.array(z.unknown()), // Serialized JSON values (JSHandles can't be serialized)
834
+ });
835
+ // ============================================================================
836
+ // TouchHandle (serialized for RPC)
837
+ // ============================================================================
838
+ // TouchHandle - https://pptr.dev/api/puppeteer.touchhandle
839
+ // Serialized version for RPC - contains touch ID to track the touch on the server
840
+ export const PuppeteerTouchHandleSchema = z.object({
841
+ touchId: z.string(),
842
+ });
843
+ // ============================================================================
844
+ // Locator Options
845
+ // ============================================================================
846
+ // VisibilityOption - https://pptr.dev/api/puppeteer.visibilityoption
847
+ export const PuppeteerVisibilityOptionSchema = z.enum(['visible', 'hidden']).nullable();
848
+ // ActionOptions - base for all locator actions
849
+ // Note: AbortSignal cannot be serialized over RPC, so it's omitted
850
+ export const PuppeteerActionOptionsSchema = z.object({
851
+ timeout: z.number().nonnegative().optional(),
852
+ });
853
+ // LocatorScrollOptions extends ActionOptions
854
+ export const PuppeteerLocatorScrollOptionsSchema = PuppeteerActionOptionsSchema.extend({
855
+ scrollLeft: z.number().optional(),
856
+ scrollTop: z.number().optional(),
857
+ });
858
+ // LocatorClickOptions extends ClickOptions (which extends MouseClickOptions)
859
+ // https://pptr.dev/api/puppeteer.locatorclickoptions
860
+ export const PuppeteerLocatorClickOptionsSchema = PuppeteerClickOptionsSchema.extend({
861
+ timeout: z.number().nonnegative().optional(),
862
+ });
863
+ // ============================================================================
864
+ // Coverage Options
865
+ // ============================================================================
866
+ // CSSCoverageOptions - https://pptr.dev/api/puppeteer.csscoverageoptions
867
+ export const PuppeteerCSSCoverageOptionsSchema = z.object({
868
+ resetOnNavigation: z.boolean().optional(),
869
+ });
870
+ // JSCoverageOptions - https://pptr.dev/api/puppeteer.jscoverageoptions
871
+ export const PuppeteerJSCoverageOptionsSchema = z.object({
872
+ resetOnNavigation: z.boolean().optional(),
873
+ reportAnonymousScripts: z.boolean().optional(),
874
+ includeRawScriptCoverage: z.boolean().optional(),
875
+ useBlockCoverage: z.boolean().optional(),
876
+ });
877
+ // CoverageRange - part of CoverageEntry
878
+ export const PuppeteerCoverageRangeSchema = z.object({
879
+ start: z.number(),
880
+ end: z.number(),
881
+ });
882
+ // CoverageEntry - https://pptr.dev/api/puppeteer.coverageentry
883
+ export const PuppeteerCoverageEntrySchema = z.object({
884
+ url: z.string(),
885
+ text: z.string(),
886
+ ranges: z.array(PuppeteerCoverageRangeSchema),
887
+ });
888
+ // JSCoverageEntry extends CoverageEntry - https://pptr.dev/api/puppeteer.jscoverageentry
889
+ // Note: rawScriptCoverage is from CDP Protocol.Profiler.ScriptCoverage, simplified for RPC
890
+ export const PuppeteerJSCoverageEntrySchema = PuppeteerCoverageEntrySchema.extend({
891
+ rawScriptCoverage: z
892
+ .object({
893
+ scriptId: z.string(),
894
+ url: z.string(),
895
+ functions: z.array(z.object({
896
+ functionName: z.string(),
897
+ ranges: z.array(z.object({
898
+ startOffset: z.number(),
899
+ endOffset: z.number(),
900
+ count: z.number(),
901
+ })),
902
+ isBlockCoverage: z.boolean(),
903
+ })),
904
+ })
905
+ .optional(),
906
+ });
907
+ // PageEvent - https://pptr.dev/api/puppeteer.pageevent
908
+ export const PuppeteerPageEventSchema = z.enum([
909
+ 'close',
910
+ 'console',
911
+ 'dialog',
912
+ 'domcontentloaded',
913
+ 'error',
914
+ 'frameattached',
915
+ 'framedetached',
916
+ 'framenavigated',
917
+ 'load',
918
+ 'metrics',
919
+ 'pageerror',
920
+ 'popup',
921
+ 'request',
922
+ 'requestfailed',
923
+ 'requestfinished',
924
+ 'requestservedfromcache',
925
+ 'response',
926
+ 'workercreated',
927
+ 'workerdestroyed',
928
+ ]);
929
+ // BrowserEvent - https://pptr.dev/api/puppeteer.browserevent
930
+ export const PuppeteerBrowserEventSchema = z.enum([
931
+ 'disconnected',
932
+ 'targetchanged',
933
+ 'targetcreated',
934
+ 'targetdestroyed',
935
+ ]);
936
+ // BrowserContextEvent - https://pptr.dev/api/puppeteer.browsercontextevent
937
+ export const PuppeteerBrowserContextEventSchema = z.enum([
938
+ 'targetchanged',
939
+ 'targetcreated',
940
+ 'targetdestroyed',
941
+ ]);