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,338 @@
1
+ // `browxai doctor` — the plugins section.
2
+ //
3
+ // Inspects the plugin runtime's declarative surface (`plugins.json`,
4
+ // `plugins/node_modules/`, `plugins-lock.json`) with the SAME resolution
5
+ // + validation stages the runtime runs at server start (resolver, manifest
6
+ // schema, apiVersion, namespace uniqueness, dependsOn graph, capability
7
+ // subset) — but it NEVER imports a plugin's register module. Doctor is a
8
+ // read-only inspection pass; executing plugin code is the server's job.
9
+ //
10
+ // Emits doctor `Check` rows named "plugins":
11
+ // ✓ — healthy (declaration parseable, plugin resolved + pinned)
12
+ // ✗ — drift or contract violation (fails doctor overall, fix hint attached)
13
+ // − — informational (nothing declared / declared-but-disabled); never fails
14
+ import { existsSync, readFileSync, readdirSync } from "node:fs";
15
+ import { join } from "node:path";
16
+ import { isApiVersionCompatible, RUNTIME_API_VERSION, satisfiesRange, } from "../plugin/manifest.js";
17
+ import { pluginPaths, readDeclaration, resolveDeclaredPlugin, } from "../plugin/resolver.js";
18
+ import { buildDepGraph, DepGraphCycleError } from "../plugin/depgraph.js";
19
+ import { readLock, sha256OfPackage } from "../plugin/cli.js";
20
+ const CHECK_NAME = "plugins";
21
+ /**
22
+ * Build the doctor checks for the plugin surface. Pure inspection — reads
23
+ * the declaration, the lock, and installed `package.json` manifests; never
24
+ * executes plugin code.
25
+ */
26
+ export function pluginChecks(opts) {
27
+ const checks = [];
28
+ const paths = pluginPaths(opts.workspaceRoot);
29
+ // 1. plugins.json present + parseable.
30
+ const fileExists = existsSync(paths.declarationFile);
31
+ if (fileExists) {
32
+ try {
33
+ JSON.parse(readFileSync(paths.declarationFile, "utf8"));
34
+ }
35
+ catch (e) {
36
+ checks.push({
37
+ name: CHECK_NAME,
38
+ ok: false,
39
+ detail: `plugins.json malformed: ${e instanceof Error ? e.message : String(e)}`,
40
+ fix: `fix the JSON in ${paths.declarationFile} (or remove it and re-run \`browxai plugin install\`)`,
41
+ });
42
+ // Without a readable declaration the rest of the section can't
43
+ // distinguish drift from intent — stop here.
44
+ return checks;
45
+ }
46
+ }
47
+ const fromFile = fileExists ? [...readDeclaration(paths)] : [];
48
+ // Union with config-store-declared plugins (runtime parity).
49
+ const declared = [...fromFile];
50
+ const declaredNames = new Set(fromFile.map((d) => d.name));
51
+ const fromConfigStore = new Set();
52
+ for (const name of opts.extraDeclared ?? []) {
53
+ if (!declaredNames.has(name)) {
54
+ declared.push({ name, enabled: true });
55
+ declaredNames.add(name);
56
+ fromConfigStore.add(name);
57
+ }
58
+ }
59
+ if (declared.length === 0) {
60
+ checks.push({
61
+ name: CHECK_NAME,
62
+ ok: true,
63
+ info: true,
64
+ detail: fileExists
65
+ ? "no plugins declared (plugins.json has no entries)"
66
+ : "no plugins declared (plugins.json absent)",
67
+ });
68
+ }
69
+ else {
70
+ const extras = fromConfigStore.size;
71
+ checks.push({
72
+ name: CHECK_NAME,
73
+ ok: true,
74
+ detail: fileExists
75
+ ? `plugins.json: ${fromFile.length} declared${extras ? ` (+${extras} via set_config)` : ""}`
76
+ : `plugins.json absent; ${extras} declared via set_config`,
77
+ });
78
+ }
79
+ // 2. Resolve every enabled declaration the way the runtime does —
80
+ // manifest off disk, NO code execution.
81
+ const enabledDecls = declared.filter((d) => d.enabled);
82
+ const findings = new Map();
83
+ const note = (plugin, f) => {
84
+ const list = findings.get(plugin) ?? [];
85
+ list.push(f);
86
+ findings.set(plugin, list);
87
+ };
88
+ const resolved = new Map();
89
+ for (const decl of enabledDecls) {
90
+ const r = resolveDeclaredPlugin(paths, decl);
91
+ if (r.kind === "not-installed") {
92
+ note(decl.name, {
93
+ detail: `${decl.name} declared but not installed (expected under ${paths.nodeModulesDir}/${decl.name}/)`,
94
+ fix: "run `browxai plugin sync`",
95
+ });
96
+ }
97
+ else if (r.kind === "invalid-manifest") {
98
+ note(decl.name, {
99
+ detail: `${decl.name} invalid manifest: ${r.error}`,
100
+ fix: "fix the plugin's package.json#browxai field — see docs/plugin-authoring.md",
101
+ });
102
+ }
103
+ else {
104
+ resolved.set(decl.name, r.manifest);
105
+ }
106
+ }
107
+ // 3. Manifest sanity — same staging as startPluginRuntime: apiVersion →
108
+ // namespace uniqueness → dependsOn targets → cycles → capabilities.
109
+ // `healthy` shrinks as stages disqualify plugins (runtime parity).
110
+ const healthy = new Map(resolved);
111
+ for (const [name, m] of [...healthy]) {
112
+ if (!isApiVersionCompatible(m.browxai.apiVersion, RUNTIME_API_VERSION)) {
113
+ note(name, {
114
+ detail: `${name} apiVersion "${m.browxai.apiVersion}" incompatible with runtime apiVersion "${RUNTIME_API_VERSION}"`,
115
+ fix: "upgrade the plugin (or pin a host browxai version compatible with the plugin's runtime contract)",
116
+ });
117
+ healthy.delete(name);
118
+ }
119
+ }
120
+ const namespaceOwner = new Map();
121
+ for (const [name, m] of [...healthy]) {
122
+ const ns = m.browxai.namespace;
123
+ const prior = namespaceOwner.get(ns);
124
+ if (prior) {
125
+ note(name, {
126
+ detail: `${name} namespace "${ns}" already claimed by ${prior}`,
127
+ fix: "rename one — namespaces are globally unique across the loaded set",
128
+ });
129
+ healthy.delete(name);
130
+ }
131
+ else {
132
+ namespaceOwner.set(ns, name);
133
+ }
134
+ }
135
+ // dependsOn targets checked against the pre-removal set, mirroring the
136
+ // runtime (a dep chain only flags the plugin whose direct dep is bad).
137
+ const depFailed = [];
138
+ for (const [name, m] of healthy) {
139
+ for (const dep of m.browxai.dependsOn) {
140
+ const target = healthy.get(dep.plugin);
141
+ if (!target) {
142
+ note(name, {
143
+ detail: `${name} dependsOn["${dep.plugin}"] is not resolvable (not declared, not installed, or itself failing)`,
144
+ fix: `run \`browxai plugin install ${dep.plugin}\` (and declare it in plugins.json)`,
145
+ });
146
+ depFailed.push(name);
147
+ break;
148
+ }
149
+ if (!satisfiesRange(target.version, dep.version)) {
150
+ note(name, {
151
+ detail: `${name} dependsOn["${dep.plugin}"] installed version ${target.version} does not satisfy range "${dep.version}"`,
152
+ fix: `run \`browxai plugin upgrade ${dep.plugin}\` (or relax the range in the manifest)`,
153
+ });
154
+ depFailed.push(name);
155
+ break;
156
+ }
157
+ }
158
+ }
159
+ for (const name of depFailed)
160
+ healthy.delete(name);
161
+ const cycleChecks = [];
162
+ const cycleMembers = new Set();
163
+ try {
164
+ const directDeps = new Map();
165
+ for (const [name, m] of healthy) {
166
+ directDeps.set(name, m.browxai.dependsOn.map((d) => d.plugin));
167
+ }
168
+ buildDepGraph({ directDeps });
169
+ }
170
+ catch (e) {
171
+ if (!(e instanceof DepGraphCycleError))
172
+ throw e;
173
+ for (const cycle of e.cycles) {
174
+ cycleChecks.push({
175
+ name: CHECK_NAME,
176
+ ok: false,
177
+ detail: `dependency cycle: ${cycle.join(" → ")} → ${cycle[0]} — server start ABORTS on cycles (no plugin loads)`,
178
+ fix: "remove one direction of the cycle from the offending plugin manifest(s)",
179
+ });
180
+ for (const member of cycle) {
181
+ cycleMembers.add(member);
182
+ healthy.delete(member);
183
+ }
184
+ }
185
+ }
186
+ for (const [name, m] of healthy) {
187
+ const missing = m.browxai.capabilities.filter((c) => !opts.enabledCapabilities.has(c));
188
+ if (missing.length > 0) {
189
+ note(name, {
190
+ detail: `${name} declares capability(ies) [${missing.join(", ")}] not enabled on this server`,
191
+ fix: `add ${missing.join(",")} to BROWX_CAPABILITIES (or set_config({capabilities:[...]})) and restart`,
192
+ });
193
+ }
194
+ }
195
+ // 4. Lock health. The lock pins file-declared plugins (the CLI install
196
+ // flow maintains it); config-store-only declarations carry no pin.
197
+ const lockExists = existsSync(paths.lockFile);
198
+ const lock = readLock(paths);
199
+ const lockChecks = [];
200
+ const pinOk = new Set();
201
+ if (fromFile.length > 0 && !lockExists) {
202
+ lockChecks.push({
203
+ name: CHECK_NAME,
204
+ ok: false,
205
+ detail: `plugins-lock.json missing (${fromFile.length} plugin(s) declared — no reproducibility pin)`,
206
+ fix: "run `browxai plugin sync` to regenerate the lock",
207
+ });
208
+ }
209
+ if (lockExists) {
210
+ for (const decl of fromFile) {
211
+ const pkgRoot = join(paths.nodeModulesDir, decl.name);
212
+ if (!existsSync(join(pkgRoot, "package.json")))
213
+ continue; // not installed — drift already flagged
214
+ const entry = lock.entries[decl.name];
215
+ if (!entry) {
216
+ note(decl.name, {
217
+ detail: `${decl.name} installed but has no pin in plugins-lock.json`,
218
+ fix: "run `browxai plugin sync` to re-pin",
219
+ });
220
+ continue;
221
+ }
222
+ if (entry.contentSha256 !== sha256OfPackage(pkgRoot)) {
223
+ note(decl.name, {
224
+ detail: `${decl.name} contentSha256 MISMATCH vs plugins-lock.json — installed contents are NOT what was pinned`,
225
+ fix: "do not trust the install until audited; after verifying the package contents, re-pin with `browxai plugin sync`",
226
+ });
227
+ continue;
228
+ }
229
+ pinOk.add(decl.name);
230
+ }
231
+ // Stale pins: lock entries for plugins no longer declared.
232
+ for (const lockName of Object.keys(lock.entries).sort()) {
233
+ if (!declaredNames.has(lockName)) {
234
+ lockChecks.push({
235
+ name: CHECK_NAME,
236
+ ok: false,
237
+ detail: `stale lock entry: ${lockName} pinned in plugins-lock.json but not declared in plugins.json`,
238
+ fix: `\`browxai plugin remove ${lockName}\` clears the pin (or re-declare the plugin), then \`browxai plugin sync\``,
239
+ });
240
+ }
241
+ }
242
+ }
243
+ // 5. Emit per-plugin rows in declaration order: every finding as ✗, a
244
+ // single ✓ for plugins with none, a − for declared-but-disabled.
245
+ for (const decl of declared) {
246
+ if (!decl.enabled) {
247
+ checks.push({
248
+ name: CHECK_NAME,
249
+ ok: true,
250
+ info: true,
251
+ detail: `${decl.name} declared but disabled (enabled: false) — skipped at server start`,
252
+ });
253
+ continue;
254
+ }
255
+ const issues = findings.get(decl.name) ?? [];
256
+ if (issues.length > 0) {
257
+ for (const f of issues) {
258
+ checks.push({ name: CHECK_NAME, ok: false, detail: f.detail, fix: f.fix });
259
+ }
260
+ continue;
261
+ }
262
+ if (cycleMembers.has(decl.name))
263
+ continue; // the cycle ✗ row covers it
264
+ const m = resolved.get(decl.name);
265
+ if (!m)
266
+ continue; // defensive — every unresolved plugin carries a finding
267
+ const lockNote = pinOk.has(decl.name)
268
+ ? ", lock ok"
269
+ : fromConfigStore.has(decl.name)
270
+ ? ", declared via set_config"
271
+ : "";
272
+ checks.push({
273
+ name: CHECK_NAME,
274
+ ok: true,
275
+ detail: `${m.name}@${m.version} (ns=${m.browxai.namespace}${lockNote})`,
276
+ });
277
+ }
278
+ checks.push(...cycleChecks);
279
+ // 6. Orphans: installed browxai plugins (package.json#browxai present)
280
+ // nobody declares. Transitive deps of plugins are NOT plugins and are
281
+ // ignored.
282
+ for (const orphan of installedPluginNames(paths)) {
283
+ if (declaredNames.has(orphan.dirName) || (orphan.pkgName && declaredNames.has(orphan.pkgName)))
284
+ continue;
285
+ checks.push({
286
+ name: CHECK_NAME,
287
+ ok: false,
288
+ detail: `orphan install: ${orphan.dirName} present in ${paths.nodeModulesDir} but not declared in plugins.json`,
289
+ fix: `\`browxai plugin remove ${orphan.dirName}\` (or declare it in plugins.json)`,
290
+ });
291
+ }
292
+ checks.push(...lockChecks);
293
+ return checks;
294
+ }
295
+ /**
296
+ * Scan `<workspace>/plugins/node_modules/` for installed browxai plugins —
297
+ * packages whose `package.json` carries a `browxai` field. Skips dot-dirs
298
+ * (`.pnpm`, `.bin`) and plain dependencies.
299
+ */
300
+ function installedPluginNames(paths) {
301
+ if (!existsSync(paths.nodeModulesDir))
302
+ return [];
303
+ const out = [];
304
+ const consider = (dirName) => {
305
+ const pkgJsonPath = join(paths.nodeModulesDir, dirName, "package.json");
306
+ if (!existsSync(pkgJsonPath))
307
+ return;
308
+ try {
309
+ const parsed = JSON.parse(readFileSync(pkgJsonPath, "utf8"));
310
+ if (!parsed.browxai)
311
+ return;
312
+ out.push({ dirName, ...(parsed.name ? { pkgName: parsed.name } : {}) });
313
+ }
314
+ catch {
315
+ /* unreadable package.json — not a resolvable plugin, not an orphan */
316
+ }
317
+ };
318
+ for (const entry of readdirSync(paths.nodeModulesDir, { withFileTypes: true })) {
319
+ if (entry.name.startsWith("."))
320
+ continue;
321
+ if (entry.name.startsWith("@")) {
322
+ const scopeDir = join(paths.nodeModulesDir, entry.name);
323
+ let subs;
324
+ try {
325
+ subs = readdirSync(scopeDir);
326
+ }
327
+ catch {
328
+ continue;
329
+ }
330
+ for (const sub of subs)
331
+ consider(`${entry.name}/${sub}`);
332
+ }
333
+ else {
334
+ consider(entry.name);
335
+ }
336
+ }
337
+ return out.sort((a, b) => a.dirName.localeCompare(b.dirName));
338
+ }
@@ -0,0 +1,9 @@
1
+ export interface Check {
2
+ name: string;
3
+ ok: boolean;
4
+ detail: string;
5
+ fix?: string;
6
+ /** Informational row — printed with − instead of ✓/✗; never fails doctor. */
7
+ info?: boolean;
8
+ }
9
+ export declare function runDoctor(): Promise<number>;