rechrome 1.18.1 → 1.20.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 (497) hide show
  1. package/README.md +8 -3
  2. package/package.json +5 -3
  3. package/rech.js +117 -12
  4. package/rech.ts +117 -12
  5. package/serve.js +4 -1
  6. package/serve.ts +4 -1
  7. package/vendor/playwright-cli/node_modules/playwright-core/README.md +3 -0
  8. package/vendor/playwright-cli/node_modules/playwright-core/ThirdPartyNotices.txt +13 -0
  9. package/vendor/playwright-cli/node_modules/playwright-core/bin/install_media_pack.ps1 +5 -0
  10. package/vendor/playwright-cli/node_modules/playwright-core/bin/install_webkit_wsl.ps1 +33 -0
  11. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  12. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  13. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  14. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  15. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  16. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  17. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  18. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  19. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  20. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  21. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  22. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  23. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  24. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  25. package/vendor/playwright-cli/node_modules/playwright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  26. package/vendor/playwright-cli/node_modules/playwright-core/browsers.json +81 -0
  27. package/vendor/playwright-cli/node_modules/playwright-core/cli.js +21 -0
  28. package/vendor/playwright-cli/node_modules/playwright-core/index.d.ts +17 -0
  29. package/vendor/playwright-cli/node_modules/playwright-core/index.js +32 -0
  30. package/vendor/playwright-cli/node_modules/playwright-core/index.mjs +28 -0
  31. package/vendor/playwright-cli/node_modules/playwright-core/lib/androidServerImpl.js +65 -0
  32. package/vendor/playwright-cli/node_modules/playwright-core/lib/bootstrap.js +77 -0
  33. package/vendor/playwright-cli/node_modules/playwright-core/lib/browserServerImpl.js +120 -0
  34. package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/driver.js +98 -0
  35. package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/program.js +597 -0
  36. package/vendor/playwright-cli/node_modules/playwright-core/lib/cli/programWithTestStub.js +74 -0
  37. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/android.js +361 -0
  38. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/api.js +137 -0
  39. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/artifact.js +79 -0
  40. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browser.js +169 -0
  41. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browserContext.js +583 -0
  42. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/browserType.js +153 -0
  43. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/cdpSession.js +55 -0
  44. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/channelOwner.js +194 -0
  45. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientHelper.js +64 -0
  46. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientInstrumentation.js +55 -0
  47. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clientStackTrace.js +69 -0
  48. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/clock.js +68 -0
  49. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/connect.js +143 -0
  50. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/connection.js +322 -0
  51. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/consoleMessage.js +61 -0
  52. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/coverage.js +44 -0
  53. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/debugger.js +57 -0
  54. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/dialog.js +56 -0
  55. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/disposable.js +76 -0
  56. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/download.js +62 -0
  57. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/electron.js +138 -0
  58. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/elementHandle.js +281 -0
  59. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/errors.js +77 -0
  60. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/eventEmitter.js +314 -0
  61. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/events.js +103 -0
  62. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fetch.js +367 -0
  63. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fileChooser.js +46 -0
  64. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/fileUtils.js +34 -0
  65. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/frame.js +404 -0
  66. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/harRouter.js +99 -0
  67. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/input.js +84 -0
  68. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/jsHandle.js +105 -0
  69. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/jsonPipe.js +39 -0
  70. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/localUtils.js +60 -0
  71. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/locator.js +367 -0
  72. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/network.js +750 -0
  73. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/page.js +729 -0
  74. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/platform.js +77 -0
  75. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/playwright.js +71 -0
  76. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/screencast.js +48 -0
  77. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/selectors.js +57 -0
  78. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/stream.js +39 -0
  79. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/timeoutSettings.js +79 -0
  80. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/tracing.js +126 -0
  81. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/types.js +28 -0
  82. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/video.js +68 -0
  83. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/waiter.js +142 -0
  84. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/webError.js +39 -0
  85. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/worker.js +85 -0
  86. package/vendor/playwright-cli/node_modules/playwright-core/lib/client/writableStream.js +39 -0
  87. package/vendor/playwright-cli/node_modules/playwright-core/lib/coreBundle.js +68170 -0
  88. package/vendor/playwright-cli/node_modules/playwright-core/lib/electron/loader.js +67 -0
  89. package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/cliDaemon.js +5 -0
  90. package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/dashboardApp.js +3 -0
  91. package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/mcp.js +10 -0
  92. package/vendor/playwright-cli/node_modules/playwright-core/lib/entry/oopBrowserDownload.js +3 -0
  93. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/bindingsControllerSource.js +28 -0
  94. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/clockSource.js +28 -0
  95. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/injectedScriptSource.js +28 -0
  96. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/pollingRecorderSource.js +28 -0
  97. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/storageScriptSource.js +28 -0
  98. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/utilityScriptSource.js +28 -0
  99. package/vendor/playwright-cli/node_modules/playwright-core/lib/generated/webSocketMockSource.js +336 -0
  100. package/vendor/playwright-cli/node_modules/playwright-core/lib/inProcessFactory.js +60 -0
  101. package/vendor/playwright-cli/node_modules/playwright-core/lib/inprocess.js +3 -0
  102. package/vendor/playwright-cli/node_modules/playwright-core/lib/mcpBundle.js +81 -0
  103. package/vendor/playwright-cli/node_modules/playwright-core/lib/mcpBundleImpl/index.js +91 -0
  104. package/vendor/playwright-cli/node_modules/playwright-core/lib/outofprocess.js +76 -0
  105. package/vendor/playwright-cli/node_modules/playwright-core/lib/package.js +50 -0
  106. package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/serializers.js +197 -0
  107. package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/validator.js +3034 -0
  108. package/vendor/playwright-cli/node_modules/playwright-core/lib/protocol/validatorPrimitives.js +193 -0
  109. package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightConnection.js +131 -0
  110. package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightPipeServer.js +100 -0
  111. package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightServer.js +339 -0
  112. package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/playwrightWebSocketServer.js +73 -0
  113. package/vendor/playwright-cli/node_modules/playwright-core/lib/remote/serverTransport.js +96 -0
  114. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/android/android.js +465 -0
  115. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/android/backendAdb.js +177 -0
  116. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/artifact.js +127 -0
  117. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiBrowser.js +571 -0
  118. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiChromium.js +162 -0
  119. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiConnection.js +213 -0
  120. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiDeserializer.js +116 -0
  121. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiExecutionContext.js +267 -0
  122. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiFirefox.js +128 -0
  123. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiInput.js +146 -0
  124. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiNetworkManager.js +411 -0
  125. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiOverCdp.js +102 -0
  126. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiPage.js +599 -0
  127. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/bidiPdf.js +106 -0
  128. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
  129. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiKeyboard.js +256 -0
  130. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocol.js +24 -0
  131. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolCore.js +180 -0
  132. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiProtocolPermissions.js +42 -0
  133. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/bidiSerializer.js +148 -0
  134. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/bidi/third_party/firefoxPrefs.js +261 -0
  135. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browser.js +223 -0
  136. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browserContext.js +703 -0
  137. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/browserType.js +338 -0
  138. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/callLog.js +82 -0
  139. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/appIcon.png +0 -0
  140. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/chromium.js +399 -0
  141. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/chromiumSwitches.js +104 -0
  142. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crBrowser.js +532 -0
  143. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crConnection.js +197 -0
  144. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crCoverage.js +235 -0
  145. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crDevTools.js +111 -0
  146. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crDragDrop.js +131 -0
  147. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crExecutionContext.js +146 -0
  148. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crInput.js +187 -0
  149. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crNetworkManager.js +708 -0
  150. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crPage.js +1004 -0
  151. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crPdf.js +121 -0
  152. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crProtocolHelper.js +145 -0
  153. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/crServiceWorker.js +137 -0
  154. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/defaultFontFamilies.js +162 -0
  155. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/chromium/protocol.d.js +16 -0
  156. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/clock.js +149 -0
  157. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/csharp.js +327 -0
  158. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/java.js +274 -0
  159. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/javascript.js +247 -0
  160. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/jsonl.js +52 -0
  161. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/language.js +132 -0
  162. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/languages.js +68 -0
  163. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/python.js +279 -0
  164. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/codegen/types.js +16 -0
  165. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/console.js +61 -0
  166. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/cookieStore.js +206 -0
  167. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/debugController.js +197 -0
  168. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/debugger.js +120 -0
  169. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/deviceDescriptors.js +39 -0
  170. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/deviceDescriptorsSource.json +1779 -0
  171. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dialog.js +116 -0
  172. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/androidDispatcher.js +325 -0
  173. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/artifactDispatcher.js +118 -0
  174. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserContextDispatcher.js +381 -0
  175. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserDispatcher.js +124 -0
  176. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/browserTypeDispatcher.js +71 -0
  177. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/cdpSessionDispatcher.js +47 -0
  178. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/debugControllerDispatcher.js +78 -0
  179. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/debuggerDispatcher.js +80 -0
  180. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/dialogDispatcher.js +47 -0
  181. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/dispatcher.js +364 -0
  182. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/disposableDispatcher.js +39 -0
  183. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/electronDispatcher.js +90 -0
  184. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/elementHandlerDispatcher.js +181 -0
  185. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/frameDispatcher.js +227 -0
  186. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/jsHandleDispatcher.js +85 -0
  187. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/jsonPipeDispatcher.js +58 -0
  188. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/localUtilsDispatcher.js +185 -0
  189. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/networkDispatchers.js +214 -0
  190. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/pageDispatcher.js +434 -0
  191. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/playwrightDispatcher.js +108 -0
  192. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/streamDispatcher.js +67 -0
  193. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/tracingDispatcher.js +68 -0
  194. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/webSocketRouteDispatcher.js +164 -0
  195. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dispatchers/writableStreamDispatcher.js +79 -0
  196. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/disposable.js +41 -0
  197. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/dom.js +823 -0
  198. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/download.js +71 -0
  199. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/electron/electron.js +272 -0
  200. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/electron/loader.js +115 -0
  201. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/errors.js +69 -0
  202. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fetch.js +621 -0
  203. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fileChooser.js +43 -0
  204. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/fileUploadUtils.js +84 -0
  205. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffBrowser.js +415 -0
  206. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffConnection.js +142 -0
  207. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffExecutionContext.js +150 -0
  208. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffInput.js +175 -0
  209. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffNetworkManager.js +256 -0
  210. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/ffPage.js +495 -0
  211. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/firefox.js +114 -0
  212. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/firefox/protocol.d.js +16 -0
  213. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/formData.js +147 -0
  214. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/frameSelectors.js +160 -0
  215. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/frames.js +1495 -0
  216. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/har/harRecorder.js +147 -0
  217. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/har/harTracer.js +608 -0
  218. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/harBackend.js +157 -0
  219. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/helper.js +96 -0
  220. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/index.js +58 -0
  221. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/input.js +277 -0
  222. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/instrumentation.js +72 -0
  223. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/javascript.js +291 -0
  224. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/launchApp.js +127 -0
  225. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/localUtils.js +214 -0
  226. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/macEditingCommands.js +143 -0
  227. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/network.js +668 -0
  228. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/page.js +884 -0
  229. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/pipeTransport.js +89 -0
  230. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/playwright.js +69 -0
  231. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/progress.js +136 -0
  232. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/protocolError.js +52 -0
  233. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/chat.js +161 -0
  234. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderApp.js +367 -0
  235. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +138 -0
  236. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderSignalProcessor.js +83 -0
  237. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/recorderUtils.js +157 -0
  238. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder/throttledFile.js +57 -0
  239. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/recorder.js +540 -0
  240. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/browserFetcher.js +177 -0
  241. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/dependencies.js +371 -0
  242. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/index.js +1395 -0
  243. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/nativeDeps.js +1281 -0
  244. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/registry/oopDownloadBrowserMain.js +127 -0
  245. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/screencast.js +216 -0
  246. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/screenshotter.js +333 -0
  247. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/selectors.js +112 -0
  248. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/socksClientCertificatesInterceptor.js +383 -0
  249. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/socksInterceptor.js +95 -0
  250. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/snapshotter.js +147 -0
  251. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/snapshotterInjected.js +561 -0
  252. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/recorder/tracing.js +607 -0
  253. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/trace/viewer/traceViewer.js +244 -0
  254. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/transport.js +181 -0
  255. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/types.js +28 -0
  256. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/usKeyboardLayout.js +152 -0
  257. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/ascii.js +44 -0
  258. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/comparators.js +139 -0
  259. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/crypto.js +216 -0
  260. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/debug.js +42 -0
  261. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/debugLogger.js +122 -0
  262. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/disposable.js +32 -0
  263. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/env.js +73 -0
  264. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/eventsHelper.js +41 -0
  265. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/expectUtils.js +123 -0
  266. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/fileUtils.js +191 -0
  267. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/happyEyeballs.js +207 -0
  268. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/hostPlatform.js +123 -0
  269. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/httpServer.js +205 -0
  270. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/colorUtils.js +89 -0
  271. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/compare.js +109 -0
  272. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/imageChannel.js +78 -0
  273. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/image_tools/stats.js +102 -0
  274. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/linuxUtils.js +71 -0
  275. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/network.js +244 -0
  276. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/nodePlatform.js +154 -0
  277. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/pipeTransport.js +84 -0
  278. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/processLauncher.js +243 -0
  279. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/profiler.js +65 -0
  280. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/socksProxy.js +511 -0
  281. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/spawnAsync.js +41 -0
  282. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/task.js +51 -0
  283. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/userAgent.js +98 -0
  284. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/wsServer.js +121 -0
  285. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/zipFile.js +74 -0
  286. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/utils/zones.js +57 -0
  287. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/videoRecorder.js +133 -0
  288. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/protocol.d.js +16 -0
  289. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/webkit.js +108 -0
  290. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkBrowser.js +331 -0
  291. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkConnection.js +144 -0
  292. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkExecutionContext.js +154 -0
  293. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkInput.js +181 -0
  294. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkInterceptableRequest.js +197 -0
  295. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkPage.js +1164 -0
  296. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkProvisionalPage.js +83 -0
  297. package/vendor/playwright-cli/node_modules/playwright-core/lib/server/webkit/wkWorkers.js +106 -0
  298. package/vendor/playwright-cli/node_modules/playwright-core/lib/serverRegistry.js +7343 -0
  299. package/vendor/playwright-cli/node_modules/playwright-core/lib/serverRegistry.js.LICENSE +354 -0
  300. package/vendor/playwright-cli/node_modules/playwright-core/lib/third_party/pixelmatch.js +255 -0
  301. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/browserBackend.js +79 -0
  302. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/common.js +63 -0
  303. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/config.js +41 -0
  304. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/console.js +66 -0
  305. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/context.js +290 -0
  306. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/cookies.js +152 -0
  307. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/devtools.js +69 -0
  308. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/dialogs.js +59 -0
  309. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/evaluate.js +64 -0
  310. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/files.js +60 -0
  311. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/form.js +64 -0
  312. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/keyboard.js +155 -0
  313. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/logFile.js +95 -0
  314. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/mouse.js +168 -0
  315. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/navigate.js +106 -0
  316. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/network.js +135 -0
  317. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/pdf.js +48 -0
  318. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/response.js +302 -0
  319. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/route.js +140 -0
  320. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/runCode.js +76 -0
  321. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/screenshot.js +88 -0
  322. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/sessionLog.js +74 -0
  323. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/snapshot.js +208 -0
  324. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/storage.js +67 -0
  325. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tab.js +445 -0
  326. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tabs.js +67 -0
  327. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tool.js +47 -0
  328. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tools.js +102 -0
  329. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/tracing.js +75 -0
  330. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/utils.js +83 -0
  331. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/verify.js +151 -0
  332. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/video.js +89 -0
  333. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/wait.js +63 -0
  334. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/backend/webstorage.js +223 -0
  335. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/channelSessions.js +141 -0
  336. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/cli.js +6 -0
  337. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/help.json +679 -0
  338. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/minimist.js +128 -0
  339. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/output.js +343 -0
  340. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/program.js +380 -0
  341. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/registry.js +176 -0
  342. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/session.js +265 -0
  343. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/SKILL.md +388 -0
  344. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
  345. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
  346. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
  347. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/running-code.md +241 -0
  348. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/session-management.md +225 -0
  349. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/spec-driven-testing.md +305 -0
  350. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/storage-state.md +275 -0
  351. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/test-generation.md +134 -0
  352. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/tracing.md +139 -0
  353. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-client/skill/references/video-recording.md +143 -0
  354. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/command.js +73 -0
  355. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/commands.js +933 -0
  356. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/daemon.js +178 -0
  357. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/helpGenerator.js +173 -0
  358. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/cli-daemon/program.js +118 -0
  359. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/appIcon.png +0 -0
  360. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/dashboardApp.js +286 -0
  361. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/dashboard/dashboardController.js +296 -0
  362. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/exports.js +60 -0
  363. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/browserFactory.js +233 -0
  364. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/cdpRelay.js +356 -0
  365. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/cli-stub.js +7 -0
  366. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/config.d.js +16 -0
  367. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/config.js +401 -0
  368. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/configIni.js +189 -0
  369. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/extensionContextFactory.js +59 -0
  370. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/index.js +62 -0
  371. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/log.js +35 -0
  372. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/program.js +107 -0
  373. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/protocol.js +28 -0
  374. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/mcp/watchdog.js +44 -0
  375. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/SKILL.md +171 -0
  376. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/installSkill.js +48 -0
  377. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceActions.js +142 -0
  378. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceAttachments.js +69 -0
  379. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceCli.js +80 -0
  380. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceConsole.js +97 -0
  381. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceErrors.js +55 -0
  382. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceOpen.js +69 -0
  383. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceParser.js +96 -0
  384. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceRequests.js +158 -0
  385. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceScreenshot.js +68 -0
  386. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceSnapshot.js +149 -0
  387. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/trace/traceUtils.js +135 -0
  388. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/connect.js +32 -0
  389. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/extension.js +78 -0
  390. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/http.js +152 -0
  391. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/server.js +230 -0
  392. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/mcp/tool.js +47 -0
  393. package/vendor/playwright-cli/node_modules/playwright-core/lib/tools/utils/socketConnection.js +108 -0
  394. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/ariaSnapshot.js +455 -0
  395. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/assert.js +31 -0
  396. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/colors.js +72 -0
  397. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/cssParser.js +245 -0
  398. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/cssTokenizer.js +1051 -0
  399. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/formatUtils.js +64 -0
  400. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/headers.js +53 -0
  401. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/imageUtils.js +141 -0
  402. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorGenerators.js +689 -0
  403. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorParser.js +176 -0
  404. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/locatorUtils.js +81 -0
  405. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/lruCache.js +51 -0
  406. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/manualPromise.js +114 -0
  407. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/mimeType.js +464 -0
  408. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/multimap.js +80 -0
  409. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/protocolFormatter.js +81 -0
  410. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/protocolMetainfo.js +342 -0
  411. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/rtti.js +43 -0
  412. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/selectorParser.js +386 -0
  413. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/semaphore.js +54 -0
  414. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/stackTrace.js +158 -0
  415. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/stringUtils.js +204 -0
  416. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/time.js +49 -0
  417. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/timeoutRunner.js +66 -0
  418. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/entries.js +16 -0
  419. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotRenderer.js +502 -0
  420. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotServer.js +120 -0
  421. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/snapshotStorage.js +89 -0
  422. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceLoader.js +131 -0
  423. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModel.js +366 -0
  424. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceModernizer.js +401 -0
  425. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/traceUtils.js +58 -0
  426. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV3.js +16 -0
  427. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV4.js +16 -0
  428. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV5.js +16 -0
  429. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV6.js +16 -0
  430. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV7.js +16 -0
  431. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/trace/versions/traceV8.js +16 -0
  432. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/types.js +16 -0
  433. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/urlMatch.js +243 -0
  434. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/utilityScriptSerializers.js +262 -0
  435. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils/isomorphic/yaml.js +84 -0
  436. package/vendor/playwright-cli/node_modules/playwright-core/lib/utils.js +113 -0
  437. package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundle.js +86478 -0
  438. package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +2058 -0
  439. package/vendor/playwright-cli/node_modules/playwright-core/lib/utilsBundleImpl/index.js +218 -0
  440. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  441. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  442. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  443. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  444. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/index-BY2S1tHT.css +1 -0
  445. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/index-DpEq2p62.js +52 -0
  446. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  447. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/index.html +29 -0
  448. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
  449. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/index.html +16 -0
  450. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/report.css +1 -0
  451. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/htmlReport/report.js +72 -0
  452. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-BHYmBp6h.js +32 -0
  453. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codeMirrorModule-DYBRYzYX.css +1 -0
  454. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  455. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/index-4ZiSSCmn.css +1 -0
  456. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/assets/index-DA10QRaq.js +193 -0
  457. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/index.html +29 -0
  458. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  459. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BRrOnXSS.js +32 -0
  460. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-BtGnd8kr.js +32 -0
  461. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/codeMirrorModule-CnvO0fko.js +32 -0
  462. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-BkMbME_o.js +262 -0
  463. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-BoN8TZYy.js +262 -0
  464. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-CN3cwLGD.js +262 -0
  465. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/urlMatch-BYQrIQwR.js +1 -0
  466. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/assets/xtermModule-CsJ4vdCR.js +9 -0
  467. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/codeMirrorModule.DYBRYzYX.css +1 -0
  468. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  469. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
  470. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.BDKsFU3c.css +1 -0
  471. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/defaultSettingsView.DcQiWcKS.css +1 -0
  472. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.B2ffe31o.js +2 -0
  473. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
  474. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.Df3uWWXm.js +2 -0
  475. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.PqVYgODr.js +2 -0
  476. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/index.html +44 -0
  477. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  478. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  479. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/snapshot.html +10 -0
  480. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/snapshot.v8KI4P3m.js +2 -0
  481. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +5 -0
  482. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.B-IwVgWY.js +6 -0
  483. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.BZQ54Kgt.css +1 -0
  484. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.Btcz36p_.css +1 -0
  485. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.CmAqMvmy.js +6 -0
  486. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +18 -0
  487. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/uiMode.u9Eas4CP.js +6 -0
  488. package/vendor/playwright-cli/node_modules/playwright-core/lib/vite/traceViewer/xtermModule.DYP7pi_n.css +32 -0
  489. package/vendor/playwright-cli/node_modules/playwright-core/lib/xdg-open +1066 -0
  490. package/vendor/playwright-cli/node_modules/playwright-core/lib/zipBundle.js +34 -0
  491. package/vendor/playwright-cli/node_modules/playwright-core/lib/zipBundleImpl.js +5 -0
  492. package/vendor/playwright-cli/node_modules/playwright-core/package.json +34 -0
  493. package/vendor/playwright-cli/node_modules/playwright-core/types/protocol.d.ts +24565 -0
  494. package/vendor/playwright-cli/node_modules/playwright-core/types/structs.d.ts +45 -0
  495. package/vendor/playwright-cli/node_modules/playwright-core/types/types.d.ts +23879 -0
  496. package/vendor/playwright-cli/package.json +6 -0
  497. package/vendor/playwright-cli/playwright-cli.js +50 -0
