browxai 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (520) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +139 -0
  3. package/THIRD_PARTY_NOTICES.md +45 -0
  4. package/dist/cli/chrome.d.ts +1 -0
  5. package/dist/cli/chrome.js +130 -0
  6. package/dist/cli/command-registry.d.ts +15 -0
  7. package/dist/cli/command-registry.js +35 -0
  8. package/dist/cli/doctor-plugins.d.ts +18 -0
  9. package/dist/cli/doctor-plugins.js +338 -0
  10. package/dist/cli/doctor.d.ts +9 -0
  11. package/dist/cli/doctor.js +407 -0
  12. package/dist/cli/init.d.ts +1 -0
  13. package/dist/cli/init.js +200 -0
  14. package/dist/cli/register-commands.d.ts +1 -0
  15. package/dist/cli/register-commands.js +22 -0
  16. package/dist/cli/serve.d.ts +14 -0
  17. package/dist/cli/serve.js +151 -0
  18. package/dist/cli.d.ts +3 -0
  19. package/dist/cli.js +129 -0
  20. package/dist/engine/adapters/adb.d.ts +72 -0
  21. package/dist/engine/adapters/adb.js +200 -0
  22. package/dist/engine/adapters/android-cdp.d.ts +54 -0
  23. package/dist/engine/adapters/android-cdp.js +110 -0
  24. package/dist/engine/adapters/android.engine.d.ts +1 -0
  25. package/dist/engine/adapters/android.engine.js +31 -0
  26. package/dist/engine/adapters/chromium.engine.d.ts +1 -0
  27. package/dist/engine/adapters/chromium.engine.js +44 -0
  28. package/dist/engine/adapters/firefox.engine.d.ts +1 -0
  29. package/dist/engine/adapters/firefox.engine.js +43 -0
  30. package/dist/engine/adapters/playwright-chromium.d.ts +43 -0
  31. package/dist/engine/adapters/playwright-chromium.js +56 -0
  32. package/dist/engine/adapters/playwright-firefox.d.ts +52 -0
  33. package/dist/engine/adapters/playwright-firefox.js +97 -0
  34. package/dist/engine/adapters/playwright-webkit.d.ts +40 -0
  35. package/dist/engine/adapters/playwright-webkit.js +79 -0
  36. package/dist/engine/adapters/safari/bidi-client.d.ts +46 -0
  37. package/dist/engine/adapters/safari/bidi-client.js +130 -0
  38. package/dist/engine/adapters/safari/launch.d.ts +56 -0
  39. package/dist/engine/adapters/safari/launch.js +104 -0
  40. package/dist/engine/adapters/safari/webdriver-client.d.ts +102 -0
  41. package/dist/engine/adapters/safari/webdriver-client.js +175 -0
  42. package/dist/engine/adapters/safari.engine.d.ts +1 -0
  43. package/dist/engine/adapters/safari.engine.js +52 -0
  44. package/dist/engine/adapters/safaridriver-hybrid.d.ts +56 -0
  45. package/dist/engine/adapters/safaridriver-hybrid.js +127 -0
  46. package/dist/engine/adapters/webkit.engine.d.ts +1 -0
  47. package/dist/engine/adapters/webkit.engine.js +47 -0
  48. package/dist/engine/capabilities.d.ts +53 -0
  49. package/dist/engine/capabilities.js +122 -0
  50. package/dist/engine/capability-registry.d.ts +9 -0
  51. package/dist/engine/capability-registry.js +20 -0
  52. package/dist/engine/index.d.ts +18 -0
  53. package/dist/engine/index.js +14 -0
  54. package/dist/engine/register-engines.d.ts +5 -0
  55. package/dist/engine/register-engines.js +16 -0
  56. package/dist/engine/registry.d.ts +145 -0
  57. package/dist/engine/registry.js +67 -0
  58. package/dist/engine/select.d.ts +48 -0
  59. package/dist/engine/select.js +128 -0
  60. package/dist/engine/session-cdp.d.ts +13 -0
  61. package/dist/engine/session-cdp.js +22 -0
  62. package/dist/engine/tool-gate.d.ts +19 -0
  63. package/dist/engine/tool-gate.js +226 -0
  64. package/dist/engine/types.d.ts +71 -0
  65. package/dist/engine/types.js +16 -0
  66. package/dist/helper/bridge.d.ts +48 -0
  67. package/dist/helper/bridge.js +200 -0
  68. package/dist/helper/browx-page.d.ts +1 -0
  69. package/dist/helper/browx-page.js +47 -0
  70. package/dist/helper/overlay-hide.d.ts +9 -0
  71. package/dist/helper/overlay-hide.js +49 -0
  72. package/dist/helper/stealth.d.ts +10 -0
  73. package/dist/helper/stealth.js +88 -0
  74. package/dist/index.d.ts +7 -0
  75. package/dist/index.js +15 -0
  76. package/dist/page/a11y.d.ts +81 -0
  77. package/dist/page/a11y.js +219 -0
  78. package/dist/page/action-substrate.d.ts +64 -0
  79. package/dist/page/action-substrate.js +118 -0
  80. package/dist/page/actionresult-blocks.d.ts +99 -0
  81. package/dist/page/actionresult-blocks.js +144 -0
  82. package/dist/page/actionresult-shape.d.ts +48 -0
  83. package/dist/page/actionresult-shape.js +155 -0
  84. package/dist/page/actionresult-types.d.ts +368 -0
  85. package/dist/page/actionresult-types.js +4 -0
  86. package/dist/page/actionresult.d.ts +4 -0
  87. package/dist/page/actionresult.js +299 -0
  88. package/dist/page/actions-probe.d.ts +32 -0
  89. package/dist/page/actions-probe.js +294 -0
  90. package/dist/page/actions-scroll.d.ts +40 -0
  91. package/dist/page/actions-scroll.js +53 -0
  92. package/dist/page/actions.d.ts +132 -0
  93. package/dist/page/actions.js +453 -0
  94. package/dist/page/archive-assets.d.ts +39 -0
  95. package/dist/page/archive-assets.js +187 -0
  96. package/dist/page/archive.d.ts +47 -0
  97. package/dist/page/archive.js +349 -0
  98. package/dist/page/asset-export.d.ts +122 -0
  99. package/dist/page/asset-export.js +376 -0
  100. package/dist/page/await_network.d.ts +16 -0
  101. package/dist/page/await_network.js +23 -0
  102. package/dist/page/bbox.d.ts +37 -0
  103. package/dist/page/bbox.js +115 -0
  104. package/dist/page/canvas-capture.d.ts +82 -0
  105. package/dist/page/canvas-capture.js +257 -0
  106. package/dist/page/canvas-diff.d.ts +51 -0
  107. package/dist/page/canvas-diff.js +131 -0
  108. package/dist/page/canvas-gesture.d.ts +53 -0
  109. package/dist/page/canvas-gesture.js +167 -0
  110. package/dist/page/canvas-transform.d.ts +96 -0
  111. package/dist/page/canvas-transform.js +150 -0
  112. package/dist/page/canvas.d.ts +8 -0
  113. package/dist/page/canvas.js +50 -0
  114. package/dist/page/capture-substrate.d.ts +111 -0
  115. package/dist/page/capture-substrate.js +139 -0
  116. package/dist/page/clipboard.d.ts +25 -0
  117. package/dist/page/clipboard.js +50 -0
  118. package/dist/page/clock.d.ts +36 -0
  119. package/dist/page/clock.js +167 -0
  120. package/dist/page/compose.d.ts +55 -0
  121. package/dist/page/compose.js +169 -0
  122. package/dist/page/console.d.ts +39 -0
  123. package/dist/page/console.js +73 -0
  124. package/dist/page/coverage.d.ts +97 -0
  125. package/dist/page/coverage.js +280 -0
  126. package/dist/page/dom-export.d.ts +41 -0
  127. package/dist/page/dom-export.js +193 -0
  128. package/dist/page/dom-walk.d.ts +91 -0
  129. package/dist/page/dom-walk.js +267 -0
  130. package/dist/page/dom_diff.d.ts +48 -0
  131. package/dist/page/dom_diff.js +121 -0
  132. package/dist/page/downloads.d.ts +80 -0
  133. package/dist/page/downloads.js +244 -0
  134. package/dist/page/drop-files.d.ts +78 -0
  135. package/dist/page/drop-files.js +310 -0
  136. package/dist/page/element-export-discovery.d.ts +64 -0
  137. package/dist/page/element-export-discovery.js +346 -0
  138. package/dist/page/element-export.d.ts +46 -0
  139. package/dist/page/element-export.js +251 -0
  140. package/dist/page/emulation-substrate.d.ts +53 -0
  141. package/dist/page/emulation-substrate.js +87 -0
  142. package/dist/page/emulation.d.ts +60 -0
  143. package/dist/page/emulation.js +162 -0
  144. package/dist/page/export-playwright-script.d.ts +47 -0
  145. package/dist/page/export-playwright-script.js +304 -0
  146. package/dist/page/extract-resolve.d.ts +22 -0
  147. package/dist/page/extract-resolve.js +341 -0
  148. package/dist/page/extract-schema.d.ts +20 -0
  149. package/dist/page/extract-schema.js +200 -0
  150. package/dist/page/extract-types.d.ts +127 -0
  151. package/dist/page/extract-types.js +8 -0
  152. package/dist/page/extract-warnings.d.ts +8 -0
  153. package/dist/page/extract-warnings.js +56 -0
  154. package/dist/page/extract.d.ts +9 -0
  155. package/dist/page/extract.js +174 -0
  156. package/dist/page/fill-form.d.ts +58 -0
  157. package/dist/page/fill-form.js +261 -0
  158. package/dist/page/find.d.ts +158 -0
  159. package/dist/page/find.js +470 -0
  160. package/dist/page/frames.d.ts +45 -0
  161. package/dist/page/frames.js +133 -0
  162. package/dist/page/generate-locator.d.ts +57 -0
  163. package/dist/page/generate-locator.js +136 -0
  164. package/dist/page/gestures.d.ts +128 -0
  165. package/dist/page/gestures.js +198 -0
  166. package/dist/page/har.d.ts +91 -0
  167. package/dist/page/har.js +174 -0
  168. package/dist/page/heap.d.ts +97 -0
  169. package/dist/page/heap.js +285 -0
  170. package/dist/page/inspect.d.ts +34 -0
  171. package/dist/page/inspect.js +75 -0
  172. package/dist/page/layout-thrash.d.ts +34 -0
  173. package/dist/page/layout-thrash.js +232 -0
  174. package/dist/page/learning.d.ts +21 -0
  175. package/dist/page/learning.js +84 -0
  176. package/dist/page/locator.d.ts +54 -0
  177. package/dist/page/locator.js +142 -0
  178. package/dist/page/memory-diff.d.ts +48 -0
  179. package/dist/page/memory-diff.js +105 -0
  180. package/dist/page/network-mask.d.ts +8 -0
  181. package/dist/page/network-mask.js +18 -0
  182. package/dist/page/network-playwright.d.ts +96 -0
  183. package/dist/page/network-playwright.js +353 -0
  184. package/dist/page/network-substrate-select.d.ts +18 -0
  185. package/dist/page/network-substrate-select.js +32 -0
  186. package/dist/page/network-substrate.d.ts +109 -0
  187. package/dist/page/network-substrate.js +161 -0
  188. package/dist/page/network-ws.d.ts +46 -0
  189. package/dist/page/network-ws.js +113 -0
  190. package/dist/page/network.d.ts +194 -0
  191. package/dist/page/network.js +415 -0
  192. package/dist/page/overflow-detect.d.ts +102 -0
  193. package/dist/page/overflow-detect.js +449 -0
  194. package/dist/page/pdf.d.ts +69 -0
  195. package/dist/page/pdf.js +109 -0
  196. package/dist/page/perf-audit-analysers.d.ts +40 -0
  197. package/dist/page/perf-audit-analysers.js +369 -0
  198. package/dist/page/perf-audit-runner.d.ts +20 -0
  199. package/dist/page/perf-audit-runner.js +195 -0
  200. package/dist/page/perf-audit-types.d.ts +41 -0
  201. package/dist/page/perf-audit-types.js +5 -0
  202. package/dist/page/perf-audit.d.ts +37 -0
  203. package/dist/page/perf-audit.js +377 -0
  204. package/dist/page/perf.d.ts +127 -0
  205. package/dist/page/perf.js +373 -0
  206. package/dist/page/plan.d.ts +192 -0
  207. package/dist/page/plan.js +308 -0
  208. package/dist/page/point_probe.d.ts +46 -0
  209. package/dist/page/point_probe.js +99 -0
  210. package/dist/page/recording.d.ts +67 -0
  211. package/dist/page/recording.js +172 -0
  212. package/dist/page/refs.d.ts +92 -0
  213. package/dist/page/refs.js +134 -0
  214. package/dist/page/regions.d.ts +23 -0
  215. package/dist/page/regions.js +32 -0
  216. package/dist/page/routes.d.ts +40 -0
  217. package/dist/page/routes.js +87 -0
  218. package/dist/page/safari-actions.d.ts +12 -0
  219. package/dist/page/safari-actions.js +144 -0
  220. package/dist/page/sample.d.ts +64 -0
  221. package/dist/page/sample.js +216 -0
  222. package/dist/page/screenshot-on.d.ts +51 -0
  223. package/dist/page/screenshot-on.js +150 -0
  224. package/dist/page/screenshot-save.d.ts +36 -0
  225. package/dist/page/screenshot-save.js +53 -0
  226. package/dist/page/screenshot-schedule.d.ts +50 -0
  227. package/dist/page/screenshot-schedule.js +155 -0
  228. package/dist/page/script-substrate.d.ts +32 -0
  229. package/dist/page/script-substrate.js +47 -0
  230. package/dist/page/seed-random.d.ts +45 -0
  231. package/dist/page/seed-random.js +144 -0
  232. package/dist/page/set-of-marks.d.ts +96 -0
  233. package/dist/page/set-of-marks.js +245 -0
  234. package/dist/page/shadow.d.ts +136 -0
  235. package/dist/page/shadow.js +400 -0
  236. package/dist/page/shortcut.d.ts +50 -0
  237. package/dist/page/shortcut.js +147 -0
  238. package/dist/page/snapshot-substrate-safari.d.ts +30 -0
  239. package/dist/page/snapshot-substrate-safari.js +84 -0
  240. package/dist/page/snapshot-substrate-select.d.ts +24 -0
  241. package/dist/page/snapshot-substrate-select.js +34 -0
  242. package/dist/page/snapshot-substrate.d.ts +58 -0
  243. package/dist/page/snapshot-substrate.js +135 -0
  244. package/dist/page/snapshot.d.ts +24 -0
  245. package/dist/page/snapshot.js +162 -0
  246. package/dist/page/solve-captcha.d.ts +76 -0
  247. package/dist/page/solve-captcha.js +286 -0
  248. package/dist/page/storage-substrate-types.d.ts +221 -0
  249. package/dist/page/storage-substrate-types.js +6 -0
  250. package/dist/page/storage-substrate.d.ts +215 -0
  251. package/dist/page/storage-substrate.js +280 -0
  252. package/dist/page/structural.d.ts +9 -0
  253. package/dist/page/structural.js +152 -0
  254. package/dist/page/substrate-bundle-safari.d.ts +8 -0
  255. package/dist/page/substrate-bundle-safari.js +42 -0
  256. package/dist/page/substrate-bundle.d.ts +6 -0
  257. package/dist/page/substrate-bundle.js +53 -0
  258. package/dist/page/text_search.d.ts +44 -0
  259. package/dist/page/text_search.js +90 -0
  260. package/dist/page/upload.d.ts +28 -0
  261. package/dist/page/upload.js +62 -0
  262. package/dist/page/verify.d.ts +63 -0
  263. package/dist/page/verify.js +451 -0
  264. package/dist/page/video.d.ts +115 -0
  265. package/dist/page/video.js +169 -0
  266. package/dist/page/visibility.d.ts +22 -0
  267. package/dist/page/visibility.js +94 -0
  268. package/dist/page/watch.d.ts +29 -0
  269. package/dist/page/watch.js +99 -0
  270. package/dist/page/workers.d.ts +126 -0
  271. package/dist/page/workers.js +490 -0
  272. package/dist/page/ws-interactive.d.ts +82 -0
  273. package/dist/page/ws-interactive.js +318 -0
  274. package/dist/plugin/cli.d.ts +45 -0
  275. package/dist/plugin/cli.js +496 -0
  276. package/dist/plugin/command-registry.d.ts +9 -0
  277. package/dist/plugin/command-registry.js +23 -0
  278. package/dist/plugin/depgraph.d.ts +37 -0
  279. package/dist/plugin/depgraph.js +186 -0
  280. package/dist/plugin/manifest.d.ts +182 -0
  281. package/dist/plugin/manifest.js +219 -0
  282. package/dist/plugin/package-manager.d.ts +22 -0
  283. package/dist/plugin/package-manager.js +40 -0
  284. package/dist/plugin/resolver.d.ts +85 -0
  285. package/dist/plugin/resolver.js +166 -0
  286. package/dist/plugin/runtime.d.ts +77 -0
  287. package/dist/plugin/runtime.js +402 -0
  288. package/dist/plugin/types.d.ts +113 -0
  289. package/dist/plugin/types.js +4 -0
  290. package/dist/policy/confirm.d.ts +76 -0
  291. package/dist/policy/confirm.js +162 -0
  292. package/dist/policy/origin.d.ts +17 -0
  293. package/dist/policy/origin.js +79 -0
  294. package/dist/sdk/client.d.ts +21 -0
  295. package/dist/sdk/client.js +174 -0
  296. package/dist/sdk/index.d.ts +32 -0
  297. package/dist/sdk/index.js +61 -0
  298. package/dist/sdk/plugin-types.d.ts +33 -0
  299. package/dist/sdk/plugin-types.js +22 -0
  300. package/dist/sdk/registry.d.ts +17 -0
  301. package/dist/sdk/registry.js +94 -0
  302. package/dist/sdk/socket-transport.d.ts +20 -0
  303. package/dist/sdk/socket-transport.js +90 -0
  304. package/dist/sdk/tool-types.d.ts +634 -0
  305. package/dist/sdk/tool-types.js +28 -0
  306. package/dist/sdk/transport-in-process.d.ts +21 -0
  307. package/dist/sdk/transport-in-process.js +44 -0
  308. package/dist/sdk/transport-registry.d.ts +19 -0
  309. package/dist/sdk/transport-registry.js +31 -0
  310. package/dist/sdk/transport-socket.d.ts +12 -0
  311. package/dist/sdk/transport-socket.js +77 -0
  312. package/dist/sdk/transport-stdio-child.d.ts +10 -0
  313. package/dist/sdk/transport-stdio-child.js +47 -0
  314. package/dist/sdk/transport.d.ts +10 -0
  315. package/dist/sdk/transport.js +35 -0
  316. package/dist/sdk/types.d.ts +176 -0
  317. package/dist/sdk/types.js +10 -0
  318. package/dist/server.d.ts +33 -0
  319. package/dist/server.js +327 -0
  320. package/dist/session/artifacts.d.ts +52 -0
  321. package/dist/session/artifacts.js +177 -0
  322. package/dist/session/byob-attach.d.ts +26 -0
  323. package/dist/session/byob-attach.js +187 -0
  324. package/dist/session/byob.d.ts +8 -0
  325. package/dist/session/byob.js +20 -0
  326. package/dist/session/cache-storage.d.ts +100 -0
  327. package/dist/session/cache-storage.js +166 -0
  328. package/dist/session/device-emu.d.ts +149 -0
  329. package/dist/session/device-emu.js +545 -0
  330. package/dist/session/device.d.ts +14 -0
  331. package/dist/session/device.js +44 -0
  332. package/dist/session/dialog.d.ts +62 -0
  333. package/dist/session/dialog.js +164 -0
  334. package/dist/session/emulation.d.ts +69 -0
  335. package/dist/session/emulation.js +168 -0
  336. package/dist/session/extensions.d.ts +113 -0
  337. package/dist/session/extensions.js +237 -0
  338. package/dist/session/fs-picker.d.ts +144 -0
  339. package/dist/session/fs-picker.js +666 -0
  340. package/dist/session/idb-storage.d.ts +86 -0
  341. package/dist/session/idb-storage.js +229 -0
  342. package/dist/session/incognito.d.ts +3 -0
  343. package/dist/session/incognito.js +20 -0
  344. package/dist/session/launch-options.d.ts +41 -0
  345. package/dist/session/launch-options.js +200 -0
  346. package/dist/session/managed.d.ts +3 -0
  347. package/dist/session/managed.js +16 -0
  348. package/dist/session/metrics.d.ts +45 -0
  349. package/dist/session/metrics.js +75 -0
  350. package/dist/session/notification.d.ts +122 -0
  351. package/dist/session/notification.js +426 -0
  352. package/dist/session/permission.d.ts +144 -0
  353. package/dist/session/permission.js +600 -0
  354. package/dist/session/playwright-post-wire.d.ts +8 -0
  355. package/dist/session/playwright-post-wire.js +148 -0
  356. package/dist/session/policy-buffer.d.ts +21 -0
  357. package/dist/session/policy-buffer.js +47 -0
  358. package/dist/session/profile-snapshot.d.ts +11 -0
  359. package/dist/session/profile-snapshot.js +53 -0
  360. package/dist/session/registry.d.ts +365 -0
  361. package/dist/session/registry.js +98 -0
  362. package/dist/session/safari-post-wire.d.ts +8 -0
  363. package/dist/session/safari-post-wire.js +28 -0
  364. package/dist/session/safari-session.d.ts +10 -0
  365. package/dist/session/safari-session.js +39 -0
  366. package/dist/session/storage.d.ts +148 -0
  367. package/dist/session/storage.js +350 -0
  368. package/dist/session/types.d.ts +113 -0
  369. package/dist/session/types.js +5 -0
  370. package/dist/session/wedge.d.ts +15 -0
  371. package/dist/session/wedge.js +41 -0
  372. package/dist/tools/action-core-tools.d.ts +13 -0
  373. package/dist/tools/action-core-tools.js +156 -0
  374. package/dist/tools/action-form-tools.d.ts +12 -0
  375. package/dist/tools/action-form-tools.js +179 -0
  376. package/dist/tools/action-gesture-tools.d.ts +9 -0
  377. package/dist/tools/action-gesture-tools.js +115 -0
  378. package/dist/tools/action-history-tools.d.ts +8 -0
  379. package/dist/tools/action-history-tools.js +67 -0
  380. package/dist/tools/action-tool.d.ts +42 -0
  381. package/dist/tools/action-tool.js +58 -0
  382. package/dist/tools/action-tools.d.ts +20 -0
  383. package/dist/tools/action-tools.js +28 -0
  384. package/dist/tools/batch-act-tools.d.ts +10 -0
  385. package/dist/tools/batch-act-tools.js +276 -0
  386. package/dist/tools/batch-human-tools.d.ts +8 -0
  387. package/dist/tools/batch-human-tools.js +148 -0
  388. package/dist/tools/canvas-tools.d.ts +40 -0
  389. package/dist/tools/canvas-tools.js +368 -0
  390. package/dist/tools/capture-report-diagnostics-tools.d.ts +7 -0
  391. package/dist/tools/capture-report-diagnostics-tools.js +318 -0
  392. package/dist/tools/capture-report-element-export-tools.d.ts +8 -0
  393. package/dist/tools/capture-report-element-export-tools.js +197 -0
  394. package/dist/tools/capture-report-export-tools.d.ts +8 -0
  395. package/dist/tools/capture-report-export-tools.js +246 -0
  396. package/dist/tools/capture-report-marks-tools.d.ts +9 -0
  397. package/dist/tools/capture-report-marks-tools.js +221 -0
  398. package/dist/tools/capture-report-upload-tools.d.ts +8 -0
  399. package/dist/tools/capture-report-upload-tools.js +277 -0
  400. package/dist/tools/config-approval-tools.d.ts +8 -0
  401. package/dist/tools/config-approval-tools.js +166 -0
  402. package/dist/tools/deep-coverage-tools.d.ts +8 -0
  403. package/dist/tools/deep-coverage-tools.js +325 -0
  404. package/dist/tools/deep-determinism-tools.d.ts +8 -0
  405. package/dist/tools/deep-determinism-tools.js +276 -0
  406. package/dist/tools/deep-perf-tools.d.ts +19 -0
  407. package/dist/tools/deep-perf-tools.js +324 -0
  408. package/dist/tools/device-emulation-tools.d.ts +9 -0
  409. package/dist/tools/device-emulation-tools.js +137 -0
  410. package/dist/tools/extensions-batch-tools.d.ts +18 -0
  411. package/dist/tools/extensions-batch-tools.js +24 -0
  412. package/dist/tools/extensions-rebuild.d.ts +22 -0
  413. package/dist/tools/extensions-rebuild.js +208 -0
  414. package/dist/tools/extensions-tools.d.ts +2 -0
  415. package/dist/tools/extensions-tools.js +331 -0
  416. package/dist/tools/forms-fill-tools.d.ts +8 -0
  417. package/dist/tools/forms-fill-tools.js +109 -0
  418. package/dist/tools/forms-plan-tools.d.ts +7 -0
  419. package/dist/tools/forms-plan-tools.js +159 -0
  420. package/dist/tools/forms-recording-mode-tools.d.ts +8 -0
  421. package/dist/tools/forms-recording-mode-tools.js +71 -0
  422. package/dist/tools/forms-recording-tools.d.ts +14 -0
  423. package/dist/tools/forms-recording-tools.js +22 -0
  424. package/dist/tools/forms-refs-tools.d.ts +8 -0
  425. package/dist/tools/forms-refs-tools.js +90 -0
  426. package/dist/tools/gesture-coord-tools.d.ts +8 -0
  427. package/dist/tools/gesture-coord-tools.js +168 -0
  428. package/dist/tools/gesture-emulation-tools.d.ts +8 -0
  429. package/dist/tools/gesture-emulation-tools.js +135 -0
  430. package/dist/tools/gesture-network-tools.d.ts +17 -0
  431. package/dist/tools/gesture-network-tools.js +27 -0
  432. package/dist/tools/gesture-route-tools.d.ts +8 -0
  433. package/dist/tools/gesture-route-tools.js +142 -0
  434. package/dist/tools/gesture-websocket-tools.d.ts +8 -0
  435. package/dist/tools/gesture-websocket-tools.js +122 -0
  436. package/dist/tools/gesture-worker-tools.d.ts +9 -0
  437. package/dist/tools/gesture-worker-tools.js +200 -0
  438. package/dist/tools/host-build.d.ts +76 -0
  439. package/dist/tools/host-build.js +516 -0
  440. package/dist/tools/host.d.ts +287 -0
  441. package/dist/tools/host.js +1 -0
  442. package/dist/tools/input-tools.d.ts +10 -0
  443. package/dist/tools/input-tools.js +176 -0
  444. package/dist/tools/live-emulation-tools.d.ts +9 -0
  445. package/dist/tools/live-emulation-tools.js +353 -0
  446. package/dist/tools/plugin-runtime.d.ts +36 -0
  447. package/dist/tools/plugin-runtime.js +274 -0
  448. package/dist/tools/read-observe-buffer-tools.d.ts +9 -0
  449. package/dist/tools/read-observe-buffer-tools.js +385 -0
  450. package/dist/tools/read-observe-capture-tools.d.ts +12 -0
  451. package/dist/tools/read-observe-capture-tools.js +376 -0
  452. package/dist/tools/read-observe-dom-tools.d.ts +8 -0
  453. package/dist/tools/read-observe-dom-tools.js +308 -0
  454. package/dist/tools/read-observe-extract-tools.d.ts +8 -0
  455. package/dist/tools/read-observe-extract-tools.js +232 -0
  456. package/dist/tools/read-observe-verify-tools.d.ts +8 -0
  457. package/dist/tools/read-observe-verify-tools.js +316 -0
  458. package/dist/tools/schemas.d.ts +29 -0
  459. package/dist/tools/schemas.js +58 -0
  460. package/dist/tools/secrets-captcha-tools.d.ts +9 -0
  461. package/dist/tools/secrets-captcha-tools.js +231 -0
  462. package/dist/tools/session-dialog-permission-tools.d.ts +9 -0
  463. package/dist/tools/session-dialog-permission-tools.js +287 -0
  464. package/dist/tools/session-lifecycle-tools.d.ts +8 -0
  465. package/dist/tools/session-lifecycle-tools.js +314 -0
  466. package/dist/tools/session-notification-device-tools.d.ts +9 -0
  467. package/dist/tools/session-notification-device-tools.js +156 -0
  468. package/dist/tools/session-policy-tools.d.ts +16 -0
  469. package/dist/tools/session-policy-tools.js +22 -0
  470. package/dist/tools/session-registry.d.ts +28 -0
  471. package/dist/tools/session-registry.js +427 -0
  472. package/dist/tools/storage-artifact-har-video-tools.d.ts +8 -0
  473. package/dist/tools/storage-artifact-har-video-tools.js +311 -0
  474. package/dist/tools/storage-cache-idb-tools.d.ts +8 -0
  475. package/dist/tools/storage-cache-idb-tools.js +347 -0
  476. package/dist/tools/storage-state-cookies-tools.d.ts +8 -0
  477. package/dist/tools/storage-state-cookies-tools.js +223 -0
  478. package/dist/tools/storage-tools.d.ts +17 -0
  479. package/dist/tools/storage-tools.js +25 -0
  480. package/dist/tools/storage-web-auth-tools.d.ts +10 -0
  481. package/dist/tools/storage-web-auth-tools.js +230 -0
  482. package/dist/tools/tool-metadata.d.ts +8 -0
  483. package/dist/tools/tool-metadata.js +185 -0
  484. package/dist/util/batch.d.ts +83 -0
  485. package/dist/util/batch.js +191 -0
  486. package/dist/util/capabilities.d.ts +504 -0
  487. package/dist/util/capabilities.js +254 -0
  488. package/dist/util/config-store.d.ts +103 -0
  489. package/dist/util/config-store.js +206 -0
  490. package/dist/util/config.d.ts +11 -0
  491. package/dist/util/config.js +28 -0
  492. package/dist/util/credentials.d.ts +136 -0
  493. package/dist/util/credentials.js +622 -0
  494. package/dist/util/deadline.d.ts +22 -0
  495. package/dist/util/deadline.js +62 -0
  496. package/dist/util/diagnostics.d.ts +161 -0
  497. package/dist/util/diagnostics.js +579 -0
  498. package/dist/util/egress-sanitiser.d.ts +29 -0
  499. package/dist/util/egress-sanitiser.js +52 -0
  500. package/dist/util/failure.d.ts +8 -0
  501. package/dist/util/failure.js +50 -0
  502. package/dist/util/flake-check.d.ts +109 -0
  503. package/dist/util/flake-check.js +342 -0
  504. package/dist/util/invariant.d.ts +25 -0
  505. package/dist/util/invariant.js +66 -0
  506. package/dist/util/logging.d.ts +6 -0
  507. package/dist/util/logging.js +12 -0
  508. package/dist/util/predicates.d.ts +62 -0
  509. package/dist/util/predicates.js +340 -0
  510. package/dist/util/secrets.d.ts +104 -0
  511. package/dist/util/secrets.js +219 -0
  512. package/dist/util/tokens.d.ts +6 -0
  513. package/dist/util/tokens.js +24 -0
  514. package/dist/util/url-sanitizer.d.ts +19 -0
  515. package/dist/util/url-sanitizer.js +70 -0
  516. package/dist/util/version.d.ts +2 -0
  517. package/dist/util/version.js +21 -0
  518. package/dist/util/workspace.d.ts +7 -0
  519. package/dist/util/workspace.js +22 -0
  520. package/package.json +120 -0
