@roxybrowser/playwright 2.0.2-beta.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 (424) hide show
  1. package/README.md +115 -0
  2. package/dist/apiRequestContext.d.ts +52 -0
  3. package/dist/apiRequestContext.d.ts.map +1 -0
  4. package/dist/apiRequestContext.js +632 -0
  5. package/dist/apiRequestContext.js.map +1 -0
  6. package/dist/ariaSnapshot.d.ts +38 -0
  7. package/dist/ariaSnapshot.d.ts.map +1 -0
  8. package/dist/ariaSnapshot.js +1137 -0
  9. package/dist/ariaSnapshot.js.map +1 -0
  10. package/dist/assertions.d.ts +2 -0
  11. package/dist/assertions.d.ts.map +1 -0
  12. package/dist/assertions.js +6 -0
  13. package/dist/assertions.js.map +1 -0
  14. package/dist/bin/roxybrowser-mcp.d.ts +3 -0
  15. package/dist/bin/roxybrowser-mcp.d.ts.map +1 -0
  16. package/dist/bin/roxybrowser-mcp.js +7 -0
  17. package/dist/bin/roxybrowser-mcp.js.map +1 -0
  18. package/dist/browser.d.ts +15 -0
  19. package/dist/browser.d.ts.map +1 -0
  20. package/dist/browser.js +67 -0
  21. package/dist/browser.js.map +1 -0
  22. package/dist/browserContext.d.ts +156 -0
  23. package/dist/browserContext.d.ts.map +1 -0
  24. package/dist/browserContext.js +1129 -0
  25. package/dist/browserContext.js.map +1 -0
  26. package/dist/browserContextClock.d.ts +54 -0
  27. package/dist/browserContextClock.d.ts.map +1 -0
  28. package/dist/browserContextClock.js +147 -0
  29. package/dist/browserContextClock.js.map +1 -0
  30. package/dist/browserType.d.ts +16 -0
  31. package/dist/browserType.d.ts.map +1 -0
  32. package/dist/browserType.js +68 -0
  33. package/dist/browserType.js.map +1 -0
  34. package/dist/bundle.d.ts +20 -0
  35. package/dist/bundle.d.ts.map +1 -0
  36. package/dist/bundle.js +20 -0
  37. package/dist/bundle.js.map +1 -0
  38. package/dist/clock.d.ts +43 -0
  39. package/dist/clock.d.ts.map +1 -0
  40. package/dist/clock.js +70 -0
  41. package/dist/clock.js.map +1 -0
  42. package/dist/elementHandle.d.ts +100 -0
  43. package/dist/elementHandle.d.ts.map +1 -0
  44. package/dist/elementHandle.js +423 -0
  45. package/dist/elementHandle.js.map +1 -0
  46. package/dist/errors.d.ts +10 -0
  47. package/dist/errors.d.ts.map +1 -0
  48. package/dist/errors.js +19 -0
  49. package/dist/errors.js.map +1 -0
  50. package/dist/evaluation.d.ts +4 -0
  51. package/dist/evaluation.d.ts.map +1 -0
  52. package/dist/evaluation.js +9 -0
  53. package/dist/evaluation.js.map +1 -0
  54. package/dist/frame.d.ts +139 -0
  55. package/dist/frame.d.ts.map +1 -0
  56. package/dist/frame.js +451 -0
  57. package/dist/frame.js.map +1 -0
  58. package/dist/httpHeaders.d.ts +6 -0
  59. package/dist/httpHeaders.d.ts.map +1 -0
  60. package/dist/httpHeaders.js +23 -0
  61. package/dist/httpHeaders.js.map +1 -0
  62. package/dist/human/controller.d.ts +15 -0
  63. package/dist/human/controller.d.ts.map +1 -0
  64. package/dist/human/controller.js +67 -0
  65. package/dist/human/controller.js.map +1 -0
  66. package/dist/human/profile.d.ts +5 -0
  67. package/dist/human/profile.d.ts.map +1 -0
  68. package/dist/human/profile.js +50 -0
  69. package/dist/human/profile.js.map +1 -0
  70. package/dist/human/types.d.ts +28 -0
  71. package/dist/human/types.d.ts.map +1 -0
  72. package/dist/human/types.js +2 -0
  73. package/dist/human/types.js.map +1 -0
  74. package/dist/index.d.ts +7 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +3 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/inputFiles.d.ts +18 -0
  79. package/dist/inputFiles.d.ts.map +1 -0
  80. package/dist/inputFiles.js +192 -0
  81. package/dist/inputFiles.js.map +1 -0
  82. package/dist/jsHandle.d.ts +32 -0
  83. package/dist/jsHandle.d.ts.map +1 -0
  84. package/dist/jsHandle.js +148 -0
  85. package/dist/jsHandle.js.map +1 -0
  86. package/dist/locator.d.ts +190 -0
  87. package/dist/locator.d.ts.map +1 -0
  88. package/dist/locator.js +883 -0
  89. package/dist/locator.js.map +1 -0
  90. package/dist/locatorSelectors.d.ts +11 -0
  91. package/dist/locatorSelectors.d.ts.map +1 -0
  92. package/dist/locatorSelectors.js +50 -0
  93. package/dist/locatorSelectors.js.map +1 -0
  94. package/dist/mcp/backend/common.d.ts +4 -0
  95. package/dist/mcp/backend/common.d.ts.map +1 -0
  96. package/dist/mcp/backend/common.js +40 -0
  97. package/dist/mcp/backend/common.js.map +1 -0
  98. package/dist/mcp/backend/connect.d.ts +10 -0
  99. package/dist/mcp/backend/connect.d.ts.map +1 -0
  100. package/dist/mcp/backend/connect.js +30 -0
  101. package/dist/mcp/backend/connect.js.map +1 -0
  102. package/dist/mcp/backend/console.d.ts +13 -0
  103. package/dist/mcp/backend/console.d.ts.map +1 -0
  104. package/dist/mcp/backend/console.js +36 -0
  105. package/dist/mcp/backend/console.js.map +1 -0
  106. package/dist/mcp/backend/context.d.ts +27 -0
  107. package/dist/mcp/backend/context.d.ts.map +1 -0
  108. package/dist/mcp/backend/context.js +33 -0
  109. package/dist/mcp/backend/context.js.map +1 -0
  110. package/dist/mcp/backend/dialogs.d.ts +7 -0
  111. package/dist/mcp/backend/dialogs.d.ts.map +1 -0
  112. package/dist/mcp/backend/dialogs.js +24 -0
  113. package/dist/mcp/backend/dialogs.js.map +1 -0
  114. package/dist/mcp/backend/evaluate.d.ts +9 -0
  115. package/dist/mcp/backend/evaluate.d.ts.map +1 -0
  116. package/dist/mcp/backend/evaluate.js +31 -0
  117. package/dist/mcp/backend/evaluate.js.map +1 -0
  118. package/dist/mcp/backend/files.d.ts +9 -0
  119. package/dist/mcp/backend/files.d.ts.map +1 -0
  120. package/dist/mcp/backend/files.js +39 -0
  121. package/dist/mcp/backend/files.js.map +1 -0
  122. package/dist/mcp/backend/keyboard.d.ts +22 -0
  123. package/dist/mcp/backend/keyboard.d.ts.map +1 -0
  124. package/dist/mcp/backend/keyboard.js +67 -0
  125. package/dist/mcp/backend/keyboard.js.map +1 -0
  126. package/dist/mcp/backend/navigate.d.ts +4 -0
  127. package/dist/mcp/backend/navigate.d.ts.map +1 -0
  128. package/dist/mcp/backend/navigate.js +82 -0
  129. package/dist/mcp/backend/navigate.js.map +1 -0
  130. package/dist/mcp/backend/network.d.ts +17 -0
  131. package/dist/mcp/backend/network.d.ts.map +1 -0
  132. package/dist/mcp/backend/network.js +144 -0
  133. package/dist/mcp/backend/network.js.map +1 -0
  134. package/dist/mcp/backend/response.d.ts +26 -0
  135. package/dist/mcp/backend/response.d.ts.map +1 -0
  136. package/dist/mcp/backend/response.js +109 -0
  137. package/dist/mcp/backend/response.js.map +1 -0
  138. package/dist/mcp/backend/runCode.d.ts +6 -0
  139. package/dist/mcp/backend/runCode.d.ts.map +1 -0
  140. package/dist/mcp/backend/runCode.js +20 -0
  141. package/dist/mcp/backend/runCode.js.map +1 -0
  142. package/dist/mcp/backend/screenshot.d.ts +13 -0
  143. package/dist/mcp/backend/screenshot.d.ts.map +1 -0
  144. package/dist/mcp/backend/screenshot.js +37 -0
  145. package/dist/mcp/backend/screenshot.js.map +1 -0
  146. package/dist/mcp/backend/snapshot.d.ts +70 -0
  147. package/dist/mcp/backend/snapshot.d.ts.map +1 -0
  148. package/dist/mcp/backend/snapshot.js +185 -0
  149. package/dist/mcp/backend/snapshot.js.map +1 -0
  150. package/dist/mcp/backend/tab.d.ts +72 -0
  151. package/dist/mcp/backend/tab.d.ts.map +1 -0
  152. package/dist/mcp/backend/tab.js +99 -0
  153. package/dist/mcp/backend/tab.js.map +1 -0
  154. package/dist/mcp/backend/tabs.d.ts +13 -0
  155. package/dist/mcp/backend/tabs.d.ts.map +1 -0
  156. package/dist/mcp/backend/tabs.js +44 -0
  157. package/dist/mcp/backend/tabs.js.map +1 -0
  158. package/dist/mcp/backend/tool.d.ts +52 -0
  159. package/dist/mcp/backend/tool.d.ts.map +1 -0
  160. package/dist/mcp/backend/tool.js +28 -0
  161. package/dist/mcp/backend/tool.js.map +1 -0
  162. package/dist/mcp/backend/tools.d.ts +4 -0
  163. package/dist/mcp/backend/tools.d.ts.map +1 -0
  164. package/dist/mcp/backend/tools.js +30 -0
  165. package/dist/mcp/backend/tools.js.map +1 -0
  166. package/dist/mcp/connectedBrowser.d.ts +3 -0
  167. package/dist/mcp/connectedBrowser.d.ts.map +1 -0
  168. package/dist/mcp/connectedBrowser.js +2153 -0
  169. package/dist/mcp/connectedBrowser.js.map +1 -0
  170. package/dist/mcp/errors.d.ts +6 -0
  171. package/dist/mcp/errors.d.ts.map +1 -0
  172. package/dist/mcp/errors.js +12 -0
  173. package/dist/mcp/errors.js.map +1 -0
  174. package/dist/mcp/format.d.ts +12 -0
  175. package/dist/mcp/format.d.ts.map +1 -0
  176. package/dist/mcp/format.js +48 -0
  177. package/dist/mcp/format.js.map +1 -0
  178. package/dist/mcp/index.d.ts +6 -0
  179. package/dist/mcp/index.d.ts.map +1 -0
  180. package/dist/mcp/index.js +5 -0
  181. package/dist/mcp/index.js.map +1 -0
  182. package/dist/mcp/output.d.ts +7 -0
  183. package/dist/mcp/output.d.ts.map +1 -0
  184. package/dist/mcp/output.js +39 -0
  185. package/dist/mcp/output.js.map +1 -0
  186. package/dist/mcp/runtime.d.ts +122 -0
  187. package/dist/mcp/runtime.d.ts.map +1 -0
  188. package/dist/mcp/runtime.js +524 -0
  189. package/dist/mcp/runtime.js.map +1 -0
  190. package/dist/mcp/schemas.d.ts +61 -0
  191. package/dist/mcp/schemas.d.ts.map +1 -0
  192. package/dist/mcp/schemas.js +41 -0
  193. package/dist/mcp/schemas.js.map +1 -0
  194. package/dist/mcp/server.d.ts +3 -0
  195. package/dist/mcp/server.d.ts.map +1 -0
  196. package/dist/mcp/server.js +117 -0
  197. package/dist/mcp/server.js.map +1 -0
  198. package/dist/mcp/snapshot.d.ts +3 -0
  199. package/dist/mcp/snapshot.d.ts.map +1 -0
  200. package/dist/mcp/snapshot.js +3 -0
  201. package/dist/mcp/snapshot.js.map +1 -0
  202. package/dist/mcp/tool.d.ts +19 -0
  203. package/dist/mcp/tool.d.ts.map +1 -0
  204. package/dist/mcp/tool.js +10 -0
  205. package/dist/mcp/tool.js.map +1 -0
  206. package/dist/mcp/tools/common.d.ts +6 -0
  207. package/dist/mcp/tools/common.d.ts.map +1 -0
  208. package/dist/mcp/tools/common.js +34 -0
  209. package/dist/mcp/tools/common.js.map +1 -0
  210. package/dist/mcp/tools/connect.d.ts +6 -0
  211. package/dist/mcp/tools/connect.d.ts.map +1 -0
  212. package/dist/mcp/tools/connect.js +28 -0
  213. package/dist/mcp/tools/connect.js.map +1 -0
  214. package/dist/mcp/tools/console.d.ts +6 -0
  215. package/dist/mcp/tools/console.d.ts.map +1 -0
  216. package/dist/mcp/tools/console.js +36 -0
  217. package/dist/mcp/tools/console.js.map +1 -0
  218. package/dist/mcp/tools/dialog.d.ts +6 -0
  219. package/dist/mcp/tools/dialog.d.ts.map +1 -0
  220. package/dist/mcp/tools/dialog.js +22 -0
  221. package/dist/mcp/tools/dialog.js.map +1 -0
  222. package/dist/mcp/tools/evaluate.d.ts +6 -0
  223. package/dist/mcp/tools/evaluate.d.ts.map +1 -0
  224. package/dist/mcp/tools/evaluate.js +31 -0
  225. package/dist/mcp/tools/evaluate.js.map +1 -0
  226. package/dist/mcp/tools/form.d.ts +6 -0
  227. package/dist/mcp/tools/form.d.ts.map +1 -0
  228. package/dist/mcp/tools/form.js +129 -0
  229. package/dist/mcp/tools/form.js.map +1 -0
  230. package/dist/mcp/tools/index.d.ts +3 -0
  231. package/dist/mcp/tools/index.d.ts.map +1 -0
  232. package/dist/mcp/tools/index.js +7 -0
  233. package/dist/mcp/tools/index.js.map +1 -0
  234. package/dist/mcp/tools/keyboard.d.ts +3 -0
  235. package/dist/mcp/tools/keyboard.d.ts.map +1 -0
  236. package/dist/mcp/tools/keyboard.js +44 -0
  237. package/dist/mcp/tools/keyboard.js.map +1 -0
  238. package/dist/mcp/tools/mouse.d.ts +3 -0
  239. package/dist/mcp/tools/mouse.d.ts.map +1 -0
  240. package/dist/mcp/tools/mouse.js +89 -0
  241. package/dist/mcp/tools/mouse.js.map +1 -0
  242. package/dist/mcp/tools/navigate.d.ts +6 -0
  243. package/dist/mcp/tools/navigate.d.ts.map +1 -0
  244. package/dist/mcp/tools/navigate.js +74 -0
  245. package/dist/mcp/tools/navigate.js.map +1 -0
  246. package/dist/mcp/tools/network.d.ts +6 -0
  247. package/dist/mcp/tools/network.d.ts.map +1 -0
  248. package/dist/mcp/tools/network.js +142 -0
  249. package/dist/mcp/tools/network.js.map +1 -0
  250. package/dist/mcp/tools/runCode.d.ts +6 -0
  251. package/dist/mcp/tools/runCode.d.ts.map +1 -0
  252. package/dist/mcp/tools/runCode.js +24 -0
  253. package/dist/mcp/tools/runCode.js.map +1 -0
  254. package/dist/mcp/tools/screenshot.d.ts +6 -0
  255. package/dist/mcp/tools/screenshot.d.ts.map +1 -0
  256. package/dist/mcp/tools/screenshot.js +46 -0
  257. package/dist/mcp/tools/screenshot.js.map +1 -0
  258. package/dist/mcp/tools/snapshot.d.ts +6 -0
  259. package/dist/mcp/tools/snapshot.d.ts.map +1 -0
  260. package/dist/mcp/tools/snapshot.js +56 -0
  261. package/dist/mcp/tools/snapshot.js.map +1 -0
  262. package/dist/mcp/tools/tabs.d.ts +6 -0
  263. package/dist/mcp/tools/tabs.d.ts.map +1 -0
  264. package/dist/mcp/tools/tabs.js +34 -0
  265. package/dist/mcp/tools/tabs.js.map +1 -0
  266. package/dist/mcp/transports/http.d.ts +3 -0
  267. package/dist/mcp/transports/http.d.ts.map +1 -0
  268. package/dist/mcp/transports/http.js +134 -0
  269. package/dist/mcp/transports/http.js.map +1 -0
  270. package/dist/mcp/transports/inMemory.d.ts +3 -0
  271. package/dist/mcp/transports/inMemory.d.ts.map +1 -0
  272. package/dist/mcp/transports/inMemory.js +18 -0
  273. package/dist/mcp/transports/inMemory.js.map +1 -0
  274. package/dist/mcp/transports/stdio.d.ts +3 -0
  275. package/dist/mcp/transports/stdio.d.ts.map +1 -0
  276. package/dist/mcp/transports/stdio.js +16 -0
  277. package/dist/mcp/transports/stdio.js.map +1 -0
  278. package/dist/mcp/types.d.ts +193 -0
  279. package/dist/mcp/types.d.ts.map +1 -0
  280. package/dist/mcp/types.js +2 -0
  281. package/dist/mcp/types.js.map +1 -0
  282. package/dist/navigationResult.d.ts +10 -0
  283. package/dist/navigationResult.d.ts.map +1 -0
  284. package/dist/navigationResult.js +15 -0
  285. package/dist/navigationResult.js.map +1 -0
  286. package/dist/page.d.ts +907 -0
  287. package/dist/page.d.ts.map +1 -0
  288. package/dist/page.js +6385 -0
  289. package/dist/page.js.map +1 -0
  290. package/dist/pageApiReport.d.ts +31 -0
  291. package/dist/pageApiReport.d.ts.map +1 -0
  292. package/dist/pageApiReport.js +218 -0
  293. package/dist/pageApiReport.js.map +1 -0
  294. package/dist/pageResponse.d.ts +18 -0
  295. package/dist/pageResponse.d.ts.map +1 -0
  296. package/dist/pageResponse.js +23 -0
  297. package/dist/pageResponse.js.map +1 -0
  298. package/dist/processCleanup.d.ts +8 -0
  299. package/dist/processCleanup.d.ts.map +1 -0
  300. package/dist/processCleanup.js +413 -0
  301. package/dist/processCleanup.js.map +1 -0
  302. package/dist/protocol/adapter.d.ts +406 -0
  303. package/dist/protocol/adapter.d.ts.map +1 -0
  304. package/dist/protocol/adapter.js +8 -0
  305. package/dist/protocol/adapter.js.map +1 -0
  306. package/dist/protocol/bidi/backend.d.ts +8 -0
  307. package/dist/protocol/bidi/backend.d.ts.map +1 -0
  308. package/dist/protocol/bidi/backend.js +3616 -0
  309. package/dist/protocol/bidi/backend.js.map +1 -0
  310. package/dist/protocol/bidi/client.d.ts +104 -0
  311. package/dist/protocol/bidi/client.d.ts.map +1 -0
  312. package/dist/protocol/bidi/client.js +228 -0
  313. package/dist/protocol/bidi/client.js.map +1 -0
  314. package/dist/protocol/capabilities.d.ts +11 -0
  315. package/dist/protocol/capabilities.d.ts.map +1 -0
  316. package/dist/protocol/capabilities.js +2 -0
  317. package/dist/protocol/capabilities.js.map +1 -0
  318. package/dist/protocol/cdp/backend.d.ts +24 -0
  319. package/dist/protocol/cdp/backend.d.ts.map +1 -0
  320. package/dist/protocol/cdp/backend.js +8428 -0
  321. package/dist/protocol/cdp/backend.js.map +1 -0
  322. package/dist/protocol/evaluate.d.ts +2 -0
  323. package/dist/protocol/evaluate.d.ts.map +1 -0
  324. package/dist/protocol/evaluate.js +14 -0
  325. package/dist/protocol/evaluate.js.map +1 -0
  326. package/dist/protocol/evaluationSerializer.d.ts +6 -0
  327. package/dist/protocol/evaluationSerializer.d.ts.map +1 -0
  328. package/dist/protocol/evaluationSerializer.js +234 -0
  329. package/dist/protocol/evaluationSerializer.js.map +1 -0
  330. package/dist/protocol/keyboardInput.d.ts +34 -0
  331. package/dist/protocol/keyboardInput.d.ts.map +1 -0
  332. package/dist/protocol/keyboardInput.js +246 -0
  333. package/dist/protocol/keyboardInput.js.map +1 -0
  334. package/dist/protocol/routing.d.ts +40 -0
  335. package/dist/protocol/routing.d.ts.map +1 -0
  336. package/dist/protocol/routing.js +2 -0
  337. package/dist/protocol/routing.js.map +1 -0
  338. package/dist/protocol/selectorRuntime.d.ts +30 -0
  339. package/dist/protocol/selectorRuntime.d.ts.map +1 -0
  340. package/dist/protocol/selectorRuntime.js +1814 -0
  341. package/dist/protocol/selectorRuntime.js.map +1 -0
  342. package/dist/protocol/webdriver-classic/backend.d.ts +6 -0
  343. package/dist/protocol/webdriver-classic/backend.d.ts.map +1 -0
  344. package/dist/protocol/webdriver-classic/backend.js +158 -0
  345. package/dist/protocol/webdriver-classic/backend.js.map +1 -0
  346. package/dist/routeHandler.d.ts +15 -0
  347. package/dist/routeHandler.d.ts.map +1 -0
  348. package/dist/routeHandler.js +2 -0
  349. package/dist/routeHandler.js.map +1 -0
  350. package/dist/roxybrowser.bundle.js +78236 -0
  351. package/dist/roxybrowser.bundle.js.map +1 -0
  352. package/dist/screencast.d.ts +57 -0
  353. package/dist/screencast.d.ts.map +1 -0
  354. package/dist/screencast.js +155 -0
  355. package/dist/screencast.js.map +1 -0
  356. package/dist/screencastActions.d.ts +2 -0
  357. package/dist/screencastActions.d.ts.map +1 -0
  358. package/dist/screencastActions.js +183 -0
  359. package/dist/screencastActions.js.map +1 -0
  360. package/dist/screencastOverlay.d.ts +3 -0
  361. package/dist/screencastOverlay.d.ts.map +1 -0
  362. package/dist/screencastOverlay.js +119 -0
  363. package/dist/screencastOverlay.js.map +1 -0
  364. package/dist/screenshotOptions.d.ts +26 -0
  365. package/dist/screenshotOptions.d.ts.map +1 -0
  366. package/dist/screenshotOptions.js +171 -0
  367. package/dist/screenshotOptions.js.map +1 -0
  368. package/dist/screenshotPreparation.d.ts +21 -0
  369. package/dist/screenshotPreparation.d.ts.map +1 -0
  370. package/dist/screenshotPreparation.js +199 -0
  371. package/dist/screenshotPreparation.js.map +1 -0
  372. package/dist/selectOptionValues.d.ts +10 -0
  373. package/dist/selectOptionValues.d.ts.map +1 -0
  374. package/dist/selectOptionValues.js +60 -0
  375. package/dist/selectOptionValues.js.map +1 -0
  376. package/dist/selectors.d.ts +3 -0
  377. package/dist/selectors.d.ts.map +1 -0
  378. package/dist/selectors.js +287 -0
  379. package/dist/selectors.js.map +1 -0
  380. package/dist/types/api.d.ts +2164 -0
  381. package/dist/types/api.d.ts.map +1 -0
  382. package/dist/types/api.js +2 -0
  383. package/dist/types/api.js.map +1 -0
  384. package/dist/types/events.d.ts +158 -0
  385. package/dist/types/events.d.ts.map +1 -0
  386. package/dist/types/events.js +2 -0
  387. package/dist/types/events.js.map +1 -0
  388. package/dist/types/options.d.ts +263 -0
  389. package/dist/types/options.d.ts.map +1 -0
  390. package/dist/types/options.js +2 -0
  391. package/dist/types/options.js.map +1 -0
  392. package/dist/urlMatch.d.ts +19 -0
  393. package/dist/urlMatch.d.ts.map +1 -0
  394. package/dist/urlMatch.js +183 -0
  395. package/dist/urlMatch.js.map +1 -0
  396. package/dist/utilityScriptSerializers.d.ts +61 -0
  397. package/dist/utilityScriptSerializers.d.ts.map +1 -0
  398. package/dist/utilityScriptSerializers.js +297 -0
  399. package/dist/utilityScriptSerializers.js.map +1 -0
  400. package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts +2 -0
  401. package/dist/vendor/playwright/ariaSnapshotEvaluate.d.ts.map +1 -0
  402. package/dist/vendor/playwright/ariaSnapshotEvaluate.js +207 -0
  403. package/dist/vendor/playwright/ariaSnapshotEvaluate.js.map +1 -0
  404. package/dist/vendor/playwright/generated/clockSource.d.ts +9 -0
  405. package/dist/vendor/playwright/generated/clockSource.d.ts.map +1 -0
  406. package/dist/vendor/playwright/generated/clockSource.js +9 -0
  407. package/dist/vendor/playwright/generated/clockSource.js.map +1 -0
  408. package/dist/vendor/playwright/generated/injectedScriptSource.d.ts +9 -0
  409. package/dist/vendor/playwright/generated/injectedScriptSource.d.ts.map +1 -0
  410. package/dist/vendor/playwright/generated/injectedScriptSource.js +9 -0
  411. package/dist/vendor/playwright/generated/injectedScriptSource.js.map +1 -0
  412. package/dist/video.d.ts +39 -0
  413. package/dist/video.d.ts.map +1 -0
  414. package/dist/video.js +235 -0
  415. package/dist/video.js.map +1 -0
  416. package/dist/waitForSelector.d.ts +7 -0
  417. package/dist/waitForSelector.d.ts.map +1 -0
  418. package/dist/waitForSelector.js +23 -0
  419. package/dist/waitForSelector.js.map +1 -0
  420. package/dist/worker.d.ts +45 -0
  421. package/dist/worker.d.ts.map +1 -0
  422. package/dist/worker.js +192 -0
  423. package/dist/worker.js.map +1 -0
  424. package/package.json +82 -0
