@browserbasehq/orca 3.5.0-vertex-test → 3.6.0-gemini-cua

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 (290) hide show
  1. package/README.md +7 -15
  2. package/dist/cjs/lib/utils.d.ts +8 -0
  3. package/dist/cjs/lib/utils.js +31 -0
  4. package/dist/cjs/lib/utils.js.map +1 -1
  5. package/dist/cjs/lib/v3/agent/AgentProvider.js +5 -3
  6. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -8
  8. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +124 -28
  10. package/dist/cjs/lib/v3/agent/GoogleCUAClient.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/handleDoneToolCall.js +10 -1
  15. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  16. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  17. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js +54 -0
  18. package/dist/cjs/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  19. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  20. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js +62 -0
  21. package/dist/cjs/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  22. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  23. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js +25 -0
  24. package/dist/cjs/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  25. package/dist/cjs/lib/v3/api.d.ts +1 -0
  26. package/dist/cjs/lib/v3/api.js +37 -16
  27. package/dist/cjs/lib/v3/api.js.map +1 -1
  28. package/dist/cjs/lib/v3/cache/ActCache.js +1 -1
  29. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -1
  30. package/dist/cjs/lib/v3/cache/utils.d.ts +7 -0
  31. package/dist/cjs/lib/v3/cache/utils.js +19 -0
  32. package/dist/cjs/lib/v3/cache/utils.js.map +1 -1
  33. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
  34. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +24 -24
  35. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
  36. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
  37. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
  38. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +3 -1
  39. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +108 -16
  40. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  41. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  42. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
  43. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  44. package/dist/cjs/lib/v3/index.d.ts +13 -1
  45. package/dist/cjs/lib/v3/index.js +19 -1
  46. package/dist/cjs/lib/v3/index.js.map +1 -1
  47. package/dist/cjs/lib/v3/launch/local.js +1 -0
  48. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  49. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +3 -0
  50. package/dist/cjs/lib/v3/llm/LLMProvider.js +45 -3
  51. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  52. package/dist/cjs/lib/v3/llm/aisdk.js +4 -0
  53. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  54. package/dist/cjs/lib/v3/llm/anthropicOptions.d.ts +57 -0
  55. package/dist/cjs/lib/v3/llm/anthropicOptions.js +115 -0
  56. package/dist/cjs/lib/v3/llm/anthropicOptions.js.map +1 -0
  57. package/dist/cjs/lib/v3/types/public/agent.d.ts +8 -2
  58. package/dist/cjs/lib/v3/types/public/agent.js +3 -0
  59. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  60. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  61. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js +15 -0
  62. package/dist/cjs/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  63. package/dist/cjs/lib/v3/types/public/api.d.ts +925 -182
  64. package/dist/cjs/lib/v3/types/public/api.js +138 -20
  65. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  66. package/dist/cjs/lib/v3/types/public/clipboard.d.ts +15 -0
  67. package/dist/cjs/lib/v3/types/public/clipboard.js +3 -0
  68. package/dist/cjs/lib/v3/types/public/clipboard.js.map +1 -0
  69. package/dist/cjs/lib/v3/types/public/index.d.ts +2 -0
  70. package/dist/cjs/lib/v3/types/public/index.js +2 -0
  71. package/dist/cjs/lib/v3/types/public/index.js.map +1 -1
  72. package/dist/cjs/lib/v3/types/public/model.d.ts +33 -8
  73. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  74. package/dist/cjs/lib/v3/types/public/page.d.ts +29 -0
  75. package/dist/cjs/lib/v3/types/public/page.js.map +1 -1
  76. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +3 -0
  77. package/dist/cjs/lib/v3/types/public/sdkErrors.js +8 -2
  78. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -1
  79. package/dist/cjs/lib/v3/understudy/clipboard.d.ts +24 -0
  80. package/dist/cjs/lib/v3/understudy/clipboard.js +166 -0
  81. package/dist/cjs/lib/v3/understudy/clipboard.js.map +1 -0
  82. package/dist/cjs/lib/v3/understudy/context.d.ts +3 -0
  83. package/dist/cjs/lib/v3/understudy/context.js +15 -0
  84. package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
  85. package/dist/cjs/lib/v3/understudy/page.d.ts +23 -1
  86. package/dist/cjs/lib/v3/understudy/page.js +283 -0
  87. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  88. package/dist/cjs/lib/v3/v3.js +19 -7
  89. package/dist/cjs/lib/v3/v3.js.map +1 -1
  90. package/dist/cjs/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
  91. package/dist/cjs/lib/v3/verifier/errorTaxonomy.js +291 -0
  92. package/dist/cjs/lib/v3/verifier/errorTaxonomy.js.map +1 -0
  93. package/dist/cjs/lib/v3/verifier/evidence.d.ts +44 -0
  94. package/dist/cjs/lib/v3/verifier/evidence.js +432 -0
  95. package/dist/cjs/lib/v3/verifier/evidence.js.map +1 -0
  96. package/dist/cjs/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  97. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js +100 -0
  98. package/dist/cjs/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  99. package/dist/cjs/lib/v3/verifier/index.d.ts +6 -0
  100. package/dist/cjs/lib/v3/verifier/index.js +16 -0
  101. package/dist/cjs/lib/v3/verifier/index.js.map +1 -0
  102. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
  103. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js +71 -0
  104. package/dist/cjs/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
  105. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
  106. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js +166 -0
  107. package/dist/cjs/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
  108. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
  109. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js +158 -0
  110. package/dist/cjs/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
  111. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
  112. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js +137 -0
  113. package/dist/cjs/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
  114. package/dist/cjs/lib/v3/verifier/prompts/index.d.ts +8 -0
  115. package/dist/cjs/lib/v3/verifier/prompts/index.js +22 -0
  116. package/dist/cjs/lib/v3/verifier/prompts/index.js.map +1 -0
  117. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
  118. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js +77 -0
  119. package/dist/cjs/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
  120. package/dist/cjs/lib/v3/verifier/prompts/render.d.ts +23 -0
  121. package/dist/cjs/lib/v3/verifier/prompts/render.js +45 -0
  122. package/dist/cjs/lib/v3/verifier/prompts/render.js.map +1 -0
  123. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
  124. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js +321 -0
  125. package/dist/cjs/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
  126. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
  127. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js +116 -0
  128. package/dist/cjs/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
  129. package/dist/cjs/lib/v3/verifier/rubricVerifier.d.ts +91 -0
  130. package/dist/cjs/lib/v3/verifier/rubricVerifier.js +1645 -0
  131. package/dist/cjs/lib/v3/verifier/rubricVerifier.js.map +1 -0
  132. package/dist/cjs/lib/v3/verifier/trajectory.d.ts +50 -0
  133. package/dist/cjs/lib/v3/verifier/trajectory.js +316 -0
  134. package/dist/cjs/lib/v3/verifier/trajectory.js.map +1 -0
  135. package/dist/cjs/lib/v3/verifier/types.d.ts +429 -0
  136. package/dist/cjs/lib/v3/verifier/types.js +3 -0
  137. package/dist/cjs/lib/v3/verifier/types.js.map +1 -0
  138. package/dist/cjs/lib/v3Evaluator.d.ts +14 -4
  139. package/dist/cjs/lib/v3Evaluator.js +189 -1
  140. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  141. package/dist/cjs/lib/v3LegacyEvaluator.js +5 -1
  142. package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -1
  143. package/dist/cjs/lib/version.d.ts +1 -1
  144. package/dist/cjs/lib/version.js +1 -1
  145. package/dist/cjs/lib/version.js.map +1 -1
  146. package/dist/esm/lib/utils.d.ts +8 -0
  147. package/dist/esm/lib/utils.js +28 -0
  148. package/dist/esm/lib/utils.js.map +1 -1
  149. package/dist/esm/lib/v3/agent/AgentProvider.js +5 -3
  150. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  151. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -8
  152. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  153. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +124 -28
  154. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  155. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.d.ts +35 -0
  156. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js +35 -0
  157. package/dist/esm/lib/v3/agent/utils/captureAriaTreeProbe.js.map +1 -0
  158. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +10 -1
  159. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  160. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.d.ts +19 -0
  161. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js +50 -0
  162. package/dist/esm/lib/v3/agent/utils/postStepProbeEvidence.js.map +1 -0
  163. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.d.ts +2 -0
  164. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js +59 -0
  165. package/dist/esm/lib/v3/agent/utils/toolOutputEvidence.js.map +1 -0
  166. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.d.ts +3 -0
  167. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js +22 -0
  168. package/dist/esm/lib/v3/agent/utils/wrapEvidenceCallback.js.map +1 -0
  169. package/dist/esm/lib/v3/api.d.ts +1 -0
  170. package/dist/esm/lib/v3/api.js +38 -17
  171. package/dist/esm/lib/v3/api.js.map +1 -1
  172. package/dist/esm/lib/v3/cache/ActCache.js +2 -2
  173. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  174. package/dist/esm/lib/v3/cache/utils.d.ts +7 -0
  175. package/dist/esm/lib/v3/cache/utils.js +18 -0
  176. package/dist/esm/lib/v3/cache/utils.js.map +1 -1
  177. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +24 -24
  178. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +24 -24
  179. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -1
  180. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +79 -10
  181. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -1
  182. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +3 -1
  183. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +108 -16
  184. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  185. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +11 -0
  186. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +119 -5
  187. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  188. package/dist/esm/lib/v3/index.d.ts +13 -1
  189. package/dist/esm/lib/v3/index.js +10 -0
  190. package/dist/esm/lib/v3/index.js.map +1 -1
  191. package/dist/esm/lib/v3/launch/local.js +1 -0
  192. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  193. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +3 -0
  194. package/dist/esm/lib/v3/llm/LLMProvider.js +44 -3
  195. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  196. package/dist/esm/lib/v3/llm/aisdk.js +4 -0
  197. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  198. package/dist/esm/lib/v3/llm/anthropicOptions.d.ts +57 -0
  199. package/dist/esm/lib/v3/llm/anthropicOptions.js +106 -0
  200. package/dist/esm/lib/v3/llm/anthropicOptions.js.map +1 -0
  201. package/dist/esm/lib/v3/types/public/agent.d.ts +8 -2
  202. package/dist/esm/lib/v3/types/public/agent.js +3 -0
  203. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  204. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.d.ts +85 -0
  205. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js +14 -0
  206. package/dist/esm/lib/v3/types/public/agentEvidenceEvents.js.map +1 -0
  207. package/dist/esm/lib/v3/types/public/api.d.ts +925 -182
  208. package/dist/esm/lib/v3/types/public/api.js +136 -18
  209. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  210. package/dist/esm/lib/v3/types/public/clipboard.d.ts +15 -0
  211. package/dist/esm/lib/v3/types/public/clipboard.js +2 -0
  212. package/dist/esm/lib/v3/types/public/clipboard.js.map +1 -0
  213. package/dist/esm/lib/v3/types/public/index.d.ts +2 -0
  214. package/dist/esm/lib/v3/types/public/index.js +2 -0
  215. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  216. package/dist/esm/lib/v3/types/public/model.d.ts +33 -8
  217. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  218. package/dist/esm/lib/v3/types/public/page.d.ts +29 -0
  219. package/dist/esm/lib/v3/types/public/page.js.map +1 -1
  220. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +3 -0
  221. package/dist/esm/lib/v3/types/public/sdkErrors.js +5 -0
  222. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  223. package/dist/esm/lib/v3/understudy/clipboard.d.ts +24 -0
  224. package/dist/esm/lib/v3/understudy/clipboard.js +163 -0
  225. package/dist/esm/lib/v3/understudy/clipboard.js.map +1 -0
  226. package/dist/esm/lib/v3/understudy/context.d.ts +3 -0
  227. package/dist/esm/lib/v3/understudy/context.js +15 -0
  228. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  229. package/dist/esm/lib/v3/understudy/page.d.ts +23 -1
  230. package/dist/esm/lib/v3/understudy/page.js +284 -1
  231. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  232. package/dist/esm/lib/v3/v3.js +20 -8
  233. package/dist/esm/lib/v3/v3.js.map +1 -1
  234. package/dist/esm/lib/v3/verifier/errorTaxonomy.d.ts +35 -0
  235. package/dist/esm/lib/v3/verifier/errorTaxonomy.js +285 -0
  236. package/dist/esm/lib/v3/verifier/errorTaxonomy.js.map +1 -0
  237. package/dist/esm/lib/v3/verifier/evidence.d.ts +44 -0
  238. package/dist/esm/lib/v3/verifier/evidence.js +393 -0
  239. package/dist/esm/lib/v3/verifier/evidence.js.map +1 -0
  240. package/dist/esm/lib/v3/verifier/evidenceNormalization.d.ts +7 -0
  241. package/dist/esm/lib/v3/verifier/evidenceNormalization.js +93 -0
  242. package/dist/esm/lib/v3/verifier/evidenceNormalization.js.map +1 -0
  243. package/dist/esm/lib/v3/verifier/index.d.ts +6 -0
  244. package/dist/esm/lib/v3/verifier/index.js +3 -0
  245. package/dist/esm/lib/v3/verifier/index.js.map +1 -0
  246. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.d.ts +21 -0
  247. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js +68 -0
  248. package/dist/esm/lib/v3/verifier/prompts/batchedRelevance.js.map +1 -0
  249. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.d.ts +3 -0
  250. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js +162 -0
  251. package/dist/esm/lib/v3/verifier/prompts/firstPointOfFailure.js.map +1 -0
  252. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.d.ts +35 -0
  253. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js +155 -0
  254. package/dist/esm/lib/v3/verifier/prompts/fusedJudgment.js.map +1 -0
  255. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.d.ts +26 -0
  256. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js +134 -0
  257. package/dist/esm/lib/v3/verifier/prompts/fusedOutcome.js.map +1 -0
  258. package/dist/esm/lib/v3/verifier/prompts/index.d.ts +8 -0
  259. package/dist/esm/lib/v3/verifier/prompts/index.js +9 -0
  260. package/dist/esm/lib/v3/verifier/prompts/index.js.map +1 -0
  261. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.d.ts +23 -0
  262. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js +74 -0
  263. package/dist/esm/lib/v3/verifier/prompts/perCriterionScore.js.map +1 -0
  264. package/dist/esm/lib/v3/verifier/prompts/render.d.ts +23 -0
  265. package/dist/esm/lib/v3/verifier/prompts/render.js +41 -0
  266. package/dist/esm/lib/v3/verifier/prompts/render.js.map +1 -0
  267. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.d.ts +16 -0
  268. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js +318 -0
  269. package/dist/esm/lib/v3/verifier/prompts/rubricGeneration.js.map +1 -0
  270. package/dist/esm/lib/v3/verifier/prompts/taskValidity.d.ts +1 -0
  271. package/dist/esm/lib/v3/verifier/prompts/taskValidity.js +113 -0
  272. package/dist/esm/lib/v3/verifier/prompts/taskValidity.js.map +1 -0
  273. package/dist/esm/lib/v3/verifier/rubricVerifier.d.ts +91 -0
  274. package/dist/esm/lib/v3/verifier/rubricVerifier.js +1640 -0
  275. package/dist/esm/lib/v3/verifier/rubricVerifier.js.map +1 -0
  276. package/dist/esm/lib/v3/verifier/trajectory.d.ts +50 -0
  277. package/dist/esm/lib/v3/verifier/trajectory.js +273 -0
  278. package/dist/esm/lib/v3/verifier/trajectory.js.map +1 -0
  279. package/dist/esm/lib/v3/verifier/types.d.ts +429 -0
  280. package/dist/esm/lib/v3/verifier/types.js +2 -0
  281. package/dist/esm/lib/v3/verifier/types.js.map +1 -0
  282. package/dist/esm/lib/v3Evaluator.d.ts +14 -4
  283. package/dist/esm/lib/v3Evaluator.js +189 -1
  284. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  285. package/dist/esm/lib/v3LegacyEvaluator.js +5 -1
  286. package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -1
  287. package/dist/esm/lib/version.d.ts +1 -1
  288. package/dist/esm/lib/version.js +1 -1
  289. package/dist/esm/lib/version.js.map +1 -1
  290. package/package.json +18 -12
