@browserbasehq/orca 3.1.0-patch.4 → 3.2.0-middleware.2

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 (495) hide show
  1. package/dist/cjs/lib/inference.d.ts +3 -1
  2. package/dist/cjs/lib/inference.js +4 -7
  3. package/dist/cjs/lib/inference.js.map +1 -1
  4. package/dist/cjs/lib/prompt.d.ts +1 -1
  5. package/dist/cjs/lib/prompt.js +24 -18
  6. package/dist/cjs/lib/prompt.js.map +1 -1
  7. package/dist/cjs/lib/utils.d.ts +1 -0
  8. package/dist/cjs/lib/utils.js +4 -0
  9. package/dist/cjs/lib/utils.js.map +1 -1
  10. package/dist/cjs/lib/v3/agent/AgentClient.d.ts +8 -0
  11. package/dist/cjs/lib/v3/agent/AgentClient.js +13 -0
  12. package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -1
  13. package/dist/cjs/lib/v3/agent/AgentProvider.js +0 -1
  14. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  15. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +6 -7
  16. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  17. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +6 -7
  18. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  19. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +1 -0
  20. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  21. package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +10 -6
  22. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +107 -18
  23. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  24. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +4 -2
  25. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +11 -12
  26. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  27. package/dist/cjs/lib/v3/agent/tools/act.d.ts +1 -1
  28. package/dist/cjs/lib/v3/agent/tools/act.js +11 -4
  29. package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -1
  30. package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  31. package/dist/cjs/lib/v3/agent/tools/ariaTree.js +49 -22
  32. package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -1
  33. package/dist/cjs/lib/v3/agent/tools/{search.js → braveSearch.js} +1 -1
  34. package/dist/cjs/lib/v3/agent/tools/braveSearch.js.map +1 -0
  35. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  36. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js +70 -0
  37. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  38. package/dist/cjs/lib/v3/agent/tools/click.js +23 -31
  39. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -1
  40. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -1
  41. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js +22 -30
  42. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  43. package/dist/cjs/lib/v3/agent/tools/extract.d.ts +2 -2
  44. package/dist/cjs/lib/v3/agent/tools/extract.js +7 -3
  45. package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -1
  46. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +30 -30
  47. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  48. package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +7 -2
  49. package/dist/cjs/lib/v3/agent/tools/fillform.js +56 -45
  50. package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -1
  51. package/dist/cjs/lib/v3/agent/tools/index.d.ts +19 -3
  52. package/dist/cjs/lib/v3/agent/tools/index.js +63 -11
  53. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -1
  54. package/dist/cjs/lib/v3/agent/tools/keys.d.ts +1 -1
  55. package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -1
  56. package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +8 -0
  57. package/dist/cjs/lib/v3/agent/tools/screenshot.js +32 -15
  58. package/dist/cjs/lib/v3/agent/tools/screenshot.js.map +1 -1
  59. package/dist/cjs/lib/v3/agent/tools/scroll.js +12 -0
  60. package/dist/cjs/lib/v3/agent/tools/scroll.js.map +1 -1
  61. package/dist/cjs/lib/v3/agent/tools/type.js +23 -31
  62. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -1
  63. package/dist/cjs/lib/v3/agent/tools/wait.js +6 -0
  64. package/dist/cjs/lib/v3/agent/tools/wait.js.map +1 -1
  65. package/dist/cjs/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
  66. package/dist/cjs/lib/v3/agent/utils/captchaSolver.js +175 -0
  67. package/dist/cjs/lib/v3/agent/utils/captchaSolver.js.map +1 -0
  68. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
  69. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  70. package/dist/cjs/lib/v3/agent/utils/variables.d.ts +5 -0
  71. package/dist/cjs/lib/v3/agent/utils/variables.js +9 -0
  72. package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -1
  73. package/dist/cjs/lib/v3/api.d.ts +2 -2
  74. package/dist/cjs/lib/v3/api.js +1 -1
  75. package/dist/cjs/lib/v3/api.js.map +1 -1
  76. package/dist/cjs/lib/v3/cache/ActCache.d.ts +0 -1
  77. package/dist/cjs/lib/v3/cache/ActCache.js +2 -18
  78. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -1
  79. package/dist/cjs/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  80. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js +30 -0
  81. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  82. package/dist/cjs/lib/v3/flowlogger/EventSink.d.ts +44 -0
  83. package/dist/cjs/lib/v3/flowlogger/EventSink.js +217 -0
  84. package/dist/cjs/lib/v3/flowlogger/EventSink.js.map +1 -0
  85. package/dist/cjs/lib/v3/flowlogger/EventStore.d.ts +26 -0
  86. package/dist/cjs/lib/v3/flowlogger/EventStore.js +135 -0
  87. package/dist/cjs/lib/v3/flowlogger/EventStore.js.map +1 -0
  88. package/dist/cjs/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
  89. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js +591 -0
  90. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  91. package/dist/cjs/lib/v3/flowlogger/prettify.d.ts +6 -0
  92. package/dist/cjs/lib/v3/flowlogger/prettify.js +395 -0
  93. package/dist/cjs/lib/v3/flowlogger/prettify.js.map +1 -0
  94. package/dist/cjs/lib/v3/handlers/actHandler.js +1 -2
  95. package/dist/cjs/lib/v3/handlers/actHandler.js.map +1 -1
  96. package/dist/cjs/lib/v3/handlers/extractHandler.js +2 -2
  97. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -1
  98. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +43 -57
  99. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  100. package/dist/cjs/lib/v3/handlers/observeHandler.js +3 -3
  101. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -1
  102. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
  103. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +130 -91
  104. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  105. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
  106. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +134 -14
  107. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  108. package/dist/cjs/lib/v3/index.d.ts +2 -1
  109. package/dist/cjs/lib/v3/launch/browserbase.d.ts +1 -1
  110. package/dist/cjs/lib/v3/launch/browserbase.js +4 -9
  111. package/dist/cjs/lib/v3/launch/browserbase.js.map +1 -1
  112. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +5 -2
  113. package/dist/cjs/lib/v3/llm/LLMProvider.js +14 -11
  114. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -1
  115. package/dist/cjs/lib/v3/llm/aisdk.d.ts +3 -1
  116. package/dist/cjs/lib/v3/llm/aisdk.js +24 -28
  117. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  118. package/dist/cjs/lib/v3/runtimePaths.js +2 -1
  119. package/dist/cjs/lib/v3/runtimePaths.js.map +1 -1
  120. package/dist/cjs/lib/v3/shutdown/supervisor.js +2 -2
  121. package/dist/cjs/lib/v3/shutdown/supervisor.js.map +1 -1
  122. package/dist/cjs/lib/v3/timeoutConfig.d.ts +1 -1
  123. package/dist/cjs/lib/v3/timeoutConfig.js +5 -0
  124. package/dist/cjs/lib/v3/timeoutConfig.js.map +1 -1
  125. package/dist/cjs/lib/v3/types/private/cache.d.ts +0 -1
  126. package/dist/cjs/lib/v3/types/private/cache.js.map +1 -1
  127. package/dist/cjs/lib/v3/types/private/handlers.d.ts +1 -0
  128. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -1
  129. package/dist/cjs/lib/v3/types/private/shutdown.d.ts +1 -1
  130. package/dist/cjs/lib/v3/types/private/shutdown.js.map +1 -1
  131. package/dist/cjs/lib/v3/types/public/agent.d.ts +28 -3
  132. package/dist/cjs/lib/v3/types/public/agent.js +0 -1
  133. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  134. package/dist/cjs/lib/v3/types/public/api.d.ts +27 -7
  135. package/dist/cjs/lib/v3/types/public/api.js +42 -14
  136. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  137. package/dist/cjs/lib/v3/types/public/methods.d.ts +1 -0
  138. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -1
  139. package/dist/cjs/lib/v3/types/public/model.d.ts +14 -3
  140. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  141. package/dist/cjs/lib/v3/types/public/options.d.ts +8 -0
  142. package/dist/cjs/lib/v3/types/public/options.js.map +1 -1
  143. package/dist/cjs/lib/v3/types/public/variables.d.ts +7 -0
  144. package/dist/cjs/lib/v3/types/public/variables.js +22 -0
  145. package/dist/cjs/lib/v3/types/public/variables.js.map +1 -0
  146. package/dist/cjs/lib/v3/understudy/cdp.d.ts +8 -13
  147. package/dist/cjs/lib/v3/understudy/cdp.js +180 -20
  148. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -1
  149. package/dist/cjs/lib/v3/understudy/context.d.ts +1 -0
  150. package/dist/cjs/lib/v3/understudy/context.js +148 -62
  151. package/dist/cjs/lib/v3/understudy/context.js.map +1 -1
  152. package/dist/cjs/lib/v3/understudy/frame.js +23 -6
  153. package/dist/cjs/lib/v3/understudy/frame.js.map +1 -1
  154. package/dist/cjs/lib/v3/understudy/page.d.ts +13 -0
  155. package/dist/cjs/lib/v3/understudy/page.js +85 -22
  156. package/dist/cjs/lib/v3/understudy/page.js.map +1 -1
  157. package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  158. package/dist/cjs/lib/v3/understudy/screenshotUtils.js +0 -18
  159. package/dist/cjs/lib/v3/understudy/screenshotUtils.js.map +1 -1
  160. package/dist/cjs/lib/v3/v3.d.ts +26 -3
  161. package/dist/cjs/lib/v3/v3.js +250 -180
  162. package/dist/cjs/lib/v3/v3.js.map +1 -1
  163. package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js +56 -0
  164. package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
  165. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +6 -6
  166. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -1
  167. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +1 -1
  168. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +1 -1
  169. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +56 -0
  170. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
  171. package/dist/cjs/tests/integration/context-addInitScript.spec.js +104 -11
  172. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +1 -1
  173. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +1 -0
  174. package/dist/cjs/tests/integration/flowLogger.spec.js +714 -0
  175. package/dist/cjs/tests/integration/flowLogger.spec.js.map +1 -0
  176. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  177. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +219 -0
  178. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  179. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  180. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +85 -0
  181. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  182. package/dist/cjs/tests/integration/page-screenshot.spec.js +1 -1
  183. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +1 -1
  184. package/dist/cjs/tests/integration/testUtils.d.ts +33 -0
  185. package/dist/cjs/tests/integration/testUtils.js +144 -0
  186. package/dist/cjs/tests/integration/testUtils.js.map +1 -1
  187. package/dist/cjs/tests/integration/timeouts.spec.js +278 -0
  188. package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -1
  189. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
  190. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +285 -0
  191. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +1 -0
  192. package/dist/cjs/tests/unit/agent-execution-model.test.js +25 -3
  193. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -1
  194. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +1 -0
  195. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +23 -0
  196. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +1 -0
  197. package/dist/cjs/tests/unit/aisdk-reasoning-effort.test.d.ts +1 -0
  198. package/dist/cjs/tests/unit/aisdk-reasoning-effort.test.js +153 -0
  199. package/dist/cjs/tests/unit/aisdk-reasoning-effort.test.js.map +1 -0
  200. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +1 -0
  201. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +86 -0
  202. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +1 -0
  203. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +1 -0
  204. package/dist/cjs/tests/unit/api-variables-schema.test.js +37 -0
  205. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +1 -0
  206. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +20 -0
  207. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -1
  208. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +1 -0
  209. package/dist/cjs/tests/unit/captcha-solver.test.js +154 -0
  210. package/dist/cjs/tests/unit/captcha-solver.test.js.map +1 -0
  211. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  212. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +95 -0
  213. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  214. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  215. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +43 -0
  216. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  217. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  218. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +250 -0
  219. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  220. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +1 -0
  221. package/dist/cjs/tests/unit/llm-middleware.test.js +495 -0
  222. package/dist/cjs/tests/unit/llm-middleware.test.js.map +1 -0
  223. package/dist/cjs/tests/unit/model-deprecation.test.js +5 -8
  224. package/dist/cjs/tests/unit/model-deprecation.test.js.map +1 -1
  225. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +1 -0
  226. package/dist/cjs/tests/unit/openai-cua-client.test.js +71 -0
  227. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +1 -0
  228. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  229. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +92 -0
  230. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +1 -0
  231. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +1 -0
  232. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +19 -0
  233. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +1 -0
  234. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +13 -1
  235. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
  236. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -1
  237. package/dist/cjs/tests/unit/timeout-handlers.test.js +50 -0
  238. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -1
  239. package/dist/esm/lib/inference.d.ts +3 -1
  240. package/dist/esm/lib/inference.js +4 -7
  241. package/dist/esm/lib/inference.js.map +1 -1
  242. package/dist/esm/lib/prompt.d.ts +1 -1
  243. package/dist/esm/lib/prompt.js +24 -18
  244. package/dist/esm/lib/prompt.js.map +1 -1
  245. package/dist/esm/lib/utils.d.ts +1 -0
  246. package/dist/esm/lib/utils.js +3 -0
  247. package/dist/esm/lib/utils.js.map +1 -1
  248. package/dist/esm/lib/v3/agent/AgentClient.d.ts +8 -0
  249. package/dist/esm/lib/v3/agent/AgentClient.js +13 -0
  250. package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -1
  251. package/dist/esm/lib/v3/agent/AgentProvider.js +0 -1
  252. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  253. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +6 -7
  254. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  255. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +6 -7
  256. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  257. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +1 -0
  258. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  259. package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +10 -6
  260. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +107 -18
  261. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  262. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +4 -2
  263. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +11 -12
  264. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  265. package/dist/esm/lib/v3/agent/tools/act.d.ts +1 -1
  266. package/dist/esm/lib/v3/agent/tools/act.js +11 -4
  267. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
  268. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  269. package/dist/esm/lib/v3/agent/tools/ariaTree.js +49 -22
  270. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
  271. package/dist/esm/lib/v3/agent/tools/{search.js → braveSearch.js} +1 -1
  272. package/dist/esm/lib/v3/agent/tools/braveSearch.js.map +1 -0
  273. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  274. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js +66 -0
  275. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  276. package/dist/esm/lib/v3/agent/tools/click.js +23 -31
  277. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  278. package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -1
  279. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +22 -30
  280. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  281. package/dist/esm/lib/v3/agent/tools/extract.d.ts +2 -2
  282. package/dist/esm/lib/v3/agent/tools/extract.js +7 -3
  283. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
  284. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +30 -30
  285. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  286. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +7 -2
  287. package/dist/esm/lib/v3/agent/tools/fillform.js +56 -45
  288. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
  289. package/dist/esm/lib/v3/agent/tools/index.d.ts +19 -3
  290. package/dist/esm/lib/v3/agent/tools/index.js +63 -11
  291. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  292. package/dist/esm/lib/v3/agent/tools/keys.d.ts +1 -1
  293. package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -1
  294. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +8 -0
  295. package/dist/esm/lib/v3/agent/tools/screenshot.js +32 -15
  296. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -1
  297. package/dist/esm/lib/v3/agent/tools/scroll.js +12 -0
  298. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -1
  299. package/dist/esm/lib/v3/agent/tools/type.js +23 -31
  300. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  301. package/dist/esm/lib/v3/agent/tools/wait.js +6 -0
  302. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -1
  303. package/dist/esm/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
  304. package/dist/esm/lib/v3/agent/utils/captchaSolver.js +171 -0
  305. package/dist/esm/lib/v3/agent/utils/captchaSolver.js.map +1 -0
  306. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
  307. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  308. package/dist/esm/lib/v3/agent/utils/variables.d.ts +5 -0
  309. package/dist/esm/lib/v3/agent/utils/variables.js +8 -0
  310. package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -1
  311. package/dist/esm/lib/v3/api.d.ts +2 -2
  312. package/dist/esm/lib/v3/api.js +1 -1
  313. package/dist/esm/lib/v3/api.js.map +1 -1
  314. package/dist/esm/lib/v3/cache/ActCache.d.ts +0 -1
  315. package/dist/esm/lib/v3/cache/ActCache.js +2 -18
  316. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  317. package/dist/esm/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  318. package/dist/esm/lib/v3/flowlogger/EventEmitter.js +26 -0
  319. package/dist/esm/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  320. package/dist/esm/lib/v3/flowlogger/EventSink.d.ts +44 -0
  321. package/dist/esm/lib/v3/flowlogger/EventSink.js +206 -0
  322. package/dist/esm/lib/v3/flowlogger/EventSink.js.map +1 -0
  323. package/dist/esm/lib/v3/flowlogger/EventStore.d.ts +26 -0
  324. package/dist/esm/lib/v3/flowlogger/EventStore.js +127 -0
  325. package/dist/esm/lib/v3/flowlogger/EventStore.js.map +1 -0
  326. package/dist/esm/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
  327. package/dist/esm/lib/v3/flowlogger/FlowLogger.js +583 -0
  328. package/dist/esm/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  329. package/dist/esm/lib/v3/flowlogger/prettify.d.ts +6 -0
  330. package/dist/esm/lib/v3/flowlogger/prettify.js +389 -0
  331. package/dist/esm/lib/v3/flowlogger/prettify.js.map +1 -0
  332. package/dist/esm/lib/v3/handlers/actHandler.js +1 -2
  333. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -1
  334. package/dist/esm/lib/v3/handlers/extractHandler.js +2 -2
  335. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  336. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +43 -57
  337. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  338. package/dist/esm/lib/v3/handlers/observeHandler.js +3 -3
  339. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  340. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
  341. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +131 -92
  342. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  343. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
  344. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +134 -14
  345. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  346. package/dist/esm/lib/v3/index.d.ts +2 -1
  347. package/dist/esm/lib/v3/launch/browserbase.d.ts +1 -1
  348. package/dist/esm/lib/v3/launch/browserbase.js +4 -9
  349. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -1
  350. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +5 -2
  351. package/dist/esm/lib/v3/llm/LLMProvider.js +15 -12
  352. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  353. package/dist/esm/lib/v3/llm/aisdk.d.ts +3 -1
  354. package/dist/esm/lib/v3/llm/aisdk.js +24 -28
  355. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  356. package/dist/esm/lib/v3/runtimePaths.js +2 -1
  357. package/dist/esm/lib/v3/runtimePaths.js.map +1 -1
  358. package/dist/esm/lib/v3/shutdown/supervisor.js +2 -2
  359. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
  360. package/dist/esm/lib/v3/timeoutConfig.d.ts +1 -1
  361. package/dist/esm/lib/v3/timeoutConfig.js +5 -0
  362. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -1
  363. package/dist/esm/lib/v3/types/private/cache.d.ts +0 -1
  364. package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
  365. package/dist/esm/lib/v3/types/private/handlers.d.ts +1 -0
  366. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  367. package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -1
  368. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
  369. package/dist/esm/lib/v3/types/public/agent.d.ts +28 -3
  370. package/dist/esm/lib/v3/types/public/agent.js +0 -1
  371. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  372. package/dist/esm/lib/v3/types/public/api.d.ts +27 -7
  373. package/dist/esm/lib/v3/types/public/api.js +37 -12
  374. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  375. package/dist/esm/lib/v3/types/public/methods.d.ts +1 -0
  376. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  377. package/dist/esm/lib/v3/types/public/model.d.ts +14 -3
  378. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  379. package/dist/esm/lib/v3/types/public/options.d.ts +8 -0
  380. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  381. package/dist/esm/lib/v3/types/public/variables.d.ts +7 -0
  382. package/dist/esm/lib/v3/types/public/variables.js +19 -0
  383. package/dist/esm/lib/v3/types/public/variables.js.map +1 -0
  384. package/dist/esm/lib/v3/understudy/cdp.d.ts +8 -13
  385. package/dist/esm/lib/v3/understudy/cdp.js +181 -21
  386. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  387. package/dist/esm/lib/v3/understudy/context.d.ts +1 -0
  388. package/dist/esm/lib/v3/understudy/context.js +148 -62
  389. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  390. package/dist/esm/lib/v3/understudy/frame.js +23 -6
  391. package/dist/esm/lib/v3/understudy/frame.js.map +1 -1
  392. package/dist/esm/lib/v3/understudy/page.d.ts +13 -0
  393. package/dist/esm/lib/v3/understudy/page.js +87 -24
  394. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  395. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  396. package/dist/esm/lib/v3/understudy/screenshotUtils.js +0 -17
  397. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -1
  398. package/dist/esm/lib/v3/v3.d.ts +26 -3
  399. package/dist/esm/lib/v3/v3.js +250 -181
  400. package/dist/esm/lib/v3/v3.js.map +1 -1
  401. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.d.ts +1 -0
  402. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js +54 -0
  403. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
  404. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +6 -6
  405. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -1
  406. package/dist/esm/tests/integration/cdp-session-detached.spec.js +1 -1
  407. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +1 -1
  408. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +1 -0
  409. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +54 -0
  410. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +1 -0
  411. package/dist/esm/tests/integration/context-addInitScript.spec.js +104 -11
  412. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +1 -1
  413. package/dist/esm/tests/integration/flowLogger.spec.d.ts +1 -0
  414. package/dist/esm/tests/integration/flowLogger.spec.js +712 -0
  415. package/dist/esm/tests/integration/flowLogger.spec.js.map +1 -0
  416. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  417. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +217 -0
  418. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  419. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  420. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +83 -0
  421. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  422. package/dist/esm/tests/integration/page-screenshot.spec.js +1 -1
  423. package/dist/esm/tests/integration/page-screenshot.spec.js.map +1 -1
  424. package/dist/esm/tests/integration/testUtils.d.ts +33 -0
  425. package/dist/esm/tests/integration/testUtils.js +138 -0
  426. package/dist/esm/tests/integration/testUtils.js.map +1 -1
  427. package/dist/esm/tests/integration/timeouts.spec.js +278 -0
  428. package/dist/esm/tests/integration/timeouts.spec.js.map +1 -1
  429. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
  430. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +283 -0
  431. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +1 -0
  432. package/dist/esm/tests/unit/agent-execution-model.test.js +25 -3
  433. package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -1
  434. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +1 -0
  435. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +21 -0
  436. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +1 -0
  437. package/dist/esm/tests/unit/aisdk-reasoning-effort.test.d.ts +1 -0
  438. package/dist/esm/tests/unit/aisdk-reasoning-effort.test.js +118 -0
  439. package/dist/esm/tests/unit/aisdk-reasoning-effort.test.js.map +1 -0
  440. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +1 -0
  441. package/dist/esm/tests/unit/api-client-observe-variables.test.js +84 -0
  442. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +1 -0
  443. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +1 -0
  444. package/dist/esm/tests/unit/api-variables-schema.test.js +35 -0
  445. package/dist/esm/tests/unit/api-variables-schema.test.js.map +1 -0
  446. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +20 -0
  447. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -1
  448. package/dist/esm/tests/unit/captcha-solver.test.d.ts +1 -0
  449. package/dist/esm/tests/unit/captcha-solver.test.js +152 -0
  450. package/dist/esm/tests/unit/captcha-solver.test.js.map +1 -0
  451. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  452. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +93 -0
  453. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  454. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  455. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +41 -0
  456. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  457. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  458. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +248 -0
  459. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  460. package/dist/esm/tests/unit/llm-middleware.test.d.ts +1 -0
  461. package/dist/esm/tests/unit/llm-middleware.test.js +460 -0
  462. package/dist/esm/tests/unit/llm-middleware.test.js.map +1 -0
  463. package/dist/esm/tests/unit/model-deprecation.test.js +5 -8
  464. package/dist/esm/tests/unit/model-deprecation.test.js.map +1 -1
  465. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +1 -0
  466. package/dist/esm/tests/unit/openai-cua-client.test.js +69 -0
  467. package/dist/esm/tests/unit/openai-cua-client.test.js.map +1 -0
  468. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  469. package/dist/esm/tests/unit/page-extra-http-headers.test.js +90 -0
  470. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +1 -0
  471. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +1 -0
  472. package/dist/esm/tests/unit/prompt-observe-variables.test.js +17 -0
  473. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +1 -0
  474. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +13 -1
  475. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -1
  476. package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -1
  477. package/dist/esm/tests/unit/timeout-handlers.test.js +50 -0
  478. package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -1
  479. package/package.json +6 -4
  480. package/dist/cjs/lib/v3/agent/tools/search.js.map +0 -1
  481. package/dist/cjs/lib/v3/flowLogger.d.ts +0 -139
  482. package/dist/cjs/lib/v3/flowLogger.js +0 -881
  483. package/dist/cjs/lib/v3/flowLogger.js.map +0 -1
  484. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js +0 -209
  485. package/dist/cjs/tests/unit/rerender-missing-shadows.test.js.map +0 -1
  486. package/dist/esm/lib/v3/agent/tools/search.js.map +0 -1
  487. package/dist/esm/lib/v3/flowLogger.d.ts +0 -139
  488. package/dist/esm/lib/v3/flowLogger.js +0 -868
  489. package/dist/esm/lib/v3/flowLogger.js.map +0 -1
  490. package/dist/esm/tests/unit/rerender-missing-shadows.test.js +0 -207
  491. package/dist/esm/tests/unit/rerender-missing-shadows.test.js.map +0 -1
  492. /package/dist/cjs/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
  493. /package/dist/cjs/tests/{unit/rerender-missing-shadows.test.d.ts → integration/agent-captcha-autosolve.spec.d.ts} +0 -0
  494. /package/dist/{esm/tests/unit/rerender-missing-shadows.test.d.ts → cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts} +0 -0
  495. /package/dist/esm/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
