@browserbasehq/orca 3.4.0-preview.0 → 3.5.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 (919) hide show
  1. package/dist/cjs/lib/inference.d.ts +2 -1
  2. package/dist/cjs/lib/inference.js +10 -3
  3. package/dist/cjs/lib/inference.js.map +1 -1
  4. package/dist/cjs/lib/prompt.d.ts +2 -2
  5. package/dist/cjs/lib/prompt.js +19 -4
  6. package/dist/cjs/lib/prompt.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  8. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -0
  10. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  11. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
  12. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js +38 -0
  13. package/dist/cjs/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
  14. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  15. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js +54 -0
  16. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  17. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  18. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js +62 -0
  19. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  20. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  21. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js +25 -0
  22. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  23. package/dist/cjs/lib/v3/api.d.ts +7 -1
  24. package/dist/cjs/lib/v3/api.js +100 -29
  25. package/dist/cjs/lib/v3/api.js.map +1 -1
  26. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.d.ts +24 -0
  27. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js +31 -0
  28. package/dist/cjs/lib/v3/dom/build/selectorRuntime.generated.js.map +1 -0
  29. package/dist/cjs/lib/v3/handlers/extractHandler.js +19 -2
  30. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -1
  31. package/dist/cjs/lib/v3/handlers/observeHandler.js +2 -1
  32. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -1
  33. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +1 -0
  34. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +83 -7
  35. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  36. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  37. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +120 -5
  38. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  39. package/dist/cjs/lib/v3/index.d.ts +12 -0
  40. package/dist/cjs/lib/v3/index.js +19 -1
  41. package/dist/cjs/lib/v3/index.js.map +1 -1
  42. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  43. package/dist/cjs/lib/v3/launch/local.js +47 -7
  44. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  45. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +3 -0
  46. package/dist/cjs/lib/v3/llm/LLMProvider.js +28 -8
  47. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  48. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  49. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  50. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -0
  51. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -1
  52. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +2 -0
  53. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -1
  54. package/dist/cjs/lib/v3/types/public/agent.d.ts +7 -1
  55. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  56. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  57. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js +15 -0
  58. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  59. package/dist/cjs/lib/v3/types/public/api.d.ts +584 -65
  60. package/dist/cjs/lib/v3/types/public/api.js +107 -7
  61. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  62. package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
  63. package/dist/cjs/lib/v3/types/public/index.js +1 -0
  64. package/dist/cjs/lib/v3/types/public/index.js.map +1 -1
  65. package/dist/cjs/lib/v3/types/public/methods.d.ts +2 -0
  66. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -1
  67. package/dist/cjs/lib/v3/types/public/model.d.ts +23 -10
  68. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  69. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  70. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  71. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  72. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  73. package/dist/cjs/lib/v3/v3.d.ts +1 -0
  74. package/dist/cjs/lib/v3/v3.js +21 -47
  75. package/dist/cjs/lib/v3/v3.js.map +1 -1
  76. package/dist/cjs/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  77. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js +100 -0
  78. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  79. package/dist/cjs/lib/v3/verifier/index.d.ts +6 -0
  80. package/dist/cjs/lib/v3/verifier/index.js +16 -0
  81. package/dist/cjs/lib/v3/verifier/index.js.map +1 -0
  82. package/dist/cjs/lib/v3/verifier/trajectory.d.ts +50 -0
  83. package/dist/cjs/lib/v3/verifier/trajectory.js +316 -0
  84. package/dist/cjs/lib/v3/verifier/trajectory.js.map +1 -0
  85. package/dist/cjs/lib/v3/verifier/types.d.ts +281 -0
  86. package/dist/cjs/lib/v3/verifier/types.js +10 -0
  87. package/dist/cjs/lib/v3/verifier/types.js.map +1 -0
  88. package/dist/cjs/lib/v3Evaluator.d.ts +29 -16
  89. package/dist/cjs/lib/v3Evaluator.js +184 -194
  90. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  91. package/dist/cjs/lib/v3LegacyEvaluator.d.ts +20 -0
  92. package/dist/cjs/lib/v3LegacyEvaluator.js +219 -0
  93. package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -0
  94. package/dist/cjs/lib/version.d.ts +1 -1
  95. package/dist/cjs/lib/version.js +1 -1
  96. package/dist/cjs/lib/version.js.map +1 -1
  97. package/dist/esm/lib/inference.d.ts +2 -1
  98. package/dist/esm/lib/inference.js +10 -3
  99. package/dist/esm/lib/inference.js.map +1 -1
  100. package/dist/esm/lib/prompt.d.ts +2 -2
  101. package/dist/esm/lib/prompt.js +19 -4
  102. package/dist/esm/lib/prompt.js.map +1 -1
  103. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  104. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  105. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -0
  106. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  107. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
  108. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js +35 -0
  109. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
  110. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  111. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js +50 -0
  112. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  113. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  114. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js +59 -0
  115. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  116. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  117. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js +22 -0
  118. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  119. package/dist/esm/lib/v3/api.d.ts +7 -1
  120. package/dist/esm/lib/v3/api.js +100 -29
  121. package/dist/esm/lib/v3/api.js.map +1 -1
  122. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.d.ts +24 -0
  123. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js +28 -0
  124. package/dist/esm/lib/v3/dom/build/selectorRuntime.generated.js.map +1 -0
  125. package/dist/esm/lib/v3/handlers/extractHandler.js +19 -2
  126. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  127. package/dist/esm/lib/v3/handlers/observeHandler.js +2 -1
  128. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  129. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +1 -0
  130. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +83 -7
  131. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  132. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  133. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +120 -5
  134. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  135. package/dist/esm/lib/v3/index.d.ts +12 -0
  136. package/dist/esm/lib/v3/index.js +10 -0
  137. package/dist/esm/lib/v3/index.js.map +1 -1
  138. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  139. package/dist/esm/lib/v3/launch/local.js +48 -8
  140. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  141. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +3 -0
  142. package/dist/esm/lib/v3/llm/LLMProvider.js +28 -9
  143. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  144. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  145. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  146. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -0
  147. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  148. package/dist/esm/lib/v3/types/private/snapshot.d.ts +2 -0
  149. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -1
  150. package/dist/esm/lib/v3/types/public/agent.d.ts +7 -1
  151. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  152. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  153. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js +14 -0
  154. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  155. package/dist/esm/lib/v3/types/public/api.d.ts +584 -65
  156. package/dist/esm/lib/v3/types/public/api.js +105 -5
  157. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  158. package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
  159. package/dist/esm/lib/v3/types/public/index.js +1 -0
  160. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  161. package/dist/esm/lib/v3/types/public/methods.d.ts +2 -0
  162. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  163. package/dist/esm/lib/v3/types/public/model.d.ts +23 -10
  164. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  165. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  166. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  167. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  168. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  169. package/dist/esm/lib/v3/v3.d.ts +1 -0
  170. package/dist/esm/lib/v3/v3.js +21 -47
  171. package/dist/esm/lib/v3/v3.js.map +1 -1
  172. package/dist/esm/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  173. package/dist/esm/lib/v3/verifier/evidenceNormalization.js +93 -0
  174. package/dist/esm/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  175. package/dist/esm/lib/v3/verifier/index.d.ts +6 -0
  176. package/dist/esm/lib/v3/verifier/index.js +3 -0
  177. package/dist/esm/lib/v3/verifier/index.js.map +1 -0
  178. package/dist/esm/lib/v3/verifier/trajectory.d.ts +50 -0
  179. package/dist/esm/lib/v3/verifier/trajectory.js +273 -0
  180. package/dist/esm/lib/v3/verifier/trajectory.js.map +1 -0
  181. package/dist/esm/lib/v3/verifier/types.d.ts +281 -0
  182. package/dist/esm/lib/v3/verifier/types.js +9 -0
  183. package/dist/esm/lib/v3/verifier/types.js.map +1 -0
  184. package/dist/esm/lib/v3Evaluator.d.ts +29 -16
  185. package/dist/esm/lib/v3Evaluator.js +183 -193
  186. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  187. package/dist/esm/lib/v3LegacyEvaluator.d.ts +20 -0
  188. package/dist/esm/lib/v3LegacyEvaluator.js +215 -0
  189. package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -0
  190. package/dist/esm/lib/version.d.ts +1 -1
  191. package/dist/esm/lib/version.js +1 -1
  192. package/dist/esm/lib/version.js.map +1 -1
  193. package/package.json +33 -21
  194. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  195. package/dist/cjs/tests/cache-variables.test.js +0 -221
  196. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  197. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  198. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  199. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  200. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  201. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  202. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  203. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  204. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  205. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  206. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  207. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  208. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  209. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  210. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  211. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  212. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  213. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  214. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  215. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  216. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  217. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  218. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  219. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  220. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  221. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  222. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  223. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  224. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  225. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  226. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  227. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  228. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  229. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  230. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  231. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  232. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  233. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  234. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  235. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  236. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  237. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  238. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  239. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  240. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  241. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  242. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  243. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  244. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  245. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  246. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  247. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  248. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  249. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  250. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  251. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  252. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  253. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  254. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  255. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  256. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  257. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  258. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  259. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  260. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  261. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  262. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  263. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  264. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  265. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  266. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  267. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  268. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  269. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  270. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  271. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  272. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  273. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  274. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  275. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  276. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  277. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  278. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  279. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  280. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  281. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  282. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  283. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  284. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  285. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  286. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  287. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  288. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  289. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  290. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  291. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  292. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  293. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  294. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  295. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  296. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  297. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  298. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  299. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  300. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  301. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  302. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  303. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  304. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  305. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  306. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  307. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  308. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  309. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  310. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  311. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  312. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  313. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  314. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  315. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  316. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  317. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  318. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  319. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  320. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  321. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  322. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  323. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  324. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  325. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  326. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  327. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  328. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  329. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  330. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  331. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  332. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  333. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  334. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  335. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  336. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  337. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  338. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  339. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  340. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  341. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  342. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  343. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  344. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  345. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  346. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  347. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  348. package/dist/cjs/tests/integration/testUtils.js +0 -188
  349. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  350. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  351. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  352. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  353. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  354. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  355. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  356. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  357. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  358. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  359. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  360. package/dist/cjs/tests/integration/v3.config.js +0 -11
  361. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  362. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  363. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  364. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  365. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  366. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  367. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  368. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  369. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  370. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  371. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  372. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  373. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  374. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  375. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  376. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  377. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  378. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  379. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  380. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  381. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  382. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  383. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  384. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  385. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  386. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  387. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  388. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  389. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  390. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  391. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  392. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  393. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  394. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  395. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  396. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  397. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  398. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  399. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  400. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  401. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  402. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  403. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  404. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  405. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -133
  406. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  407. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  408. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  409. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  410. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  411. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  412. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  413. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  414. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -62
  415. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  416. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  417. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  418. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  419. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  420. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  421. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  422. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  423. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  424. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  425. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  426. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  427. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  428. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  429. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  430. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  431. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  432. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  433. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  434. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  435. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  436. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  437. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  438. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  439. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  440. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  441. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  442. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  443. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  444. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  445. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  446. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  447. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  448. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  449. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  450. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  451. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  452. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  453. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  454. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  455. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  456. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  457. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  458. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  459. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  460. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  461. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  462. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  463. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  464. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  465. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  466. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  467. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  468. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  469. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  470. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  471. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  472. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  473. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  474. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  475. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  476. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  477. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  478. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  479. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  480. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  481. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  482. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  483. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  484. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  485. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  486. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  487. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  488. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  489. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  490. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  491. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  492. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  493. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  494. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  495. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  496. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  497. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  498. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  499. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  500. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  501. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  502. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  503. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  504. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  505. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  506. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  507. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  508. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  509. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  510. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  511. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  512. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  513. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  514. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  515. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  516. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -306
  517. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  518. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  519. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  520. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  521. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  522. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  523. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  524. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  525. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  526. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  527. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  528. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  529. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  530. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  531. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  532. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  533. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  534. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  535. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  536. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  537. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -84
  538. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  539. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  540. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  541. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  542. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  543. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -897
  544. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  545. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  546. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  547. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  548. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  549. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  550. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  551. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  552. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  553. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  554. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  555. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  556. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  557. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  558. package/dist/esm/tests/cache-variables.test.js +0 -219
  559. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  560. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  561. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  562. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  563. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  564. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  565. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  566. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  567. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  568. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  569. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  570. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  571. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  572. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  573. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  574. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  575. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  576. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  577. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  578. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  579. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  580. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  581. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  582. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  583. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  584. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  585. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  586. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  587. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  588. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  589. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  590. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  591. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  592. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  593. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  594. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  595. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  596. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  597. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  598. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  599. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  600. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  601. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  602. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  603. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  604. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  605. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  606. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  607. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  608. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  609. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  610. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  611. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  612. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  613. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  614. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  615. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  616. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  617. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  618. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  619. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  620. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  621. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  622. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  623. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  624. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  625. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  626. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  627. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  628. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  629. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  630. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  631. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  632. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  633. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  634. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  635. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  636. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  637. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  638. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  639. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  640. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  641. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  642. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  643. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  644. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  645. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  646. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  647. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  648. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  649. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  650. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  651. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  652. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  653. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  654. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  655. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  656. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  657. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  658. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  659. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  660. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  661. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  662. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  663. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  664. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  665. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  666. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  667. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  668. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  669. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  670. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  671. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  672. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  673. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  674. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  675. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  676. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  677. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  678. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  679. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  680. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  681. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  682. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  683. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  684. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  685. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  686. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  687. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  688. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  689. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  690. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  691. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  692. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  693. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  694. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  695. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  696. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  697. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  698. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  699. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  700. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  701. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  702. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  703. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  704. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  705. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  706. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  707. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  708. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  709. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  710. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  711. package/dist/esm/tests/integration/testUtils.js +0 -178
  712. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  713. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  714. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  715. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  716. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  717. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  718. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  719. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  720. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  721. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  722. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  723. package/dist/esm/tests/integration/v3.config.js +0 -7
  724. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  725. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  726. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  727. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  728. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  729. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  730. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  731. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  732. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  733. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  734. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  735. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  736. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  737. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  738. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  739. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  740. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  741. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  742. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  743. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  744. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  745. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  746. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  747. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  748. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  749. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  750. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  751. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  752. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  753. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  754. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  755. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  756. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  757. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  758. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  759. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  760. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  761. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  762. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  763. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  764. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  765. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  766. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  767. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  768. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -131
  769. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  770. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  771. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  772. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  773. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  774. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  775. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  776. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  777. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -60
  778. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  779. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  780. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  781. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  782. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  783. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  784. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  785. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  786. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  787. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  788. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  789. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  790. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  791. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  792. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  793. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  794. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  795. package/dist/esm/tests/unit/cookies.test.js +0 -909
  796. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  797. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  798. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  799. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  800. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  801. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  802. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  803. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  804. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  805. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  806. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  807. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  808. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  809. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  810. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  811. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  812. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  813. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  814. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  815. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  816. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  817. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  818. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  819. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  820. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  821. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  822. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  823. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  824. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  825. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  826. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  827. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  828. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  829. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  830. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  831. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  832. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  833. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  834. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  835. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  836. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  837. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  838. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  839. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  840. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  841. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  842. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  843. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  844. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  845. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  846. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  847. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  848. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  849. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  850. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  851. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  852. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  853. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  854. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  855. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  856. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  857. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  858. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  859. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  860. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  861. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  862. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  863. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  864. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  865. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  866. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  867. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  868. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  869. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  870. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  871. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  872. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  873. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  874. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  875. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  876. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  877. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  878. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  879. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -304
  880. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  881. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  882. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  883. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  884. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  885. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  886. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  887. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  888. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  889. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  890. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  891. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  892. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  893. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  894. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  895. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  896. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  897. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  898. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  899. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  900. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -82
  901. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  902. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  903. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  904. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  905. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  906. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -862
  907. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  908. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  909. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  910. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  911. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  912. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  913. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  914. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  915. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  916. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  917. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  918. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  919. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectorRuntime.generated.js","sourceRoot":"","sources":["../../../../../../lib/v3/dom/build/selectorRuntime.generated.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,0oRAA0oR,CAAC;AACnrR,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,mBAAmB,EAAE,+EAA+E;IACpG,oBAAoB,EAAE,+EAA+E;IACrG,kBAAkB,EAAE,wOAAwO;IAC5P,qBAAqB,EAAE,+EAA+E;IACtG,oBAAoB,EAAE,6LAA6L;IACnN,mBAAmB,EAAE,iTAAiT;IACtU,oBAAoB,EAAE,8xBAA8xB;IACpzB,kBAAkB,EAAE,+SAA+S;IACnU,qBAAqB,EAAE,mVAAmV;CAClW,CAAC;AACX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,mBAAmB,EAAE,yDAAyD;IAC9E,oBAAoB,EAAE,0DAA0D;IAChF,kBAAkB,EAAE,wDAAwD;IAC5E,qBAAqB,EAAE,2DAA2D;IAClF,oBAAoB,EAAE,0DAA0D;IAChF,mBAAmB,EAAE,yDAAyD;IAC9E,oBAAoB,EAAE,0DAA0D;IAChF,kBAAkB,EAAE,wDAAwD;IAC5E,qBAAqB,EAAE,2DAA2D;CAC1E,CAAC","sourcesContent":["/*\n * AUTO-GENERATED FILE. DO NOT EDIT.\n * Run `pnpm run build-dom-scripts` to regenerate.\n */\nexport const selectorRuntimeBootstrap = \"if (!globalThis.__stagehandSelectorRuntime) { var __stagehandSelectorRuntimeFactory=(()=>{var P=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var $=(t,e)=>{for(var n in e)P(t,n,{get:e[n],enumerable:!0})},C=(t,e,n,r)=>{if(e&&typeof e==\\\"object\\\"||typeof e==\\\"function\\\")for(let s of N(e))!D.call(t,s)&&s!==n&&P(t,s,{get:()=>e[s],enumerable:!(r=A(e,s))||r.enumerable});return t};var k=t=>C(P({},\\\"__esModule\\\",{value:!0}),t);var j={};$(j,{countCssWithRoots:()=>B,countTextWithRoots:()=>Y,countXPathNative:()=>U,countXPathWithRoots:()=>K,hasOpenShadowRoots:()=>V,queryCssWithRoots:()=>X,queryTextWithRoots:()=>M,queryXPathNative:()=>Z,queryXPathWithRoots:()=>z});function R(t){let e=String(t||\\\"\\\").trim().replace(/^xpath=/i,\\\"\\\");if(!e)return[];let n=[],r=0;for(;r<e.length;){let s=\\\"child\\\";e.startsWith(\\\"//\\\",r)?(s=\\\"desc\\\",r+=2):e[r]===\\\"/\\\"&&(s=\\\"child\\\",r+=1);let o=r,a=0,i=null;for(;r<e.length;){let l=e[r];if(i)l===i&&(i=null);else if(l===\\\"'\\\"||l==='\\\"')i=l;else if(l===\\\"[\\\")a++;else if(l===\\\"]\\\")a--;else if(l===\\\"/\\\"&&a===0)break;r+=1}let u=e.slice(o,r).trim();if(!u)continue;let{tag:c,predicates:f}=W(u);n.push({axis:s,tag:c,predicates:f})}return n}function q(t){let e=[],n=0;for(;n<t.length;){if(t[n]!==\\\"[\\\"){n++;continue}n++;let r=n,s=null;for(;n<t.length;){let o=t[n];if(s)o===s&&(s=null);else if(o===\\\"'\\\"||o==='\\\"')s=o;else if(o===\\\"]\\\")break;n++}e.push(t.slice(r,n).trim()),n++}return e}function W(t){let e=t.indexOf(\\\"[\\\");if(e===-1)return{tag:t===\\\"\\\"?\\\"*\\\":t.toLowerCase(),predicates:[]};let n=t.slice(0,e).trim(),r=n===\\\"\\\"?\\\"*\\\":n.toLowerCase(),s=t.slice(e),o=[];for(let a of q(s)){let i=d(a);i&&o.push(i)}return{tag:r,predicates:o}}function d(t){let e=t.trim();if(!e)return null;let n=y(e,\\\"or\\\");if(n.length>1){let o=n.map(a=>d(a)).filter(Boolean);return o.length!==n.length?null:{type:\\\"or\\\",predicates:o}}let r=y(e,\\\"and\\\");if(r.length>1){let o=r.map(a=>d(a)).filter(Boolean);return o.length!==r.length?null:{type:\\\"and\\\",predicates:o}}let s=O(e,\\\"not\\\");if(s!=null){let o=d(s);return o?{type:\\\"not\\\",predicate:o}:null}return _(e)}function _(t){let e=/^(?:'([^']*)'|\\\"([^\\\"]*)\\\")$/,n=\\\"[a-zA-Z_][\\\\\\\\w.-]*\\\",r=`(?:'([^']*)'|\\\"([^\\\"]*)\\\")`;if(/^\\\\d+$/.test(t))return{type:\\\"index\\\",index:Math.max(1,Number(t))};let s=t.match(new RegExp(`^normalize-space\\\\\\\\(\\\\\\\\s*@(${n})\\\\\\\\s*\\\\\\\\)\\\\\\\\s*=\\\\\\\\s*${r}$`));if(s)return{type:\\\"attrEquals\\\",name:s[1],value:s[2]??s[3]??\\\"\\\",normalize:!0};let o=t.match(new RegExp(`^normalize-space\\\\\\\\(\\\\\\\\s*(?:text\\\\\\\\(\\\\\\\\)|\\\\\\\\.)\\\\\\\\s*\\\\\\\\)\\\\\\\\s*=\\\\\\\\s*${r}$`));if(o)return{type:\\\"textEquals\\\",value:o[1]??o[2]??\\\"\\\",normalize:!0};let a=t.match(new RegExp(`^@(${n})\\\\\\\\s*=\\\\\\\\s*${r}$`));if(a)return{type:\\\"attrEquals\\\",name:a[1],value:a[2]??a[3]??\\\"\\\"};let i=t.match(new RegExp(`^@(${n})$`));if(i)return{type:\\\"attrExists\\\",name:i[1]};let u=t.match(new RegExp(`^contains\\\\\\\\(\\\\\\\\s*@(${n})\\\\\\\\s*,\\\\\\\\s*${r}\\\\\\\\s*\\\\\\\\)$`));if(u)return{type:\\\"attrContains\\\",name:u[1],value:u[2]??u[3]??\\\"\\\"};let c=t.match(new RegExp(`^starts-with\\\\\\\\(\\\\\\\\s*@(${n})\\\\\\\\s*,\\\\\\\\s*${r}\\\\\\\\s*\\\\\\\\)$`));if(c)return{type:\\\"attrStartsWith\\\",name:c[1],value:c[2]??c[3]??\\\"\\\"};let f=t.match(new RegExp(`^(?:text\\\\\\\\(\\\\\\\\)|\\\\\\\\.)\\\\\\\\s*=\\\\\\\\s*${r}$`));if(f)return{type:\\\"textEquals\\\",value:f[1]??f[2]??\\\"\\\"};let l=t.match(new RegExp(`^contains\\\\\\\\(\\\\\\\\s*(?:text\\\\\\\\(\\\\\\\\)|\\\\\\\\.)\\\\\\\\s*,\\\\\\\\s*${r}\\\\\\\\s*\\\\\\\\)$`));return l?{type:\\\"textContains\\\",value:l[1]??l[2]??\\\"\\\"}:(e.test(t),null)}function y(t,e){let n=[],r=0,s=0,o=null,a=0;for(;a<t.length;){let i=t[a];if(o){i===o&&(o=null),a+=1;continue}if(i===\\\"'\\\"||i==='\\\"'){o=i,a+=1;continue}if(i===\\\"(\\\"){s+=1,a+=1;continue}if(i===\\\")\\\"){s=Math.max(0,s-1),a+=1;continue}if(s===0&&L(t,a,e)){n.push(t.slice(r,a).trim()),a+=e.length,r=a;continue}a+=1}return n.push(t.slice(r).trim()),n.filter(i=>i.length>0)}function L(t,e,n){if(!t.startsWith(n,e))return!1;let r=e>0?t[e-1]:\\\" \\\";if(r===\\\"@\\\")return!1;let s=e+n.length<t.length?t[e+n.length]:\\\" \\\";return S(r)&&S(s)}function S(t){return!/[a-zA-Z0-9_.-]/.test(t)}function O(t,e){let n=`${e}(`;if(!t.startsWith(n)||!t.endsWith(\\\")\\\"))return null;let r=t.slice(n.length,-1);return I(r)?r:null}function I(t){let e=0,n=null;for(let r=0;r<t.length;r+=1){let s=t[r];if(n){s===n&&(n=null);continue}if(s===\\\"'\\\"||s==='\\\"'){n=s;continue}if(s===\\\"(\\\"?e+=1:s===\\\")\\\"&&(e-=1),e<0)return!1}return e===0}var F=t=>t.replace(/\\\\s+/g,\\\" \\\").trim();function b(t){return String(t.textContent??\\\"\\\")}function m(t,e){return e?F(t):t}function x(t,e){switch(e.type){case\\\"and\\\":return e.predicates.every(n=>x(t,n));case\\\"or\\\":return e.predicates.some(n=>x(t,n));case\\\"not\\\":return!x(t,e.predicate);case\\\"attrExists\\\":return t.getAttribute(e.name)!==null;case\\\"attrEquals\\\":{let n=t.getAttribute(e.name);return n===null?!1:m(n,e.normalize)===m(e.value,e.normalize)}case\\\"attrContains\\\":{let n=t.getAttribute(e.name);return n===null?!1:m(n,e.normalize).includes(m(e.value,e.normalize))}case\\\"attrStartsWith\\\":{let n=t.getAttribute(e.name);return n===null?!1:m(n,e.normalize).startsWith(m(e.value,e.normalize))}case\\\"textEquals\\\":return m(b(t),e.normalize)===m(e.value,e.normalize);case\\\"textContains\\\":return m(b(t),e.normalize).includes(m(e.value,e.normalize));case\\\"index\\\":return!0;default:return!0}}function v(t,e){let n=t;for(let r of e){if(!n.length)return[];if(r.type===\\\"index\\\"){let s=r.index-1;n=s>=0&&s<n.length?[n[s]]:[];continue}n=n.filter(s=>x(s,r))}return n}function w(t){let e=new Map;for(let n=0;n<t.length;n+=2){let r=t[n],s=t[n+1];r instanceof Element&&s instanceof ShadowRoot&&e.set(r,s)}return e}function E(t,e){if(!t)return[];if(t instanceof Document)return t.documentElement?[t.documentElement]:[];if(t instanceof ShadowRoot||t instanceof DocumentFragment)return Array.from(t.children||[]);if(!(t instanceof Element))return[];let n=Array.from(t.children||[]);t.shadowRoot&&n.push(...Array.from(t.shadowRoot.children||[]));let r=e.get(t);return r&&n.push(...Array.from(r.children||[])),n}function H(t,e){let n=[],r=new Set,s=[...E(t,e)].reverse();for(;s.length;){let o=s.pop();if(!(o instanceof Element)||r.has(o))continue;r.add(o),n.push(o);let a=E(o,e);for(let i=a.length-1;i>=0;i-=1)s.push(a[i])}return n}function X(t,e,...n){let r=w(n),s=[],o=new Set,a=[...E(this,r)].reverse();for(;a.length&&s.length<e;){let i=a.pop();if(!(i instanceof Element)||o.has(i))continue;o.add(i);try{if(i.matches(t)&&(s.push(i),s.length>=e))break}catch{return[]}let u=E(i,r);for(let c=u.length-1;c>=0;c-=1)a.push(u[c])}return s}function B(t,...e){return X.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}function M(t,e,...n){let r=w(n),s=new Set([\\\"SCRIPT\\\",\\\"STYLE\\\",\\\"TEMPLATE\\\",\\\"NOSCRIPT\\\",\\\"HEAD\\\",\\\"TITLE\\\",\\\"LINK\\\",\\\"META\\\",\\\"HTML\\\",\\\"BODY\\\"]),o=String(t||\\\"\\\").toLowerCase();if(!o)return[];let a=l=>{let g=l.tagName?l.tagName.toUpperCase():\\\"\\\";if(s.has(g))return\\\"\\\";try{let p=l.innerText;if(typeof p==\\\"string\\\"&&p.trim())return p.trim()}catch{}let h=l.textContent;return typeof h==\\\"string\\\"?h.trim():\\\"\\\"},i=[],u=new Set,c=[...E(this,r)].reverse();for(;c.length;){let l=c.pop();if(!(l instanceof Element)||u.has(l))continue;u.add(l);let g=a(l);g&&g.toLowerCase().includes(o)&&i.push(l);let h=E(l,r);for(let p=h.length-1;p>=0;p-=1)c.push(h[p])}let f=[];for(let l of i){let g=!1;for(let h of i)if(l!==h)try{if(l.contains(h)){g=!0;break}}catch{}if(!g&&(f.push(l),f.length>=e))break}return f}function Y(t,...e){return M.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}function T(t){let e=String(t||\\\"\\\").trim();return e?e.replace(/^xpath=/i,\\\"\\\").trim():\\\"\\\"}function G(t,e){return e.tag===\\\"*\\\"?!0:t.localName===e.tag}function z(t,e,...n){let r=w(n),s=R(t);if(!s.length)return[];let o=[this];for(let a of s){let i=[],u=new Set;for(let c of o){let l=(a.axis===\\\"child\\\"?E(c,r):H(c,r)).filter(h=>G(h,a)),g=v(l,a.predicates);for(let h of g)if(!u.has(h)&&(u.add(h),i.push(h),i.length>=e&&a===s[s.length-1]))break}if(!i.length)return[];o=i}return o.slice(0,e)}function K(t,...e){return z.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}function Z(t,e){let n=T(t);if(!n||!Number.isFinite(e)||e<=0)return[];try{let r=this.evaluate(n,this,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),s=[],o=Math.min(r.snapshotLength,Math.floor(e));for(let a=0;a<o;a+=1){let i=r.snapshotItem(a);i instanceof Element&&s.push(i)}return s}catch{return[]}}function U(t){let e=T(t);if(!e)return 0;try{let n=this.evaluate(e,this,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),r=0;for(let s=0;s<n.snapshotLength;s+=1)n.snapshotItem(s)instanceof Element&&(r+=1);return r}catch{return 0}}function V(){try{let t=this.createTreeWalker(this,NodeFilter.SHOW_ELEMENT);for(;t.nextNode();){let e=t.currentNode;if(e instanceof Element&&e.shadowRoot)return!0}}catch{return!1}return!1}return k(j);})();\\n globalThis.__stagehandSelectorRuntime = __stagehandSelectorRuntimeFactory;\\n}\";\nexport const selectorRuntimeSources = {\n \"countCssWithRoots\": \"function O(t,...e){return C.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}\",\n \"countTextWithRoots\": \"function I(t,...e){return k.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}\",\n \"countXPathNative\": \"function B(t){let e=v(t);if(!e)return 0;try{let n=this.evaluate(e,this,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),r=0;for(let s=0;s<n.snapshotLength;s+=1)n.snapshotItem(s)instanceof Element&&(r+=1);return r}catch{return 0}}\",\n \"countXPathWithRoots\": \"function F(t,...e){return W.call(this,t,Number.MAX_SAFE_INTEGER,...e).length}\",\n \"hasOpenShadowRoots\": \"function Y(){try{let t=this.createTreeWalker(this,NodeFilter.SHOW_ELEMENT);for(;t.nextNode();){let e=t.currentNode;if(e instanceof Element&&e.shadowRoot)return!0}}catch{return!1}return!1}\",\n \"queryCssWithRoots\": \"function C(t,e,...n){let r=P(n),s=[],o=new Set,a=[...E(this,r)].reverse();for(;a.length&&s.length<e;){let i=a.pop();if(!(i instanceof Element)||o.has(i))continue;o.add(i);try{if(i.matches(t)&&(s.push(i),s.length>=e))break}catch{return[]}let u=E(i,r);for(let c=u.length-1;c>=0;c-=1)a.push(u[c])}return s}\",\n \"queryTextWithRoots\": \"function k(t,e,...n){let r=P(n),s=new Set([\\\"SCRIPT\\\",\\\"STYLE\\\",\\\"TEMPLATE\\\",\\\"NOSCRIPT\\\",\\\"HEAD\\\",\\\"TITLE\\\",\\\"LINK\\\",\\\"META\\\",\\\"HTML\\\",\\\"BODY\\\"]),o=String(t||\\\"\\\").toLowerCase();if(!o)return[];let a=l=>{let g=l.tagName?l.tagName.toUpperCase():\\\"\\\";if(s.has(g))return\\\"\\\";try{let p=l.innerText;if(typeof p==\\\"string\\\"&&p.trim())return p.trim()}catch{}let h=l.textContent;return typeof h==\\\"string\\\"?h.trim():\\\"\\\"},i=[],u=new Set,c=[...E(this,r)].reverse();for(;c.length;){let l=c.pop();if(!(l instanceof Element)||u.has(l))continue;u.add(l);let g=a(l);g&&g.toLowerCase().includes(o)&&i.push(l);let h=E(l,r);for(let p=h.length-1;p>=0;p-=1)c.push(h[p])}let f=[];for(let l of i){let g=!1;for(let h of i)if(l!==h)try{if(l.contains(h)){g=!0;break}}catch{}if(!g&&(f.push(l),f.length>=e))break}return f}\",\n \"queryXPathNative\": \"function H(t,e){let n=v(t);if(!n||!Number.isFinite(e)||e<=0)return[];try{let r=this.evaluate(n,this,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null),s=[],o=Math.min(r.snapshotLength,Math.floor(e));for(let a=0;a<o;a+=1){let i=r.snapshotItem(a);i instanceof Element&&s.push(i)}return s}catch{return[]}}\",\n \"queryXPathWithRoots\": \"function W(t,e,...n){let r=P(n),s=b(t);if(!s.length)return[];let o=[this];for(let a of s){let i=[],u=new Set;for(let c of o){let l=(a.axis===\\\"child\\\"?E(c,r):$(c,r)).filter(h=>q(h,a)),g=R(l,a.predicates);for(let h of g)if(!u.has(h)&&(u.add(h),i.push(h),i.length>=e&&a===s[s.length-1]))break}if(!i.length)return[];o=i}return o.slice(0,e)}\"\n} as const;\nexport const selectorRuntimeGlobalRefs = {\n \"countCssWithRoots\": \"globalThis.__stagehandSelectorRuntime.countCssWithRoots\",\n \"countTextWithRoots\": \"globalThis.__stagehandSelectorRuntime.countTextWithRoots\",\n \"countXPathNative\": \"globalThis.__stagehandSelectorRuntime.countXPathNative\",\n \"countXPathWithRoots\": \"globalThis.__stagehandSelectorRuntime.countXPathWithRoots\",\n \"hasOpenShadowRoots\": \"globalThis.__stagehandSelectorRuntime.hasOpenShadowRoots\",\n \"queryCssWithRoots\": \"globalThis.__stagehandSelectorRuntime.queryCssWithRoots\",\n \"queryTextWithRoots\": \"globalThis.__stagehandSelectorRuntime.queryTextWithRoots\",\n \"queryXPathNative\": \"globalThis.__stagehandSelectorRuntime.queryXPathNative\",\n \"queryXPathWithRoots\": \"globalThis.__stagehandSelectorRuntime.queryXPathWithRoots\"\n} as const;\nexport type SelectorRuntimeName = keyof typeof selectorRuntimeSources;\n"]}
