@browserbasehq/orca 3.0.9-alpha-4 → 3.1.0-patch.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 (655) hide show
  1. package/dist/esm/index.d.ts +3 -0
  2. package/dist/esm/index.js +3 -0
  3. package/dist/esm/lib/inference.d.ts +65 -0
  4. package/dist/esm/lib/inference.js +333 -0
  5. package/dist/esm/lib/inference.js.map +1 -0
  6. package/dist/esm/lib/inferenceLogUtils.d.ts +12 -0
  7. package/dist/esm/lib/inferenceLogUtils.js +92 -0
  8. package/dist/esm/lib/inferenceLogUtils.js.map +1 -0
  9. package/dist/esm/lib/logger.d.ts +69 -0
  10. package/dist/esm/lib/logger.js +323 -0
  11. package/dist/esm/lib/logger.js.map +1 -0
  12. package/dist/esm/lib/modelUtils.d.ts +14 -0
  13. package/dist/esm/lib/modelUtils.js +48 -0
  14. package/dist/esm/lib/modelUtils.js.map +1 -0
  15. package/dist/esm/lib/prompt.d.ts +14 -0
  16. package/dist/esm/lib/prompt.js +230 -0
  17. package/dist/esm/lib/prompt.js.map +1 -0
  18. package/dist/esm/lib/utils.d.ts +68 -0
  19. package/dist/esm/lib/utils.js +654 -0
  20. package/dist/esm/lib/utils.js.map +1 -0
  21. package/dist/esm/lib/v3/agent/AgentClient.d.ts +19 -0
  22. package/dist/esm/lib/v3/agent/AgentClient.js +17 -0
  23. package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -0
  24. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +20 -0
  25. package/dist/esm/lib/v3/agent/AgentProvider.js +77 -0
  26. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -0
  27. package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
  28. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +822 -0
  29. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
  30. package/dist/esm/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
  31. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +799 -0
  32. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -0
  33. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
  34. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +770 -0
  35. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
  36. package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
  37. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +615 -0
  38. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -0
  39. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
  40. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +186 -0
  41. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
  42. package/dist/esm/lib/v3/agent/tools/act.d.ts +13 -0
  43. package/dist/esm/lib/v3/agent/tools/act.js +49 -0
  44. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -0
  45. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +5 -0
  46. package/dist/esm/lib/v3/agent/tools/ariaTree.js +31 -0
  47. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -0
  48. package/dist/esm/lib/v3/agent/tools/click.d.ts +6 -0
  49. package/dist/esm/lib/v3/agent/tools/click.js +104 -0
  50. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -0
  51. package/dist/esm/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
  52. package/dist/esm/lib/v3/agent/tools/clickAndHold.js +68 -0
  53. package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -0
  54. package/dist/esm/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
  55. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +105 -0
  56. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
  57. package/dist/esm/lib/v3/agent/tools/extract.d.ts +21 -0
  58. package/dist/esm/lib/v3/agent/tools/extract.js +93 -0
  59. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -0
  60. package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
  61. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +143 -0
  62. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -0
  63. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +13 -0
  64. package/dist/esm/lib/v3/agent/tools/fillform.js +56 -0
  65. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -0
  66. package/dist/esm/lib/v3/agent/tools/goto.d.ts +12 -0
  67. package/dist/esm/lib/v3/agent/tools/goto.js +31 -0
  68. package/dist/esm/lib/v3/agent/tools/goto.js.map +1 -0
  69. package/dist/esm/lib/v3/agent/tools/index.d.ts +92 -0
  70. package/dist/esm/lib/v3/agent/tools/index.js +74 -0
  71. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -0
  72. package/dist/esm/lib/v3/agent/tools/keys.d.ts +24 -0
  73. package/dist/esm/lib/v3/agent/tools/keys.js +60 -0
  74. package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -0
  75. package/dist/esm/lib/v3/agent/tools/navback.d.ts +6 -0
  76. package/dist/esm/lib/v3/agent/tools/navback.js +23 -0
  77. package/dist/esm/lib/v3/agent/tools/navback.js.map +1 -0
  78. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +6 -0
  79. package/dist/esm/lib/v3/agent/tools/screenshot.js +26 -0
  80. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -0
  81. package/dist/esm/lib/v3/agent/tools/scroll.d.ts +19 -0
  82. package/dist/esm/lib/v3/agent/tools/scroll.js +142 -0
  83. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -0
  84. package/dist/esm/lib/v3/agent/tools/search.d.ts +15 -0
  85. package/dist/esm/lib/v3/agent/tools/search.js +73 -0
  86. package/dist/esm/lib/v3/agent/tools/search.js.map +1 -0
  87. package/dist/esm/lib/v3/agent/tools/think.d.ts +6 -0
  88. package/dist/esm/lib/v3/agent/tools/think.js +24 -0
  89. package/dist/esm/lib/v3/agent/tools/think.js.map +1 -0
  90. package/dist/esm/lib/v3/agent/tools/type.d.ts +7 -0
  91. package/dist/esm/lib/v3/agent/tools/type.js +106 -0
  92. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -0
  93. package/dist/esm/lib/v3/agent/tools/wait.d.ts +5 -0
  94. package/dist/esm/lib/v3/agent/tools/wait.js +53 -0
  95. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -0
  96. package/dist/esm/lib/v3/agent/utils/actionMapping.d.ts +3 -0
  97. package/dist/esm/lib/v3/agent/utils/actionMapping.js +100 -0
  98. package/dist/esm/lib/v3/agent/utils/actionMapping.js.map +1 -0
  99. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
  100. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js +28 -0
  101. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
  102. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
  103. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js +62 -0
  104. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
  105. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
  106. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js +145 -0
  107. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
  108. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
  109. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +101 -0
  110. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
  111. package/dist/esm/lib/v3/agent/utils/imageCompression.d.ts +53 -0
  112. package/dist/esm/lib/v3/agent/utils/imageCompression.js +204 -0
  113. package/dist/esm/lib/v3/agent/utils/imageCompression.js.map +1 -0
  114. package/dist/esm/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
  115. package/dist/esm/lib/v3/agent/utils/messageProcessing.js +164 -0
  116. package/dist/esm/lib/v3/agent/utils/messageProcessing.js.map +1 -0
  117. package/dist/esm/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
  118. package/dist/esm/lib/v3/agent/utils/screenshotHandler.js +26 -0
  119. package/dist/esm/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
  120. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
  121. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +79 -0
  122. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
  123. package/dist/esm/lib/v3/agent/utils/xpath.d.ts +11 -0
  124. package/dist/esm/lib/v3/agent/utils/xpath.js +19 -0
  125. package/dist/esm/lib/v3/agent/utils/xpath.js.map +1 -0
  126. package/dist/esm/lib/v3/api.d.ts +86 -0
  127. package/dist/esm/lib/v3/api.js +484 -0
  128. package/dist/esm/lib/v3/api.js.map +1 -0
  129. package/dist/esm/lib/v3/cache/ActCache.d.ts +23 -0
  130. package/dist/esm/lib/v3/cache/ActCache.js +292 -0
  131. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -0
  132. package/dist/esm/lib/v3/cache/AgentCache.d.ts +109 -0
  133. package/dist/esm/lib/v3/cache/AgentCache.js +640 -0
  134. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -0
  135. package/dist/esm/lib/v3/cache/CacheStorage.d.ts +17 -0
  136. package/dist/esm/lib/v3/cache/CacheStorage.js +98 -0
  137. package/dist/esm/lib/v3/cache/CacheStorage.js.map +1 -0
  138. package/dist/esm/lib/v3/cache/serverAgentCache.d.ts +7 -0
  139. package/dist/esm/lib/v3/cache/serverAgentCache.js +49 -0
  140. package/dist/esm/lib/v3/cache/serverAgentCache.js.map +1 -0
  141. package/dist/esm/lib/v3/cache/utils.d.ts +15 -0
  142. package/dist/esm/lib/v3/cache/utils.js +39 -0
  143. package/dist/esm/lib/v3/cache/utils.js.map +1 -0
  144. package/dist/esm/lib/v3/dom/a11yScripts/index.d.ts +11 -0
  145. package/dist/esm/lib/v3/dom/a11yScripts/index.js +117 -0
  146. package/dist/esm/lib/v3/dom/a11yScripts/index.js.map +1 -0
  147. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
  148. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js +20 -0
  149. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
  150. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
  151. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +56 -0
  152. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
  153. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
  154. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js +2 -0
  155. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
  156. package/dist/esm/lib/v3/dom/build/rerender-index.js +1 -0
  157. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
  158. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js +8 -0
  159. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
  160. package/dist/esm/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
  161. package/dist/esm/lib/v3/dom/build/scriptV3Content.js +2 -0
  162. package/dist/esm/lib/v3/dom/build/scriptV3Content.js.map +1 -0
  163. package/dist/esm/lib/v3/dom/build/v3-index.js +1 -0
  164. package/dist/esm/lib/v3/dom/genA11yScripts.d.ts +1 -0
  165. package/dist/esm/lib/v3/dom/genA11yScripts.js +54 -0
  166. package/dist/esm/lib/v3/dom/genA11yScripts.js.map +1 -0
  167. package/dist/esm/lib/v3/dom/genDomScripts.d.ts +1 -0
  168. package/dist/esm/lib/v3/dom/genDomScripts.js +38 -0
  169. package/dist/esm/lib/v3/dom/genDomScripts.js.map +1 -0
  170. package/dist/esm/lib/v3/dom/genLocatorScripts.d.ts +1 -0
  171. package/dist/esm/lib/v3/dom/genLocatorScripts.js +51 -0
  172. package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +1 -0
  173. package/dist/esm/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
  174. package/dist/esm/lib/v3/dom/genScreenshotScripts.js +37 -0
  175. package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +1 -0
  176. package/dist/esm/lib/v3/dom/index.d.ts +1 -0
  177. package/dist/esm/lib/v3/dom/index.js +2 -0
  178. package/dist/esm/lib/v3/dom/index.js.map +1 -0
  179. package/dist/esm/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
  180. package/dist/esm/lib/v3/dom/locatorScripts/counts.js +272 -0
  181. package/dist/esm/lib/v3/dom/locatorScripts/counts.js.map +1 -0
  182. package/dist/esm/lib/v3/dom/locatorScripts/index.d.ts +4 -0
  183. package/dist/esm/lib/v3/dom/locatorScripts/index.js +5 -0
  184. package/dist/esm/lib/v3/dom/locatorScripts/index.js.map +1 -0
  185. package/dist/esm/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
  186. package/dist/esm/lib/v3/dom/locatorScripts/scripts.js +458 -0
  187. package/dist/esm/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
  188. package/dist/esm/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
  189. package/dist/esm/lib/v3/dom/locatorScripts/selectors.js +283 -0
  190. package/dist/esm/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
  191. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
  192. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js +283 -0
  193. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
  194. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
  195. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js +376 -0
  196. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
  197. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
  198. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +196 -0
  199. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
  200. package/dist/esm/lib/v3/dom/piercer.entry.d.ts +1 -0
  201. package/dist/esm/lib/v3/dom/piercer.entry.js +3 -0
  202. package/dist/esm/lib/v3/dom/piercer.entry.js.map +1 -0
  203. package/dist/esm/lib/v3/dom/piercer.runtime.d.ts +23 -0
  204. package/dist/esm/lib/v3/dom/piercer.runtime.js +90 -0
  205. package/dist/esm/lib/v3/dom/piercer.runtime.js.map +1 -0
  206. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
  207. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js +3 -0
  208. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
  209. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
  210. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js +40 -0
  211. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
  212. package/dist/esm/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
  213. package/dist/esm/lib/v3/dom/screenshotScripts/index.js +2 -0
  214. package/dist/esm/lib/v3/dom/screenshotScripts/index.js.map +1 -0
  215. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
  216. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js +82 -0
  217. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
  218. package/dist/esm/lib/v3/external_clients/aisdk.d.ts +11 -0
  219. package/dist/esm/lib/v3/external_clients/aisdk.js +103 -0
  220. package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -0
  221. package/dist/esm/lib/v3/external_clients/customOpenAI.d.ts +18 -0
  222. package/dist/esm/lib/v3/external_clients/customOpenAI.js +220 -0
  223. package/dist/esm/lib/v3/external_clients/customOpenAI.js.map +1 -0
  224. package/dist/esm/lib/v3/flowLogger.d.ts +139 -0
  225. package/dist/esm/lib/v3/flowLogger.js +868 -0
  226. package/dist/esm/lib/v3/flowLogger.js.map +1 -0
  227. package/dist/esm/lib/v3/handlers/actHandler.d.ts +21 -0
  228. package/dist/esm/lib/v3/handlers/actHandler.js +340 -0
  229. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -0
  230. package/dist/esm/lib/v3/handlers/extractHandler.d.ts +31 -0
  231. package/dist/esm/lib/v3/handlers/extractHandler.js +139 -0
  232. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -0
  233. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
  234. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +623 -0
  235. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
  236. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
  237. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js +14 -0
  238. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
  239. package/dist/esm/lib/v3/handlers/observeHandler.d.ts +17 -0
  240. package/dist/esm/lib/v3/handlers/observeHandler.js +156 -0
  241. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -0
  242. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
  243. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +461 -0
  244. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -0
  245. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
  246. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +528 -0
  247. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
  248. package/dist/esm/lib/v3/index.d.ts +17 -0
  249. package/dist/esm/lib/v3/index.js +13 -0
  250. package/dist/esm/lib/v3/index.js.map +1 -0
  251. package/dist/esm/lib/v3/launch/browserbase.d.ts +7 -0
  252. package/dist/esm/lib/v3/launch/browserbase.js +46 -0
  253. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -0
  254. package/dist/esm/lib/v3/launch/local.d.ts +15 -0
  255. package/dist/esm/lib/v3/launch/local.js +98 -0
  256. package/dist/esm/lib/v3/launch/local.js.map +1 -0
  257. package/dist/esm/lib/v3/llm/AnthropicClient.d.ts +16 -0
  258. package/dist/esm/lib/v3/llm/AnthropicClient.js +239 -0
  259. package/dist/esm/lib/v3/llm/AnthropicClient.js.map +1 -0
  260. package/dist/esm/lib/v3/llm/CerebrasClient.d.ts +17 -0
  261. package/dist/esm/lib/v3/llm/CerebrasClient.js +235 -0
  262. package/dist/esm/lib/v3/llm/CerebrasClient.js.map +1 -0
  263. package/dist/esm/lib/v3/llm/GoogleClient.d.ts +19 -0
  264. package/dist/esm/lib/v3/llm/GoogleClient.js +369 -0
  265. package/dist/esm/lib/v3/llm/GoogleClient.js.map +1 -0
  266. package/dist/esm/lib/v3/llm/GroqClient.d.ts +17 -0
  267. package/dist/esm/lib/v3/llm/GroqClient.js +236 -0
  268. package/dist/esm/lib/v3/llm/GroqClient.js.map +1 -0
  269. package/dist/esm/lib/v3/llm/LLMClient.d.ts +121 -0
  270. package/dist/esm/lib/v3/llm/LLMClient.js +23 -0
  271. package/dist/esm/lib/v3/llm/LLMClient.js.map +1 -0
  272. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +13 -0
  273. package/dist/esm/lib/v3/llm/LLMProvider.js +194 -0
  274. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -0
  275. package/dist/esm/lib/v3/llm/OpenAIClient.d.ts +15 -0
  276. package/dist/esm/lib/v3/llm/OpenAIClient.js +329 -0
  277. package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -0
  278. package/dist/esm/lib/v3/llm/aisdk.d.ts +15 -0
  279. package/dist/esm/lib/v3/llm/aisdk.js +348 -0
  280. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -0
  281. package/dist/esm/lib/v3/logger.d.ts +9 -0
  282. package/dist/esm/lib/v3/logger.js +96 -0
  283. package/dist/esm/lib/v3/logger.js.map +1 -0
  284. package/dist/esm/lib/v3/mcp/connection.d.ts +11 -0
  285. package/dist/esm/lib/v3/mcp/connection.js +49 -0
  286. package/dist/esm/lib/v3/mcp/connection.js.map +1 -0
  287. package/dist/esm/lib/v3/mcp/utils.d.ts +3 -0
  288. package/dist/esm/lib/v3/mcp/utils.js +36 -0
  289. package/dist/esm/lib/v3/mcp/utils.js.map +1 -0
  290. package/dist/esm/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
  291. package/dist/esm/lib/v3/shutdown/cleanupLocal.js +30 -0
  292. package/dist/esm/lib/v3/shutdown/cleanupLocal.js.map +1 -0
  293. package/dist/esm/lib/v3/shutdown/supervisor.d.ts +9 -0
  294. package/dist/esm/lib/v3/shutdown/supervisor.js +156 -0
  295. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -0
  296. package/dist/esm/lib/v3/shutdown/supervisorClient.d.ts +15 -0
  297. package/dist/esm/lib/v3/shutdown/supervisorClient.js +97 -0
  298. package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -0
  299. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +113 -0
  300. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
  301. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +80 -0
  302. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
  303. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +374 -0
  304. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
  305. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +357 -0
  306. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
  307. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
  308. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
  309. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +105 -0
  310. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
  311. package/dist/esm/lib/v3/tests/agent-streaming.spec.js +126 -0
  312. package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +7 -0
  313. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +44 -0
  314. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
  315. package/dist/esm/lib/v3/tests/click-count.spec.js +112 -0
  316. package/dist/esm/lib/v3/tests/click-count.spec.js.map +7 -0
  317. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
  318. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
  319. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +176 -0
  320. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
  321. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +53 -0
  322. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
  323. package/dist/esm/lib/v3/tests/downloads.spec.js +58 -0
  324. package/dist/esm/lib/v3/tests/downloads.spec.js.map +7 -0
  325. package/dist/esm/lib/v3/tests/envReporter.js +57 -0
  326. package/dist/esm/lib/v3/tests/envReporter.js.map +7 -0
  327. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
  328. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
  329. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +447 -0
  330. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
  331. package/dist/esm/lib/v3/tests/keep-alive.child.js +92 -0
  332. package/dist/esm/lib/v3/tests/keep-alive.child.js.map +7 -0
  333. package/dist/esm/lib/v3/tests/keep-alive.helpers.js +532 -0
  334. package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +7 -0
  335. package/dist/esm/lib/v3/tests/keep-alive.spec.js +19 -0
  336. package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +7 -0
  337. package/dist/esm/lib/v3/tests/keyboard.spec.js +296 -0
  338. package/dist/esm/lib/v3/tests/keyboard.spec.js.map +7 -0
  339. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
  340. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
  341. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +191 -0
  342. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
  343. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +108 -0
  344. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
  345. package/dist/esm/lib/v3/tests/locator-count.spec.js +71 -0
  346. package/dist/esm/lib/v3/tests/locator-count.spec.js.map +7 -0
  347. package/dist/esm/lib/v3/tests/locator-fill.spec.js +118 -0
  348. package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +7 -0
  349. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +136 -0
  350. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
  351. package/dist/esm/lib/v3/tests/locator-nth.spec.js +157 -0
  352. package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +7 -0
  353. package/dist/esm/lib/v3/tests/locator-select-option.spec.js +242 -0
  354. package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +7 -0
  355. package/dist/esm/lib/v3/tests/logger-initialization.spec.js +552 -0
  356. package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +7 -0
  357. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +269 -0
  358. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
  359. package/dist/esm/lib/v3/tests/nested-div.spec.js +23 -0
  360. package/dist/esm/lib/v3/tests/nested-div.spec.js.map +7 -0
  361. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +90 -0
  362. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
  363. package/dist/esm/lib/v3/tests/page-console.spec.js +56 -0
  364. package/dist/esm/lib/v3/tests/page-console.spec.js.map +7 -0
  365. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
  366. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
  367. package/dist/esm/lib/v3/tests/page-goto-response.spec.js +35 -0
  368. package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +7 -0
  369. package/dist/esm/lib/v3/tests/page-hover.spec.js +167 -0
  370. package/dist/esm/lib/v3/tests/page-hover.spec.js.map +7 -0
  371. package/dist/esm/lib/v3/tests/page-screenshot.spec.js +273 -0
  372. package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +7 -0
  373. package/dist/esm/lib/v3/tests/page-scroll.spec.js +182 -0
  374. package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +7 -0
  375. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +46 -0
  376. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
  377. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +98 -0
  378. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
  379. package/dist/esm/lib/v3/tests/setinputfiles.spec.js +126 -0
  380. package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +7 -0
  381. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +134 -0
  382. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
  383. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +134 -0
  384. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
  385. package/dist/esm/lib/v3/tests/testUtils.js +31 -0
  386. package/dist/esm/lib/v3/tests/testUtils.js.map +7 -0
  387. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +100 -0
  388. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
  389. package/dist/esm/lib/v3/tests/timeouts.spec.js +32 -0
  390. package/dist/esm/lib/v3/tests/timeouts.spec.js.map +7 -0
  391. package/dist/esm/lib/v3/tests/user-data-dir.spec.js +43 -0
  392. package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +7 -0
  393. package/dist/esm/lib/v3/tests/v3.config.js +15 -0
  394. package/dist/esm/lib/v3/tests/v3.config.js.map +7 -0
  395. package/dist/esm/lib/v3/tests/v3.dynamic.config.js +43 -0
  396. package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +7 -0
  397. package/dist/esm/lib/v3/tests/v3.playwright.config.js +98 -0
  398. package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +7 -0
  399. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +593 -0
  400. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
  401. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +97 -0
  402. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
  403. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
  404. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
  405. package/dist/esm/lib/v3/timeoutConfig.d.ts +2 -0
  406. package/dist/esm/lib/v3/timeoutConfig.js +27 -0
  407. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -0
  408. package/dist/esm/lib/v3/types/private/agent.d.ts +6 -0
  409. package/dist/esm/lib/v3/types/private/agent.js +2 -0
  410. package/dist/esm/lib/v3/types/private/agent.js.map +1 -0
  411. package/dist/esm/lib/v3/types/private/api.d.ts +11 -0
  412. package/dist/esm/lib/v3/types/private/api.js +2 -0
  413. package/dist/esm/lib/v3/types/private/api.js.map +1 -0
  414. package/dist/esm/lib/v3/types/private/cache.d.ts +128 -0
  415. package/dist/esm/lib/v3/types/private/cache.js +2 -0
  416. package/dist/esm/lib/v3/types/private/cache.js.map +1 -0
  417. package/dist/esm/lib/v3/types/private/evaluator.d.ts +40 -0
  418. package/dist/esm/lib/v3/types/private/evaluator.js +2 -0
  419. package/dist/esm/lib/v3/types/private/evaluator.js.map +1 -0
  420. package/dist/esm/lib/v3/types/private/handlers.d.ts +38 -0
  421. package/dist/esm/lib/v3/types/private/handlers.js +16 -0
  422. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -0
  423. package/dist/esm/lib/v3/types/private/index.d.ts +7 -0
  424. package/dist/esm/lib/v3/types/private/index.js +8 -0
  425. package/dist/esm/lib/v3/types/private/index.js.map +1 -0
  426. package/dist/esm/lib/v3/types/private/internal.d.ts +39 -0
  427. package/dist/esm/lib/v3/types/private/internal.js +2 -0
  428. package/dist/esm/lib/v3/types/private/internal.js.map +1 -0
  429. package/dist/esm/lib/v3/types/private/locator.d.ts +9 -0
  430. package/dist/esm/lib/v3/types/private/locator.js +2 -0
  431. package/dist/esm/lib/v3/types/private/locator.js.map +1 -0
  432. package/dist/esm/lib/v3/types/private/network.d.ts +34 -0
  433. package/dist/esm/lib/v3/types/private/network.js +3 -0
  434. package/dist/esm/lib/v3/types/private/network.js.map +1 -0
  435. package/dist/esm/lib/v3/types/private/shutdown.d.ts +31 -0
  436. package/dist/esm/lib/v3/types/private/shutdown.js +5 -0
  437. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -0
  438. package/dist/esm/lib/v3/types/private/shutdownErrors.d.ts +12 -0
  439. package/dist/esm/lib/v3/types/private/shutdownErrors.js +22 -0
  440. package/dist/esm/lib/v3/types/private/shutdownErrors.js.map +1 -0
  441. package/dist/esm/lib/v3/types/private/snapshot.d.ts +117 -0
  442. package/dist/esm/lib/v3/types/private/snapshot.js +2 -0
  443. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -0
  444. package/dist/esm/lib/v3/types/public/agent.d.ts +595 -0
  445. package/dist/esm/lib/v3/types/public/agent.js +15 -0
  446. package/dist/esm/lib/v3/types/public/agent.js.map +1 -0
  447. package/dist/esm/lib/v3/types/public/api.d.ts +1211 -0
  448. package/dist/esm/lib/v3/types/public/api.js +915 -0
  449. package/dist/esm/lib/v3/types/public/api.js.map +1 -0
  450. package/dist/esm/lib/v3/types/public/apiErrors.d.ts +18 -0
  451. package/dist/esm/lib/v3/types/public/apiErrors.js +32 -0
  452. package/dist/esm/lib/v3/types/public/apiErrors.js.map +1 -0
  453. package/dist/esm/lib/v3/types/public/index.d.ts +12 -0
  454. package/dist/esm/lib/v3/types/public/index.js +14 -0
  455. package/dist/esm/lib/v3/types/public/index.js.map +1 -0
  456. package/dist/esm/lib/v3/types/public/locator.d.ts +9 -0
  457. package/dist/esm/lib/v3/types/public/locator.js +2 -0
  458. package/dist/esm/lib/v3/types/public/locator.js.map +1 -0
  459. package/dist/esm/lib/v3/types/public/logs.d.ts +23 -0
  460. package/dist/esm/lib/v3/types/public/logs.js +13 -0
  461. package/dist/esm/lib/v3/types/public/logs.js.map +1 -0
  462. package/dist/esm/lib/v3/types/public/methods.d.ts +56 -0
  463. package/dist/esm/lib/v3/types/public/methods.js +15 -0
  464. package/dist/esm/lib/v3/types/public/methods.js.map +1 -0
  465. package/dist/esm/lib/v3/types/public/metrics.d.ts +27 -0
  466. package/dist/esm/lib/v3/types/public/metrics.js +2 -0
  467. package/dist/esm/lib/v3/types/public/metrics.js.map +1 -0
  468. package/dist/esm/lib/v3/types/public/model.d.ts +65 -0
  469. package/dist/esm/lib/v3/types/public/model.js +2 -0
  470. package/dist/esm/lib/v3/types/public/model.js.map +1 -0
  471. package/dist/esm/lib/v3/types/public/options.d.ts +70 -0
  472. package/dist/esm/lib/v3/types/public/options.js +4 -0
  473. package/dist/esm/lib/v3/types/public/options.js.map +1 -0
  474. package/dist/esm/lib/v3/types/public/page.d.ts +18 -0
  475. package/dist/esm/lib/v3/types/public/page.js +3 -0
  476. package/dist/esm/lib/v3/types/public/page.js.map +1 -0
  477. package/dist/esm/lib/v3/types/public/screenshotTypes.d.ts +25 -0
  478. package/dist/esm/lib/v3/types/public/screenshotTypes.js +2 -0
  479. package/dist/esm/lib/v3/types/public/screenshotTypes.js.map +1 -0
  480. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +152 -0
  481. package/dist/esm/lib/v3/types/public/sdkErrors.js +305 -0
  482. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -0
  483. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
  484. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +196 -0
  485. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
  486. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
  487. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js +121 -0
  488. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
  489. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
  490. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +336 -0
  491. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
  492. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
  493. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +129 -0
  494. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
  495. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
  496. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js +274 -0
  497. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
  498. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
  499. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +216 -0
  500. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
  501. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
  502. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js +5 -0
  503. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
  504. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
  505. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js +22 -0
  506. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
  507. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
  508. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +135 -0
  509. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
  510. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
  511. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js +102 -0
  512. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
  513. package/dist/esm/lib/v3/understudy/a11yInvocation.d.ts +8 -0
  514. package/dist/esm/lib/v3/understudy/a11yInvocation.js +12 -0
  515. package/dist/esm/lib/v3/understudy/a11yInvocation.js.map +1 -0
  516. package/dist/esm/lib/v3/understudy/cdp.d.ts +69 -0
  517. package/dist/esm/lib/v3/understudy/cdp.js +251 -0
  518. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -0
  519. package/dist/esm/lib/v3/understudy/consoleMessage.d.ts +22 -0
  520. package/dist/esm/lib/v3/understudy/consoleMessage.js +66 -0
  521. package/dist/esm/lib/v3/understudy/consoleMessage.js.map +1 -0
  522. package/dist/esm/lib/v3/understudy/context.d.ts +132 -0
  523. package/dist/esm/lib/v3/understudy/context.js +687 -0
  524. package/dist/esm/lib/v3/understudy/context.js.map +1 -0
  525. package/dist/esm/lib/v3/understudy/deepLocator.d.ts +87 -0
  526. package/dist/esm/lib/v3/understudy/deepLocator.js +218 -0
  527. package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -0
  528. package/dist/esm/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
  529. package/dist/esm/lib/v3/understudy/executionContextRegistry.js +83 -0
  530. package/dist/esm/lib/v3/understudy/executionContextRegistry.js.map +1 -0
  531. package/dist/esm/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
  532. package/dist/esm/lib/v3/understudy/fileUploadUtils.js +81 -0
  533. package/dist/esm/lib/v3/understudy/fileUploadUtils.js.map +1 -0
  534. package/dist/esm/lib/v3/understudy/frame.d.ts +69 -0
  535. package/dist/esm/lib/v3/understudy/frame.js +211 -0
  536. package/dist/esm/lib/v3/understudy/frame.js.map +1 -0
  537. package/dist/esm/lib/v3/understudy/frameLocator.d.ts +50 -0
  538. package/dist/esm/lib/v3/understudy/frameLocator.js +255 -0
  539. package/dist/esm/lib/v3/understudy/frameLocator.js.map +1 -0
  540. package/dist/esm/lib/v3/understudy/frameRegistry.d.ts +101 -0
  541. package/dist/esm/lib/v3/understudy/frameRegistry.js +298 -0
  542. package/dist/esm/lib/v3/understudy/frameRegistry.js.map +1 -0
  543. package/dist/esm/lib/v3/understudy/initScripts.d.ts +2 -0
  544. package/dist/esm/lib/v3/understudy/initScripts.js +33 -0
  545. package/dist/esm/lib/v3/understudy/initScripts.js.map +1 -0
  546. package/dist/esm/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
  547. package/dist/esm/lib/v3/understudy/lifecycleWatcher.js +245 -0
  548. package/dist/esm/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
  549. package/dist/esm/lib/v3/understudy/locator.d.ts +194 -0
  550. package/dist/esm/lib/v3/understudy/locator.js +753 -0
  551. package/dist/esm/lib/v3/understudy/locator.js.map +1 -0
  552. package/dist/esm/lib/v3/understudy/locatorInvocation.d.ts +8 -0
  553. package/dist/esm/lib/v3/understudy/locatorInvocation.js +12 -0
  554. package/dist/esm/lib/v3/understudy/locatorInvocation.js.map +1 -0
  555. package/dist/esm/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
  556. package/dist/esm/lib/v3/understudy/navigationResponseTracker.js +224 -0
  557. package/dist/esm/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
  558. package/dist/esm/lib/v3/understudy/networkManager.d.ts +53 -0
  559. package/dist/esm/lib/v3/understudy/networkManager.js +306 -0
  560. package/dist/esm/lib/v3/understudy/networkManager.js.map +1 -0
  561. package/dist/esm/lib/v3/understudy/page.d.ts +354 -0
  562. package/dist/esm/lib/v3/understudy/page.js +1941 -0
  563. package/dist/esm/lib/v3/understudy/page.js.map +1 -0
  564. package/dist/esm/lib/v3/understudy/piercer.d.ts +4 -0
  565. package/dist/esm/lib/v3/understudy/piercer.js +61 -0
  566. package/dist/esm/lib/v3/understudy/piercer.js.map +1 -0
  567. package/dist/esm/lib/v3/understudy/response.d.ts +137 -0
  568. package/dist/esm/lib/v3/understudy/response.js +330 -0
  569. package/dist/esm/lib/v3/understudy/response.js.map +1 -0
  570. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +16 -0
  571. package/dist/esm/lib/v3/understudy/screenshotUtils.js +352 -0
  572. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -0
  573. package/dist/esm/lib/v3/understudy/selectorResolver.d.ts +38 -0
  574. package/dist/esm/lib/v3/understudy/selectorResolver.js +296 -0
  575. package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -0
  576. package/dist/esm/lib/v3/v3.d.ts +191 -0
  577. package/dist/esm/lib/v3/v3.js +1572 -0
  578. package/dist/esm/lib/v3/v3.js.map +1 -0
  579. package/dist/esm/lib/v3/zodCompat.d.ts +12 -0
  580. package/dist/esm/lib/v3/zodCompat.js +17 -0
  581. package/dist/esm/lib/v3/zodCompat.js.map +1 -0
  582. package/dist/esm/lib/v3Evaluator.d.ts +19 -0
  583. package/dist/esm/lib/v3Evaluator.js +210 -0
  584. package/dist/esm/lib/v3Evaluator.js.map +1 -0
  585. package/dist/esm/lib/version.d.ts +5 -0
  586. package/dist/esm/lib/version.js +6 -0
  587. package/dist/esm/lib/version.js.map +1 -0
  588. package/dist/esm/package.json +3 -0
  589. package/dist/esm/tests/agent-execution-model.test.js +139 -0
  590. package/dist/esm/tests/agent-execution-model.test.js.map +7 -0
  591. package/dist/esm/tests/browserbase-session-accessors.test.js +101 -0
  592. package/dist/esm/tests/browserbase-session-accessors.test.js.map +7 -0
  593. package/dist/esm/tests/cache-llm-resolution.test.js +187 -0
  594. package/dist/esm/tests/cache-llm-resolution.test.js.map +7 -0
  595. package/dist/esm/tests/helpers/mockCDPSession.js +27 -0
  596. package/dist/esm/tests/helpers/mockCDPSession.js.map +7 -0
  597. package/dist/esm/tests/llm-provider.test.js +57 -0
  598. package/dist/esm/tests/llm-provider.test.js.map +7 -0
  599. package/dist/esm/tests/model-deprecation.test.js +135 -0
  600. package/dist/esm/tests/model-deprecation.test.js.map +7 -0
  601. package/dist/esm/tests/model-utils.test.js +43 -0
  602. package/dist/esm/tests/model-utils.test.js.map +7 -0
  603. package/dist/esm/tests/page-snapshot.test.js +36 -0
  604. package/dist/esm/tests/page-snapshot.test.js.map +7 -0
  605. package/dist/esm/tests/public-api/export-surface.test.js +53 -0
  606. package/dist/esm/tests/public-api/export-surface.test.js.map +7 -0
  607. package/dist/esm/tests/public-api/llm-and-agents.test.js +128 -0
  608. package/dist/esm/tests/public-api/llm-and-agents.test.js.map +7 -0
  609. package/dist/esm/tests/public-api/public-error-types.test.js +71 -0
  610. package/dist/esm/tests/public-api/public-error-types.test.js.map +7 -0
  611. package/dist/esm/tests/public-api/public-types.test.js +74 -0
  612. package/dist/esm/tests/public-api/public-types.test.js.map +7 -0
  613. package/dist/esm/tests/public-api/runtime-utils.test.js +31 -0
  614. package/dist/esm/tests/public-api/runtime-utils.test.js.map +7 -0
  615. package/dist/esm/tests/public-api/schema-utils.test.js +78 -0
  616. package/dist/esm/tests/public-api/schema-utils.test.js.map +7 -0
  617. package/dist/esm/tests/public-api/timeout-error-types.test.js +81 -0
  618. package/dist/esm/tests/public-api/timeout-error-types.test.js.map +7 -0
  619. package/dist/esm/tests/public-api/tool-type-export.test.js +25 -0
  620. package/dist/esm/tests/public-api/tool-type-export.test.js.map +7 -0
  621. package/dist/esm/tests/public-api/v3-core.test.js +82 -0
  622. package/dist/esm/tests/public-api/v3-core.test.js.map +7 -0
  623. package/dist/esm/tests/safety-confirmation.test.js +134 -0
  624. package/dist/esm/tests/safety-confirmation.test.js.map +7 -0
  625. package/dist/esm/tests/snapshot-a11y-resolvers.test.js +348 -0
  626. package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +7 -0
  627. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +300 -0
  628. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
  629. package/dist/esm/tests/snapshot-capture-orchestration.test.js +381 -0
  630. package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +7 -0
  631. package/dist/esm/tests/snapshot-cbor.test.js +197 -0
  632. package/dist/esm/tests/snapshot-cbor.test.js.map +7 -0
  633. package/dist/esm/tests/snapshot-dom-session-builders.test.js +251 -0
  634. package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +7 -0
  635. package/dist/esm/tests/snapshot-dom-tree-utils.test.js +109 -0
  636. package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +7 -0
  637. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +49 -0
  638. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
  639. package/dist/esm/tests/snapshot-frame-merge.test.js +391 -0
  640. package/dist/esm/tests/snapshot-frame-merge.test.js.map +7 -0
  641. package/dist/esm/tests/snapshot-tree-format-utils.test.js +113 -0
  642. package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +7 -0
  643. package/dist/esm/tests/snapshot-xpath-utils.test.js +79 -0
  644. package/dist/esm/tests/snapshot-xpath-utils.test.js.map +7 -0
  645. package/dist/esm/tests/timeout-handlers.test.js +850 -0
  646. package/dist/esm/tests/timeout-handlers.test.js.map +7 -0
  647. package/dist/esm/tests/xpath-parser.test.js +317 -0
  648. package/dist/esm/tests/xpath-parser.test.js.map +7 -0
  649. package/dist/esm/tests/xpath-resolver.test.js +73 -0
  650. package/dist/esm/tests/xpath-resolver.test.js.map +7 -0
  651. package/dist/esm/tests/zod-enum-compatibility.test.js +97 -0
  652. package/dist/esm/tests/zod-enum-compatibility.test.js.map +7 -0
  653. package/package.json +37 -24
  654. package/dist/index.d.ts +0 -4363
  655. package/dist/index.js +0 -76530