@@ -275,7 +275,7 @@ export interface AgentExecuteOptionsBase {
275
275
  * - `think` - Agent reasoning/planning step
276
276
  * - `wait` - Wait for time or condition
277
277
  * - `done` - Mark task as complete
278
- * - `search` - Web search (requires BRAVE_API_KEY)
278
+ * - `search` - Web search (requires useSearch: true and BROWSERBASE_API_KEY)
279
279
  *
280
280
  * **Hybrid mode:**
281
281
  * - `click` - Click at specific coordinates
@@ -294,7 +294,7 @@ export interface AgentExecuteOptionsBase {
294
294
  * - `think` - Agent reasoning step
295
295
  * - `wait` - Wait for time/condition
296
296
  * - `done` - Mark task complete
297
- * - `search` - Web search (requires BRAVE_API_KEY)
297
+ * - `search` - Web search (requires useSearch: true and BROWSERBASE_API_KEY)
298
298
  *
299
299
  * @experimental
300
300
  * @example
@@ -350,6 +350,29 @@ export interface AgentExecuteOptionsBase {
350
350
  * ```
351
351
  */
352
352
  variables?: Variables;
353
+ /**
354
+ * Timeout in milliseconds for each agent tool call.
355
+ * If a tool call exceeds this duration, it will be aborted and
356
+ * reported back to the LLM as a timeout error so it can retry or adjust.
357
+ * For tools that call v3 methods (act, extract, fillForm, ariaTree), the
358
+ * timeout is also forwarded to the underlying v3 call for true cancellation.
359
+ * @default 45000 (45 seconds)
360
+ */
361
+ toolTimeout?: number;
362
+ /**
363
+ * Enable the web search tool powered by Browserbase Search API.
364
+ * Requires a valid Browserbase API key (BROWSERBASE_API_KEY).
365
+ * When set to true, the agent gains access to a `search` tool for web searches.
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * const result = await agent.execute({
370
+ * instruction: "Find the latest news about AI",
371
+ * useSearch: true,
372
+ * });
373
+ * ```
374
+ */
375
+ useSearch?: boolean;
353
376
  }
354
377
  /**
355
378
  * Options for non-streaming agent execution.
@@ -374,7 +397,7 @@ export interface AgentStreamExecuteOptions extends AgentExecuteOptionsBase {
374
397
  callbacks?: AgentStreamCallbacks;
375
398
  }
376
399
  export type AgentType = "openai" | "anthropic" | "google" | "microsoft" | "bedrock";
377
- export declare const AVAILABLE_CUA_MODELS: readonly ["openai/computer-use-preview", "openai/computer-use-preview-2025-03-11", "anthropic/claude-3-7-sonnet-latest", "anthropic/claude-opus-4-5-20251101", "anthropic/claude-opus-4-6", "anthropic/claude-sonnet-4-6", "anthropic/claude-haiku-4-5-20251001", "anthropic/claude-sonnet-4-20250514", "anthropic/claude-sonnet-4-5-20250929", "google/gemini-2.5-computer-use-preview-10-2025", "google/gemini-3-flash-preview", "google/gemini-3-pro-preview", "microsoft/fara-7b"];
400
+ export declare const AVAILABLE_CUA_MODELS: readonly ["openai/computer-use-preview", "openai/computer-use-preview-2025-03-11", "anthropic/claude-opus-4-5-20251101", "anthropic/claude-opus-4-6", "anthropic/claude-sonnet-4-6", "anthropic/claude-haiku-4-5-20251001", "anthropic/claude-sonnet-4-20250514", "anthropic/claude-sonnet-4-5-20250929", "google/gemini-2.5-computer-use-preview-10-2025", "google/gemini-3-flash-preview", "google/gemini-3-pro-preview", "microsoft/fara-7b"];
378
401
  export type AvailableCuaModel = (typeof AVAILABLE_CUA_MODELS)[number];
379
402
  export interface AgentExecutionOptions<TOptions extends AgentExecuteOptions = AgentExecuteOptions> {
380
403
  options: TOptions;
@@ -631,6 +654,7 @@ export interface ScrollToolResult {
631
654
  success: boolean;
632
655
  message: string;
633
656
  scrolledPixels: number;
657
+ error?: string;
634
658
  }
635
659
  export interface ScrollVisionToolResult extends ScrollToolResult {
636
660
  screenshotBase64?: string;
@@ -639,4 +663,5 @@ export interface WaitToolResult {
639
663
  success: boolean;
640
664
  waited: number;
641
665
  screenshotBase64?: string;
666
+ error?: string;
642
667
  }
@@ -1,7 +1,6 @@
1
1
  export const AVAILABLE_CUA_MODELS = [
2
2
  "openai/computer-use-preview",
3
3
  "openai/computer-use-preview-2025-03-11",
4
- "anthropic/claude-3-7-sonnet-latest",
5
4
  "anthropic/claude-opus-4-5-20251101",
6
5
  "anthropic/claude-opus-4-6",
7
6
  "anthropic/claude-sonnet-4-6",
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/agent.ts"],"names":[],"mappings":"AA2aA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,6BAA6B;IAC7B,wCAAwC;IACxC,oCAAoC;IACpC,oCAAoC;IACpC,2BAA2B;IAC3B,6BAA6B;IAC7B,qCAAqC;IACrC,oCAAoC;IACpC,sCAAsC;IACtC,gDAAgD;IAChD,+BAA+B;IAC/B,6BAA6B;IAC7B,mBAAmB;CACX,CAAC","sourcesContent":["import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport {\n ToolSet,\n ModelMessage,\n wrapLanguageModel,\n StreamTextResult,\n StepResult,\n PrepareStepFunction,\n GenerateTextOnStepFinishCallback,\n StreamTextOnStepFinishCallback,\n StreamTextOnErrorCallback,\n StreamTextOnChunkCallback,\n StreamTextOnFinishCallback,\n} from \"ai\";\nimport { LogLine } from \"./logs.js\";\nimport { ClientOptions } from \"./model.js\";\nimport { StagehandZodObject } from \"../../zodCompat.js\";\n\n// Re-export ModelMessage for consumers who want to use it for conversation continuation\nexport type { ModelMessage } from \"ai\";\n\n// Re-export Tool type for consumers who want to define custom tools\nexport type { Tool } from \"ai\";\nimport { Page as PlaywrightPage } from \"playwright-core\";\nimport { Page as PuppeteerPage } from \"puppeteer-core\";\nimport { Page as PatchrightPage } from \"patchright-core\";\nimport { Page } from \"../../understudy/page.js\";\n\n// =============================================================================\n// Variable Types\n// =============================================================================\n\n/**\n * A variable value can be a simple primitive or a rich object with an optional description.\n * This unified type is shared across `act`, `agent.execute`, and other methods.\n *\n * @example Simple (backward-compatible):\n * ```typescript\n * variables: { username: \"john@example.com\" }\n * ```\n *\n * @example Rich with description (useful for agents):\n * ```typescript\n * variables: {\n * username: { value: \"john@example.com\", description: \"The login email\" }\n * }\n * ```\n */\nexport type VariableValue =\n | string\n | number\n | boolean\n | { value: string | number | boolean; description?: string };\n\n/**\n * A collection of named variables for use in act, agent, and other methods.\n */\nexport type Variables = Record<string, VariableValue>;\n\nexport interface AgentContext {\n options: AgentExecuteOptionsBase;\n maxSteps: number;\n systemPrompt: string;\n allTools: ToolSet;\n messages: ModelMessage[];\n wrappedModel: ReturnType<typeof wrapLanguageModel>;\n initialPageUrl: string;\n}\n\nexport interface AgentState {\n collectedReasoning: string[];\n actions: AgentAction[];\n finalMessage: string;\n completed: boolean;\n currentPageUrl: string;\n}\n\nexport interface AgentAction {\n type: string;\n reasoning?: string;\n taskCompleted?: boolean;\n action?: string;\n // Tool-specific fields\n timeMs?: number; // wait tool\n pageText?: string; // ariaTree tool\n pageUrl?: string; // ariaTree tool\n instruction?: string; // various tools\n [key: string]: unknown;\n}\n\nexport interface AgentResult {\n success: boolean;\n message: string;\n actions: AgentAction[];\n completed: boolean;\n metadata?: Record<string, unknown>;\n usage?: {\n input_tokens: number;\n output_tokens: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n };\n /**\n * The conversation messages from this execution.\n * Pass these to a subsequent execute() call via the `messages` option to continue the conversation.\n * @experimental\n */\n messages?: ModelMessage[];\n /**\n * Custom output data extracted based on the `output` schema provided in execute options.\n * Only populated if an `output` schema was provided.\n * @experimental\n */\n output?: Record<string, unknown>;\n}\n\nexport type AgentStreamResult = StreamTextResult<ToolSet, never> & {\n result: Promise<AgentResult>;\n};\n\n/**\n * Base callbacks shared between execute (non-streaming) and streaming modes.\n */\nexport interface AgentCallbacks {\n /**\n * Optional function called before each step to modify settings.\n * You can change the model, tool choices, active tools, system prompt,\n * and input messages for each step.\n */\n prepareStep?: PrepareStepFunction<ToolSet>;\n /**\n * Callback called when each step (LLM call) is finished.\n * This is called for intermediate steps as well as the final step.\n */\n onStepFinish?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>;\n}\n\n/**\n * Error message type for streaming-only callbacks used in non-streaming mode.\n * This provides a clear error message when users try to use streaming callbacks without stream: true.\n */\ntype StreamingCallbackNotAvailable =\n \"This callback requires 'stream: true' in AgentConfig. Set stream: true to use streaming callbacks like onChunk, onFinish, onError, and onAbort.\";\n\n/**\n * Error message for safety confirmation callback misuse.\n * Safety confirmations are only available for non-streaming CUA agent executions.\n */\ntype SafetyConfirmationCallbackNotAvailable =\n \"Safety confirmation callbacks are only available via non-streaming AgentExecuteOptions.callbacks when using mode: 'cua'.\";\n\n/**\n * Callbacks specific to the non-streaming execute method.\n */\nexport interface AgentExecuteCallbacks extends AgentCallbacks {\n /**\n * Callback called when each step (LLM call) is finished.\n */\n onStepFinish?: GenerateTextOnStepFinishCallback<ToolSet>;\n /**\n * Callback for handling safety confirmation requests from CUA providers.\n * Only available when running an agent configured with mode: \"cua\".\n */\n onSafetyConfirmation?: SafetyConfirmationHandler;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onChunk:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onChunk: async (chunk) => console.log(chunk) }\n * });\n * ```\n */\n onChunk?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onFinish:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onFinish: (event) => console.log(\"Done!\", event) }\n * });\n * ```\n */\n onFinish?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onError:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onError: ({ error }) => console.error(error) }\n * });\n * ```\n */\n onError?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onAbort:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onAbort: (event) => console.log(\"Aborted\", event.steps) }\n * });\n * ```\n */\n onAbort?: StreamingCallbackNotAvailable;\n}\n\n/**\n * Callbacks specific to the streaming mode.\n */\nexport interface AgentStreamCallbacks extends AgentCallbacks {\n /**\n * Callback called when each step (LLM call) is finished during streaming.\n */\n onStepFinish?: StreamTextOnStepFinishCallback<ToolSet>;\n /**\n * Callback called when an error occurs during streaming.\n * Use this to log errors or handle error states.\n */\n onError?: StreamTextOnErrorCallback;\n /**\n * Callback called for each chunk of the stream.\n * Stream processing will pause until the callback promise resolves.\n */\n onChunk?: StreamTextOnChunkCallback<ToolSet>;\n /**\n * Callback called when the stream finishes.\n */\n onFinish?: StreamTextOnFinishCallback<ToolSet>;\n /**\n * Callback called when the stream is aborted.\n */\n onAbort?: (event: {\n steps: Array<StepResult<ToolSet>>;\n }) => PromiseLike<void> | void;\n /**\n * NOT AVAILABLE in streaming mode.\n * Safety confirmations currently require non-streaming execute() on CUA agents.\n */\n onSafetyConfirmation?: SafetyConfirmationCallbackNotAvailable;\n}\n\n/**\n * Base options for agent execution (without callbacks).\n */\nexport interface AgentExecuteOptionsBase {\n instruction: string;\n maxSteps?: number;\n page?: PlaywrightPage | PuppeteerPage | PatchrightPage | Page;\n highlightCursor?: boolean;\n /**\n * Previous conversation messages to continue from.\n * Pass the `messages` from a previous AgentResult to continue that conversation.\n * @experimental\n */\n messages?: ModelMessage[];\n /**\n * An AbortSignal that can be used to cancel the agent execution.\n * When aborted, the agent will stop and return a partial result.\n * @experimental\n *\n * @example\n * ```typescript\n * const controller = new AbortController();\n * setTimeout(() => controller.abort(), 30000); // 30 second timeout\n *\n * const result = await agent.execute({\n * instruction: \"...\",\n * signal: controller.signal\n * });\n * ```\n */\n signal?: AbortSignal;\n /**\n * Tools to exclude from this execution.\n * Pass an array of tool names to prevent the agent from using those tools.\n *\n * **Note:** Not supported in CUA mode (`mode: \"cua\"`).\n *\n * **Available tools by mode:**\n *\n * **DOM mode (default):**\n * - `act` - Perform semantic actions (click, type, etc.)\n * - `fillForm` - Fill form fields using DOM selectors\n * - `ariaTree` - Get accessibility tree of the page\n * - `extract` - Extract structured data from page\n * - `goto` - Navigate to a URL\n * - `scroll` - Scroll using semantic directions (up/down/left/right)\n * - `keys` - Press keyboard keys\n * - `navback` - Navigate back in history\n * - `screenshot` - Take a screenshot\n * - `think` - Agent reasoning/planning step\n * - `wait` - Wait for time or condition\n * - `done` - Mark task as complete\n * - `search` - Web search (requires BRAVE_API_KEY)\n *\n * **Hybrid mode:**\n * - `click` - Click at specific coordinates\n * - `type` - Type text at coordinates\n * - `dragAndDrop` - Drag from one point to another\n * - `clickAndHold` - Click and hold at coordinates\n * - `fillFormVision` - Fill forms using vision/coordinates\n * - `act` - Perform semantic actions\n * - `ariaTree` - Get accessibility tree\n * - `extract` - Extract data from page\n * - `goto` - Navigate to URL\n * - `scroll` - Scroll using coordinates\n * - `keys` - Press keyboard keys\n * - `navback` - Navigate back\n * - `screenshot` - Take screenshot\n * - `think` - Agent reasoning step\n * - `wait` - Wait for time/condition\n * - `done` - Mark task complete\n * - `search` - Web search (requires BRAVE_API_KEY)\n *\n * @experimental\n * @example\n * ```typescript\n * // Exclude screenshot and extract tools\n * const result = await agent.execute({\n * instruction: \"Click the submit button\",\n * excludeTools: [\"screenshot\", \"extract\"]\n * });\n * ```\n */\n excludeTools?: string[];\n /**\n * A Zod schema defining custom output data to return when the task completes.\n * The agent will populate this data in the final done tool call.\n *\n * @experimental\n * @example\n * ```typescript\n * const result = await agent.execute({\n * instruction: \"Find the cheapest flight from NYC to LA\",\n * output: z.object({\n * price: z.string().describe(\"The price of the flight\"),\n * airline: z.string().describe(\"The airline name\"),\n * departureTime: z.string().describe(\"Departure time\"),\n * }),\n * });\n *\n * console.log(result.output); // { price: \"$199\", airline: \"Delta\", departureTime: \"8:00 AM\" }\n * ```\n */\n output?: StagehandZodObject;\n /**\n * Variables that the agent can use when filling forms or typing text.\n * The agent will see variable names and descriptions in the system prompt,\n * and can use them via `%variableName%` syntax in act/type/fillForm tool calls.\n *\n * Accepts both simple values and rich objects with descriptions (same type as `act`).\n *\n * **Note:** Not supported in CUA mode (`mode: \"cua\"`). Requires `experimental: true`.\n *\n * @experimental\n * @example\n * ```typescript\n * // Simple values\n * variables: { username: \"john@example.com\", password: \"secret123\" }\n *\n * // Rich values with descriptions (helps the agent understand context)\n * variables: {\n * username: { value: \"john@example.com\", description: \"The login email\" },\n * password: { value: \"secret123\", description: \"The login password\" },\n * }\n * ```\n */\n variables?: Variables;\n}\n\n/**\n * Options for non-streaming agent execution.\n * Only accepts AgentExecuteCallbacks (no streaming-specific callbacks like onChunk, onFinish).\n */\nexport interface AgentExecuteOptions extends AgentExecuteOptionsBase {\n /**\n * Callbacks for non-streaming agent execution.\n * For streaming callbacks (onChunk, onFinish, onError, onAbort), use stream: true in AgentConfig.\n */\n callbacks?: AgentExecuteCallbacks;\n}\n\n/**\n * Options for streaming agent execution.\n * Accepts AgentStreamCallbacks including onChunk, onFinish, onError, and onAbort.\n */\nexport interface AgentStreamExecuteOptions extends AgentExecuteOptionsBase {\n /**\n * Callbacks for streaming agent execution.\n * Includes streaming-specific callbacks: onChunk, onFinish, onError, onAbort.\n */\n callbacks?: AgentStreamCallbacks;\n}\nexport type AgentType =\n | \"openai\"\n | \"anthropic\"\n | \"google\"\n | \"microsoft\"\n | \"bedrock\";\n\nexport const AVAILABLE_CUA_MODELS = [\n \"openai/computer-use-preview\",\n \"openai/computer-use-preview-2025-03-11\",\n \"anthropic/claude-3-7-sonnet-latest\",\n \"anthropic/claude-opus-4-5-20251101\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-sonnet-4-6\",\n \"anthropic/claude-haiku-4-5-20251001\",\n \"anthropic/claude-sonnet-4-20250514\",\n \"anthropic/claude-sonnet-4-5-20250929\",\n \"google/gemini-2.5-computer-use-preview-10-2025\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"microsoft/fara-7b\",\n] as const;\nexport type AvailableCuaModel = (typeof AVAILABLE_CUA_MODELS)[number];\n\nexport interface AgentExecutionOptions<\n TOptions extends AgentExecuteOptions = AgentExecuteOptions,\n> {\n options: TOptions;\n logger: (message: LogLine) => void;\n retries?: number;\n}\n\nexport interface AgentHandlerOptions {\n modelName: string;\n clientOptions?: ClientOptions;\n userProvidedInstructions?: string;\n experimental?: boolean;\n}\n\nexport interface ActionExecutionResult {\n success: boolean;\n error?: string;\n data?: unknown;\n}\n\n/**\n * Represents a safety check that requires user confirmation before proceeding.\n * These are issued by CUA providers (OpenAI, Google) when the agent attempts\n * potentially risky actions.\n */\nexport interface SafetyCheck {\n /** Unique identifier for this safety check */\n id: string;\n /** Code identifying the type of safety concern */\n code: string;\n /** Human-readable description of the safety concern */\n message: string;\n}\n\n/**\n * Response from the user for a safety confirmation request.\n */\nexport interface SafetyConfirmationResponse {\n /** Whether the user acknowledged/approved the safety checks */\n acknowledged: boolean;\n}\n\n/**\n * Callback for handling safety confirmation requests.\n * Called when the CUA provider issues safety checks that require user confirmation.\n * The callback should return a promise that resolves when the user has made a decision.\n *\n * @param safetyChecks - Array of safety checks requiring confirmation\n * @returns Promise resolving to the user's response\n *\n * @example\n * ```typescript\n * const agent = stagehand.agent({\n * mode: \"cua\",\n * });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: {\n * onSafetyConfirmation: async (checks) => {\n * console.log(\"Safety checks:\", checks);\n * const userApproved = await showConfirmationDialog(checks);\n * return { acknowledged: userApproved };\n * },\n * },\n * });\n * ```\n */\nexport type SafetyConfirmationHandler = (\n safetyChecks: SafetyCheck[],\n) => Promise<SafetyConfirmationResponse>;\n\n// Anthropic types:\n\nexport interface ToolUseItem extends ResponseItem {\n type: \"tool_use\";\n id: string; // This is the correct property name from Anthropic's API\n name: string; // Name of the tool being used\n input: Record<string, unknown>;\n}\n\nexport interface AnthropicMessage {\n role: string;\n content: string | Array<AnthropicContentBlock>;\n}\n\nexport interface AnthropicContentBlock {\n type: string;\n [key: string]: unknown;\n}\n\nexport interface AnthropicTextBlock extends AnthropicContentBlock {\n type: \"text\";\n text: string;\n}\n\nexport interface AnthropicToolResult {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<AnthropicContentBlock>;\n}\n\n// OpenAI types:\n\nexport interface ResponseItem {\n type: string;\n id: string;\n [key: string]: unknown;\n}\n\nexport interface ComputerCallItem extends ResponseItem {\n type: \"computer_call\";\n call_id: string;\n action: {\n type: string;\n [key: string]: unknown;\n };\n pending_safety_checks?: Array<{\n id: string;\n code: string;\n message: string;\n }>;\n}\n\nexport interface FunctionCallItem extends ResponseItem {\n type: \"function_call\";\n call_id: string;\n name: string;\n arguments: string;\n}\n\nexport type ResponseInputItem =\n | { role: string; content: string }\n | {\n type: \"computer_call_output\";\n call_id: string;\n output:\n | {\n type: \"input_image\";\n image_url: string;\n current_url?: string;\n error?: string;\n [key: string]: unknown;\n }\n | string;\n acknowledged_safety_checks?: Array<{\n id: string;\n code: string;\n message: string;\n }>;\n }\n | {\n type: \"function_call_output\";\n call_id: string;\n output: string;\n };\n\nexport interface AgentInstance {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n}\n\nexport type AgentProviderType = AgentType;\n\nexport type AgentModelConfig<TModelName extends string = string> = {\n modelName: TModelName;\n} & Record<string, unknown>;\n\n/**\n * Agent tool mode determines which set of tools are available to the agent.\n * - 'dom': Uses DOM-based tools (act, fillForm) - better for structured page interactions\n * - 'hybrid': Uses coordinate-based tools (click, type, dragAndDrop, etc.) - better for visual/screenshot-based interactions\n * - 'cua': Uses Computer Use Agent (CUA) providers like Anthropic Claude or Google Gemini for screenshot-based automation\n */\nexport type AgentToolMode = \"dom\" | \"hybrid\" | \"cua\";\n\nexport type AgentConfig = {\n /**\n * Custom system prompt to provide to the agent. Overrides the default system prompt.\n */\n systemPrompt?: string;\n /**\n * MCP integrations - Array of Client objects\n */\n integrations?: (Client | string)[];\n /**\n * Tools passed to the agent client\n */\n tools?: ToolSet;\n /**\n * @deprecated Use `mode: \"cua\"` instead. This option will be removed in a future version.\n * Enables Computer Use Agent (CUA) mode.\n */\n cua?: boolean;\n /**\n * The model to use for agent functionality\n */\n model?: string | AgentModelConfig<string>;\n /**\n * The model to use for tool execution (observe/act calls within agent tools).\n * If not specified, inherits from the main model configuration.\n * Format: \"provider/model\" (e.g., \"openai/gpt-4o-mini\", \"google/gemini-2.0-flash-exp\")\n */\n executionModel?: string | AgentModelConfig<string>;\n /**\n * Enable streaming mode for the agent.\n * When true, execute() returns AgentStreamResult with textStream for incremental output.\n * When false (default), execute() returns AgentResult after completion.\n */\n stream?: boolean;\n /**\n * Tool mode for the agent. Determines which set of tools are available.\n * - 'dom' (default): Uses DOM-based tools (act, fillForm) for structured interactions\n * - 'hybrid': Uses coordinate-based tools (click, type, dragAndDrop, clickAndHold, fillFormVision)\n * for visual/screenshot-based interactions\n * - 'cua': Uses Computer Use Agent (CUA) providers for screenshot-based automation\n */\n mode?: AgentToolMode;\n};\n\n/**\n * Agent instance returned when stream: true is set in AgentConfig.\n * execute() returns a streaming result that can be consumed incrementally.\n * Accepts AgentStreamExecuteOptions with streaming-specific callbacks.\n */\nexport interface StreamingAgentInstance {\n execute: (\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ) => Promise<AgentStreamResult>;\n}\n\n/**\n * Agent instance returned when stream is false or not set in AgentConfig.\n * execute() returns a result after the agent completes.\n * Accepts AgentExecuteOptions with non-streaming callbacks only.\n */\nexport interface NonStreamingAgentInstance {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n}\n\n// =============================================================================\n// Vision Action Tool Result Types\n// =============================================================================\n\n/**\n * Content item type for toModelOutput return values.\n * Used in tool definitions to return text and/or media to the model.\n */\nexport type ModelOutputContentItem =\n | { type: \"text\"; text: string }\n | { type: \"media\"; mediaType: string; data: string };\n\nexport interface ClickToolResult {\n success: boolean;\n describe?: string;\n coordinates?: number[];\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface TypeToolResult {\n success: boolean;\n describe?: string;\n text?: string;\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface DragAndDropToolResult {\n success: boolean;\n describe?: string;\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface FillFormField {\n action: string;\n value: string;\n coordinates: { x: number; y: number };\n}\n\nexport interface FillFormVisionToolResult {\n success: boolean;\n playwrightArguments?: FillFormField[];\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface ScrollToolResult {\n success: boolean;\n message: string;\n scrolledPixels: number;\n}\n\nexport interface ScrollVisionToolResult extends ScrollToolResult {\n screenshotBase64?: string;\n}\n\nexport interface WaitToolResult {\n success: boolean;\n waited: number;\n screenshotBase64?: string;\n}\n"]}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../../../lib/v3/types/public/agent.ts"],"names":[],"mappings":"AAkcA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,6BAA6B;IAC7B,wCAAwC;IACxC,oCAAoC;IACpC,2BAA2B;IAC3B,6BAA6B;IAC7B,qCAAqC;IACrC,oCAAoC;IACpC,sCAAsC;IACtC,gDAAgD;IAChD,+BAA+B;IAC/B,6BAA6B;IAC7B,mBAAmB;CACX,CAAC","sourcesContent":["import type { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport {\n ToolSet,\n ModelMessage,\n wrapLanguageModel,\n StreamTextResult,\n StepResult,\n PrepareStepFunction,\n GenerateTextOnStepFinishCallback,\n StreamTextOnStepFinishCallback,\n StreamTextOnErrorCallback,\n StreamTextOnChunkCallback,\n StreamTextOnFinishCallback,\n} from \"ai\";\nimport { LogLine } from \"./logs.js\";\nimport { ClientOptions } from \"./model.js\";\nimport { StagehandZodObject } from \"../../zodCompat.js\";\n\n// Re-export ModelMessage for consumers who want to use it for conversation continuation\nexport type { ModelMessage } from \"ai\";\n\n// Re-export Tool type for consumers who want to define custom tools\nexport type { Tool } from \"ai\";\nimport { Page as PlaywrightPage } from \"playwright-core\";\nimport { Page as PuppeteerPage } from \"puppeteer-core\";\nimport { Page as PatchrightPage } from \"patchright-core\";\nimport { Page } from \"../../understudy/page.js\";\n\n// =============================================================================\n// Variable Types\n// =============================================================================\n\n/**\n * A variable value can be a simple primitive or a rich object with an optional description.\n * This unified type is shared across `act`, `agent.execute`, and other methods.\n *\n * @example Simple (backward-compatible):\n * ```typescript\n * variables: { username: \"john@example.com\" }\n * ```\n *\n * @example Rich with description (useful for agents):\n * ```typescript\n * variables: {\n * username: { value: \"john@example.com\", description: \"The login email\" }\n * }\n * ```\n */\nexport type VariableValue =\n | string\n | number\n | boolean\n | { value: string | number | boolean; description?: string };\n\n/**\n * A collection of named variables for use in act, agent, and other methods.\n */\nexport type Variables = Record<string, VariableValue>;\n\nexport interface AgentContext {\n options: AgentExecuteOptionsBase;\n maxSteps: number;\n systemPrompt: string;\n allTools: ToolSet;\n messages: ModelMessage[];\n wrappedModel: ReturnType<typeof wrapLanguageModel>;\n initialPageUrl: string;\n}\n\nexport interface AgentState {\n collectedReasoning: string[];\n actions: AgentAction[];\n finalMessage: string;\n completed: boolean;\n currentPageUrl: string;\n}\n\nexport interface AgentAction {\n type: string;\n reasoning?: string;\n taskCompleted?: boolean;\n action?: string;\n // Tool-specific fields\n timeMs?: number; // wait tool\n pageText?: string; // ariaTree tool\n pageUrl?: string; // ariaTree tool\n instruction?: string; // various tools\n [key: string]: unknown;\n}\n\nexport interface AgentResult {\n success: boolean;\n message: string;\n actions: AgentAction[];\n completed: boolean;\n metadata?: Record<string, unknown>;\n usage?: {\n input_tokens: number;\n output_tokens: number;\n reasoning_tokens?: number;\n cached_input_tokens?: number;\n inference_time_ms: number;\n };\n /**\n * The conversation messages from this execution.\n * Pass these to a subsequent execute() call via the `messages` option to continue the conversation.\n * @experimental\n */\n messages?: ModelMessage[];\n /**\n * Custom output data extracted based on the `output` schema provided in execute options.\n * Only populated if an `output` schema was provided.\n * @experimental\n */\n output?: Record<string, unknown>;\n}\n\nexport type AgentStreamResult = StreamTextResult<ToolSet, never> & {\n result: Promise<AgentResult>;\n};\n\n/**\n * Base callbacks shared between execute (non-streaming) and streaming modes.\n */\nexport interface AgentCallbacks {\n /**\n * Optional function called before each step to modify settings.\n * You can change the model, tool choices, active tools, system prompt,\n * and input messages for each step.\n */\n prepareStep?: PrepareStepFunction<ToolSet>;\n /**\n * Callback called when each step (LLM call) is finished.\n * This is called for intermediate steps as well as the final step.\n */\n onStepFinish?:\n | GenerateTextOnStepFinishCallback<ToolSet>\n | StreamTextOnStepFinishCallback<ToolSet>;\n}\n\n/**\n * Error message type for streaming-only callbacks used in non-streaming mode.\n * This provides a clear error message when users try to use streaming callbacks without stream: true.\n */\ntype StreamingCallbackNotAvailable =\n \"This callback requires 'stream: true' in AgentConfig. Set stream: true to use streaming callbacks like onChunk, onFinish, onError, and onAbort.\";\n\n/**\n * Error message for safety confirmation callback misuse.\n * Safety confirmations are only available for non-streaming CUA agent executions.\n */\ntype SafetyConfirmationCallbackNotAvailable =\n \"Safety confirmation callbacks are only available via non-streaming AgentExecuteOptions.callbacks when using mode: 'cua'.\";\n\n/**\n * Callbacks specific to the non-streaming execute method.\n */\nexport interface AgentExecuteCallbacks extends AgentCallbacks {\n /**\n * Callback called when each step (LLM call) is finished.\n */\n onStepFinish?: GenerateTextOnStepFinishCallback<ToolSet>;\n /**\n * Callback for handling safety confirmation requests from CUA providers.\n * Only available when running an agent configured with mode: \"cua\".\n */\n onSafetyConfirmation?: SafetyConfirmationHandler;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onChunk:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onChunk: async (chunk) => console.log(chunk) }\n * });\n * ```\n */\n onChunk?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onFinish:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onFinish: (event) => console.log(\"Done!\", event) }\n * });\n * ```\n */\n onFinish?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onError:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onError: ({ error }) => console.error(error) }\n * });\n * ```\n */\n onError?: StreamingCallbackNotAvailable;\n\n /**\n * NOT AVAILABLE in non-streaming mode.\n * This callback requires `stream: true` in AgentConfig.\n *\n * @example\n * ```typescript\n * // Enable streaming to use onAbort:\n * const agent = stagehand.agent({ stream: true });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: { onAbort: (event) => console.log(\"Aborted\", event.steps) }\n * });\n * ```\n */\n onAbort?: StreamingCallbackNotAvailable;\n}\n\n/**\n * Callbacks specific to the streaming mode.\n */\nexport interface AgentStreamCallbacks extends AgentCallbacks {\n /**\n * Callback called when each step (LLM call) is finished during streaming.\n */\n onStepFinish?: StreamTextOnStepFinishCallback<ToolSet>;\n /**\n * Callback called when an error occurs during streaming.\n * Use this to log errors or handle error states.\n */\n onError?: StreamTextOnErrorCallback;\n /**\n * Callback called for each chunk of the stream.\n * Stream processing will pause until the callback promise resolves.\n */\n onChunk?: StreamTextOnChunkCallback<ToolSet>;\n /**\n * Callback called when the stream finishes.\n */\n onFinish?: StreamTextOnFinishCallback<ToolSet>;\n /**\n * Callback called when the stream is aborted.\n */\n onAbort?: (event: {\n steps: Array<StepResult<ToolSet>>;\n }) => PromiseLike<void> | void;\n /**\n * NOT AVAILABLE in streaming mode.\n * Safety confirmations currently require non-streaming execute() on CUA agents.\n */\n onSafetyConfirmation?: SafetyConfirmationCallbackNotAvailable;\n}\n\n/**\n * Base options for agent execution (without callbacks).\n */\nexport interface AgentExecuteOptionsBase {\n instruction: string;\n maxSteps?: number;\n page?: PlaywrightPage | PuppeteerPage | PatchrightPage | Page;\n highlightCursor?: boolean;\n /**\n * Previous conversation messages to continue from.\n * Pass the `messages` from a previous AgentResult to continue that conversation.\n * @experimental\n */\n messages?: ModelMessage[];\n /**\n * An AbortSignal that can be used to cancel the agent execution.\n * When aborted, the agent will stop and return a partial result.\n * @experimental\n *\n * @example\n * ```typescript\n * const controller = new AbortController();\n * setTimeout(() => controller.abort(), 30000); // 30 second timeout\n *\n * const result = await agent.execute({\n * instruction: \"...\",\n * signal: controller.signal\n * });\n * ```\n */\n signal?: AbortSignal;\n /**\n * Tools to exclude from this execution.\n * Pass an array of tool names to prevent the agent from using those tools.\n *\n * **Note:** Not supported in CUA mode (`mode: \"cua\"`).\n *\n * **Available tools by mode:**\n *\n * **DOM mode (default):**\n * - `act` - Perform semantic actions (click, type, etc.)\n * - `fillForm` - Fill form fields using DOM selectors\n * - `ariaTree` - Get accessibility tree of the page\n * - `extract` - Extract structured data from page\n * - `goto` - Navigate to a URL\n * - `scroll` - Scroll using semantic directions (up/down/left/right)\n * - `keys` - Press keyboard keys\n * - `navback` - Navigate back in history\n * - `screenshot` - Take a screenshot\n * - `think` - Agent reasoning/planning step\n * - `wait` - Wait for time or condition\n * - `done` - Mark task as complete\n * - `search` - Web search (requires useSearch: true and BROWSERBASE_API_KEY)\n *\n * **Hybrid mode:**\n * - `click` - Click at specific coordinates\n * - `type` - Type text at coordinates\n * - `dragAndDrop` - Drag from one point to another\n * - `clickAndHold` - Click and hold at coordinates\n * - `fillFormVision` - Fill forms using vision/coordinates\n * - `act` - Perform semantic actions\n * - `ariaTree` - Get accessibility tree\n * - `extract` - Extract data from page\n * - `goto` - Navigate to URL\n * - `scroll` - Scroll using coordinates\n * - `keys` - Press keyboard keys\n * - `navback` - Navigate back\n * - `screenshot` - Take screenshot\n * - `think` - Agent reasoning step\n * - `wait` - Wait for time/condition\n * - `done` - Mark task complete\n * - `search` - Web search (requires useSearch: true and BROWSERBASE_API_KEY)\n *\n * @experimental\n * @example\n * ```typescript\n * // Exclude screenshot and extract tools\n * const result = await agent.execute({\n * instruction: \"Click the submit button\",\n * excludeTools: [\"screenshot\", \"extract\"]\n * });\n * ```\n */\n excludeTools?: string[];\n /**\n * A Zod schema defining custom output data to return when the task completes.\n * The agent will populate this data in the final done tool call.\n *\n * @experimental\n * @example\n * ```typescript\n * const result = await agent.execute({\n * instruction: \"Find the cheapest flight from NYC to LA\",\n * output: z.object({\n * price: z.string().describe(\"The price of the flight\"),\n * airline: z.string().describe(\"The airline name\"),\n * departureTime: z.string().describe(\"Departure time\"),\n * }),\n * });\n *\n * console.log(result.output); // { price: \"$199\", airline: \"Delta\", departureTime: \"8:00 AM\" }\n * ```\n */\n output?: StagehandZodObject;\n /**\n * Variables that the agent can use when filling forms or typing text.\n * The agent will see variable names and descriptions in the system prompt,\n * and can use them via `%variableName%` syntax in act/type/fillForm tool calls.\n *\n * Accepts both simple values and rich objects with descriptions (same type as `act`).\n *\n * **Note:** Not supported in CUA mode (`mode: \"cua\"`). Requires `experimental: true`.\n *\n * @experimental\n * @example\n * ```typescript\n * // Simple values\n * variables: { username: \"john@example.com\", password: \"secret123\" }\n *\n * // Rich values with descriptions (helps the agent understand context)\n * variables: {\n * username: { value: \"john@example.com\", description: \"The login email\" },\n * password: { value: \"secret123\", description: \"The login password\" },\n * }\n * ```\n */\n variables?: Variables;\n /**\n * Timeout in milliseconds for each agent tool call.\n * If a tool call exceeds this duration, it will be aborted and\n * reported back to the LLM as a timeout error so it can retry or adjust.\n * For tools that call v3 methods (act, extract, fillForm, ariaTree), the\n * timeout is also forwarded to the underlying v3 call for true cancellation.\n * @default 45000 (45 seconds)\n */\n toolTimeout?: number;\n /**\n * Enable the web search tool powered by Browserbase Search API.\n * Requires a valid Browserbase API key (BROWSERBASE_API_KEY).\n * When set to true, the agent gains access to a `search` tool for web searches.\n *\n * @example\n * ```typescript\n * const result = await agent.execute({\n * instruction: \"Find the latest news about AI\",\n * useSearch: true,\n * });\n * ```\n */\n useSearch?: boolean;\n}\n\n/**\n * Options for non-streaming agent execution.\n * Only accepts AgentExecuteCallbacks (no streaming-specific callbacks like onChunk, onFinish).\n */\nexport interface AgentExecuteOptions extends AgentExecuteOptionsBase {\n /**\n * Callbacks for non-streaming agent execution.\n * For streaming callbacks (onChunk, onFinish, onError, onAbort), use stream: true in AgentConfig.\n */\n callbacks?: AgentExecuteCallbacks;\n}\n\n/**\n * Options for streaming agent execution.\n * Accepts AgentStreamCallbacks including onChunk, onFinish, onError, and onAbort.\n */\nexport interface AgentStreamExecuteOptions extends AgentExecuteOptionsBase {\n /**\n * Callbacks for streaming agent execution.\n * Includes streaming-specific callbacks: onChunk, onFinish, onError, onAbort.\n */\n callbacks?: AgentStreamCallbacks;\n}\nexport type AgentType =\n | \"openai\"\n | \"anthropic\"\n | \"google\"\n | \"microsoft\"\n | \"bedrock\";\n\nexport const AVAILABLE_CUA_MODELS = [\n \"openai/computer-use-preview\",\n \"openai/computer-use-preview-2025-03-11\",\n \"anthropic/claude-opus-4-5-20251101\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-sonnet-4-6\",\n \"anthropic/claude-haiku-4-5-20251001\",\n \"anthropic/claude-sonnet-4-20250514\",\n \"anthropic/claude-sonnet-4-5-20250929\",\n \"google/gemini-2.5-computer-use-preview-10-2025\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"microsoft/fara-7b\",\n] as const;\nexport type AvailableCuaModel = (typeof AVAILABLE_CUA_MODELS)[number];\n\nexport interface AgentExecutionOptions<\n TOptions extends AgentExecuteOptions = AgentExecuteOptions,\n> {\n options: TOptions;\n logger: (message: LogLine) => void;\n retries?: number;\n}\n\nexport interface AgentHandlerOptions {\n modelName: string;\n clientOptions?: ClientOptions;\n userProvidedInstructions?: string;\n experimental?: boolean;\n}\n\nexport interface ActionExecutionResult {\n success: boolean;\n error?: string;\n data?: unknown;\n}\n\n/**\n * Represents a safety check that requires user confirmation before proceeding.\n * These are issued by CUA providers (OpenAI, Google) when the agent attempts\n * potentially risky actions.\n */\nexport interface SafetyCheck {\n /** Unique identifier for this safety check */\n id: string;\n /** Code identifying the type of safety concern */\n code: string;\n /** Human-readable description of the safety concern */\n message: string;\n}\n\n/**\n * Response from the user for a safety confirmation request.\n */\nexport interface SafetyConfirmationResponse {\n /** Whether the user acknowledged/approved the safety checks */\n acknowledged: boolean;\n}\n\n/**\n * Callback for handling safety confirmation requests.\n * Called when the CUA provider issues safety checks that require user confirmation.\n * The callback should return a promise that resolves when the user has made a decision.\n *\n * @param safetyChecks - Array of safety checks requiring confirmation\n * @returns Promise resolving to the user's response\n *\n * @example\n * ```typescript\n * const agent = stagehand.agent({\n * mode: \"cua\",\n * });\n * await agent.execute({\n * instruction: \"...\",\n * callbacks: {\n * onSafetyConfirmation: async (checks) => {\n * console.log(\"Safety checks:\", checks);\n * const userApproved = await showConfirmationDialog(checks);\n * return { acknowledged: userApproved };\n * },\n * },\n * });\n * ```\n */\nexport type SafetyConfirmationHandler = (\n safetyChecks: SafetyCheck[],\n) => Promise<SafetyConfirmationResponse>;\n\n// Anthropic types:\n\nexport interface ToolUseItem extends ResponseItem {\n type: \"tool_use\";\n id: string; // This is the correct property name from Anthropic's API\n name: string; // Name of the tool being used\n input: Record<string, unknown>;\n}\n\nexport interface AnthropicMessage {\n role: string;\n content: string | Array<AnthropicContentBlock>;\n}\n\nexport interface AnthropicContentBlock {\n type: string;\n [key: string]: unknown;\n}\n\nexport interface AnthropicTextBlock extends AnthropicContentBlock {\n type: \"text\";\n text: string;\n}\n\nexport interface AnthropicToolResult {\n type: \"tool_result\";\n tool_use_id: string;\n content: string | Array<AnthropicContentBlock>;\n}\n\n// OpenAI types:\n\nexport interface ResponseItem {\n type: string;\n id: string;\n [key: string]: unknown;\n}\n\nexport interface ComputerCallItem extends ResponseItem {\n type: \"computer_call\";\n call_id: string;\n action: {\n type: string;\n [key: string]: unknown;\n };\n pending_safety_checks?: Array<{\n id: string;\n code: string;\n message: string;\n }>;\n}\n\nexport interface FunctionCallItem extends ResponseItem {\n type: \"function_call\";\n call_id: string;\n name: string;\n arguments: string;\n}\n\nexport type ResponseInputItem =\n | { role: string; content: string }\n | {\n type: \"computer_call_output\";\n call_id: string;\n output:\n | {\n type: \"input_image\";\n image_url: string;\n current_url?: string;\n error?: string;\n [key: string]: unknown;\n }\n | string;\n acknowledged_safety_checks?: Array<{\n id: string;\n code: string;\n message: string;\n }>;\n }\n | {\n type: \"function_call_output\";\n call_id: string;\n output: string;\n };\n\nexport interface AgentInstance {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n}\n\nexport type AgentProviderType = AgentType;\n\nexport type AgentModelConfig<TModelName extends string = string> = {\n modelName: TModelName;\n} & Record<string, unknown>;\n\n/**\n * Agent tool mode determines which set of tools are available to the agent.\n * - 'dom': Uses DOM-based tools (act, fillForm) - better for structured page interactions\n * - 'hybrid': Uses coordinate-based tools (click, type, dragAndDrop, etc.) - better for visual/screenshot-based interactions\n * - 'cua': Uses Computer Use Agent (CUA) providers like Anthropic Claude or Google Gemini for screenshot-based automation\n */\nexport type AgentToolMode = \"dom\" | \"hybrid\" | \"cua\";\n\nexport type AgentConfig = {\n /**\n * Custom system prompt to provide to the agent. Overrides the default system prompt.\n */\n systemPrompt?: string;\n /**\n * MCP integrations - Array of Client objects\n */\n integrations?: (Client | string)[];\n /**\n * Tools passed to the agent client\n */\n tools?: ToolSet;\n /**\n * @deprecated Use `mode: \"cua\"` instead. This option will be removed in a future version.\n * Enables Computer Use Agent (CUA) mode.\n */\n cua?: boolean;\n /**\n * The model to use for agent functionality\n */\n model?: string | AgentModelConfig<string>;\n /**\n * The model to use for tool execution (observe/act calls within agent tools).\n * If not specified, inherits from the main model configuration.\n * Format: \"provider/model\" (e.g., \"openai/gpt-4o-mini\", \"google/gemini-2.0-flash-exp\")\n */\n executionModel?: string | AgentModelConfig<string>;\n /**\n * Enable streaming mode for the agent.\n * When true, execute() returns AgentStreamResult with textStream for incremental output.\n * When false (default), execute() returns AgentResult after completion.\n */\n stream?: boolean;\n /**\n * Tool mode for the agent. Determines which set of tools are available.\n * - 'dom' (default): Uses DOM-based tools (act, fillForm) for structured interactions\n * - 'hybrid': Uses coordinate-based tools (click, type, dragAndDrop, clickAndHold, fillFormVision)\n * for visual/screenshot-based interactions\n * - 'cua': Uses Computer Use Agent (CUA) providers for screenshot-based automation\n */\n mode?: AgentToolMode;\n};\n\n/**\n * Agent instance returned when stream: true is set in AgentConfig.\n * execute() returns a streaming result that can be consumed incrementally.\n * Accepts AgentStreamExecuteOptions with streaming-specific callbacks.\n */\nexport interface StreamingAgentInstance {\n execute: (\n instructionOrOptions: string | AgentStreamExecuteOptions,\n ) => Promise<AgentStreamResult>;\n}\n\n/**\n * Agent instance returned when stream is false or not set in AgentConfig.\n * execute() returns a result after the agent completes.\n * Accepts AgentExecuteOptions with non-streaming callbacks only.\n */\nexport interface NonStreamingAgentInstance {\n execute: (\n instructionOrOptions: string | AgentExecuteOptions,\n ) => Promise<AgentResult>;\n}\n\n// =============================================================================\n// Vision Action Tool Result Types\n// =============================================================================\n\n/**\n * Content item type for toModelOutput return values.\n * Used in tool definitions to return text and/or media to the model.\n */\nexport type ModelOutputContentItem =\n | { type: \"text\"; text: string }\n | { type: \"media\"; mediaType: string; data: string };\n\nexport interface ClickToolResult {\n success: boolean;\n describe?: string;\n coordinates?: number[];\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface TypeToolResult {\n success: boolean;\n describe?: string;\n text?: string;\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface DragAndDropToolResult {\n success: boolean;\n describe?: string;\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface FillFormField {\n action: string;\n value: string;\n coordinates: { x: number; y: number };\n}\n\nexport interface FillFormVisionToolResult {\n success: boolean;\n playwrightArguments?: FillFormField[];\n error?: string;\n screenshotBase64?: string;\n}\n\nexport interface ScrollToolResult {\n success: boolean;\n message: string;\n scrolledPixels: number;\n error?: string;\n}\n\nexport interface ScrollVisionToolResult extends ScrollToolResult {\n screenshotBase64?: string;\n}\n\nexport interface WaitToolResult {\n success: boolean;\n waited: number;\n screenshotBase64?: string;\n error?: string;\n}\n"]}
@@ -9,6 +9,7 @@
9
9
  * All TypeScript types are inferred from the Zod4 *Schemas using z.infer<>
10
10
  */
11
11
  import { z } from "zod/v4";
12
+ export { VariablePrimitiveSchema, VariableValueSchema, VariablesSchema, } from "./variables.js";
12
13
  /** Browser launch options for local browsers */
13
14
  export declare const LocalBrowserLaunchOptionsSchema: z.ZodObject<{
14
15
  args: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -35,6 +36,7 @@ export declare const LocalBrowserLaunchOptionsSchema: z.ZodObject<{
35
36
  hasTouch: z.ZodOptional<z.ZodBoolean>;
36
37
  ignoreHTTPSErrors: z.ZodOptional<z.ZodBoolean>;
37
38
  cdpUrl: z.ZodOptional<z.ZodString>;
39
+ cdpHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
38
40
  connectTimeoutMs: z.ZodOptional<z.ZodNumber>;
39
41
  downloadsPath: z.ZodOptional<z.ZodString>;
40
42
  acceptDownloads: z.ZodOptional<z.ZodBoolean>;
@@ -51,6 +53,7 @@ export declare const ModelConfigObjectSchema: z.ZodObject<{
51
53
  modelName: z.ZodString;
52
54
  apiKey: z.ZodOptional<z.ZodString>;
53
55
  baseURL: z.ZodOptional<z.ZodString>;
56
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
54
57
  }, z.core.$strip>;
55
58
  /** Model configuration */
56
59
  export declare const ModelConfigSchema: z.ZodObject<{
@@ -64,6 +67,7 @@ export declare const ModelConfigSchema: z.ZodObject<{
64
67
  modelName: z.ZodString;
65
68
  apiKey: z.ZodOptional<z.ZodString>;
66
69
  baseURL: z.ZodOptional<z.ZodString>;
70
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
67
71
  }, z.core.$strip>;
68
72
  /** Action object returned by observe and used by act */
69
73
  export declare const ActionSchema: z.ZodObject<{
@@ -109,6 +113,7 @@ export declare const BrowserConfigSchema: z.ZodObject<{
109
113
  hasTouch: z.ZodOptional<z.ZodBoolean>;
110
114
  ignoreHTTPSErrors: z.ZodOptional<z.ZodBoolean>;
111
115
  cdpUrl: z.ZodOptional<z.ZodString>;
116
+ cdpHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
112
117
  connectTimeoutMs: z.ZodOptional<z.ZodNumber>;
113
118
  downloadsPath: z.ZodOptional<z.ZodString>;
114
119
  acceptDownloads: z.ZodOptional<z.ZodBoolean>;
@@ -454,6 +459,7 @@ export declare const SessionStartRequestSchema: z.ZodObject<{
454
459
  hasTouch: z.ZodOptional<z.ZodBoolean>;
455
460
  ignoreHTTPSErrors: z.ZodOptional<z.ZodBoolean>;
456
461
  cdpUrl: z.ZodOptional<z.ZodString>;
462
+ cdpHeaders: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
457
463
  connectTimeoutMs: z.ZodOptional<z.ZodNumber>;
458
464
  downloadsPath: z.ZodOptional<z.ZodString>;
459
465
  acceptDownloads: z.ZodOptional<z.ZodBoolean>;
@@ -497,8 +503,9 @@ export declare const ActOptionsSchema: z.ZodOptional<z.ZodObject<{
497
503
  modelName: z.ZodString;
498
504
  apiKey: z.ZodOptional<z.ZodString>;
499
505
  baseURL: z.ZodOptional<z.ZodString>;
506
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
500
507
  }, z.core.$strip>, z.ZodString]>>;
501
- variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
508
+ variables: z.ZodOptional<z.ZodType<import("./agent.js").Variables, unknown, z.core.$ZodTypeInternals<import("./agent.js").Variables, unknown>>>;
502
509
  timeout: z.ZodOptional<z.ZodNumber>;
503
510
  }, z.core.$strip>>;
504
511
  export declare const ActRequestSchema: z.ZodObject<{
@@ -521,8 +528,9 @@ export declare const ActRequestSchema: z.ZodObject<{
521
528
  modelName: z.ZodString;
522
529
  apiKey: z.ZodOptional<z.ZodString>;
523
530
  baseURL: z.ZodOptional<z.ZodString>;
531
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
524
532
  }, z.core.$strip>, z.ZodString]>>;
525
- variables: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
533
+ variables: z.ZodOptional<z.ZodType<import("./agent.js").Variables, unknown, z.core.$ZodTypeInternals<import("./agent.js").Variables, unknown>>>;
526
534
  timeout: z.ZodOptional<z.ZodNumber>;
527
535
  }, z.core.$strip>>;
528
536
  frameId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -586,6 +594,7 @@ export declare const ExtractOptionsSchema: z.ZodOptional<z.ZodObject<{
586
594
  modelName: z.ZodString;
587
595
  apiKey: z.ZodOptional<z.ZodString>;
588
596
  baseURL: z.ZodOptional<z.ZodString>;
597
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
589
598
  }, z.core.$strip>, z.ZodString]>>;
590
599
  timeout: z.ZodOptional<z.ZodNumber>;
591
600
  selector: z.ZodOptional<z.ZodString>;
@@ -605,6 +614,7 @@ export declare const ExtractRequestSchema: z.ZodObject<{
605
614
  modelName: z.ZodString;
606
615
  apiKey: z.ZodOptional<z.ZodString>;
607
616
  baseURL: z.ZodOptional<z.ZodString>;
617
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
608
618
  }, z.core.$strip>, z.ZodString]>>;
609
619
  timeout: z.ZodOptional<z.ZodNumber>;
610
620
  selector: z.ZodOptional<z.ZodString>;
@@ -635,7 +645,9 @@ export declare const ObserveOptionsSchema: z.ZodOptional<z.ZodObject<{
635
645
  modelName: z.ZodString;
636
646
  apiKey: z.ZodOptional<z.ZodString>;
637
647
  baseURL: z.ZodOptional<z.ZodString>;
648
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
638
649
  }, z.core.$strip>, z.ZodString]>>;
650
+ variables: z.ZodOptional<z.ZodType<import("./agent.js").Variables, unknown, z.core.$ZodTypeInternals<import("./agent.js").Variables, unknown>>>;
639
651
  timeout: z.ZodOptional<z.ZodNumber>;
640
652
  selector: z.ZodOptional<z.ZodString>;
641
653
  }, z.core.$strip>>;
@@ -653,7 +665,9 @@ export declare const ObserveRequestSchema: z.ZodObject<{
653
665
  modelName: z.ZodString;
654
666
  apiKey: z.ZodOptional<z.ZodString>;
655
667
  baseURL: z.ZodOptional<z.ZodString>;
668
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
656
669
  }, z.core.$strip>, z.ZodString]>>;
670
+ variables: z.ZodOptional<z.ZodType<import("./agent.js").Variables, unknown, z.core.$ZodTypeInternals<import("./agent.js").Variables, unknown>>>;
657
671
  timeout: z.ZodOptional<z.ZodNumber>;
658
672
  selector: z.ZodOptional<z.ZodString>;
659
673
  }, z.core.$strip>>;