@@ -41,7 +41,7 @@ export class ExtractHandler {
41
41
  this.onMetrics = onMetrics;
42
42
  }
43
43
  async extract(params) {
44
- const { instruction, schema, page, selector, ignoreSelectors, timeout, model, } = params;
44
+ const { instruction, schema, page, selector, ignoreSelectors, timeout, model, screenshot, } = params;
45
45
  const llmClient = this.resolveLlmClient(model);
46
46
  const ensureTimeRemaining = createTimeoutGuard(timeout, (ms) => new ExtractTimeoutError(ms));
47
47
  // No-args → page text (parity with v2)
@@ -62,6 +62,9 @@ export class ExtractHandler {
62
62
  if (!instruction && schema) {
63
63
  throw new StagehandInvalidArgumentError("extract() requires an instruction when a schema is provided.");
64
64
  }
65
+ if (screenshot && llmClient.type !== "aisdk") {
66
+ throw new StagehandInvalidArgumentError("extract({ screenshot: true }) is only supported with AI SDK clients.");
67
+ }
65
68
  const focusSelector = selector?.replace(/^xpath=/, "") ?? "";
66
69
  // Build the hybrid snapshot (includes combinedTree; combinedUrlMap optional)
67
70
  ensureTimeRemaining();
@@ -70,9 +73,22 @@ export class ExtractHandler {
70
73
  focusSelector: focusSelector,
71
74
  ignoreSelectors,
72
75
  });
76
+ const screenshotBuffer = screenshot
77
+ ? await (async () => {
78
+ ensureTimeRemaining();
79
+ const buffer = await page.screenshot({
80
+ fullPage: false,
81
+ type: "png",
82
+ });
83
+ ensureTimeRemaining();
84
+ return buffer;
85
+ })()
86
+ : undefined;
73
87
  v3Logger({
74
88
  category: "extraction",
75
- message: "Starting extraction using a11y snapshot",
89
+ message: screenshot
90
+ ? "Starting extraction using a11y snapshot and viewport screenshot"
91
+ : "Starting extraction using a11y snapshot",
76
92
  level: 1,
77
93
  auxiliary: instruction
78
94
  ? { instruction: { value: instruction, type: "string" } }
@@ -100,6 +116,7 @@ export class ExtractHandler {
100
116
  userProvidedInstructions: this.systemPrompt,
101
117
  logger: v3Logger,
102
118
  logInferenceToFile: this.logInferenceToFile,
119
+ screenshot: screenshotBuffer,
103
120
  });
104
121
  const { metadata: { completed }, prompt_tokens, completion_tokens, reasoning_tokens = 0, cached_input_tokens = 0, inference_time_ms, ...rest } = extractionResponse;
105
122
  let output = rest;
@@ -1 +1 @@
1
- {"version":3,"file":"extractHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/extractHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/extractHandler.ts\nimport { extract as runExtract } from \"../../inference.js\";\nimport {\n getZFactory,\n getZodType,\n injectUrls,\n transformSchema,\n} from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport type { ZodTypeAny } from \"zod\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { ExtractHandlerParams } from \"../types/private/handlers.js\";\nimport { EncodedId, ZodPathSegments } from \"../types/private/internal.js\";\nimport {\n defaultExtractSchema,\n pageTextSchema,\n} from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport {\n StagehandInvalidArgumentError,\n ExtractTimeoutError,\n} from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\nimport type {\n InferStagehandSchema,\n StagehandZodObject,\n StagehandZodSchema,\n} from \"../zodCompat.js\";\n\n/**\n * Scans the provided Zod schema for any `z.string().url()` fields and\n * replaces them with `z.number()`.\n *\n * @param schema - The Zod object schema to transform.\n * @returns A tuple containing:\n * 1. The transformed schema (or the original schema if no changes were needed).\n * 2. An array of {@link ZodPathSegments} objects representing all the replaced URL fields,\n * with each path segment showing where in the schema the replacement occurred.\n */\nexport function transformUrlStringsToNumericIds<T extends StagehandZodSchema>(\n schema: T,\n): [StagehandZodSchema, ZodPathSegments[]] {\n const [finalSchema, urlPaths] = transformSchema(schema, []);\n return [finalSchema, urlPaths];\n}\n\ninterface ExtractionResponseBase {\n metadata: { completed: boolean };\n prompt_tokens: number;\n completion_tokens: number;\n reasoning_tokens: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n}\n\ntype ExtractionResponse<T extends StagehandZodObject> = ExtractionResponseBase &\n InferStagehandSchema<T>;\n\nexport class ExtractHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async extract<T extends StagehandZodSchema>(\n params: ExtractHandlerParams<T>,\n ): Promise<InferStagehandSchema<T> | { pageText: string }> {\n const {\n instruction,\n schema,\n page,\n selector,\n ignoreSelectors,\n timeout,\n model,\n } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const ensureTimeRemaining = createTimeoutGuard(\n timeout,\n (ms) => new ExtractTimeoutError(ms),\n );\n\n // No-args → page text (parity with v2)\n const noArgs = !instruction && !schema;\n if (noArgs) {\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snap = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n ignoreSelectors,\n });\n ensureTimeRemaining();\n\n const result = { pageText: snap.combinedTree };\n // Validate via the same schema used in v2\n return pageTextSchema.parse(result);\n }\n\n if (!instruction && schema) {\n throw new StagehandInvalidArgumentError(\n \"extract() requires an instruction when a schema is provided.\",\n );\n }\n\n const focusSelector = selector?.replace(/^xpath=/, \"\") ?? \"\";\n\n // Build the hybrid snapshot (includes combinedTree; combinedUrlMap optional)\n ensureTimeRemaining();\n const { combinedTree, combinedUrlMap } = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector,\n ignoreSelectors,\n });\n\n v3Logger({\n category: \"extraction\",\n message: \"Starting extraction using a11y snapshot\",\n level: 1,\n auxiliary: instruction\n ? { instruction: { value: instruction, type: \"string\" } }\n : undefined,\n });\n\n // Normalize schema: if instruction provided without schema, use defaultExtractSchema\n const baseSchema: StagehandZodSchema = (schema ??\n defaultExtractSchema) as StagehandZodSchema;\n // Ensure we pass an object schema into inference; wrap non-object schemas\n const isObjectSchema = getZodType(baseSchema) === \"object\";\n const WRAP_KEY = \"value\" as const;\n const factory = getZFactory(baseSchema);\n const objectSchema: StagehandZodObject = isObjectSchema\n ? (baseSchema as StagehandZodObject)\n : (factory.object({\n [WRAP_KEY]: baseSchema as ZodTypeAny,\n }) as StagehandZodObject);\n\n const [transformedSchema, urlFieldPaths] =\n transformUrlStringsToNumericIds(objectSchema);\n\n ensureTimeRemaining();\n const extractionResponse: ExtractionResponse<StagehandZodObject> =\n await runExtract<StagehandZodObject>({\n instruction,\n domElements: combinedTree,\n schema: transformedSchema as StagehandZodObject,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n });\n\n const {\n metadata: { completed },\n prompt_tokens,\n completion_tokens,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms,\n ...rest\n } = extractionResponse;\n let output = rest as InferStagehandSchema<StagehandZodObject>;\n\n // Update EXTRACT metrics from the LLM calls\n this.onMetrics?.(\n V3FunctionName.EXTRACT,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Re-inject URLs for any url() fields we temporarily converted to number()\n const idToUrl: Record<EncodedId, string> = (combinedUrlMap ?? {}) as Record<\n EncodedId,\n string\n >;\n for (const { segments } of urlFieldPaths) {\n injectUrls(\n output as Record<string, unknown>,\n segments,\n idToUrl as unknown as Record<string, string>,\n );\n }\n // If we wrapped a non-object schema, unwrap the value\n if (!isObjectSchema && output && typeof output === \"object\") {\n output = (output as Record<string, unknown>)[WRAP_KEY];\n }\n\n const resultPreviewLength = 200;\n const resultString = JSON.stringify(output) ?? \"undefined\";\n const resultPreview =\n resultString.length > resultPreviewLength\n ? resultString.slice(0, resultPreviewLength) + \"...\"\n : resultString;\n\n v3Logger({\n category: \"extraction\",\n message: completed\n ? \"Extraction completed successfully\"\n : \"Extraction incomplete after processing all data\",\n level: 1,\n auxiliary: {\n prompt_tokens: { value: String(prompt_tokens), type: \"string\" },\n completion_tokens: { value: String(completion_tokens), type: \"string\" },\n inference_time_ms: {\n value: String(inference_time_ms),\n type: \"string\",\n },\n result: { value: resultPreview, type: \"string\" },\n },\n });\n\n return output as InferStagehandSchema<T>;\n }\n}\n"]}
1
+ {"version":3,"file":"extractHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/extractHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/extractHandler.ts\nimport { extract as runExtract } from \"../../inference.js\";\nimport {\n getZFactory,\n getZodType,\n injectUrls,\n transformSchema,\n} from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport type { ZodTypeAny } from \"zod\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { ExtractHandlerParams } from \"../types/private/handlers.js\";\nimport { EncodedId, ZodPathSegments } from \"../types/private/internal.js\";\nimport {\n defaultExtractSchema,\n pageTextSchema,\n} from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport {\n StagehandInvalidArgumentError,\n ExtractTimeoutError,\n} from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\nimport type {\n InferStagehandSchema,\n StagehandZodObject,\n StagehandZodSchema,\n} from \"../zodCompat.js\";\n\n/**\n * Scans the provided Zod schema for any `z.string().url()` fields and\n * replaces them with `z.number()`.\n *\n * @param schema - The Zod object schema to transform.\n * @returns A tuple containing:\n * 1. The transformed schema (or the original schema if no changes were needed).\n * 2. An array of {@link ZodPathSegments} objects representing all the replaced URL fields,\n * with each path segment showing where in the schema the replacement occurred.\n */\nexport function transformUrlStringsToNumericIds<T extends StagehandZodSchema>(\n schema: T,\n): [StagehandZodSchema, ZodPathSegments[]] {\n const [finalSchema, urlPaths] = transformSchema(schema, []);\n return [finalSchema, urlPaths];\n}\n\ninterface ExtractionResponseBase {\n metadata: { completed: boolean };\n prompt_tokens: number;\n completion_tokens: number;\n reasoning_tokens: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n}\n\ntype ExtractionResponse<T extends StagehandZodObject> = ExtractionResponseBase &\n InferStagehandSchema<T>;\n\nexport class ExtractHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async extract<T extends StagehandZodSchema>(\n params: ExtractHandlerParams<T>,\n ): Promise<InferStagehandSchema<T> | { pageText: string }> {\n const {\n instruction,\n schema,\n page,\n selector,\n ignoreSelectors,\n timeout,\n model,\n screenshot,\n } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const ensureTimeRemaining = createTimeoutGuard(\n timeout,\n (ms) => new ExtractTimeoutError(ms),\n );\n\n // No-args → page text (parity with v2)\n const noArgs = !instruction && !schema;\n if (noArgs) {\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snap = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n ignoreSelectors,\n });\n ensureTimeRemaining();\n\n const result = { pageText: snap.combinedTree };\n // Validate via the same schema used in v2\n return pageTextSchema.parse(result);\n }\n\n if (!instruction && schema) {\n throw new StagehandInvalidArgumentError(\n \"extract() requires an instruction when a schema is provided.\",\n );\n }\n\n if (screenshot && llmClient.type !== \"aisdk\") {\n throw new StagehandInvalidArgumentError(\n \"extract({ screenshot: true }) is only supported with AI SDK clients.\",\n );\n }\n\n const focusSelector = selector?.replace(/^xpath=/, \"\") ?? \"\";\n\n // Build the hybrid snapshot (includes combinedTree; combinedUrlMap optional)\n ensureTimeRemaining();\n const { combinedTree, combinedUrlMap } = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector,\n ignoreSelectors,\n });\n\n const screenshotBuffer = screenshot\n ? await (async () => {\n ensureTimeRemaining();\n const buffer = await page.screenshot({\n fullPage: false,\n type: \"png\",\n });\n ensureTimeRemaining();\n return buffer;\n })()\n : undefined;\n\n v3Logger({\n category: \"extraction\",\n message: screenshot\n ? \"Starting extraction using a11y snapshot and viewport screenshot\"\n : \"Starting extraction using a11y snapshot\",\n level: 1,\n auxiliary: instruction\n ? { instruction: { value: instruction, type: \"string\" } }\n : undefined,\n });\n\n // Normalize schema: if instruction provided without schema, use defaultExtractSchema\n const baseSchema: StagehandZodSchema = (schema ??\n defaultExtractSchema) as StagehandZodSchema;\n // Ensure we pass an object schema into inference; wrap non-object schemas\n const isObjectSchema = getZodType(baseSchema) === \"object\";\n const WRAP_KEY = \"value\" as const;\n const factory = getZFactory(baseSchema);\n const objectSchema: StagehandZodObject = isObjectSchema\n ? (baseSchema as StagehandZodObject)\n : (factory.object({\n [WRAP_KEY]: baseSchema as ZodTypeAny,\n }) as StagehandZodObject);\n\n const [transformedSchema, urlFieldPaths] =\n transformUrlStringsToNumericIds(objectSchema);\n\n ensureTimeRemaining();\n const extractionResponse: ExtractionResponse<StagehandZodObject> =\n await runExtract<StagehandZodObject>({\n instruction,\n domElements: combinedTree,\n schema: transformedSchema as StagehandZodObject,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n screenshot: screenshotBuffer,\n });\n\n const {\n metadata: { completed },\n prompt_tokens,\n completion_tokens,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms,\n ...rest\n } = extractionResponse;\n let output = rest as InferStagehandSchema<StagehandZodObject>;\n\n // Update EXTRACT metrics from the LLM calls\n this.onMetrics?.(\n V3FunctionName.EXTRACT,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Re-inject URLs for any url() fields we temporarily converted to number()\n const idToUrl: Record<EncodedId, string> = (combinedUrlMap ?? {}) as Record<\n EncodedId,\n string\n >;\n for (const { segments } of urlFieldPaths) {\n injectUrls(\n output as Record<string, unknown>,\n segments,\n idToUrl as unknown as Record<string, string>,\n );\n }\n // If we wrapped a non-object schema, unwrap the value\n if (!isObjectSchema && output && typeof output === \"object\") {\n output = (output as Record<string, unknown>)[WRAP_KEY];\n }\n\n const resultPreviewLength = 200;\n const resultString = JSON.stringify(output) ?? \"undefined\";\n const resultPreview =\n resultString.length > resultPreviewLength\n ? resultString.slice(0, resultPreviewLength) + \"...\"\n : resultString;\n\n v3Logger({\n category: \"extraction\",\n message: completed\n ? \"Extraction completed successfully\"\n : \"Extraction incomplete after processing all data\",\n level: 1,\n auxiliary: {\n prompt_tokens: { value: String(prompt_tokens), type: \"string\" },\n completion_tokens: { value: String(completion_tokens), type: \"string\" },\n inference_time_ms: {\n value: String(inference_time_ms),\n type: \"string\",\n },\n result: { value: resultPreview, type: \"string\" },\n },\n });\n\n return output as InferStagehandSchema<T>;\n }\n}\n"]}
@@ -27,7 +27,7 @@ export class ObserveHandler {
27
27
  this.onMetrics = onMetrics;
28
28
  }