@@ -0,0 +1,70 @@
1
+ import { z } from "zod";
2
+ export declare const optionalElementSchema: z.ZodObject<{
3
+ element: z.ZodOptional<z.ZodString>;
4
+ target: z.ZodOptional<z.ZodString>;
5
+ }, z.core.$strip>;
6
+ export declare const elementSchema: z.ZodObject<{
7
+ element: z.ZodOptional<z.ZodString>;
8
+ target: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const snapshot: import("./tool.js").Tool<z.ZodObject<{
11
+ target: z.ZodOptional<z.ZodString>;
12
+ filename: z.ZodOptional<z.ZodString>;
13
+ depth: z.ZodOptional<z.ZodNumber>;
14
+ boxes: z.ZodOptional<z.ZodBoolean>;
15
+ }, z.core.$strict>>;
16
+ export declare const click: import("./tool.js").Tool<z.ZodObject<{
17
+ element: z.ZodOptional<z.ZodString>;
18
+ target: z.ZodString;
19
+ doubleClick: z.ZodOptional<z.ZodBoolean>;
20
+ button: z.ZodOptional<z.ZodEnum<{
21
+ left: "left";
22
+ right: "right";
23
+ middle: "middle";
24
+ }>>;
25
+ modifiers: z.ZodOptional<z.ZodArray<z.ZodEnum<{
26
+ Alt: "Alt";
27
+ Control: "Control";
28
+ ControlOrMeta: "ControlOrMeta";
29
+ Meta: "Meta";
30
+ Shift: "Shift";
31
+ }>>>;
32
+ human: z.ZodOptional<z.ZodObject<{
33
+ profile: z.ZodOptional<z.ZodEnum<{
34
+ cautious: "cautious";
35
+ balanced: "balanced";
36
+ fast: "fast";
37
+ }>>;
38
+ }, z.core.$strip>>;
39
+ }, z.core.$strip>>;
40
+ export declare const drag: import("./tool.js").Tool<z.ZodObject<{
41
+ startElement: z.ZodOptional<z.ZodString>;
42
+ startTarget: z.ZodString;
43
+ endElement: z.ZodOptional<z.ZodString>;
44
+ endTarget: z.ZodString;
45
+ }, z.core.$strip>>;
46
+ export declare const hover: import("./tool.js").Tool<z.ZodObject<{
47
+ element: z.ZodOptional<z.ZodString>;
48
+ target: z.ZodString;
49
+ }, z.core.$strip>>;
50
+ export declare const selectOption: import("./tool.js").Tool<z.ZodObject<{
51
+ element: z.ZodOptional<z.ZodString>;
52
+ target: z.ZodString;
53
+ values: z.ZodArray<z.ZodString>;
54
+ }, z.core.$strip>>;
55
+ declare const _default: (import("./tool.js").Tool<z.ZodObject<{
56
+ target: z.ZodOptional<z.ZodString>;
57
+ filename: z.ZodOptional<z.ZodString>;
58
+ depth: z.ZodOptional<z.ZodNumber>;
59
+ boxes: z.ZodOptional<z.ZodBoolean>;
60
+ }, z.core.$strict>> | import("./tool.js").Tool<z.ZodObject<{
61
+ startElement: z.ZodOptional<z.ZodString>;
62
+ startTarget: z.ZodString;
63
+ endElement: z.ZodOptional<z.ZodString>;
64
+ endTarget: z.ZodString;
65
+ }, z.core.$strip>> | import("./tool.js").Tool<z.ZodObject<{
66
+ element: z.ZodOptional<z.ZodString>;
67
+ target: z.ZodString;
68
+ }, z.core.$strip>>)[];
69
+ export default _default;
70
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/mcp/backend/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,qBAAqB;;;iBAKhC,CAAC;AAEH,eAAO,MAAM,aAAa;;;iBAKxB,CAAC;AAiCH,eAAO,MAAM,QAAQ;;;;;mBA4CnB,CAAC;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;kBAqChB,CAAC;AAEH,eAAO,MAAM,IAAI;;;;;kBAsCf,CAAC;AAEH,eAAO,MAAM,KAAK;;;kBAkBhB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;kBAmBvB,CAAC;;;;;;;;;;;;;;;AAEH,wBAME"}
@@ -0,0 +1,185 @@
1
+ import { z } from "zod";
2
+ import { defineTabTool } from "./tool.js";
3
+ const elementTargetDescription = "Exact target element reference from the page snapshot, or a unique element selector";
4
+ export const optionalElementSchema = z.object({
5
+ element: z.string().optional().describe("Human-readable element description used to obtain permission to interact with the element"),
6
+ target: z.string().optional().describe(elementTargetDescription)
7
+ });
8
+ export const elementSchema = z.object({
9
+ element: z.string().optional().describe("Human-readable element description used to obtain permission to interact with the element"),
10
+ target: z.string().describe(elementTargetDescription)
11
+ });
12
+ const clickSchema = elementSchema.extend({
13
+ doubleClick: z.boolean().optional().describe("Whether to perform a double click instead of a single click"),
14
+ button: z.enum(["left", "right", "middle"]).optional().describe("Button to click, defaults to left"),
15
+ modifiers: z.array(z.enum(["Alt", "Control", "ControlOrMeta", "Meta", "Shift"])).optional().describe("Modifier keys to press during the click"),
16
+ human: z.object({
17
+ profile: z.enum(["cautious", "balanced", "fast"]).optional().describe("Humanization timing profile, defaults to balanced")
18
+ }).optional().describe("Humanization settings for this click")
19
+ });
20
+ function optionsCode(params, hasTimeout) {
21
+ const entries = [];
22
+ if (params.button !== undefined) {
23
+ entries.push(`button: ${JSON.stringify(params.button)}`);
24
+ }
25
+ if (params.modifiers !== undefined) {
26
+ entries.push(`modifiers: ${JSON.stringify(params.modifiers)}`);
27
+ }
28
+ if (hasTimeout) {
29
+ entries.push("timeout");
30
+ }
31
+ return entries.length ? `{ ${entries.join(", ")} }` : "";
32
+ }
33
+ export const snapshot = defineTabTool({
34
+ capability: "core",
35
+ schema: {
36
+ name: "browser_snapshot",
37
+ title: "Page snapshot",
38
+ description: "Capture accessibility snapshot of the current page, this is better than screenshot",
39
+ inputSchema: z.object({
40
+ target: z.string().optional().describe(elementTargetDescription),
41
+ filename: z.string().optional().describe("Save snapshot to markdown file instead of returning it in the response."),
42
+ depth: z.number().optional().describe("Limit the depth of the snapshot tree"),
43
+ boxes: z.boolean().optional().describe("Include each element's bounding box as [box=x,y,width,height] in the snapshot. Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect)")
44
+ }).strict(),
45
+ listedInputSchema: {
46
+ $schema: "https://json-schema.org/draft/2020-12/schema",
47
+ type: "object",
48
+ properties: {
49
+ target: {
50
+ type: "string",
51
+ description: "Exact target element reference from the page snapshot, or a unique element selector"
52
+ },
53
+ filename: {
54
+ type: "string",
55
+ description: "Save snapshot to markdown file instead of returning it in the response."
56
+ },
57
+ depth: {
58
+ type: "number",
59
+ description: "Limit the depth of the snapshot tree"
60
+ },
61
+ boxes: {
62
+ type: "boolean",
63
+ description: "Include each element's bounding box as [box=x,y,width,height] in the snapshot. Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect)"
64
+ }
65
+ },
66
+ additionalProperties: false
67
+ },
68
+ type: "readOnly"
69
+ },
70
+ handle: async (tab, params, response) => {
71
+ if (params.target) {
72
+ await tab.targetLocator({ target: params.target });
73
+ }
74
+ response.setIncludeFullSnapshot(params.filename, params.target, params.depth, params.boxes);
75
+ }
76
+ });
77
+ export const click = defineTabTool({
78
+ capability: "core",
79
+ schema: {
80
+ name: "browser_click",
81
+ title: "Click",
82
+ description: "Perform click on a web page",
83
+ inputSchema: clickSchema,
84
+ type: "input"
85
+ },
86
+ handle: async (tab, params, response) => {
87
+ response.setIncludeSnapshot();
88
+ response.addTextResult(`Clicked "${params.element ?? params.target}".`);
89
+ const { locator, resolved } = await tab.targetLocator(params);
90
+ const options = {
91
+ ...(params.button !== undefined ? { button: params.button } : {}),
92
+ ...(params.modifiers !== undefined ? { modifiers: params.modifiers } : {}),
93
+ ...(params.human !== undefined ? { human: params.human } : {}),
94
+ ...tab.actionTimeoutOptions
95
+ };
96
+ const codeOptions = optionsCode(params, "timeout" in tab.actionTimeoutOptions);
97
+ if (params.doubleClick) {
98
+ response.addCode(`await page.${resolved}.dblclick(${codeOptions});`);
99
+ }
100
+ else {
101
+ response.addCode(`await page.${resolved}.click(${codeOptions});`);
102
+ }
103
+ await tab.waitForCompletion(async () => {
104
+ if (params.doubleClick) {
105
+ await locator.dblclick(options);
106
+ }
107
+ else {
108
+ await locator.click(options);
109
+ }
110
+ });
111
+ }
112
+ });
113
+ export const drag = defineTabTool({
114
+ capability: "core",
115
+ schema: {
116
+ name: "browser_drag",
117
+ title: "Drag mouse",
118
+ description: "Perform drag and drop between two elements",
119
+ inputSchema: z.object({
120
+ startElement: z.string().optional().describe("Human-readable source element description used to obtain the permission to interact with the element"),
121
+ startTarget: z.string().describe(elementTargetDescription),
122
+ endElement: z.string().optional().describe("Human-readable target element description used to obtain the permission to interact with the element"),
123
+ endTarget: z.string().describe(elementTargetDescription)
124
+ }),
125
+ type: "input"
126
+ },
127
+ handle: async (tab, params, response) => {
128
+ response.setIncludeSnapshot();
129
+ response.addTextResult(`Dragged "${params.startElement ?? params.startTarget}" to "${params.endElement ?? params.endTarget}".`);
130
+ const locators = await tab.targetLocators([
131
+ { target: params.startTarget, element: params.startElement },
132
+ { target: params.endTarget, element: params.endElement }
133
+ ]);
134
+ const start = locators[0];
135
+ const end = locators[1];
136
+ await tab.waitForCompletion(async () => {
137
+ await start.locator.dragTo(end.locator, tab.actionTimeoutOptions);
138
+ });
139
+ response.addCode(`await page.${start.resolved}.dragTo(page.${end.resolved});`);
140
+ }
141
+ });
142
+ export const hover = defineTabTool({
143
+ capability: "core",
144
+ schema: {
145
+ name: "browser_hover",
146
+ title: "Hover mouse",
147
+ description: "Hover over element on page",
148
+ inputSchema: elementSchema,
149
+ type: "input"
150
+ },
151
+ handle: async (tab, params, response) => {
152
+ response.setIncludeSnapshot();
153
+ const { locator, resolved } = await tab.targetLocator(params);
154
+ response.addCode(`await page.${resolved}.hover();`);
155
+ await locator.hover(tab.actionTimeoutOptions);
156
+ }
157
+ });
158
+ const selectOptionSchema = elementSchema.extend({
159
+ values: z.array(z.string()).describe("Option values or visible labels to select")
160
+ });
161
+ export const selectOption = defineTabTool({
162
+ capability: "core",
163
+ schema: {
164
+ name: "browser_select_option",
165
+ title: "Select option",
166
+ description: "Select an option in a dropdown",
167
+ inputSchema: selectOptionSchema,
168
+ type: "input"
169
+ },
170
+ handle: async (tab, params, response) => {
171
+ response.setIncludeSnapshot();
172
+ const { locator, resolved } = await tab.targetLocator(params);
173
+ response.addCode(`await page.${resolved}.selectOption(${JSON.stringify(params.values)});`);
174
+ const selected = await locator.selectOption(params.values, tab.actionTimeoutOptions);
175
+ response.addTextResult(`Selected options: ${selected.join(", ")}`);
176
+ }
177
+ });
178
+ export default [
179
+ snapshot,
180
+ click,
181
+ drag,
182
+ hover,
183
+ selectOption
184
+ ];
185
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/mcp/backend/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,wBAAwB,GAAG,qFAAqF,CAAC;AAEvH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F,CAC5F;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACjE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F,CAC5F;IACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CACtD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,6DAA6D,CAC9D;IACD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC7D,mCAAmC,CACpC;IACD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClG,yCAAyC,CAC1C;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnE,mDAAmD,CACpD;KACF,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAC/D,CAAC,CAAC;AAEH,SAAS,WAAW,CAAC,MAAoC,EAAE,UAAmB;IAC5E,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,oFAAoF;QACjG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAChE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;YACnH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YAC7E,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iKAAiK,CAAC;SAC1M,CAAC,CAAC,MAAM,EAAE;QACX,iBAAiB,EAAE;YACjB,OAAO,EAAE,8CAA8C;YACvD,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;iBACnG;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yEAAyE;iBACvF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sCAAsC;iBACpD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iKAAiK;iBAC/K;aACF;YACD,oBAAoB,EAAE,KAAK;SAC5B;QACD,IAAI,EAAE,UAAU;KACjB;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;IACjC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,OAAO;KACd;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,aAAa,CAAC,YAAY,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAExE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG;YACd,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjE,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,GAAG,GAAG,CAAC,oBAAoB;SAC5B,CAAC;QACF,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAE/E,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,QAAQ,CAAC,OAAO,CAAC,cAAc,QAAQ,aAAa,WAAW,IAAI,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,OAAO,CAAC,cAAc,QAAQ,UAAU,WAAW,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACrC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;gBACvB,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,aAAa,CAAC;IAChC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,sGAAsG,CACvG;YACD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAC1D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACxC,sGAAsG,CACvG;YACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACzD,CAAC;QACF,IAAI,EAAE,OAAO;KACd;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAC9B,QAAQ,CAAC,aAAa,CACpB,YAAY,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,WAAW,SAAS,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,CACxG,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC;YACxC,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;YAC5D,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE;SACzD,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAEzB,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,IAAI,EAAE;YACrC,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,QAAQ,gBAAgB,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;IACjF,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC;IACjC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,eAAe;QACrB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE,aAAa;QAC1B,IAAI,EAAE,OAAO;KACd;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,QAAQ,CAAC,OAAO,CAAC,cAAc,QAAQ,WAAW,CAAC,CAAC;QAEpD,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAChD,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CAClF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,UAAU,EAAE,MAAM;IAClB,MAAM,EAAE;QACN,IAAI,EAAE,uBAAuB;QAC7B,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,gCAAgC;QAC7C,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,OAAO;KACd;IAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QACtC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAE9B,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9D,QAAQ,CAAC,OAAO,CAAC,cAAc,QAAQ,iBAAiB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE3F,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACrF,QAAQ,CAAC,aAAa,CAAC,qBAAqB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;CACF,CAAC,CAAC;AAEH,eAAe;IACb,QAAQ;IACR,KAAK;IACL,IAAI;IACJ,KAAK;IACL,YAAY;CACb,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { McpRuntime } from "../runtime.js";
2
+ import type { Context } from "./context.js";
3
+ import type { ModalState } from "./tool.js";
4
+ type TargetParams = {
5
+ element?: string | undefined;
6
+ target: string;
7
+ };
8
+ type HumanOptions = {
9
+ profile?: "cautious" | "balanced" | "fast" | undefined;
10
+ };
11
+ declare class Locator {
12
+ private readonly runtime;
13
+ private readonly target;
14
+ constructor(runtime: McpRuntime, target: string);
15
+ click(options?: {
16
+ button?: "left" | "right" | "middle";
17
+ modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
18
+ human?: HumanOptions;
19
+ }): Promise<void>;
20
+ dblclick(options?: {
21
+ button?: "left" | "right" | "middle";
22
+ modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">;
23
+ human?: HumanOptions;
24
+ }): Promise<void>;
25
+ hover(_options?: {
26
+ timeout?: number;
27
+ }): Promise<void>;
28
+ selectOption(values: string[], _options?: {
29
+ timeout?: number;
30
+ }): Promise<string[]>;
31
+ dragTo(target: Locator, _options?: {
32
+ timeout?: number;
33
+ }): Promise<void>;
34
+ fill(value: string, _options?: {
35
+ timeout?: number;
36
+ }): Promise<void>;
37
+ pressSequentially(value: string, _options?: {
38
+ timeout?: number;
39
+ }): Promise<void>;
40
+ type(value: string, options?: {
41
+ submit?: boolean;
42
+ slowly?: boolean;
43
+ timeout?: number;
44
+ }): Promise<void>;
45
+ }
46
+ export declare class Tab {
47
+ readonly context: Context;
48
+ readonly actionTimeoutOptions: {
49
+ timeout?: number;
50
+ };
51
+ readonly navigationTimeoutOptions: {
52
+ timeout?: number;
53
+ };
54
+ readonly expectTimeoutOptions: {
55
+ timeout?: number;
56
+ };
57
+ constructor(context: Context);
58
+ modalStates(): ModalState[];
59
+ waitForCompletion<T>(callback: () => Promise<T>): Promise<T>;
60
+ targetLocator(params: TargetParams): Promise<{
61
+ locator: Locator;
62
+ resolved: string;
63
+ }>;
64
+ targetLocators(params: TargetParams[]): Promise<Array<{
65
+ locator: Locator;
66
+ resolved: string;
67
+ }>>;
68
+ pressKey(key: string, modifiers?: Array<"Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift">): Promise<void>;
69
+ uploadFile(paths: string[]): Promise<void>;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/mcp/backend/tab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ class Locator {
2
+ runtime;
3
+ target;
4
+ constructor(runtime, target) {
5
+ this.runtime = runtime;
6
+ this.target = target;
7
+ }
8
+ async click(options) {
9
+ await this.runtime.click(this.target, {
10
+ ...(options?.button !== undefined ? { button: options.button } : {}),
11
+ ...(options?.modifiers !== undefined ? { modifiers: options.modifiers } : {}),
12
+ ...(options?.human?.profile !== undefined ? { human: { profile: options.human.profile } } : {})
13
+ });
14
+ }
15
+ async dblclick(options) {
16
+ await this.runtime.click(this.target, {
17
+ ...(options?.button !== undefined ? { button: options.button } : {}),
18
+ ...(options?.modifiers !== undefined ? { modifiers: options.modifiers } : {}),
19
+ ...(options?.human?.profile !== undefined ? { human: { profile: options.human.profile } } : {}),
20
+ doubleClick: true
21
+ });
22
+ }
23
+ async hover(_options) {
24
+ await this.runtime.hover(this.target);
25
+ }
26
+ async selectOption(values, _options) {
27
+ const result = await this.runtime.selectOption(this.target, values);
28
+ return result.selected;
29
+ }
30
+ async dragTo(target, _options) {
31
+ await this.runtime.drag(this.target, target.target);
32
+ }
33
+ async fill(value, _options) {
34
+ await this.runtime.type(this.target, value);
35
+ }
36
+ async pressSequentially(value, _options) {
37
+ await this.runtime.type(this.target, value, { slowly: true });
38
+ }
39
+ async type(value, options) {
40
+ await this.runtime.type(this.target, value, {
41
+ ...(options?.submit !== undefined ? { submit: options.submit } : {}),
42
+ ...(options?.slowly !== undefined ? { slowly: options.slowly } : {})
43
+ });
44
+ }
45
+ }
46
+ function resolvedLocator(target, resolved) {
47
+ if ("selector" in resolved) {
48
+ return `locator(${JSON.stringify(resolved.selector)})`;
49
+ }
50
+ return `locator(${JSON.stringify(`aria-ref=${target}`)})`;
51
+ }
52
+ export class Tab {
53
+ context;
54
+ actionTimeoutOptions;
55
+ navigationTimeoutOptions;
56
+ expectTimeoutOptions;
57
+ constructor(context) {
58
+ this.context = context;
59
+ this.actionTimeoutOptions = context.config.timeouts?.action !== undefined
60
+ ? { timeout: context.config.timeouts.action }
61
+ : {};
62
+ this.navigationTimeoutOptions = context.config.timeouts?.navigation !== undefined
63
+ ? { timeout: context.config.timeouts.navigation }
64
+ : {};
65
+ this.expectTimeoutOptions = context.config.timeouts?.expect !== undefined
66
+ ? { timeout: context.config.timeouts.expect }
67
+ : {};
68
+ }
69
+ modalStates() {
70
+ if (!this.context.runtime.hasPendingFileUploadTarget()) {
71
+ return [];
72
+ }
73
+ return [{
74
+ type: "fileChooser",
75
+ description: "File chooser",
76
+ clearedBy: { tool: "browser_file_upload", skill: "upload" }
77
+ }];
78
+ }
79
+ async waitForCompletion(callback) {
80
+ return callback();
81
+ }
82
+ async targetLocator(params) {
83
+ const target = this.context.runtime.resolveTarget(params.target);
84
+ return {
85
+ locator: new Locator(this.context.runtime, params.target),
86
+ resolved: resolvedLocator(params.target, target)
87
+ };
88
+ }
89
+ async targetLocators(params) {
90
+ return Promise.all(params.map((param) => this.targetLocator(param)));
91
+ }
92
+ async pressKey(key, modifiers) {
93
+ await this.context.runtime.pressKey(key, modifiers);
94
+ }
95
+ async uploadFile(paths) {
96
+ await this.context.runtime.uploadFile(paths);
97
+ }
98
+ }
99
+ //# sourceMappingURL=tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.js","sourceRoot":"","sources":["../../../src/mcp/backend/tab.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ declare const _default: import("./tool.js").Tool<z.ZodObject<{
3
+ action: z.ZodEnum<{
4
+ close: "close";
5
+ select: "select";
6
+ list: "list";
7
+ new: "new";
8
+ }>;
9
+ index: z.ZodOptional<z.ZodNumber>;
10
+ url: z.ZodOptional<z.ZodString>;
11
+ }, z.core.$strip>>[];
12
+ export default _default;
13
+ //# sourceMappingURL=tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/mcp/backend/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;;;;;;;;;;;AA4CxB,wBAAsB"}
@@ -0,0 +1,44 @@
1
+ import { z } from "zod";
2
+ import { defineTool } from "./tool.js";
3
+ import { formatTabs } from "../format.js";
4
+ const tabs = defineTool({
5
+ capability: "core-tabs",
6
+ schema: {
7
+ name: "browser_tabs",
8
+ title: "Browser Tabs",
9
+ description: "List, create, select, and close browser tabs for the current MCP browser session.",
10
+ inputSchema: z.object({
11
+ action: z.enum(["list", "new", "select", "close"]).describe("Operation to perform"),
12
+ index: z.number().optional().describe("Tab index, used for close/select. If omitted for close, current tab is closed."),
13
+ url: z.string().optional().describe("URL to navigate to in the new tab, used for new.")
14
+ }),
15
+ type: "action"
16
+ },
17
+ handle: async (context, params, response) => {
18
+ switch (params.action) {
19
+ case "list":
20
+ await context.ensureTab();
21
+ break;
22
+ case "new":
23
+ await context.runtime.newTab(params.url);
24
+ if (params.url) {
25
+ response.setIncludeSnapshot();
26
+ response.addCode(`await page.goto('${params.url}');`);
27
+ }
28
+ break;
29
+ case "close":
30
+ await context.runtime.closeTab(params.index ?? 0);
31
+ break;
32
+ case "select":
33
+ if (params.index === undefined) {
34
+ throw new Error("Tab index is required");
35
+ }
36
+ await context.runtime.selectTab(params.index);
37
+ break;
38
+ }
39
+ const tabs = await context.runtime.listTabs();
40
+ response.addTextResult(formatTabs(tabs));
41
+ }
42
+ });
43
+ export default [tabs];
44
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/mcp/backend/tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,IAAI,GAAG,UAAU,CAAC;IACtB,UAAU,EAAE,WAAW;IACvB,MAAM,EAAE;QACN,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,mFAAmF;QAChG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;YACvH,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;SACxF,CAAC;QACF,IAAI,EAAE,QAAQ;KACf;IACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC1C,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,KAAK,MAAM;gBACT,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC1B,MAAM;YACR,KAAK,KAAK;gBACR,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;oBACf,QAAQ,CAAC,kBAAkB,EAAE,CAAC;oBAC9B,QAAQ,CAAC,OAAO,CAAC,oBAAoB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC;gBACxD,CAAC;gBACD,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;gBAC3C,CAAC;gBACD,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9C,MAAM;QACV,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC9C,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,52 @@
1
+ import type { z } from "zod";
2
+ import type { CallToolResult, Tool as McpToolDefinition } from "@modelcontextprotocol/sdk/types.js";
3
+ import type { Context } from "./context.js";
4
+ import type { Tab } from "./tab.js";
5
+ import type { Response } from "./response.js";
6
+ type AnyZodObject = z.ZodObject<z.ZodRawShape>;
7
+ type ToolSchema<Input extends AnyZodObject> = {
8
+ name: string;
9
+ title: string;
10
+ description: string;
11
+ inputSchema: Input;
12
+ listedInputSchema?: McpToolDefinition["inputSchema"];
13
+ type: "input" | "assertion" | "action" | "readOnly";
14
+ };
15
+ export type ToolCapability = "config" | "core" | "core-navigation" | "core-tabs" | "core-input" | "core-install" | "network" | "pdf" | "storage" | "testing" | "vision" | "devtools";
16
+ export type FileUploadModalState = {
17
+ type: "fileChooser";
18
+ description: string;
19
+ clearedBy: {
20
+ tool: string;
21
+ skill: string;
22
+ };
23
+ };
24
+ export type DialogModalState = {
25
+ type: "dialog";
26
+ description: string;
27
+ clearedBy: {
28
+ tool: string;
29
+ skill: string;
30
+ };
31
+ };
32
+ export type ModalState = FileUploadModalState | DialogModalState;
33
+ export type Tool<Input extends AnyZodObject = AnyZodObject> = {
34
+ capability: ToolCapability;
35
+ skillOnly?: boolean;
36
+ schema: ToolSchema<Input>;
37
+ handle: (context: Context, params: z.output<Input>, response: Response, signal?: AbortSignal) => Promise<void>;
38
+ };
39
+ export declare function defineTool<Input extends AnyZodObject>(tool: Tool<Input>): Tool<Input>;
40
+ export type TabTool<Input extends AnyZodObject = AnyZodObject> = {
41
+ capability: ToolCapability;
42
+ skillOnly?: boolean;
43
+ schema: ToolSchema<Input>;
44
+ clearsModalState?: ModalState["type"];
45
+ handle: (tab: Tab, params: z.output<Input>, response: Response, signal?: AbortSignal) => Promise<void>;
46
+ };
47
+ export declare function defineTabTool<Input extends AnyZodObject>(tool: TabTool<Input>): Tool<Input>;
48
+ export type SerializedToolResult = CallToolResult & {
49
+ isClose?: boolean;
50
+ };
51
+ export {};
52
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/mcp/backend/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export function defineTool(tool) {
2
+ return tool;
3
+ }
4
+ export function defineTabTool(tool) {
5
+ return {
6
+ ...tool,
7
+ handle: async (context, params, response, signal) => {
8
+ const tab = await context.ensureTab();
9
+ const modalStates = tab.modalStates().map((state) => state.type);
10
+ if (tool.clearsModalState && !modalStates.includes(tool.clearsModalState)) {
11
+ response.addError(missingModalStateMessage(tool));
12
+ }
13
+ else if (!tool.clearsModalState && modalStates.length) {
14
+ response.addError(`Error: Tool "${tool.schema.name}" does not handle the modal state.`);
15
+ }
16
+ else {
17
+ await tool.handle(tab, params, response, signal);
18
+ }
19
+ }
20
+ };
21
+ }
22
+ function missingModalStateMessage(tool) {
23
+ if (tool.clearsModalState === "fileChooser") {
24
+ return "[no_file_chooser] No file chooser visible.";
25
+ }
26
+ return `Error: The tool "${tool.schema.name}" can only be used when there is related modal state present.`;
27
+ }
28
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/mcp/backend/tool.ts"],"names":[],"mappings":"AAyDA,MAAM,UAAU,UAAU,CAA6B,IAAiB;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAeD,MAAM,UAAU,aAAa,CAA6B,IAAoB;IAC5E,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;YAClD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1E,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACxD,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,IAAI,oCAAoC,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,IAA2B;IAC3D,IAAI,IAAI,CAAC,gBAAgB,KAAK,aAAa,EAAE,CAAC;QAC5C,OAAO,4CAA4C,CAAC;IACtD,CAAC;IACD,OAAO,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,+DAA+D,CAAC;AAC7G,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Tool } from "./tool.js";
2
+ export declare const browserTools: Tool[];
3
+ export default browserTools;
4
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/mcp/backend/tools.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,eAAO,MAAM,YAAY,EAAE,IAAI,EAc9B,CAAC;AAEF,eAAe,YAAY,CAAC"}