@@ -702,6 +716,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
702
716
  modelName: z.ZodString;
703
717
  apiKey: z.ZodOptional<z.ZodString>;
704
718
  baseURL: z.ZodOptional<z.ZodString>;
719
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
705
720
  }, z.core.$strip>, z.ZodString]>>;
706
721
  systemPrompt: z.ZodOptional<z.ZodString>;
707
722
  cua: z.ZodOptional<z.ZodBoolean>;
@@ -721,6 +736,7 @@ export declare const AgentConfigSchema: z.ZodObject<{
721
736
  modelName: z.ZodString;
722
737
  apiKey: z.ZodOptional<z.ZodString>;
723
738
  baseURL: z.ZodOptional<z.ZodString>;
739
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
724
740
  }, z.core.$strip>, z.ZodString]>>;
725
741
  }, z.core.$strip>;
726
742
  /** Action taken by the agent during execution */
@@ -774,6 +790,8 @@ export declare const AgentExecuteOptionsSchema: z.ZodObject<{
774
790
  instruction: z.ZodString;
775
791
  maxSteps: z.ZodOptional<z.ZodNumber>;
776
792
  highlightCursor: z.ZodOptional<z.ZodBoolean>;
793
+ useSearch: z.ZodOptional<z.ZodBoolean>;
794
+ toolTimeout: z.ZodOptional<z.ZodNumber>;
777
795
  }, z.core.$strip>;