29
29
  async observe(params) {
30
- const { instruction, page, timeout, selector, model, variables } = params;
30
+ const { instruction, page, timeout, selector, ignoreSelectors, model, variables, } = params;
31
31
  const llmClient = this.resolveLlmClient(model);
32
32
  const ensureTimeRemaining = createTimeoutGuard(timeout, (ms) => new ObserveTimeoutError(ms));
33
33
  const effectiveInstruction = instruction ??
@@ -49,6 +49,7 @@ export class ObserveHandler {
49
49
  const snapshot = await captureHybridSnapshot(page, {
50
50
  experimental: this.experimental,
51
51
  focusSelector: focusSelector || undefined,
52
+ ignoreSelectors,
52
53
  });
53
54
  const combinedTree = snapshot.combinedTree;
54
55
  const combinedXpathMap = snapshot.combinedXpathMap ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"observeHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/observeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/observeHandler.ts\nimport { observe as runObserve } from \"../../inference.js\";\nimport { trimTrailingTextNode } from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport {\n ObserveHandlerParams,\n SupportedUnderstudyAction,\n} from \"../types/private/handlers.js\";\nimport { EncodedId } from \"../types/private/internal.js\";\nimport { Action } from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport { ObserveTimeoutError } from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\n\nexport class ObserveHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async observe(params: ObserveHandlerParams): Promise<Action[]> {\n const { instruction, page, timeout, selector, model, variables } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const ensureTimeRemaining = createTimeoutGuard(\n timeout,\n (ms) => new ObserveTimeoutError(ms),\n );\n\n const effectiveInstruction =\n instruction ??\n \"Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.\";\n\n v3Logger({\n category: \"observation\",\n message: \"starting observation\",\n level: 1,\n auxiliary: {\n instruction: {\n value: effectiveInstruction,\n type: \"string\",\n },\n },\n });\n\n // Build the hybrid snapshot (a11y-centric text tree + lookup maps)\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snapshot = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n });\n\n const combinedTree = snapshot.combinedTree;\n const combinedXpathMap = snapshot.combinedXpathMap ?? {};\n\n v3Logger({\n category: \"observation\",\n message: \"Got accessibility tree data\",\n level: 1,\n });\n\n // Call the LLM to propose actionable elements\n ensureTimeRemaining();\n const observationResponse = await runObserve({\n instruction: effectiveInstruction,\n domElements: combinedTree,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n supportedActions: Object.values(SupportedUnderstudyAction),\n variables,\n });\n\n const {\n prompt_tokens = 0,\n completion_tokens = 0,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms = 0,\n } = observationResponse;\n\n // Update OBSERVE metrics from the LLM observation call\n this.onMetrics?.(\n V3FunctionName.OBSERVE,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Map elementIds -> selectors via combinedXpathMap\n const elementsWithSelectors = (\n await Promise.all(\n observationResponse.elements.map(async (element) => {\n const { elementId, ...rest } = element; // rest may or may not have method/arguments\n if (typeof elementId === \"string\" && elementId.includes(\"-\")) {\n const lookUpIndex = elementId as EncodedId;\n const xpath = combinedXpathMap[lookUpIndex];\n const trimmedXpath = trimTrailingTextNode(xpath);\n if (!trimmedXpath) return undefined;\n\n // For dragAndDrop, convert element ID in arguments to xpath (target element)\n let resolvedArgs = rest.arguments;\n if (\n rest.method === \"dragAndDrop\" &&\n Array.isArray(rest.arguments) &&\n rest.arguments.length > 0\n ) {\n const targetArg = rest.arguments[0];\n // Check if argument looks like an element ID (e.g., \"1-67\")\n if (\n typeof targetArg === \"string\" &&\n /^\\d+-\\d+$/.test(targetArg)\n ) {\n const argXpath = combinedXpathMap[targetArg as EncodedId];\n const trimmedArgXpath = trimTrailingTextNode(argXpath);\n if (trimmedArgXpath) {\n resolvedArgs = [\n `xpath=${trimmedArgXpath}`,\n ...rest.arguments.slice(1),\n ];\n } else {\n // Target element lookup failed, filter out this action\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element lookup failed\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n } else {\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element invalid ID format\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n }\n\n return {\n ...rest,\n arguments: resolvedArgs,\n selector: `xpath=${trimmedXpath}`,\n } as {\n description: string;\n method?: string;\n arguments?: string[];\n selector: string;\n };\n }\n // shadow-root fallback:\n return {\n description: \"an element inside a shadow DOM\",\n method: \"not-supported\",\n arguments: [],\n selector: \"not-supported\",\n };\n }),\n )\n ).filter(<T>(e: T | undefined): e is T => e !== undefined);\n\n v3Logger({\n category: \"observation\",\n message: \"found elements\",\n level: 1,\n auxiliary: {\n elements: {\n value: JSON.stringify(elementsWithSelectors),\n type: \"object\",\n },\n },\n });\n\n return elementsWithSelectors;\n }\n}\n"]}