@@ -0,0 +1,135 @@
1
+ import { estimateTokens } from "../util/tokens.js";
2
+ import { requireCdp } from "../engine/session-cdp.js";
3
+ import { SESSION_ARG } from "./schemas.js";
4
+ /**
5
+ * Live network/CPU emulation tools: network_emulate / cpu_emulate — CDP-deep
6
+ * throttle/offline + CPU slowdown for low-end-device repros. Split out of
7
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
8
+ * through the shared `ToolHost` seam in the same source order.
9
+ */
10
+ export function registerGestureEmulationTools(host) {
11
+ const { z, register, gateCheck, engineGate, entryFor } = host;
12
+ register("network_emulate", {
13
+ capability: "action",
14
+ batchable: true,
15
+ deep: true,
16
+ description: "Throttle the session's network conditions (or simulate offline) via CDP `Network.emulateNetworkConditions`. For flaky-mobile / offline / slow-link repros on a real backend; **composes** with `route_queue` — each route's `delayMs` stacks ON TOP of the emulated `latencyMs`. Per-session; persists across navigation (re-applied on main-frame nav in case CDP drops it on a renderer swap). Empty input (or `{offline:false}` with no other fields) resets to no throttle. **BYOB:** the override applies to the attached Chrome and stays in effect even after browxai detaches, until the human resets DevTools or closes the page (a `warning` field surfaces this).",
17
+ inputSchema: {
18
+ offline: z
19
+ .boolean()
20
+ .optional()
21
+ .describe("If true, all network traffic from the page fails as offline. Wins over latency / bps."),
22
+ latencyMs: z
23
+ .number()
24
+ .int()
25
+ .nonnegative()
26
+ .max(600_000)
27
+ .optional()
28
+ .describe("One-way latency in ms. CDP doubles it for round-trip; route_queue delayMs stacks on top."),
29
+ downloadBps: z
30
+ .number()
31
+ .nonnegative()
32
+ .max(10_000_000_000)
33
+ .optional()
34
+ .describe("Max download throughput, bytes/sec. 0 / unset = unthrottled."),
35
+ uploadBps: z
36
+ .number()
37
+ .nonnegative()
38
+ .max(10_000_000_000)
39
+ .optional()
40
+ .describe("Max upload throughput, bytes/sec. 0 / unset = unthrottled."),
41
+ packetLoss: z
42
+ .number()
43
+ .min(0)
44
+ .max(1)
45
+ .optional()
46
+ .describe("Hint, 0..1. Most Chromium builds ignore it; pass for documentation."),
47
+ ...SESSION_ARG,
48
+ },
49
+ }, async ({ offline, latencyMs, downloadBps, uploadBps, packetLoss, session }) => {
50
+ const g = gateCheck("network_emulate");
51
+ if (g)
52
+ return g;
53
+ const e = await entryFor(session);
54
+ const eg = engineGate("network_emulate", e);
55
+ if (eg)
56
+ return eg;
57
+ try {
58
+ const { state, reset } = await e.emulation.applyNetwork(requireCdp(e.session), e.session.page(), {
59
+ offline,
60
+ latencyMs,
61
+ downloadBps,
62
+ uploadBps,
63
+ packetLoss,
64
+ });
65
+ const body = { ok: true, applied: state, reset };
66
+ if (e.mode === "attached") {
67
+ body.warning =
68
+ "BYOB / attached Chrome: this network override stays in effect on the attached browser even after browxai detaches — reset it (call again with empty args) or close the page when you're done.";
69
+ }
70
+ const tokensEstimate = estimateTokens(JSON.stringify(body));
71
+ return {
72
+ content: [
73
+ { type: "text", text: JSON.stringify({ ...body, tokensEstimate }, null, 2) },
74
+ ],
75
+ };
76
+ }
77
+ catch (err) {
78
+ const body = { ok: false, error: err instanceof Error ? err.message : String(err) };
79
+ const tokensEstimate = estimateTokens(JSON.stringify(body));
80
+ return {
81
+ content: [
82
+ { type: "text", text: JSON.stringify({ ...body, tokensEstimate }, null, 2) },
83
+ ],
84
+ };
85
+ }
86
+ });
87
+ register("cpu_emulate", {
88
+ capability: "action",
89
+ batchable: true,
90
+ deep: true,
91
+ description: "Slow the renderer to simulate a low-end device via CDP `Emulation.setCPUThrottlingRate`. `throttleRate: 1` = no throttle (and is the reset path); `2` = 2× slowdown; `4`–`6` = mid-to-low-end mobile. Per-session; persists across navigation (re-applied on main-frame nav in case CDP drops it). Empty input resets to `1`. Independent of `network_emulate` — apply both for a full low-end-device repro. **BYOB:** the throttle stays in effect on the attached Chrome until reset or page close (`warning` surfaces this).",
92
+ inputSchema: {
93
+ throttleRate: z
94
+ .number()
95
+ .min(1)
96
+ .max(100)
97
+ .optional()
98
+ .describe("CPU slowdown multiplier. 1 = none (reset). 2 = 2×. 4–6 = low-end mobile."),
99
+ ...SESSION_ARG,
100
+ },
101
+ }, async ({ throttleRate, session }) => {
102
+ const g = gateCheck("cpu_emulate");
103
+ if (g)
104
+ return g;
105
+ const e = await entryFor(session);
106
+ const eg = engineGate("cpu_emulate", e);
107
+ if (eg)
108
+ return eg;
109
+ try {
110
+ const { state, reset } = await e.emulation.applyCpu(requireCdp(e.session), e.session.page(), {
111
+ throttleRate,
112
+ });
113
+ const body = { ok: true, applied: state, reset };
114
+ if (e.mode === "attached") {
115
+ body.warning =
116
+ "BYOB / attached Chrome: this CPU throttle stays in effect on the attached browser even after browxai detaches — reset it (call again with no args / throttleRate:1) or close the page when you're done.";
117
+ }
118
+ const tokensEstimate = estimateTokens(JSON.stringify(body));
119
+ return {
120
+ content: [
121
+ { type: "text", text: JSON.stringify({ ...body, tokensEstimate }, null, 2) },
122
+ ],
123
+ };
124
+ }
125
+ catch (err) {
126
+ const body = { ok: false, error: err instanceof Error ? err.message : String(err) };
127
+ const tokensEstimate = estimateTokens(JSON.stringify(body));
128
+ return {
129
+ content: [
130
+ { type: "text", text: JSON.stringify({ ...body, tokensEstimate }, null, 2) },
131
+ ],
132
+ };
133
+ }
134
+ });
135
+ }
@@ -0,0 +1,17 @@
1
+ import type { ToolHost } from "./host.js";
2
+ /**
3
+ * Coordinate-space gestures (mouse_wheel / gesture_pinch / gesture_swipe),
4
+ * route mocking (route / route_queue / unroute), interactive WebSocket
5
+ * primitives (ws_send / ws_intercept / ws_unintercept), worker visibility
6
+ * (workers_list / worker_message_send / worker_messages_read /
7
+ * sw_intercept_fetch / sw_unintercept_fetch), and live network/CPU emulation
8
+ * (network_emulate / cpu_emulate).
9
+ *
10
+ * RFC 0004 P3 / D3 (SRP): the registrations were split by cohesive family into
11
+ * five sibling modules (coord / route / websocket / worker / emulation). This
12
+ * module stays the single entry point `server.ts` + `tool-metadata.ts` call, and
13
+ * invokes each family in the EXACT prior source order so the registered-name set
14
+ * + the derived maps stay byte-identical. The host owns the closures (gate,
15
+ * engine-gate, entry); the family modules own the registrations.
16
+ */
17
+ export declare function registerGestureNetworkTools(host: ToolHost): void;
@@ -0,0 +1,27 @@
1
+ import { registerGestureCoordTools } from "./gesture-coord-tools.js";
2
+ import { registerGestureRouteTools } from "./gesture-route-tools.js";
3
+ import { registerGestureWebsocketTools } from "./gesture-websocket-tools.js";
4
+ import { registerGestureWorkerTools } from "./gesture-worker-tools.js";
5
+ import { registerGestureEmulationTools } from "./gesture-emulation-tools.js";
6
+ /**
7
+ * Coordinate-space gestures (mouse_wheel / gesture_pinch / gesture_swipe),
8
+ * route mocking (route / route_queue / unroute), interactive WebSocket
9
+ * primitives (ws_send / ws_intercept / ws_unintercept), worker visibility
10
+ * (workers_list / worker_message_send / worker_messages_read /
11
+ * sw_intercept_fetch / sw_unintercept_fetch), and live network/CPU emulation
12
+ * (network_emulate / cpu_emulate).
13
+ *
14
+ * RFC 0004 P3 / D3 (SRP): the registrations were split by cohesive family into
15
+ * five sibling modules (coord / route / websocket / worker / emulation). This
16
+ * module stays the single entry point `server.ts` + `tool-metadata.ts` call, and
17
+ * invokes each family in the EXACT prior source order so the registered-name set
18
+ * + the derived maps stay byte-identical. The host owns the closures (gate,
19
+ * engine-gate, entry); the family modules own the registrations.
20
+ */
21
+ export function registerGestureNetworkTools(host) {
22
+ registerGestureCoordTools(host);
23
+ registerGestureRouteTools(host);
24
+ registerGestureWebsocketTools(host);
25
+ registerGestureWorkerTools(host);
26
+ registerGestureEmulationTools(host);
27
+ }
@@ -0,0 +1,8 @@
1
+ import type { RegisterHost, GateHost, SessionHost, ServerServicesHost } from "./host.js";
2
+ /**
3
+ * Request route-mocking tools: route / route_queue / unroute. Per-session canned
4
+ * responses for backend substitution + out-of-order arrival QA. Split out of
5
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
6
+ * through the shared `ToolHost` seam in the same source order.
7
+ */
8
+ export declare function registerGestureRouteTools(host: RegisterHost & GateHost & SessionHost & ServerServicesHost): void;
@@ -0,0 +1,142 @@
1
+ import { SESSION_ARG } from "./schemas.js";
2
+ /**
3
+ * Request route-mocking tools: route / route_queue / unroute. Per-session canned
4
+ * responses for backend substitution + out-of-order arrival QA. Split out of
5
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
6
+ * through the shared `ToolHost` seam in the same source order.
7
+ */
8
+ export function registerGestureRouteTools(host) {
9
+ const { z, register, gateCheck, entryFor } = host;
10
+ const ROUTE_RESPONSE = {
11
+ status: z.number().int().optional().describe("HTTP status (default 200)."),
12
+ body: z.string().optional().describe("Response body (default empty)."),
13
+ contentType: z.string().optional().describe("Content-Type (default application/json)."),
14
+ delayMs: z
15
+ .number()
16
+ .int()
17
+ .nonnegative()
18
+ .max(60_000)
19
+ .optional()
20
+ .describe("Delay before fulfilling (ms). Use to control arrival order."),
21
+ };
22
+ register("route", {
23
+ capability: "action",
24
+ description: "Intercept requests matching `urlPattern` (Playwright glob) and fulfil every match with one canned response. For substituting a backend response in QA. Per-session; discarded with the session or via `unroute`.",
25
+ inputSchema: {
26
+ urlPattern: z.string().describe("Playwright URL glob, e.g. `**/api/records*`."),
27
+ method: z
28
+ .string()
29
+ .optional()
30
+ .describe("Restrict to this HTTP method; other methods fall through to the real network."),
31
+ ...ROUTE_RESPONSE,
32
+ ...SESSION_ARG,
33
+ },
34
+ }, async ({ urlPattern, method, status, body, contentType, delayMs, session }) => {
35
+ const g = gateCheck("route");
36
+ if (g)
37
+ return g;
38
+ const e = await entryFor(session);
39
+ try {
40
+ const r = await e.routes.add(e.session.page(), {
41
+ urlPattern,
42
+ method,
43
+ status,
44
+ body,
45
+ contentType,
46
+ delayMs,
47
+ });
48
+ return {
49
+ content: [
50
+ {
51
+ type: "text",
52
+ text: JSON.stringify({ ok: true, ...r, active: e.routes.list() }, null, 2),
53
+ },
54
+ ],
55
+ };
56
+ }
57
+ catch (err) {
58
+ return {
59
+ content: [
60
+ {
61
+ type: "text",
62
+ text: JSON.stringify({ ok: false, error: err instanceof Error ? err.message : String(err) }, null, 2),
63
+ },
64
+ ],
65
+ };
66
+ }
67
+ });
68
+ register("route_queue", {
69
+ capability: "action",
70
+ description: "Intercept `urlPattern` and fulfil *successive* matches from `responses[]` (one per request, in order); once exhausted, matches fall through to the real network. Each response carries its own `delayMs` — give response #1 a long delay and #2 a short one to make backend responses **arrive out of request order** (the race-condition QA case). Per-session.",
71
+ inputSchema: {
72
+ urlPattern: z.string().describe("Playwright URL glob."),
73
+ method: z.string().optional(),
74
+ responses: z
75
+ .array(z.object(ROUTE_RESPONSE))
76
+ .min(1)
77
+ .describe("Consumed one per matching request, in order."),
78
+ ...SESSION_ARG,
79
+ },
80
+ }, async ({ urlPattern, method, responses, session }) => {
81
+ const g = gateCheck("route_queue");
82
+ if (g)
83
+ return g;
84
+ const e = await entryFor(session);
85
+ try {
86
+ const r = await e.routes.addQueue(e.session.page(), { urlPattern, method, responses });
87
+ return {
88
+ content: [
89
+ {
90
+ type: "text",
91
+ text: JSON.stringify({ ok: true, ...r, active: e.routes.list() }, null, 2),
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ catch (err) {
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: JSON.stringify({ ok: false, error: err instanceof Error ? err.message : String(err) }, null, 2),
102
+ },
103
+ ],
104
+ };
105
+ }
106
+ });
107
+ register("unroute", {
108
+ capability: "action",
109
+ description: "Remove a route registered by `route`/`route_queue` (by `urlPattern`[+`method`]), or — with no `urlPattern` — every route this session registered.",
110
+ inputSchema: {
111
+ urlPattern: z.string().optional().describe("Omit to clear ALL of this session's routes."),
112
+ method: z.string().optional(),
113
+ ...SESSION_ARG,
114
+ },
115
+ }, async ({ urlPattern, method, session }) => {
116
+ const g = gateCheck("unroute");
117
+ if (g)
118
+ return g;
119
+ const e = await entryFor(session);
120
+ try {
121
+ const removed = await e.routes.remove(e.session.page(), { urlPattern, method });
122
+ return {
123
+ content: [
124
+ {
125
+ type: "text",
126
+ text: JSON.stringify({ ok: true, removed, active: e.routes.list() }, null, 2),
127
+ },
128
+ ],
129
+ };
130
+ }
131
+ catch (err) {
132
+ return {
133
+ content: [
134
+ {
135
+ type: "text",
136
+ text: JSON.stringify({ ok: false, error: err instanceof Error ? err.message : String(err) }, null, 2),
137
+ },
138
+ ],
139
+ };
140
+ }
141
+ });
142
+ }
@@ -0,0 +1,8 @@
1
+ import type { RegisterHost, GateHost, SessionHost, ServerServicesHost } from "./host.js";
2
+ /**
3
+ * Interactive WebSocket primitives: ws_send / ws_intercept / ws_unintercept — the
4
+ * mutation half of the WS surface (the read-only view is `ws_read`). Split out of
5
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
6
+ * through the shared `ToolHost` seam in the same source order.
7
+ */
8
+ export declare function registerGestureWebsocketTools(host: RegisterHost & GateHost & SessionHost & ServerServicesHost): void;
@@ -0,0 +1,122 @@
1
+ import { estimateTokens } from "../util/tokens.js";
2
+ import { SESSION_ARG } from "./schemas.js";
3
+ /**
4
+ * Interactive WebSocket primitives: ws_send / ws_intercept / ws_unintercept — the
5
+ * mutation half of the WS surface (the read-only view is `ws_read`). Split out of
6
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
7
+ * through the shared `ToolHost` seam in the same source order.
8
+ */
9
+ export function registerGestureWebsocketTools(host) {
10
+ const { z, register, gateCheck, entryFor } = host;
11
+ // ---- Interactive WebSocket primitives (capability `action`) ----------------
12
+ // The read-only WS view is `ws_read` / `ActionResult.network.wsFrames`; this
13
+ // family is the mutation half — `ws_send` pushes a frame on a live page-side
14
+ // socket, `ws_intercept` rewrites/drops inbound frames before app handlers
15
+ // see them. Both engage by lazily installing a page-side `WebSocket` wrapper
16
+ // on first call (`addInitScript` for future docs + `evaluate` for the live
17
+ // doc). Active interceptors mirror onto a per-session registry; `unintercept`
18
+ // can target one pattern or clear them all. See src/page/ws-interactive.ts.
19
+ register("ws_send", {
20
+ capability: "action",
21
+ description: "Send a payload on a live page-side WebSocket. `wsId` is the id surfaced by the page-side `__browxWs.list()` registry (the wrapper assigns `ws-1`, `ws-2`, … as the page opens sockets) — call `ws_read` first to identify the endpoint URL, then `eval_js` `JSON.stringify(window.__browxWs.list())` to map URL → wsId, OR drive a deterministic test where the order of socket creation is known. Calls the real (unwrapped) `WebSocket.prototype.send`, so app-level message listeners do NOT observe a fake event — only the server sees the outbound frame. Returns `{ok:true, wsId, url, bytes}` on success, or `{ok:false, error}` if the id is unknown or the socket isn't OPEN. Capability: `action`.",
22
+ inputSchema: {
23
+ wsId: z.string().describe("Page-side socket id, e.g. `ws-1`. See `__browxWs.list()`."),
24
+ message: z
25
+ .string()
26
+ .describe("Payload to send. Binary frames are not supported in MVP — send as text."),
27
+ ...SESSION_ARG,
28
+ },
29
+ }, async ({ wsId, message, session }) => {
30
+ const g = gateCheck("ws_send");
31
+ if (g)
32
+ return g;
33
+ const e = await entryFor(session);
34
+ try {
35
+ const r = await e.wsInteractive.send(e.session.page(), { wsId, message });
36
+ const body = { ...r, tokensEstimate: 0 };
37
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
38
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
39
+ }
40
+ catch (err) {
41
+ const body = {
42
+ ok: false,
43
+ error: err instanceof Error ? err.message : String(err),
44
+ tokensEstimate: 0,
45
+ };
46
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
47
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
48
+ }
49
+ });
50
+ register("ws_intercept", {
51
+ capability: "action",
52
+ description: 'Install a route-style interceptor for INBOUND WebSocket frames. `pattern` is a glob matched against `socket.url` (the route family\'s intent: `*` = single segment, `**` = any). `response` controls what the page sees: `"drop"` — silently discard the frame (app handlers don\'t run); `"echo"` — mirror the inbound payload back to the server (the app still receives it locally); `{data:"<string>"}` — replace the inbound payload with `data` (app handlers see the replacement). The interceptor evaluates on every matching frame until removed via `ws_unintercept`; re-adding the same pattern replaces the prior entry. Per-session; lost on session close or session rebuild. Capability: `action`.',
53
+ inputSchema: {
54
+ pattern: z
55
+ .string()
56
+ .describe("Glob matched against `socket.url`, e.g. `wss://chat.example/**`."),
57
+ response: z
58
+ .union([
59
+ z.literal("drop"),
60
+ z.literal("echo"),
61
+ z.object({
62
+ data: z
63
+ .string()
64
+ .describe("Replacement payload delivered to app handlers in place of the original."),
65
+ }),
66
+ ])
67
+ .describe('`drop`, `echo`, or `{data: "…"}`.'),
68
+ ...SESSION_ARG,
69
+ },
70
+ }, async ({ pattern, response, session }) => {
71
+ const g = gateCheck("ws_intercept");
72
+ if (g)
73
+ return g;
74
+ const e = await entryFor(session);
75
+ try {
76
+ const r = await e.wsInteractive.addInterceptor(e.session.page(), { pattern, response });
77
+ const body = { ok: true, ...r, tokensEstimate: 0 };
78
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
79
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
80
+ }
81
+ catch (err) {
82
+ const body = {
83
+ ok: false,
84
+ error: err instanceof Error ? err.message : String(err),
85
+ tokensEstimate: 0,
86
+ };
87
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
88
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
89
+ }
90
+ });
91
+ register("ws_unintercept", {
92
+ capability: "action",
93
+ description: "Remove a `ws_intercept` interceptor (by exact `pattern`), or — with no `pattern` — every interceptor this session installed. Capability: `action`.",
94
+ inputSchema: {
95
+ pattern: z
96
+ .string()
97
+ .optional()
98
+ .describe("Omit to clear ALL of this session's WS interceptors."),
99
+ ...SESSION_ARG,
100
+ },
101
+ }, async ({ pattern, session }) => {
102
+ const g = gateCheck("ws_unintercept");
103
+ if (g)
104
+ return g;
105
+ const e = await entryFor(session);
106
+ try {
107
+ const r = await e.wsInteractive.removeInterceptor(e.session.page(), pattern !== undefined ? { pattern } : {});
108
+ const body = { ok: true, ...r, tokensEstimate: 0 };
109
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
110
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
111
+ }
112
+ catch (err) {
113
+ const body = {
114
+ ok: false,
115
+ error: err instanceof Error ? err.message : String(err),
116
+ tokensEstimate: 0,
117
+ };
118
+ body.tokensEstimate = estimateTokens(JSON.stringify(body));
119
+ return { content: [{ type: "text", text: JSON.stringify(body, null, 2) }] };
120
+ }
121
+ });
122
+ }
@@ -0,0 +1,9 @@
1
+ import type { RegisterHost, GateHost, SessionHost, ActionHost, ServerServicesHost } from "./host.js";
2
+ /**
3
+ * Worker-visibility tools: workers_list / worker_message_send /
4
+ * worker_messages_read / sw_intercept_fetch / sw_unintercept_fetch — make Web +
5
+ * Service Workers (otherwise off-grid) observable and drivable. Split out of
6
+ * `gesture-network-tools` by cohesive family (RFC 0004 P3 / D3 SRP); registered
7
+ * through the shared `ToolHost` seam in the same source order.
8
+ */
9
+ export declare function registerGestureWorkerTools(host: RegisterHost & GateHost & SessionHost & ActionHost & ServerServicesHost): void;