778
796
  export declare const AgentExecuteRequestSchema: z.ZodObject<{
779
797
  agentConfig: z.ZodObject<{
@@ -795,6 +813,7 @@ export declare const AgentExecuteRequestSchema: z.ZodObject<{
795
813
  modelName: z.ZodString;
796
814
  apiKey: z.ZodOptional<z.ZodString>;
797
815
  baseURL: z.ZodOptional<z.ZodString>;
816
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
798
817
  }, z.core.$strip>, z.ZodString]>>;
799
818
  systemPrompt: z.ZodOptional<z.ZodString>;
800
819
  cua: z.ZodOptional<z.ZodBoolean>;
@@ -814,12 +833,15 @@ export declare const AgentExecuteRequestSchema: z.ZodObject<{
814
833
  modelName: z.ZodString;
815
834
  apiKey: z.ZodOptional<z.ZodString>;
816
835
  baseURL: z.ZodOptional<z.ZodString>;
836
+ headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
817
837
  }, z.core.$strip>, z.ZodString]>>;
818
838
  }, z.core.$strip>;
819
839
  executeOptions: z.ZodObject<{
820
840
  instruction: z.ZodString;
821
841
  maxSteps: z.ZodOptional<z.ZodNumber>;
822
842
  highlightCursor: z.ZodOptional<z.ZodBoolean>;
843
+ useSearch: z.ZodOptional<z.ZodBoolean>;
844
+ toolTimeout: z.ZodOptional<z.ZodNumber>;
823
845
  }, z.core.$strip>;