package/README.md CHANGED
@@ -16,9 +16,14 @@ Built on top of [playwright-multi-tab](https://github.com/snomiao/playwright-mul
16
16
  ## Prerequisites
17
17
 
18
18
  - [Bun](https://bun.sh/) ≥ 1.0
19
- - [playwright-cli](https://www.npmjs.com/package/playwright-cli) (works out of the box)
20
19
 
21
- > **💡 Recommended:** For full multi-tab and multi-session support, install [playwright-multi-tab](https://github.com/snomiao/playwright-multi-tab) and set `PLAYWRIGHT_CLI=playwright-cli-multi-tab` in your `.env.local`.
20
+ The patched multi-tab playwright CLI that drives Chrome (with multi-tab, multi-session, and
21
+ per-profile `PLAYWRIGHT_MCP_PROFILE_DIRECTORY` support) is **bundled inside the package** — no
22
+ separate install, no `playwright` browser-binary download. `bun i -g rechrome` is enough for
23
+ `rechrome setup` to work out of the box.
24
+
25
+ > **Advanced:** override the bundled CLI with `PLAYWRIGHT_CLI=<cmd>` in your `.env.local` (e.g. to
26
+ > point at a local checkout of the [playwright-cli fork](https://github.com/snomiao/playwright-cli)).
22
27
 
23
28
  ## Install
24
29
 
@@ -113,7 +118,7 @@ cp .env.example .env.local
113
118
  | Variable | Description | Default |
114
119
  | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
115
120
  | `RECHROME_URL` | Connection URL (auto-generated by `rech serve`). Also accepts `?extension_id=`, `?token=`, `?profile=` query params | — |
116
- | `PLAYWRIGHT_CLI` | Path to playwright-cli binary (recommended: `playwright-cli-multi-tab` for full multi-tab support) | `playwright-cli` |
121
+ | `PLAYWRIGHT_CLI` | Override the playwright-cli command/path (defaults to the bundled `@playwright/cli`; set this only for a custom or forked CLI) | bundled `@playwright/cli` |
117
122
  | `RECH_HOST` | Server bind address | `127.0.0.1` |
118
123
  | `PLAYWRIGHT_MCP_EXTENSION_ID` | Chrome extension ID (client overrides server) | — |
119
124
  | `PLAYWRIGHT_MCP_EXTENSION_TOKEN` | Chrome extension token — profile-specific, get it from the extension's status page (client overrides server) | — |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rechrome",
3
- "version": "1.18.1",
3
+ "version": "1.20.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/snomiao/rechrome.git"
@@ -17,13 +17,15 @@
17
17
  "rech.js",
18
18
  "rech.ts",
19
19
  "serve.js",
20
- "serve.ts"
20
+ "serve.ts",
21
+ "vendor"
21
22
  ],
22
23
  "type": "module",
23
24
  "scripts": {
24
25
  "serve": "bun run rech.ts serve",
25
26
  "test": "bun test",
26
- "prepublishOnly": "sed 's/\\.ts/\\.js/g' rech.ts > rech.js && sed 's/\\.ts/\\.js/g' serve.ts > serve.js"
27
+ "vendor-cli": "bash scripts/vendor-cli.sh",
28
+ "prepublishOnly": "bash scripts/vendor-cli.sh && sed 's/\\.ts/\\.js/g' rech.ts > rech.js && sed 's/\\.ts/\\.js/g' serve.ts > serve.js"
27
29
  },
28
30
  "devDependencies": {
29
31
  "@types/bun": "latest"
package/rech.js CHANGED
@@ -5,6 +5,7 @@ import { randomBytes } from "crypto";
5
5
  import { mkdirSync, appendFileSync, existsSync, realpathSync, accessSync, cpSync, unlinkSync, readFileSync, readdirSync, constants as fsConstants } from "fs";
6
6
  import { hostname, homedir } from "os";
7
7
  import { join, basename, dirname } from "path";
8
+ import { spawn as cpSpawn } from "child_process";
8
9
 
9
10
  export const ENV_KEY = "RECHROME_URL";
10
11
  export const DEFAULT_PORT = 13775;
@@ -602,6 +603,27 @@ async function pmList(): Promise<string> {
602
603
  return await new Response(proc.stdout).text();
603
604
  }
604
605
 
606
+ // Resolve which playwright-cli the daemon runs to drive Chrome. Priority:
607
+ // 1. PLAYWRIGHT_CLI env override — explicit, already a full command string.
608
+ // 2. Vendored fork in a git checkout (lib/playwright-cli/playwright-cli.js) — the patched
609
+ // multi-tab CLI + patched playwright-core (PLAYWRIGHT_MCP_PROFILE_DIRECTORY etc.).
610
+ // 3. The fork bundled into the npm tarball (vendor/playwright-cli/playwright-cli.js, produced by
611
+ // scripts/vendor-cli.sh at prepublish). This is the batteries-included default for
612
+ // `bun i -g rechrome`: self-contained, no @playwright/cli dep, no browser-binary download.
613
+ // 4. Bare `playwright-cli-multi-tab` on PATH — legacy fallback for a pre-existing global link.
614
+ // A resolved .js entry is run through `node` on Windows (which can't exec a .js by shebang) and
615
+ // bare on POSIX (its `#!/usr/bin/env node` shebang runs it under node, which the relay handshake
616
+ // needs — see daemonInstall). serve splits the result on spaces into argv.
617
+ export function resolvePlaywrightCli(): string {
618
+ if (process.env.PLAYWRIGHT_CLI) return process.env.PLAYWRIGHT_CLI;
619
+ const jsEntry = [
620
+ join(import.meta.dir, "lib/playwright-cli/playwright-cli.js"),
621
+ join(import.meta.dir, "vendor/playwright-cli/playwright-cli.js"),
622
+ ].find(existsSync);
623
+ if (jsEntry) return IS_WINDOWS ? `node ${jsEntry}` : jsEntry;
624
+ return "playwright-cli-multi-tab";
625
+ }
626
+
605
627
  export async function daemonInstall(serveUrl: string): Promise<void> {
606
628
  // Persist the URL to ~/.env.local before starting the daemon. The daemon's
607
629
  // loadEnv() walks CWD→root reading .env.local files and unconditionally
@@ -618,20 +640,14 @@ export async function daemonInstall(serveUrl: string): Promise<void> {
618
640
  const bunBin = Bun.which("bun") ?? process.execPath;
619
641
  const rechScript = import.meta.filename;
620
642
 
621
- // Resolve PLAYWRIGHT_CLI: env override > bundled fork (development checkout) > "playwright-cli-multi-tab".
622
- // The fork is a .js script: POSIX execs it via its shebang (`#!/usr/bin/env node`), but Windows
623
- // can't exec a .js directly, so it must be invoked through an interpreter. It MUST be node, not
624
- // bun: the cliDaemon inherits its parent's runtime (spawned via process.execPath), and the
643
+ // Resolve PLAYWRIGHT_CLI (see resolvePlaywrightCli). The resolved .js entry MUST run under node,
644
+ // not bun: the cliDaemon inherits its parent's runtime (spawned via process.execPath), and the
625
645
  // extension-bridge relay's WebSocket handshake hangs under Bun (the extension WS connects but
626
646
  // `extension.initialized` never completes) — under node it completes, matching the POSIX shebang.
627
- // serve splits PLAYWRIGHT_CLI on spaces into argv, so we use bare `node` (the node path lives
628
- // under "Program Files" and contains a space); node must be on the daemon's PATH, same as the
629
- // shebang's `env node` assumption. The repo path contains no spaces.
630
- const bundledForkCli = join(import.meta.dir, "lib/playwright-cli/playwright-cli.js");
631
- const resolvedPlaywrightCli = process.env.PLAYWRIGHT_CLI
632
- || (existsSync(bundledForkCli)
633
- ? (IS_WINDOWS ? `node ${bundledForkCli}` : bundledForkCli)
634
- : "playwright-cli-multi-tab");
647
+ // serve splits PLAYWRIGHT_CLI on spaces into argv, so on Windows we use bare `node` (the node
648
+ // path lives under "Program Files" and contains a space); node must be on the daemon's PATH, same
649
+ // as the shebang's `env node` assumption. The repo / install paths contain no spaces.
650
+ const resolvedPlaywrightCli = resolvePlaywrightCli();
635
651
 
636
652
  // Environment the managed `serve` process must run with.
637
653
  const daemonEnv: Record<string, string> = {
@@ -685,6 +701,87 @@ async function daemonUninstall(): Promise<void> {
685
701
  console.log(`Removed ${PM_BIN} process: ${PM_PROCESS_NAME}`);
686
702
  }
687
703
 
704
+ // ── Native tray (menu-bar / system-tray) icon ───────────────────────────────
705
+ // The tray is a small native binary (tray/, Rust). `rech` just supervises it:
706
+ // locate the binary and launch it detached (singleton via a pidfile).
707
+ // `rech tray hide` / the menu "Hide" item both kill the process;
708
+ // `rech tray show` starts a fresh one.
709
+ const TRAY_PID_FILE = join(RECH_HOME_DIR, "tray.pid");
710
+
711
+ // A desktop GUI must be present. Linux needs an X11/Wayland display; a headless
712
+ // box (SSH, CI, container) has neither, so the tray is skipped. macOS/Windows
713
+ // desktop sessions effectively always have one (the binary bypasses if not).
714
+ function trayGuiAvailable(): boolean {
715
+ if (process.platform === "linux")
716
+ return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
717
+ return true;
718
+ }
719
+
720
+ // Resolve the tray binary: explicit override, then the copy shipped beside
721
+ // `rech` (packaged installs), then the dev cargo build, then PATH.
722
+ function findTrayBinary(): string | undefined {
723
+ const ext = IS_WINDOWS ? ".exe" : "";
724
+ const candidates = [
725
+ process.env.RECH_TRAY_BIN,
726
+ join(import.meta.dir, "tray", `rechrome-tray${ext}`),
727
+ join(import.meta.dir, "tray", "target", "release", `rechrome-tray${ext}`),
728
+ join(import.meta.dir, "tray", "target", "debug", `rechrome-tray${ext}`),
729
+ ].filter(Boolean) as string[];
730
+ for (const c of candidates) if (existsSync(c)) return c;
731
+ return Bun.which(`rechrome-tray${ext}`) ?? undefined;
732
+ }
733
+
734
+ function isTrayRunning(): boolean {
735
+ try {
736
+ const pid = parseInt(readFileSync(TRAY_PID_FILE, "utf8"), 10);
737
+ if (!Number.isFinite(pid)) return false;
738
+ process.kill(pid, 0); // signal 0 = liveness probe, doesn't actually signal
739
+ return true;
740
+ } catch {
741
+ return false;
742
+ }
743
+ }
744
+
745
+ // Start (and "show") the tray. quiet=true is used by `rech setup` auto-start so
746
+ // a missing binary / headless box stays silent rather than noisy.
747
+ async function startTray({ quiet = false }: { quiet?: boolean } = {}): Promise<void> {
748
+ if (!trayGuiAvailable()) {
749
+ if (!quiet) console.log("tray: no desktop GUI session detected — skipped.");
750
+ return;
751
+ }
752
+ if (isTrayRunning()) {
753
+ if (!quiet) console.log("tray: already running.");
754
+ return;
755
+ }
756
+ const bin = findTrayBinary();
757
+ if (!bin) {
758
+ if (!quiet)
759
+ console.error("tray: binary not found. Build it with: (cd tray && cargo build --release)");
760
+ return;
761
+ }
762
+ const child = cpSpawn(bin, [], { detached: true, stdio: "ignore" });
763
+ child.unref(); // outlive this CLI invocation
764
+ if (child.pid) await Bun.write(TRAY_PID_FILE, String(child.pid));
765
+ if (!quiet) console.log(`tray: started (pid ${child.pid}).`);
766
+ }
767
+
768
+ function stopTray(): void {
769
+ if (!isTrayRunning()) { console.log("tray: not running."); return; }
770
+ try { process.kill(parseInt(readFileSync(TRAY_PID_FILE, "utf8"), 10)); } catch {}
771
+ try { unlinkSync(TRAY_PID_FILE); } catch {}
772
+ console.log("tray: stopped. Run `rech tray show` to restore.");
773
+ }
774
+
775
+ async function trayCommand(sub?: string): Promise<void> {
776
+ switch (sub) {
777
+ case "hide": case "stop": case "quit": stopTray(); break;
778
+ case undefined: case "": case "show": case "start": await startTray(); break;
779
+ default:
780
+ console.error(`Unknown tray command: "${sub}". Usage: rech tray [show|hide|stop]`);
781
+ process.exit(1);
782
+ }
783
+ }
784
+
688
785
  // Read the extension's auth token straight from a profile's localStorage LevelDB. Read-only
689
786
  // (we never take LevelDB's lock), so it's safe while the user's Chrome is running. The token is
690
787
  // the value of the `auth-token` key under the extension origin, stored as a 0x01 (Latin-1)
@@ -1292,6 +1389,9 @@ Usage:
1292
1389
  --load-extension, so this is a clean browser, not your
1293
1390
  real Chrome. For your real Chrome, use \`rech setup\`
1294
1391
  rech status Show current configuration and serve health
1392
+ rech tray [show|hide|stop] Native menu-bar/tray icon for the serve daemon
1393
+ (show=start, hide/show toggle, stop=quit). Auto-
1394
+ starts after \`rech setup\`; skipped with no GUI
1295
1395
  rech uninstall Remove the serve daemon and clear config
1296
1396
  rech serve Start the serve server manually (foreground)
1297
1397
  rech profiles List Chrome profiles
@@ -1333,6 +1433,11 @@ if (import.meta.main) {
1333
1433
  : args.find(a => a.startsWith("--token="))?.slice("--token=".length))
1334
1434
  ?? process.env.RECH_TOKEN;
1335
1435
  await setup({ profile, token }); // setup closes envWatcher itself before printing Done
1436
+ // Auto-start the tray (best-effort, silent on headless / missing binary).
1437
+ await startTray({ quiet: true }).catch(() => {});
1438
+ } else if (cmd === "tray") {
1439
+ await trayCommand(args[1]?.toLowerCase());
1440
+ envWatcher?.close();
1336
1441
  } else if (cmd === "provision-profile") {
1337
1442
  const name = args.find((a, i) => i > 0 && !a.startsWith("-"));
1338
1443
  const headed = args.includes("--headed");
package/rech.ts CHANGED
@@ -5,6 +5,7 @@ import { randomBytes } from "crypto";
5
5
  import { mkdirSync, appendFileSync, existsSync, realpathSync, accessSync, cpSync, unlinkSync, readFileSync, readdirSync, constants as fsConstants } from "fs";
6
6
  import { hostname, homedir } from "os";
7
7
  import { join, basename, dirname } from "path";
8
+ import { spawn as cpSpawn } from "child_process";
8
9
 
9
10
  export const ENV_KEY = "RECHROME_URL";
10
11
  export const DEFAULT_PORT = 13775;
@@ -602,6 +603,27 @@ async function pmList(): Promise<string> {
602
603
  return await new Response(proc.stdout).text();
603
604
  }
604
605
 
606
+ // Resolve which playwright-cli the daemon runs to drive Chrome. Priority:
607
+ // 1. PLAYWRIGHT_CLI env override — explicit, already a full command string.
608
+ // 2. Vendored fork in a git checkout (lib/playwright-cli/playwright-cli.js) — the patched
609
+ // multi-tab CLI + patched playwright-core (PLAYWRIGHT_MCP_PROFILE_DIRECTORY etc.).
610
+ // 3. The fork bundled into the npm tarball (vendor/playwright-cli/playwright-cli.js, produced by
611
+ // scripts/vendor-cli.sh at prepublish). This is the batteries-included default for
612
+ // `bun i -g rechrome`: self-contained, no @playwright/cli dep, no browser-binary download.
613
+ // 4. Bare `playwright-cli-multi-tab` on PATH — legacy fallback for a pre-existing global link.
614
+ // A resolved .js entry is run through `node` on Windows (which can't exec a .js by shebang) and
615
+ // bare on POSIX (its `#!/usr/bin/env node` shebang runs it under node, which the relay handshake
616
+ // needs — see daemonInstall). serve splits the result on spaces into argv.
617
+ export function resolvePlaywrightCli(): string {
618
+ if (process.env.PLAYWRIGHT_CLI) return process.env.PLAYWRIGHT_CLI;
619
+ const jsEntry = [
620
+ join(import.meta.dir, "lib/playwright-cli/playwright-cli.js"),
621
+ join(import.meta.dir, "vendor/playwright-cli/playwright-cli.js"),
622
+ ].find(existsSync);
623
+ if (jsEntry) return IS_WINDOWS ? `node ${jsEntry}` : jsEntry;
624
+ return "playwright-cli-multi-tab";
625
+ }
626
+
605
627
  export async function daemonInstall(serveUrl: string): Promise<void> {
606
628
  // Persist the URL to ~/.env.local before starting the daemon. The daemon's
607
629
  // loadEnv() walks CWD→root reading .env.local files and unconditionally
@@ -618,20 +640,14 @@ export async function daemonInstall(serveUrl: string): Promise<void> {
618
640
  const bunBin = Bun.which("bun") ?? process.execPath;
619
641
  const rechScript = import.meta.filename;
620
642
 
621
- // Resolve PLAYWRIGHT_CLI: env override > bundled fork (development checkout) > "playwright-cli-multi-tab".
622
- // The fork is a .js script: POSIX execs it via its shebang (`#!/usr/bin/env node`), but Windows
623
- // can't exec a .js directly, so it must be invoked through an interpreter. It MUST be node, not
624
- // bun: the cliDaemon inherits its parent's runtime (spawned via process.execPath), and the
643
+ // Resolve PLAYWRIGHT_CLI (see resolvePlaywrightCli). The resolved .js entry MUST run under node,
644
+ // not bun: the cliDaemon inherits its parent's runtime (spawned via process.execPath), and the
625
645
  // extension-bridge relay's WebSocket handshake hangs under Bun (the extension WS connects but
626
646
  // `extension.initialized` never completes) — under node it completes, matching the POSIX shebang.
627
- // serve splits PLAYWRIGHT_CLI on spaces into argv, so we use bare `node` (the node path lives
628
- // under "Program Files" and contains a space); node must be on the daemon's PATH, same as the
629
- // shebang's `env node` assumption. The repo path contains no spaces.
630
- const bundledForkCli = join(import.meta.dir, "lib/playwright-cli/playwright-cli.js");
631
- const resolvedPlaywrightCli = process.env.PLAYWRIGHT_CLI
632
- || (existsSync(bundledForkCli)
633
- ? (IS_WINDOWS ? `node ${bundledForkCli}` : bundledForkCli)
634
- : "playwright-cli-multi-tab");
647
+ // serve splits PLAYWRIGHT_CLI on spaces into argv, so on Windows we use bare `node` (the node
648
+ // path lives under "Program Files" and contains a space); node must be on the daemon's PATH, same
649
+ // as the shebang's `env node` assumption. The repo / install paths contain no spaces.
650
+ const resolvedPlaywrightCli = resolvePlaywrightCli();
635
651
 
636
652
  // Environment the managed `serve` process must run with.
637
653
  const daemonEnv: Record<string, string> = {
@@ -685,6 +701,87 @@ async function daemonUninstall(): Promise<void> {
685
701
  console.log(`Removed ${PM_BIN} process: ${PM_PROCESS_NAME}`);
686
702
  }
687
703
 
704
+ // ── Native tray (menu-bar / system-tray) icon ───────────────────────────────
705
+ // The tray is a small native binary (tray/, Rust). `rech` just supervises it:
706
+ // locate the binary and launch it detached (singleton via a pidfile).
707
+ // `rech tray hide` / the menu "Hide" item both kill the process;
708
+ // `rech tray show` starts a fresh one.
709
+ const TRAY_PID_FILE = join(RECH_HOME_DIR, "tray.pid");
710
+
711
+ // A desktop GUI must be present. Linux needs an X11/Wayland display; a headless
712
+ // box (SSH, CI, container) has neither, so the tray is skipped. macOS/Windows
713
+ // desktop sessions effectively always have one (the binary bypasses if not).
714
+ function trayGuiAvailable(): boolean {
715
+ if (process.platform === "linux")
716
+ return !!(process.env.DISPLAY || process.env.WAYLAND_DISPLAY);
717
+ return true;
718
+ }
719
+
720
+ // Resolve the tray binary: explicit override, then the copy shipped beside
721
+ // `rech` (packaged installs), then the dev cargo build, then PATH.
722
+ function findTrayBinary(): string | undefined {
723
+ const ext = IS_WINDOWS ? ".exe" : "";
724
+ const candidates = [
725
+ process.env.RECH_TRAY_BIN,
726
+ join(import.meta.dir, "tray", `rechrome-tray${ext}`),
727
+ join(import.meta.dir, "tray", "target", "release", `rechrome-tray${ext}`),
728
+ join(import.meta.dir, "tray", "target", "debug", `rechrome-tray${ext}`),
729
+ ].filter(Boolean) as string[];
730
+ for (const c of candidates) if (existsSync(c)) return c;
731
+ return Bun.which(`rechrome-tray${ext}`) ?? undefined;
732
+ }
733
+
734
+ function isTrayRunning(): boolean {
735
+ try {
736
+ const pid = parseInt(readFileSync(TRAY_PID_FILE, "utf8"), 10);
737
+ if (!Number.isFinite(pid)) return false;
738
+ process.kill(pid, 0); // signal 0 = liveness probe, doesn't actually signal
739
+ return true;
740
+ } catch {
741
+ return false;
742
+ }
743
+ }
744
+
745
+ // Start (and "show") the tray. quiet=true is used by `rech setup` auto-start so
746
+ // a missing binary / headless box stays silent rather than noisy.
747
+ async function startTray({ quiet = false }: { quiet?: boolean } = {}): Promise<void> {
748
+ if (!trayGuiAvailable()) {
749
+ if (!quiet) console.log("tray: no desktop GUI session detected — skipped.");
750
+ return;
751
+ }
752
+ if (isTrayRunning()) {
753
+ if (!quiet) console.log("tray: already running.");
754
+ return;
755
+ }
756
+ const bin = findTrayBinary();
757
+ if (!bin) {
758
+ if (!quiet)
759
+ console.error("tray: binary not found. Build it with: (cd tray && cargo build --release)");
760
+ return;
761
+ }
762
+ const child = cpSpawn(bin, [], { detached: true, stdio: "ignore" });
763
+ child.unref(); // outlive this CLI invocation
764
+ if (child.pid) await Bun.write(TRAY_PID_FILE, String(child.pid));
765
+ if (!quiet) console.log(`tray: started (pid ${child.pid}).`);
766
+ }
767
+
768
+ function stopTray(): void {
769
+ if (!isTrayRunning()) { console.log("tray: not running."); return; }
770
+ try { process.kill(parseInt(readFileSync(TRAY_PID_FILE, "utf8"), 10)); } catch {}
771
+ try { unlinkSync(TRAY_PID_FILE); } catch {}
772
+ console.log("tray: stopped. Run `rech tray show` to restore.");
773
+ }
774
+
775
+ async function trayCommand(sub?: string): Promise<void> {
776
+ switch (sub) {
777
+ case "hide": case "stop": case "quit": stopTray(); break;
778
+ case undefined: case "": case "show": case "start": await startTray(); break;
779
+ default:
780
+ console.error(`Unknown tray command: "${sub}". Usage: rech tray [show|hide|stop]`);
781
+ process.exit(1);
782
+ }
783
+ }
784
+
688
785
  // Read the extension's auth token straight from a profile's localStorage LevelDB. Read-only
689
786
  // (we never take LevelDB's lock), so it's safe while the user's Chrome is running. The token is
690
787
  // the value of the `auth-token` key under the extension origin, stored as a 0x01 (Latin-1)
@@ -1292,6 +1389,9 @@ Usage:
1292
1389
  --load-extension, so this is a clean browser, not your
1293
1390
  real Chrome. For your real Chrome, use \`rech setup\`
1294
1391
  rech status Show current configuration and serve health
1392
+ rech tray [show|hide|stop] Native menu-bar/tray icon for the serve daemon
1393
+ (show=start, hide/show toggle, stop=quit). Auto-
1394
+ starts after \`rech setup\`; skipped with no GUI
1295
1395
  rech uninstall Remove the serve daemon and clear config
1296
1396
  rech serve Start the serve server manually (foreground)
1297
1397
  rech profiles List Chrome profiles
@@ -1333,6 +1433,11 @@ if (import.meta.main) {
1333
1433
  : args.find(a => a.startsWith("--token="))?.slice("--token=".length))
1334
1434
  ?? process.env.RECH_TOKEN;
1335
1435
  await setup({ profile, token }); // setup closes envWatcher itself before printing Done
1436
+ // Auto-start the tray (best-effort, silent on headless / missing binary).
1437
+ await startTray({ quiet: true }).catch(() => {});
1438
+ } else if (cmd === "tray") {
1439
+ await trayCommand(args[1]?.toLowerCase());
1440
+ envWatcher?.close();
1336
1441
  } else if (cmd === "provision-profile") {
1337
1442
  const name = args.find((a, i) => i > 0 && !a.startsWith("-"));
1338
1443
  const headed = args.includes("--headed");
package/serve.js CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  RECH_DIR,
11
11
  HOME,
12
12
  PASSTHROUGH_ENV_KEYS,
13
+ resolvePlaywrightCli,
13
14
  } from "./rech.js";
14
15
 
15
16
  const TAILSCALE_BIN = process.env.TAILSCALE_BIN || "/Applications/Tailscale.app/Contents/MacOS/Tailscale";
@@ -233,7 +234,9 @@ export async function serve() {
233
234
  });
234
235
  const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
235
236
 
236
- const [bin, ...binArgs] = splitCommand(process.env.PLAYWRIGHT_CLI || "playwright-cli-multi-tab");
237
+ // daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
238
+ // fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
239
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
237
240
 
238
241
  if (filteredArgs.length === 0) {
239
242
  filteredArgs.push("--help");
package/serve.ts CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  RECH_DIR,
11
11
  HOME,
12
12
  PASSTHROUGH_ENV_KEYS,
13
+ resolvePlaywrightCli,
13
14
  } from "./rech.ts";
14
15
 
15
16
  const TAILSCALE_BIN = process.env.TAILSCALE_BIN || "/Applications/Tailscale.app/Contents/MacOS/Tailscale";
@@ -233,7 +234,9 @@ export async function serve() {
233
234
  });
234
235
  const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
235
236
 
236
- const [bin, ...binArgs] = splitCommand(process.env.PLAYWRIGHT_CLI || "playwright-cli-multi-tab");
237
+ // daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
238
+ // fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
239
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
237
240
 
238
241
  if (filteredArgs.length === 0) {
239
242
  filteredArgs.push("--help");
@@ -0,0 +1,3 @@
1
+ # playwright-core
2
+
3
+ This package contains the no-browser flavor of [Playwright](http://github.com/microsoft/playwright).
@@ -0,0 +1,13 @@
1
+ microsoft/playwright-core
2
+
3
+ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
4
+
5
+ This package bundles third-party software inside individual files under
6
+ `lib/`. Each bundled output has a sidecar `<bundle>.js.LICENSE` file next
7
+ to it listing every npm package whose source was inlined into that
8
+ bundle, together with the full license text for each.
9
+
10
+ For example:
11
+ - lib/utilsBundle.js.LICENSE
12
+
13
+ This project incorporates components from the projects listed below. The original copyright notices and the licenses under which Microsoft received such components are set forth below. Microsoft reserves all rights not expressly granted herein, whether by implication, estoppel or otherwise.
@@ -0,0 +1,5 @@
1
+ $osInfo = Get-WmiObject -Class Win32_OperatingSystem
2
+ # check if running on Windows Server
3
+ if ($osInfo.ProductType -eq 3) {
4
+ Install-WindowsFeature Server-Media-Foundation
5
+ }
@@ -0,0 +1,33 @@
1
+ $ErrorActionPreference = 'Stop'
2
+
3
+ # This script sets up a WSL distribution that will be used to run WebKit.
4
+
5
+ $Distribution = "playwright"
6
+ $Username = "pwuser"
7
+
8
+ $distributions = (wsl --list --quiet) -split "\r?\n"
9
+ if ($distributions -contains $Distribution) {
10
+ Write-Host "WSL distribution '$Distribution' already exists. Skipping installation."
11
+ } else {
12
+ Write-Host "Installing new WSL distribution '$Distribution'..."
13
+ $VhdSize = "10GB"
14
+ wsl --install -d Ubuntu-24.04 --name $Distribution --no-launch --vhd-size $VhdSize
15
+ wsl -d $Distribution -u root adduser --gecos GECOS --disabled-password $Username
16
+ }
17
+
18
+ $pwshDirname = (Resolve-Path -Path $PSScriptRoot).Path;
19
+ $playwrightCoreRoot = Resolve-Path (Join-Path $pwshDirname "..")
20
+
21
+ $initScript = @"
22
+ if [ ! -f "/home/$Username/node/bin/node" ]; then
23
+ mkdir -p /home/$Username/node
24
+ curl -fsSL https://nodejs.org/dist/v22.17.0/node-v22.17.0-linux-x64.tar.xz -o /home/$Username/node/node-v22.17.0-linux-x64.tar.xz
25
+ tar -xJf /home/$Username/node/node-v22.17.0-linux-x64.tar.xz -C /home/$Username/node --strip-components=1
26
+ sudo -u $Username echo 'export PATH=/home/$Username/node/bin:\`$PATH' >> /home/$Username/.profile
27
+ fi
28
+ /home/$Username/node/bin/node cli.js install-deps webkit
29
+ sudo -u $Username PLAYWRIGHT_SKIP_BROWSER_GC=1 /home/$Username/node/bin/node cli.js install webkit
30
+ "@ -replace "\r\n", "`n"
31
+
32
+ wsl -d $Distribution --cd $playwrightCoreRoot -u root -- bash -c "$initScript"
33
+ Write-Host "Done!"
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ set -x
4
+
5
+ if [[ $(arch) == "aarch64" ]]; then
6
+ echo "ERROR: not supported on Linux Arm64"
7
+ exit 1
8
+ fi
9
+
10
+ if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
11
+ if [[ ! -f "/etc/os-release" ]]; then
12
+ echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
13
+ exit 1
14
+ fi
15
+
16
+ ID=$(bash -c 'source /etc/os-release && echo $ID')
17
+ if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
18
+ echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
19
+ exit 1
20
+ fi
21
+ fi
22
+
23
+ # 1. make sure to remove old beta if any.
24
+ if dpkg --get-selections | grep -q "^google-chrome-beta[[:space:]]*install$" >/dev/null; then
25
+ apt-get remove -y google-chrome-beta
26
+ fi
27
+
28
+ # 2. Update apt lists (needed to install curl and chrome dependencies)
29
+ apt-get update
30
+
31
+ # 3. Install curl to download chrome
32
+ if ! command -v curl >/dev/null; then
33
+ apt-get install -y curl
34
+ fi
35
+
36
+ # 4. download chrome beta from dl.google.com and install it.
37
+ cd /tmp
38
+ curl -O https://dl.google.com/linux/direct/google-chrome-beta_current_amd64.deb
39
+ apt-get install -y ./google-chrome-beta_current_amd64.deb
40
+ rm -rf ./google-chrome-beta_current_amd64.deb
41
+ cd -
42
+ google-chrome-beta --version
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ set -x
4
+
5
+ rm -rf "/Applications/Google Chrome Beta.app"
6
+ cd /tmp
7
+ curl --retry 3 -o ./googlechromebeta.dmg https://dl.google.com/chrome/mac/universal/beta/googlechromebeta.dmg
8
+ hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechromebeta.dmg ./googlechromebeta.dmg
9
+ cp -pR "/Volumes/googlechromebeta.dmg/Google Chrome Beta.app" /Applications
10
+ hdiutil detach /Volumes/googlechromebeta.dmg
11
+ rm -rf /tmp/googlechromebeta.dmg
12
+
13
+ /Applications/Google\ Chrome\ Beta.app/Contents/MacOS/Google\ Chrome\ Beta --version
@@ -0,0 +1,24 @@
1
+ $ErrorActionPreference = 'Stop'
2
+
3
+ $url = 'https://dl.google.com/tag/s/dl/chrome/install/beta/googlechromebetastandaloneenterprise64.msi'
4
+
5
+ Write-Host "Downloading Google Chrome Beta"
6
+ $wc = New-Object net.webclient
7
+ $msiInstaller = "$env:temp\google-chrome-beta.msi"
8
+ $wc.Downloadfile($url, $msiInstaller)
9
+
10
+ Write-Host "Installing Google Chrome Beta"
11
+ $arguments = "/i `"$msiInstaller`" /quiet"
12
+ Start-Process msiexec.exe -ArgumentList $arguments -Wait
13
+ Remove-Item $msiInstaller
14
+
15
+ $suffix = "\\Google\\Chrome Beta\\Application\\chrome.exe"
16
+ if (Test-Path "${env:ProgramFiles(x86)}$suffix") {
17
+ (Get-Item "${env:ProgramFiles(x86)}$suffix").VersionInfo
18
+ } elseif (Test-Path "${env:ProgramFiles}$suffix") {
19
+ (Get-Item "${env:ProgramFiles}$suffix").VersionInfo
20
+ } else {
21
+ Write-Host "ERROR: Failed to install Google Chrome Beta."
22
+ Write-Host "ERROR: This could be due to insufficient privileges, in which case re-running as Administrator may help."
23
+ exit 1
24
+ }
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ set -x
4
+
5
+ if [[ $(arch) == "aarch64" ]]; then
6
+ echo "ERROR: not supported on Linux Arm64"
7
+ exit 1
8
+ fi
9
+
10
+ if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
11
+ if [[ ! -f "/etc/os-release" ]]; then
12
+ echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
13
+ exit 1
14
+ fi
15
+
16
+ ID=$(bash -c 'source /etc/os-release && echo $ID')
17
+ if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
18
+ echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
19
+ exit 1
20
+ fi
21
+ fi
22
+
23
+ # 1. make sure to remove old stable if any.
24
+ if dpkg --get-selections | grep -q "^google-chrome[[:space:]]*install$" >/dev/null; then
25
+ apt-get remove -y google-chrome
26
+ fi
27
+
28
+ # 2. Update apt lists (needed to install curl and chrome dependencies)
29
+ apt-get update
30
+
31
+ # 3. Install curl to download chrome
32
+ if ! command -v curl >/dev/null; then
33
+ apt-get install -y curl
34
+ fi
35
+
36
+ # 4. download chrome stable from dl.google.com and install it.
37
+ cd /tmp
38
+ curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
39
+ apt-get install -y ./google-chrome-stable_current_amd64.deb
40
+ rm -rf ./google-chrome-stable_current_amd64.deb
41
+ cd -
42
+ google-chrome --version
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ set -x
4
+
5
+ rm -rf "/Applications/Google Chrome.app"
6
+ cd /tmp
7
+ curl --retry 3 -o ./googlechrome.dmg https://dl.google.com/chrome/mac/universal/stable/GGRO/googlechrome.dmg
8
+ hdiutil attach -nobrowse -quiet -noautofsck -noautoopen -mountpoint /Volumes/googlechrome.dmg ./googlechrome.dmg
9
+ cp -pR "/Volumes/googlechrome.dmg/Google Chrome.app" /Applications
10
+ hdiutil detach /Volumes/googlechrome.dmg
11
+ rm -rf /tmp/googlechrome.dmg
12
+ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version