@browserbasehq/orca 3.1.0-patch.3 → 3.2.0-preview.1

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 (1460) hide show
  1. package/dist/cjs/cli.js +2 -210
  2. package/dist/cjs/index.d.ts +1 -0
  3. package/dist/cjs/index.js +2 -25025
  4. package/dist/cjs/lib/inference.js +335 -0
  5. package/dist/cjs/lib/inference.js.map +1 -0
  6. package/dist/cjs/lib/inferenceLogUtils.js +99 -0
  7. package/dist/cjs/lib/inferenceLogUtils.js.map +1 -0
  8. package/dist/cjs/lib/logger.js +331 -0
  9. package/dist/cjs/lib/logger.js.map +1 -0
  10. package/dist/cjs/lib/modelUtils.d.ts +1 -0
  11. package/dist/cjs/lib/modelUtils.js +53 -0
  12. package/dist/cjs/lib/modelUtils.js.map +1 -0
  13. package/dist/cjs/lib/prompt.d.ts +3 -2
  14. package/dist/cjs/lib/prompt.js +245 -0
  15. package/dist/cjs/lib/prompt.js.map +1 -0
  16. package/dist/cjs/lib/utils.js +670 -0
  17. package/dist/cjs/lib/utils.js.map +1 -0
  18. package/dist/cjs/lib/v3/agent/AgentClient.js +21 -0
  19. package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -0
  20. package/dist/cjs/lib/v3/agent/AgentProvider.js +81 -0
  21. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -0
  22. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +844 -0
  23. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
  24. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +803 -0
  25. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -0
  26. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +777 -0
  27. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
  28. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +622 -0
  29. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -0
  30. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +3 -1
  31. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +212 -0
  32. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
  33. package/dist/cjs/lib/v3/agent/tools/act.d.ts +2 -2
  34. package/dist/cjs/lib/v3/agent/tools/act.js +75 -0
  35. package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -0
  36. package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  37. package/dist/cjs/lib/v3/agent/tools/ariaTree.js +73 -0
  38. package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -0
  39. package/dist/cjs/lib/v3/agent/tools/click.js +100 -0
  40. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -0
  41. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js +72 -0
  42. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -0
  43. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js +101 -0
  44. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
  45. package/dist/cjs/lib/v3/agent/tools/extract.d.ts +2 -2
  46. package/dist/cjs/lib/v3/agent/tools/extract.js +110 -0
  47. package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -0
  48. package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  49. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +158 -0
  50. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -0
  51. package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +8 -2
  52. package/dist/cjs/lib/v3/agent/tools/fillform.js +90 -0
  53. package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -0
  54. package/dist/cjs/lib/v3/agent/tools/goto.js +35 -0
  55. package/dist/cjs/lib/v3/agent/tools/goto.js.map +1 -0
  56. package/dist/cjs/lib/v3/agent/tools/index.d.ts +11 -1
  57. package/dist/cjs/lib/v3/agent/tools/index.js +78 -0
  58. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -0
  59. package/dist/cjs/lib/v3/agent/tools/keys.js +64 -0
  60. package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -0
  61. package/dist/cjs/lib/v3/agent/tools/navback.js +27 -0
  62. package/dist/cjs/lib/v3/agent/tools/navback.js.map +1 -0
  63. package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +8 -0
  64. package/dist/cjs/lib/v3/agent/tools/screenshot.js +47 -0
  65. package/dist/cjs/lib/v3/agent/tools/screenshot.js.map +1 -0
  66. package/dist/cjs/lib/v3/agent/tools/scroll.js +159 -0
  67. package/dist/cjs/lib/v3/agent/tools/scroll.js.map +1 -0
  68. package/dist/cjs/lib/v3/agent/tools/search.js +77 -0
  69. package/dist/cjs/lib/v3/agent/tools/search.js.map +1 -0
  70. package/dist/cjs/lib/v3/agent/tools/think.js +28 -0
  71. package/dist/cjs/lib/v3/agent/tools/think.js.map +1 -0
  72. package/dist/cjs/lib/v3/agent/tools/type.d.ts +2 -2
  73. package/dist/cjs/lib/v3/agent/tools/type.js +111 -0
  74. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -0
  75. package/dist/cjs/lib/v3/agent/tools/wait.js +63 -0
  76. package/dist/cjs/lib/v3/agent/tools/wait.js.map +1 -0
  77. package/dist/cjs/lib/v3/agent/utils/actionMapping.js +103 -0
  78. package/dist/cjs/lib/v3/agent/utils/actionMapping.js.map +1 -0
  79. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js +33 -0
  80. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
  81. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js +65 -0
  82. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
  83. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js +150 -0
  84. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
  85. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +108 -0
  86. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
  87. package/dist/cjs/lib/v3/agent/utils/imageCompression.js +212 -0
  88. package/dist/cjs/lib/v3/agent/utils/imageCompression.js.map +1 -0
  89. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js +167 -0
  90. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js.map +1 -0
  91. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js +29 -0
  92. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
  93. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js +90 -0
  94. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
  95. package/dist/cjs/lib/v3/agent/utils/variables.d.ts +21 -0
  96. package/dist/cjs/lib/v3/agent/utils/variables.js +54 -0
  97. package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -0
  98. package/dist/cjs/lib/v3/agent/utils/xpath.js +22 -0
  99. package/dist/cjs/lib/v3/agent/utils/xpath.js.map +1 -0
  100. package/dist/cjs/lib/v3/api.d.ts +23 -5
  101. package/dist/cjs/lib/v3/api.js +589 -0
  102. package/dist/cjs/lib/v3/api.js.map +1 -0
  103. package/dist/cjs/lib/v3/cache/ActCache.d.ts +0 -1
  104. package/dist/cjs/lib/v3/cache/ActCache.js +280 -0
  105. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -0
  106. package/dist/cjs/lib/v3/cache/AgentCache.d.ts +1 -0
  107. package/dist/cjs/lib/v3/cache/AgentCache.js +651 -0
  108. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -0
  109. package/dist/cjs/lib/v3/cache/CacheStorage.js +105 -0
  110. package/dist/cjs/lib/v3/cache/CacheStorage.js.map +1 -0
  111. package/dist/cjs/lib/v3/cache/serverAgentCache.js +52 -0
  112. package/dist/cjs/lib/v3/cache/serverAgentCache.js.map +1 -0
  113. package/dist/cjs/lib/v3/cache/utils.js +44 -0
  114. package/dist/cjs/lib/v3/cache/utils.js.map +1 -0
  115. package/dist/cjs/lib/v3/cli.js +15 -0
  116. package/dist/cjs/lib/v3/cli.js.map +1 -0
  117. package/dist/cjs/lib/v3/dom/a11yScripts/index.js +124 -0
  118. package/dist/cjs/lib/v3/dom/a11yScripts/index.js.map +1 -0
  119. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js +23 -0
  120. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
  121. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +59 -0
  122. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
  123. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js +5 -0
  124. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
  125. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js +11 -0
  126. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
  127. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js +5 -0
  128. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js.map +1 -0
  129. package/dist/cjs/lib/v3/dom/index.js +18 -0
  130. package/dist/cjs/lib/v3/dom/index.js.map +1 -0
  131. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js +278 -0
  132. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js.map +1 -0
  133. package/dist/cjs/lib/v3/dom/locatorScripts/index.js +21 -0
  134. package/dist/cjs/lib/v3/dom/locatorScripts/index.js.map +1 -0
  135. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js +474 -0
  136. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
  137. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js +289 -0
  138. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
  139. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js +286 -0
  140. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
  141. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js +381 -0
  142. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
  143. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +202 -0
  144. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
  145. package/dist/cjs/lib/v3/dom/piercer.entry.js +5 -0
  146. package/dist/cjs/lib/v3/dom/piercer.entry.js.map +1 -0
  147. package/dist/cjs/lib/v3/dom/piercer.runtime.js +93 -0
  148. package/dist/cjs/lib/v3/dom/piercer.runtime.js.map +1 -0
  149. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js +5 -0
  150. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
  151. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js +43 -0
  152. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
  153. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js +6 -0
  154. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js.map +1 -0
  155. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js +85 -0
  156. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
  157. package/dist/cjs/lib/v3/external_clients/aisdk.js +107 -0
  158. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -0
  159. package/dist/cjs/lib/v3/external_clients/customOpenAI.js +224 -0
  160. package/dist/cjs/lib/v3/external_clients/customOpenAI.js.map +1 -0
  161. package/dist/cjs/lib/v3/flowLogger.js +881 -0
  162. package/dist/cjs/lib/v3/flowLogger.js.map +1 -0
  163. package/dist/cjs/lib/v3/handlers/actHandler.d.ts +2 -1
  164. package/dist/cjs/lib/v3/handlers/actHandler.js +344 -0
  165. package/dist/cjs/lib/v3/handlers/actHandler.js.map +1 -0
  166. package/dist/cjs/lib/v3/handlers/extractHandler.js +144 -0
  167. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -0
  168. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +604 -0
  169. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
  170. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js +17 -0
  171. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
  172. package/dist/cjs/lib/v3/handlers/observeHandler.js +159 -0
  173. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -0
  174. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +462 -0
  175. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -0
  176. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +532 -0
  177. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
  178. package/dist/cjs/lib/v3/index.d.ts +143 -0
  179. package/dist/cjs/lib/v3/index.js +119 -0
  180. package/dist/cjs/lib/v3/index.js.map +1 -0
  181. package/dist/cjs/lib/v3/launch/browserbase.d.ts +1 -1
  182. package/dist/cjs/lib/v3/launch/browserbase.js +47 -0
  183. package/dist/cjs/lib/v3/launch/browserbase.js.map +1 -0
  184. package/dist/cjs/lib/v3/launch/local.js +104 -0
  185. package/dist/cjs/lib/v3/launch/local.js.map +1 -0
  186. package/dist/cjs/lib/v3/llm/AnthropicClient.js +246 -0
  187. package/dist/cjs/lib/v3/llm/AnthropicClient.js.map +1 -0
  188. package/dist/cjs/lib/v3/llm/CerebrasClient.js +242 -0
  189. package/dist/cjs/lib/v3/llm/CerebrasClient.js.map +1 -0
  190. package/dist/cjs/lib/v3/llm/GoogleClient.js +373 -0
  191. package/dist/cjs/lib/v3/llm/GoogleClient.js.map +1 -0
  192. package/dist/cjs/lib/v3/llm/GroqClient.js +243 -0
  193. package/dist/cjs/lib/v3/llm/GroqClient.js.map +1 -0
  194. package/dist/cjs/lib/v3/llm/LLMClient.js +27 -0
  195. package/dist/cjs/lib/v3/llm/LLMClient.js.map +1 -0
  196. package/dist/cjs/lib/v3/llm/LLMProvider.js +194 -0
  197. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -0
  198. package/dist/cjs/lib/v3/llm/OpenAIClient.js +336 -0
  199. package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -0
  200. package/dist/cjs/lib/v3/llm/aisdk.js +355 -0
  201. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -0
  202. package/dist/cjs/lib/v3/logger.js +102 -0
  203. package/dist/cjs/lib/v3/logger.js.map +1 -0
  204. package/dist/cjs/lib/v3/mcp/connection.d.ts +2 -0
  205. package/dist/cjs/lib/v3/mcp/connection.js +56 -0
  206. package/dist/cjs/lib/v3/mcp/connection.js.map +1 -0
  207. package/dist/cjs/lib/v3/mcp/utils.js +40 -0
  208. package/dist/cjs/lib/v3/mcp/utils.js.map +1 -0
  209. package/dist/cjs/lib/v3/runtimePaths.d.ts +6 -0
  210. package/dist/cjs/lib/v3/runtimePaths.js +119 -0
  211. package/dist/cjs/lib/v3/runtimePaths.js.map +1 -0
  212. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js +36 -0
  213. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js.map +1 -0
  214. package/dist/cjs/lib/v3/shutdown/supervisor.js +193 -0
  215. package/dist/cjs/lib/v3/shutdown/supervisor.js.map +1 -0
  216. package/dist/cjs/lib/v3/shutdown/supervisorClient.js +95 -0
  217. package/dist/cjs/lib/v3/shutdown/supervisorClient.js.map +1 -0
  218. package/dist/cjs/lib/v3/timeoutConfig.d.ts +1 -1
  219. package/dist/cjs/lib/v3/timeoutConfig.js +36 -0
  220. package/dist/cjs/lib/v3/timeoutConfig.js.map +1 -0
  221. package/dist/cjs/lib/v3/types/private/agent.js +3 -0
  222. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -0
  223. package/dist/cjs/lib/v3/types/private/api.js +3 -0
  224. package/dist/cjs/lib/v3/types/private/api.js.map +1 -0
  225. package/dist/cjs/lib/v3/types/private/cache.d.ts +3 -0
  226. package/dist/cjs/lib/v3/types/private/cache.js +3 -0
  227. package/dist/cjs/lib/v3/types/private/cache.js.map +1 -0
  228. package/dist/cjs/lib/v3/types/private/evaluator.js +3 -0
  229. package/dist/cjs/lib/v3/types/private/evaluator.js.map +1 -0
  230. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -1
  231. package/dist/cjs/lib/v3/types/private/handlers.js +19 -0
  232. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -0
  233. package/dist/cjs/lib/v3/types/private/index.js +24 -0
  234. package/dist/cjs/lib/v3/types/private/index.js.map +1 -0
  235. package/dist/cjs/lib/v3/types/private/internal.js +3 -0
  236. package/dist/cjs/lib/v3/types/private/internal.js.map +1 -0
  237. package/dist/cjs/lib/v3/types/private/locator.js +3 -0
  238. package/dist/cjs/lib/v3/types/private/locator.js.map +1 -0
  239. package/dist/cjs/lib/v3/types/private/network.js +6 -0
  240. package/dist/cjs/lib/v3/types/private/network.js.map +1 -0
  241. package/dist/cjs/lib/v3/types/private/shutdown.d.ts +1 -1
  242. package/dist/cjs/lib/v3/types/private/shutdown.js +6 -0
  243. package/dist/cjs/lib/v3/types/private/shutdown.js.map +1 -0
  244. package/dist/cjs/lib/v3/types/private/shutdownErrors.js +28 -0
  245. package/dist/cjs/lib/v3/types/private/shutdownErrors.js.map +1 -0
  246. package/dist/cjs/lib/v3/types/private/snapshot.js +3 -0
  247. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -0
  248. package/dist/cjs/lib/v3/types/public/agent.d.ts +60 -2
  249. package/dist/cjs/lib/v3/types/public/agent.js +18 -0
  250. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -0
  251. package/dist/cjs/lib/v3/types/public/api.d.ts +17 -0
  252. package/dist/cjs/lib/v3/types/public/api.js +922 -0
  253. package/dist/cjs/lib/v3/types/public/api.js.map +1 -0
  254. package/dist/cjs/lib/v3/types/public/apiErrors.js +41 -0
  255. package/dist/cjs/lib/v3/types/public/apiErrors.js.map +1 -0
  256. package/dist/cjs/lib/v3/types/public/context.d.ts +32 -0
  257. package/dist/cjs/lib/v3/types/public/context.js +3 -0
  258. package/dist/cjs/lib/v3/types/public/context.js.map +1 -0
  259. package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
  260. package/dist/cjs/lib/v3/types/public/index.js +56 -0
  261. package/dist/cjs/lib/v3/types/public/index.js.map +1 -0
  262. package/dist/cjs/lib/v3/types/public/locator.js +3 -0
  263. package/dist/cjs/lib/v3/types/public/locator.js.map +1 -0
  264. package/dist/cjs/lib/v3/types/public/logs.js +16 -0
  265. package/dist/cjs/lib/v3/types/public/logs.js.map +1 -0
  266. package/dist/cjs/lib/v3/types/public/methods.d.ts +33 -2
  267. package/dist/cjs/lib/v3/types/public/methods.js +18 -0
  268. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -0
  269. package/dist/cjs/lib/v3/types/public/metrics.js +3 -0
  270. package/dist/cjs/lib/v3/types/public/metrics.js.map +1 -0
  271. package/dist/cjs/lib/v3/types/public/model.d.ts +4 -2
  272. package/dist/cjs/lib/v3/types/public/model.js +3 -0
  273. package/dist/cjs/lib/v3/types/public/model.js.map +1 -0
  274. package/dist/cjs/lib/v3/types/public/options.d.ts +8 -0
  275. package/dist/cjs/lib/v3/types/public/options.js +7 -0
  276. package/dist/cjs/lib/v3/types/public/options.js.map +1 -0
  277. package/dist/cjs/lib/v3/types/public/page.js +8 -0
  278. package/dist/cjs/lib/v3/types/public/page.js.map +1 -0
  279. package/dist/cjs/lib/v3/types/public/screenshotTypes.js +3 -0
  280. package/dist/cjs/lib/v3/types/public/screenshotTypes.js.map +1 -0
  281. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +13 -0
  282. package/dist/cjs/lib/v3/types/public/sdkErrors.js +390 -0
  283. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -0
  284. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +204 -0
  285. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
  286. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js +124 -0
  287. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
  288. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +345 -0
  289. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
  290. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +132 -0
  291. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
  292. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js +285 -0
  293. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
  294. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  295. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js +226 -0
  296. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
  297. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js +12 -0
  298. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
  299. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js +26 -0
  300. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
  301. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +143 -0
  302. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
  303. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js +110 -0
  304. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
  305. package/dist/cjs/lib/v3/understudy/a11yInvocation.js +15 -0
  306. package/dist/cjs/lib/v3/understudy/a11yInvocation.js.map +1 -0
  307. package/dist/cjs/lib/v3/understudy/cdp.d.ts +6 -1
  308. package/dist/cjs/lib/v3/understudy/cdp.js +317 -0
  309. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -0
  310. package/dist/cjs/lib/v3/understudy/consoleMessage.js +70 -0
  311. package/dist/cjs/lib/v3/understudy/consoleMessage.js.map +1 -0
  312. package/dist/cjs/lib/v3/understudy/context.d.ts +34 -0
  313. package/dist/cjs/lib/v3/understudy/context.js +960 -0
  314. package/dist/cjs/lib/v3/understudy/context.js.map +1 -0
  315. package/dist/cjs/lib/v3/understudy/cookies.d.ts +32 -0
  316. package/dist/cjs/lib/v3/understudy/cookies.js +142 -0
  317. package/dist/cjs/lib/v3/understudy/cookies.js.map +1 -0
  318. package/dist/cjs/lib/v3/understudy/deepLocator.js +204 -0
  319. package/dist/cjs/lib/v3/understudy/deepLocator.js.map +1 -0
  320. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js +87 -0
  321. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js.map +1 -0
  322. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js +88 -0
  323. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js.map +1 -0
  324. package/dist/cjs/lib/v3/understudy/frame.js +232 -0
  325. package/dist/cjs/lib/v3/understudy/frame.js.map +1 -0
  326. package/dist/cjs/lib/v3/understudy/frameLocator.js +260 -0
  327. package/dist/cjs/lib/v3/understudy/frameLocator.js.map +1 -0
  328. package/dist/cjs/lib/v3/understudy/frameRegistry.js +302 -0
  329. package/dist/cjs/lib/v3/understudy/frameRegistry.js.map +1 -0
  330. package/dist/cjs/lib/v3/understudy/initScripts.js +36 -0
  331. package/dist/cjs/lib/v3/understudy/initScripts.js.map +1 -0
  332. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js +249 -0
  333. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
  334. package/dist/cjs/lib/v3/understudy/locator.js +790 -0
  335. package/dist/cjs/lib/v3/understudy/locator.js.map +1 -0
  336. package/dist/cjs/lib/v3/understudy/locatorInvocation.js +15 -0
  337. package/dist/cjs/lib/v3/understudy/locatorInvocation.js.map +1 -0
  338. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js +228 -0
  339. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
  340. package/dist/cjs/lib/v3/understudy/networkManager.js +310 -0
  341. package/dist/cjs/lib/v3/understudy/networkManager.js.map +1 -0
  342. package/dist/cjs/lib/v3/understudy/page.d.ts +13 -0
  343. package/dist/cjs/lib/v3/understudy/page.js +1998 -0
  344. package/dist/cjs/lib/v3/understudy/page.js.map +1 -0
  345. package/dist/cjs/lib/v3/understudy/piercer.js +65 -0
  346. package/dist/cjs/lib/v3/understudy/piercer.js.map +1 -0
  347. package/dist/cjs/lib/v3/understudy/response.js +335 -0
  348. package/dist/cjs/lib/v3/understudy/response.js.map +1 -0
  349. package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  350. package/dist/cjs/lib/v3/understudy/screenshotUtils.js +345 -0
  351. package/dist/cjs/lib/v3/understudy/screenshotUtils.js.map +1 -0
  352. package/dist/cjs/lib/v3/understudy/selectorResolver.js +300 -0
  353. package/dist/cjs/lib/v3/understudy/selectorResolver.js.map +1 -0
  354. package/dist/cjs/lib/v3/v3.js +1631 -0
  355. package/dist/cjs/lib/v3/v3.js.map +1 -0
  356. package/dist/cjs/lib/v3/zodCompat.js +26 -0
  357. package/dist/cjs/lib/v3/zodCompat.js.map +1 -0
  358. package/dist/cjs/lib/v3Evaluator.js +214 -0
  359. package/dist/cjs/lib/v3Evaluator.js.map +1 -0
  360. package/dist/cjs/lib/version.d.ts +1 -1
  361. package/dist/cjs/lib/version.js +9 -0
  362. package/dist/cjs/lib/version.js.map +1 -0
  363. package/dist/cjs/tests/cache-variables.test.js +221 -0
  364. package/dist/cjs/tests/cache-variables.test.js.map +1 -0
  365. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +123 -0
  366. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +1 -0
  367. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +83 -0
  368. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  369. package/dist/cjs/tests/integration/agent-callbacks.spec.js +385 -0
  370. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +1 -0
  371. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +362 -0
  372. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  373. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +262 -0
  374. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  375. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +112 -0
  376. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +1 -0
  377. package/dist/cjs/tests/integration/agent-streaming.spec.js +140 -0
  378. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +1 -0
  379. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  380. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +41 -0
  381. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  382. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  383. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +76 -0
  384. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +1 -0
  385. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  386. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +45 -0
  387. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +1 -0
  388. package/dist/cjs/tests/integration/click-count.spec.d.ts +1 -0
  389. package/dist/cjs/tests/integration/click-count.spec.js +163 -0
  390. package/dist/cjs/tests/integration/click-count.spec.js.map +1 -0
  391. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  392. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +99 -0
  393. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  394. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +1 -0
  395. package/dist/cjs/tests/integration/context-addInitScript.spec.js +285 -0
  396. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +1 -0
  397. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  398. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +49 -0
  399. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  400. package/dist/cjs/tests/integration/cookies.spec.d.ts +1 -0
  401. package/dist/cjs/tests/integration/cookies.spec.js +187 -0
  402. package/dist/cjs/tests/integration/cookies.spec.js.map +1 -0
  403. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +1 -0
  404. package/dist/cjs/tests/integration/default-page-tracking.spec.js +52 -0
  405. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +1 -0
  406. package/dist/cjs/tests/integration/downloads.spec.d.ts +1 -0
  407. package/dist/cjs/tests/integration/downloads.spec.js +52 -0
  408. package/dist/cjs/tests/integration/downloads.spec.js.map +1 -0
  409. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  410. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +57 -0
  411. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  412. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  413. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +219 -0
  414. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  415. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  416. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +474 -0
  417. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  418. package/dist/cjs/tests/integration/keep-alive.child.d.ts +1 -0
  419. package/dist/cjs/tests/integration/keep-alive.child.js +85 -0
  420. package/dist/cjs/tests/integration/keep-alive.child.js.map +1 -0
  421. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +22 -0
  422. package/dist/cjs/tests/integration/keep-alive.spec.js +490 -0
  423. package/dist/cjs/tests/integration/keep-alive.spec.js.map +1 -0
  424. package/dist/cjs/tests/integration/keyboard.spec.d.ts +1 -0
  425. package/dist/cjs/tests/integration/keyboard.spec.js +259 -0
  426. package/dist/cjs/tests/integration/keyboard.spec.js.map +1 -0
  427. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  428. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +150 -0
  429. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  430. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +1 -0
  431. package/dist/cjs/tests/integration/locator-content-methods.spec.js +180 -0
  432. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +1 -0
  433. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  434. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +129 -0
  435. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +1 -0
  436. package/dist/cjs/tests/integration/locator-count.spec.d.ts +1 -0
  437. package/dist/cjs/tests/integration/locator-count.spec.js +68 -0
  438. package/dist/cjs/tests/integration/locator-count.spec.js.map +1 -0
  439. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +1 -0
  440. package/dist/cjs/tests/integration/locator-fill.spec.js +117 -0
  441. package/dist/cjs/tests/integration/locator-fill.spec.js.map +1 -0
  442. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +1 -0
  443. package/dist/cjs/tests/integration/locator-input-methods.spec.js +127 -0
  444. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +1 -0
  445. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +1 -0
  446. package/dist/cjs/tests/integration/locator-nth.spec.js +175 -0
  447. package/dist/cjs/tests/integration/locator-nth.spec.js.map +1 -0
  448. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +1 -0
  449. package/dist/cjs/tests/integration/locator-select-option.spec.js +216 -0
  450. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +1 -0
  451. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +1 -0
  452. package/dist/cjs/tests/integration/logger-initialization.spec.js +597 -0
  453. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +1 -0
  454. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  455. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +293 -0
  456. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +1 -0
  457. package/dist/cjs/tests/integration/nested-div.spec.d.ts +1 -0
  458. package/dist/cjs/tests/integration/nested-div.spec.js +22 -0
  459. package/dist/cjs/tests/integration/nested-div.spec.js.map +1 -0
  460. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +1 -0
  461. package/dist/cjs/tests/integration/page-addInitScript.spec.js +94 -0
  462. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +1 -0
  463. package/dist/cjs/tests/integration/page-console.spec.d.ts +1 -0
  464. package/dist/cjs/tests/integration/page-console.spec.js +47 -0
  465. package/dist/cjs/tests/integration/page-console.spec.js.map +1 -0
  466. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  467. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +437 -0
  468. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  469. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  470. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +85 -0
  471. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  472. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +1 -0
  473. package/dist/cjs/tests/integration/page-goto-response.spec.js +34 -0
  474. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +1 -0
  475. package/dist/cjs/tests/integration/page-hover.spec.d.ts +1 -0
  476. package/dist/cjs/tests/integration/page-hover.spec.js +165 -0
  477. package/dist/cjs/tests/integration/page-hover.spec.js.map +1 -0
  478. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +1 -0
  479. package/dist/cjs/tests/integration/page-screenshot.spec.js +292 -0
  480. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +1 -0
  481. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +1 -0
  482. package/dist/cjs/tests/integration/page-scroll.spec.js +183 -0
  483. package/dist/cjs/tests/integration/page-scroll.spec.js.map +1 -0
  484. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +1 -0
  485. package/dist/cjs/tests/integration/page-send-cdp.spec.js +47 -0
  486. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +1 -0
  487. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  488. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +63 -0
  489. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +1 -0
  490. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +1 -0
  491. package/dist/cjs/tests/integration/setinputfiles.spec.js +133 -0
  492. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +1 -0
  493. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  494. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +161 -0
  495. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  496. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  497. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +160 -0
  498. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  499. package/dist/cjs/tests/integration/testUtils.d.ts +7 -0
  500. package/dist/cjs/tests/integration/testUtils.js +44 -0
  501. package/dist/cjs/tests/integration/testUtils.js.map +1 -0
  502. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  503. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +105 -0
  504. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +1 -0
  505. package/dist/cjs/tests/integration/timeouts.spec.d.ts +1 -0
  506. package/dist/cjs/tests/integration/timeouts.spec.js +197 -0
  507. package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -0
  508. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +1 -0
  509. package/dist/cjs/tests/integration/user-data-dir.spec.js +77 -0
  510. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +1 -0
  511. package/dist/cjs/tests/integration/v3.config.d.ts +4 -0
  512. package/dist/cjs/tests/integration/v3.config.js +11 -0
  513. package/dist/cjs/tests/integration/v3.config.js.map +1 -0
  514. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +4 -0
  515. package/dist/cjs/tests/integration/v3.dynamic.config.js +48 -0
  516. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +1 -0
  517. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +2 -0
  518. package/dist/cjs/tests/integration/v3.playwright.config.js +48 -0
  519. package/dist/cjs/tests/integration/v3.playwright.config.js.map +1 -0
  520. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +1 -0
  521. package/dist/cjs/tests/integration/wait-for-selector.spec.js +683 -0
  522. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +1 -0
  523. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  524. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +118 -0
  525. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +1 -0
  526. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  527. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +87 -0
  528. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  529. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +1 -0
  530. package/dist/cjs/tests/unit/agent-execution-model.test.js +128 -0
  531. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -0
  532. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +1 -0
  533. package/dist/cjs/tests/unit/api-multiregion.test.js +58 -0
  534. package/dist/cjs/tests/unit/api-multiregion.test.js.map +1 -0
  535. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  536. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +102 -0
  537. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  538. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  539. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +186 -0
  540. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +1 -0
  541. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +1 -0
  542. package/dist/cjs/tests/unit/cdp-connection-close.test.js +74 -0
  543. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +1 -0
  544. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  545. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +58 -0
  546. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +1 -0
  547. package/dist/cjs/tests/unit/cookies.test.d.ts +1 -0
  548. package/dist/cjs/tests/unit/cookies.test.js +944 -0
  549. package/dist/cjs/tests/unit/cookies.test.js.map +1 -0
  550. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  551. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +29 -0
  552. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +1 -0
  553. package/dist/cjs/tests/unit/llm-provider.test.d.ts +1 -0
  554. package/dist/cjs/tests/unit/llm-provider.test.js +64 -0
  555. package/dist/cjs/tests/unit/llm-provider.test.js.map +1 -0
  556. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +1 -0
  557. package/dist/cjs/tests/unit/model-deprecation.test.js +142 -0
  558. package/dist/cjs/tests/unit/model-deprecation.test.js.map +1 -0
  559. package/dist/cjs/tests/unit/model-utils.test.d.ts +1 -0
  560. package/dist/cjs/tests/unit/model-utils.test.js +42 -0
  561. package/dist/cjs/tests/unit/model-utils.test.js.map +1 -0
  562. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  563. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +92 -0
  564. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +1 -0
  565. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +1 -0
  566. package/dist/cjs/tests/unit/page-snapshot.test.js +75 -0
  567. package/dist/cjs/tests/unit/page-snapshot.test.js.map +1 -0
  568. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +1 -0
  569. package/dist/cjs/tests/unit/public-api/export-surface.test.js +107 -0
  570. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +1 -0
  571. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  572. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +175 -0
  573. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  574. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  575. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +110 -0
  576. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +1 -0
  577. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +1 -0
  578. package/dist/cjs/tests/unit/public-api/public-types.test.js +99 -0
  579. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -0
  580. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  581. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +60 -0
  582. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  583. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  584. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +95 -0
  585. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +1 -0
  586. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  587. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +121 -0
  588. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  589. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  590. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +65 -0
  591. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  592. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +1 -0
  593. package/dist/cjs/tests/unit/public-api/v3-core.test.js +108 -0
  594. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +1 -0
  595. package/dist/cjs/tests/unit/rerender-missing-shadows.test.d.ts +1 -0
  596. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js +209 -0
  597. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js.map +1 -0
  598. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +1 -0
  599. package/dist/cjs/tests/unit/safety-confirmation.test.js +110 -0
  600. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +1 -0
  601. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  602. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +330 -0
  603. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  604. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  605. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +286 -0
  606. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  607. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  608. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +394 -0
  609. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  610. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +1 -0
  611. package/dist/cjs/tests/unit/snapshot-cbor.test.js +204 -0
  612. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +1 -0
  613. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  614. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +220 -0
  615. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  616. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  617. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +107 -0
  618. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  619. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  620. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +89 -0
  621. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  622. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  623. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +335 -0
  624. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  625. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  626. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +84 -0
  627. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  628. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  629. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +74 -0
  630. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  631. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +1 -0
  632. package/dist/cjs/tests/unit/timeout-handlers.test.js +847 -0
  633. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -0
  634. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +1 -0
  635. package/dist/cjs/tests/unit/understudy-command-exception.test.js +57 -0
  636. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +1 -0
  637. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +1 -0
  638. package/dist/cjs/tests/unit/xpath-parser.test.js +311 -0
  639. package/dist/cjs/tests/unit/xpath-parser.test.js.map +1 -0
  640. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +1 -0
  641. package/dist/cjs/tests/unit/xpath-resolver.test.js +80 -0
  642. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +1 -0
  643. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  644. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +149 -0
  645. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  646. package/dist/esm/index.d.ts +1 -2
  647. package/dist/esm/index.js +1 -2
  648. package/dist/esm/lib/inference.js +5 -8
  649. package/dist/esm/lib/inference.js.map +1 -1
  650. package/dist/esm/lib/modelUtils.d.ts +1 -0
  651. package/dist/esm/lib/modelUtils.js.map +1 -1
  652. package/dist/esm/lib/prompt.d.ts +3 -2
  653. package/dist/esm/lib/prompt.js.map +1 -1
  654. package/dist/esm/lib/v3/agent/AgentProvider.js +1 -1
  655. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  656. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +17 -2
  657. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  658. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +4 -4
  659. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  660. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +3 -1
  661. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +24 -1
  662. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  663. package/dist/esm/lib/v3/agent/tools/act.d.ts +2 -2
  664. package/dist/esm/lib/v3/agent/tools/act.js +66 -44
  665. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
  666. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  667. package/dist/esm/lib/v3/agent/tools/ariaTree.js +60 -22
  668. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
  669. package/dist/esm/lib/v3/agent/tools/click.js +23 -31
  670. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  671. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +22 -30
  672. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  673. package/dist/esm/lib/v3/agent/tools/extract.d.ts +2 -2
  674. package/dist/esm/lib/v3/agent/tools/extract.js +16 -3
  675. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
  676. package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  677. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +109 -98
  678. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  679. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +8 -2
  680. package/dist/esm/lib/v3/agent/tools/fillform.js +82 -52
  681. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
  682. package/dist/esm/lib/v3/agent/tools/index.d.ts +11 -1
  683. package/dist/esm/lib/v3/agent/tools/index.js +8 -7
  684. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  685. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +8 -0
  686. package/dist/esm/lib/v3/agent/tools/screenshot.js +32 -15
  687. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -1
  688. package/dist/esm/lib/v3/agent/tools/scroll.js +12 -0
  689. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -1
  690. package/dist/esm/lib/v3/agent/tools/type.d.ts +2 -2
  691. package/dist/esm/lib/v3/agent/tools/type.js +80 -79
  692. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  693. package/dist/esm/lib/v3/agent/tools/wait.js +6 -0
  694. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -1
  695. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
  696. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  697. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +8 -0
  698. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -1
  699. package/dist/esm/lib/v3/agent/utils/variables.d.ts +21 -0
  700. package/dist/esm/lib/v3/agent/utils/variables.js +48 -0
  701. package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -0
  702. package/dist/esm/lib/v3/api.d.ts +23 -5
  703. package/dist/esm/lib/v3/api.js +74 -13
  704. package/dist/esm/lib/v3/api.js.map +1 -1
  705. package/dist/esm/lib/v3/cache/ActCache.d.ts +0 -1
  706. package/dist/esm/lib/v3/cache/ActCache.js +2 -18
  707. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  708. package/dist/esm/lib/v3/cache/AgentCache.d.ts +1 -0
  709. package/dist/esm/lib/v3/cache/AgentCache.js +18 -11
  710. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  711. package/dist/esm/lib/v3/handlers/actHandler.d.ts +2 -1
  712. package/dist/esm/lib/v3/handlers/actHandler.js +4 -4
  713. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -1
  714. package/dist/esm/lib/v3/handlers/extractHandler.js +2 -2
  715. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  716. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +0 -27
  717. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  718. package/dist/esm/lib/v3/handlers/observeHandler.js +1 -2
  719. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  720. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +13 -16
  721. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  722. package/dist/esm/lib/v3/index.d.ts +143 -0
  723. package/dist/esm/lib/v3/index.js +41 -0
  724. package/dist/esm/lib/v3/index.js.map +1 -1
  725. package/dist/esm/lib/v3/launch/browserbase.d.ts +1 -1
  726. package/dist/esm/lib/v3/launch/browserbase.js +4 -9
  727. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -1
  728. package/dist/esm/lib/v3/llm/LLMProvider.js +0 -5
  729. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  730. package/dist/esm/lib/v3/llm/OpenAIClient.js +2 -2
  731. package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
  732. package/dist/esm/lib/v3/mcp/connection.d.ts +2 -0
  733. package/dist/esm/lib/v3/mcp/connection.js +5 -2
  734. package/dist/esm/lib/v3/mcp/connection.js.map +1 -1
  735. package/dist/esm/lib/v3/runtimePaths.d.ts +6 -0
  736. package/dist/esm/lib/v3/runtimePaths.js +107 -0
  737. package/dist/esm/lib/v3/runtimePaths.js.map +1 -0
  738. package/dist/esm/lib/v3/shutdown/supervisor.js +2 -2
  739. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
  740. package/dist/esm/lib/v3/shutdown/supervisorClient.js +9 -14
  741. package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -1
  742. package/dist/esm/lib/v3/timeoutConfig.d.ts +1 -1
  743. package/dist/esm/lib/v3/timeoutConfig.js +5 -0
  744. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -1
  745. package/dist/esm/lib/v3/types/private/cache.d.ts +3 -0
  746. package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
  747. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -1
  748. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  749. package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -1
  750. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
  751. package/dist/esm/lib/v3/types/public/agent.d.ts +60 -2
  752. package/dist/esm/lib/v3/types/public/agent.js +1 -1
  753. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  754. package/dist/esm/lib/v3/types/public/api.d.ts +17 -0
  755. package/dist/esm/lib/v3/types/public/api.js +3 -2
  756. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  757. package/dist/esm/lib/v3/types/public/context.d.ts +32 -0
  758. package/dist/esm/lib/v3/types/public/context.js +2 -0
  759. package/dist/esm/lib/v3/types/public/context.js.map +1 -0
  760. package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
  761. package/dist/esm/lib/v3/types/public/index.js +1 -0
  762. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  763. package/dist/esm/lib/v3/types/public/methods.d.ts +33 -2
  764. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  765. package/dist/esm/lib/v3/types/public/model.d.ts +4 -2
  766. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  767. package/dist/esm/lib/v3/types/public/options.d.ts +8 -0
  768. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  769. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +13 -0
  770. package/dist/esm/lib/v3/types/public/sdkErrors.js +22 -0
  771. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  772. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  773. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +1 -1
  774. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -1
  775. package/dist/esm/lib/v3/understudy/cdp.d.ts +6 -1
  776. package/dist/esm/lib/v3/understudy/cdp.js +65 -7
  777. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  778. package/dist/esm/lib/v3/understudy/context.d.ts +34 -0
  779. package/dist/esm/lib/v3/understudy/context.js +327 -67
  780. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  781. package/dist/esm/lib/v3/understudy/cookies.d.ts +32 -0
  782. package/dist/esm/lib/v3/understudy/cookies.js +136 -0
  783. package/dist/esm/lib/v3/understudy/cookies.js.map +1 -0
  784. package/dist/esm/lib/v3/understudy/deepLocator.js +1 -23
  785. package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -1
  786. package/dist/esm/lib/v3/understudy/frame.js +24 -7
  787. package/dist/esm/lib/v3/understudy/frame.js.map +1 -1
  788. package/dist/esm/lib/v3/understudy/page.d.ts +13 -0
  789. package/dist/esm/lib/v3/understudy/page.js +58 -5
  790. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  791. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  792. package/dist/esm/lib/v3/understudy/screenshotUtils.js +1 -19
  793. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -1
  794. package/dist/esm/lib/v3/understudy/selectorResolver.js +1 -1
  795. package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -1
  796. package/dist/esm/lib/v3/v3.js +59 -35
  797. package/dist/esm/lib/v3/v3.js.map +1 -1
  798. package/dist/esm/lib/version.d.ts +1 -1
  799. package/dist/esm/lib/version.js +1 -1
  800. package/dist/esm/lib/version.js.map +1 -1
  801. package/dist/esm/tests/cache-variables.test.d.ts +1 -0
  802. package/dist/esm/tests/cache-variables.test.js +219 -0
  803. package/dist/esm/tests/cache-variables.test.js.map +1 -0
  804. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +1 -0
  805. package/dist/esm/tests/integration/agent-abort-signal.spec.js +121 -0
  806. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +1 -0
  807. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +1 -0
  808. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +78 -0
  809. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  810. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +1 -0
  811. package/dist/esm/tests/integration/agent-callbacks.spec.js +383 -0
  812. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +1 -0
  813. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +1 -0
  814. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +360 -0
  815. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  816. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +1 -0
  817. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +260 -0
  818. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  819. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +1 -0
  820. package/dist/esm/tests/integration/agent-message-continuation.spec.js +110 -0
  821. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +1 -0
  822. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +1 -0
  823. package/dist/esm/tests/integration/agent-streaming.spec.js +138 -0
  824. package/dist/esm/tests/integration/agent-streaming.spec.js.map +1 -0
  825. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  826. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +39 -0
  827. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  828. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  829. package/dist/esm/tests/integration/cdp-connection-close.spec.js +74 -0
  830. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +1 -0
  831. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  832. package/dist/esm/tests/integration/cdp-session-detached.spec.js +43 -0
  833. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +1 -0
  834. package/dist/esm/tests/integration/click-count.spec.d.ts +1 -0
  835. package/dist/esm/tests/integration/click-count.spec.js +161 -0
  836. package/dist/esm/tests/integration/click-count.spec.js.map +1 -0
  837. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  838. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +97 -0
  839. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  840. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +1 -0
  841. package/dist/esm/tests/integration/context-addInitScript.spec.js +283 -0
  842. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +1 -0
  843. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  844. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +47 -0
  845. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  846. package/dist/esm/tests/integration/cookies.spec.d.ts +1 -0
  847. package/dist/esm/tests/integration/cookies.spec.js +185 -0
  848. package/dist/esm/tests/integration/cookies.spec.js.map +1 -0
  849. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +1 -0
  850. package/dist/esm/tests/integration/default-page-tracking.spec.js +50 -0
  851. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +1 -0
  852. package/dist/esm/tests/integration/downloads.spec.d.ts +1 -0
  853. package/dist/esm/tests/integration/downloads.spec.js +47 -0
  854. package/dist/esm/tests/integration/downloads.spec.js.map +1 -0
  855. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  856. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +55 -0
  857. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  858. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  859. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +217 -0
  860. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  861. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  862. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +472 -0
  863. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  864. package/dist/esm/tests/integration/keep-alive.child.d.ts +1 -0
  865. package/dist/esm/tests/integration/keep-alive.child.js +83 -0
  866. package/dist/esm/tests/integration/keep-alive.child.js.map +1 -0
  867. package/dist/esm/tests/integration/keep-alive.spec.d.ts +22 -0
  868. package/dist/esm/tests/integration/keep-alive.spec.js +482 -0
  869. package/dist/esm/tests/integration/keep-alive.spec.js.map +1 -0
  870. package/dist/esm/tests/integration/keyboard.spec.d.ts +1 -0
  871. package/dist/esm/tests/integration/keyboard.spec.js +257 -0
  872. package/dist/esm/tests/integration/keyboard.spec.js.map +1 -0
  873. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  874. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +148 -0
  875. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  876. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +1 -0
  877. package/dist/esm/tests/integration/locator-content-methods.spec.js +178 -0
  878. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +1 -0
  879. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  880. package/dist/esm/tests/integration/locator-count-iframe.spec.js +127 -0
  881. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +1 -0
  882. package/dist/esm/tests/integration/locator-count.spec.d.ts +1 -0
  883. package/dist/esm/tests/integration/locator-count.spec.js +66 -0
  884. package/dist/esm/tests/integration/locator-count.spec.js.map +1 -0
  885. package/dist/esm/tests/integration/locator-fill.spec.d.ts +1 -0
  886. package/dist/esm/tests/integration/locator-fill.spec.js +115 -0
  887. package/dist/esm/tests/integration/locator-fill.spec.js.map +1 -0
  888. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +1 -0
  889. package/dist/esm/tests/integration/locator-input-methods.spec.js +125 -0
  890. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +1 -0
  891. package/dist/esm/tests/integration/locator-nth.spec.d.ts +1 -0
  892. package/dist/esm/tests/integration/locator-nth.spec.js +173 -0
  893. package/dist/esm/tests/integration/locator-nth.spec.js.map +1 -0
  894. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +1 -0
  895. package/dist/esm/tests/integration/locator-select-option.spec.js +214 -0
  896. package/dist/esm/tests/integration/locator-select-option.spec.js.map +1 -0
  897. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +1 -0
  898. package/dist/esm/tests/integration/logger-initialization.spec.js +595 -0
  899. package/dist/esm/tests/integration/logger-initialization.spec.js.map +1 -0
  900. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  901. package/dist/esm/tests/integration/multi-instance-logger.spec.js +291 -0
  902. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +1 -0
  903. package/dist/esm/tests/integration/nested-div.spec.d.ts +1 -0
  904. package/dist/esm/tests/integration/nested-div.spec.js +20 -0
  905. package/dist/esm/tests/integration/nested-div.spec.js.map +1 -0
  906. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +1 -0
  907. package/dist/esm/tests/integration/page-addInitScript.spec.js +92 -0
  908. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +1 -0
  909. package/dist/esm/tests/integration/page-console.spec.d.ts +1 -0
  910. package/dist/esm/tests/integration/page-console.spec.js +45 -0
  911. package/dist/esm/tests/integration/page-console.spec.js.map +1 -0
  912. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  913. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +435 -0
  914. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  915. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  916. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +83 -0
  917. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  918. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +1 -0
  919. package/dist/esm/tests/integration/page-goto-response.spec.js +32 -0
  920. package/dist/esm/tests/integration/page-goto-response.spec.js.map +1 -0
  921. package/dist/esm/tests/integration/page-hover.spec.d.ts +1 -0
  922. package/dist/esm/tests/integration/page-hover.spec.js +163 -0
  923. package/dist/esm/tests/integration/page-hover.spec.js.map +1 -0
  924. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +1 -0
  925. package/dist/esm/tests/integration/page-screenshot.spec.js +257 -0
  926. package/dist/esm/tests/integration/page-screenshot.spec.js.map +1 -0
  927. package/dist/esm/tests/integration/page-scroll.spec.d.ts +1 -0
  928. package/dist/esm/tests/integration/page-scroll.spec.js +181 -0
  929. package/dist/esm/tests/integration/page-scroll.spec.js.map +1 -0
  930. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +1 -0
  931. package/dist/esm/tests/integration/page-send-cdp.spec.js +45 -0
  932. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +1 -0
  933. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  934. package/dist/esm/tests/integration/perform-understudy-method.spec.js +61 -0
  935. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +1 -0
  936. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +1 -0
  937. package/dist/esm/tests/integration/setinputfiles.spec.js +128 -0
  938. package/dist/esm/tests/integration/setinputfiles.spec.js.map +1 -0
  939. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  940. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +156 -0
  941. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  942. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  943. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +155 -0
  944. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  945. package/dist/esm/tests/integration/testUtils.d.ts +7 -0
  946. package/dist/esm/tests/integration/testUtils.js +40 -0
  947. package/dist/esm/tests/integration/testUtils.js.map +1 -0
  948. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  949. package/dist/esm/tests/integration/text-selector-innermost.spec.js +103 -0
  950. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +1 -0
  951. package/dist/esm/tests/integration/timeouts.spec.d.ts +1 -0
  952. package/dist/esm/tests/integration/timeouts.spec.js +195 -0
  953. package/dist/esm/tests/integration/timeouts.spec.js.map +1 -0
  954. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +1 -0
  955. package/dist/esm/tests/integration/user-data-dir.spec.js +42 -0
  956. package/dist/esm/tests/integration/user-data-dir.spec.js.map +1 -0
  957. package/dist/esm/tests/integration/v3.config.d.ts +4 -0
  958. package/dist/esm/tests/integration/v3.config.js +7 -0
  959. package/dist/esm/tests/integration/v3.config.js.map +1 -0
  960. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +4 -0
  961. package/dist/esm/tests/integration/v3.dynamic.config.js +44 -0
  962. package/dist/esm/tests/integration/v3.dynamic.config.js.map +1 -0
  963. package/dist/esm/tests/integration/v3.playwright.config.d.ts +2 -0
  964. package/dist/esm/tests/integration/v3.playwright.config.js +46 -0
  965. package/dist/esm/tests/integration/v3.playwright.config.js.map +1 -0
  966. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +1 -0
  967. package/dist/esm/tests/integration/wait-for-selector.spec.js +681 -0
  968. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +1 -0
  969. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  970. package/dist/esm/tests/integration/wait-for-timeout.spec.js +116 -0
  971. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +1 -0
  972. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  973. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +85 -0
  974. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  975. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +1 -0
  976. package/dist/esm/tests/unit/agent-execution-model.test.js +126 -0
  977. package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -0
  978. package/dist/esm/tests/unit/api-multiregion.test.d.ts +1 -0
  979. package/dist/esm/tests/unit/api-multiregion.test.js +56 -0
  980. package/dist/esm/tests/unit/api-multiregion.test.js.map +1 -0
  981. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  982. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +100 -0
  983. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  984. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  985. package/dist/esm/tests/unit/cache-llm-resolution.test.js +184 -0
  986. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +1 -0
  987. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +1 -0
  988. package/dist/esm/tests/unit/cdp-connection-close.test.js +72 -0
  989. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +1 -0
  990. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  991. package/dist/esm/tests/unit/context-extra-http-headers.test.js +56 -0
  992. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +1 -0
  993. package/dist/esm/tests/unit/cookies.test.d.ts +1 -0
  994. package/dist/esm/tests/unit/cookies.test.js +909 -0
  995. package/dist/esm/tests/unit/cookies.test.js.map +1 -0
  996. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  997. package/dist/esm/tests/unit/helpers/mockCDPSession.js +25 -0
  998. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +1 -0
  999. package/dist/esm/tests/unit/llm-provider.test.d.ts +1 -0
  1000. package/dist/esm/tests/unit/llm-provider.test.js +62 -0
  1001. package/dist/esm/tests/unit/llm-provider.test.js.map +1 -0
  1002. package/dist/esm/tests/unit/model-deprecation.test.d.ts +1 -0
  1003. package/dist/esm/tests/unit/model-deprecation.test.js +140 -0
  1004. package/dist/esm/tests/unit/model-deprecation.test.js.map +1 -0
  1005. package/dist/esm/tests/unit/model-utils.test.d.ts +1 -0
  1006. package/dist/esm/tests/unit/model-utils.test.js +40 -0
  1007. package/dist/esm/tests/unit/model-utils.test.js.map +1 -0
  1008. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  1009. package/dist/esm/tests/unit/page-extra-http-headers.test.js +90 -0
  1010. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +1 -0
  1011. package/dist/esm/tests/unit/page-snapshot.test.d.ts +1 -0
  1012. package/dist/esm/tests/unit/page-snapshot.test.js +40 -0
  1013. package/dist/esm/tests/unit/page-snapshot.test.js.map +1 -0
  1014. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +1 -0
  1015. package/dist/esm/tests/unit/public-api/export-surface.test.js +72 -0
  1016. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +1 -0
  1017. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  1018. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +140 -0
  1019. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  1020. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  1021. package/dist/esm/tests/unit/public-api/public-error-types.test.js +74 -0
  1022. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +1 -0
  1023. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +1 -0
  1024. package/dist/esm/tests/unit/public-api/public-types.test.js +97 -0
  1025. package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -0
  1026. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  1027. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +25 -0
  1028. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  1029. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  1030. package/dist/esm/tests/unit/public-api/schema-utils.test.js +60 -0
  1031. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +1 -0
  1032. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  1033. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +86 -0
  1034. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  1035. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  1036. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +30 -0
  1037. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  1038. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +1 -0
  1039. package/dist/esm/tests/unit/public-api/v3-core.test.js +73 -0
  1040. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +1 -0
  1041. package/dist/esm/tests/unit/rerender-missing-shadows.test.d.ts +1 -0
  1042. package/dist/esm/tests/unit/rerender-missing-shadows.test.js +207 -0
  1043. package/dist/esm/tests/unit/rerender-missing-shadows.test.js.map +1 -0
  1044. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +1 -0
  1045. package/dist/esm/tests/unit/safety-confirmation.test.js +108 -0
  1046. package/dist/esm/tests/unit/safety-confirmation.test.js.map +1 -0
  1047. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  1048. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +295 -0
  1049. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  1050. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  1051. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +284 -0
  1052. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  1053. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  1054. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +359 -0
  1055. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  1056. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +1 -0
  1057. package/dist/esm/tests/unit/snapshot-cbor.test.js +202 -0
  1058. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +1 -0
  1059. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  1060. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +218 -0
  1061. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  1062. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  1063. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +105 -0
  1064. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  1065. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  1066. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +87 -0
  1067. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  1068. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  1069. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +333 -0
  1070. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  1071. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  1072. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +82 -0
  1073. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  1074. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  1075. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +72 -0
  1076. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  1077. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +1 -0
  1078. package/dist/esm/tests/unit/timeout-handlers.test.js +812 -0
  1079. package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -0
  1080. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +1 -0
  1081. package/dist/esm/tests/unit/understudy-command-exception.test.js +55 -0
  1082. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +1 -0
  1083. package/dist/esm/tests/unit/xpath-parser.test.d.ts +1 -0
  1084. package/dist/esm/tests/unit/xpath-parser.test.js +309 -0
  1085. package/dist/esm/tests/unit/xpath-parser.test.js.map +1 -0
  1086. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +1 -0
  1087. package/dist/esm/tests/unit/xpath-resolver.test.js +78 -0
  1088. package/dist/esm/tests/unit/xpath-resolver.test.js.map +1 -0
  1089. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  1090. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +114 -0
  1091. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  1092. package/package.json +19 -8
  1093. package/dist/cjs/cli.js.map +0 -7
  1094. package/dist/cjs/index.js.map +0 -7
  1095. package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1096. package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
  1097. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1098. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1099. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +0 -102
  1100. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1101. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1102. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1103. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +0 -354
  1104. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1105. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1106. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1107. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1108. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1109. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +0 -126
  1110. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1111. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1112. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1113. package/dist/cjs/lib/v3/tests/click-count.spec.js +0 -147
  1114. package/dist/cjs/lib/v3/tests/click-count.spec.js.map +0 -7
  1115. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1116. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1117. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1118. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1119. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1120. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1121. package/dist/cjs/lib/v3/tests/downloads.spec.js +0 -80
  1122. package/dist/cjs/lib/v3/tests/downloads.spec.js.map +0 -7
  1123. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1124. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1125. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1126. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1127. package/dist/cjs/lib/v3/tests/keep-alive.child.js +0 -92
  1128. package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +0 -7
  1129. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +0 -568
  1130. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1131. package/dist/cjs/lib/v3/tests/keep-alive.spec.js +0 -15
  1132. package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1133. package/dist/cjs/lib/v3/tests/keyboard.spec.js +0 -296
  1134. package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +0 -7
  1135. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1136. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1137. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1138. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1139. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1140. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1141. package/dist/cjs/lib/v3/tests/locator-count.spec.js +0 -71
  1142. package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +0 -7
  1143. package/dist/cjs/lib/v3/tests/locator-fill.spec.js +0 -119
  1144. package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1145. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1146. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1147. package/dist/cjs/lib/v3/tests/locator-nth.spec.js +0 -157
  1148. package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1149. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +0 -243
  1150. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1151. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +0 -547
  1152. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1153. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1154. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1155. package/dist/cjs/lib/v3/tests/nested-div.spec.js +0 -23
  1156. package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +0 -7
  1157. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1158. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1159. package/dist/cjs/lib/v3/tests/page-console.spec.js +0 -56
  1160. package/dist/cjs/lib/v3/tests/page-console.spec.js.map +0 -7
  1161. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1162. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1163. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +0 -35
  1164. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1165. package/dist/cjs/lib/v3/tests/page-hover.spec.js +0 -167
  1166. package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +0 -7
  1167. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +0 -295
  1168. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1169. package/dist/cjs/lib/v3/tests/page-scroll.spec.js +0 -182
  1170. package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1171. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1172. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1173. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1174. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1175. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +0 -148
  1176. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1177. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -156
  1178. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1179. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +0 -156
  1180. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1181. package/dist/cjs/lib/v3/tests/testUtils.js +0 -54
  1182. package/dist/cjs/lib/v3/tests/testUtils.js.map +0 -7
  1183. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1184. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1185. package/dist/cjs/lib/v3/tests/timeouts.spec.js +0 -32
  1186. package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +0 -7
  1187. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +0 -65
  1188. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1189. package/dist/cjs/lib/v3/tests/v3.config.js +0 -36
  1190. package/dist/cjs/lib/v3/tests/v3.config.js.map +0 -7
  1191. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +0 -67
  1192. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1193. package/dist/cjs/lib/v3/tests/v3.playwright.config.js +0 -61
  1194. package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1195. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1196. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1197. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1198. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1199. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1200. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1201. package/dist/cjs/tests/agent-execution-model.test.js +0 -139
  1202. package/dist/cjs/tests/agent-execution-model.test.js.map +0 -7
  1203. package/dist/cjs/tests/api-multiregion.test.js +0 -73
  1204. package/dist/cjs/tests/api-multiregion.test.js.map +0 -7
  1205. package/dist/cjs/tests/browserbase-session-accessors.test.js +0 -101
  1206. package/dist/cjs/tests/browserbase-session-accessors.test.js.map +0 -7
  1207. package/dist/cjs/tests/cache-llm-resolution.test.js +0 -187
  1208. package/dist/cjs/tests/cache-llm-resolution.test.js.map +0 -7
  1209. package/dist/cjs/tests/helpers/mockCDPSession.js +0 -50
  1210. package/dist/cjs/tests/helpers/mockCDPSession.js.map +0 -7
  1211. package/dist/cjs/tests/llm-provider.test.js +0 -57
  1212. package/dist/cjs/tests/llm-provider.test.js.map +0 -7
  1213. package/dist/cjs/tests/model-deprecation.test.js +0 -132
  1214. package/dist/cjs/tests/model-deprecation.test.js.map +0 -7
  1215. package/dist/cjs/tests/model-utils.test.js +0 -43
  1216. package/dist/cjs/tests/model-utils.test.js.map +0 -7
  1217. package/dist/cjs/tests/page-snapshot.test.js +0 -58
  1218. package/dist/cjs/tests/page-snapshot.test.js.map +0 -7
  1219. package/dist/cjs/tests/public-api/export-surface.test.js +0 -77
  1220. package/dist/cjs/tests/public-api/export-surface.test.js.map +0 -7
  1221. package/dist/cjs/tests/public-api/llm-and-agents.test.js +0 -151
  1222. package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +0 -7
  1223. package/dist/cjs/tests/public-api/public-error-types.test.js +0 -106
  1224. package/dist/cjs/tests/public-api/public-error-types.test.js.map +0 -7
  1225. package/dist/cjs/tests/public-api/public-types.test.js +0 -74
  1226. package/dist/cjs/tests/public-api/public-types.test.js.map +0 -7
  1227. package/dist/cjs/tests/public-api/runtime-utils.test.js +0 -53
  1228. package/dist/cjs/tests/public-api/runtime-utils.test.js.map +0 -7
  1229. package/dist/cjs/tests/public-api/schema-utils.test.js +0 -100
  1230. package/dist/cjs/tests/public-api/schema-utils.test.js.map +0 -7
  1231. package/dist/cjs/tests/public-api/timeout-error-types.test.js +0 -103
  1232. package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +0 -7
  1233. package/dist/cjs/tests/public-api/tool-type-export.test.js +0 -47
  1234. package/dist/cjs/tests/public-api/tool-type-export.test.js.map +0 -7
  1235. package/dist/cjs/tests/public-api/v3-core.test.js +0 -105
  1236. package/dist/cjs/tests/public-api/v3-core.test.js.map +0 -7
  1237. package/dist/cjs/tests/safety-confirmation.test.js +0 -134
  1238. package/dist/cjs/tests/safety-confirmation.test.js.map +0 -7
  1239. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +0 -370
  1240. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1241. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +0 -294
  1242. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1243. package/dist/cjs/tests/snapshot-capture-orchestration.test.js +0 -405
  1244. package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1245. package/dist/cjs/tests/snapshot-cbor.test.js +0 -197
  1246. package/dist/cjs/tests/snapshot-cbor.test.js.map +0 -7
  1247. package/dist/cjs/tests/snapshot-dom-session-builders.test.js +0 -246
  1248. package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1249. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +0 -104
  1250. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1251. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +0 -45
  1252. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1253. package/dist/cjs/tests/snapshot-frame-merge.test.js +0 -388
  1254. package/dist/cjs/tests/snapshot-frame-merge.test.js.map +0 -7
  1255. package/dist/cjs/tests/snapshot-tree-format-utils.test.js +0 -106
  1256. package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1257. package/dist/cjs/tests/snapshot-xpath-utils.test.js +0 -74
  1258. package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +0 -7
  1259. package/dist/cjs/tests/timeout-handlers.test.js +0 -864
  1260. package/dist/cjs/tests/timeout-handlers.test.js.map +0 -7
  1261. package/dist/cjs/tests/understudy-command-exception.test.js +0 -52
  1262. package/dist/cjs/tests/understudy-command-exception.test.js.map +0 -7
  1263. package/dist/cjs/tests/xpath-parser.test.js +0 -314
  1264. package/dist/cjs/tests/xpath-parser.test.js.map +0 -7
  1265. package/dist/cjs/tests/xpath-resolver.test.js +0 -70
  1266. package/dist/cjs/tests/xpath-resolver.test.js.map +0 -7
  1267. package/dist/cjs/tests/zod-enum-compatibility.test.js +0 -119
  1268. package/dist/cjs/tests/zod-enum-compatibility.test.js.map +0 -7
  1269. package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1270. package/dist/esm/lib/v3/dom/build/rerender-index.js.map +0 -1
  1271. package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
  1272. package/dist/esm/lib/v3/dom/build/v3-index.js.map +0 -1
  1273. package/dist/esm/lib/v3/dom/genA11yScripts.js +0 -54
  1274. package/dist/esm/lib/v3/dom/genA11yScripts.js.map +0 -1
  1275. package/dist/esm/lib/v3/dom/genDomScripts.js +0 -38
  1276. package/dist/esm/lib/v3/dom/genDomScripts.js.map +0 -1
  1277. package/dist/esm/lib/v3/dom/genLocatorScripts.js +0 -51
  1278. package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +0 -1
  1279. package/dist/esm/lib/v3/dom/genScreenshotScripts.js +0 -37
  1280. package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +0 -1
  1281. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1282. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1283. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +0 -80
  1284. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1285. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1286. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1287. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +0 -357
  1288. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1289. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1290. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1291. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1292. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1293. package/dist/esm/lib/v3/tests/agent-streaming.spec.js +0 -126
  1294. package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1295. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1296. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1297. package/dist/esm/lib/v3/tests/click-count.spec.js +0 -147
  1298. package/dist/esm/lib/v3/tests/click-count.spec.js.map +0 -7
  1299. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1300. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1301. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1302. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1303. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1304. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1305. package/dist/esm/lib/v3/tests/downloads.spec.js +0 -58
  1306. package/dist/esm/lib/v3/tests/downloads.spec.js.map +0 -7
  1307. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1308. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1309. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1310. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1311. package/dist/esm/lib/v3/tests/keep-alive.child.js +0 -92
  1312. package/dist/esm/lib/v3/tests/keep-alive.child.js.map +0 -7
  1313. package/dist/esm/lib/v3/tests/keep-alive.helpers.js +0 -532
  1314. package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1315. package/dist/esm/lib/v3/tests/keep-alive.spec.js +0 -19
  1316. package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1317. package/dist/esm/lib/v3/tests/keyboard.spec.js +0 -296
  1318. package/dist/esm/lib/v3/tests/keyboard.spec.js.map +0 -7
  1319. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1320. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1321. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1322. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1323. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1324. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1325. package/dist/esm/lib/v3/tests/locator-count.spec.js +0 -71
  1326. package/dist/esm/lib/v3/tests/locator-count.spec.js.map +0 -7
  1327. package/dist/esm/lib/v3/tests/locator-fill.spec.js +0 -119
  1328. package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1329. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1330. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1331. package/dist/esm/lib/v3/tests/locator-nth.spec.js +0 -157
  1332. package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1333. package/dist/esm/lib/v3/tests/locator-select-option.spec.js +0 -243
  1334. package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1335. package/dist/esm/lib/v3/tests/logger-initialization.spec.js +0 -552
  1336. package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1337. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1338. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1339. package/dist/esm/lib/v3/tests/nested-div.spec.js +0 -23
  1340. package/dist/esm/lib/v3/tests/nested-div.spec.js.map +0 -7
  1341. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1342. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1343. package/dist/esm/lib/v3/tests/page-console.spec.js +0 -56
  1344. package/dist/esm/lib/v3/tests/page-console.spec.js.map +0 -7
  1345. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1346. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1347. package/dist/esm/lib/v3/tests/page-goto-response.spec.js +0 -35
  1348. package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1349. package/dist/esm/lib/v3/tests/page-hover.spec.js +0 -167
  1350. package/dist/esm/lib/v3/tests/page-hover.spec.js.map +0 -7
  1351. package/dist/esm/lib/v3/tests/page-screenshot.spec.js +0 -273
  1352. package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1353. package/dist/esm/lib/v3/tests/page-scroll.spec.js +0 -182
  1354. package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1355. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1356. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1357. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1358. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1359. package/dist/esm/lib/v3/tests/setinputfiles.spec.js +0 -126
  1360. package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1361. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -134
  1362. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1363. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +0 -134
  1364. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1365. package/dist/esm/lib/v3/tests/testUtils.js +0 -31
  1366. package/dist/esm/lib/v3/tests/testUtils.js.map +0 -7
  1367. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1368. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1369. package/dist/esm/lib/v3/tests/timeouts.spec.js +0 -32
  1370. package/dist/esm/lib/v3/tests/timeouts.spec.js.map +0 -7
  1371. package/dist/esm/lib/v3/tests/user-data-dir.spec.js +0 -43
  1372. package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1373. package/dist/esm/lib/v3/tests/v3.config.js +0 -15
  1374. package/dist/esm/lib/v3/tests/v3.config.js.map +0 -7
  1375. package/dist/esm/lib/v3/tests/v3.dynamic.config.js +0 -43
  1376. package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1377. package/dist/esm/lib/v3/tests/v3.playwright.config.js +0 -41
  1378. package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1379. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1380. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1381. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1382. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1383. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1384. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1385. package/dist/esm/tests/agent-execution-model.test.js +0 -139
  1386. package/dist/esm/tests/agent-execution-model.test.js.map +0 -7
  1387. package/dist/esm/tests/api-multiregion.test.js +0 -73
  1388. package/dist/esm/tests/api-multiregion.test.js.map +0 -7
  1389. package/dist/esm/tests/browserbase-session-accessors.test.js +0 -101
  1390. package/dist/esm/tests/browserbase-session-accessors.test.js.map +0 -7
  1391. package/dist/esm/tests/cache-llm-resolution.test.js +0 -187
  1392. package/dist/esm/tests/cache-llm-resolution.test.js.map +0 -7
  1393. package/dist/esm/tests/helpers/mockCDPSession.js +0 -27
  1394. package/dist/esm/tests/helpers/mockCDPSession.js.map +0 -7
  1395. package/dist/esm/tests/llm-provider.test.js +0 -57
  1396. package/dist/esm/tests/llm-provider.test.js.map +0 -7
  1397. package/dist/esm/tests/model-deprecation.test.js +0 -135
  1398. package/dist/esm/tests/model-deprecation.test.js.map +0 -7
  1399. package/dist/esm/tests/model-utils.test.js +0 -43
  1400. package/dist/esm/tests/model-utils.test.js.map +0 -7
  1401. package/dist/esm/tests/page-snapshot.test.js +0 -36
  1402. package/dist/esm/tests/page-snapshot.test.js.map +0 -7
  1403. package/dist/esm/tests/public-api/export-surface.test.js +0 -55
  1404. package/dist/esm/tests/public-api/export-surface.test.js.map +0 -7
  1405. package/dist/esm/tests/public-api/llm-and-agents.test.js +0 -129
  1406. package/dist/esm/tests/public-api/llm-and-agents.test.js.map +0 -7
  1407. package/dist/esm/tests/public-api/public-error-types.test.js +0 -73
  1408. package/dist/esm/tests/public-api/public-error-types.test.js.map +0 -7
  1409. package/dist/esm/tests/public-api/public-types.test.js +0 -74
  1410. package/dist/esm/tests/public-api/public-types.test.js.map +0 -7
  1411. package/dist/esm/tests/public-api/runtime-utils.test.js +0 -31
  1412. package/dist/esm/tests/public-api/runtime-utils.test.js.map +0 -7
  1413. package/dist/esm/tests/public-api/schema-utils.test.js +0 -78
  1414. package/dist/esm/tests/public-api/schema-utils.test.js.map +0 -7
  1415. package/dist/esm/tests/public-api/timeout-error-types.test.js +0 -81
  1416. package/dist/esm/tests/public-api/timeout-error-types.test.js.map +0 -7
  1417. package/dist/esm/tests/public-api/tool-type-export.test.js +0 -25
  1418. package/dist/esm/tests/public-api/tool-type-export.test.js.map +0 -7
  1419. package/dist/esm/tests/public-api/v3-core.test.js +0 -83
  1420. package/dist/esm/tests/public-api/v3-core.test.js.map +0 -7
  1421. package/dist/esm/tests/safety-confirmation.test.js +0 -134
  1422. package/dist/esm/tests/safety-confirmation.test.js.map +0 -7
  1423. package/dist/esm/tests/snapshot-a11y-resolvers.test.js +0 -348
  1424. package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1425. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +0 -300
  1426. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1427. package/dist/esm/tests/snapshot-capture-orchestration.test.js +0 -383
  1428. package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1429. package/dist/esm/tests/snapshot-cbor.test.js +0 -197
  1430. package/dist/esm/tests/snapshot-cbor.test.js.map +0 -7
  1431. package/dist/esm/tests/snapshot-dom-session-builders.test.js +0 -251
  1432. package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1433. package/dist/esm/tests/snapshot-dom-tree-utils.test.js +0 -109
  1434. package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1435. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +0 -49
  1436. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1437. package/dist/esm/tests/snapshot-frame-merge.test.js +0 -391
  1438. package/dist/esm/tests/snapshot-frame-merge.test.js.map +0 -7
  1439. package/dist/esm/tests/snapshot-tree-format-utils.test.js +0 -113
  1440. package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1441. package/dist/esm/tests/snapshot-xpath-utils.test.js +0 -79
  1442. package/dist/esm/tests/snapshot-xpath-utils.test.js.map +0 -7
  1443. package/dist/esm/tests/timeout-handlers.test.js +0 -850
  1444. package/dist/esm/tests/timeout-handlers.test.js.map +0 -7
  1445. package/dist/esm/tests/understudy-command-exception.test.js +0 -55
  1446. package/dist/esm/tests/understudy-command-exception.test.js.map +0 -7
  1447. package/dist/esm/tests/xpath-parser.test.js +0 -317
  1448. package/dist/esm/tests/xpath-parser.test.js.map +0 -7
  1449. package/dist/esm/tests/xpath-resolver.test.js +0 -73
  1450. package/dist/esm/tests/xpath-resolver.test.js.map +0 -7
  1451. package/dist/esm/tests/zod-enum-compatibility.test.js +0 -97
  1452. package/dist/esm/tests/zod-enum-compatibility.test.js.map +0 -7
  1453. /package/dist/cjs/{lib/v3/dom/genA11yScripts.d.ts → tests/cache-variables.test.d.ts} +0 -0
  1454. /package/dist/cjs/{lib/v3/dom/genDomScripts.d.ts → tests/integration/agent-abort-signal.spec.d.ts} +0 -0
  1455. /package/dist/cjs/{lib/v3/dom/genLocatorScripts.d.ts → tests/integration/agent-cache-self-heal.spec.d.ts} +0 -0
  1456. /package/dist/cjs/{lib/v3/dom/genScreenshotScripts.d.ts → tests/integration/agent-callbacks.spec.d.ts} +0 -0
  1457. /package/dist/{esm/lib/v3/dom/genA11yScripts.d.ts → cjs/tests/integration/agent-experimental-validation.spec.d.ts} +0 -0
  1458. /package/dist/{esm/lib/v3/dom/genDomScripts.d.ts → cjs/tests/integration/agent-hybrid-mode.spec.d.ts} +0 -0
  1459. /package/dist/{esm/lib/v3/dom/genLocatorScripts.d.ts → cjs/tests/integration/agent-message-continuation.spec.d.ts} +0 -0
  1460. /package/dist/{esm/lib/v3/dom/genScreenshotScripts.d.ts → cjs/tests/integration/agent-streaming.spec.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import type { Action, ActResult, AgentConfig, AgentExecuteOptions, AgentResult, ExtractResult, LogLine, StagehandMetrics, BrowserbaseRegion, ActOptions, ExtractOptions, ObserveOptions, Api } from "./types/public/index.js";
1
+ import type { ActResult, AgentConfig, AgentExecuteOptions, AgentResult, ExtractResult, ObserveResult, LogLine, StagehandMetrics, BrowserbaseRegion, ActOptions, ExtractOptions, ObserveOptions, Api } from "./types/public/index.js";
2
2
  import type { SerializableResponse, AgentCacheTransferPayload } from "./types/private/index.js";
3
3
  import type { StagehandZodSchema } from "./zodCompat.js";
4
4
  /**
@@ -20,8 +20,15 @@ export declare function getApiUrlForRegion(region: BrowserbaseRegion | undefined
20
20
  */
21
21
  interface StagehandAPIConstructorParams {
22
22
  apiKey: string;
23
- projectId: string;
23
+ projectId?: string;
24
24
  logger: (message: LogLine) => void;
25
+ /**
26
+ * When true, enables server-side caching by default for all requests.
27
+ * When false, disables server-side caching.
28
+ * Defaults to true (caching enabled).
29
+ * Can be overridden per-method in act(), extract(), and observe() options.
30
+ */
31
+ serverCache?: boolean;
25
32
  }
26
33
  /**
27
34
  * Parameters for starting a session via the API client.
@@ -66,20 +73,21 @@ interface ClientObserveParameters {
66
73
  }
67
74
  export declare class StagehandAPIClient {
68
75
  private apiKey;
69
- private projectId;
76
+ private projectId?;
70
77
  private sessionId?;
71
78
  private modelApiKey;
72
79
  private modelProvider?;
73
80
  private region?;
74
81
  private logger;
75
82
  private fetchWithCookies;
83
+ private serverCache;
76
84
  private lastFinishedEventData;
77
85
  private latestAgentCacheEntry;
78
- constructor({ apiKey, projectId, logger }: StagehandAPIConstructorParams);
86
+ constructor({ apiKey, projectId, logger, serverCache, }: StagehandAPIConstructorParams);
79
87
  init({ modelName, modelApiKey, domSettleTimeoutMs, verbose, systemPrompt, selfHeal, browserbaseSessionCreateParams, browserbaseSessionID, }: ClientSessionStartParams): Promise<Api.SessionStartResult>;
80
88
  act({ input, options, frameId, }: ClientActParameters): Promise<ActResult>;
81
89
  extract<T extends StagehandZodSchema>({ instruction, schema: zodSchema, options, frameId, }: ClientExtractParameters): Promise<ExtractResult<T>>;
82
- observe({ instruction, options, frameId, }: ClientObserveParameters): Promise<Action[]>;
90
+ observe({ instruction, options, frameId, }: ClientObserveParameters): Promise<ObserveResult>;
83
91
  goto(url: string, options?: Api.NavigateRequest["options"], frameId?: string): Promise<SerializableResponse | null>;
84
92
  agentExecute(agentConfig: AgentConfig, executeOptions: AgentExecuteOptions | string, frameId?: string, shouldCache?: boolean): Promise<AgentResult>;
85
93
  consumeLatestAgentCacheEntry(): AgentCacheTransferPayload | null;
@@ -96,6 +104,16 @@ export declare class StagehandAPIClient {
96
104
  private prepareModelConfig;
97
105
  private consumeFinishedEventData;
98
106
  private execute;
107
+ /**
108
+ * Resolves the final cache status from the response header or SSE event data,
109
+ * logs it, and attaches it to act/extract results before returning.
110
+ */
111
+ private attachCacheStatus;
112
+ /**
113
+ * Determine if caching should be enabled for a request.
114
+ * Method-level setting takes precedence over instance-level setting.
115
+ */
116
+ private shouldUseCache;
99
117
  private request;
100
118
  }