1
+ {"version":3,"file":"observeHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/observeHandler.ts"],"names":[],"mappings":"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","sourcesContent":["// lib/v3/handlers/observeHandler.ts\nimport { observe as runObserve } from \"../../inference.js\";\nimport { trimTrailingTextNode } from \"../../utils.js\";\nimport { v3Logger } from \"../logger.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { captureHybridSnapshot } from \"../understudy/a11y/snapshot/index.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport {\n ObserveHandlerParams,\n SupportedUnderstudyAction,\n} from \"../types/private/handlers.js\";\nimport { EncodedId } from \"../types/private/internal.js\";\nimport { Action } from \"../types/public/methods.js\";\nimport {\n AvailableModel,\n ClientOptions,\n ModelConfiguration,\n} from \"../types/public/model.js\";\nimport { ObserveTimeoutError } from \"../types/public/sdkErrors.js\";\nimport { createTimeoutGuard } from \"./handlerUtils/timeoutGuard.js\";\n\nexport class ObserveHandler {\n private readonly llmClient: LLMClient;\n private readonly defaultModelName: AvailableModel;\n private readonly defaultClientOptions: ClientOptions;\n private readonly resolveLlmClient: (model?: ModelConfiguration) => LLMClient;\n private readonly systemPrompt: string;\n private readonly logInferenceToFile: boolean;\n private readonly experimental: boolean;\n private readonly onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void;\n\n constructor(\n llmClient: LLMClient,\n defaultModelName: AvailableModel,\n defaultClientOptions: ClientOptions,\n resolveLlmClient: (model?: ModelConfiguration) => LLMClient,\n systemPrompt?: string,\n logInferenceToFile?: boolean,\n experimental?: boolean,\n onMetrics?: (\n functionName: V3FunctionName,\n promptTokens: number,\n completionTokens: number,\n reasoningTokens: number,\n cachedInputTokens: number,\n inferenceTimeMs: number,\n ) => void,\n ) {\n this.llmClient = llmClient;\n this.defaultModelName = defaultModelName;\n this.defaultClientOptions = defaultClientOptions;\n this.resolveLlmClient = resolveLlmClient;\n this.systemPrompt = systemPrompt ?? \"\";\n this.logInferenceToFile = logInferenceToFile ?? false;\n this.experimental = experimental ?? false;\n this.onMetrics = onMetrics;\n }\n\n async observe(params: ObserveHandlerParams): Promise<Action[]> {\n const {\n instruction,\n page,\n timeout,\n selector,\n ignoreSelectors,\n model,\n variables,\n } = params;\n\n const llmClient = this.resolveLlmClient(model);\n\n const ensureTimeRemaining = createTimeoutGuard(\n timeout,\n (ms) => new ObserveTimeoutError(ms),\n );\n\n const effectiveInstruction =\n instruction ??\n \"Find elements that can be used for any future actions in the page. These may be navigation links, related pages, section/subsection links, buttons, or other interactive elements. Be comprehensive: if there are multiple elements that may be relevant for future actions, return all of them.\";\n\n v3Logger({\n category: \"observation\",\n message: \"starting observation\",\n level: 1,\n auxiliary: {\n instruction: {\n value: effectiveInstruction,\n type: \"string\",\n },\n },\n });\n\n // Build the hybrid snapshot (a11y-centric text tree + lookup maps)\n const focusSelector = selector?.replace(/^xpath=/i, \"\") ?? \"\";\n ensureTimeRemaining();\n const snapshot = await captureHybridSnapshot(page, {\n experimental: this.experimental,\n focusSelector: focusSelector || undefined,\n ignoreSelectors,\n });\n\n const combinedTree = snapshot.combinedTree;\n const combinedXpathMap = snapshot.combinedXpathMap ?? {};\n\n v3Logger({\n category: \"observation\",\n message: \"Got accessibility tree data\",\n level: 1,\n });\n\n // Call the LLM to propose actionable elements\n ensureTimeRemaining();\n const observationResponse = await runObserve({\n instruction: effectiveInstruction,\n domElements: combinedTree,\n llmClient,\n userProvidedInstructions: this.systemPrompt,\n logger: v3Logger,\n logInferenceToFile: this.logInferenceToFile,\n supportedActions: Object.values(SupportedUnderstudyAction),\n variables,\n });\n\n const {\n prompt_tokens = 0,\n completion_tokens = 0,\n reasoning_tokens = 0,\n cached_input_tokens = 0,\n inference_time_ms = 0,\n } = observationResponse;\n\n // Update OBSERVE metrics from the LLM observation call\n this.onMetrics?.(\n V3FunctionName.OBSERVE,\n prompt_tokens,\n completion_tokens,\n reasoning_tokens,\n cached_input_tokens,\n inference_time_ms,\n );\n\n // Map elementIds -> selectors via combinedXpathMap\n const elementsWithSelectors = (\n await Promise.all(\n observationResponse.elements.map(async (element) => {\n const { elementId, ...rest } = element; // rest may or may not have method/arguments\n if (typeof elementId === \"string\" && elementId.includes(\"-\")) {\n const lookUpIndex = elementId as EncodedId;\n const xpath = combinedXpathMap[lookUpIndex];\n const trimmedXpath = trimTrailingTextNode(xpath);\n if (!trimmedXpath) return undefined;\n\n // For dragAndDrop, convert element ID in arguments to xpath (target element)\n let resolvedArgs = rest.arguments;\n if (\n rest.method === \"dragAndDrop\" &&\n Array.isArray(rest.arguments) &&\n rest.arguments.length > 0\n ) {\n const targetArg = rest.arguments[0];\n // Check if argument looks like an element ID (e.g., \"1-67\")\n if (\n typeof targetArg === \"string\" &&\n /^\\d+-\\d+$/.test(targetArg)\n ) {\n const argXpath = combinedXpathMap[targetArg as EncodedId];\n const trimmedArgXpath = trimTrailingTextNode(argXpath);\n if (trimmedArgXpath) {\n resolvedArgs = [\n `xpath=${trimmedArgXpath}`,\n ...rest.arguments.slice(1),\n ];\n } else {\n // Target element lookup failed, filter out this action\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element lookup failed\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n } else {\n v3Logger({\n category: \"observation\",\n message: \"dragAndDrop target element invalid ID format\",\n level: 0,\n auxiliary: {\n targetElementId: { value: targetArg, type: \"string\" },\n sourceElementId: { value: elementId, type: \"string\" },\n },\n });\n return undefined;\n }\n }\n\n return {\n ...rest,\n arguments: resolvedArgs,\n selector: `xpath=${trimmedXpath}`,\n } as {\n description: string;\n method?: string;\n arguments?: string[];\n selector: string;\n };\n }\n // shadow-root fallback:\n return {\n description: \"an element inside a shadow DOM\",\n method: \"not-supported\",\n arguments: [],\n selector: \"not-supported\",\n };\n }),\n )\n ).filter(<T>(e: T | undefined): e is T => e !== undefined);\n\n v3Logger({\n category: \"observation\",\n message: \"found elements\",\n level: 1,\n auxiliary: {\n elements: {\n value: JSON.stringify(elementsWithSelectors),\n type: \"object\",\n },\n },\n });\n\n return elementsWithSelectors;\n }\n}\n"]}
@@ -18,6 +18,7 @@ export declare class V3AgentHandler {
18
18
  private createStepHandler;
19
19
  execute(instructionOrOptions: string | AgentExecuteOptions): Promise<AgentResult>;
20
20
  stream(instructionOrOptions: string | AgentStreamExecuteOptions): Promise<AgentStreamResult>;
21
+ private emitFinalEvidence;
21
22
  private consolidateMetricsAndResult;
22
23
  private createTools;
23
24
  private handleStop;
@@ -8,6 +8,9 @@ import { V3FunctionName } from "../types/public/methods.js";
8
8
  import { mapToolResultToActions } from "../agent/utils/actionMapping.js";
9
9
  import { MissingLLMConfigurationError, MissingEnvironmentVariableError, StreamingCallbacksInNonStreamingModeError, AgentAbortError, } from "../types/public/sdkErrors.js";
10
10
  import { handleDoneToolCall } from "../agent/utils/handleDoneToolCall.js";
11
+ import { captureProbeEvidence, emitPostStepProbeEvidence, } from "../agent/utils/postStepProbeEvidence.js";
12
+ import { wrapEvidenceCallback } from "../agent/utils/wrapEvidenceCallback.js";
13
+ import { inferToolOutput } from "../agent/utils/toolOutputEvidence.js";
11
14
  import { CaptchaSolver, CAPTCHA_SOLVED_MSG, CAPTCHA_ERRORED_MSG, } from "../agent/utils/captchaSolver.js";
12
15
  function getErrorMessage(error) {
13
16
  return error instanceof Error ? error.message : String(error);
@@ -160,13 +163,14 @@ export class V3AgentHandler {
160
163
  return options;
161
164
  };
162
165
  }
163
- createStepHandler(state, userCallback) {
166
+ createStepHandler(state, { userCallback, evidenceCallback, onFinalAnswer }) {
164
167
  return async (event) => {
165
168
  this.logger({
166
169
  category: "agent",
167
170
  message: `Step finished: ${event.finishReason}`,
168
171
  level: 2,
169
172
  });
173
+ let lastFinalAnswer;
170
174
  if (event.toolCalls && event.toolCalls.length > 0) {
171
175
  for (let i = 0; i < event.toolCalls.length; i++) {
172
176
  const toolCall = event.toolCalls[i];
@@ -189,6 +193,12 @@ export class V3AgentHandler {
189
193
  ? `${allReasoning} ${doneReasoning}`.trim()
190
194
  : allReasoning || "Task completed successfully";
191
195
  }
196
+ lastFinalAnswer = {
197
+ message: state.finalMessage,
198
+ output: typeof args?.output === "object" && args?.output !== null
199
+ ? args.output
200
+ : undefined,
201
+ };
192
202
  }
193
203
  const mappedActions = mapToolResultToActions({
194
204
  toolCallName: toolCall.toolName,
@@ -201,8 +211,31 @@ export class V3AgentHandler {
201
211
  action.timestamp = Date.now();
202
212
  state.actions.push(action);
203
213
  }
214
+ await evidenceCallback?.({
215
+ type: "step_finished",
216
+ actionName: toolCall.toolName,
217
+ actionArgs: typeof args === "object" && args !== null
218
+ ? args
219
+ : {},
220
+ reasoning: event.text ?? "",
221
+ toolOutput: inferToolOutput(toolResult),
222
+ });
204
223
  }
205
224
  state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();
225
+ // Harness probe — one screenshot / a11y snapshot per AI SDK step.
226
+ // The recorder applies the probe to every step_finished received
227
+ // since the previous probe, so a multi-tool turn shares the same
228
+ // post-turn observation.
229
+ await emitPostStepProbeEvidence({
230
+ v3: this.v3,
231
+ url: state.currentPageUrl,
232
+ evidenceCallback,
233
+ logger: this.logger,
234
+ warningMessage: "Warning: harness probe failed",
235
+ });
236
+ }
237
+ if (lastFinalAnswer) {
238
+ onFinalAnswer?.(lastFinalAnswer);
206
239
  }
207
240
  if (userCallback) {
208
241
  await userCallback(event);
@@ -222,6 +255,7 @@ export class V3AgentHandler {
222
255
  completed: false,
223
256
  currentPageUrl: "",
224
257
  };
258
+ let finalAnswerFromDoneTool;
225
259
  let messages = [];
226
260
  let captchaSolver;
227
261
  try {
@@ -251,6 +285,7 @@ export class V3AgentHandler {
251
285
  throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);
252
286
  }
253
287
  }
288
+ const evidenceCallback = wrapEvidenceCallback(callbacks?.onEvidence, this.logger);
254
289
  const result = await this.llmClient.generateText({
255
290
  model: wrappedModel,
256
291
  messages: prependSystemMessage(systemPrompt, messages),
@@ -258,7 +293,13 @@ export class V3AgentHandler {
258
293
  stopWhen: (result) => this.handleStop(result, maxSteps),
259
294
  toolChoice: "auto",
260
295
  prepareStep: this.createPrepareStep(callbacks?.prepareStep, captchaSolver),
261
- onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),
296
+ onStepFinish: this.createStepHandler(state, {
297
+ userCallback: callbacks?.onStepFinish,
298
+ evidenceCallback,
299
+ onFinalAnswer: (answer) => {
300
+ finalAnswerFromDoneTool = answer;
301
+ },
302
+ }),
262
303
  abortSignal: preparedOptions.signal,
263
304
  providerOptions: {
264
305
  google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
@@ -267,7 +308,12 @@ export class V3AgentHandler {
267
308
  });
268
309
  const allMessages = [...messages, ...(result.response?.messages || [])];
269
310
  const doneResult = await this.ensureDone(state, wrappedModel, allMessages, preparedOptions.instruction, preparedOptions.output, this.logger);
270
- return this.consolidateMetricsAndResult(startTime, state, doneResult.messages, result, maxSteps, doneResult.output);
311
+ const output = doneResult.output ?? finalAnswerFromDoneTool?.output;
312
+ await this.emitFinalEvidence(state, {
313
+ message: state.finalMessage,
314
+ output,
315
+ }, evidenceCallback);
316
+ return this.consolidateMetricsAndResult(startTime, state, doneResult.messages, result, maxSteps, output);
271
317
  }
272
318
  catch (error) {
273
319
  // Re-throw validation errors that should propagate to the caller
@@ -303,6 +349,7 @@ export class V3AgentHandler {
303
349
  const streamOptions = typeof instructionOrOptions === "object" ? instructionOrOptions : null;
304
350
  // Highlight cursor defaults to true for hybrid mode, can be overridden
305
351
  const shouldHighlightCursor = streamOptions?.highlightCursor ?? this.mode === "hybrid";
352
+ let finalAnswerFromDoneTool;
306
353
  const { options, maxSteps, systemPrompt, allTools, messages, wrappedModel, initialPageUrl, } = await this.prepareAgent(instructionOrOptions);
307
354
  // Enable cursor overlay for hybrid mode (coordinate-based interactions)
308
355
  if (shouldHighlightCursor && this.mode === "hybrid") {
@@ -340,6 +387,7 @@ export class V3AgentHandler {
340
387
  });
341
388
  rejectResult(error);
342
389
  };
390
+ const evidenceCallback = wrapEvidenceCallback(callbacks?.onEvidence, this.logger);
343
391
  let streamResult;
344
392
  try {
345
393
  streamResult = this.llmClient.streamText({
@@ -349,7 +397,13 @@ export class V3AgentHandler {
349
397
  stopWhen: (result) => this.handleStop(result, maxSteps),
350
398
  toolChoice: "auto",
351
399
  prepareStep: this.createPrepareStep(callbacks?.prepareStep, captchaSolver),
352
- onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),
400
+ onStepFinish: this.createStepHandler(state, {
401
+ userCallback: callbacks?.onStepFinish,
402
+ evidenceCallback,
403
+ onFinalAnswer: (answer) => {
404
+ finalAnswerFromDoneTool = answer;
405
+ },
406
+ }),
353
407
  onError: (event) => {
354
408
  captchaSolver?.dispose();
355
409
  if (callbacks?.onError) {
@@ -367,10 +421,17 @@ export class V3AgentHandler {
367
421
  ...messages,
368
422
  ...(event.response?.messages || []),
369
423
  ];
370
- this.ensureDone(state, wrappedModel, allMessages, options.instruction, options.output, this.logger).then((doneResult) => {
371
- const result = this.consolidateMetricsAndResult(startTime, state, doneResult.messages, event, maxSteps, doneResult.output);
424
+ this.ensureDone(state, wrappedModel, allMessages, options.instruction, options.output, this.logger)
425
+ .then(async (doneResult) => {
426
+ const output = doneResult.output ?? finalAnswerFromDoneTool?.output;
427
+ await this.emitFinalEvidence(state, {
428
+ message: state.finalMessage,
429
+ output,
430
+ }, evidenceCallback);
431
+ const result = this.consolidateMetricsAndResult(startTime, state, doneResult.messages, event, maxSteps, output);
372
432
  resolveResult(result);
373
- });
433
+ })
434
+ .catch(handleError);
374
435
  },
375
436
  onAbort: (event) => {
376
437
  captchaSolver?.dispose();
@@ -398,6 +459,21 @@ export class V3AgentHandler {
398
459
  agentStreamResult.result = resultPromise;
399
460
  return agentStreamResult;
400
461
  }
462
+ async emitFinalEvidence(state, finalAnswer, evidenceCallback) {
463
+ if (!evidenceCallback)
464
+ return;
465
+ const observation = await captureProbeEvidence({
466
+ v3: this.v3,
467
+ url: state.currentPageUrl,
468
+ logger: this.logger,
469
+ warningMessage: "Warning: final harness probe failed",
470
+ });
471
+ await evidenceCallback({
472
+ type: "final_answer",
473
+ ...finalAnswer,
474
+ observation,
475
+ });
476
+ }
401
477
  consolidateMetricsAndResult(startTime, state, inputMessages, result, maxSteps, output) {
402
478
  if (!state.finalMessage) {
403
479
  const allReasoning = state.collectedReasoning.join(" ").trim();