824
846
  frameId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
825
847
  streamResponse: z.ZodOptional<z.ZodBoolean>;
@@ -1039,11 +1061,9 @@ export declare const StreamEventLogDataSchema: z.ZodObject<{
1039
1061
  /**
1040
1062
  * SSE stream event sent during streaming responses.
1041
1063
  *
1042
- * IMPORTANT: Key ordering matters for Stainless SDK generation.
1043
- * The `data` field MUST be serialized first, with `status` as the first key within it.
1044
- * This allows Stainless to use `data_starts_with: '{"data":{"status":"finished"'` for event handling.
1045
- *
1046
- * Expected serialization order: {"data":{"status":...},"type":...,"id":...}
1064
+ * The SSE wire format includes an `event:` line that mirrors the stream status
1065
+ * (`starting`, `connected`, `running`, `finished`, or `error`) followed by a
1066
+ * JSON `data:` line containing the typed payload below.
1047
1067
  */
1048
1068
  export declare const StreamEventSchema: z.ZodObject<{
1049
1069
  data: z.ZodUnion<readonly [z.ZodObject<{
@@ -9,6 +9,8 @@
9
9
  * All TypeScript types are inferred from the Zod4 *Schemas using z.infer<>
10
10
  */
11
11
  import { z } from "zod/v4";
12
+ import { VariablesSchema } from "./variables.js";
13
+ export { VariablePrimitiveSchema, VariableValueSchema, VariablesSchema, } from "./variables.js";
12
14
  // =============================================================================
13
15
  // Shared Components
14
16
  // =============================================================================
@@ -38,6 +40,7 @@ export const LocalBrowserLaunchOptionsSchema = z
38
40
  hasTouch: z.boolean().optional(),
39
41
  ignoreHTTPSErrors: z.boolean().optional(),
40
42
  cdpUrl: z.string().optional(),
43
+ cdpHeaders: z.record(z.string(), z.string()).optional(),
41
44
  connectTimeoutMs: z.number().optional(),
42
45
  downloadsPath: z.string().optional(),
43
46
  acceptDownloads: z.boolean().optional(),
@@ -66,6 +69,9 @@ export const ModelConfigObjectSchema = z
66
69
  description: "Base URL for the model provider",
67
70
  example: "https://api.openai.com/v1",
68
71
  }),
72
+ headers: z.record(z.string(), z.string()).optional().meta({
73
+ description: "Custom headers sent with every request to the model provider",
74
+ }),
69
75
  })