@@ -3,11 +3,15 @@ import { buildAgentSystemPrompt } from "../agent/prompts/agentSystemPrompt.js";
3
3
  import { wrapLanguageModel, stepCountIs, } from "ai";
4
4
  import { processMessages } from "../agent/utils/messageProcessing.js";
5
5
  import { FlowLogger } from "../flowlogger/FlowLogger.js";
6
+ import { anthropicAdaptiveThinkingOptions, anthropicFallbacksOptions, } from "../llm/anthropicOptions.js";
6
7
  import { HYBRID_CAPABLE_MODEL_PATTERNS } from "../types/private/agent.js";
7
8
  import { V3FunctionName } from "../types/public/methods.js";
8
9
  import { mapToolResultToActions } from "../agent/utils/actionMapping.js";
9
10
  import { MissingLLMConfigurationError, MissingEnvironmentVariableError, StreamingCallbacksInNonStreamingModeError, AgentAbortError, } from "../types/public/sdkErrors.js";
10
11
  import { handleDoneToolCall } from "../agent/utils/handleDoneToolCall.js";
12
+ import { captureProbeEvidence, emitPostStepProbeEvidence, } from "../agent/utils/postStepProbeEvidence.js";
13
+ import { wrapEvidenceCallback } from "../agent/utils/wrapEvidenceCallback.js";
14
+ import { inferToolOutput } from "../agent/utils/toolOutputEvidence.js";
11
15
  import { CaptchaSolver, CAPTCHA_SOLVED_MSG, CAPTCHA_ERRORED_MSG, } from "../agent/utils/captchaSolver.js";