101
119
  export {};
@@ -38,12 +38,14 @@ export class StagehandAPIClient {
38
38
  region;
39
39
  logger;
40
40
  fetchWithCookies;
41
+ serverCache;
41
42
  lastFinishedEventData = null;
42
43
  latestAgentCacheEntry = null;
43
- constructor({ apiKey, projectId, logger }) {
44
+ constructor({ apiKey, projectId, logger, serverCache, }) {
44
45
  this.apiKey = apiKey;
45
46
  this.projectId = projectId;
46
47
  this.logger = logger;
48
+ this.serverCache = serverCache ?? true;
47
49
  // Create a single cookie jar instance that will persist across all requests
48
50
  this.fetchWithCookies = makeFetchCookie(fetch);
49
51
  }
@@ -104,11 +106,13 @@ export class StagehandAPIClient {
104
106
  return sessionResponseBody.data;
105
107
  }
106
108
  async act({ input, options, frameId, }) {
107
- // Strip non-serializable `page` from options before wire serialization
109
+ // Strip non-serializable `page` and SDK-only fields from options before wire serialization
108
110
  let wireOptions;
111
+ let serverCache;
109
112
  if (options) {
110
113
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
111
- const { page: _, ...restOptions } = options;
114
+ const { page: _, serverCache: enableCache, ...restOptions } = options;
115
+ serverCache = enableCache;
112
116
  if (Object.keys(restOptions).length > 0) {
113
117
  if (restOptions.model) {
114
118
  restOptions.model = this.prepareModelConfig(restOptions.model);
@@ -125,16 +129,19 @@ export class StagehandAPIClient {
125
129
  return this.execute({
126
130
  method: "act",
127
131
  args: requestBody,
132
+ serverCache,
128
133
  });
129
134
  }
130
135
  async extract({ instruction, schema: zodSchema, options, frameId, }) {
131
136
  // Convert Zod schema to JSON schema for wire format
132
137
  const jsonSchema = zodSchema ? toJsonSchema(zodSchema) : undefined;
133
- // Strip non-serializable `page` from options before wire serialization
138
+ // Strip non-serializable `page` and SDK-only fields from options before wire serialization
134
139
  let wireOptions;
140
+ let serverCache;
135
141
  if (options) {
136
142
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
137
- const { page: _, ...restOptions } = options;
143
+ const { page: _, serverCache: enableCache, ...restOptions } = options;
144
+ serverCache = enableCache;
138
145
  if (Object.keys(restOptions).length > 0) {
139
146
  if (restOptions.model) {
140
147
  restOptions.model = this.prepareModelConfig(restOptions.model);
@@ -152,14 +159,17 @@ export class StagehandAPIClient {
152
159
  return this.execute({
153
160
  method: "extract",
154
161
  args: requestBody,
162
+ serverCache,
155
163
  });
156
164
  }
157
165
  async observe({ instruction, options, frameId, }) {
158
- // Strip non-serializable `page` from options before wire serialization
166
+ // Strip non-serializable `page` and SDK-only fields from options before wire serialization
159
167
  let wireOptions;
168
+ let serverCache;
160
169
  if (options) {
161
170
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
162
- const { page: _, ...restOptions } = options;
171
+ const { page: _, serverCache: enableCache, ...restOptions } = options;
172
+ serverCache = enableCache;
163
173
  if (Object.keys(restOptions).length > 0) {
164
174
  if (restOptions.model) {
165
175
  restOptions.model = this.prepareModelConfig(restOptions.model);
@@ -176,6 +186,7 @@ export class StagehandAPIClient {
176
186
  return this.execute({
177
187
  method: "observe",
178
188
  args: requestBody,
189
+ serverCache,
179
190
  });
180
191
  }
181
192
  async goto(url, options, frameId) {
@@ -393,7 +404,7 @@ export class StagehandAPIClient {
393
404
  this.lastFinishedEventData = null;
394
405
  return data;
395
406
  }
396
- async execute({ method, args, params, }) {
407
+ async execute({ method, args, params, serverCache, }) {
397
408
  this.lastFinishedEventData = null;
398
409
  const urlParams = new URLSearchParams(params);
399
410
  const queryString = urlParams.toString();
@@ -401,7 +412,9 @@ export class StagehandAPIClient {
401
412
  const response = await this.request(url, {
402
413
  method: "POST",
403
414
  body: JSON.stringify(args),
404
- });
415
+ }, serverCache);
416
+ // Capture cache status from response header
417
+ const cacheStatus = response.headers.get("browserbase-cache-status");
405
418
  if (!response.ok) {
406
419
  const errorBody = await response.text();
407
420
  throw new StagehandHttpError(`HTTP error! status: ${response.status}, body: ${errorBody}`);
@@ -433,7 +446,10 @@ export class StagehandAPIClient {
433
446
  }
434
447
  if (eventData.data.status === "finished") {
435
448
  this.lastFinishedEventData = eventData.data;
436
- return eventData.data.result;
449
+ // If caching was bypassed for this request, suppress cache status
450
+ // so we don't log or surface a MISS that the server emits anyway.
451
+ const cacheEnabled = this.shouldUseCache(serverCache);
452
+ return this.attachCacheStatus(eventData.data.result, method, cacheEnabled ? cacheStatus : null, cacheEnabled ? eventData : { data: {} });
437
453
  }
438
454
  }
439
455
  else if (eventData.type === "log") {
@@ -467,7 +483,7 @@ export class StagehandAPIClient {
467
483
  const eventData = JSON.parse(buffer.slice(6));
468
484
  if (eventData.type === "system" &&
469
485
  eventData.data.status === "finished") {
470
- return eventData.data.result;
486
+ return this.attachCacheStatus(eventData.data.result, method, cacheStatus, eventData);
471
487
  }
472
488
  }
473
489
  catch {
@@ -482,10 +498,51 @@ export class StagehandAPIClient {
482
498
  }
483
499
  }
484
500
  }
485
- async request(path, options) {
501
+ /**
502
+ * Resolves the final cache status from the response header or SSE event data,
503
+ * logs it, and attaches it to act/extract results before returning.
504
+ */
505
+ attachCacheStatus(result, method, cacheStatus, eventData) {
506
+ const finalCacheStatus = cacheStatus ||
507
+ (typeof eventData.data.cacheHit === "boolean"
508
+ ? eventData.data.cacheHit
509
+ ? "HIT"
510
+ : "MISS"
511
+ : undefined);
512
+ if (finalCacheStatus &&
513
+ (method === "act" || method === "extract" || method === "observe")) {
514
+ this.logger({
515
+ category: "cache",
516
+ message: `${method} server cache ${finalCacheStatus.toLowerCase()}`,
517
+ level: 1,
518
+ });
519
+ }
520
+ if (finalCacheStatus &&
521
+ result &&
522
+ typeof result === "object" &&
523
+ (method === "act" || method === "extract" || method === "observe")) {
524
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
525
+ result.cacheStatus =
526
+ finalCacheStatus;
527
+ }
528
+ return result;
529
+ }
530
+ /**
531
+ * Determine if caching should be enabled for a request.
532
+ * Method-level setting takes precedence over instance-level setting.
533
+ */
534
+ shouldUseCache(methodServerCache) {
535
+ // If method-level setting is explicitly provided, use it
536
+ if (methodServerCache !== undefined) {
537
+ return methodServerCache;
538
+ }
539
+ // Otherwise, use instance-level setting
540
+ return this.serverCache;
541
+ }
542
+ async request(path, options, serverCache) {
486
543
  const defaultHeaders = {
487
544
  "x-bb-api-key": this.apiKey,
488
- "x-bb-project-id": this.projectId,
545
+ ...(this.projectId ? { "x-bb-project-id": this.projectId } : {}),
489
546
  "x-bb-session-id": this.sessionId,
490
547
  // we want real-time logs, so we stream the response
491
548
  "x-stream-response": "true",
@@ -493,6 +550,10 @@ export class StagehandAPIClient {
493
550
  "x-language": "typescript",
494
551
  "x-sdk-version": STAGEHAND_VERSION,
495
552
  };
553
+ // Add cache bypass header if caching is disabled
554
+ if (!this.shouldUseCache(serverCache)) {
555
+ defaultHeaders["browserbase-cache-bypass"] = "true";
556
+ }
496
557
  if (options.method === "POST" && options.body) {
497
558
  defaultHeaders["Content-Type"] = "application/json";
498
559
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../lib/v3/api.ts"],"names":[],"mappings":"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","sourcesContent":["import makeFetchCookie from \"fetch-cookie\";\nimport { loadApiKeyFromEnv } from \"../utils.js\";\nimport { STAGEHAND_VERSION } from \"../version.js\";\nimport {\n StagehandAPIError,\n StagehandAPIUnauthorizedError,\n StagehandHttpError,\n StagehandResponseBodyError,\n StagehandResponseParseError,\n StagehandServerError,\n ExperimentalNotConfiguredError,\n} from \"./types/public/index.js\";\nimport type {\n Action,\n ActResult,\n AgentConfig,\n AgentExecuteOptions,\n AgentResult,\n ExtractResult,\n LogLine,\n StagehandMetrics,\n BrowserbaseRegion,\n ActOptions,\n ExtractOptions,\n ObserveOptions,\n Api,\n} from \"./types/public/index.js\";\nimport type {\n SerializableResponse,\n AgentCacheTransferPayload,\n} from \"./types/private/index.js\";\nimport type { ModelConfiguration } from \"./types/public/model.js\";\nimport { toJsonSchema } from \"./zodCompat.js\";\nimport type { StagehandZodSchema } from \"./zodCompat.js\";\n\n// =============================================================================\n// Multi-region API URL mapping\n// =============================================================================\n\n/**\n * Mapping of Browserbase regions to their corresponding Stagehand API base URLs.\n * Users should configure their client to hit the API endpoint that matches\n * the region where their browser session is running.\n */\nexport const REGION_API_URLS: Record<BrowserbaseRegion, string> = {\n \"us-west-2\": \"https://api.stagehand.browserbase.com\",\n \"us-east-1\": \"https://api.use1.stagehand.browserbase.com\",\n \"eu-central-1\": \"https://api.euc1.stagehand.browserbase.com\",\n \"ap-southeast-1\": \"https://api.apse1.stagehand.browserbase.com\",\n};\n\n/**\n * Returns the full API URL (with /v1 suffix) for a given Browserbase region.\n * If no region is specified or the region is unknown, defaults to us-west-2.\n *\n * @param region - The Browserbase region (e.g., \"us-west-2\", \"eu-central-1\")\n * @returns The full API URL including /v1 suffix\n */\nexport function getApiUrlForRegion(\n region: BrowserbaseRegion | undefined,\n): string {\n const baseUrl =\n REGION_API_URLS[region as BrowserbaseRegion] ??\n REGION_API_URLS[\"us-west-2\"];\n return `${baseUrl}/v1`;\n}\n\n// =============================================================================\n// Client-specific types (can't be Zod schemas due to functions/Page objects)\n// =============================================================================\n//\n// These types mirror the Api.* schemas from types/public/api.ts but include\n// non-serializable SDK fields (like Page objects) that get stripped before\n// sending requests over the wire.\n//\n// Relationship to wire format:\n// - Client accepts: SDK types (ActOptions, ExtractOptions, etc.) with optional `page`\n// - Wire sends: Api.* types (page stripped, Zod schema converted to JSON schema)\n// - Client returns: SDK result types (ActResult, ExtractResult, etc.)\n// =============================================================================\n\n/**\n * Constructor parameters for StagehandAPIClient\n */\ninterface StagehandAPIConstructorParams {\n apiKey: string;\n projectId: string;\n logger: (message: LogLine) => void;\n}\n\n/**\n * Parameters for starting a session via the API client.\n * Extends Api.SessionStartRequest with client-specific field (modelApiKey).\n *\n * Wire format: Api.SessionStartRequest (modelApiKey sent via header, not body)\n */\ninterface ClientSessionStartParams extends Api.SessionStartRequest {\n /** Model API key - sent via x-model-api-key header, not in request body */\n modelApiKey: string;\n}\n\n/**\n * Generic API response wrapper matching Api.*Response schemas\n */\ntype ApiResponse<T> =\n | { success: true; data: T }\n | { success: false; message: string };\n\n/**\n * Union of all API request body types for type-safe execute() calls\n */\ntype ApiRequestBody =\n | Api.ActRequest\n | Api.ExtractRequest\n | Api.ObserveRequest\n | Api.NavigateRequest\n | Api.AgentExecuteRequest;\n\n/**\n * Parameters for executing an action via the streaming API\n */\ninterface ExecuteActionParams {\n method: \"act\" | \"extract\" | \"observe\" | \"navigate\" | \"end\" | \"agentExecute\";\n args?: ApiRequestBody;\n params?: Record<string, string>;\n}\n\n/**\n * Client parameters for act() method.\n * Derives structure from Api.ActRequest but uses SDK's ActOptions (which includes `page`).\n * Before serialization, `page` is stripped to produce Api.ActRequest wire format.\n */\ninterface ClientActParameters {\n input: Api.ActRequest[\"input\"];\n options?: ActOptions;\n frameId?: Api.ActRequest[\"frameId\"];\n}\n\n/**\n * Client parameters for extract() method.\n * Derives structure from Api.ExtractRequest but uses SDK's ExtractOptions (which includes `page`)\n * and accepts Zod schema (converted to JSON schema for wire format).\n */\ninterface ClientExtractParameters {\n instruction?: Api.ExtractRequest[\"instruction\"];\n schema?: StagehandZodSchema;\n options?: ExtractOptions;\n frameId?: Api.ExtractRequest[\"frameId\"];\n}\n\n/**\n * Client parameters for observe() method.\n * Derives structure from Api.ObserveRequest but uses SDK's ObserveOptions (which includes `page`).\n * Before serialization, `page` is stripped to produce Api.ObserveRequest wire format.\n */\ninterface ClientObserveParameters {\n instruction?: Api.ObserveRequest[\"instruction\"];\n options?: ObserveOptions;\n frameId?: Api.ObserveRequest[\"frameId\"];\n}\n\nexport class StagehandAPIClient {\n private apiKey: string;\n private projectId: string;\n private sessionId?: string;\n private modelApiKey: string;\n private modelProvider?: string;\n private region?: BrowserbaseRegion;\n private logger: (message: LogLine) => void;\n private fetchWithCookies;\n private lastFinishedEventData: Record<string, unknown> | null = null;\n private latestAgentCacheEntry: AgentCacheTransferPayload | null = null;\n\n constructor({ apiKey, projectId, logger }: StagehandAPIConstructorParams) {\n this.apiKey = apiKey;\n this.projectId = projectId;\n this.logger = logger;\n // Create a single cookie jar instance that will persist across all requests\n this.fetchWithCookies = makeFetchCookie(fetch);\n }\n\n async init({\n modelName,\n modelApiKey,\n domSettleTimeoutMs,\n verbose,\n systemPrompt,\n selfHeal,\n browserbaseSessionCreateParams,\n browserbaseSessionID,\n // browser, TODO for local browsers\n }: ClientSessionStartParams): Promise<Api.SessionStartResult> {\n if (!modelApiKey) {\n throw new StagehandAPIError(\"modelApiKey is required\");\n }\n this.modelApiKey = modelApiKey;\n // Extract provider from modelName (e.g., \"openai/gpt-5-nano\" -> \"openai\")\n this.modelProvider = modelName?.includes(\"/\")\n ? modelName.split(\"/\")[0]\n : undefined;\n\n // Store the region for multi-region API URL resolution\n this.region = browserbaseSessionCreateParams?.region;\n\n this.logger({\n category: \"init\",\n message: \"Creating new browserbase session...\",\n level: 1,\n });\n\n // Build wire-format request body (Api.SessionStartRequest shape)\n const requestBody: Api.SessionStartRequest = {\n modelName,\n domSettleTimeoutMs,\n verbose,\n systemPrompt,\n selfHeal,\n browserbaseSessionCreateParams,\n browserbaseSessionID,\n // browser, TODO: only send when connected to local fastify\n };\n\n const sessionResponse = await this.request(\"/sessions/start\", {\n method: \"POST\",\n body: JSON.stringify(requestBody),\n });\n\n if (sessionResponse.status === 401) {\n throw new StagehandAPIUnauthorizedError(\n \"Unauthorized. Ensure you provided a valid API key.\",\n );\n } else if (sessionResponse.status !== 200) {\n const errorText = await sessionResponse.text();\n this.logger({\n category: \"api\",\n message: `API error (${sessionResponse.status}): ${errorText}`,\n level: 0,\n });\n throw new StagehandHttpError(`Unknown error: ${sessionResponse.status}`);\n }\n\n const sessionResponseBody =\n (await sessionResponse.json()) as ApiResponse<Api.SessionStartResult>;\n\n if (sessionResponseBody.success === false) {\n throw new StagehandAPIError(sessionResponseBody.message);\n }\n\n // Temporary reroute for rollout\n if (!sessionResponseBody.data?.available && browserbaseSessionID) {\n sessionResponseBody.data.sessionId = browserbaseSessionID;\n }\n\n this.sessionId = sessionResponseBody.data.sessionId;\n\n return sessionResponseBody.data;\n }\n\n async act({\n input,\n options,\n frameId,\n }: ClientActParameters): Promise<ActResult> {\n // Strip non-serializable `page` from options before wire serialization\n let wireOptions: Api.ActRequest[\"options\"];\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, ...restOptions } = options;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ActRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ActRequest = {\n input,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<ActResult>({\n method: \"act\",\n args: requestBody,\n });\n }\n\n async extract<T extends StagehandZodSchema>({\n instruction,\n schema: zodSchema,\n options,\n frameId,\n }: ClientExtractParameters): Promise<ExtractResult<T>> {\n // Convert Zod schema to JSON schema for wire format\n const jsonSchema = zodSchema ? toJsonSchema(zodSchema) : undefined;\n\n // Strip non-serializable `page` from options before wire serialization\n let wireOptions: Api.ExtractRequest[\"options\"];\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, ...restOptions } = options;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ExtractRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ExtractRequest = {\n instruction,\n schema: jsonSchema,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<ExtractResult<T>>({\n method: \"extract\",\n args: requestBody,\n });\n }\n\n async observe({\n instruction,\n options,\n frameId,\n }: ClientObserveParameters): Promise<Action[]> {\n // Strip non-serializable `page` from options before wire serialization\n let wireOptions: Api.ObserveRequest[\"options\"];\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, ...restOptions } = options;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ObserveRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ObserveRequest = {\n instruction,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<Action[]>({\n method: \"observe\",\n args: requestBody,\n });\n }\n\n async goto(\n url: string,\n options?: Api.NavigateRequest[\"options\"],\n frameId?: string,\n ): Promise<SerializableResponse | null> {\n const requestBody: Api.NavigateRequest = { url, options, frameId };\n\n return this.execute<SerializableResponse | null>({\n method: \"navigate\",\n args: requestBody,\n });\n }\n\n async agentExecute(\n agentConfig: AgentConfig,\n executeOptions: AgentExecuteOptions | string,\n frameId?: string,\n shouldCache?: boolean,\n ): Promise<AgentResult> {\n // Check if integrations are being used in API mode (not supported)\n if (agentConfig.integrations && agentConfig.integrations.length > 0) {\n throw new ExperimentalNotConfiguredError(\"MCP integrations\");\n }\n\n // Strip non-serializable `page` from executeOptions before wire serialization\n let wireExecuteOptions: Api.AgentExecuteRequest[\"executeOptions\"];\n if (typeof executeOptions === \"string\") {\n wireExecuteOptions = { instruction: executeOptions };\n } else if (executeOptions.page) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, ...rest } = executeOptions;\n wireExecuteOptions = rest;\n } else {\n wireExecuteOptions = executeOptions;\n }\n\n const wireAgentConfig: Api.AgentExecuteRequest[\"agentConfig\"] = {\n systemPrompt: agentConfig.systemPrompt,\n mode: agentConfig.mode ?? (agentConfig.cua === true ? \"cua\" : undefined),\n cua: agentConfig.mode === undefined ? agentConfig.cua : undefined,\n model: agentConfig.model\n ? this.prepareModelConfig(agentConfig.model)\n : undefined,\n executionModel: agentConfig.executionModel\n ? this.prepareModelConfig(agentConfig.executionModel)\n : undefined,\n };\n\n // Build wire-format request body\n const requestBody: Api.AgentExecuteRequest = {\n agentConfig: wireAgentConfig,\n executeOptions: wireExecuteOptions,\n frameId,\n shouldCache,\n };\n\n const result = await this.execute<AgentResult>({\n method: \"agentExecute\",\n args: requestBody,\n });\n\n const finishedData =\n this.consumeFinishedEventData<Api.AgentExecuteResult>() ?? null;\n this.latestAgentCacheEntry =\n finishedData?.cacheEntry !== undefined\n ? (finishedData.cacheEntry as AgentCacheTransferPayload)\n : null;\n return result;\n }\n\n consumeLatestAgentCacheEntry(): AgentCacheTransferPayload | null {\n const entry = this.latestAgentCacheEntry;\n this.latestAgentCacheEntry = null;\n return entry;\n }\n\n async end(): Promise<Response> {\n const url = `/sessions/${this.sessionId}/end`;\n const response = await this.request(url, {\n method: \"POST\",\n });\n return response;\n }\n\n async getReplayMetrics(): Promise<StagehandMetrics> {\n if (!this.sessionId) {\n throw new StagehandAPIError(\"sessionId is required to fetch metrics.\");\n }\n\n const response = await this.request(`/sessions/${this.sessionId}/replay`, {\n method: \"GET\",\n });\n\n if (response.status !== 200) {\n const errorText = await response.text();\n this.logger({\n category: \"api\",\n message: `Failed to fetch metrics. Status ${response.status}: ${errorText}`,\n level: 0,\n });\n throw new StagehandHttpError(\n `Failed to fetch metrics with status ${response.status}: ${errorText}`,\n );\n }\n\n const data = (await response.json()) as\n | Api.ReplayResponse\n | { success: false; error?: string };\n\n if (!data.success) {\n const errorData = data as { success: false; error?: string };\n throw new StagehandAPIError(\n `Failed to fetch metrics: ${errorData.error || \"Unknown error\"}`,\n );\n }\n\n // Parse the API data into StagehandMetrics format\n const apiData = (data as Api.ReplayResponse).data;\n const metrics: StagehandMetrics = {\n actPromptTokens: 0,\n actCompletionTokens: 0,\n actReasoningTokens: 0,\n actCachedInputTokens: 0,\n actInferenceTimeMs: 0,\n extractPromptTokens: 0,\n extractCompletionTokens: 0,\n extractReasoningTokens: 0,\n extractCachedInputTokens: 0,\n extractInferenceTimeMs: 0,\n observePromptTokens: 0,\n observeCompletionTokens: 0,\n observeReasoningTokens: 0,\n observeCachedInputTokens: 0,\n observeInferenceTimeMs: 0,\n agentPromptTokens: 0,\n agentCompletionTokens: 0,\n agentReasoningTokens: 0,\n agentCachedInputTokens: 0,\n agentInferenceTimeMs: 0,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n // Parse pages and their actions\n const pages = apiData?.pages || [];\n for (const page of pages) {\n const actions = page.actions || [];\n for (const action of actions) {\n // Get method name and token usage\n const method = (action.method || \"\").toLowerCase();\n const tokenUsage = action.tokenUsage;\n\n if (tokenUsage) {\n const inputTokens = tokenUsage.inputTokens || 0;\n const outputTokens = tokenUsage.outputTokens || 0;\n const reasoningTokens =\n \"reasoningTokens\" in tokenUsage\n ? Number(\n (tokenUsage as { reasoningTokens?: number })\n .reasoningTokens ?? 0,\n )\n : 0;\n const cachedInputTokens =\n \"cachedInputTokens\" in tokenUsage\n ? Number(\n (tokenUsage as { cachedInputTokens?: number })\n .cachedInputTokens ?? 0,\n )\n : 0;\n const timeMs = tokenUsage.timeMs || 0;\n\n // Map method to metrics fields\n if (method === \"act\") {\n metrics.actPromptTokens += inputTokens;\n metrics.actCompletionTokens += outputTokens;\n metrics.actReasoningTokens += reasoningTokens;\n metrics.actCachedInputTokens += cachedInputTokens;\n metrics.actInferenceTimeMs += timeMs;\n } else if (method === \"extract\") {\n metrics.extractPromptTokens += inputTokens;\n metrics.extractCompletionTokens += outputTokens;\n metrics.extractReasoningTokens += reasoningTokens;\n metrics.extractCachedInputTokens += cachedInputTokens;\n metrics.extractInferenceTimeMs += timeMs;\n } else if (method === \"observe\") {\n metrics.observePromptTokens += inputTokens;\n metrics.observeCompletionTokens += outputTokens;\n metrics.observeReasoningTokens += reasoningTokens;\n metrics.observeCachedInputTokens += cachedInputTokens;\n metrics.observeInferenceTimeMs += timeMs;\n } else if (method === \"agent\") {\n metrics.agentPromptTokens += inputTokens;\n metrics.agentCompletionTokens += outputTokens;\n metrics.agentReasoningTokens += reasoningTokens;\n metrics.agentCachedInputTokens += cachedInputTokens;\n metrics.agentInferenceTimeMs += timeMs;\n }\n\n // Always update totals for any method with token usage\n metrics.totalPromptTokens += inputTokens;\n metrics.totalCompletionTokens += outputTokens;\n metrics.totalReasoningTokens += reasoningTokens;\n metrics.totalCachedInputTokens += cachedInputTokens;\n metrics.totalInferenceTimeMs += timeMs;\n }\n }\n }\n\n return metrics;\n }\n\n /**\n * Prepares a model configuration for the API payload by ensuring the `apiKey`\n * is included. If the model is passed as a string, converts it to an object\n * with `modelName` and `apiKey`.\n *\n * In API mode, we only attempt to load an API key from env vars when the\n * model provider differs from the one used to init the session.\n */\n private prepareModelConfig(\n model: ModelConfiguration,\n ): { modelName: string; apiKey: string } & Record<string, unknown> {\n if (typeof model === \"string\") {\n // Extract provider from model string (e.g., \"openai/gpt-5-nano\" -> \"openai\")\n const provider = model.includes(\"/\") ? model.split(\"/\")[0] : undefined;\n const apiKey =\n provider && provider !== this.modelProvider\n ? (loadApiKeyFromEnv(provider, this.logger) ?? this.modelApiKey)\n : this.modelApiKey;\n return {\n modelName: model,\n apiKey,\n };\n }\n\n if (!model.apiKey) {\n const provider = model.modelName?.includes(\"/\")\n ? model.modelName.split(\"/\")[0]\n : undefined;\n const apiKey =\n provider && provider !== this.modelProvider\n ? (loadApiKeyFromEnv(provider, this.logger) ?? this.modelApiKey)\n : this.modelApiKey;\n return {\n ...model,\n apiKey,\n };\n }\n\n return model as { modelName: string; apiKey: string } & Record<\n string,\n unknown\n >;\n }\n\n private consumeFinishedEventData<T>(): T | null {\n const data = this.lastFinishedEventData as T | null;\n this.lastFinishedEventData = null;\n return data;\n }\n\n private async execute<T>({\n method,\n args,\n params,\n }: ExecuteActionParams): Promise<T> {\n this.lastFinishedEventData = null;\n const urlParams = new URLSearchParams(params as Record<string, string>);\n const queryString = urlParams.toString();\n const url = `/sessions/${this.sessionId}/${method}${queryString ? `?${queryString}` : \"\"}`;\n\n const response = await this.request(url, {\n method: \"POST\",\n body: JSON.stringify(args),\n });\n\n if (!response.ok) {\n const errorBody = await response.text();\n throw new StagehandHttpError(\n `HTTP error! status: ${response.status}, body: ${errorBody}`,\n );\n }\n\n if (!response.body) {\n throw new StagehandResponseBodyError();\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { value, done } = await reader.read();\n\n if (done && !buffer) {\n throw new StagehandServerError(\n \"Stream ended without completion signal\",\n );\n }\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n\n try {\n const eventData = JSON.parse(line.slice(6));\n\n if (eventData.type === \"system\") {\n if (eventData.data.status === \"error\") {\n const { error: errorMsg } = eventData.data;\n // Throw plain Error to match local SDK behavior (useApi: false)\n throw new Error(errorMsg);\n }\n if (eventData.data.status === \"finished\") {\n this.lastFinishedEventData = eventData.data;\n return eventData.data.result as T;\n }\n } else if (eventData.type === \"log\") {\n const msg = eventData.data.message;\n // Skip server-side internal logs that don't apply to API mode\n if (msg?.message === \"Connecting to local browser\") {\n continue;\n }\n this.logger(eventData.data.message);\n }\n } catch (e) {\n // Let Error instances pass through (server errors thrown above)\n // Only wrap SyntaxError from JSON.parse as parse errors\n if (e instanceof Error && !(e instanceof SyntaxError)) {\n throw e;\n }\n\n const errorMessage = e instanceof Error ? e.message : String(e);\n this.logger({\n category: \"api\",\n message: `Failed to parse SSE event: ${errorMessage}`,\n level: 0,\n });\n throw new StagehandResponseParseError(\n `Failed to parse server response: ${errorMessage}`,\n );\n }\n }\n\n if (done) {\n // Process any remaining data in buffer before exiting\n if (buffer.trim() && buffer.startsWith(\"data: \")) {\n try {\n const eventData = JSON.parse(buffer.slice(6));\n if (\n eventData.type === \"system\" &&\n eventData.data.status === \"finished\"\n ) {\n return eventData.data.result as T;\n }\n } catch {\n this.logger({\n category: \"api\",\n message: `Incomplete data in final buffer: ${buffer.substring(0, 100)}`,\n level: 0,\n });\n }\n }\n throw new StagehandServerError(\n \"Stream ended without completion signal\",\n );\n }\n }\n }\n\n private async request(path: string, options: RequestInit): Promise<Response> {\n const defaultHeaders: Record<string, string> = {\n \"x-bb-api-key\": this.apiKey,\n \"x-bb-project-id\": this.projectId,\n \"x-bb-session-id\": this.sessionId,\n // we want real-time logs, so we stream the response\n \"x-stream-response\": \"true\",\n \"x-model-api-key\": this.modelApiKey,\n \"x-language\": \"typescript\",\n \"x-sdk-version\": STAGEHAND_VERSION,\n };\n if (options.method === \"POST\" && options.body) {\n defaultHeaders[\"Content-Type\"] = \"application/json\";\n }\n\n // Use STAGEHAND_API_URL env var if set, otherwise use region-based URL\n // Ensure /v1 suffix is present for consistency\n let baseUrl: string;\n if (process.env.STAGEHAND_API_URL) {\n const envUrl = process.env.STAGEHAND_API_URL.replace(/\\/+$/, \"\");\n // Append /v1 if not already present\n baseUrl = envUrl.endsWith(\"/v1\") ? envUrl : `${envUrl}/v1`;\n } else {\n baseUrl = getApiUrlForRegion(this.region);\n }\n\n const response = await this.fetchWithCookies(`${baseUrl}${path}`, {\n ...options,\n headers: {\n ...defaultHeaders,\n ...options.headers,\n },\n });\n\n return response;\n }\n}\n"]}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../../lib/v3/api.ts"],"names":[],"mappings":"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","sourcesContent":["import makeFetchCookie from \"fetch-cookie\";\nimport { loadApiKeyFromEnv } from \"../utils.js\";\nimport { STAGEHAND_VERSION } from \"../version.js\";\nimport {\n StagehandAPIError,\n StagehandAPIUnauthorizedError,\n StagehandHttpError,\n StagehandResponseBodyError,\n StagehandResponseParseError,\n StagehandServerError,\n ExperimentalNotConfiguredError,\n} from \"./types/public/index.js\";\nimport type {\n ActResult,\n AgentConfig,\n AgentExecuteOptions,\n AgentResult,\n ExtractResult,\n ObserveResult,\n LogLine,\n StagehandMetrics,\n BrowserbaseRegion,\n ActOptions,\n ExtractOptions,\n ObserveOptions,\n Api,\n} from \"./types/public/index.js\";\nimport type {\n SerializableResponse,\n AgentCacheTransferPayload,\n} from \"./types/private/index.js\";\nimport type { ModelConfiguration } from \"./types/public/model.js\";\nimport { toJsonSchema } from \"./zodCompat.js\";\nimport type { StagehandZodSchema } from \"./zodCompat.js\";\n\n// =============================================================================\n// Multi-region API URL mapping\n// =============================================================================\n\n/**\n * Mapping of Browserbase regions to their corresponding Stagehand API base URLs.\n * Users should configure their client to hit the API endpoint that matches\n * the region where their browser session is running.\n */\nexport const REGION_API_URLS: Record<BrowserbaseRegion, string> = {\n \"us-west-2\": \"https://api.stagehand.browserbase.com\",\n \"us-east-1\": \"https://api.use1.stagehand.browserbase.com\",\n \"eu-central-1\": \"https://api.euc1.stagehand.browserbase.com\",\n \"ap-southeast-1\": \"https://api.apse1.stagehand.browserbase.com\",\n};\n\n/**\n * Returns the full API URL (with /v1 suffix) for a given Browserbase region.\n * If no region is specified or the region is unknown, defaults to us-west-2.\n *\n * @param region - The Browserbase region (e.g., \"us-west-2\", \"eu-central-1\")\n * @returns The full API URL including /v1 suffix\n */\nexport function getApiUrlForRegion(\n region: BrowserbaseRegion | undefined,\n): string {\n const baseUrl =\n REGION_API_URLS[region as BrowserbaseRegion] ??\n REGION_API_URLS[\"us-west-2\"];\n return `${baseUrl}/v1`;\n}\n\n// =============================================================================\n// Client-specific types (can't be Zod schemas due to functions/Page objects)\n// =============================================================================\n//\n// These types mirror the Api.* schemas from types/public/api.ts but include\n// non-serializable SDK fields (like Page objects) that get stripped before\n// sending requests over the wire.\n//\n// Relationship to wire format:\n// - Client accepts: SDK types (ActOptions, ExtractOptions, etc.) with optional `page`\n// - Wire sends: Api.* types (page stripped, Zod schema converted to JSON schema)\n// - Client returns: SDK result types (ActResult, ExtractResult, etc.)\n// =============================================================================\n\n/**\n * Constructor parameters for StagehandAPIClient\n */\ninterface StagehandAPIConstructorParams {\n apiKey: string;\n projectId?: string;\n logger: (message: LogLine) => void;\n /**\n * When true, enables server-side caching by default for all requests.\n * When false, disables server-side caching.\n * Defaults to true (caching enabled).\n * Can be overridden per-method in act(), extract(), and observe() options.\n */\n serverCache?: boolean;\n}\n\n/**\n * Parameters for starting a session via the API client.\n * Extends Api.SessionStartRequest with client-specific field (modelApiKey).\n *\n * Wire format: Api.SessionStartRequest (modelApiKey sent via header, not body)\n */\ninterface ClientSessionStartParams extends Api.SessionStartRequest {\n /** Model API key - sent via x-model-api-key header, not in request body */\n modelApiKey: string;\n}\n\n/**\n * Generic API response wrapper matching Api.*Response schemas\n */\ntype ApiResponse<T> =\n | { success: true; data: T }\n | { success: false; message: string };\n\n/**\n * Union of all API request body types for type-safe execute() calls\n */\ntype ApiRequestBody =\n | Api.ActRequest\n | Api.ExtractRequest\n | Api.ObserveRequest\n | Api.NavigateRequest\n | Api.AgentExecuteRequest;\n\n/**\n * Parameters for executing an action via the streaming API\n */\ninterface ExecuteActionParams {\n method: \"act\" | \"extract\" | \"observe\" | \"navigate\" | \"end\" | \"agentExecute\";\n args?: ApiRequestBody;\n params?: Record<string, string>;\n /**\n * Override the instance-level serverCache setting for this request.\n * When true, enables server-side caching.\n * When false, disables server-side caching.\n */\n serverCache?: boolean;\n}\n\n/**\n * Client parameters for act() method.\n * Derives structure from Api.ActRequest but uses SDK's ActOptions (which includes `page`).\n * Before serialization, `page` is stripped to produce Api.ActRequest wire format.\n */\ninterface ClientActParameters {\n input: Api.ActRequest[\"input\"];\n options?: ActOptions;\n frameId?: Api.ActRequest[\"frameId\"];\n}\n\n/**\n * Client parameters for extract() method.\n * Derives structure from Api.ExtractRequest but uses SDK's ExtractOptions (which includes `page`)\n * and accepts Zod schema (converted to JSON schema for wire format).\n */\ninterface ClientExtractParameters {\n instruction?: Api.ExtractRequest[\"instruction\"];\n schema?: StagehandZodSchema;\n options?: ExtractOptions;\n frameId?: Api.ExtractRequest[\"frameId\"];\n}\n\n/**\n * Client parameters for observe() method.\n * Derives structure from Api.ObserveRequest but uses SDK's ObserveOptions (which includes `page`).\n * Before serialization, `page` is stripped to produce Api.ObserveRequest wire format.\n */\ninterface ClientObserveParameters {\n instruction?: Api.ObserveRequest[\"instruction\"];\n options?: ObserveOptions;\n frameId?: Api.ObserveRequest[\"frameId\"];\n}\n\nexport class StagehandAPIClient {\n private apiKey: string;\n private projectId?: string;\n private sessionId?: string;\n private modelApiKey: string;\n private modelProvider?: string;\n private region?: BrowserbaseRegion;\n private logger: (message: LogLine) => void;\n private fetchWithCookies;\n private serverCache: boolean;\n private lastFinishedEventData: Record<string, unknown> | null = null;\n private latestAgentCacheEntry: AgentCacheTransferPayload | null = null;\n\n constructor({\n apiKey,\n projectId,\n logger,\n serverCache,\n }: StagehandAPIConstructorParams) {\n this.apiKey = apiKey;\n this.projectId = projectId;\n this.logger = logger;\n this.serverCache = serverCache ?? true;\n // Create a single cookie jar instance that will persist across all requests\n this.fetchWithCookies = makeFetchCookie(fetch);\n }\n\n async init({\n modelName,\n modelApiKey,\n domSettleTimeoutMs,\n verbose,\n systemPrompt,\n selfHeal,\n browserbaseSessionCreateParams,\n browserbaseSessionID,\n // browser, TODO for local browsers\n }: ClientSessionStartParams): Promise<Api.SessionStartResult> {\n if (!modelApiKey) {\n throw new StagehandAPIError(\"modelApiKey is required\");\n }\n this.modelApiKey = modelApiKey;\n // Extract provider from modelName (e.g., \"openai/gpt-5-nano\" -> \"openai\")\n this.modelProvider = modelName?.includes(\"/\")\n ? modelName.split(\"/\")[0]\n : undefined;\n\n // Store the region for multi-region API URL resolution\n this.region = browserbaseSessionCreateParams?.region;\n\n this.logger({\n category: \"init\",\n message: \"Creating new browserbase session...\",\n level: 1,\n });\n\n // Build wire-format request body (Api.SessionStartRequest shape)\n const requestBody: Api.SessionStartRequest = {\n modelName,\n domSettleTimeoutMs,\n verbose,\n systemPrompt,\n selfHeal,\n browserbaseSessionCreateParams,\n browserbaseSessionID,\n // browser, TODO: only send when connected to local fastify\n };\n\n const sessionResponse = await this.request(\"/sessions/start\", {\n method: \"POST\",\n body: JSON.stringify(requestBody),\n });\n\n if (sessionResponse.status === 401) {\n throw new StagehandAPIUnauthorizedError(\n \"Unauthorized. Ensure you provided a valid API key.\",\n );\n } else if (sessionResponse.status !== 200) {\n const errorText = await sessionResponse.text();\n this.logger({\n category: \"api\",\n message: `API error (${sessionResponse.status}): ${errorText}`,\n level: 0,\n });\n throw new StagehandHttpError(`Unknown error: ${sessionResponse.status}`);\n }\n\n const sessionResponseBody =\n (await sessionResponse.json()) as ApiResponse<Api.SessionStartResult>;\n\n if (sessionResponseBody.success === false) {\n throw new StagehandAPIError(sessionResponseBody.message);\n }\n\n // Temporary reroute for rollout\n if (!sessionResponseBody.data?.available && browserbaseSessionID) {\n sessionResponseBody.data.sessionId = browserbaseSessionID;\n }\n\n this.sessionId = sessionResponseBody.data.sessionId;\n\n return sessionResponseBody.data;\n }\n\n async act({\n input,\n options,\n frameId,\n }: ClientActParameters): Promise<ActResult> {\n // Strip non-serializable `page` and SDK-only fields from options before wire serialization\n let wireOptions: Api.ActRequest[\"options\"];\n let serverCache: boolean | undefined;\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, serverCache: enableCache, ...restOptions } = options;\n serverCache = enableCache;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ActRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ActRequest = {\n input,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<ActResult>({\n method: \"act\",\n args: requestBody,\n serverCache,\n });\n }\n\n async extract<T extends StagehandZodSchema>({\n instruction,\n schema: zodSchema,\n options,\n frameId,\n }: ClientExtractParameters): Promise<ExtractResult<T>> {\n // Convert Zod schema to JSON schema for wire format\n const jsonSchema = zodSchema ? toJsonSchema(zodSchema) : undefined;\n\n // Strip non-serializable `page` and SDK-only fields from options before wire serialization\n let wireOptions: Api.ExtractRequest[\"options\"];\n let serverCache: boolean | undefined;\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, serverCache: enableCache, ...restOptions } = options;\n serverCache = enableCache;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ExtractRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ExtractRequest = {\n instruction,\n schema: jsonSchema,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<ExtractResult<T>>({\n method: \"extract\",\n args: requestBody,\n serverCache,\n });\n }\n\n async observe({\n instruction,\n options,\n frameId,\n }: ClientObserveParameters): Promise<ObserveResult> {\n // Strip non-serializable `page` and SDK-only fields from options before wire serialization\n let wireOptions: Api.ObserveRequest[\"options\"];\n let serverCache: boolean | undefined;\n if (options) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, serverCache: enableCache, ...restOptions } = options;\n serverCache = enableCache;\n if (Object.keys(restOptions).length > 0) {\n if (restOptions.model) {\n restOptions.model = this.prepareModelConfig(restOptions.model);\n }\n wireOptions = restOptions as unknown as Api.ObserveRequest[\"options\"];\n }\n }\n\n // Build wire-format request body\n const requestBody: Api.ObserveRequest = {\n instruction,\n options: wireOptions,\n frameId,\n };\n\n return this.execute<ObserveResult>({\n method: \"observe\",\n args: requestBody,\n serverCache,\n });\n }\n\n async goto(\n url: string,\n options?: Api.NavigateRequest[\"options\"],\n frameId?: string,\n ): Promise<SerializableResponse | null> {\n const requestBody: Api.NavigateRequest = { url, options, frameId };\n\n return this.execute<SerializableResponse | null>({\n method: \"navigate\",\n args: requestBody,\n });\n }\n\n async agentExecute(\n agentConfig: AgentConfig,\n executeOptions: AgentExecuteOptions | string,\n frameId?: string,\n shouldCache?: boolean,\n ): Promise<AgentResult> {\n // Check if integrations are being used in API mode (not supported)\n if (agentConfig.integrations && agentConfig.integrations.length > 0) {\n throw new ExperimentalNotConfiguredError(\"MCP integrations\");\n }\n\n // Strip non-serializable `page` from executeOptions before wire serialization\n let wireExecuteOptions: Api.AgentExecuteRequest[\"executeOptions\"];\n if (typeof executeOptions === \"string\") {\n wireExecuteOptions = { instruction: executeOptions };\n } else if (executeOptions.page) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { page: _, ...rest } = executeOptions;\n wireExecuteOptions = rest;\n } else {\n wireExecuteOptions = executeOptions;\n }\n\n const wireAgentConfig: Api.AgentExecuteRequest[\"agentConfig\"] = {\n systemPrompt: agentConfig.systemPrompt,\n mode: agentConfig.mode ?? (agentConfig.cua === true ? \"cua\" : undefined),\n cua: agentConfig.mode === undefined ? agentConfig.cua : undefined,\n model: agentConfig.model\n ? this.prepareModelConfig(agentConfig.model)\n : undefined,\n executionModel: agentConfig.executionModel\n ? this.prepareModelConfig(agentConfig.executionModel)\n : undefined,\n };\n\n // Build wire-format request body\n const requestBody: Api.AgentExecuteRequest = {\n agentConfig: wireAgentConfig,\n executeOptions: wireExecuteOptions,\n frameId,\n shouldCache,\n };\n\n const result = await this.execute<AgentResult>({\n method: \"agentExecute\",\n args: requestBody,\n });\n\n const finishedData =\n this.consumeFinishedEventData<Api.AgentExecuteResult>() ?? null;\n this.latestAgentCacheEntry =\n finishedData?.cacheEntry !== undefined\n ? (finishedData.cacheEntry as AgentCacheTransferPayload)\n : null;\n return result;\n }\n\n consumeLatestAgentCacheEntry(): AgentCacheTransferPayload | null {\n const entry = this.latestAgentCacheEntry;\n this.latestAgentCacheEntry = null;\n return entry;\n }\n\n async end(): Promise<Response> {\n const url = `/sessions/${this.sessionId}/end`;\n const response = await this.request(url, {\n method: \"POST\",\n });\n return response;\n }\n\n async getReplayMetrics(): Promise<StagehandMetrics> {\n if (!this.sessionId) {\n throw new StagehandAPIError(\"sessionId is required to fetch metrics.\");\n }\n\n const response = await this.request(`/sessions/${this.sessionId}/replay`, {\n method: \"GET\",\n });\n\n if (response.status !== 200) {\n const errorText = await response.text();\n this.logger({\n category: \"api\",\n message: `Failed to fetch metrics. Status ${response.status}: ${errorText}`,\n level: 0,\n });\n throw new StagehandHttpError(\n `Failed to fetch metrics with status ${response.status}: ${errorText}`,\n );\n }\n\n const data = (await response.json()) as\n | Api.ReplayResponse\n | { success: false; error?: string };\n\n if (!data.success) {\n const errorData = data as { success: false; error?: string };\n throw new StagehandAPIError(\n `Failed to fetch metrics: ${errorData.error || \"Unknown error\"}`,\n );\n }\n\n // Parse the API data into StagehandMetrics format\n const apiData = (data as Api.ReplayResponse).data;\n const metrics: StagehandMetrics = {\n actPromptTokens: 0,\n actCompletionTokens: 0,\n actReasoningTokens: 0,\n actCachedInputTokens: 0,\n actInferenceTimeMs: 0,\n extractPromptTokens: 0,\n extractCompletionTokens: 0,\n extractReasoningTokens: 0,\n extractCachedInputTokens: 0,\n extractInferenceTimeMs: 0,\n observePromptTokens: 0,\n observeCompletionTokens: 0,\n observeReasoningTokens: 0,\n observeCachedInputTokens: 0,\n observeInferenceTimeMs: 0,\n agentPromptTokens: 0,\n agentCompletionTokens: 0,\n agentReasoningTokens: 0,\n agentCachedInputTokens: 0,\n agentInferenceTimeMs: 0,\n totalPromptTokens: 0,\n totalCompletionTokens: 0,\n totalReasoningTokens: 0,\n totalCachedInputTokens: 0,\n totalInferenceTimeMs: 0,\n };\n\n // Parse pages and their actions\n const pages = apiData?.pages || [];\n for (const page of pages) {\n const actions = page.actions || [];\n for (const action of actions) {\n // Get method name and token usage\n const method = (action.method || \"\").toLowerCase();\n const tokenUsage = action.tokenUsage;\n\n if (tokenUsage) {\n const inputTokens = tokenUsage.inputTokens || 0;\n const outputTokens = tokenUsage.outputTokens || 0;\n const reasoningTokens =\n \"reasoningTokens\" in tokenUsage\n ? Number(\n (tokenUsage as { reasoningTokens?: number })\n .reasoningTokens ?? 0,\n )\n : 0;\n const cachedInputTokens =\n \"cachedInputTokens\" in tokenUsage\n ? Number(\n (tokenUsage as { cachedInputTokens?: number })\n .cachedInputTokens ?? 0,\n )\n : 0;\n const timeMs = tokenUsage.timeMs || 0;\n\n // Map method to metrics fields\n if (method === \"act\") {\n metrics.actPromptTokens += inputTokens;\n metrics.actCompletionTokens += outputTokens;\n metrics.actReasoningTokens += reasoningTokens;\n metrics.actCachedInputTokens += cachedInputTokens;\n metrics.actInferenceTimeMs += timeMs;\n } else if (method === \"extract\") {\n metrics.extractPromptTokens += inputTokens;\n metrics.extractCompletionTokens += outputTokens;\n metrics.extractReasoningTokens += reasoningTokens;\n metrics.extractCachedInputTokens += cachedInputTokens;\n metrics.extractInferenceTimeMs += timeMs;\n } else if (method === \"observe\") {\n metrics.observePromptTokens += inputTokens;\n metrics.observeCompletionTokens += outputTokens;\n metrics.observeReasoningTokens += reasoningTokens;\n metrics.observeCachedInputTokens += cachedInputTokens;\n metrics.observeInferenceTimeMs += timeMs;\n } else if (method === \"agent\") {\n metrics.agentPromptTokens += inputTokens;\n metrics.agentCompletionTokens += outputTokens;\n metrics.agentReasoningTokens += reasoningTokens;\n metrics.agentCachedInputTokens += cachedInputTokens;\n metrics.agentInferenceTimeMs += timeMs;\n }\n\n // Always update totals for any method with token usage\n metrics.totalPromptTokens += inputTokens;\n metrics.totalCompletionTokens += outputTokens;\n metrics.totalReasoningTokens += reasoningTokens;\n metrics.totalCachedInputTokens += cachedInputTokens;\n metrics.totalInferenceTimeMs += timeMs;\n }\n }\n }\n\n return metrics;\n }\n\n /**\n * Prepares a model configuration for the API payload by ensuring the `apiKey`\n * is included. If the model is passed as a string, converts it to an object\n * with `modelName` and `apiKey`.\n *\n * In API mode, we only attempt to load an API key from env vars when the\n * model provider differs from the one used to init the session.\n */\n private prepareModelConfig(\n model: ModelConfiguration,\n ): { modelName: string; apiKey: string } & Record<string, unknown> {\n if (typeof model === \"string\") {\n // Extract provider from model string (e.g., \"openai/gpt-5-nano\" -> \"openai\")\n const provider = model.includes(\"/\") ? model.split(\"/\")[0] : undefined;\n const apiKey =\n provider && provider !== this.modelProvider\n ? (loadApiKeyFromEnv(provider, this.logger) ?? this.modelApiKey)\n : this.modelApiKey;\n return {\n modelName: model,\n apiKey,\n };\n }\n\n if (!model.apiKey) {\n const provider = model.modelName?.includes(\"/\")\n ? model.modelName.split(\"/\")[0]\n : undefined;\n const apiKey =\n provider && provider !== this.modelProvider\n ? (loadApiKeyFromEnv(provider, this.logger) ?? this.modelApiKey)\n : this.modelApiKey;\n return {\n ...model,\n apiKey,\n };\n }\n\n return model as { modelName: string; apiKey: string } & Record<\n string,\n unknown\n >;\n }\n\n private consumeFinishedEventData<T>(): T | null {\n const data = this.lastFinishedEventData as T | null;\n this.lastFinishedEventData = null;\n return data;\n }\n\n private async execute<T>({\n method,\n args,\n params,\n serverCache,\n }: ExecuteActionParams): Promise<T> {\n this.lastFinishedEventData = null;\n const urlParams = new URLSearchParams(params as Record<string, string>);\n const queryString = urlParams.toString();\n const url = `/sessions/${this.sessionId}/${method}${queryString ? `?${queryString}` : \"\"}`;\n\n const response = await this.request(\n url,\n {\n method: \"POST\",\n body: JSON.stringify(args),\n },\n serverCache,\n );\n\n // Capture cache status from response header\n const cacheStatus = response.headers.get(\"browserbase-cache-status\") as\n | \"HIT\"\n | \"MISS\"\n | null;\n\n if (!response.ok) {\n const errorBody = await response.text();\n throw new StagehandHttpError(\n `HTTP error! status: ${response.status}, body: ${errorBody}`,\n );\n }\n\n if (!response.body) {\n throw new StagehandResponseBodyError();\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n\n while (true) {\n const { value, done } = await reader.read();\n\n if (done && !buffer) {\n throw new StagehandServerError(\n \"Stream ended without completion signal\",\n );\n }\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split(\"\\n\\n\");\n buffer = lines.pop() || \"\";\n\n for (const line of lines) {\n if (!line.startsWith(\"data: \")) continue;\n\n try {\n const eventData = JSON.parse(line.slice(6));\n\n if (eventData.type === \"system\") {\n if (eventData.data.status === \"error\") {\n const { error: errorMsg } = eventData.data;\n // Throw plain Error to match local SDK behavior (useApi: false)\n throw new Error(errorMsg);\n }\n if (eventData.data.status === \"finished\") {\n this.lastFinishedEventData = eventData.data;\n\n // If caching was bypassed for this request, suppress cache status\n // so we don't log or surface a MISS that the server emits anyway.\n const cacheEnabled = this.shouldUseCache(serverCache);\n return this.attachCacheStatus(\n eventData.data.result as T,\n method,\n cacheEnabled ? cacheStatus : null,\n cacheEnabled ? eventData : { data: {} },\n );\n }\n } else if (eventData.type === \"log\") {\n const msg = eventData.data.message;\n // Skip server-side internal logs that don't apply to API mode\n if (msg?.message === \"Connecting to local browser\") {\n continue;\n }\n this.logger(eventData.data.message);\n }\n } catch (e) {\n // Let Error instances pass through (server errors thrown above)\n // Only wrap SyntaxError from JSON.parse as parse errors\n if (e instanceof Error && !(e instanceof SyntaxError)) {\n throw e;\n }\n\n const errorMessage = e instanceof Error ? e.message : String(e);\n this.logger({\n category: \"api\",\n message: `Failed to parse SSE event: ${errorMessage}`,\n level: 0,\n });\n throw new StagehandResponseParseError(\n `Failed to parse server response: ${errorMessage}`,\n );\n }\n }\n\n if (done) {\n // Process any remaining data in buffer before exiting\n if (buffer.trim() && buffer.startsWith(\"data: \")) {\n try {\n const eventData = JSON.parse(buffer.slice(6));\n if (\n eventData.type === \"system\" &&\n eventData.data.status === \"finished\"\n ) {\n return this.attachCacheStatus(\n eventData.data.result as T,\n method,\n cacheStatus,\n eventData,\n );\n }\n } catch {\n this.logger({\n category: \"api\",\n message: `Incomplete data in final buffer: ${buffer.substring(0, 100)}`,\n level: 0,\n });\n }\n }\n throw new StagehandServerError(\n \"Stream ended without completion signal\",\n );\n }\n }\n }\n\n /**\n * Resolves the final cache status from the response header or SSE event data,\n * logs it, and attaches it to act/extract results before returning.\n */\n private attachCacheStatus<T>(\n result: T,\n method: string,\n cacheStatus: \"HIT\" | \"MISS\" | null,\n eventData: { data: { cacheHit?: boolean } },\n ): T {\n const finalCacheStatus =\n cacheStatus ||\n (typeof eventData.data.cacheHit === \"boolean\"\n ? eventData.data.cacheHit\n ? \"HIT\"\n : \"MISS\"\n : undefined);\n if (\n finalCacheStatus &&\n (method === \"act\" || method === \"extract\" || method === \"observe\")\n ) {\n this.logger({\n category: \"cache\",\n message: `${method} server cache ${finalCacheStatus.toLowerCase()}`,\n level: 1,\n });\n }\n if (\n finalCacheStatus &&\n result &&\n typeof result === \"object\" &&\n (method === \"act\" || method === \"extract\" || method === \"observe\")\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (result as ActResult | ExtractResult<any> | ObserveResult).cacheStatus =\n finalCacheStatus;\n }\n return result;\n }\n\n /**\n * Determine if caching should be enabled for a request.\n * Method-level setting takes precedence over instance-level setting.\n */\n private shouldUseCache(methodServerCache?: boolean): boolean {\n // If method-level setting is explicitly provided, use it\n if (methodServerCache !== undefined) {\n return methodServerCache;\n }\n // Otherwise, use instance-level setting\n return this.serverCache;\n }\n\n private async request(\n path: string,\n options: RequestInit,\n serverCache?: boolean,\n ): Promise<Response> {\n const defaultHeaders: Record<string, string> = {\n \"x-bb-api-key\": this.apiKey,\n ...(this.projectId ? { \"x-bb-project-id\": this.projectId } : {}),\n \"x-bb-session-id\": this.sessionId,\n // we want real-time logs, so we stream the response\n \"x-stream-response\": \"true\",\n \"x-model-api-key\": this.modelApiKey,\n \"x-language\": \"typescript\",\n \"x-sdk-version\": STAGEHAND_VERSION,\n };\n\n // Add cache bypass header if caching is disabled\n if (!this.shouldUseCache(serverCache)) {\n defaultHeaders[\"browserbase-cache-bypass\"] = \"true\";\n }\n\n if (options.method === \"POST\" && options.body) {\n defaultHeaders[\"Content-Type\"] = \"application/json\";\n }\n\n // Use STAGEHAND_API_URL env var if set, otherwise use region-based URL\n // Ensure /v1 suffix is present for consistency\n let baseUrl: string;\n if (process.env.STAGEHAND_API_URL) {\n const envUrl = process.env.STAGEHAND_API_URL.replace(/\\/+$/, \"\");\n // Append /v1 if not already present\n baseUrl = envUrl.endsWith(\"/v1\") ? envUrl : `${envUrl}/v1`;\n } else {\n baseUrl = getApiUrlForRegion(this.region);\n }\n\n const response = await this.fetchWithCookies(`${baseUrl}${path}`, {\n ...options,\n headers: {\n ...defaultHeaders,\n ...options.headers,\n },\n });\n\n return response;\n }\n}\n"]}
@@ -19,5 +19,4 @@ export declare class ActCache {
19
19
  private refreshCacheEntry;
20
20
  private doVariableKeysMatch;
21
21
  private hasAllVariableValues;
22
- private runWithTimeout;
23
22
  }
@@ -1,6 +1,7 @@
1
1
  import { createHash } from "crypto";
2
2
  import { safeGetPageUrl, waitForCachedSelector } from "./utils.js";
3
3
  import { StagehandNotInitializedError } from "../types/public/sdkErrors.js";
4
+ import { withTimeout } from "../timeoutConfig.js";
4
5
  export class ActCache {
5
6
  storage;
6
7
  logger;
@@ -192,7 +193,7 @@ export class ActCache {
192
193
  actions,
193
194
  };
194
195
  };
195
- return await this.runWithTimeout(execute, timeout);
196
+ return await withTimeout(execute(), timeout, "act()");
196
197
  }
197
198
  haveActionsChanged(original, updated) {
198
199
  if (original.length !== updated.length) {
@@ -271,22 +272,5 @@ export class ActCache {
271
272
  }
272
273
  return true;
273
274
  }
274
- async runWithTimeout(run, timeout) {
275
- if (!timeout) {
276
- return await run();
277
- }
278
- return await new Promise((resolve, reject) => {
279
- const timer = setTimeout(() => {
280
- reject(new Error(`act() timed out after ${timeout}ms`));
281
- }, timeout);
282
- void run().then((value) => {
283
- clearTimeout(timer);
284
- resolve(value);
285
- }, (err) => {
286
- clearTimeout(timer);
287
- reject(err);
288
- });
289
- });
290
- }
291
275
  }
292
276
  //# sourceMappingURL=ActCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActCache.js","sourceRoot":"","sources":["../../../../../lib/v3/cache/ActCache.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"crypto\";\nimport type { ActHandler } from \"../handlers/actHandler.js\";\nimport type { LLMClient } from \"../llm/LLMClient.js\";\nimport type { Action, ActResult, Logger } from \"../types/public/index.js\";\nimport type { Page } from \"../understudy/page.js\";\nimport { CacheStorage } from \"./CacheStorage.js\";\nimport { safeGetPageUrl, waitForCachedSelector } from \"./utils.js\";\nimport {\n ActCacheContext,\n ActCacheDeps,\n CachedActEntry,\n} from \"../types/private/index.js\";\nimport { StagehandNotInitializedError } from \"../types/public/sdkErrors.js\";\n\nexport class ActCache {\n private readonly storage: CacheStorage;\n private readonly logger: Logger;\n private readonly getActHandler: () => ActHandler | null;\n private readonly getDefaultLlmClient: () => LLMClient;\n private readonly domSettleTimeoutMs?: number;\n\n constructor({\n storage,\n logger,\n getActHandler,\n getDefaultLlmClient,\n domSettleTimeoutMs,\n }: ActCacheDeps) {\n this.storage = storage;\n this.logger = logger;\n this.getActHandler = getActHandler;\n this.getDefaultLlmClient = getDefaultLlmClient;\n this.domSettleTimeoutMs = domSettleTimeoutMs;\n }\n\n get enabled(): boolean {\n return this.storage.enabled;\n }\n\n async prepareContext(\n instruction: string,\n page: Page,\n variables?: Record<string, string>,\n ): Promise<ActCacheContext | null> {\n if (!this.enabled) return null;\n const sanitizedInstruction = instruction.trim();\n const sanitizedVariables = variables ? { ...variables } : undefined;\n const variableKeys = sanitizedVariables\n ? Object.keys(sanitizedVariables).sort()\n : [];\n const pageUrl = await safeGetPageUrl(page);\n const cacheKey = this.buildActCacheKey(\n sanitizedInstruction,\n pageUrl,\n variableKeys,\n );\n return {\n instruction: sanitizedInstruction,\n cacheKey,\n pageUrl,\n variableKeys,\n variables: sanitizedVariables,\n };\n }\n\n async tryReplay(\n context: ActCacheContext,\n page: Page,\n timeout?: number,\n llmClientOverride?: LLMClient,\n ): Promise<ActResult | null> {\n if (!this.enabled) return null;\n\n const {\n value: entry,\n error,\n path,\n } = await this.storage.readJson<CachedActEntry>(`${context.cacheKey}.json`);\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: `failed to read act cache entry: ${path}`,\n level: 2,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return null;\n }\n if (!entry) return null;\n if (entry.version !== 1) return null;\n if (!Array.isArray(entry.actions) || entry.actions.length === 0) {\n return null;\n }\n\n const entryVariableKeys = Array.isArray(entry.variableKeys)\n ? [...entry.variableKeys].sort()\n : [];\n const contextVariableKeys = [...context.variableKeys];\n\n if (!this.doVariableKeysMatch(entryVariableKeys, contextVariableKeys)) {\n return null;\n }\n\n if (\n contextVariableKeys.length > 0 &&\n (!context.variables ||\n !this.hasAllVariableValues(contextVariableKeys, context.variables))\n ) {\n this.logger({\n category: \"cache\",\n message: \"act cache miss: missing variables for replay\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n },\n });\n return null;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache hit\",\n level: 1,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: {\n value: entry.url ?? context.pageUrl,\n type: \"string\",\n },\n },\n });\n\n return await this.replayCachedActions(\n context,\n entry,\n page,\n timeout,\n llmClientOverride,\n );\n }\n\n async store(context: ActCacheContext, result: ActResult): Promise<void> {\n if (!this.enabled) return;\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: context.instruction,\n url: context.pageUrl,\n variableKeys: context.variableKeys,\n actions: result.actions ?? [],\n actionDescription: result.actionDescription,\n message: result.message,\n };\n\n const { error, path } = await this.storage.writeJson(\n `${context.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to write act cache entry\",\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache stored\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.pageUrl, type: \"string\" },\n },\n });\n }\n\n private buildActCacheKey(\n instruction: string,\n url: string,\n variableKeys: string[],\n ): string {\n const payload = JSON.stringify({\n instruction,\n url,\n variableKeys,\n });\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n }\n\n private async replayCachedActions(\n context: ActCacheContext,\n entry: CachedActEntry,\n page: Page,\n timeout?: number,\n llmClientOverride?: LLMClient,\n ): Promise<ActResult> {\n const handler = this.getActHandler();\n if (!handler) {\n throw new StagehandNotInitializedError(\"act()\");\n }\n const effectiveClient = llmClientOverride ?? this.getDefaultLlmClient();\n\n const execute = async (): Promise<ActResult> => {\n const actionResults: ActResult[] = [];\n for (const action of entry.actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"act\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n effectiveClient,\n undefined,\n context.variables,\n );\n actionResults.push(result);\n if (!result.success) {\n break;\n }\n }\n\n if (actionResults.length === 0) {\n return {\n success: false,\n message: \"Failed to perform act: cached entry has no actions\",\n actionDescription: entry.actionDescription ?? entry.instruction,\n actions: [],\n };\n }\n\n const success = actionResults.every((r) => r.success);\n const actions = actionResults.flatMap((r) => r.actions ?? []);\n const message =\n actionResults\n .map((r) => r.message)\n .filter((m) => m && m.trim().length > 0)\n .join(\" → \") ||\n entry.message ||\n `Replayed ${entry.actions.length} cached action${\n entry.actions.length === 1 ? \"\" : \"s\"\n }.`;\n const actionDescription =\n entry.actionDescription ||\n actionResults[actionResults.length - 1]?.actionDescription ||\n entry.actions[entry.actions.length - 1]?.description ||\n entry.instruction;\n\n if (\n success &&\n actions.length > 0 &&\n this.haveActionsChanged(entry.actions, actions)\n ) {\n await this.refreshCacheEntry(context, {\n ...entry,\n actions,\n message,\n actionDescription,\n });\n }\n return {\n success,\n message,\n actionDescription,\n actions,\n };\n };\n\n return await this.runWithTimeout(execute, timeout);\n }\n\n private haveActionsChanged(original: Action[], updated: Action[]): boolean {\n if (original.length !== updated.length) {\n return true;\n }\n\n for (let i = 0; i < original.length; i += 1) {\n const orig = original[i];\n const next = updated[i];\n if (!next) {\n return true;\n }\n\n if (orig.selector !== next.selector) {\n return true;\n }\n\n if (orig.description !== next.description) {\n return true;\n }\n\n if ((orig.method ?? \"\") !== (next.method ?? \"\")) {\n return true;\n }\n\n const origArgs = orig.arguments ?? [];\n const nextArgs = next.arguments ?? [];\n if (origArgs.length !== nextArgs.length) {\n return true;\n }\n\n for (let j = 0; j < origArgs.length; j += 1) {\n if (origArgs[j] !== nextArgs[j]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private async refreshCacheEntry(\n context: ActCacheContext,\n entry: CachedActEntry,\n ): Promise<void> {\n const { error, path } = await this.storage.writeJson(\n `${context.cacheKey}.json`,\n {\n ...entry,\n variableKeys: context.variableKeys,\n },\n );\n\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to update act cache entry after self-heal\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache entry updated after self-heal\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.pageUrl, type: \"string\" },\n },\n });\n }\n\n private doVariableKeysMatch(\n entryKeys: string[],\n contextKeys: string[],\n ): boolean {\n if (entryKeys.length !== contextKeys.length) {\n return false;\n }\n\n for (let i = 0; i < entryKeys.length; i += 1) {\n if (entryKeys[i] !== contextKeys[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n private hasAllVariableValues(\n variableKeys: string[],\n variables: Record<string, string>,\n ): boolean {\n for (const key of variableKeys) {\n if (!(key in variables)) {\n return false;\n }\n }\n return true;\n }\n\n private async runWithTimeout<T>(\n run: () => Promise<T>,\n timeout?: number,\n ): Promise<T> {\n if (!timeout) {\n return await run();\n }\n\n return await new Promise<T>((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(new Error(`act() timed out after ${timeout}ms`));\n }, timeout);\n\n void run().then(\n (value) => {\n clearTimeout(timer);\n resolve(value);\n },\n (err) => {\n clearTimeout(timer);\n reject(err);\n },\n );\n });\n }\n}\n"]}
1
+ {"version":3,"file":"ActCache.js","sourceRoot":"","sources":["../../../../../lib/v3/cache/ActCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAMpC,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMnE,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,OAAO,QAAQ;IACF,OAAO,CAAe;IACtB,MAAM,CAAS;IACf,aAAa,CAA0B;IACvC,mBAAmB,CAAkB;IACrC,kBAAkB,CAAU;IAE7C,YAAY,EACV,OAAO,EACP,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,GACL;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,WAAmB,EACnB,IAAU,EACV,SAAkC;QAElC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,oBAAoB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAChD,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,MAAM,YAAY,GAAG,kBAAkB;YACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE;YACxC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CACpC,oBAAoB,EACpB,OAAO,EACP,YAAY,CACb,CAAC;QACF,OAAO;YACL,WAAW,EAAE,oBAAoB;YACjC,QAAQ;YACR,OAAO;YACP,YAAY;YACZ,SAAS,EAAE,kBAAkB;SAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAAwB,EACxB,IAAU,EACV,OAAgB,EAChB,iBAA6B;QAE7B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,EACJ,KAAK,EAAE,KAAK,EACZ,KAAK,EACL,IAAI,GACL,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAiB,GAAG,OAAO,CAAC,QAAQ,OAAO,CAAC,CAAC;QAC5E,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,mCAAmC,IAAI,EAAE;gBAClD,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChD;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;YACzD,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,mBAAmB,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IACE,mBAAmB,CAAC,MAAM,GAAG,CAAC;YAC9B,CAAC,CAAC,OAAO,CAAC,SAAS;gBACjB,CAAC,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,EACrE,CAAC;YACD,IAAI,CAAC,MAAM,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,8CAA8C;gBACvD,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE;oBACT,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC5D;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,eAAe;YACxB,KAAK,EAAE,CAAC;YACR,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3D,GAAG,EAAE;oBACH,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO;oBACnC,IAAI,EAAE,QAAQ;iBACf;aACF;SACF,CAAC,CAAC;QAEH,OAAO,MAAM,IAAI,CAAC,mBAAmB,CACnC,OAAO,EACP,KAAK,EACL,IAAI,EACJ,OAAO,EACP,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAwB,EAAE,MAAiB;QACrD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,MAAM,KAAK,GAAmB;YAC5B,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,EAAE,OAAO,CAAC,OAAO;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC;QAEF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAClD,GAAG,OAAO,CAAC,QAAQ,OAAO,EAC1B,KAAK,CACN,CAAC;QACF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,iCAAiC;gBAC1C,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChD;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,CAAC;YACR,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3D,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CACtB,WAAmB,EACnB,GAAW,EACX,YAAsB;QAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,WAAW;YACX,GAAG;YACH,YAAY;SACb,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,OAAwB,EACxB,KAAqB,EACrB,IAAU,EACV,OAAgB,EAChB,iBAA6B;QAE7B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,eAAe,GAAG,iBAAiB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAExE,MAAM,OAAO,GAAG,KAAK,IAAwB,EAAE;YAC7C,MAAM,aAAa,GAAgB,EAAE,CAAC;YACtC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnC,MAAM,qBAAqB,CAAC;oBAC1B,IAAI;oBACJ,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,OAAO,EAAE,IAAI,CAAC,kBAAkB;oBAChC,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,uBAAuB,CAClD,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,kBAAkB,EACvB,eAAe,EACf,SAAS,EACT,OAAO,CAAC,SAAS,CAClB,CAAC;gBACF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM;gBACR,CAAC;YACH,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,oDAAoD;oBAC7D,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,WAAW;oBAC/D,OAAO,EAAE,EAAE;iBACZ,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,OAAO,GACX,aAAa;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;iBACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;iBACvC,IAAI,CAAC,KAAK,CAAC;gBACd,KAAK,CAAC,OAAO;gBACb,YAAY,KAAK,CAAC,OAAO,CAAC,MAAM,iBAC9B,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACpC,GAAG,CAAC;YACN,MAAM,iBAAiB,GACrB,KAAK,CAAC,iBAAiB;gBACvB,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,iBAAiB;gBAC1D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW;gBACpD,KAAK,CAAC,WAAW,CAAC;YAEpB,IACE,OAAO;gBACP,OAAO,CAAC,MAAM,GAAG,CAAC;gBAClB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAC/C,CAAC;gBACD,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE;oBACpC,GAAG,KAAK;oBACR,OAAO;oBACP,OAAO;oBACP,iBAAiB;iBAClB,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,OAAO;gBACP,OAAO;gBACP,iBAAiB;gBACjB,OAAO;aACR,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,MAAM,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,kBAAkB,CAAC,QAAkB,EAAE,OAAiB;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBAChD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;YACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChC,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,OAAwB,EACxB,KAAqB;QAErB,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAClD,GAAG,OAAO,CAAC,QAAQ,OAAO,EAC1B;YACE,GAAG,KAAK;YACR,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CACF,CAAC;QAEF,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,kDAAkD;gBAC3D,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAChD;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,yCAAyC;YAClD,KAAK,EAAE,CAAC;YACR,SAAS,EAAE;gBACT,WAAW,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC3D,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;aAChD;SACF,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CACzB,SAAmB,EACnB,WAAqB;QAErB,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oBAAoB,CAC1B,YAAsB,EACtB,SAAiC;QAEjC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,IAAI,CAAC,CAAC,GAAG,IAAI,SAAS,CAAC,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import { createHash } from \"crypto\";\nimport type { ActHandler } from \"../handlers/actHandler.js\";\nimport type { LLMClient } from \"../llm/LLMClient.js\";\nimport type { Action, ActResult, Logger } from \"../types/public/index.js\";\nimport type { Page } from \"../understudy/page.js\";\nimport { CacheStorage } from \"./CacheStorage.js\";\nimport { safeGetPageUrl, waitForCachedSelector } from \"./utils.js\";\nimport {\n ActCacheContext,\n ActCacheDeps,\n CachedActEntry,\n} from \"../types/private/index.js\";\nimport { StagehandNotInitializedError } from \"../types/public/sdkErrors.js\";\nimport { withTimeout } from \"../timeoutConfig.js\";\n\nexport class ActCache {\n private readonly storage: CacheStorage;\n private readonly logger: Logger;\n private readonly getActHandler: () => ActHandler | null;\n private readonly getDefaultLlmClient: () => LLMClient;\n private readonly domSettleTimeoutMs?: number;\n\n constructor({\n storage,\n logger,\n getActHandler,\n getDefaultLlmClient,\n domSettleTimeoutMs,\n }: ActCacheDeps) {\n this.storage = storage;\n this.logger = logger;\n this.getActHandler = getActHandler;\n this.getDefaultLlmClient = getDefaultLlmClient;\n this.domSettleTimeoutMs = domSettleTimeoutMs;\n }\n\n get enabled(): boolean {\n return this.storage.enabled;\n }\n\n async prepareContext(\n instruction: string,\n page: Page,\n variables?: Record<string, string>,\n ): Promise<ActCacheContext | null> {\n if (!this.enabled) return null;\n const sanitizedInstruction = instruction.trim();\n const sanitizedVariables = variables ? { ...variables } : undefined;\n const variableKeys = sanitizedVariables\n ? Object.keys(sanitizedVariables).sort()\n : [];\n const pageUrl = await safeGetPageUrl(page);\n const cacheKey = this.buildActCacheKey(\n sanitizedInstruction,\n pageUrl,\n variableKeys,\n );\n return {\n instruction: sanitizedInstruction,\n cacheKey,\n pageUrl,\n variableKeys,\n variables: sanitizedVariables,\n };\n }\n\n async tryReplay(\n context: ActCacheContext,\n page: Page,\n timeout?: number,\n llmClientOverride?: LLMClient,\n ): Promise<ActResult | null> {\n if (!this.enabled) return null;\n\n const {\n value: entry,\n error,\n path,\n } = await this.storage.readJson<CachedActEntry>(`${context.cacheKey}.json`);\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: `failed to read act cache entry: ${path}`,\n level: 2,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return null;\n }\n if (!entry) return null;\n if (entry.version !== 1) return null;\n if (!Array.isArray(entry.actions) || entry.actions.length === 0) {\n return null;\n }\n\n const entryVariableKeys = Array.isArray(entry.variableKeys)\n ? [...entry.variableKeys].sort()\n : [];\n const contextVariableKeys = [...context.variableKeys];\n\n if (!this.doVariableKeysMatch(entryVariableKeys, contextVariableKeys)) {\n return null;\n }\n\n if (\n contextVariableKeys.length > 0 &&\n (!context.variables ||\n !this.hasAllVariableValues(contextVariableKeys, context.variables))\n ) {\n this.logger({\n category: \"cache\",\n message: \"act cache miss: missing variables for replay\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n },\n });\n return null;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache hit\",\n level: 1,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: {\n value: entry.url ?? context.pageUrl,\n type: \"string\",\n },\n },\n });\n\n return await this.replayCachedActions(\n context,\n entry,\n page,\n timeout,\n llmClientOverride,\n );\n }\n\n async store(context: ActCacheContext, result: ActResult): Promise<void> {\n if (!this.enabled) return;\n\n const entry: CachedActEntry = {\n version: 1,\n instruction: context.instruction,\n url: context.pageUrl,\n variableKeys: context.variableKeys,\n actions: result.actions ?? [],\n actionDescription: result.actionDescription,\n message: result.message,\n };\n\n const { error, path } = await this.storage.writeJson(\n `${context.cacheKey}.json`,\n entry,\n );\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to write act cache entry\",\n level: 1,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache stored\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.pageUrl, type: \"string\" },\n },\n });\n }\n\n private buildActCacheKey(\n instruction: string,\n url: string,\n variableKeys: string[],\n ): string {\n const payload = JSON.stringify({\n instruction,\n url,\n variableKeys,\n });\n return createHash(\"sha256\").update(payload).digest(\"hex\");\n }\n\n private async replayCachedActions(\n context: ActCacheContext,\n entry: CachedActEntry,\n page: Page,\n timeout?: number,\n llmClientOverride?: LLMClient,\n ): Promise<ActResult> {\n const handler = this.getActHandler();\n if (!handler) {\n throw new StagehandNotInitializedError(\"act()\");\n }\n const effectiveClient = llmClientOverride ?? this.getDefaultLlmClient();\n\n const execute = async (): Promise<ActResult> => {\n const actionResults: ActResult[] = [];\n for (const action of entry.actions) {\n await waitForCachedSelector({\n page,\n selector: action.selector,\n timeout: this.domSettleTimeoutMs,\n logger: this.logger,\n context: \"act\",\n });\n const result = await handler.takeDeterministicAction(\n action,\n page,\n this.domSettleTimeoutMs,\n effectiveClient,\n undefined,\n context.variables,\n );\n actionResults.push(result);\n if (!result.success) {\n break;\n }\n }\n\n if (actionResults.length === 0) {\n return {\n success: false,\n message: \"Failed to perform act: cached entry has no actions\",\n actionDescription: entry.actionDescription ?? entry.instruction,\n actions: [],\n };\n }\n\n const success = actionResults.every((r) => r.success);\n const actions = actionResults.flatMap((r) => r.actions ?? []);\n const message =\n actionResults\n .map((r) => r.message)\n .filter((m) => m && m.trim().length > 0)\n .join(\" → \") ||\n entry.message ||\n `Replayed ${entry.actions.length} cached action${\n entry.actions.length === 1 ? \"\" : \"s\"\n }.`;\n const actionDescription =\n entry.actionDescription ||\n actionResults[actionResults.length - 1]?.actionDescription ||\n entry.actions[entry.actions.length - 1]?.description ||\n entry.instruction;\n\n if (\n success &&\n actions.length > 0 &&\n this.haveActionsChanged(entry.actions, actions)\n ) {\n await this.refreshCacheEntry(context, {\n ...entry,\n actions,\n message,\n actionDescription,\n });\n }\n return {\n success,\n message,\n actionDescription,\n actions,\n };\n };\n\n return await withTimeout(execute(), timeout, \"act()\");\n }\n\n private haveActionsChanged(original: Action[], updated: Action[]): boolean {\n if (original.length !== updated.length) {\n return true;\n }\n\n for (let i = 0; i < original.length; i += 1) {\n const orig = original[i];\n const next = updated[i];\n if (!next) {\n return true;\n }\n\n if (orig.selector !== next.selector) {\n return true;\n }\n\n if (orig.description !== next.description) {\n return true;\n }\n\n if ((orig.method ?? \"\") !== (next.method ?? \"\")) {\n return true;\n }\n\n const origArgs = orig.arguments ?? [];\n const nextArgs = next.arguments ?? [];\n if (origArgs.length !== nextArgs.length) {\n return true;\n }\n\n for (let j = 0; j < origArgs.length; j += 1) {\n if (origArgs[j] !== nextArgs[j]) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n private async refreshCacheEntry(\n context: ActCacheContext,\n entry: CachedActEntry,\n ): Promise<void> {\n const { error, path } = await this.storage.writeJson(\n `${context.cacheKey}.json`,\n {\n ...entry,\n variableKeys: context.variableKeys,\n },\n );\n\n if (error && path) {\n this.logger({\n category: \"cache\",\n message: \"failed to update act cache entry after self-heal\",\n level: 0,\n auxiliary: {\n error: { value: String(error), type: \"string\" },\n },\n });\n return;\n }\n\n this.logger({\n category: \"cache\",\n message: \"act cache entry updated after self-heal\",\n level: 2,\n auxiliary: {\n instruction: { value: context.instruction, type: \"string\" },\n url: { value: context.pageUrl, type: \"string\" },\n },\n });\n }\n\n private doVariableKeysMatch(\n entryKeys: string[],\n contextKeys: string[],\n ): boolean {\n if (entryKeys.length !== contextKeys.length) {\n return false;\n }\n\n for (let i = 0; i < entryKeys.length; i += 1) {\n if (entryKeys[i] !== contextKeys[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n private hasAllVariableValues(\n variableKeys: string[],\n variables: Record<string, string>,\n ): boolean {\n for (const key of variableKeys) {\n if (!(key in variables)) {\n return false;\n }\n }\n return true;\n }\n}\n"]}
@@ -25,6 +25,7 @@ export declare class AgentCache {
25
25
  options: SanitizedAgentExecuteOptions;
26
26
  configSignature: string;
27
27
  page: Page;
28
+ variables?: Record<string, string>;
28
29
  }): Promise<AgentCacheContext | null>;
29
30
  tryReplay(context: AgentCacheContext, llmClientOverride?: LLMClient): Promise<AgentResult | null>;
30
31
  /**