@@ -0,0 +1,532 @@
1
+ import { spawn } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import Browserbase from "@browserbasehq/sdk";
6
+ import WebSocket from "ws";
7
+ import { v3DynamicTestConfig } from "./v3.dynamic.config.js";
8
+ const testsDir = path.dirname(fileURLToPath(import.meta.url));
9
+ const findCoreDir = (startDir) => {
10
+ let current = path.resolve(startDir);
11
+ while (true) {
12
+ const packageJsonPath = path.join(current, "package.json");
13
+ if (fs.existsSync(packageJsonPath)) {
14
+ try {
15
+ const pkg = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
16
+ if (pkg.name === "@browserbasehq/stagehand") {
17
+ return current;
18
+ }
19
+ } catch {
20
+ }
21
+ }
22
+ const parent = path.dirname(current);
23
+ if (parent === current) {
24
+ return path.resolve(startDir, "../../..");
25
+ }
26
+ current = parent;
27
+ }
28
+ };
29
+ const coreDir = findCoreDir(testsDir);
30
+ const resolveChildRunner = () => {
31
+ const distJsPath = path.join(
32
+ coreDir,
33
+ "dist",
34
+ "esm",
35
+ "lib",
36
+ "v3",
37
+ "tests",
38
+ "keep-alive.child.js"
39
+ );
40
+ if (fs.existsSync(distJsPath)) {
41
+ return { command: process.execPath, args: [distJsPath] };
42
+ }
43
+ return null;
44
+ };
45
+ const childRunner = resolveChildRunner();
46
+ const DEBUG = process.env.KEEP_ALIVE_DEBUG === "1";
47
+ const VIEW_MS = Number(process.env.KEEP_ALIVE_VIEW_MS ?? "0");
48
+ const LOCAL_TIMEOUT_MS = Number(
49
+ process.env.KEEP_ALIVE_LOCAL_TIMEOUT_MS ?? "8000"
50
+ );
51
+ const BB_TIMEOUT_MS = Number(process.env.KEEP_ALIVE_BB_TIMEOUT_MS ?? "30000");
52
+ const STAY_OPEN_MS = Number(process.env.KEEP_ALIVE_STAY_OPEN_MS ?? "6000");
53
+ const ACTION_EXIT_TIMEOUT_MS = Number(
54
+ process.env.KEEP_ALIVE_ACTION_EXIT_TIMEOUT_MS ?? "3000"
55
+ );
56
+ const LOCAL_INFO_TIMEOUT_MS = Number(
57
+ process.env.KEEP_ALIVE_LOCAL_INFO_TIMEOUT_MS ?? "15000"
58
+ );
59
+ const BB_INFO_TIMEOUT_MS = Number(
60
+ process.env.KEEP_ALIVE_BB_INFO_TIMEOUT_MS ?? (process.env.CI ? "45000" : "30000")
61
+ );
62
+ const getInfoTimeoutMs = (env) => env === "BROWSERBASE" ? BB_INFO_TIMEOUT_MS : LOCAL_INFO_TIMEOUT_MS;
63
+ function debugLog(message) {
64
+ if (DEBUG) {
65
+ console.log(message);
66
+ }
67
+ }
68
+ function parseChildInfo(line) {
69
+ const prefix = "__KEEPALIVE__";
70
+ if (!line.startsWith(prefix)) return null;
71
+ try {
72
+ return JSON.parse(line.slice(prefix.length));
73
+ } catch {
74
+ return null;
75
+ }
76
+ }
77
+ async function runScenario(config) {
78
+ const payload = {
79
+ env: config.env,
80
+ keepAlive: config.keepAlive,
81
+ disableAPI: config.disableAPI,
82
+ scenario: config.kind,
83
+ apiKey: config.apiKey,
84
+ projectId: config.projectId,
85
+ debug: config.debug,
86
+ viewMs: config.viewMs
87
+ };
88
+ const encoded = `cfg:${Buffer.from(JSON.stringify(payload)).toString("base64")}`;
89
+ if (!childRunner) {
90
+ throw new Error(
91
+ "keep-alive child script not found at dist/esm/lib/v3/tests/keep-alive.child.js"
92
+ );
93
+ }
94
+ const child = spawn(childRunner.command, [...childRunner.args, encoded], {
95
+ cwd: coreDir,
96
+ env: { ...process.env },
97
+ stdio: ["ignore", "pipe", "pipe"]
98
+ });
99
+ const logs = { stdout: [], stderr: [] };
100
+ let buffer = "";
101
+ let stderr = "";
102
+ let resolved = false;
103
+ const infoTimeoutMs = getInfoTimeoutMs(config.env);
104
+ const infoPromise = new Promise((resolve, reject) => {
105
+ const timeout = setTimeout(() => {
106
+ child.kill("SIGKILL");
107
+ const stdoutDetails = logs.stdout.length > 0 ? `
108
+ Child stdout:
109
+ ${logs.stdout.join("\n")}` : "";
110
+ const details = stderr.trim();
111
+ const suffix = details ? `
112
+ Child stderr:
113
+ ${details}` : "\nChild did not emit keepAlive info.";
114
+ reject(
115
+ new Error(
116
+ `Child timed out waiting for info after ${infoTimeoutMs}ms (env=${config.env}, keepAlive=${config.keepAlive}, disableAPI=${config.disableAPI}, scenario=${config.kind}).${suffix}${stdoutDetails}`
117
+ )
118
+ );
119
+ }, infoTimeoutMs);
120
+ child.stdout.on("data", (chunk) => {
121
+ buffer += chunk.toString();
122
+ let idx = buffer.indexOf("\n");
123
+ while (idx !== -1) {
124
+ const line = buffer.slice(0, idx).trim();
125
+ buffer = buffer.slice(idx + 1);
126
+ const parsed = parseChildInfo(line);
127
+ if (parsed && !resolved) {
128
+ resolved = true;
129
+ clearTimeout(timeout);
130
+ resolve(parsed);
131
+ } else if (line.length > 0) {
132
+ logs.stdout.push(line);
133
+ debugLog(`[keep-alive-child] ${line}`);
134
+ }
135
+ idx = buffer.indexOf("\n");
136
+ }
137
+ });
138
+ child.on("exit", (code, signal) => {
139
+ if (resolved) return;
140
+ clearTimeout(timeout);
141
+ const stdoutDetails = logs.stdout.length > 0 ? `
142
+ Child stdout:
143
+ ${logs.stdout.join("\n")}` : "";
144
+ const details = stderr.trim();
145
+ const suffix = details ? `
146
+ Child stderr:
147
+ ${details}` : "\nChild exited without emitting keepAlive info.";
148
+ reject(
149
+ new Error(
150
+ `Child exited (code=${code ?? "null"}, signal=${signal ?? "null"}) before emitting keepAlive info (env=${config.env}, keepAlive=${config.keepAlive}, disableAPI=${config.disableAPI}, scenario=${config.kind}).${suffix}${stdoutDetails}`
151
+ )
152
+ );
153
+ });
154
+ child.on("error", (error) => {
155
+ if (resolved) return;
156
+ clearTimeout(timeout);
157
+ reject(error);
158
+ });
159
+ });
160
+ child.stderr.on("data", (chunk) => {
161
+ const text = chunk.toString();
162
+ stderr += text;
163
+ const trimmed = text.trim();
164
+ if (trimmed.length > 0) {
165
+ logs.stderr.push(trimmed);
166
+ debugLog(`[keep-alive-child] ${trimmed}`);
167
+ }
168
+ });
169
+ const info = await infoPromise;
170
+ return { info, child, logs };
171
+ }
172
+ async function stopChild(child) {
173
+ if (child.exitCode !== null) return;
174
+ try {
175
+ child.kill("SIGKILL");
176
+ } catch {
177
+ return;
178
+ }
179
+ await new Promise((resolve) => {
180
+ const timer = setTimeout(() => resolve(), 2e3);
181
+ child.once("exit", () => {
182
+ clearTimeout(timer);
183
+ resolve();
184
+ });
185
+ });
186
+ }
187
+ async function waitForChildExit(child, timeoutMs) {
188
+ if (child.exitCode !== null) return;
189
+ await new Promise((resolve) => {
190
+ const timer = setTimeout(() => resolve(), timeoutMs);
191
+ child.once("exit", () => {
192
+ clearTimeout(timer);
193
+ resolve();
194
+ });
195
+ });
196
+ }
197
+ async function checkLocalAlive(connectURL) {
198
+ let port = "";
199
+ try {
200
+ port = new URL(connectURL).port;
201
+ } catch {
202
+ return { alive: false, status: "INVALID_URL" };
203
+ }
204
+ if (!port) return { alive: false, status: "MISSING_PORT" };
205
+ const controller = new AbortController();
206
+ const timer = setTimeout(() => controller.abort(), 1500);
207
+ try {
208
+ const resp = await fetch(`http://127.0.0.1:${port}/json/version`, {
209
+ signal: controller.signal
210
+ });
211
+ if (!resp.ok) {
212
+ return { alive: false, status: `HTTP_${resp.status}` };
213
+ }
214
+ const json = await resp.json();
215
+ const ws = json?.webSocketDebuggerUrl;
216
+ if (!ws) {
217
+ return { alive: false, status: "MISSING_WS" };
218
+ }
219
+ if (ws !== connectURL) {
220
+ return { alive: false, status: "WS_MISMATCH" };
221
+ }
222
+ return { alive: true, status: "MATCH" };
223
+ } catch {
224
+ return { alive: false, status: "FETCH_ERROR" };
225
+ } finally {
226
+ clearTimeout(timer);
227
+ }
228
+ }
229
+ async function closeLocalBrowser(connectURL) {
230
+ await new Promise((resolve) => {
231
+ const ws = new WebSocket(connectURL);
232
+ const timer = setTimeout(() => {
233
+ ws.terminate();
234
+ resolve();
235
+ }, 2e3);
236
+ ws.on("open", () => {
237
+ ws.send(JSON.stringify({ id: 1, method: "Browser.close" }));
238
+ });
239
+ ws.on("error", () => {
240
+ clearTimeout(timer);
241
+ resolve();
242
+ });
243
+ ws.on("close", () => {
244
+ clearTimeout(timer);
245
+ resolve();
246
+ });
247
+ });
248
+ }
249
+ async function checkBrowserbaseAlive(sessionId, apiKey) {
250
+ if (!apiKey) return { alive: false, status: "NO_API_KEY" };
251
+ const bb = new Browserbase({ apiKey });
252
+ try {
253
+ const snapshot = await bb.sessions.retrieve(sessionId);
254
+ if (DEBUG) {
255
+ const status2 = snapshot?.status ?? "<missing>";
256
+ debugLog(`[keep-alive] session ${sessionId} status=${status2}`);
257
+ }
258
+ const status = snapshot?.status;
259
+ return { alive: status === "RUNNING", status };
260
+ } catch (error) {
261
+ debugLog(
262
+ `[keep-alive] session ${sessionId} retrieve failed: ${String(error)}`
263
+ );
264
+ return { alive: false, status: "RETRIEVE_FAILED" };
265
+ }
266
+ }
267
+ async function endBrowserbaseSession(sessionId, apiKey, projectId) {
268
+ if (!apiKey || !projectId) return;
269
+ const bb = new Browserbase({ apiKey });
270
+ try {
271
+ await bb.sessions.update(sessionId, {
272
+ status: "REQUEST_RELEASE",
273
+ projectId
274
+ });
275
+ } catch {
276
+ }
277
+ }
278
+ async function assertStaysOpen(check, durationMs, intervalMs = 500) {
279
+ const start = Date.now();
280
+ const deadline = start + durationMs;
281
+ let lastStatus;
282
+ while (Date.now() < deadline) {
283
+ const result = await check();
284
+ lastStatus = result.status ?? lastStatus;
285
+ if (!result.alive) {
286
+ const elapsed = Date.now() - start;
287
+ const status = lastStatus ? ` (last status ${lastStatus})` : "";
288
+ throw new Error(
289
+ `Browser closed after ${elapsed}ms (expected ${durationMs}ms)${status}.`
290
+ );
291
+ }
292
+ await new Promise((r) => setTimeout(r, intervalMs));
293
+ }
294
+ return { durationMs: Date.now() - start, lastStatus };
295
+ }
296
+ async function waitForClosed(check, timeoutMs, intervalMs = 500) {
297
+ const start = Date.now();
298
+ let lastStatus;
299
+ while (Date.now() - start < timeoutMs) {
300
+ const result = await check();
301
+ lastStatus = result.status ?? lastStatus;
302
+ if (!result.alive) {
303
+ return { durationMs: Date.now() - start, lastStatus };
304
+ }
305
+ await new Promise((r) => setTimeout(r, intervalMs));
306
+ }
307
+ const status = lastStatus ? ` (last status ${lastStatus})` : "";
308
+ throw new Error(`Browser still alive after ${timeoutMs}ms${status}.`);
309
+ }
310
+ async function assertBrowserState(env, info, shouldStayOpen, apiKey, projectId) {
311
+ const expected = shouldStayOpen ? "open" : "closed";
312
+ if (env === "LOCAL") {
313
+ if (shouldStayOpen) {
314
+ const result3 = await assertStaysOpen(
315
+ () => checkLocalAlive(info.connectURL),
316
+ STAY_OPEN_MS
317
+ );
318
+ const outcome = {
319
+ expected,
320
+ actual: "open",
321
+ durationMs: result3.durationMs,
322
+ lastStatus: result3.lastStatus
323
+ };
324
+ await closeLocalBrowser(info.connectURL);
325
+ return outcome;
326
+ }
327
+ const result2 = await waitForClosed(
328
+ () => checkLocalAlive(info.connectURL),
329
+ LOCAL_TIMEOUT_MS
330
+ );
331
+ return {
332
+ expected,
333
+ actual: "closed",
334
+ durationMs: result2.durationMs,
335
+ lastStatus: result2.lastStatus
336
+ };
337
+ }
338
+ if (!info.sessionId) {
339
+ throw new Error("Browserbase sessionId missing");
340
+ }
341
+ if (shouldStayOpen) {
342
+ const result2 = await assertStaysOpen(
343
+ () => checkBrowserbaseAlive(info.sessionId, apiKey),
344
+ STAY_OPEN_MS,
345
+ 1e3
346
+ );
347
+ const outcome = {
348
+ expected,
349
+ actual: "open",
350
+ durationMs: result2.durationMs,
351
+ lastStatus: result2.lastStatus
352
+ };
353
+ await endBrowserbaseSession(info.sessionId, apiKey, projectId);
354
+ return outcome;
355
+ }
356
+ const result = await waitForClosed(
357
+ () => checkBrowserbaseAlive(info.sessionId, apiKey),
358
+ BB_TIMEOUT_MS,
359
+ 1e3
360
+ );
361
+ return {
362
+ expected,
363
+ actual: "closed",
364
+ durationMs: result.durationMs,
365
+ lastStatus: result.lastStatus
366
+ };
367
+ }
368
+ function dumpLogs(logs) {
369
+ if (logs.stdout.length > 0) {
370
+ console.log("[keep-alive] child stdout:");
371
+ for (const line of logs.stdout) {
372
+ console.log(` ${line}`);
373
+ }
374
+ }
375
+ if (logs.stderr.length > 0) {
376
+ console.log("[keep-alive] child stderr:");
377
+ for (const line of logs.stderr) {
378
+ console.log(` ${line}`);
379
+ }
380
+ }
381
+ }
382
+ function logCaseResult(label, envLabel, keepAlive, outcome, error) {
383
+ const prefix = `[keep-alive] ${envLabel} keepAlive=${keepAlive} ${label}`;
384
+ if (error) {
385
+ console.log(`${prefix} FAIL: ${error.message}`);
386
+ return;
387
+ }
388
+ if (!outcome) {
389
+ console.log(`${prefix} FAIL: missing outcome`);
390
+ return;
391
+ }
392
+ const status = outcome.lastStatus !== void 0 ? ` (last status ${outcome.lastStatus})` : "";
393
+ if (outcome.actual === "open") {
394
+ console.log(
395
+ `${prefix} PASS: stayed open for ${outcome.durationMs}ms${status}`
396
+ );
397
+ } else {
398
+ console.log(
399
+ `${prefix} PASS: closed after ${outcome.durationMs}ms${status}`
400
+ );
401
+ }
402
+ }
403
+ function getKeepAliveEnvConfig() {
404
+ const testEnv = v3DynamicTestConfig.env;
405
+ const apiKey = testEnv === "BROWSERBASE" ? v3DynamicTestConfig.apiKey : void 0;
406
+ const projectId = testEnv === "BROWSERBASE" ? v3DynamicTestConfig.projectId : void 0;
407
+ const hasBrowserbaseCreds = Boolean(apiKey && projectId);
408
+ return { testEnv, apiKey, projectId, hasBrowserbaseCreds };
409
+ }
410
+ function buildKeepAliveCases(testEnv) {
411
+ const scenarios = [
412
+ { kind: "unhandled", label: "unhandled rejection" },
413
+ { kind: "close", label: "stagehand.close()" },
414
+ { kind: "sigterm", label: "SIGTERM" },
415
+ { kind: "sigint", label: "SIGINT" }
416
+ ];
417
+ const environments = testEnv === "BROWSERBASE" ? [
418
+ {
419
+ env: "BROWSERBASE",
420
+ label: "bb direct ws",
421
+ disableAPI: true,
422
+ requiresBrowserbase: true
423
+ },
424
+ {
425
+ env: "BROWSERBASE",
426
+ label: "bb via api",
427
+ disableAPI: false,
428
+ requiresBrowserbase: true
429
+ }
430
+ ] : [
431
+ {
432
+ env: "LOCAL",
433
+ label: "local",
434
+ disableAPI: false,
435
+ requiresBrowserbase: false
436
+ }
437
+ ];
438
+ const cases = [];
439
+ for (const keepAlive of [true, false]) {
440
+ for (const envConfig of environments) {
441
+ for (const scenario of scenarios) {
442
+ const expectation = keepAlive ? "expect open" : "expect closed";
443
+ cases.push({
444
+ title: `${envConfig.label} keepAlive=${keepAlive} ${scenario.label} (${expectation})`,
445
+ env: envConfig.env,
446
+ envLabel: envConfig.label,
447
+ keepAlive,
448
+ disableAPI: envConfig.disableAPI,
449
+ kind: scenario.kind,
450
+ requiresBrowserbase: envConfig.requiresBrowserbase
451
+ });
452
+ }
453
+ }
454
+ }
455
+ return cases;
456
+ }
457
+ async function runKeepAliveCase(testCase, envConfig) {
458
+ let info;
459
+ let child;
460
+ let logs;
461
+ try {
462
+ ({ info, child, logs } = await runScenario({
463
+ env: testCase.env,
464
+ keepAlive: testCase.keepAlive,
465
+ disableAPI: testCase.disableAPI,
466
+ kind: testCase.kind,
467
+ debug: DEBUG,
468
+ viewMs: VIEW_MS,
469
+ apiKey: envConfig.apiKey,
470
+ projectId: envConfig.projectId
471
+ }));
472
+ } catch (error) {
473
+ logCaseResult(
474
+ testCase.title,
475
+ testCase.envLabel,
476
+ testCase.keepAlive,
477
+ void 0,
478
+ error
479
+ );
480
+ throw error;
481
+ }
482
+ if (testCase.kind === "sigterm") {
483
+ child.kill("SIGTERM");
484
+ } else if (testCase.kind === "sigint") {
485
+ child.kill("SIGINT");
486
+ }
487
+ let outcome;
488
+ let failure;
489
+ try {
490
+ if (testCase.kind === "close" || testCase.kind === "unhandled" || testCase.kind === "sigterm" || testCase.kind === "sigint") {
491
+ await waitForChildExit(child, ACTION_EXIT_TIMEOUT_MS);
492
+ }
493
+ outcome = await assertBrowserState(
494
+ testCase.env,
495
+ info,
496
+ testCase.keepAlive,
497
+ envConfig.apiKey,
498
+ envConfig.projectId
499
+ );
500
+ } catch (error) {
501
+ failure = error;
502
+ if (logs) {
503
+ dumpLogs(logs);
504
+ }
505
+ throw error;
506
+ } finally {
507
+ logCaseResult(
508
+ testCase.title,
509
+ testCase.envLabel,
510
+ testCase.keepAlive,
511
+ outcome,
512
+ failure
513
+ );
514
+ await stopChild(child);
515
+ if (testCase.env === "LOCAL" && info.connectURL) {
516
+ await closeLocalBrowser(info.connectURL);
517
+ }
518
+ if (testCase.env === "BROWSERBASE" && info.sessionId) {
519
+ await endBrowserbaseSession(
520
+ info.sessionId,
521
+ envConfig.apiKey,
522
+ envConfig.projectId
523
+ );
524
+ }
525
+ }
526
+ }
527
+ export {
528
+ buildKeepAliveCases,
529
+ getKeepAliveEnvConfig,
530
+ runKeepAliveCase
531
+ };
532
+ //# sourceMappingURL=keep-alive.helpers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../lib/v3/tests/keep-alive.helpers.ts"],
4
+ "sourcesContent": ["import { spawn } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport Browserbase from \"@browserbasehq/sdk\";\nimport WebSocket from \"ws\";\nimport { v3DynamicTestConfig } from \"./v3.dynamic.config.js\";\n\nexport type EnvKind = \"LOCAL\" | \"BROWSERBASE\";\nexport type ScenarioKind = \"unhandled\" | \"close\" | \"sigterm\" | \"sigint\";\n\nexport type KeepAliveCase = {\n title: string;\n env: EnvKind;\n envLabel: string;\n keepAlive: boolean;\n disableAPI: boolean;\n kind: ScenarioKind;\n requiresBrowserbase: boolean;\n};\n\ntype ScenarioConfig = {\n env: EnvKind;\n keepAlive: boolean;\n disableAPI: boolean;\n kind: ScenarioKind;\n debug: boolean;\n viewMs: number;\n apiKey?: string;\n projectId?: string;\n};\n\ntype ChildInfo = {\n connectURL: string;\n sessionId: string | null;\n};\n\ntype ChildLogs = {\n stdout: string[];\n stderr: string[];\n};\n\ntype CheckResult = {\n alive: boolean;\n status?: string;\n};\n\ntype Outcome = {\n expected: \"open\" | \"closed\";\n actual: \"open\" | \"closed\";\n durationMs: number;\n lastStatus?: string;\n};\n\nconst testsDir = path.dirname(fileURLToPath(import.meta.url));\nconst findCoreDir = (startDir: string): string => {\n let current = path.resolve(startDir);\n while (true) {\n const packageJsonPath = path.join(current, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n try {\n const pkg = JSON.parse(fs.readFileSync(packageJsonPath, \"utf8\")) as {\n name?: string;\n };\n if (pkg.name === \"@browserbasehq/stagehand\") {\n return current;\n }\n } catch {\n // keep climbing until we find the core package root\n }\n }\n\n const parent = path.dirname(current);\n if (parent === current) {\n return path.resolve(startDir, \"../../..\");\n }\n current = parent;\n }\n};\n\nconst coreDir = findCoreDir(testsDir);\n\nconst resolveChildRunner = (): { command: string; args: string[] } | null => {\n const distJsPath = path.join(\n coreDir,\n \"dist\",\n \"esm\",\n \"lib\",\n \"v3\",\n \"tests\",\n \"keep-alive.child.js\",\n );\n if (fs.existsSync(distJsPath)) {\n return { command: process.execPath, args: [distJsPath] };\n }\n\n return null;\n};\n\nconst childRunner = resolveChildRunner();\n\nconst DEBUG = process.env.KEEP_ALIVE_DEBUG === \"1\";\nconst VIEW_MS = Number(process.env.KEEP_ALIVE_VIEW_MS ?? \"0\");\nconst LOCAL_TIMEOUT_MS = Number(\n process.env.KEEP_ALIVE_LOCAL_TIMEOUT_MS ?? \"8000\",\n);\nconst BB_TIMEOUT_MS = Number(process.env.KEEP_ALIVE_BB_TIMEOUT_MS ?? \"30000\");\nconst STAY_OPEN_MS = Number(process.env.KEEP_ALIVE_STAY_OPEN_MS ?? \"6000\");\nconst ACTION_EXIT_TIMEOUT_MS = Number(\n process.env.KEEP_ALIVE_ACTION_EXIT_TIMEOUT_MS ?? \"3000\",\n);\nconst LOCAL_INFO_TIMEOUT_MS = Number(\n process.env.KEEP_ALIVE_LOCAL_INFO_TIMEOUT_MS ?? \"15000\",\n);\nconst BB_INFO_TIMEOUT_MS = Number(\n process.env.KEEP_ALIVE_BB_INFO_TIMEOUT_MS ??\n (process.env.CI ? \"45000\" : \"30000\"),\n);\n\nconst getInfoTimeoutMs = (env: EnvKind): number =>\n env === \"BROWSERBASE\" ? BB_INFO_TIMEOUT_MS : LOCAL_INFO_TIMEOUT_MS;\n\nfunction debugLog(message: string): void {\n if (DEBUG) {\n console.log(message);\n }\n}\n\nfunction parseChildInfo(line: string): ChildInfo | null {\n const prefix = \"__KEEPALIVE__\";\n if (!line.startsWith(prefix)) return null;\n try {\n return JSON.parse(line.slice(prefix.length)) as ChildInfo;\n } catch {\n return null;\n }\n}\n\nasync function runScenario(config: ScenarioConfig): Promise<{\n info: ChildInfo;\n child: ReturnType<typeof spawn>;\n logs: ChildLogs;\n}> {\n const payload = {\n env: config.env,\n keepAlive: config.keepAlive,\n disableAPI: config.disableAPI,\n scenario: config.kind,\n apiKey: config.apiKey,\n projectId: config.projectId,\n debug: config.debug,\n viewMs: config.viewMs,\n };\n const encoded = `cfg:${Buffer.from(JSON.stringify(payload)).toString(\"base64\")}`;\n\n if (!childRunner) {\n throw new Error(\n \"keep-alive child script not found at dist/esm/lib/v3/tests/keep-alive.child.js\",\n );\n }\n\n const child = spawn(childRunner.command, [...childRunner.args, encoded], {\n cwd: coreDir,\n env: { ...process.env },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n const logs: ChildLogs = { stdout: [], stderr: [] };\n let buffer = \"\";\n let stderr = \"\";\n let resolved = false;\n const infoTimeoutMs = getInfoTimeoutMs(config.env);\n\n const infoPromise = new Promise<ChildInfo>((resolve, reject) => {\n const timeout = setTimeout(() => {\n child.kill(\"SIGKILL\");\n const stdoutDetails =\n logs.stdout.length > 0\n ? `\\nChild stdout:\\n${logs.stdout.join(\"\\n\")}`\n : \"\";\n const details = stderr.trim();\n const suffix = details\n ? `\\nChild stderr:\\n${details}`\n : \"\\nChild did not emit keepAlive info.\";\n reject(\n new Error(\n `Child timed out waiting for info after ${infoTimeoutMs}ms (env=${config.env}, keepAlive=${config.keepAlive}, disableAPI=${config.disableAPI}, scenario=${config.kind}).${suffix}${stdoutDetails}`,\n ),\n );\n }, infoTimeoutMs);\n\n child.stdout.on(\"data\", (chunk) => {\n buffer += chunk.toString();\n let idx = buffer.indexOf(\"\\n\");\n while (idx !== -1) {\n const line = buffer.slice(0, idx).trim();\n buffer = buffer.slice(idx + 1);\n const parsed = parseChildInfo(line);\n if (parsed && !resolved) {\n resolved = true;\n clearTimeout(timeout);\n resolve(parsed);\n } else if (line.length > 0) {\n logs.stdout.push(line);\n debugLog(`[keep-alive-child] ${line}`);\n }\n idx = buffer.indexOf(\"\\n\");\n }\n });\n\n child.on(\"exit\", (code, signal) => {\n if (resolved) return;\n clearTimeout(timeout);\n const stdoutDetails =\n logs.stdout.length > 0\n ? `\\nChild stdout:\\n${logs.stdout.join(\"\\n\")}`\n : \"\";\n const details = stderr.trim();\n const suffix = details\n ? `\\nChild stderr:\\n${details}`\n : \"\\nChild exited without emitting keepAlive info.\";\n reject(\n new Error(\n `Child exited (code=${code ?? \"null\"}, signal=${signal ?? \"null\"}) before emitting keepAlive info (env=${config.env}, keepAlive=${config.keepAlive}, disableAPI=${config.disableAPI}, scenario=${config.kind}).${suffix}${stdoutDetails}`,\n ),\n );\n });\n\n child.on(\"error\", (error) => {\n if (resolved) return;\n clearTimeout(timeout);\n reject(error);\n });\n });\n\n child.stderr.on(\"data\", (chunk) => {\n const text = chunk.toString();\n stderr += text;\n const trimmed = text.trim();\n if (trimmed.length > 0) {\n logs.stderr.push(trimmed);\n debugLog(`[keep-alive-child] ${trimmed}`);\n }\n });\n\n const info = await infoPromise;\n return { info, child, logs };\n}\n\nasync function stopChild(child: ReturnType<typeof spawn>): Promise<void> {\n if (child.exitCode !== null) return;\n try {\n child.kill(\"SIGKILL\");\n } catch {\n return;\n }\n await new Promise<void>((resolve) => {\n const timer = setTimeout(() => resolve(), 2000);\n child.once(\"exit\", () => {\n clearTimeout(timer);\n resolve();\n });\n });\n}\n\nasync function waitForChildExit(\n child: ReturnType<typeof spawn>,\n timeoutMs: number,\n): Promise<void> {\n if (child.exitCode !== null) return;\n await new Promise<void>((resolve) => {\n const timer = setTimeout(() => resolve(), timeoutMs);\n child.once(\"exit\", () => {\n clearTimeout(timer);\n resolve();\n });\n });\n}\n\nasync function checkLocalAlive(connectURL: string): Promise<CheckResult> {\n let port = \"\";\n try {\n port = new URL(connectURL).port;\n } catch {\n return { alive: false, status: \"INVALID_URL\" };\n }\n if (!port) return { alive: false, status: \"MISSING_PORT\" };\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), 1500);\n try {\n const resp = await fetch(`http://127.0.0.1:${port}/json/version`, {\n signal: controller.signal,\n });\n if (!resp.ok) {\n return { alive: false, status: `HTTP_${resp.status}` };\n }\n const json = (await resp.json()) as { webSocketDebuggerUrl?: string };\n const ws = json?.webSocketDebuggerUrl;\n if (!ws) {\n return { alive: false, status: \"MISSING_WS\" };\n }\n if (ws !== connectURL) {\n return { alive: false, status: \"WS_MISMATCH\" };\n }\n return { alive: true, status: \"MATCH\" };\n } catch {\n return { alive: false, status: \"FETCH_ERROR\" };\n } finally {\n clearTimeout(timer);\n }\n}\n\nasync function closeLocalBrowser(connectURL: string): Promise<void> {\n await new Promise<void>((resolve) => {\n const ws = new WebSocket(connectURL);\n const timer = setTimeout(() => {\n ws.terminate();\n resolve();\n }, 2000);\n ws.on(\"open\", () => {\n ws.send(JSON.stringify({ id: 1, method: \"Browser.close\" }));\n });\n ws.on(\"error\", () => {\n clearTimeout(timer);\n resolve();\n });\n ws.on(\"close\", () => {\n clearTimeout(timer);\n resolve();\n });\n });\n}\n\nasync function checkBrowserbaseAlive(\n sessionId: string,\n apiKey?: string,\n): Promise<CheckResult> {\n if (!apiKey) return { alive: false, status: \"NO_API_KEY\" };\n\n const bb = new Browserbase({ apiKey });\n try {\n const snapshot = (await bb.sessions.retrieve(sessionId)) as {\n status?: string;\n };\n if (DEBUG) {\n const status = snapshot?.status ?? \"<missing>\";\n debugLog(`[keep-alive] session ${sessionId} status=${status}`);\n }\n const status = snapshot?.status;\n return { alive: status === \"RUNNING\", status };\n } catch (error) {\n debugLog(\n `[keep-alive] session ${sessionId} retrieve failed: ${String(error)}`,\n );\n return { alive: false, status: \"RETRIEVE_FAILED\" };\n }\n}\n\nasync function endBrowserbaseSession(\n sessionId: string,\n apiKey?: string,\n projectId?: string,\n): Promise<void> {\n if (!apiKey || !projectId) return;\n const bb = new Browserbase({ apiKey });\n try {\n await bb.sessions.update(sessionId, {\n status: \"REQUEST_RELEASE\",\n projectId,\n });\n } catch {\n // best-effort cleanup\n }\n}\n\nasync function assertStaysOpen(\n check: () => Promise<CheckResult>,\n durationMs: number,\n intervalMs = 500,\n): Promise<{ durationMs: number; lastStatus?: string }> {\n const start = Date.now();\n const deadline = start + durationMs;\n let lastStatus: string | undefined;\n while (Date.now() < deadline) {\n const result = await check();\n lastStatus = result.status ?? lastStatus;\n if (!result.alive) {\n const elapsed = Date.now() - start;\n const status = lastStatus ? ` (last status ${lastStatus})` : \"\";\n throw new Error(\n `Browser closed after ${elapsed}ms (expected ${durationMs}ms)${status}.`,\n );\n }\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n return { durationMs: Date.now() - start, lastStatus };\n}\n\nasync function waitForClosed(\n check: () => Promise<CheckResult>,\n timeoutMs: number,\n intervalMs = 500,\n): Promise<{ durationMs: number; lastStatus?: string }> {\n const start = Date.now();\n let lastStatus: string | undefined;\n while (Date.now() - start < timeoutMs) {\n const result = await check();\n lastStatus = result.status ?? lastStatus;\n if (!result.alive) {\n return { durationMs: Date.now() - start, lastStatus };\n }\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n const status = lastStatus ? ` (last status ${lastStatus})` : \"\";\n throw new Error(`Browser still alive after ${timeoutMs}ms${status}.`);\n}\n\nasync function assertBrowserState(\n env: EnvKind,\n info: ChildInfo,\n shouldStayOpen: boolean,\n apiKey?: string,\n projectId?: string,\n): Promise<Outcome> {\n const expected: Outcome[\"expected\"] = shouldStayOpen ? \"open\" : \"closed\";\n if (env === \"LOCAL\") {\n if (shouldStayOpen) {\n const result = await assertStaysOpen(\n () => checkLocalAlive(info.connectURL),\n STAY_OPEN_MS,\n );\n const outcome: Outcome = {\n expected,\n actual: \"open\",\n durationMs: result.durationMs,\n lastStatus: result.lastStatus,\n };\n await closeLocalBrowser(info.connectURL);\n return outcome;\n }\n\n const result = await waitForClosed(\n () => checkLocalAlive(info.connectURL),\n LOCAL_TIMEOUT_MS,\n );\n return {\n expected,\n actual: \"closed\",\n durationMs: result.durationMs,\n lastStatus: result.lastStatus,\n };\n }\n\n if (!info.sessionId) {\n throw new Error(\"Browserbase sessionId missing\");\n }\n\n if (shouldStayOpen) {\n const result = await assertStaysOpen(\n () => checkBrowserbaseAlive(info.sessionId!, apiKey),\n STAY_OPEN_MS,\n 1000,\n );\n const outcome: Outcome = {\n expected,\n actual: \"open\",\n durationMs: result.durationMs,\n lastStatus: result.lastStatus,\n };\n await endBrowserbaseSession(info.sessionId, apiKey, projectId);\n return outcome;\n }\n\n const result = await waitForClosed(\n () => checkBrowserbaseAlive(info.sessionId!, apiKey),\n BB_TIMEOUT_MS,\n 1000,\n );\n return {\n expected,\n actual: \"closed\",\n durationMs: result.durationMs,\n lastStatus: result.lastStatus,\n };\n}\n\nfunction dumpLogs(logs: ChildLogs): void {\n if (logs.stdout.length > 0) {\n console.log(\"[keep-alive] child stdout:\");\n for (const line of logs.stdout) {\n console.log(` ${line}`);\n }\n }\n if (logs.stderr.length > 0) {\n console.log(\"[keep-alive] child stderr:\");\n for (const line of logs.stderr) {\n console.log(` ${line}`);\n }\n }\n}\n\nfunction logCaseResult(\n label: string,\n envLabel: string,\n keepAlive: boolean,\n outcome?: Outcome,\n error?: Error,\n): void {\n const prefix = `[keep-alive] ${envLabel} keepAlive=${keepAlive} ${label}`;\n if (error) {\n console.log(`${prefix} FAIL: ${error.message}`);\n return;\n }\n if (!outcome) {\n console.log(`${prefix} FAIL: missing outcome`);\n return;\n }\n const status =\n outcome.lastStatus !== undefined\n ? ` (last status ${outcome.lastStatus})`\n : \"\";\n if (outcome.actual === \"open\") {\n console.log(\n `${prefix} PASS: stayed open for ${outcome.durationMs}ms${status}`,\n );\n } else {\n console.log(\n `${prefix} PASS: closed after ${outcome.durationMs}ms${status}`,\n );\n }\n}\n\nexport function getKeepAliveEnvConfig(): {\n testEnv: EnvKind;\n apiKey?: string;\n projectId?: string;\n hasBrowserbaseCreds: boolean;\n} {\n const testEnv = v3DynamicTestConfig.env;\n const apiKey =\n testEnv === \"BROWSERBASE\"\n ? (v3DynamicTestConfig.apiKey as string | undefined)\n : undefined;\n const projectId =\n testEnv === \"BROWSERBASE\"\n ? (v3DynamicTestConfig.projectId as string | undefined)\n : undefined;\n const hasBrowserbaseCreds = Boolean(apiKey && projectId);\n return { testEnv, apiKey, projectId, hasBrowserbaseCreds };\n}\n\nexport function buildKeepAliveCases(testEnv: EnvKind): KeepAliveCase[] {\n const scenarios: Array<{ kind: ScenarioKind; label: string }> = [\n { kind: \"unhandled\", label: \"unhandled rejection\" },\n { kind: \"close\", label: \"stagehand.close()\" },\n { kind: \"sigterm\", label: \"SIGTERM\" },\n { kind: \"sigint\", label: \"SIGINT\" },\n ];\n\n const environments: Array<{\n env: EnvKind;\n label: string;\n disableAPI: boolean;\n requiresBrowserbase: boolean;\n }> =\n testEnv === \"BROWSERBASE\"\n ? [\n {\n env: \"BROWSERBASE\",\n label: \"bb direct ws\",\n disableAPI: true,\n requiresBrowserbase: true,\n },\n {\n env: \"BROWSERBASE\",\n label: \"bb via api\",\n disableAPI: false,\n requiresBrowserbase: true,\n },\n ]\n : [\n {\n env: \"LOCAL\",\n label: \"local\",\n disableAPI: false,\n requiresBrowserbase: false,\n },\n ];\n\n const cases: KeepAliveCase[] = [];\n for (const keepAlive of [true, false]) {\n for (const envConfig of environments) {\n for (const scenario of scenarios) {\n const expectation = keepAlive ? \"expect open\" : \"expect closed\";\n cases.push({\n title: `${envConfig.label} keepAlive=${keepAlive} ${scenario.label} (${expectation})`,\n env: envConfig.env,\n envLabel: envConfig.label,\n keepAlive,\n disableAPI: envConfig.disableAPI,\n kind: scenario.kind,\n requiresBrowserbase: envConfig.requiresBrowserbase,\n });\n }\n }\n }\n return cases;\n}\n\nexport async function runKeepAliveCase(\n testCase: KeepAliveCase,\n envConfig: {\n apiKey?: string;\n projectId?: string;\n },\n): Promise<void> {\n let info: ChildInfo | undefined;\n let child: ReturnType<typeof spawn> | undefined;\n let logs: ChildLogs | undefined;\n try {\n ({ info, child, logs } = await runScenario({\n env: testCase.env,\n keepAlive: testCase.keepAlive,\n disableAPI: testCase.disableAPI,\n kind: testCase.kind,\n debug: DEBUG,\n viewMs: VIEW_MS,\n apiKey: envConfig.apiKey,\n projectId: envConfig.projectId,\n }));\n } catch (error) {\n logCaseResult(\n testCase.title,\n testCase.envLabel,\n testCase.keepAlive,\n undefined,\n error as Error,\n );\n throw error;\n }\n\n if (testCase.kind === \"sigterm\") {\n child.kill(\"SIGTERM\");\n } else if (testCase.kind === \"sigint\") {\n child.kill(\"SIGINT\");\n }\n\n let outcome: Outcome | undefined;\n let failure: Error | undefined;\n try {\n if (\n testCase.kind === \"close\" ||\n testCase.kind === \"unhandled\" ||\n testCase.kind === \"sigterm\" ||\n testCase.kind === \"sigint\"\n ) {\n await waitForChildExit(child, ACTION_EXIT_TIMEOUT_MS);\n }\n outcome = await assertBrowserState(\n testCase.env,\n info,\n testCase.keepAlive,\n envConfig.apiKey,\n envConfig.projectId,\n );\n } catch (error) {\n failure = error as Error;\n if (logs) {\n dumpLogs(logs);\n }\n throw error;\n } finally {\n logCaseResult(\n testCase.title,\n testCase.envLabel,\n testCase.keepAlive,\n outcome,\n failure,\n );\n await stopChild(child);\n if (testCase.env === \"LOCAL\" && info.connectURL) {\n await closeLocalBrowser(info.connectURL);\n }\n if (testCase.env === \"BROWSERBASE\" && info.sessionId) {\n await endBrowserbaseSession(\n info.sessionId,\n envConfig.apiKey,\n envConfig.projectId,\n );\n }\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["status", "result"]
7
+ }
@@ -0,0 +1,19 @@
1
+ import { test } from "@playwright/test";
2
+ import {
3
+ buildKeepAliveCases,
4
+ getKeepAliveEnvConfig,
5
+ runKeepAliveCase
6
+ } from "./keep-alive.helpers.js";
7
+ test.describe.parallel("keepAlive behavior", () => {
8
+ const { testEnv, apiKey, projectId, hasBrowserbaseCreds } = getKeepAliveEnvConfig();
9
+ const cases = buildKeepAliveCases(testEnv);
10
+ for (const testCase of cases) {
11
+ test(testCase.title, async () => {
12
+ if (testCase.requiresBrowserbase) {
13
+ test.skip(!hasBrowserbaseCreds, "Browserbase credentials required");
14
+ }
15
+ await runKeepAliveCase(testCase, { apiKey, projectId });
16
+ });
17
+ }
18
+ });
19
+ //# sourceMappingURL=keep-alive.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../lib/v3/tests/keep-alive.spec.ts"],
4
+ "sourcesContent": ["import { test } from \"@playwright/test\";\nimport {\n buildKeepAliveCases,\n getKeepAliveEnvConfig,\n runKeepAliveCase,\n} from \"./keep-alive.helpers.js\";\n\ntest.describe.parallel(\"keepAlive behavior\", () => {\n const { testEnv, apiKey, projectId, hasBrowserbaseCreds } =\n getKeepAliveEnvConfig();\n const cases = buildKeepAliveCases(testEnv);\n\n for (const testCase of cases) {\n test(testCase.title, async () => {\n if (testCase.requiresBrowserbase) {\n test.skip(!hasBrowserbaseCreds, \"Browserbase credentials required\");\n }\n\n await runKeepAliveCase(testCase, { apiKey, projectId });\n });\n }\n});\n"],
5
+ "mappings": "AAAA,SAAS,YAAY;AACrB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,KAAK,SAAS,SAAS,sBAAsB,MAAM;AACjD,QAAM,EAAE,SAAS,QAAQ,WAAW,oBAAoB,IACtD,sBAAsB;AACxB,QAAM,QAAQ,oBAAoB,OAAO;AAEzC,aAAW,YAAY,OAAO;AAC5B,SAAK,SAAS,OAAO,YAAY;AAC/B,UAAI,SAAS,qBAAqB;AAChC,aAAK,KAAK,CAAC,qBAAqB,kCAAkC;AAAA,MACpE;AAEA,YAAM,iBAAiB,UAAU,EAAE,QAAQ,UAAU,CAAC;AAAA,IACxD,CAAC;AAAA,EACH;AACF,CAAC;",
6
+ "names": []
7
+ }