12
16
  function getErrorMessage(error) {
13
17
  return error instanceof Error ? error.message : String(error);
@@ -30,6 +34,25 @@ function prependSystemMessage(systemPrompt, messages) {
30
34
  ...messages,
31
35
  ];
32
36
  }
37
+ /**
38
+ * Request-level providerOptions for the hybrid/DOM agent loop.
39
+ *
40
+ * Anthropic models that support adaptive thinking (Claude 4.6+) get it
41
+ * enabled here — previously the hybrid path sent no thinking config for
42
+ * Anthropic at all. Fable 5 additionally opts into the API's server-side
43
+ * refusal fallback.
44
+ */
45
+ function buildAgentProviderOptions(modelId, thinkingEffort) {
46
+ const anthropic = {
47
+ ...(anthropicAdaptiveThinkingOptions(modelId, thinkingEffort) ?? {}),
48
+ ...(anthropicFallbacksOptions(modelId) ?? {}),
49
+ };
50
+ return {
51
+ google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
52
+ openai: { store: false },
53
+ ...(Object.keys(anthropic).length > 0 ? { anthropic } : {}),
54
+ };
55
+ }
33
56
  export class V3AgentHandler {
34
57
  v3;
35
58
  logger;
@@ -39,7 +62,8 @@ export class V3AgentHandler {
39
62
  mcpTools;
40
63
  mode;
41
64
  captchaAutoSolveEnabled;
42
- constructor(v3, logger, llmClient, executionModel, systemInstructions, mcpTools, mode, captchaAutoSolveEnabled) {
65
+ thinkingEffort;
66
+ constructor(v3, logger, llmClient, executionModel, systemInstructions, mcpTools, mode, captchaAutoSolveEnabled, thinkingEffort) {
43
67
  this.v3 = v3;
44
68
  this.logger = logger;
45
69
  this.llmClient = llmClient;
@@ -48,6 +72,7 @@ export class V3AgentHandler {
48
72
  this.mcpTools = mcpTools;
49
73
  this.mode = mode ?? "dom";
50
74
  this.captchaAutoSolveEnabled = captchaAutoSolveEnabled ?? false;
75
+ this.thinkingEffort = thinkingEffort;
51
76
  }
52
77
  async prepareAgent(instructionOrOptions) {
53
78
  try {
@@ -160,13 +185,14 @@ export class V3AgentHandler {
160
185
  return options;
161
186
  };
162
187
  }
163
- createStepHandler(state, userCallback) {
188
+ createStepHandler(state, { userCallback, evidenceCallback, onFinalAnswer }) {
164
189
  return async (event) => {
165
190
  this.logger({
166
191
  category: "agent",
167
192
  message: `Step finished: ${event.finishReason}`,
168
193
  level: 2,
169
194
  });
195
+ let lastFinalAnswer;
170
196
  if (event.toolCalls && event.toolCalls.length > 0) {
171
197
  for (let i = 0; i < event.toolCalls.length; i++) {
172
198
  const toolCall = event.toolCalls[i];
@@ -189,6 +215,12 @@ export class V3AgentHandler {
189
215
  ? `${allReasoning} ${doneReasoning}`.trim()
190
216
  : allReasoning || "Task completed successfully";
191
217
  }
218
+ lastFinalAnswer = {
219
+ message: state.finalMessage,
220
+ output: typeof args?.output === "object" && args?.output !== null
221
+ ? args.output
222
+ : undefined,
223
+ };
192
224
  }
193
225
  const mappedActions = mapToolResultToActions({
194
226
  toolCallName: toolCall.toolName,
@@ -201,8 +233,31 @@ export class V3AgentHandler {
201
233
  action.timestamp = Date.now();
202
234
  state.actions.push(action);
203
235
  }
236
+ await evidenceCallback?.({
237
+ type: "step_finished",
238
+ actionName: toolCall.toolName,
239
+ actionArgs: typeof args === "object" && args !== null
240
+ ? args
241
+ : {},
242
+ reasoning: event.text ?? "",
243
+ toolOutput: inferToolOutput(toolResult),
244
+ });
204
245
  }
205
246
  state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();
247
+ // Harness probe — one screenshot / a11y snapshot per AI SDK step.
248
+ // The recorder applies the probe to every step_finished received
249
+ // since the previous probe, so a multi-tool turn shares the same
250
+ // post-turn observation.
251
+ await emitPostStepProbeEvidence({
252
+ v3: this.v3,
253
+ url: state.currentPageUrl,
254
+ evidenceCallback,
255
+ logger: this.logger,
256
+ warningMessage: "Warning: harness probe failed",
257
+ });
258
+ }
259
+ if (lastFinalAnswer) {
260
+ onFinalAnswer?.(lastFinalAnswer);
206
261
  }
207
262
  if (userCallback) {
208
263
  await userCallback(event);
@@ -222,6 +277,7 @@ export class V3AgentHandler {
222
277
  completed: false,
223
278
  currentPageUrl: "",
224
279
  };
280
+ let finalAnswerFromDoneTool;
225
281
  let messages = [];
226
282
  let captchaSolver;
227
283
  try {
@@ -251,6 +307,7 @@ export class V3AgentHandler {
251
307
  throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);
252
308
  }
253
309
  }
310
+ const evidenceCallback = wrapEvidenceCallback(callbacks?.onEvidence, this.logger);
254
311
  const result = await this.llmClient.generateText({
255
312
  model: wrappedModel,
256
313
  messages: prependSystemMessage(systemPrompt, messages),
@@ -258,16 +315,24 @@ export class V3AgentHandler {
258
315
  stopWhen: (result) => this.handleStop(result, maxSteps),
259
316
  toolChoice: "auto",
260
317
  prepareStep: this.createPrepareStep(callbacks?.prepareStep, captchaSolver),
261
- onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),
318
+ onStepFinish: this.createStepHandler(state, {
319
+ userCallback: callbacks?.onStepFinish,
320
+ evidenceCallback,
321
+ onFinalAnswer: (answer) => {
322
+ finalAnswerFromDoneTool = answer;
323
+ },
324
+ }),
262
325
  abortSignal: preparedOptions.signal,
263
- providerOptions: {
264
- google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
265
- openai: { store: false },
266
- },
326
+ providerOptions: buildAgentProviderOptions(wrappedModel.modelId, this.thinkingEffort),
267
327
  });
268
328
  const allMessages = [...messages, ...(result.response?.messages || [])];
269
329
  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);
330
+ const output = doneResult.output ?? finalAnswerFromDoneTool?.output;
331
+ await this.emitFinalEvidence(state, {
332
+ message: state.finalMessage,
333
+ output,
334
+ }, evidenceCallback);
335
+ return this.consolidateMetricsAndResult(startTime, state, doneResult.messages, result, maxSteps, output);
271
336
  }
272
337
  catch (error) {
273
338
  // Re-throw validation errors that should propagate to the caller
@@ -303,6 +368,7 @@ export class V3AgentHandler {
303
368
  const streamOptions = typeof instructionOrOptions === "object" ? instructionOrOptions : null;
304
369
  // Highlight cursor defaults to true for hybrid mode, can be overridden
305
370
  const shouldHighlightCursor = streamOptions?.highlightCursor ?? this.mode === "hybrid";
371
+ let finalAnswerFromDoneTool;
306
372
  const { options, maxSteps, systemPrompt, allTools, messages, wrappedModel, initialPageUrl, } = await this.prepareAgent(instructionOrOptions);
307
373
  // Enable cursor overlay for hybrid mode (coordinate-based interactions)
308
374
  if (shouldHighlightCursor && this.mode === "hybrid") {
@@ -340,6 +406,7 @@ export class V3AgentHandler {
340
406
  });
341
407
  rejectResult(error);
342
408
  };
409
+ const evidenceCallback = wrapEvidenceCallback(callbacks?.onEvidence, this.logger);
343
410
  let streamResult;
344
411
  try {
345
412
  streamResult = this.llmClient.streamText({
@@ -349,7 +416,13 @@ export class V3AgentHandler {
349
416
  stopWhen: (result) => this.handleStop(result, maxSteps),
350
417
  toolChoice: "auto",
351
418
  prepareStep: this.createPrepareStep(callbacks?.prepareStep, captchaSolver),
352
- onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),
419
+ onStepFinish: this.createStepHandler(state, {
420
+ userCallback: callbacks?.onStepFinish,
421
+ evidenceCallback,
422
+ onFinalAnswer: (answer) => {
423
+ finalAnswerFromDoneTool = answer;
424
+ },
425
+ }),
353
426
  onError: (event) => {
354
427
  captchaSolver?.dispose();
355
428
  if (callbacks?.onError) {
@@ -367,10 +440,17 @@ export class V3AgentHandler {
367
440
  ...messages,
368
441
  ...(event.response?.messages || []),
369
442
  ];
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);
443
+ this.ensureDone(state, wrappedModel, allMessages, options.instruction, options.output, this.logger)
444
+ .then(async (doneResult) => {
445
+ const output = doneResult.output ?? finalAnswerFromDoneTool?.output;
446
+ await this.emitFinalEvidence(state, {
447
+ message: state.finalMessage,
448
+ output,
449
+ }, evidenceCallback);
450
+ const result = this.consolidateMetricsAndResult(startTime, state, doneResult.messages, event, maxSteps, output);
372
451
  resolveResult(result);
373
- });
452
+ })
453
+ .catch(handleError);
374
454
  },
375
455
  onAbort: (event) => {
376
456
  captchaSolver?.dispose();
@@ -384,10 +464,7 @@ export class V3AgentHandler {
384
464
  rejectResult(new AgentAbortError(reason));
385
465
  },
386
466
  abortSignal: options.signal,
387
- providerOptions: {
388
- google: { mediaResolution: "MEDIA_RESOLUTION_HIGH" },
389
- openai: { store: false },
390
- },
467
+ providerOptions: buildAgentProviderOptions(wrappedModel.modelId, this.thinkingEffort),
391
468
  });
392
469
  }
393
470
  catch (error) {
@@ -398,6 +475,21 @@ export class V3AgentHandler {
398
475
  agentStreamResult.result = resultPromise;
399
476
  return agentStreamResult;
400
477
  }
478
+ async emitFinalEvidence(state, finalAnswer, evidenceCallback) {
479
+ if (!evidenceCallback)
480
+ return;
481
+ const observation = await captureProbeEvidence({
482
+ v3: this.v3,
483
+ url: state.currentPageUrl,
484
+ logger: this.logger,
485
+ warningMessage: "Warning: final harness probe failed",
486
+ });
487
+ await evidenceCallback({
488
+ type: "final_answer",
489
+ ...finalAnswer,
490
+ observation,
491
+ });
492
+ }
401
493
  consolidateMetricsAndResult(startTime, state, inputMessages, result, maxSteps, output) {
402
494
  if (!state.finalMessage) {
403
495
  const allReasoning = state.collectedReasoning.join(" ").trim();
@@ -1 +1 @@
1
- {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { FlowLogger } from \"../flowlogger/FlowLogger.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n Variables,\n} from \"../types/public/agent.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"../types/private/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n MissingEnvironmentVariableError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\nimport {\n CaptchaSolver,\n CAPTCHA_SOLVED_MSG,\n CAPTCHA_ERRORED_MSG,\n} from \"../agent/utils/captchaSolver.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n private captchaAutoSolveEnabled: boolean;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n captchaAutoSolveEnabled?: boolean,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n this.captchaAutoSolveEnabled = captchaAutoSolveEnabled ?? false;\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n captchasAutoSolve: this.v3.isCaptchaAutoSolveEnabled,\n excludeTools: options.excludeTools,\n variables: options.variables,\n useSearch: options.useSearch,\n });\n\n if (options.useSearch) {\n const bbApiKey = this.v3.browserbaseApiKey;\n if (!bbApiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"agent search (useSearch: true)\",\n );\n }\n }\n\n const tools = this.createTools(\n options.excludeTools,\n options.variables,\n options.toolTimeout,\n options.useSearch,\n );\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...FlowLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n const isHybridCapable = HYBRID_CAPABLE_MODEL_PATTERNS.some((pattern) =>\n baseModel.modelId.includes(pattern),\n );\n if (this.mode === \"hybrid\" && !isHybridCapable) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n captchaSolver?: CaptchaSolver,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (captchaSolver) {\n if (captchaSolver.isSolving()) {\n this.logger({\n category: \"agent\",\n message:\n \"Captcha detected — waiting for Browserbase to solve it before continuing\",\n level: 1,\n });\n }\n await captchaSolver.waitIfSolving();\n const { solved, errored } = captchaSolver.consumeSolveResult();\n if (solved) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_SOLVED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solved — injected notification into agent message stream\",\n level: 1,\n });\n }\n if (errored) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_ERRORED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solver failed — injected error notification into agent message stream\",\n level: 1,\n });\n }\n }\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n\n let messages: ModelMessage[] = [];\n let captchaSolver: CaptchaSolver | undefined;\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n abortSignal: preparedOptions.signal,\n providerOptions: {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n },\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n doneResult.output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (\n error instanceof StreamingCallbacksInNonStreamingModeError ||\n error instanceof MissingEnvironmentVariableError\n ) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n } finally {\n captchaSolver?.dispose();\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n let captchaSolver: CaptchaSolver | undefined;\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n let streamResult: ReturnType<typeof this.llmClient.streamText>;\n try {\n streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, callbacks?.onStepFinish),\n onError: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [\n ...messages,\n ...(event.response?.messages || []),\n ];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n ).then((doneResult) => {\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n doneResult.output,\n );\n resolveResult(result);\n });\n },\n onAbort: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n },\n });\n } catch (error) {\n captchaSolver?.dispose();\n throw error;\n }\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(\n excludeTools?: string[],\n variables?: Variables,\n toolTimeout?: number,\n useSearch?: boolean,\n ) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n variables,\n toolTimeout,\n useSearch,\n browserbaseApiKey: useSearch ? this.v3.browserbaseApiKey : undefined,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n const doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"v3AgentHandler.js","sourceRoot":"","sources":["../../../../../lib/v3/handlers/v3AgentHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { createAgentTools } from \"../agent/tools/index.js\";\nimport { buildAgentSystemPrompt } from \"../agent/prompts/agentSystemPrompt.js\";\nimport { LogLine } from \"../types/public/logs.js\";\nimport { V3 } from \"../v3.js\";\nimport {\n ModelMessage,\n ToolSet,\n wrapLanguageModel,\n stepCountIs,\n LanguageModel,\n type LanguageModelUsage,\n type StepResult,\n type GenerateTextOnStepFinishCallback,\n type StreamTextOnStepFinishCallback,\n type PrepareStepFunction,\n} from \"ai\";\nimport { StagehandZodObject } from \"../zodCompat.js\";\nimport { processMessages } from \"../agent/utils/messageProcessing.js\";\nimport { LLMClient } from \"../llm/LLMClient.js\";\nimport { FlowLogger } from \"../flowlogger/FlowLogger.js\";\nimport {\n anthropicAdaptiveThinkingOptions,\n anthropicFallbacksOptions,\n} from \"../llm/anthropicOptions.js\";\nimport {\n AgentExecuteOptions,\n AgentStreamExecuteOptions,\n AgentExecuteOptionsBase,\n AgentResult,\n AgentContext,\n AgentState,\n AgentStreamResult,\n AgentStreamCallbacks,\n AgentToolMode,\n AgentModelConfig,\n Variables,\n} from \"../types/public/agent.js\";\nimport type { AgentEvidenceCallback } from \"../types/public/agentEvidenceEvents.js\";\nimport { HYBRID_CAPABLE_MODEL_PATTERNS } from \"../types/private/agent.js\";\nimport { V3FunctionName } from \"../types/public/methods.js\";\nimport { mapToolResultToActions } from \"../agent/utils/actionMapping.js\";\nimport {\n MissingLLMConfigurationError,\n MissingEnvironmentVariableError,\n StreamingCallbacksInNonStreamingModeError,\n AgentAbortError,\n} from \"../types/public/sdkErrors.js\";\nimport { handleDoneToolCall } from \"../agent/utils/handleDoneToolCall.js\";\nimport {\n captureProbeEvidence,\n emitPostStepProbeEvidence,\n} from \"../agent/utils/postStepProbeEvidence.js\";\nimport { wrapEvidenceCallback } from \"../agent/utils/wrapEvidenceCallback.js\";\nimport { inferToolOutput } from \"../agent/utils/toolOutputEvidence.js\";\nimport {\n CaptchaSolver,\n CAPTCHA_SOLVED_MSG,\n CAPTCHA_ERRORED_MSG,\n} from \"../agent/utils/captchaSolver.js\";\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\ntype FinalAnswerDraft = {\n message: string;\n output?: Record<string, unknown>;\n};\n\ninterface StepHandlerOptions {\n userCallback?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>;\n evidenceCallback?: AgentEvidenceCallback;\n onFinalAnswer?: (answer: FinalAnswerDraft) => void;\n}\n\n/**\n * Prepends a system message with cache control to the messages array.\n * The cache control providerOptions are used by Anthropic and ignored by other providers.\n */\nfunction prependSystemMessage(\n systemPrompt: string,\n messages: ModelMessage[],\n): ModelMessage[] {\n return [\n {\n role: \"system\",\n content: systemPrompt,\n providerOptions: {\n anthropic: {\n cacheControl: { type: \"ephemeral\" },\n },\n },\n },\n ...messages,\n ];\n}\n\n/**\n * Request-level providerOptions for the hybrid/DOM agent loop.\n *\n * Anthropic models that support adaptive thinking (Claude 4.6+) get it\n * enabled here — previously the hybrid path sent no thinking config for\n * Anthropic at all. Fable 5 additionally opts into the API's server-side\n * refusal fallback.\n */\nfunction buildAgentProviderOptions(modelId: string, thinkingEffort?: string) {\n const anthropic = {\n ...(anthropicAdaptiveThinkingOptions(modelId, thinkingEffort) ?? {}),\n ...(anthropicFallbacksOptions(modelId) ?? {}),\n };\n return {\n google: { mediaResolution: \"MEDIA_RESOLUTION_HIGH\" },\n openai: { store: false },\n ...(Object.keys(anthropic).length > 0 ? { anthropic } : {}),\n };\n}\n\nexport class V3AgentHandler {\n private v3: V3;\n private logger: (message: LogLine) => void;\n private llmClient: LLMClient;\n private executionModel?: string | AgentModelConfig;\n private systemInstructions?: string;\n private mcpTools?: ToolSet;\n private mode: AgentToolMode;\n private captchaAutoSolveEnabled: boolean;\n private thinkingEffort?: string;\n\n constructor(\n v3: V3,\n logger: (message: LogLine) => void,\n llmClient: LLMClient,\n executionModel?: string | AgentModelConfig,\n systemInstructions?: string,\n mcpTools?: ToolSet,\n mode?: AgentToolMode,\n captchaAutoSolveEnabled?: boolean,\n thinkingEffort?: string,\n ) {\n this.v3 = v3;\n this.logger = logger;\n this.llmClient = llmClient;\n this.executionModel = executionModel;\n this.systemInstructions = systemInstructions;\n this.mcpTools = mcpTools;\n this.mode = mode ?? \"dom\";\n this.captchaAutoSolveEnabled = captchaAutoSolveEnabled ?? false;\n this.thinkingEffort = thinkingEffort;\n }\n\n private async prepareAgent(\n instructionOrOptions: string | AgentExecuteOptionsBase,\n ): Promise<AgentContext> {\n try {\n const options =\n typeof instructionOrOptions === \"string\"\n ? { instruction: instructionOrOptions }\n : instructionOrOptions;\n\n const maxSteps = options.maxSteps || 20;\n\n // Get the initial page URL first (needed for the system prompt)\n const initialPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Build the system prompt with mode-aware tool guidance\n const systemPrompt = buildAgentSystemPrompt({\n url: initialPageUrl,\n executionInstruction: options.instruction,\n mode: this.mode,\n systemInstructions: this.systemInstructions,\n captchasAutoSolve: this.v3.isCaptchaAutoSolveEnabled,\n excludeTools: options.excludeTools,\n variables: options.variables,\n useSearch: options.useSearch,\n });\n\n if (options.useSearch) {\n const bbApiKey = this.v3.browserbaseApiKey;\n if (!bbApiKey) {\n throw new MissingEnvironmentVariableError(\n \"BROWSERBASE_API_KEY\",\n \"agent search (useSearch: true)\",\n );\n }\n }\n\n const tools = this.createTools(\n options.excludeTools,\n options.variables,\n options.toolTimeout,\n options.useSearch,\n );\n const allTools: ToolSet = { ...tools, ...this.mcpTools };\n\n // Use provided messages for continuation, or start fresh with the instruction\n const messages: ModelMessage[] = options.messages?.length\n ? [...options.messages, { role: \"user\", content: options.instruction }]\n : [{ role: \"user\", content: options.instruction }];\n\n if (!this.llmClient?.getLanguageModel) {\n throw new MissingLLMConfigurationError();\n }\n const baseModel = this.llmClient.getLanguageModel();\n //to do - we likely do not need middleware anymore\n const wrappedModel = wrapLanguageModel({\n model: baseModel,\n middleware: {\n ...FlowLogger.createLlmLoggingMiddleware(baseModel.modelId),\n },\n });\n\n const isHybridCapable = HYBRID_CAPABLE_MODEL_PATTERNS.some((pattern) =>\n baseModel.modelId.includes(pattern),\n );\n if (this.mode === \"hybrid\" && !isHybridCapable) {\n this.logger({\n category: \"agent\",\n message: `Warning: \"${baseModel.modelId}\" may not perform well in hybrid mode. See recommended models: https://docs.stagehand.dev/v3/basics/agent#hybrid-mode`,\n level: 0,\n });\n }\n\n return {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n };\n } catch (error) {\n this.logger({\n category: \"agent\",\n message: `failed to prepare agent: ${error}`,\n level: 0,\n });\n throw error;\n }\n }\n private createPrepareStep(\n userCallback?: PrepareStepFunction<ToolSet>,\n captchaSolver?: CaptchaSolver,\n ): PrepareStepFunction<ToolSet> {\n return async (options) => {\n processMessages(options.messages);\n if (captchaSolver) {\n if (captchaSolver.isSolving()) {\n this.logger({\n category: \"agent\",\n message:\n \"Captcha detected — waiting for Browserbase to solve it before continuing\",\n level: 1,\n });\n }\n await captchaSolver.waitIfSolving();\n const { solved, errored } = captchaSolver.consumeSolveResult();\n if (solved) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_SOLVED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solved — injected notification into agent message stream\",\n level: 1,\n });\n }\n if (errored) {\n options.messages.push({\n role: \"user\",\n content: CAPTCHA_ERRORED_MSG,\n });\n this.logger({\n category: \"agent\",\n message:\n \"Captcha solver failed — injected error notification into agent message stream\",\n level: 1,\n });\n }\n }\n if (userCallback) {\n return userCallback(options);\n }\n return options;\n };\n }\n\n private createStepHandler(\n state: AgentState,\n { userCallback, evidenceCallback, onFinalAnswer }: StepHandlerOptions,\n ) {\n return async (event: StepResult<ToolSet>) => {\n this.logger({\n category: \"agent\",\n message: `Step finished: ${event.finishReason}`,\n level: 2,\n });\n\n let lastFinalAnswer: FinalAnswerDraft | undefined;\n\n if (event.toolCalls && event.toolCalls.length > 0) {\n for (let i = 0; i < event.toolCalls.length; i++) {\n const toolCall = event.toolCalls[i];\n const args = toolCall.input;\n const toolResult = event.toolResults?.[i];\n\n if (event.text && event.text.length > 0) {\n state.collectedReasoning.push(event.text);\n this.logger({\n category: \"agent\",\n message: `reasoning: ${event.text}`,\n level: 1,\n });\n }\n\n if (toolCall.toolName === \"done\") {\n state.completed = true;\n if (args?.taskComplete) {\n const doneReasoning = args.reasoning;\n const allReasoning = state.collectedReasoning.join(\" \");\n state.finalMessage = doneReasoning\n ? `${allReasoning} ${doneReasoning}`.trim()\n : allReasoning || \"Task completed successfully\";\n }\n lastFinalAnswer = {\n message: state.finalMessage,\n output:\n typeof args?.output === \"object\" && args?.output !== null\n ? (args.output as Record<string, unknown>)\n : undefined,\n };\n }\n const mappedActions = mapToolResultToActions({\n toolCallName: toolCall.toolName,\n toolResult,\n args,\n reasoning: event.text || undefined,\n });\n\n for (const action of mappedActions) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n await evidenceCallback?.({\n type: \"step_finished\",\n actionName: toolCall.toolName,\n actionArgs:\n typeof args === \"object\" && args !== null\n ? (args as Record<string, unknown>)\n : {},\n reasoning: event.text ?? \"\",\n toolOutput: inferToolOutput(toolResult),\n });\n }\n state.currentPageUrl = (await this.v3.context.awaitActivePage()).url();\n\n // Harness probe — one screenshot / a11y snapshot per AI SDK step.\n // The recorder applies the probe to every step_finished received\n // since the previous probe, so a multi-tool turn shares the same\n // post-turn observation.\n await emitPostStepProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n evidenceCallback,\n logger: this.logger,\n warningMessage: \"Warning: harness probe failed\",\n });\n }\n\n if (lastFinalAnswer) {\n onFinalAnswer?.(lastFinalAnswer);\n }\n\n if (userCallback) {\n await userCallback(event);\n }\n };\n }\n\n public async execute(\n instructionOrOptions: string | AgentExecuteOptions,\n ): Promise<AgentResult> {\n const startTime = Date.now();\n const options =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n const signal = options?.signal;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n options?.highlightCursor ?? this.mode === \"hybrid\";\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: \"\",\n };\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n let messages: ModelMessage[] = [];\n let captchaSolver: CaptchaSolver | undefined;\n\n try {\n const {\n options: preparedOptions,\n maxSteps,\n systemPrompt,\n allTools,\n messages: preparedMessages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n messages = preparedMessages;\n state.currentPageUrl = initialPageUrl;\n\n const callbacks = (instructionOrOptions as AgentExecuteOptions).callbacks;\n\n if (callbacks) {\n const streamingOnlyCallbacks = [\n \"onChunk\",\n \"onFinish\",\n \"onError\",\n \"onAbort\",\n ];\n const invalidCallbacks = streamingOnlyCallbacks.filter(\n (name) => callbacks[name as keyof typeof callbacks] != null,\n );\n if (invalidCallbacks.length > 0) {\n throw new StreamingCallbacksInNonStreamingModeError(invalidCallbacks);\n }\n }\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n const result = await this.llmClient.generateText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n abortSignal: preparedOptions.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n this.thinkingEffort,\n ),\n });\n\n const allMessages = [...messages, ...(result.response?.messages || [])];\n const doneResult = await this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n preparedOptions.instruction,\n preparedOptions.output,\n this.logger,\n );\n const output = doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n\n return this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n result,\n maxSteps,\n output,\n );\n } catch (error) {\n // Re-throw validation errors that should propagate to the caller\n if (\n error instanceof StreamingCallbacksInNonStreamingModeError ||\n error instanceof MissingEnvironmentVariableError\n ) {\n throw error;\n }\n\n // Re-throw abort errors wrapped in AgentAbortError for consistent error typing\n if (signal?.aborted) {\n const reason = signal.reason ? String(signal.reason) : \"aborted\";\n throw new AgentAbortError(reason);\n }\n\n const errorMessage = getErrorMessage(error);\n this.logger({\n category: \"agent\",\n message: `Error executing agent task: ${errorMessage}`,\n level: 0,\n });\n\n // For non-abort errors, return a failure result instead of throwing\n return {\n success: false,\n actions: state.actions,\n message: `Failed to execute task: ${errorMessage}`,\n completed: false,\n messages,\n };\n } finally {\n captchaSolver?.dispose();\n }\n }\n\n public async stream(\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ): Promise<AgentStreamResult> {\n const streamOptions =\n typeof instructionOrOptions === \"object\" ? instructionOrOptions : null;\n\n // Highlight cursor defaults to true for hybrid mode, can be overridden\n const shouldHighlightCursor =\n streamOptions?.highlightCursor ?? this.mode === \"hybrid\";\n let finalAnswerFromDoneTool: FinalAnswerDraft | undefined;\n\n const {\n options,\n maxSteps,\n systemPrompt,\n allTools,\n messages,\n wrappedModel,\n initialPageUrl,\n } = await this.prepareAgent(instructionOrOptions);\n\n // Enable cursor overlay for hybrid mode (coordinate-based interactions)\n if (shouldHighlightCursor && this.mode === \"hybrid\") {\n const page = await this.v3.context.awaitActivePage();\n await page.enableCursorOverlay().catch(() => {});\n }\n\n // Set up captcha solver for Browserbase environments\n let captchaSolver: CaptchaSolver | undefined;\n if (this.captchaAutoSolveEnabled) {\n captchaSolver = new CaptchaSolver();\n captchaSolver.init(() => this.v3.context.awaitActivePage());\n }\n\n const callbacks = (instructionOrOptions as AgentStreamExecuteOptions)\n .callbacks as AgentStreamCallbacks | undefined;\n\n const state: AgentState = {\n collectedReasoning: [],\n actions: [],\n finalMessage: \"\",\n completed: false,\n currentPageUrl: initialPageUrl,\n };\n const startTime = Date.now();\n\n let resolveResult: (value: AgentResult | PromiseLike<AgentResult>) => void;\n let rejectResult: (reason: unknown) => void;\n const resultPromise = new Promise<AgentResult>((resolve, reject) => {\n resolveResult = resolve;\n rejectResult = reject;\n });\n\n const handleError = (error: unknown) => {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n this.logger({\n category: \"agent\",\n message: `Error during streaming: ${errorMessage}`,\n level: 0,\n });\n rejectResult(error);\n };\n\n const evidenceCallback = wrapEvidenceCallback(\n callbacks?.onEvidence,\n this.logger,\n );\n\n let streamResult: ReturnType<typeof this.llmClient.streamText>;\n try {\n streamResult = this.llmClient.streamText({\n model: wrappedModel,\n messages: prependSystemMessage(systemPrompt, messages),\n tools: allTools,\n stopWhen: (result) => this.handleStop(result, maxSteps),\n toolChoice: \"auto\",\n prepareStep: this.createPrepareStep(\n callbacks?.prepareStep,\n captchaSolver,\n ),\n onStepFinish: this.createStepHandler(state, {\n userCallback: callbacks?.onStepFinish,\n evidenceCallback,\n onFinalAnswer: (answer) => {\n finalAnswerFromDoneTool = answer;\n },\n }),\n onError: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onError) {\n callbacks.onError(event);\n }\n handleError(event.error);\n },\n onChunk: callbacks?.onChunk,\n onFinish: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onFinish) {\n callbacks.onFinish(event);\n }\n\n const allMessages = [\n ...messages,\n ...(event.response?.messages || []),\n ];\n this.ensureDone(\n state,\n wrappedModel,\n allMessages,\n options.instruction,\n options.output,\n this.logger,\n )\n .then(async (doneResult) => {\n const output =\n doneResult.output ?? finalAnswerFromDoneTool?.output;\n await this.emitFinalEvidence(\n state,\n {\n message: state.finalMessage,\n output,\n },\n evidenceCallback,\n );\n const result = this.consolidateMetricsAndResult(\n startTime,\n state,\n doneResult.messages,\n event,\n maxSteps,\n output,\n );\n resolveResult(result);\n })\n .catch(handleError);\n },\n onAbort: (event) => {\n captchaSolver?.dispose();\n if (callbacks?.onAbort) {\n callbacks.onAbort(event);\n }\n // Reject the result promise with AgentAbortError when stream is aborted\n const reason = options.signal?.reason\n ? String(options.signal.reason)\n : \"Stream was aborted\";\n rejectResult(new AgentAbortError(reason));\n },\n abortSignal: options.signal,\n providerOptions: buildAgentProviderOptions(\n wrappedModel.modelId,\n this.thinkingEffort,\n ),\n });\n } catch (error) {\n captchaSolver?.dispose();\n throw error;\n }\n\n const agentStreamResult = streamResult as AgentStreamResult;\n agentStreamResult.result = resultPromise;\n return agentStreamResult;\n }\n\n private async emitFinalEvidence(\n state: AgentState,\n finalAnswer: { message: string; output?: Record<string, unknown> },\n evidenceCallback?: AgentEvidenceCallback,\n ): Promise<void> {\n if (!evidenceCallback) return;\n\n const observation = await captureProbeEvidence({\n v3: this.v3,\n url: state.currentPageUrl,\n logger: this.logger,\n warningMessage: \"Warning: final harness probe failed\",\n });\n await evidenceCallback({\n type: \"final_answer\",\n ...finalAnswer,\n observation,\n });\n }\n\n private consolidateMetricsAndResult(\n startTime: number,\n state: AgentState,\n inputMessages: ModelMessage[],\n result: {\n text?: string;\n totalUsage?: LanguageModelUsage;\n response?: { messages?: ModelMessage[] };\n steps?: StepResult<ToolSet>[];\n },\n maxSteps?: number,\n output?: Record<string, unknown>,\n ): AgentResult {\n if (!state.finalMessage) {\n const allReasoning = state.collectedReasoning.join(\" \").trim();\n\n if (!state.completed && maxSteps && result.steps?.length >= maxSteps) {\n this.logger({\n category: \"agent\",\n message: `Agent stopped: reached maximum steps (${maxSteps})`,\n level: 1,\n });\n state.finalMessage = `Agent stopped: reached maximum steps (${maxSteps})`;\n } else {\n state.finalMessage = allReasoning || result.text || \"\";\n }\n }\n\n const endTime = Date.now();\n const inferenceTimeMs = endTime - startTime;\n if (result.totalUsage) {\n this.v3.updateMetrics(\n V3FunctionName.AGENT,\n result.totalUsage.inputTokens || 0,\n result.totalUsage.outputTokens || 0,\n result.totalUsage.reasoningTokens || 0,\n result.totalUsage.cachedInputTokens || 0,\n inferenceTimeMs,\n );\n }\n\n return {\n success: state.completed,\n message: state.finalMessage || \"Task execution completed\",\n actions: state.actions,\n completed: state.completed,\n output,\n usage: result.totalUsage\n ? {\n input_tokens: result.totalUsage.inputTokens || 0,\n output_tokens: result.totalUsage.outputTokens || 0,\n reasoning_tokens: result.totalUsage.reasoningTokens || 0,\n cached_input_tokens: result.totalUsage.cachedInputTokens || 0,\n inference_time_ms: inferenceTimeMs,\n }\n : undefined,\n messages: inputMessages,\n };\n }\n\n private createTools(\n excludeTools?: string[],\n variables?: Variables,\n toolTimeout?: number,\n useSearch?: boolean,\n ) {\n const provider = this.llmClient?.getLanguageModel?.()?.provider;\n return createAgentTools(this.v3, {\n executionModel: this.executionModel,\n logger: this.logger,\n mode: this.mode,\n provider,\n excludeTools,\n variables,\n toolTimeout,\n useSearch,\n browserbaseApiKey: useSearch ? this.v3.browserbaseApiKey : undefined,\n });\n }\n\n private handleStop(\n result: Parameters<ReturnType<typeof stepCountIs>>[0],\n maxSteps: number,\n ): boolean | PromiseLike<boolean> {\n const lastStep = result.steps[result.steps.length - 1];\n if (lastStep?.toolCalls?.some((tc) => tc.toolName === \"done\")) {\n return true;\n }\n return stepCountIs(maxSteps)(result);\n }\n\n /**\n * Ensures the done tool is called at the end of agent execution.\n * Returns the messages and any extracted output from the done call.\n */\n private async ensureDone(\n state: AgentState,\n model: LanguageModel,\n messages: ModelMessage[],\n instruction: string,\n outputSchema?: StagehandZodObject,\n logger?: (message: LogLine) => void,\n ): Promise<{ messages: ModelMessage[]; output?: Record<string, unknown> }> {\n if (state.completed) return { messages };\n\n const doneResult = await handleDoneToolCall({\n model,\n inputMessages: messages,\n instruction,\n outputSchema,\n logger,\n });\n\n state.completed = doneResult.taskComplete;\n state.finalMessage = doneResult.reasoning;\n\n const doneAction = mapToolResultToActions({\n toolCallName: \"done\",\n toolResult: {\n success: true,\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n args: {\n reasoning: doneResult.reasoning,\n taskComplete: doneResult.taskComplete,\n },\n reasoning: doneResult.reasoning,\n });\n\n for (const action of doneAction) {\n action.pageUrl = state.currentPageUrl;\n action.timestamp = Date.now();\n state.actions.push(action);\n }\n\n return {\n messages: [...messages, ...doneResult.messages],\n output: doneResult.output,\n };\n }\n}\n"]}
@@ -13,6 +13,8 @@ export declare class V3CuaAgentHandler {
13
13
  private captchaSolver;
14
14
  private captchaClickGuardRemaining;
15
15
  private currentInstruction;
16
+ private lastAgentScreenshotUrl?;
17
+ private evidenceCallback?;
16
18
  constructor(v3: V3, logger: (message: LogLine) => void, options: AgentHandlerOptions, tools?: ToolSet);
17
19
  /**
18
20
  * Ensures the V3 context is still available (not closed).
@@ -34,5 +36,14 @@ export declare class V3CuaAgentHandler {
34
36
  captureAndSendScreenshot(): Promise<unknown>;
35
37
  private handleCaptchaSolveResult;
36
38
  private shouldSkipSolvedCaptchaInteraction;
39
+ /**
40
+ * Emit a pre-action CUA screenshot — the exact buffer the model received
41
+ * as input. Tier-1 evidence (agent-mirrored); the tier-2 probe is taken
42
+ * separately in emitCuaActionStep after the action runs, so the recorder
43
+ * can compare what the model saw against what the page actually showed
44
+ * once the keystrokes/clicks landed.
45
+ */
46
+ private emitCuaScreenshot;
47
+ private emitCuaActionStep;
37
48
  private injectCursor;
38
49
  }