70
76
  .meta({ id: "ModelConfigObject" });
71
77
  /** Model configuration */
@@ -359,12 +365,15 @@ export const ActOptionsSchema = z
359
365
  model: z.union([ModelConfigSchema, z.string()]).optional().meta({
360
366
  description: "Model configuration object or model name string (e.g., 'openai/gpt-5-nano')",
361
367
  }),
362
- variables: z
363
- .record(z.string(), z.string())
364
- .optional()
365
- .meta({
366
- description: "Variables to substitute in the action instruction",
367
- example: { username: "john_doe" },
368
+ variables: VariablesSchema.optional().meta({
369
+ description: "Variables to substitute in the action instruction. Accepts flat primitives or { value, description? } objects.",
370
+ example: {
371
+ username: "john_doe",
372
+ password: {
373
+ value: "secret123",
374
+ description: "The login password",
375
+ },
376
+ },
368
377
  }),
369
378
  timeout: z.number().optional().meta({
370
379
  description: "Timeout in ms for the action",
@@ -478,6 +487,16 @@ export const ObserveOptionsSchema = z
478
487
  model: z.union([ModelConfigSchema, z.string()]).optional().meta({
479
488
  description: "Model configuration object or model name string (e.g., 'openai/gpt-5-nano')",
480
489
  }),
490
+ variables: VariablesSchema.optional().meta({
491
+ description: "Variables whose names are exposed to the model so observe() returns %variableName% placeholders in suggested action arguments instead of literal values. Accepts flat primitives or { value, description? } objects.",
492
+ example: {
493
+ username: {
494
+ value: "john@example.com",
495
+ description: "The login email",
496
+ },
497
+ rememberMe: true,
498
+ },
499
+ }),
481
500
  timeout: z.number().optional().meta({
482
501
  description: "Timeout in ms for the observation",
483
502
  example: 30000,
@@ -620,6 +639,14 @@ export const AgentExecuteOptionsSchema = z
620
639
  description: "Whether to visually highlight the cursor during execution",
621
640
  example: true,
622
641
  }),
642
+ useSearch: z.boolean().optional().meta({
643
+ description: "Whether to enable the web search tool powered by Browserbase Search API",
644
+ example: true,
645
+ }),
646
+ toolTimeout: z.number().optional().meta({
647
+ description: "Timeout in milliseconds for each agent tool call",
648
+ example: 30000,
649
+ }),
623
650
  })
624
651
  .meta({ id: "AgentExecuteOptions" });
625
652
  export const AgentExecuteRequestSchema = z
@@ -789,11 +816,9 @@ export const StreamEventLogDataSchema = z
789
816
  /**
790
817
  * SSE stream event sent during streaming responses.
791
818
  *
792
- * IMPORTANT: Key ordering matters for Stainless SDK generation.
793
- * The `data` field MUST be serialized first, with `status` as the first key within it.
794
- * This allows Stainless to use `data_starts_with: '{"data":{"status":"finished"'` for event handling.
795
- *
796
- * Expected serialization order: {"data":{"status":...},"type":...,"id":...}
819
+ * The SSE wire format includes an `event:` line that mirrors the stream status
820
+ * (`starting`, `connected`, `running`, `finished`, or `error`) followed by a
821
+ * JSON `data:` line containing the typed payload below.
797
822
  */
798
823
  export const StreamEventSchema = z
799
824
  .object({
@@ -806,7 +831,7 @@ export const StreamEventSchema = z
806
831
  })
807
832
  .meta({
808
833
  id: "StreamEvent",
809
- description: "Server-Sent Event emitted during streaming responses. Events are sent as `data: <JSON>\\n\\n`. Key order: data (with status first), type, id.",
834
+ description: "Server-Sent Event emitted during streaming responses. Events are sent as `event: <status>\\ndata: <JSON>\\n\\n`, where the JSON payload has the shape `{ data, type, id }`.",
810
835
  });
811
836
  // =============================================================================
812
837
  // OpenAPI Components