rechrome 1.19.0 → 1.21.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 +153 -55
  4. package/rech.ts +153 -55
  5. package/serve.js +106 -23
  6. package/serve.ts +106 -23
  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/serve.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { file } from "bun";
2
2
  import { createHash, X509Certificate } from "crypto";
3
- import { mkdirSync, unlinkSync, accessSync, constants as fsConstants } from "fs";
3
+ import { mkdirSync, unlinkSync, accessSync, readdirSync, constants as fsConstants } from "fs";
4
4
  import { join, resolve, relative, isAbsolute } from "path";
5
5
  import {
6
6
  log,
@@ -10,30 +10,97 @@ 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";
16
17
  const CERT_RENEW_THRESHOLD_DAYS = 7;
17
18
 
18
- // Short label for a client identity, used as the Chrome tab-group name (the tab
19
- // strip is space-constrained, so cap at 7 chars). gitUrl ".../owner/repo/tree/branch"
20
- // -> "rep:bra" (3+3); "host:/path/to/dir" -> "dir"; bare host/IP -> as-is. Strips a
21
- // trailing "@profile" suffix first.
22
- const MAX_GROUP_LABEL_LEN = 7;
23
- function shortClientLabel(raw: string): string {
19
+ // Short label for a client identity, used as the Chrome tab-group name (the tab strip is
20
+ // space-constrained, so cap at 7 chars). Handles the current label shape and the legacy gitUrl:
21
+ // "host/owner/repo#<basename>@<branch>" -> "bas:bra" (3+3) (current)
22
+ // "host/owner/repo/tree/branch" -> "rep:bra" (3+3) (legacy gitUrl)
23
+ // "host:/path/to/dir" -> "dir" (non-git)
24
+ // bare host/IP -> as-is
25
+ export const MAX_GROUP_LABEL_LEN = 7;
26
+ export function shortClientLabel(raw: string): string {
24
27
  if (!raw) return raw;
25
- const baseId = raw.includes("@") ? raw.slice(0, raw.indexOf("@")) : raw;
26
- const git = baseId.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
27
- let label: string;
28
- if (git)
29
- label = git[2] ? `${git[1].slice(0, 3)}:${git[2].slice(0, 3)}` : git[1];
30
- else {
31
- const hostCwd = baseId.match(/^[^:]+:(.+)$/);
32
- label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || baseId) : baseId;
28
+ const join3 = (a: string, b?: string) => (b ? `${a.slice(0, 3)}:${b.slice(0, 3)}` : a);
29
+ // Current label: "[remote#]<worktree-basename>[@<branch>]"
30
+ if (raw.includes("#") || (raw.includes("@") && !raw.startsWith("http"))) {
31
+ const afterHash = raw.includes("#") ? raw.slice(raw.indexOf("#") + 1) : raw;
32
+ const [base, branch] = afterHash.split("@");
33
+ return join3(base, branch).slice(0, MAX_GROUP_LABEL_LEN);
33
34
  }
35
+ // Legacy gitUrl: ".../owner/repo/tree/branch"
36
+ const git = raw.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
37
+ if (git) return join3(git[1], git[2]).slice(0, MAX_GROUP_LABEL_LEN);
38
+ // "host:/path/to/dir" -> basename
39
+ const hostCwd = raw.match(/^[^:]+:(.+)$/);
40
+ const label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || raw) : raw;
34
41
  return label.slice(0, MAX_GROUP_LABEL_LEN);
35
42
  }
36
43
 
44
+ // --isolate sessions (`rech --isolate ...` -> `-s=iso-<rand>`) are throwaway, single-flow
45
+ // buckets. We reap them on an idle TTL so an OAuth/login drive can't leak an orphaned browser
46
+ // context. A TTL (not close-on-exit-per-command) is required because the flows are multi-step
47
+ // (open -> click -> consent): closing after each command would break them. The reaper runs the
48
+ // CLI's `close` for the specific iso session only — it never touches the user's other sessions
49
+ // or quits Chrome.
50
+ const ISO_SESSION_TTL_MS = Number(process.env.RECH_ISOLATE_TTL_MS) || 15 * 60_000;
51
+ const ISO_REAP_INTERVAL_MS = 60_000;
52
+ const isoLastUsed = new Map<string, number>();
53
+
54
+ export function isIsoSession(namespacedSession: string): boolean {
55
+ return /(?:^|-)iso-[0-9a-f]+$/.test(namespacedSession);
56
+ }
57
+
58
+ function tmpSocketRoot(): string {
59
+ return `${(process.env.TMPDIR || "/tmp").replace(/\/$/, "")}/playwright-cli`;
60
+ }
61
+
62
+ // On startup, adopt any iso-* sessions a previous daemon left behind so they still get reaped
63
+ // (in-memory tracking alone would miss pre-restart orphans). Best-effort: a mis-derived session
64
+ // just yields a harmless no-op `close`. Socket files are named with the session as their prefix.
65
+ function adoptOrphanedIsoSessions(): void {
66
+ try {
67
+ const root = tmpSocketRoot();
68
+ for (const sub of readdirSync(root)) {
69
+ let entries: string[];
70
+ try { entries = readdirSync(`${root}/${sub}`); } catch { continue; }
71
+ for (const f of entries) {
72
+ const m = f.match(/^([0-9a-f]+-iso-[0-9a-f]+)/) || f.match(/^(iso-[0-9a-f]+)/);
73
+ if (m && !isoLastUsed.has(m[1])) {
74
+ isoLastUsed.set(m[1], Date.now());
75
+ log(`adopted orphaned isolated session for reaping: ${m[1]}`);
76
+ }
77
+ }
78
+ }
79
+ } catch {
80
+ // socket dir may not exist yet — nothing to adopt
81
+ }
82
+ }
83
+
84
+ function reapIdleIsoSessions(bin: string, binArgs: string[], workDir: string): void {
85
+ const now = Date.now();
86
+ for (const [sess, last] of isoLastUsed) {
87
+ if (now - last < ISO_SESSION_TTL_MS) continue;
88
+ isoLastUsed.delete(sess);
89
+ try {
90
+ Bun.spawn([bin, ...binArgs, "close", `-s=${sess}`], {
91
+ cwd: workDir,
92
+ stdin: "ignore",
93
+ stdout: "ignore",
94
+ stderr: "ignore",
95
+ env: { PATH: process.env.PATH, HOME: HOME, USERPROFILE: process.env.USERPROFILE },
96
+ });
97
+ log(`reaped idle isolated session (idle ${Math.round((now - last) / 1000)}s): ${sess}`);
98
+ } catch (e) {
99
+ log(`reap failed for ${sess}: ${e}`);
100
+ }
101
+ }
102
+ }
103
+
37
104
  async function renewCertIfNeeded(certPath: string, keyPath: string): Promise<boolean> {
38
105
  const certContent = await file(certPath).text().catch(() => null);
39
106
  if (!certContent) return false;
@@ -141,6 +208,13 @@ export async function serve() {
141
208
  const workDir = join(RECH_DIR, "output");
142
209
  mkdirSync(workDir, { recursive: true });
143
210
 
211
+ // Reap idle --isolate sessions so single-shot OAuth/login drives don't leak browser contexts.
212
+ adoptOrphanedIsoSessions();
213
+ setInterval(() => {
214
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
215
+ reapIdleIsoSessions(bin, binArgs, workDir);
216
+ }, ISO_REAP_INTERVAL_MS);
217
+
144
218
  const listenHost = process.env.RECH_HOST || "127.0.0.1";
145
219
  const canRead = (p?: string) => { try { accessSync(p!, fsConstants.R_OK); return true; } catch { return false; } };
146
220
  const certPath = canRead(process.env.RECH_TLS_CERT) ? process.env.RECH_TLS_CERT : undefined;
@@ -200,14 +274,19 @@ export async function serve() {
200
274
  } else {
201
275
  args = body.args;
202
276
  const id = body.identity as
203
- | { gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
277
+ | { key?: string; label?: string; gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
204
278
  | undefined;
205
- const baseId = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
206
- const raw = baseId && id?.profile ? `${baseId}@${id.profile}` : baseId;
207
- if (raw) {
208
- sessionId = createHash("sha256").update(raw).digest("hex").slice(0, 8);
209
- clientName = raw;
210
- log(`session from identity: ${raw} -> ${sessionId}`);
279
+ // New clients send {key,label} (key = worktree-root-based, decoupled from the pretty
280
+ // label). Fall back to the legacy {gitUrl|hostname:cwd} shape for older clients.
281
+ const legacy = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
282
+ const keyBase = id?.key || legacy;
283
+ const labelBase = id?.label || legacy || keyBase;
284
+ if (keyBase) {
285
+ // Hash the key (+ profile via a NUL separator that never appears in a label).
286
+ const hashInput = id?.profile ? `${keyBase}\u0000${id.profile}` : keyBase;
287
+ sessionId = createHash("sha256").update(hashInput).digest("hex").slice(0, 8);
288
+ clientName = labelBase || keyBase;
289
+ log(`session from identity: ${clientName}${id?.profile ? ` profile:${id.profile}` : ""} [${keyBase}] -> ${sessionId}`);
211
290
  } else {
212
291
  const clientAddr = `${req.headers.get("x-forwarded-for") || server.requestIP(req)?.address || "unknown"}`;
213
292
  sessionId = createHash("sha256").update(clientAddr).digest("hex").slice(0, 8);
@@ -232,8 +311,12 @@ export async function serve() {
232
311
  return true;
233
312
  });
234
313
  const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
314
+ // Track --isolate sessions so the idle-TTL reaper can close them later.
315
+ if (isIsoSession(namespacedSession)) isoLastUsed.set(namespacedSession, Date.now());
235
316
 
236
- const [bin, ...binArgs] = splitCommand(process.env.PLAYWRIGHT_CLI || "playwright-cli-multi-tab");
317
+ // daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
318
+ // fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
319
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
237
320
 
238
321
  if (filteredArgs.length === 0) {
239
322
  filteredArgs.push("--help");
package/serve.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { file } from "bun";
2
2
  import { createHash, X509Certificate } from "crypto";
3
- import { mkdirSync, unlinkSync, accessSync, constants as fsConstants } from "fs";
3
+ import { mkdirSync, unlinkSync, accessSync, readdirSync, constants as fsConstants } from "fs";
4
4
  import { join, resolve, relative, isAbsolute } from "path";
5
5
  import {
6
6
  log,
@@ -10,30 +10,97 @@ 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";
16
17
  const CERT_RENEW_THRESHOLD_DAYS = 7;
17
18
 
18
- // Short label for a client identity, used as the Chrome tab-group name (the tab
19
- // strip is space-constrained, so cap at 7 chars). gitUrl ".../owner/repo/tree/branch"
20
- // -> "rep:bra" (3+3); "host:/path/to/dir" -> "dir"; bare host/IP -> as-is. Strips a
21
- // trailing "@profile" suffix first.
22
- const MAX_GROUP_LABEL_LEN = 7;
23
- function shortClientLabel(raw: string): string {
19
+ // Short label for a client identity, used as the Chrome tab-group name (the tab strip is
20
+ // space-constrained, so cap at 7 chars). Handles the current label shape and the legacy gitUrl:
21
+ // "host/owner/repo#<basename>@<branch>" -> "bas:bra" (3+3) (current)
22
+ // "host/owner/repo/tree/branch" -> "rep:bra" (3+3) (legacy gitUrl)
23
+ // "host:/path/to/dir" -> "dir" (non-git)
24
+ // bare host/IP -> as-is
25
+ export const MAX_GROUP_LABEL_LEN = 7;
26
+ export function shortClientLabel(raw: string): string {
24
27
  if (!raw) return raw;
25
- const baseId = raw.includes("@") ? raw.slice(0, raw.indexOf("@")) : raw;
26
- const git = baseId.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
27
- let label: string;
28
- if (git)
29
- label = git[2] ? `${git[1].slice(0, 3)}:${git[2].slice(0, 3)}` : git[1];
30
- else {
31
- const hostCwd = baseId.match(/^[^:]+:(.+)$/);
32
- label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || baseId) : baseId;
28
+ const join3 = (a: string, b?: string) => (b ? `${a.slice(0, 3)}:${b.slice(0, 3)}` : a);
29
+ // Current label: "[remote#]<worktree-basename>[@<branch>]"
30
+ if (raw.includes("#") || (raw.includes("@") && !raw.startsWith("http"))) {
31
+ const afterHash = raw.includes("#") ? raw.slice(raw.indexOf("#") + 1) : raw;
32
+ const [base, branch] = afterHash.split("@");
33
+ return join3(base, branch).slice(0, MAX_GROUP_LABEL_LEN);
33
34
  }
35
+ // Legacy gitUrl: ".../owner/repo/tree/branch"
36
+ const git = raw.match(/^https?:\/\/[^/]+\/[^/]+\/([^/]+?)(?:\/tree\/(.+))?$/);
37
+ if (git) return join3(git[1], git[2]).slice(0, MAX_GROUP_LABEL_LEN);
38
+ // "host:/path/to/dir" -> basename
39
+ const hostCwd = raw.match(/^[^:]+:(.+)$/);
40
+ const label = hostCwd ? (hostCwd[1].split("/").filter(Boolean).pop() || raw) : raw;
34
41
  return label.slice(0, MAX_GROUP_LABEL_LEN);
35
42
  }
36
43
 
44
+ // --isolate sessions (`rech --isolate ...` -> `-s=iso-<rand>`) are throwaway, single-flow
45
+ // buckets. We reap them on an idle TTL so an OAuth/login drive can't leak an orphaned browser
46
+ // context. A TTL (not close-on-exit-per-command) is required because the flows are multi-step
47
+ // (open -> click -> consent): closing after each command would break them. The reaper runs the
48
+ // CLI's `close` for the specific iso session only — it never touches the user's other sessions
49
+ // or quits Chrome.
50
+ const ISO_SESSION_TTL_MS = Number(process.env.RECH_ISOLATE_TTL_MS) || 15 * 60_000;
51
+ const ISO_REAP_INTERVAL_MS = 60_000;
52
+ const isoLastUsed = new Map<string, number>();
53
+
54
+ export function isIsoSession(namespacedSession: string): boolean {
55
+ return /(?:^|-)iso-[0-9a-f]+$/.test(namespacedSession);
56
+ }
57
+
58
+ function tmpSocketRoot(): string {
59
+ return `${(process.env.TMPDIR || "/tmp").replace(/\/$/, "")}/playwright-cli`;
60
+ }
61
+
62
+ // On startup, adopt any iso-* sessions a previous daemon left behind so they still get reaped
63
+ // (in-memory tracking alone would miss pre-restart orphans). Best-effort: a mis-derived session
64
+ // just yields a harmless no-op `close`. Socket files are named with the session as their prefix.
65
+ function adoptOrphanedIsoSessions(): void {
66
+ try {
67
+ const root = tmpSocketRoot();
68
+ for (const sub of readdirSync(root)) {
69
+ let entries: string[];
70
+ try { entries = readdirSync(`${root}/${sub}`); } catch { continue; }
71
+ for (const f of entries) {
72
+ const m = f.match(/^([0-9a-f]+-iso-[0-9a-f]+)/) || f.match(/^(iso-[0-9a-f]+)/);
73
+ if (m && !isoLastUsed.has(m[1])) {
74
+ isoLastUsed.set(m[1], Date.now());
75
+ log(`adopted orphaned isolated session for reaping: ${m[1]}`);
76
+ }
77
+ }
78
+ }
79
+ } catch {
80
+ // socket dir may not exist yet — nothing to adopt
81
+ }
82
+ }
83
+
84
+ function reapIdleIsoSessions(bin: string, binArgs: string[], workDir: string): void {
85
+ const now = Date.now();
86
+ for (const [sess, last] of isoLastUsed) {
87
+ if (now - last < ISO_SESSION_TTL_MS) continue;
88
+ isoLastUsed.delete(sess);
89
+ try {
90
+ Bun.spawn([bin, ...binArgs, "close", `-s=${sess}`], {
91
+ cwd: workDir,
92
+ stdin: "ignore",
93
+ stdout: "ignore",
94
+ stderr: "ignore",
95
+ env: { PATH: process.env.PATH, HOME: HOME, USERPROFILE: process.env.USERPROFILE },
96
+ });
97
+ log(`reaped idle isolated session (idle ${Math.round((now - last) / 1000)}s): ${sess}`);
98
+ } catch (e) {
99
+ log(`reap failed for ${sess}: ${e}`);
100
+ }
101
+ }
102
+ }
103
+
37
104
  async function renewCertIfNeeded(certPath: string, keyPath: string): Promise<boolean> {
38
105
  const certContent = await file(certPath).text().catch(() => null);
39
106
  if (!certContent) return false;
@@ -141,6 +208,13 @@ export async function serve() {
141
208
  const workDir = join(RECH_DIR, "output");
142
209
  mkdirSync(workDir, { recursive: true });
143
210
 
211
+ // Reap idle --isolate sessions so single-shot OAuth/login drives don't leak browser contexts.
212
+ adoptOrphanedIsoSessions();
213
+ setInterval(() => {
214
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
215
+ reapIdleIsoSessions(bin, binArgs, workDir);
216
+ }, ISO_REAP_INTERVAL_MS);
217
+
144
218
  const listenHost = process.env.RECH_HOST || "127.0.0.1";
145
219
  const canRead = (p?: string) => { try { accessSync(p!, fsConstants.R_OK); return true; } catch { return false; } };
146
220
  const certPath = canRead(process.env.RECH_TLS_CERT) ? process.env.RECH_TLS_CERT : undefined;
@@ -200,14 +274,19 @@ export async function serve() {
200
274
  } else {
201
275
  args = body.args;
202
276
  const id = body.identity as
203
- | { gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
277
+ | { key?: string; label?: string; gitUrl?: string; hostname?: string; cwd?: string; profile?: string }
204
278
  | undefined;
205
- const baseId = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
206
- const raw = baseId && id?.profile ? `${baseId}@${id.profile}` : baseId;
207
- if (raw) {
208
- sessionId = createHash("sha256").update(raw).digest("hex").slice(0, 8);
209
- clientName = raw;
210
- log(`session from identity: ${raw} -> ${sessionId}`);
279
+ // New clients send {key,label} (key = worktree-root-based, decoupled from the pretty
280
+ // label). Fall back to the legacy {gitUrl|hostname:cwd} shape for older clients.
281
+ const legacy = id?.gitUrl || (id?.hostname && id?.cwd ? `${id.hostname}:${id.cwd}` : null);
282
+ const keyBase = id?.key || legacy;
283
+ const labelBase = id?.label || legacy || keyBase;
284
+ if (keyBase) {
285
+ // Hash the key (+ profile via a NUL separator that never appears in a label).
286
+ const hashInput = id?.profile ? `${keyBase}\u0000${id.profile}` : keyBase;
287
+ sessionId = createHash("sha256").update(hashInput).digest("hex").slice(0, 8);
288
+ clientName = labelBase || keyBase;
289
+ log(`session from identity: ${clientName}${id?.profile ? ` profile:${id.profile}` : ""} [${keyBase}] -> ${sessionId}`);
211
290
  } else {
212
291
  const clientAddr = `${req.headers.get("x-forwarded-for") || server.requestIP(req)?.address || "unknown"}`;
213
292
  sessionId = createHash("sha256").update(clientAddr).digest("hex").slice(0, 8);
@@ -232,8 +311,12 @@ export async function serve() {
232
311
  return true;
233
312
  });
234
313
  const namespacedSession = clientSession ? `${sessionId}-${clientSession}` : sessionId;
314
+ // Track --isolate sessions so the idle-TTL reaper can close them later.
315
+ if (isIsoSession(namespacedSession)) isoLastUsed.set(namespacedSession, Date.now());
235
316
 
236
- const [bin, ...binArgs] = splitCommand(process.env.PLAYWRIGHT_CLI || "playwright-cli-multi-tab");
317
+ // daemonInstall bakes PLAYWRIGHT_CLI into the daemon env; resolvePlaywrightCli() is the
318
+ // fallback for a standalone `serve` (it re-runs the same env > fork > @playwright/cli > legacy chain).
319
+ const [bin, ...binArgs] = splitCommand(resolvePlaywrightCli());
237
320
 
238
321
  if (filteredArgs.length === 0) {
239
322
  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
@@ -0,0 +1,24 @@
1
+ $ErrorActionPreference = 'Stop'
2
+ $url = 'https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi'
3
+
4
+ $wc = New-Object net.webclient
5
+ $msiInstaller = "$env:temp\google-chrome.msi"
6
+ Write-Host "Downloading Google Chrome"
7
+ $wc.Downloadfile($url, $msiInstaller)
8
+
9
+ Write-Host "Installing Google Chrome"
10
+ $arguments = "/i `"$msiInstaller`" /quiet"
11
+ Start-Process msiexec.exe -ArgumentList $arguments -Wait
12
+ Remove-Item $msiInstaller
13
+
14
+
15
+ $suffix = "\\Google\\Chrome\\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."
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,48 @@
1
+ #!/usr/bin/env bash
2
+
3
+ set -e
4
+ set -x
5
+
6
+ if [[ $(arch) == "aarch64" ]]; then
7
+ echo "ERROR: not supported on Linux Arm64"
8
+ exit 1
9
+ fi
10
+
11
+ if [ -z "$PLAYWRIGHT_HOST_PLATFORM_OVERRIDE" ]; then
12
+ if [[ ! -f "/etc/os-release" ]]; then
13
+ echo "ERROR: cannot install on unknown linux distribution (/etc/os-release is missing)"
14
+ exit 1
15
+ fi
16
+
17
+ ID=$(bash -c 'source /etc/os-release && echo $ID')
18
+ if [[ "${ID}" != "ubuntu" && "${ID}" != "debian" ]]; then
19
+ echo "ERROR: cannot install on $ID distribution - only Ubuntu and Debian are supported"
20
+ exit 1
21
+ fi
22
+ fi
23
+
24
+ # 1. make sure to remove old beta if any.
25
+ if dpkg --get-selections | grep -q "^microsoft-edge-beta[[:space:]]*install$" >/dev/null; then
26
+ apt-get remove -y microsoft-edge-beta
27
+ fi
28
+
29
+ # 2. Install curl to download Microsoft gpg key
30
+ if ! command -v curl >/dev/null; then
31
+ apt-get update
32
+ apt-get install -y curl
33
+ fi
34
+
35
+ # GnuPG is not preinstalled in slim images
36
+ if ! command -v gpg >/dev/null; then
37
+ apt-get update
38
+ apt-get install -y gpg
39
+ fi
40
+
41
+ # 3. Add the GPG key, the apt repo, update the apt cache, and install the package
42
+ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /tmp/microsoft.gpg
43
+ install -o root -g root -m 644 /tmp/microsoft.gpg /etc/apt/trusted.gpg.d/
44
+ sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge-dev.list'
45
+ rm /tmp/microsoft.gpg
46
+ apt-get update && apt-get install -y microsoft-edge-beta
47
+
48
+ microsoft-edge-beta --version
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+ set -e
3
+ set -x
4
+
5
+ cd /tmp
6
+ curl --retry 3 -o ./msedge_beta.pkg "$1"
7
+ # Note: there's no way to uninstall previously installed MSEdge.
8
+ # However, running PKG again seems to update installation.
9
+ sudo installer -pkg /tmp/msedge_beta.pkg -target /
10
+ rm -rf /tmp/msedge_beta.pkg
11
+ /Applications/Microsoft\ Edge\ Beta.app/Contents/MacOS/Microsoft\ Edge\ Beta --version