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,44 @@
1
+ // In-process transport: drives the MCP server's `handlers` map directly in
2
+ // the same Node process. This is the SDK default — no subprocess, no IPC,
3
+ // no socket. Egress hygiene (URL sanitizer, `<SECRET_NAME>` substitution,
4
+ // capability gates, session isolation) is the SAME code path the MCP
5
+ // transport runs, because `handlers[name]` IS the wrapped registered
6
+ // handler — gate + sanitiser inclusive (see register() in src/server.ts).
7
+ import { createServer } from "../server.js";
8
+ import { parseEnvelope } from "./transport.js";
9
+ import { registerTransport } from "./transport-registry.js";
10
+ /**
11
+ * Construct an in-process transport. The factory `await`s the underlying
12
+ * `createServer()` (which does NOT start the MCP stdio loop — `server.start()`
13
+ * is what does that, and the SDK never calls it) so the returned transport
14
+ * is immediately ready to dispatch.
15
+ */
16
+ export async function openInProcessTransport(opts = {}) {
17
+ const server = await createServer(opts);
18
+ const handlers = server.handlers;
19
+ let closed = false;
20
+ const dispatch = async (toolName, args) => {
21
+ if (closed)
22
+ throw new Error(`browxai-sdk: dispatch on a closed transport (tool=${toolName})`);
23
+ const fn = handlers[toolName];
24
+ if (!fn) {
25
+ throw new Error(`browxai-sdk: unknown tool "${toolName}" — not registered on the in-process server. ` +
26
+ `Either the tool name is wrong or the SDK's tool registry is out of sync with server.ts.`);
27
+ }
28
+ const result = await fn(args);
29
+ return parseEnvelope(result.content);
30
+ };
31
+ const close = async () => {
32
+ if (closed)
33
+ return;
34
+ closed = true;
35
+ await server.shutdown().catch(() => undefined);
36
+ };
37
+ return { dispatch, close };
38
+ }
39
+ // RFC 0004 P4 / D6 — self-register under the "in-process" mode. The factory maps
40
+ // the SDK options to this opener's argument shape EXACTLY as the old
41
+ // `case "in-process"` arm did (`{ attachCdp, headless }`).
42
+ registerTransport("in-process", {
43
+ open: (opts) => openInProcessTransport({ attachCdp: opts.attachCdp, headless: opts.headless }),
44
+ });
@@ -0,0 +1,19 @@
1
+ import type { BrowxaiSdkOptions } from "./types.js";
2
+ import type { SdkTransport } from "./transport.js";
3
+ /** The transport selector — derived from the real SDK option union so the
4
+ * registry key stays in lockstep with the public surface (a new option value
5
+ * is a compile error here until a factory is registered for it). */
6
+ export type TransportMode = NonNullable<BrowxaiSdkOptions["transport"]>;
7
+ /** One transport's construction surface. `open` receives the full SDK options
8
+ * and reads only the fields its transport needs — the same mapping the old
9
+ * `switch` arm performed inline. */
10
+ export interface TransportFactory {
11
+ open(opts: BrowxaiSdkOptions): Promise<SdkTransport>;
12
+ }
13
+ /** Register a transport factory under its mode. Add-only: each transport file
14
+ * registers itself once at module load, so the composition root never edits a
15
+ * central conditional to add one. */
16
+ export declare function registerTransport(mode: TransportMode, factory: TransportFactory): void;
17
+ /** Resolve + open the transport for `mode`. Throws the same structured error the
18
+ * old `default` arm did when the mode is unknown (no registered factory). */
19
+ export declare function openTransport(mode: TransportMode, opts: BrowxaiSdkOptions): Promise<SdkTransport>;
@@ -0,0 +1,31 @@
1
+ // SDK transport registry (RFC 0004 P4 / D6) — the add-only `Map<TransportMode,
2
+ // TransportFactory>` that replaces the `switch (mode)` in `createBrowxai`.
3
+ //
4
+ // The `SdkTransport` PORT (src/sdk/transport.ts) was already proven — three real
5
+ // implementations drive it (in-process / stdio-child / socket). The only piece
6
+ // that was a switch is the SELECTION: which factory builds the transport for a
7
+ // given `opts.transport`. This registry resolves the SAME factory each `case`
8
+ // did, so a fourth transport becomes a `registerTransport(...)` call in its own
9
+ // transport file rather than a new `case` in the composition root — and the
10
+ // dependency-cruiser layering rule keeps `createBrowxai` from growing per-
11
+ // transport imports.
12
+ //
13
+ // Behavior-preservation: `openTransport(mode, opts)` constructs the transport
14
+ // with the EXACT argument shape the old `case` passed (the socket endpoint guard
15
+ // included), so `sdk.keystone.test.ts` drives all three transports unchanged.
16
+ const TRANSPORTS = new Map();
17
+ /** Register a transport factory under its mode. Add-only: each transport file
18
+ * registers itself once at module load, so the composition root never edits a
19
+ * central conditional to add one. */
20
+ export function registerTransport(mode, factory) {
21
+ TRANSPORTS.set(mode, factory);
22
+ }
23
+ /** Resolve + open the transport for `mode`. Throws the same structured error the
24
+ * old `default` arm did when the mode is unknown (no registered factory). */
25
+ export function openTransport(mode, opts) {
26
+ const factory = TRANSPORTS.get(mode);
27
+ if (!factory) {
28
+ throw new Error(`browxai-sdk: unknown transport "${String(mode)}"`);
29
+ }
30
+ return factory.open(opts);
31
+ }
@@ -0,0 +1,12 @@
1
+ import { type SdkTransport } from "./transport.js";
2
+ /**
3
+ * Translate the SDK-public endpoint URL into a Node `net.connect` path. The
4
+ * scheme namespace is intentionally small so a typo (e.g. `tcp://`) fails
5
+ * loudly rather than silently mis-routing.
6
+ */
7
+ export declare function resolveEndpointPath(endpoint: string): string;
8
+ export interface SocketTransportOptions {
9
+ /** SDK-public endpoint URL — see resolveEndpointPath above. */
10
+ readonly endpoint: string;
11
+ }
12
+ export declare function openSocketTransport(opts: SocketTransportOptions): Promise<SdkTransport>;
@@ -0,0 +1,77 @@
1
+ // Endpoint-attached transport: connect to an already-running browxai server
2
+ // over a Unix domain socket (macOS/Linux) or a Windows named pipe. The wire
3
+ // protocol is MCP-over-newline-delimited-JSON, byte-identical to stdio.
4
+ //
5
+ // Endpoint formats accepted:
6
+ // unix:///absolute/path/to/sock — Unix domain socket (mac/Linux)
7
+ // pipe://./pipe/<name> — Windows named pipe (\\.\pipe\<name>)
8
+ //
9
+ // The SDK does NOT own the server lifecycle on this path. `close()` ends the
10
+ // local connection only. The server is expected to have been launched
11
+ // out-of-band by the operator (e.g. `browxai serve --socket /tmp/foo.sock`).
12
+ import { createConnection } from "node:net";
13
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
14
+ import { NAME, VERSION } from "../server.js";
15
+ import { SocketTransport } from "./socket-transport.js";
16
+ import { parseEnvelope } from "./transport.js";
17
+ import { registerTransport } from "./transport-registry.js";
18
+ /**
19
+ * Translate the SDK-public endpoint URL into a Node `net.connect` path. The
20
+ * scheme namespace is intentionally small so a typo (e.g. `tcp://`) fails
21
+ * loudly rather than silently mis-routing.
22
+ */
23
+ export function resolveEndpointPath(endpoint) {
24
+ if (endpoint.startsWith("unix://")) {
25
+ const path = endpoint.slice("unix://".length);
26
+ if (!path)
27
+ throw new Error(`browxai-sdk: invalid endpoint "${endpoint}" — empty unix:// path`);
28
+ return path;
29
+ }
30
+ if (endpoint.startsWith("pipe://")) {
31
+ // pipe://./pipe/foo → \\.\pipe\foo (Windows named-pipe convention)
32
+ const tail = endpoint.slice("pipe://".length).replace(/^\.\//, "");
33
+ if (!tail)
34
+ throw new Error(`browxai-sdk: invalid endpoint "${endpoint}" — empty pipe:// path`);
35
+ return `\\\\.\\${tail.replace(/\//g, "\\")}`;
36
+ }
37
+ throw new Error(`browxai-sdk: unsupported endpoint scheme in "${endpoint}". ` +
38
+ `Supported: unix:///path/to/sock, pipe://./pipe/name. Other schemes are rejected so a typo fails loudly.`);
39
+ }
40
+ export async function openSocketTransport(opts) {
41
+ const path = resolveEndpointPath(opts.endpoint);
42
+ const socket = await new Promise((resolve, reject) => {
43
+ const s = createConnection({ path }, () => resolve(s));
44
+ s.once("error", (err) => reject(err));
45
+ });
46
+ const transport = new SocketTransport(socket);
47
+ const client = new Client({ name: `${NAME}-sdk`, version: VERSION }, { capabilities: {} });
48
+ await client.connect(transport);
49
+ let closed = false;
50
+ const dispatch = async (toolName, args) => {
51
+ if (closed)
52
+ throw new Error(`browxai-sdk: dispatch on a closed transport (tool=${toolName})`);
53
+ const res = await client.callTool({ name: toolName, arguments: args });
54
+ const content = res.content ?? [];
55
+ return parseEnvelope(content);
56
+ };
57
+ const close = async () => {
58
+ if (closed)
59
+ return;
60
+ closed = true;
61
+ await client.close().catch(() => undefined);
62
+ };
63
+ return { dispatch, close };
64
+ }
65
+ // RFC 0004 P4 / D6 — self-register under the "socket" mode. The factory carries
66
+ // the endpoint guard the old `case "socket"` arm enforced inline: a socket
67
+ // transport REQUIRES `opts.endpoint`, and the structured error message is
68
+ // byte-identical to the prior switch arm.
69
+ registerTransport("socket", {
70
+ open: (opts) => {
71
+ if (!opts.endpoint) {
72
+ throw new Error(`browxai-sdk: transport "socket" requires an \`endpoint\`. ` +
73
+ `Set { endpoint: "unix:///path/to/sock" } (or pipe://./pipe/<name> on Windows).`);
74
+ }
75
+ return openSocketTransport({ endpoint: opts.endpoint });
76
+ },
77
+ });
@@ -0,0 +1,10 @@
1
+ import { type SdkTransport } from "./transport.js";
2
+ export interface StdioChildOptions {
3
+ /** Defaults to "browxai" — the bin entrypoint. Override for local dev. */
4
+ readonly command?: string;
5
+ readonly args?: ReadonlyArray<string>;
6
+ readonly env?: Record<string, string>;
7
+ /** Optional cwd for the spawned child. */
8
+ readonly cwd?: string;
9
+ }
10
+ export declare function openStdioChildTransport(opts?: StdioChildOptions): Promise<SdkTransport>;
@@ -0,0 +1,47 @@
1
+ // Stdio-child transport: spawn the `browxai` CLI as a subprocess and speak
2
+ // MCP-over-stdio to it via the MCP SDK's `StdioClientTransport`. Owns the
3
+ // child lifecycle — `close()` ends the subprocess.
4
+ //
5
+ // This is the right transport when the caller wants OS-level process
6
+ // isolation (e.g. crash containment, capability isolation via per-child
7
+ // env). Egress hygiene + capability gates still hold: the child runs the
8
+ // SAME server code path; the wire just carries the post-sanitisation
9
+ // content array.
10
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
11
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
12
+ import { parseEnvelope } from "./transport.js";
13
+ import { registerTransport } from "./transport-registry.js";
14
+ import { NAME, VERSION } from "../server.js";
15
+ export async function openStdioChildTransport(opts = {}) {
16
+ const transport = new StdioClientTransport({
17
+ command: opts.command ?? "browxai",
18
+ args: opts.args ? [...opts.args] : [],
19
+ env: opts.env,
20
+ cwd: opts.cwd,
21
+ // Surface child stderr to the parent so a misconfiguration is visible.
22
+ stderr: "inherit",
23
+ });
24
+ const client = new Client({ name: `${NAME}-sdk`, version: VERSION }, { capabilities: {} });
25
+ await client.connect(transport);
26
+ let closed = false;
27
+ const dispatch = async (toolName, args) => {
28
+ if (closed)
29
+ throw new Error(`browxai-sdk: dispatch on a closed transport (tool=${toolName})`);
30
+ const res = await client.callTool({ name: toolName, arguments: args });
31
+ const content = res.content ?? [];
32
+ return parseEnvelope(content);
33
+ };
34
+ const close = async () => {
35
+ if (closed)
36
+ return;
37
+ closed = true;
38
+ await client.close().catch(() => undefined);
39
+ };
40
+ return { dispatch, close };
41
+ }
42
+ // RFC 0004 P4 / D6 — self-register under the "stdio-child" mode. The factory maps
43
+ // the SDK options to this opener's argument shape EXACTLY as the old
44
+ // `case "stdio-child"` arm did (`{ command, args, env }`).
45
+ registerTransport("stdio-child", {
46
+ open: (opts) => openStdioChildTransport({ command: opts.command, args: opts.args, env: opts.env }),
47
+ });
@@ -0,0 +1,10 @@
1
+ import type { BrowxaiContentItem, BrowxaiResult } from "./types.js";
2
+ /** Lower-level transport contract. One method, idempotent close. */
3
+ export interface SdkTransport {
4
+ /** Dispatch a single tool call and return the SDK envelope. */
5
+ dispatch(toolName: string, args: Record<string, unknown>): Promise<BrowxaiResult>;
6
+ /** Tear down the transport. Idempotent. */
7
+ close(): Promise<void>;
8
+ }
9
+ /** Parse the first text item of an MCP content array as JSON, when applicable. */
10
+ export declare function parseEnvelope(content: ReadonlyArray<BrowxaiContentItem>): BrowxaiResult;
@@ -0,0 +1,35 @@
1
+ // SDK transport interface — abstracts the wire between the SDK client and
2
+ // the browxai server. The single method is `dispatch(toolName, args)`: a
3
+ // tool name + JSON args → an MCP-shaped `{ content }` envelope. Three
4
+ // implementations exist:
5
+ //
6
+ // 1. InProcessTransport (src/sdk/transport-in-process.ts) — drives the
7
+ // server's `handlers` map directly. No subprocess, no socket. Owns the
8
+ // server lifecycle (`close` calls `server.shutdown()`).
9
+ //
10
+ // 2. StdioChildTransport (src/sdk/transport-stdio-child.ts) — spawns
11
+ // `browxai` as a child process and speaks MCP-over-stdio to it via the
12
+ // MCP SDK's StdioClientTransport. Owns the child lifecycle.
13
+ //
14
+ // 3. SocketTransport (src/sdk/transport-socket.ts) — attaches to an
15
+ // already-running browxai server over a Unix socket (or named pipe on
16
+ // Windows). The SDK does NOT own the server lifecycle; `close()` only
17
+ // tears down the local connection.
18
+ /** Parse the first text item of an MCP content array as JSON, when applicable. */
19
+ export function parseEnvelope(content) {
20
+ for (const item of content) {
21
+ if (item && item.type === "text") {
22
+ try {
23
+ const parsed = JSON.parse(item.text);
24
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
25
+ return { content, data: parsed };
26
+ }
27
+ }
28
+ catch {
29
+ /* not JSON — a snapshot tree or other plain-text payload */
30
+ }
31
+ return { content };
32
+ }
33
+ }
34
+ return { content };
35
+ }
@@ -0,0 +1,176 @@
1
+ import type { Capability } from "../util/capabilities.js";
2
+ import type { AwaitHumanArgs, AwaitHumanResult, ChooseOptionArgs, ChooseOptionResult, ClickArgs, ClickResult, CloseSessionArgs, CloseSessionResult, CloseSessionsArgs, CloseSessionsResult, ConsoleReadArgs, ConsoleReadResult, ExecuteArgs, ExecuteResult, ExtractArgs, ExtractResult, FillArgs, FillFormArgs, FillFormResult, FillResult, FindArgs, FindResult, FramesListArgs, FramesListResult, GenerateLocatorArgs, GenerateLocatorResult, GoBackArgs, GoBackResult, GoForwardArgs, GoForwardResult, HoverArgs, HoverResult, InspectArgs, InspectResult, ListSessionsArgs, ListSessionsResult, NameRefArgs, NameRefResult, NavigateArgs, NavigateResult, NetworkReadArgs, NetworkReadResult, OpenSessionArgs, OpenSessionResult, PlanArgs, PlanResult, PressArgs, PressResult, ScreenshotArgs, ScreenshotResult, ScrollArgs, ScrollResult, SelectArgs, SelectResult, SetViewportArgs, SetViewportResult, SnapshotArgs, SnapshotResult, TextSearchArgs, TextSearchResult, VerifyAttributeArgs, VerifyCountArgs, VerifyPredicateArgs, VerifyResult, VerifyTextArgs, VerifyValueArgs, VerifyVisibleArgs, WaitForArgs, WaitForResult, WsReadArgs, WsReadResult } from "./tool-types.js";
3
+ /** Discriminated content item the SDK forwards from MCP results. */
4
+ export type BrowxaiContentItem = {
5
+ type: "text";
6
+ text: string;
7
+ } | {
8
+ type: "image";
9
+ data: string;
10
+ mimeType: string;
11
+ };
12
+ /**
13
+ * Standard SDK result envelope. Mirrors the MCP `{ content: [...] }` shape
14
+ * 1:1 so adopters who already think in MCP terms keep their mental model.
15
+ * `data` is a convenience: when the first text item is parseable JSON, it is
16
+ * surfaced here so callers do not have to JSON.parse content[0].text by hand.
17
+ */
18
+ export interface BrowxaiResult<T = Record<string, unknown>> {
19
+ /** Raw MCP content items — preserves images, multi-item results, etc. */
20
+ readonly content: ReadonlyArray<BrowxaiContentItem>;
21
+ /** Parsed JSON object from the first text item, when applicable. */
22
+ readonly data?: T;
23
+ }
24
+ /** Argument shape: an open record. Per-tool field names match the MCP `inputSchema`. */
25
+ export type BrowxaiArgs = Record<string, unknown>;
26
+ /**
27
+ * Options for {@link createBrowxai}.
28
+ */
29
+ export interface BrowxaiSdkOptions {
30
+ /**
31
+ * Endpoint of a running browxai server to attach to.
32
+ *
33
+ * - `unix:///path/to/sock` — Unix domain socket on macOS/Linux.
34
+ * - `pipe://./pipe/name` — Windows named pipe.
35
+ * - When omitted, the SDK runs the server in-process (single Node process,
36
+ * no subprocess, no socket) — appropriate for tests and single-script
37
+ * automation. To force a child-process posture, set `transport: "stdio-child"`.
38
+ *
39
+ * Other schemes are rejected at `createBrowxai()` time with a clear error.
40
+ */
41
+ readonly endpoint?: string;
42
+ /**
43
+ * Transport selector. Default behaviour:
44
+ * - if `endpoint` set → "socket"
45
+ * - if `endpoint` unset → "in-process"
46
+ * Set `"stdio-child"` to spawn a `browxai` child process and speak MCP-over-
47
+ * stdio to it; this is the right choice when the caller wants OS-level
48
+ * process isolation but does not want to manage a long-lived server.
49
+ */
50
+ readonly transport?: "in-process" | "stdio-child" | "socket";
51
+ /**
52
+ * Path to the browxai CLI when using `stdio-child`. Defaults to the
53
+ * `browxai` bin on `PATH`.
54
+ */
55
+ readonly command?: string;
56
+ /** Extra args for the `stdio-child` command. */
57
+ readonly args?: ReadonlyArray<string>;
58
+ /** Environment overrides for the spawned child (stdio-child only). */
59
+ readonly env?: Record<string, string>;
60
+ /**
61
+ * Default session id to bind action calls to. When unset, every call
62
+ * resolves to the lazy "default" session — same posture as the MCP path's
63
+ * omitted-`session` field.
64
+ */
65
+ readonly session?: string;
66
+ /**
67
+ * Capability set the SDK is allowed to expose. Defaults to the server's
68
+ * default set (read + navigation + action + human). Posture-broadening
69
+ * capabilities (`eval`, `network-body`, `secrets`, `file-io`,
70
+ * `byob-attach`, `extensions`, `stealth`, `captcha`, `credentials`,
71
+ * `clipboard`) remain off-by-default — name them here to opt in.
72
+ *
73
+ * Two enforcement layers consult this set:
74
+ * 1. The registry walker filters which methods are visible on the client.
75
+ * 2. {@link BrowxaiClient.callTool} refuses unknown / off-capability tools
76
+ * at runtime so a `(client as any).eval_js({...})` escape hatch still
77
+ * fails closed.
78
+ */
79
+ readonly capabilities?: ReadonlyArray<Capability>;
80
+ /**
81
+ * Config overrides applied to the in-process server. Same shape as the
82
+ * MCP `ConfigStore` resolve patch — for the `stdio-child` and `socket`
83
+ * transports the option is ignored (server-side config wins).
84
+ */
85
+ readonly config?: Record<string, unknown>;
86
+ /**
87
+ * Run the in-process server headless. Ignored for `stdio-child` and
88
+ * `socket` transports (those rely on the server-side launch flags).
89
+ */
90
+ readonly headless?: boolean;
91
+ /**
92
+ * Attach-to-an-existing-Chrome endpoint, passed through to the in-process
93
+ * server. Requires the `byob-attach` capability.
94
+ */
95
+ readonly attachCdp?: string;
96
+ }
97
+ /**
98
+ * The driver returned by {@link createBrowxai}. Every method is a typed
99
+ * 1:1 wrapper over the matching MCP tool — args are forwarded, results are
100
+ * the SDK envelope (raw content + parsed-JSON convenience field).
101
+ */
102
+ export interface BrowxaiClient {
103
+ snapshot(args?: SnapshotArgs): Promise<SnapshotResult>;
104
+ find(args: FindArgs): Promise<FindResult>;
105
+ frames_list(args?: FramesListArgs): Promise<FramesListResult>;
106
+ screenshot(args?: ScreenshotArgs): Promise<ScreenshotResult>;
107
+ console_read(args?: ConsoleReadArgs): Promise<ConsoleReadResult>;
108
+ network_read(args?: NetworkReadArgs): Promise<NetworkReadResult>;
109
+ ws_read(args?: WsReadArgs): Promise<WsReadResult>;
110
+ inspect(args: InspectArgs): Promise<InspectResult>;
111
+ text_search(args: TextSearchArgs): Promise<TextSearchResult>;
112
+ extract(args: ExtractArgs): Promise<ExtractResult>;
113
+ verify_visible(args: VerifyVisibleArgs): Promise<VerifyResult>;
114
+ verify_text(args: VerifyTextArgs): Promise<VerifyResult>;
115
+ verify_value(args: VerifyValueArgs): Promise<VerifyResult>;
116
+ verify_count(args: VerifyCountArgs): Promise<VerifyResult>;
117
+ verify_attribute(args: VerifyAttributeArgs): Promise<VerifyResult>;
118
+ verify_predicate(args: VerifyPredicateArgs): Promise<VerifyResult>;
119
+ generate_locator(args: GenerateLocatorArgs): Promise<GenerateLocatorResult>;
120
+ plan(args: PlanArgs): Promise<PlanResult>;
121
+ navigate(args: NavigateArgs): Promise<NavigateResult>;
122
+ go_back(args?: GoBackArgs): Promise<GoBackResult>;
123
+ go_forward(args?: GoForwardArgs): Promise<GoForwardResult>;
124
+ scroll(args: ScrollArgs): Promise<ScrollResult>;
125
+ set_viewport(args: SetViewportArgs): Promise<SetViewportResult>;
126
+ click(args: ClickArgs): Promise<ClickResult>;
127
+ fill(args: FillArgs): Promise<FillResult>;
128
+ press(args: PressArgs): Promise<PressResult>;
129
+ shortcut(args: BrowxaiArgs): Promise<BrowxaiResult>;
130
+ hover(args: HoverArgs): Promise<HoverResult>;
131
+ select(args: SelectArgs): Promise<SelectResult>;
132
+ choose_option(args: ChooseOptionArgs): Promise<ChooseOptionResult>;
133
+ fill_form(args: FillFormArgs): Promise<FillFormResult>;
134
+ wait_for(args: WaitForArgs): Promise<WaitForResult>;
135
+ execute(args: ExecuteArgs): Promise<ExecuteResult>;
136
+ await_human(args: AwaitHumanArgs): Promise<AwaitHumanResult>;
137
+ name_ref(args: NameRefArgs): Promise<NameRefResult>;
138
+ open_session(args: OpenSessionArgs): Promise<OpenSessionResult>;
139
+ close_session(args: CloseSessionArgs): Promise<CloseSessionResult>;
140
+ close_sessions(args?: CloseSessionsArgs): Promise<CloseSessionsResult>;
141
+ list_sessions(args?: ListSessionsArgs): Promise<ListSessionsResult>;
142
+ /**
143
+ * Typed escape hatch for adopters that want to call a tool by name (for
144
+ * example, capability-gated tools opted in via `capabilities`). The
145
+ * registry walker still applies — calling a tool whose capability is not
146
+ * in `opts.capabilities` rejects with a clear `BROWXAI_SDK_NOT_EXPOSED`
147
+ * error. This is the layer that closes the `(client as any).eval_js(...)`
148
+ * escape hole: even unrestricted runtime indexing must round-trip through
149
+ * `callTool`, where the gate fires.
150
+ */
151
+ callTool(name: string, args?: BrowxaiArgs): Promise<BrowxaiResult>;
152
+ /**
153
+ * namespaced caller for plugin-registered tools. Indexed
154
+ * twice: `client.plugins.<namespace>.<tool>(args)`. The wrapper
155
+ * round-trips through {@link BrowxaiClient.callTool}, so
156
+ * capability gating + the call-graph enforcement applied at the
157
+ * server still fire.
158
+ *
159
+ * The default type is intentionally permissive — plugin authors
160
+ * ship typed `.d.ts` overlays so consumers get `client.plugins.figma.moveNode`
161
+ * autocomplete. Cast through `BrowxaiClientWithPlugins<Schema>`
162
+ * (see docs/plugin-authoring.md) to enable the typed path.
163
+ */
164
+ readonly plugins: Record<string, Record<string, (args?: BrowxaiArgs) => Promise<BrowxaiResult>>>;
165
+ /** Names of every MCP tool currently exposed on this client. */
166
+ readonly exposedTools: ReadonlyArray<string>;
167
+ /** Capability set currently in effect on this client. */
168
+ readonly capabilities: ReadonlySet<Capability>;
169
+ /** Default session id every method binds to when `args.session` is omitted. */
170
+ readonly session: string | undefined;
171
+ /**
172
+ * Close the session + (when applicable) terminate the spawned server.
173
+ * Idempotent — a second call resolves to `undefined` immediately.
174
+ */
175
+ close(): Promise<void>;
176
+ }
@@ -0,0 +1,10 @@
1
+ // Public type surface for `browxai` SDK consumers. Argument /
2
+ // result shapes are deliberately structural (`Record<string, unknown>` /
3
+ // `BrowxaiResult`) so the SDK does not have to re-mirror every Zod schema
4
+ // the MCP server already owns — the source of truth for input shape is the
5
+ // `inputSchema` of each registered MCP tool, and the source of truth for
6
+ // output shape is the documented per-tool reference (see
7
+ // `docs/tool-reference.md`). The SDK's job is to (a) restrict the visible
8
+ // surface to stable + capability-permitted tools and (b) preserve the egress
9
+ // hygiene the MCP path enforces — NOT to re-author every per-tool schema.
10
+ export {};
@@ -0,0 +1,33 @@
1
+ import { type EngineKind } from "./engine/index.js";
2
+ import "./tools/tool-metadata.js";
3
+ import { SESSION_ARG, TIMEOUT_ARG, ACTION_OPTS, REF_OR_SELECTOR } from "./tools/schemas.js";
4
+ export declare const NAME = "browxai";
5
+ export declare const VERSION: string;
6
+ export interface StartOptions {
7
+ attachCdp?: string;
8
+ headless?: boolean;
9
+ /** Browser engine for sessions this server launches. Defaults to
10
+ * `"chromium"`. chromium, firefox, and webkit are all wired today (see
11
+ * src/engine/); a future-declared engine without an adapter is rejected at
12
+ * the launch path with a clear `engine-not-yet-supported` error. */
13
+ browserType?: EngineKind;
14
+ }
15
+ export { SESSION_ARG, TIMEOUT_ARG, ACTION_OPTS, REF_OR_SELECTOR };
16
+ export declare function createServer(opts?: StartOptions): Promise<{
17
+ start: () => Promise<void>;
18
+ shutdown: () => Promise<void>;
19
+ /** Programmatic in-process driving seam: the registered MCP tool handlers,
20
+ * keyed by tool name, each returning the same `{ content: [...] }` shape an
21
+ * MCP call would. Used by the headless-CI keystone (and any embedder that
22
+ * wants to drive the surface without the stdio transport). */
23
+ handlers: Record<string, (args: unknown) => Promise<{
24
+ content: Array<{
25
+ type: "text";
26
+ text: string;
27
+ } | {
28
+ type: "image";
29
+ data: string;
30
+ mimeType: string;
31
+ }>;
32
+ }>>;
33
+ }>;