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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1588) hide show
  1. package/dist/cjs/cli.js +2 -210
  2. package/dist/cjs/index.d.ts +1 -0
  3. package/dist/cjs/index.js +2 -25025
  4. package/dist/cjs/lib/inference.js +335 -0
  5. package/dist/cjs/lib/inference.js.map +1 -0
  6. package/dist/cjs/lib/inferenceLogUtils.js +99 -0
  7. package/dist/cjs/lib/inferenceLogUtils.js.map +1 -0
  8. package/dist/cjs/lib/logger.js +331 -0
  9. package/dist/cjs/lib/logger.js.map +1 -0
  10. package/dist/cjs/lib/modelUtils.d.ts +1 -0
  11. package/dist/cjs/lib/modelUtils.js +53 -0
  12. package/dist/cjs/lib/modelUtils.js.map +1 -0
  13. package/dist/cjs/lib/prompt.d.ts +3 -2
  14. package/dist/cjs/lib/prompt.js +245 -0
  15. package/dist/cjs/lib/prompt.js.map +1 -0
  16. package/dist/cjs/lib/utils.d.ts +1 -0
  17. package/dist/cjs/lib/utils.js +674 -0
  18. package/dist/cjs/lib/utils.js.map +1 -0
  19. package/dist/cjs/lib/v3/agent/AgentClient.d.ts +8 -0
  20. package/dist/cjs/lib/v3/agent/AgentClient.js +34 -0
  21. package/dist/cjs/lib/v3/agent/AgentClient.js.map +1 -0
  22. package/dist/cjs/lib/v3/agent/AgentProvider.js +81 -0
  23. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -0
  24. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +843 -0
  25. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
  26. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js +802 -0
  27. package/dist/cjs/lib/v3/agent/GoogleCUAClient.js.map +1 -0
  28. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js +778 -0
  29. package/dist/cjs/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
  30. package/dist/cjs/lib/v3/agent/OpenAICUAClient.d.ts +4 -4
  31. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js +681 -0
  32. package/dist/cjs/lib/v3/agent/OpenAICUAClient.js.map +1 -0
  33. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.d.ts +7 -3
  34. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js +212 -0
  35. package/dist/cjs/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
  36. package/dist/cjs/lib/v3/agent/tools/act.d.ts +2 -2
  37. package/dist/cjs/lib/v3/agent/tools/act.js +66 -0
  38. package/dist/cjs/lib/v3/agent/tools/act.js.map +1 -0
  39. package/dist/cjs/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  40. package/dist/cjs/lib/v3/agent/tools/ariaTree.js +62 -0
  41. package/dist/cjs/lib/v3/agent/tools/ariaTree.js.map +1 -0
  42. package/dist/cjs/lib/v3/agent/tools/braveSearch.js +77 -0
  43. package/dist/cjs/lib/v3/agent/tools/braveSearch.js.map +1 -0
  44. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  45. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js +70 -0
  46. package/dist/cjs/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  47. package/dist/cjs/lib/v3/agent/tools/click.js +100 -0
  48. package/dist/cjs/lib/v3/agent/tools/click.js.map +1 -0
  49. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js +72 -0
  50. package/dist/cjs/lib/v3/agent/tools/clickAndHold.js.map +1 -0
  51. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js +101 -0
  52. package/dist/cjs/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
  53. package/dist/cjs/lib/v3/agent/tools/extract.d.ts +2 -2
  54. package/dist/cjs/lib/v3/agent/tools/extract.js +101 -0
  55. package/dist/cjs/lib/v3/agent/tools/extract.js.map +1 -0
  56. package/dist/cjs/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  57. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js +158 -0
  58. package/dist/cjs/lib/v3/agent/tools/fillFormVision.js.map +1 -0
  59. package/dist/cjs/lib/v3/agent/tools/fillform.d.ts +8 -3
  60. package/dist/cjs/lib/v3/agent/tools/fillform.js +78 -0
  61. package/dist/cjs/lib/v3/agent/tools/fillform.js.map +1 -0
  62. package/dist/cjs/lib/v3/agent/tools/goto.js +35 -0
  63. package/dist/cjs/lib/v3/agent/tools/goto.js.map +1 -0
  64. package/dist/cjs/lib/v3/agent/tools/index.d.ts +25 -4
  65. package/dist/cjs/lib/v3/agent/tools/index.js +130 -0
  66. package/dist/cjs/lib/v3/agent/tools/index.js.map +1 -0
  67. package/dist/cjs/lib/v3/agent/tools/keys.d.ts +1 -1
  68. package/dist/cjs/lib/v3/agent/tools/keys.js +64 -0
  69. package/dist/cjs/lib/v3/agent/tools/keys.js.map +1 -0
  70. package/dist/cjs/lib/v3/agent/tools/navback.js +27 -0
  71. package/dist/cjs/lib/v3/agent/tools/navback.js.map +1 -0
  72. package/dist/cjs/lib/v3/agent/tools/screenshot.d.ts +8 -0
  73. package/dist/cjs/lib/v3/agent/tools/screenshot.js +47 -0
  74. package/dist/cjs/lib/v3/agent/tools/screenshot.js.map +1 -0
  75. package/dist/cjs/lib/v3/agent/tools/scroll.js +159 -0
  76. package/dist/cjs/lib/v3/agent/tools/scroll.js.map +1 -0
  77. package/dist/cjs/lib/v3/agent/tools/think.js +28 -0
  78. package/dist/cjs/lib/v3/agent/tools/think.js.map +1 -0
  79. package/dist/cjs/lib/v3/agent/tools/type.d.ts +2 -2
  80. package/dist/cjs/lib/v3/agent/tools/type.js +111 -0
  81. package/dist/cjs/lib/v3/agent/tools/type.js.map +1 -0
  82. package/dist/cjs/lib/v3/agent/tools/wait.js +63 -0
  83. package/dist/cjs/lib/v3/agent/tools/wait.js.map +1 -0
  84. package/dist/cjs/lib/v3/agent/utils/actionMapping.js +103 -0
  85. package/dist/cjs/lib/v3/agent/utils/actionMapping.js.map +1 -0
  86. package/dist/cjs/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
  87. package/dist/cjs/lib/v3/agent/utils/captchaSolver.js +175 -0
  88. package/dist/cjs/lib/v3/agent/utils/captchaSolver.js.map +1 -0
  89. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js +33 -0
  90. package/dist/cjs/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
  91. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js +65 -0
  92. package/dist/cjs/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
  93. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js +150 -0
  94. package/dist/cjs/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
  95. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js +108 -0
  96. package/dist/cjs/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
  97. package/dist/cjs/lib/v3/agent/utils/imageCompression.js +212 -0
  98. package/dist/cjs/lib/v3/agent/utils/imageCompression.js.map +1 -0
  99. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js +167 -0
  100. package/dist/cjs/lib/v3/agent/utils/messageProcessing.js.map +1 -0
  101. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js +29 -0
  102. package/dist/cjs/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
  103. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js +90 -0
  104. package/dist/cjs/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
  105. package/dist/cjs/lib/v3/agent/utils/variables.d.ts +21 -0
  106. package/dist/cjs/lib/v3/agent/utils/variables.js +54 -0
  107. package/dist/cjs/lib/v3/agent/utils/variables.js.map +1 -0
  108. package/dist/cjs/lib/v3/agent/utils/xpath.js +22 -0
  109. package/dist/cjs/lib/v3/agent/utils/xpath.js.map +1 -0
  110. package/dist/cjs/lib/v3/api.d.ts +23 -5
  111. package/dist/cjs/lib/v3/api.js +589 -0
  112. package/dist/cjs/lib/v3/api.js.map +1 -0
  113. package/dist/cjs/lib/v3/cache/ActCache.d.ts +0 -1
  114. package/dist/cjs/lib/v3/cache/ActCache.js +280 -0
  115. package/dist/cjs/lib/v3/cache/ActCache.js.map +1 -0
  116. package/dist/cjs/lib/v3/cache/AgentCache.d.ts +1 -0
  117. package/dist/cjs/lib/v3/cache/AgentCache.js +651 -0
  118. package/dist/cjs/lib/v3/cache/AgentCache.js.map +1 -0
  119. package/dist/cjs/lib/v3/cache/CacheStorage.js +105 -0
  120. package/dist/cjs/lib/v3/cache/CacheStorage.js.map +1 -0
  121. package/dist/cjs/lib/v3/cache/serverAgentCache.js +52 -0
  122. package/dist/cjs/lib/v3/cache/serverAgentCache.js.map +1 -0
  123. package/dist/cjs/lib/v3/cache/utils.js +44 -0
  124. package/dist/cjs/lib/v3/cache/utils.js.map +1 -0
  125. package/dist/cjs/lib/v3/cli.js +15 -0
  126. package/dist/cjs/lib/v3/cli.js.map +1 -0
  127. package/dist/cjs/lib/v3/dom/a11yScripts/index.js +124 -0
  128. package/dist/cjs/lib/v3/dom/a11yScripts/index.js.map +1 -0
  129. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js +23 -0
  130. package/dist/cjs/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
  131. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js +59 -0
  132. package/dist/cjs/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
  133. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js +5 -0
  134. package/dist/cjs/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
  135. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js +11 -0
  136. package/dist/cjs/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
  137. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js +5 -0
  138. package/dist/cjs/lib/v3/dom/build/scriptV3Content.js.map +1 -0
  139. package/dist/cjs/lib/v3/dom/index.js +18 -0
  140. package/dist/cjs/lib/v3/dom/index.js.map +1 -0
  141. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js +278 -0
  142. package/dist/cjs/lib/v3/dom/locatorScripts/counts.js.map +1 -0
  143. package/dist/cjs/lib/v3/dom/locatorScripts/index.js +21 -0
  144. package/dist/cjs/lib/v3/dom/locatorScripts/index.js.map +1 -0
  145. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js +474 -0
  146. package/dist/cjs/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
  147. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js +289 -0
  148. package/dist/cjs/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
  149. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js +286 -0
  150. package/dist/cjs/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
  151. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js +381 -0
  152. package/dist/cjs/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
  153. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js +202 -0
  154. package/dist/cjs/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
  155. package/dist/cjs/lib/v3/dom/piercer.entry.js +5 -0
  156. package/dist/cjs/lib/v3/dom/piercer.entry.js.map +1 -0
  157. package/dist/cjs/lib/v3/dom/piercer.runtime.js +93 -0
  158. package/dist/cjs/lib/v3/dom/piercer.runtime.js.map +1 -0
  159. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js +5 -0
  160. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
  161. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js +43 -0
  162. package/dist/cjs/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
  163. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js +6 -0
  164. package/dist/cjs/lib/v3/dom/screenshotScripts/index.js.map +1 -0
  165. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js +85 -0
  166. package/dist/cjs/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
  167. package/dist/cjs/lib/v3/external_clients/aisdk.js +107 -0
  168. package/dist/cjs/lib/v3/external_clients/aisdk.js.map +1 -0
  169. package/dist/cjs/lib/v3/external_clients/customOpenAI.js +224 -0
  170. package/dist/cjs/lib/v3/external_clients/customOpenAI.js.map +1 -0
  171. package/dist/cjs/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  172. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js +30 -0
  173. package/dist/cjs/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  174. package/dist/cjs/lib/v3/flowlogger/EventSink.d.ts +44 -0
  175. package/dist/cjs/lib/v3/flowlogger/EventSink.js +217 -0
  176. package/dist/cjs/lib/v3/flowlogger/EventSink.js.map +1 -0
  177. package/dist/cjs/lib/v3/flowlogger/EventStore.d.ts +26 -0
  178. package/dist/cjs/lib/v3/flowlogger/EventStore.js +135 -0
  179. package/dist/cjs/lib/v3/flowlogger/EventStore.js.map +1 -0
  180. package/dist/cjs/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
  181. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js +591 -0
  182. package/dist/cjs/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  183. package/dist/cjs/lib/v3/flowlogger/prettify.d.ts +6 -0
  184. package/dist/cjs/lib/v3/flowlogger/prettify.js +395 -0
  185. package/dist/cjs/lib/v3/flowlogger/prettify.js.map +1 -0
  186. package/dist/cjs/lib/v3/handlers/actHandler.d.ts +2 -1
  187. package/dist/cjs/lib/v3/handlers/actHandler.js +344 -0
  188. package/dist/cjs/lib/v3/handlers/actHandler.js.map +1 -0
  189. package/dist/cjs/lib/v3/handlers/extractHandler.js +144 -0
  190. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -0
  191. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js +590 -0
  192. package/dist/cjs/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
  193. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js +17 -0
  194. package/dist/cjs/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
  195. package/dist/cjs/lib/v3/handlers/observeHandler.js +159 -0
  196. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -0
  197. package/dist/cjs/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
  198. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js +506 -0
  199. package/dist/cjs/lib/v3/handlers/v3AgentHandler.js.map +1 -0
  200. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
  201. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +652 -0
  202. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
  203. package/dist/cjs/lib/v3/index.d.ts +143 -0
  204. package/dist/cjs/lib/v3/index.js +119 -0
  205. package/dist/cjs/lib/v3/index.js.map +1 -0
  206. package/dist/cjs/lib/v3/launch/browserbase.d.ts +1 -1
  207. package/dist/cjs/lib/v3/launch/browserbase.js +47 -0
  208. package/dist/cjs/lib/v3/launch/browserbase.js.map +1 -0
  209. package/dist/cjs/lib/v3/launch/local.js +104 -0
  210. package/dist/cjs/lib/v3/launch/local.js.map +1 -0
  211. package/dist/cjs/lib/v3/llm/AnthropicClient.js +246 -0
  212. package/dist/cjs/lib/v3/llm/AnthropicClient.js.map +1 -0
  213. package/dist/cjs/lib/v3/llm/CerebrasClient.js +242 -0
  214. package/dist/cjs/lib/v3/llm/CerebrasClient.js.map +1 -0
  215. package/dist/cjs/lib/v3/llm/GoogleClient.js +373 -0
  216. package/dist/cjs/lib/v3/llm/GoogleClient.js.map +1 -0
  217. package/dist/cjs/lib/v3/llm/GroqClient.js +243 -0
  218. package/dist/cjs/lib/v3/llm/GroqClient.js.map +1 -0
  219. package/dist/cjs/lib/v3/llm/LLMClient.js +27 -0
  220. package/dist/cjs/lib/v3/llm/LLMClient.js.map +1 -0
  221. package/dist/cjs/lib/v3/llm/LLMProvider.d.ts +5 -2
  222. package/dist/cjs/lib/v3/llm/LLMProvider.js +201 -0
  223. package/dist/cjs/lib/v3/llm/LLMProvider.js.map +1 -0
  224. package/dist/cjs/lib/v3/llm/OpenAIClient.js +336 -0
  225. package/dist/cjs/lib/v3/llm/OpenAIClient.js.map +1 -0
  226. package/dist/cjs/lib/v3/llm/aisdk.js +349 -0
  227. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -0
  228. package/dist/cjs/lib/v3/logger.js +102 -0
  229. package/dist/cjs/lib/v3/logger.js.map +1 -0
  230. package/dist/cjs/lib/v3/mcp/connection.d.ts +2 -0
  231. package/dist/cjs/lib/v3/mcp/connection.js +56 -0
  232. package/dist/cjs/lib/v3/mcp/connection.js.map +1 -0
  233. package/dist/cjs/lib/v3/mcp/utils.js +40 -0
  234. package/dist/cjs/lib/v3/mcp/utils.js.map +1 -0
  235. package/dist/cjs/lib/v3/runtimePaths.d.ts +6 -0
  236. package/dist/cjs/lib/v3/runtimePaths.js +119 -0
  237. package/dist/cjs/lib/v3/runtimePaths.js.map +1 -0
  238. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js +36 -0
  239. package/dist/cjs/lib/v3/shutdown/cleanupLocal.js.map +1 -0
  240. package/dist/cjs/lib/v3/shutdown/supervisor.js +193 -0
  241. package/dist/cjs/lib/v3/shutdown/supervisor.js.map +1 -0
  242. package/dist/cjs/lib/v3/shutdown/supervisorClient.js +95 -0
  243. package/dist/cjs/lib/v3/shutdown/supervisorClient.js.map +1 -0
  244. package/dist/cjs/lib/v3/timeoutConfig.d.ts +1 -1
  245. package/dist/cjs/lib/v3/timeoutConfig.js +36 -0
  246. package/dist/cjs/lib/v3/timeoutConfig.js.map +1 -0
  247. package/dist/cjs/lib/v3/types/private/agent.js +3 -0
  248. package/dist/cjs/lib/v3/types/private/agent.js.map +1 -0
  249. package/dist/cjs/lib/v3/types/private/api.js +3 -0
  250. package/dist/cjs/lib/v3/types/private/api.js.map +1 -0
  251. package/dist/cjs/lib/v3/types/private/cache.d.ts +3 -1
  252. package/dist/cjs/lib/v3/types/private/cache.js +3 -0
  253. package/dist/cjs/lib/v3/types/private/cache.js.map +1 -0
  254. package/dist/cjs/lib/v3/types/private/evaluator.js +3 -0
  255. package/dist/cjs/lib/v3/types/private/evaluator.js.map +1 -0
  256. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -1
  257. package/dist/cjs/lib/v3/types/private/handlers.js +19 -0
  258. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -0
  259. package/dist/cjs/lib/v3/types/private/index.js +24 -0
  260. package/dist/cjs/lib/v3/types/private/index.js.map +1 -0
  261. package/dist/cjs/lib/v3/types/private/internal.js +3 -0
  262. package/dist/cjs/lib/v3/types/private/internal.js.map +1 -0
  263. package/dist/cjs/lib/v3/types/private/locator.js +3 -0
  264. package/dist/cjs/lib/v3/types/private/locator.js.map +1 -0
  265. package/dist/cjs/lib/v3/types/private/network.js +6 -0
  266. package/dist/cjs/lib/v3/types/private/network.js.map +1 -0
  267. package/dist/cjs/lib/v3/types/private/shutdown.d.ts +1 -1
  268. package/dist/cjs/lib/v3/types/private/shutdown.js +6 -0
  269. package/dist/cjs/lib/v3/types/private/shutdown.js.map +1 -0
  270. package/dist/cjs/lib/v3/types/private/shutdownErrors.js +28 -0
  271. package/dist/cjs/lib/v3/types/private/shutdownErrors.js.map +1 -0
  272. package/dist/cjs/lib/v3/types/private/snapshot.js +3 -0
  273. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -0
  274. package/dist/cjs/lib/v3/types/public/agent.d.ts +76 -4
  275. package/dist/cjs/lib/v3/types/public/agent.js +18 -0
  276. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -0
  277. package/dist/cjs/lib/v3/types/public/api.d.ts +21 -0
  278. package/dist/cjs/lib/v3/types/public/api.js +930 -0
  279. package/dist/cjs/lib/v3/types/public/api.js.map +1 -0
  280. package/dist/cjs/lib/v3/types/public/apiErrors.js +41 -0
  281. package/dist/cjs/lib/v3/types/public/apiErrors.js.map +1 -0
  282. package/dist/cjs/lib/v3/types/public/context.d.ts +32 -0
  283. package/dist/cjs/lib/v3/types/public/context.js +3 -0
  284. package/dist/cjs/lib/v3/types/public/context.js.map +1 -0
  285. package/dist/cjs/lib/v3/types/public/index.d.ts +1 -0
  286. package/dist/cjs/lib/v3/types/public/index.js +56 -0
  287. package/dist/cjs/lib/v3/types/public/index.js.map +1 -0
  288. package/dist/cjs/lib/v3/types/public/locator.js +3 -0
  289. package/dist/cjs/lib/v3/types/public/locator.js.map +1 -0
  290. package/dist/cjs/lib/v3/types/public/logs.js +16 -0
  291. package/dist/cjs/lib/v3/types/public/logs.js.map +1 -0
  292. package/dist/cjs/lib/v3/types/public/methods.d.ts +33 -2
  293. package/dist/cjs/lib/v3/types/public/methods.js +18 -0
  294. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -0
  295. package/dist/cjs/lib/v3/types/public/metrics.js +3 -0
  296. package/dist/cjs/lib/v3/types/public/metrics.js.map +1 -0
  297. package/dist/cjs/lib/v3/types/public/model.d.ts +12 -3
  298. package/dist/cjs/lib/v3/types/public/model.js +3 -0
  299. package/dist/cjs/lib/v3/types/public/model.js.map +1 -0
  300. package/dist/cjs/lib/v3/types/public/options.d.ts +15 -0
  301. package/dist/cjs/lib/v3/types/public/options.js +7 -0
  302. package/dist/cjs/lib/v3/types/public/options.js.map +1 -0
  303. package/dist/cjs/lib/v3/types/public/page.js +8 -0
  304. package/dist/cjs/lib/v3/types/public/page.js.map +1 -0
  305. package/dist/cjs/lib/v3/types/public/screenshotTypes.js +3 -0
  306. package/dist/cjs/lib/v3/types/public/screenshotTypes.js.map +1 -0
  307. package/dist/cjs/lib/v3/types/public/sdkErrors.d.ts +13 -0
  308. package/dist/cjs/lib/v3/types/public/sdkErrors.js +390 -0
  309. package/dist/cjs/lib/v3/types/public/sdkErrors.js.map +1 -0
  310. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +204 -0
  311. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
  312. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js +124 -0
  313. package/dist/cjs/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
  314. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js +345 -0
  315. package/dist/cjs/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
  316. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +132 -0
  317. package/dist/cjs/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
  318. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js +285 -0
  319. package/dist/cjs/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
  320. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  321. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js +226 -0
  322. package/dist/cjs/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
  323. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js +12 -0
  324. package/dist/cjs/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
  325. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js +26 -0
  326. package/dist/cjs/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
  327. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +143 -0
  328. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
  329. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js +110 -0
  330. package/dist/cjs/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
  331. package/dist/cjs/lib/v3/understudy/a11yInvocation.js +15 -0
  332. package/dist/cjs/lib/v3/understudy/a11yInvocation.js.map +1 -0
  333. package/dist/cjs/lib/v3/understudy/cdp.d.ts +9 -13
  334. package/dist/cjs/lib/v3/understudy/cdp.js +430 -0
  335. package/dist/cjs/lib/v3/understudy/cdp.js.map +1 -0
  336. package/dist/cjs/lib/v3/understudy/consoleMessage.js +70 -0
  337. package/dist/cjs/lib/v3/understudy/consoleMessage.js.map +1 -0
  338. package/dist/cjs/lib/v3/understudy/context.d.ts +34 -0
  339. package/dist/cjs/lib/v3/understudy/context.js +960 -0
  340. package/dist/cjs/lib/v3/understudy/context.js.map +1 -0
  341. package/dist/cjs/lib/v3/understudy/cookies.d.ts +32 -0
  342. package/dist/cjs/lib/v3/understudy/cookies.js +142 -0
  343. package/dist/cjs/lib/v3/understudy/cookies.js.map +1 -0
  344. package/dist/cjs/lib/v3/understudy/deepLocator.js +204 -0
  345. package/dist/cjs/lib/v3/understudy/deepLocator.js.map +1 -0
  346. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js +87 -0
  347. package/dist/cjs/lib/v3/understudy/executionContextRegistry.js.map +1 -0
  348. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js +88 -0
  349. package/dist/cjs/lib/v3/understudy/fileUploadUtils.js.map +1 -0
  350. package/dist/cjs/lib/v3/understudy/frame.js +232 -0
  351. package/dist/cjs/lib/v3/understudy/frame.js.map +1 -0
  352. package/dist/cjs/lib/v3/understudy/frameLocator.js +260 -0
  353. package/dist/cjs/lib/v3/understudy/frameLocator.js.map +1 -0
  354. package/dist/cjs/lib/v3/understudy/frameRegistry.js +302 -0
  355. package/dist/cjs/lib/v3/understudy/frameRegistry.js.map +1 -0
  356. package/dist/cjs/lib/v3/understudy/initScripts.js +36 -0
  357. package/dist/cjs/lib/v3/understudy/initScripts.js.map +1 -0
  358. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js +249 -0
  359. package/dist/cjs/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
  360. package/dist/cjs/lib/v3/understudy/locator.js +790 -0
  361. package/dist/cjs/lib/v3/understudy/locator.js.map +1 -0
  362. package/dist/cjs/lib/v3/understudy/locatorInvocation.js +15 -0
  363. package/dist/cjs/lib/v3/understudy/locatorInvocation.js.map +1 -0
  364. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js +228 -0
  365. package/dist/cjs/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
  366. package/dist/cjs/lib/v3/understudy/networkManager.js +310 -0
  367. package/dist/cjs/lib/v3/understudy/networkManager.js.map +1 -0
  368. package/dist/cjs/lib/v3/understudy/page.d.ts +13 -0
  369. package/dist/cjs/lib/v3/understudy/page.js +2008 -0
  370. package/dist/cjs/lib/v3/understudy/page.js.map +1 -0
  371. package/dist/cjs/lib/v3/understudy/piercer.js +65 -0
  372. package/dist/cjs/lib/v3/understudy/piercer.js.map +1 -0
  373. package/dist/cjs/lib/v3/understudy/response.js +335 -0
  374. package/dist/cjs/lib/v3/understudy/response.js.map +1 -0
  375. package/dist/cjs/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  376. package/dist/cjs/lib/v3/understudy/screenshotUtils.js +345 -0
  377. package/dist/cjs/lib/v3/understudy/screenshotUtils.js.map +1 -0
  378. package/dist/cjs/lib/v3/understudy/selectorResolver.js +300 -0
  379. package/dist/cjs/lib/v3/understudy/selectorResolver.js.map +1 -0
  380. package/dist/cjs/lib/v3/v3.d.ts +26 -3
  381. package/dist/cjs/lib/v3/v3.js +1679 -0
  382. package/dist/cjs/lib/v3/v3.js.map +1 -0
  383. package/dist/cjs/lib/v3/zodCompat.js +26 -0
  384. package/dist/cjs/lib/v3/zodCompat.js.map +1 -0
  385. package/dist/cjs/lib/v3Evaluator.js +214 -0
  386. package/dist/cjs/lib/v3Evaluator.js.map +1 -0
  387. package/dist/cjs/lib/version.d.ts +1 -1
  388. package/dist/cjs/lib/version.js +9 -0
  389. package/dist/cjs/lib/version.js.map +1 -0
  390. package/dist/cjs/tests/cache-variables.test.js +221 -0
  391. package/dist/cjs/tests/cache-variables.test.js.map +1 -0
  392. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +123 -0
  393. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +1 -0
  394. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +83 -0
  395. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  396. package/dist/cjs/tests/integration/agent-callbacks.spec.js +385 -0
  397. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +1 -0
  398. package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js +56 -0
  399. package/dist/cjs/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
  400. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +362 -0
  401. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  402. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +262 -0
  403. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  404. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +112 -0
  405. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +1 -0
  406. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +1 -0
  407. package/dist/cjs/tests/integration/agent-streaming.spec.js +140 -0
  408. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +1 -0
  409. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  410. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +41 -0
  411. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  412. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  413. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +76 -0
  414. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +1 -0
  415. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  416. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +45 -0
  417. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +1 -0
  418. package/dist/cjs/tests/integration/click-count.spec.d.ts +1 -0
  419. package/dist/cjs/tests/integration/click-count.spec.js +163 -0
  420. package/dist/cjs/tests/integration/click-count.spec.js.map +1 -0
  421. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  422. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +99 -0
  423. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  424. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +1 -0
  425. package/dist/cjs/tests/integration/context-addInitScript.spec.js +285 -0
  426. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +1 -0
  427. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  428. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +49 -0
  429. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  430. package/dist/cjs/tests/integration/cookies.spec.d.ts +1 -0
  431. package/dist/cjs/tests/integration/cookies.spec.js +187 -0
  432. package/dist/cjs/tests/integration/cookies.spec.js.map +1 -0
  433. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +1 -0
  434. package/dist/cjs/tests/integration/default-page-tracking.spec.js +52 -0
  435. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +1 -0
  436. package/dist/cjs/tests/integration/downloads.spec.d.ts +1 -0
  437. package/dist/cjs/tests/integration/downloads.spec.js +52 -0
  438. package/dist/cjs/tests/integration/downloads.spec.js.map +1 -0
  439. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +1 -0
  440. package/dist/cjs/tests/integration/flowLogger.spec.js +714 -0
  441. package/dist/cjs/tests/integration/flowLogger.spec.js.map +1 -0
  442. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  443. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +57 -0
  444. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  445. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  446. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +219 -0
  447. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  448. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  449. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +474 -0
  450. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  451. package/dist/cjs/tests/integration/keep-alive.child.d.ts +1 -0
  452. package/dist/cjs/tests/integration/keep-alive.child.js +85 -0
  453. package/dist/cjs/tests/integration/keep-alive.child.js.map +1 -0
  454. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +22 -0
  455. package/dist/cjs/tests/integration/keep-alive.spec.js +490 -0
  456. package/dist/cjs/tests/integration/keep-alive.spec.js.map +1 -0
  457. package/dist/cjs/tests/integration/keyboard.spec.d.ts +1 -0
  458. package/dist/cjs/tests/integration/keyboard.spec.js +259 -0
  459. package/dist/cjs/tests/integration/keyboard.spec.js.map +1 -0
  460. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  461. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +150 -0
  462. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  463. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +1 -0
  464. package/dist/cjs/tests/integration/locator-content-methods.spec.js +180 -0
  465. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +1 -0
  466. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  467. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +129 -0
  468. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +1 -0
  469. package/dist/cjs/tests/integration/locator-count.spec.d.ts +1 -0
  470. package/dist/cjs/tests/integration/locator-count.spec.js +68 -0
  471. package/dist/cjs/tests/integration/locator-count.spec.js.map +1 -0
  472. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +1 -0
  473. package/dist/cjs/tests/integration/locator-fill.spec.js +117 -0
  474. package/dist/cjs/tests/integration/locator-fill.spec.js.map +1 -0
  475. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +1 -0
  476. package/dist/cjs/tests/integration/locator-input-methods.spec.js +127 -0
  477. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +1 -0
  478. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +1 -0
  479. package/dist/cjs/tests/integration/locator-nth.spec.js +175 -0
  480. package/dist/cjs/tests/integration/locator-nth.spec.js.map +1 -0
  481. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +1 -0
  482. package/dist/cjs/tests/integration/locator-select-option.spec.js +216 -0
  483. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +1 -0
  484. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +1 -0
  485. package/dist/cjs/tests/integration/logger-initialization.spec.js +597 -0
  486. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +1 -0
  487. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  488. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +293 -0
  489. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +1 -0
  490. package/dist/cjs/tests/integration/nested-div.spec.d.ts +1 -0
  491. package/dist/cjs/tests/integration/nested-div.spec.js +22 -0
  492. package/dist/cjs/tests/integration/nested-div.spec.js.map +1 -0
  493. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +1 -0
  494. package/dist/cjs/tests/integration/page-addInitScript.spec.js +94 -0
  495. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +1 -0
  496. package/dist/cjs/tests/integration/page-console.spec.d.ts +1 -0
  497. package/dist/cjs/tests/integration/page-console.spec.js +47 -0
  498. package/dist/cjs/tests/integration/page-console.spec.js.map +1 -0
  499. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  500. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +437 -0
  501. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  502. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  503. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +85 -0
  504. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  505. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +1 -0
  506. package/dist/cjs/tests/integration/page-goto-response.spec.js +34 -0
  507. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +1 -0
  508. package/dist/cjs/tests/integration/page-hover.spec.d.ts +1 -0
  509. package/dist/cjs/tests/integration/page-hover.spec.js +165 -0
  510. package/dist/cjs/tests/integration/page-hover.spec.js.map +1 -0
  511. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +1 -0
  512. package/dist/cjs/tests/integration/page-screenshot.spec.js +292 -0
  513. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +1 -0
  514. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +1 -0
  515. package/dist/cjs/tests/integration/page-scroll.spec.js +183 -0
  516. package/dist/cjs/tests/integration/page-scroll.spec.js.map +1 -0
  517. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +1 -0
  518. package/dist/cjs/tests/integration/page-send-cdp.spec.js +47 -0
  519. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +1 -0
  520. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  521. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +63 -0
  522. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +1 -0
  523. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +1 -0
  524. package/dist/cjs/tests/integration/setinputfiles.spec.js +133 -0
  525. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +1 -0
  526. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  527. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +161 -0
  528. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  529. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  530. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +160 -0
  531. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  532. package/dist/cjs/tests/integration/testUtils.d.ts +40 -0
  533. package/dist/cjs/tests/integration/testUtils.js +188 -0
  534. package/dist/cjs/tests/integration/testUtils.js.map +1 -0
  535. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  536. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +105 -0
  537. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +1 -0
  538. package/dist/cjs/tests/integration/timeouts.spec.d.ts +1 -0
  539. package/dist/cjs/tests/integration/timeouts.spec.js +307 -0
  540. package/dist/cjs/tests/integration/timeouts.spec.js.map +1 -0
  541. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +1 -0
  542. package/dist/cjs/tests/integration/user-data-dir.spec.js +77 -0
  543. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +1 -0
  544. package/dist/cjs/tests/integration/v3.config.d.ts +4 -0
  545. package/dist/cjs/tests/integration/v3.config.js +11 -0
  546. package/dist/cjs/tests/integration/v3.config.js.map +1 -0
  547. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +4 -0
  548. package/dist/cjs/tests/integration/v3.dynamic.config.js +48 -0
  549. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +1 -0
  550. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +2 -0
  551. package/dist/cjs/tests/integration/v3.playwright.config.js +48 -0
  552. package/dist/cjs/tests/integration/v3.playwright.config.js.map +1 -0
  553. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +1 -0
  554. package/dist/cjs/tests/integration/wait-for-selector.spec.js +683 -0
  555. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +1 -0
  556. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  557. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +118 -0
  558. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +1 -0
  559. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  560. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +87 -0
  561. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  562. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
  563. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +285 -0
  564. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +1 -0
  565. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +1 -0
  566. package/dist/cjs/tests/unit/agent-execution-model.test.js +128 -0
  567. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +1 -0
  568. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +1 -0
  569. package/dist/cjs/tests/unit/api-multiregion.test.js +58 -0
  570. package/dist/cjs/tests/unit/api-multiregion.test.js.map +1 -0
  571. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  572. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +122 -0
  573. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  574. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  575. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +186 -0
  576. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +1 -0
  577. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +1 -0
  578. package/dist/cjs/tests/unit/captcha-solver.test.js +154 -0
  579. package/dist/cjs/tests/unit/captcha-solver.test.js.map +1 -0
  580. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +1 -0
  581. package/dist/cjs/tests/unit/cdp-connection-close.test.js +74 -0
  582. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +1 -0
  583. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  584. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +58 -0
  585. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +1 -0
  586. package/dist/cjs/tests/unit/cookies.test.d.ts +1 -0
  587. package/dist/cjs/tests/unit/cookies.test.js +944 -0
  588. package/dist/cjs/tests/unit/cookies.test.js.map +1 -0
  589. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  590. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +95 -0
  591. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  592. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  593. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +43 -0
  594. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  595. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  596. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +250 -0
  597. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  598. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  599. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +29 -0
  600. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +1 -0
  601. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +1 -0
  602. package/dist/cjs/tests/unit/llm-middleware.test.js +495 -0
  603. package/dist/cjs/tests/unit/llm-middleware.test.js.map +1 -0
  604. package/dist/cjs/tests/unit/llm-provider.test.d.ts +1 -0
  605. package/dist/cjs/tests/unit/llm-provider.test.js +64 -0
  606. package/dist/cjs/tests/unit/llm-provider.test.js.map +1 -0
  607. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +1 -0
  608. package/dist/cjs/tests/unit/model-deprecation.test.js +142 -0
  609. package/dist/cjs/tests/unit/model-deprecation.test.js.map +1 -0
  610. package/dist/cjs/tests/unit/model-utils.test.d.ts +1 -0
  611. package/dist/cjs/tests/unit/model-utils.test.js +42 -0
  612. package/dist/cjs/tests/unit/model-utils.test.js.map +1 -0
  613. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +1 -0
  614. package/dist/cjs/tests/unit/openai-cua-client.test.js +71 -0
  615. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +1 -0
  616. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  617. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +92 -0
  618. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +1 -0
  619. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +1 -0
  620. package/dist/cjs/tests/unit/page-snapshot.test.js +75 -0
  621. package/dist/cjs/tests/unit/page-snapshot.test.js.map +1 -0
  622. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +1 -0
  623. package/dist/cjs/tests/unit/public-api/export-surface.test.js +107 -0
  624. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +1 -0
  625. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  626. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +175 -0
  627. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  628. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  629. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +110 -0
  630. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +1 -0
  631. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +1 -0
  632. package/dist/cjs/tests/unit/public-api/public-types.test.js +99 -0
  633. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +1 -0
  634. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  635. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +60 -0
  636. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  637. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  638. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +95 -0
  639. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +1 -0
  640. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  641. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +121 -0
  642. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  643. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  644. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +65 -0
  645. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  646. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +1 -0
  647. package/dist/cjs/tests/unit/public-api/v3-core.test.js +108 -0
  648. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +1 -0
  649. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +1 -0
  650. package/dist/cjs/tests/unit/safety-confirmation.test.js +110 -0
  651. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +1 -0
  652. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  653. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +330 -0
  654. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  655. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  656. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +286 -0
  657. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  658. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  659. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +394 -0
  660. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  661. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +1 -0
  662. package/dist/cjs/tests/unit/snapshot-cbor.test.js +204 -0
  663. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +1 -0
  664. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  665. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +220 -0
  666. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  667. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  668. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +107 -0
  669. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  670. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  671. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +89 -0
  672. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  673. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  674. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +335 -0
  675. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  676. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  677. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +84 -0
  678. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  679. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  680. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +74 -0
  681. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  682. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +1 -0
  683. package/dist/cjs/tests/unit/timeout-handlers.test.js +847 -0
  684. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +1 -0
  685. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +1 -0
  686. package/dist/cjs/tests/unit/understudy-command-exception.test.js +57 -0
  687. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +1 -0
  688. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +1 -0
  689. package/dist/cjs/tests/unit/xpath-parser.test.js +311 -0
  690. package/dist/cjs/tests/unit/xpath-parser.test.js.map +1 -0
  691. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +1 -0
  692. package/dist/cjs/tests/unit/xpath-resolver.test.js +80 -0
  693. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +1 -0
  694. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  695. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +149 -0
  696. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  697. package/dist/esm/index.d.ts +1 -2
  698. package/dist/esm/index.js +1 -2
  699. package/dist/esm/lib/inference.js +5 -8
  700. package/dist/esm/lib/inference.js.map +1 -1
  701. package/dist/esm/lib/modelUtils.d.ts +1 -0
  702. package/dist/esm/lib/modelUtils.js.map +1 -1
  703. package/dist/esm/lib/prompt.d.ts +3 -2
  704. package/dist/esm/lib/prompt.js.map +1 -1
  705. package/dist/esm/lib/utils.d.ts +1 -0
  706. package/dist/esm/lib/utils.js +3 -0
  707. package/dist/esm/lib/utils.js.map +1 -1
  708. package/dist/esm/lib/v3/agent/AgentClient.d.ts +8 -0
  709. package/dist/esm/lib/v3/agent/AgentClient.js +13 -0
  710. package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -1
  711. package/dist/esm/lib/v3/agent/AgentProvider.js +1 -1
  712. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  713. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +23 -9
  714. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  715. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +6 -7
  716. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -1
  717. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +5 -4
  718. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -1
  719. package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +4 -4
  720. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +67 -8
  721. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -1
  722. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +7 -3
  723. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +29 -6
  724. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -1
  725. package/dist/esm/lib/v3/agent/tools/act.d.ts +2 -2
  726. package/dist/esm/lib/v3/agent/tools/act.js +57 -44
  727. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -1
  728. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +8 -1
  729. package/dist/esm/lib/v3/agent/tools/ariaTree.js +49 -22
  730. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -1
  731. package/dist/esm/lib/v3/agent/tools/braveSearch.js +73 -0
  732. package/dist/esm/lib/v3/agent/tools/braveSearch.js.map +1 -0
  733. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.d.ts +13 -0
  734. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js +66 -0
  735. package/dist/esm/lib/v3/agent/tools/browserbaseSearch.js.map +1 -0
  736. package/dist/esm/lib/v3/agent/tools/click.js +23 -31
  737. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -1
  738. package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -1
  739. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +22 -30
  740. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -1
  741. package/dist/esm/lib/v3/agent/tools/extract.d.ts +2 -2
  742. package/dist/esm/lib/v3/agent/tools/extract.js +7 -3
  743. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -1
  744. package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +2 -2
  745. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +109 -98
  746. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -1
  747. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +8 -3
  748. package/dist/esm/lib/v3/agent/tools/fillform.js +70 -52
  749. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -1
  750. package/dist/esm/lib/v3/agent/tools/index.d.ts +25 -4
  751. package/dist/esm/lib/v3/agent/tools/index.js +65 -12
  752. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -1
  753. package/dist/esm/lib/v3/agent/tools/keys.d.ts +1 -1
  754. package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -1
  755. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +8 -0
  756. package/dist/esm/lib/v3/agent/tools/screenshot.js +32 -15
  757. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -1
  758. package/dist/esm/lib/v3/agent/tools/scroll.js +12 -0
  759. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -1
  760. package/dist/esm/lib/v3/agent/tools/type.d.ts +2 -2
  761. package/dist/esm/lib/v3/agent/tools/type.js +80 -79
  762. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -1
  763. package/dist/esm/lib/v3/agent/tools/wait.js +6 -0
  764. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -1
  765. package/dist/esm/lib/v3/agent/utils/captchaSolver.d.ts +76 -0
  766. package/dist/esm/lib/v3/agent/utils/captchaSolver.js +171 -0
  767. package/dist/esm/lib/v3/agent/utils/captchaSolver.js.map +1 -0
  768. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +4 -0
  769. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -1
  770. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +8 -0
  771. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -1
  772. package/dist/esm/lib/v3/agent/utils/variables.d.ts +21 -0
  773. package/dist/esm/lib/v3/agent/utils/variables.js +48 -0
  774. package/dist/esm/lib/v3/agent/utils/variables.js.map +1 -0
  775. package/dist/esm/lib/v3/api.d.ts +23 -5
  776. package/dist/esm/lib/v3/api.js +74 -13
  777. package/dist/esm/lib/v3/api.js.map +1 -1
  778. package/dist/esm/lib/v3/cache/ActCache.d.ts +0 -1
  779. package/dist/esm/lib/v3/cache/ActCache.js +2 -18
  780. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -1
  781. package/dist/esm/lib/v3/cache/AgentCache.d.ts +1 -0
  782. package/dist/esm/lib/v3/cache/AgentCache.js +18 -11
  783. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -1
  784. package/dist/esm/lib/v3/flowlogger/EventEmitter.d.ts +7 -0
  785. package/dist/esm/lib/v3/flowlogger/EventEmitter.js +26 -0
  786. package/dist/esm/lib/v3/flowlogger/EventEmitter.js.map +1 -0
  787. package/dist/esm/lib/v3/flowlogger/EventSink.d.ts +44 -0
  788. package/dist/esm/lib/v3/flowlogger/EventSink.js +206 -0
  789. package/dist/esm/lib/v3/flowlogger/EventSink.js.map +1 -0
  790. package/dist/esm/lib/v3/flowlogger/EventStore.d.ts +26 -0
  791. package/dist/esm/lib/v3/flowlogger/EventStore.js +127 -0
  792. package/dist/esm/lib/v3/flowlogger/EventStore.js.map +1 -0
  793. package/dist/esm/lib/v3/flowlogger/FlowLogger.d.ts +99 -0
  794. package/dist/esm/lib/v3/flowlogger/FlowLogger.js +583 -0
  795. package/dist/esm/lib/v3/flowlogger/FlowLogger.js.map +1 -0
  796. package/dist/esm/lib/v3/flowlogger/prettify.d.ts +6 -0
  797. package/dist/esm/lib/v3/flowlogger/prettify.js +389 -0
  798. package/dist/esm/lib/v3/flowlogger/prettify.js.map +1 -0
  799. package/dist/esm/lib/v3/handlers/actHandler.d.ts +2 -1
  800. package/dist/esm/lib/v3/handlers/actHandler.js +4 -4
  801. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -1
  802. package/dist/esm/lib/v3/handlers/extractHandler.js +2 -2
  803. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  804. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +43 -84
  805. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -1
  806. package/dist/esm/lib/v3/handlers/observeHandler.js +1 -2
  807. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  808. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +2 -5
  809. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +133 -92
  810. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -1
  811. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +5 -0
  812. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +134 -14
  813. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  814. package/dist/esm/lib/v3/index.d.ts +143 -0
  815. package/dist/esm/lib/v3/index.js +41 -0
  816. package/dist/esm/lib/v3/index.js.map +1 -1
  817. package/dist/esm/lib/v3/launch/browserbase.d.ts +1 -1
  818. package/dist/esm/lib/v3/launch/browserbase.js +4 -9
  819. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -1
  820. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +5 -2
  821. package/dist/esm/lib/v3/llm/LLMProvider.js +14 -12
  822. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -1
  823. package/dist/esm/lib/v3/llm/OpenAIClient.js +2 -2
  824. package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -1
  825. package/dist/esm/lib/v3/llm/aisdk.js +11 -17
  826. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  827. package/dist/esm/lib/v3/mcp/connection.d.ts +2 -0
  828. package/dist/esm/lib/v3/mcp/connection.js +5 -2
  829. package/dist/esm/lib/v3/mcp/connection.js.map +1 -1
  830. package/dist/esm/lib/v3/runtimePaths.d.ts +6 -0
  831. package/dist/esm/lib/v3/runtimePaths.js +107 -0
  832. package/dist/esm/lib/v3/runtimePaths.js.map +1 -0
  833. package/dist/esm/lib/v3/shutdown/supervisor.js +2 -2
  834. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -1
  835. package/dist/esm/lib/v3/shutdown/supervisorClient.js +9 -14
  836. package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -1
  837. package/dist/esm/lib/v3/timeoutConfig.d.ts +1 -1
  838. package/dist/esm/lib/v3/timeoutConfig.js +5 -0
  839. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -1
  840. package/dist/esm/lib/v3/types/private/cache.d.ts +3 -1
  841. package/dist/esm/lib/v3/types/private/cache.js.map +1 -1
  842. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -1
  843. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  844. package/dist/esm/lib/v3/types/private/shutdown.d.ts +1 -1
  845. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -1
  846. package/dist/esm/lib/v3/types/public/agent.d.ts +76 -4
  847. package/dist/esm/lib/v3/types/public/agent.js +1 -1
  848. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  849. package/dist/esm/lib/v3/types/public/api.d.ts +21 -0
  850. package/dist/esm/lib/v3/types/public/api.js +11 -2
  851. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  852. package/dist/esm/lib/v3/types/public/context.d.ts +32 -0
  853. package/dist/esm/lib/v3/types/public/context.js +2 -0
  854. package/dist/esm/lib/v3/types/public/context.js.map +1 -0
  855. package/dist/esm/lib/v3/types/public/index.d.ts +1 -0
  856. package/dist/esm/lib/v3/types/public/index.js +1 -0
  857. package/dist/esm/lib/v3/types/public/index.js.map +1 -1
  858. package/dist/esm/lib/v3/types/public/methods.d.ts +33 -2
  859. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  860. package/dist/esm/lib/v3/types/public/model.d.ts +12 -3
  861. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  862. package/dist/esm/lib/v3/types/public/options.d.ts +15 -0
  863. package/dist/esm/lib/v3/types/public/options.js.map +1 -1
  864. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +13 -0
  865. package/dist/esm/lib/v3/types/public/sdkErrors.js +22 -0
  866. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -1
  867. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +1 -0
  868. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +1 -1
  869. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -1
  870. package/dist/esm/lib/v3/understudy/cdp.d.ts +9 -13
  871. package/dist/esm/lib/v3/understudy/cdp.js +191 -20
  872. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -1
  873. package/dist/esm/lib/v3/understudy/context.d.ts +34 -0
  874. package/dist/esm/lib/v3/understudy/context.js +327 -67
  875. package/dist/esm/lib/v3/understudy/context.js.map +1 -1
  876. package/dist/esm/lib/v3/understudy/cookies.d.ts +32 -0
  877. package/dist/esm/lib/v3/understudy/cookies.js +136 -0
  878. package/dist/esm/lib/v3/understudy/cookies.js.map +1 -0
  879. package/dist/esm/lib/v3/understudy/deepLocator.js +1 -23
  880. package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -1
  881. package/dist/esm/lib/v3/understudy/frame.js +24 -7
  882. package/dist/esm/lib/v3/understudy/frame.js.map +1 -1
  883. package/dist/esm/lib/v3/understudy/page.d.ts +13 -0
  884. package/dist/esm/lib/v3/understudy/page.js +86 -23
  885. package/dist/esm/lib/v3/understudy/page.js.map +1 -1
  886. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +0 -1
  887. package/dist/esm/lib/v3/understudy/screenshotUtils.js +1 -19
  888. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -1
  889. package/dist/esm/lib/v3/understudy/selectorResolver.js +1 -1
  890. package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -1
  891. package/dist/esm/lib/v3/v3.d.ts +26 -3
  892. package/dist/esm/lib/v3/v3.js +261 -190
  893. package/dist/esm/lib/v3/v3.js.map +1 -1
  894. package/dist/esm/lib/version.d.ts +1 -1
  895. package/dist/esm/lib/version.js +1 -1
  896. package/dist/esm/lib/version.js.map +1 -1
  897. package/dist/esm/tests/cache-variables.test.d.ts +1 -0
  898. package/dist/esm/tests/cache-variables.test.js +219 -0
  899. package/dist/esm/tests/cache-variables.test.js.map +1 -0
  900. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +1 -0
  901. package/dist/esm/tests/integration/agent-abort-signal.spec.js +121 -0
  902. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +1 -0
  903. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +1 -0
  904. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +78 -0
  905. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +1 -0
  906. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +1 -0
  907. package/dist/esm/tests/integration/agent-callbacks.spec.js +383 -0
  908. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +1 -0
  909. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.d.ts +1 -0
  910. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js +54 -0
  911. package/dist/esm/tests/integration/agent-captcha-autosolve.spec.js.map +1 -0
  912. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +1 -0
  913. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +360 -0
  914. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +1 -0
  915. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +1 -0
  916. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +260 -0
  917. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +1 -0
  918. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +1 -0
  919. package/dist/esm/tests/integration/agent-message-continuation.spec.js +110 -0
  920. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +1 -0
  921. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +1 -0
  922. package/dist/esm/tests/integration/agent-streaming.spec.js +138 -0
  923. package/dist/esm/tests/integration/agent-streaming.spec.js.map +1 -0
  924. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +1 -0
  925. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +39 -0
  926. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +1 -0
  927. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +1 -0
  928. package/dist/esm/tests/integration/cdp-connection-close.spec.js +74 -0
  929. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +1 -0
  930. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +1 -0
  931. package/dist/esm/tests/integration/cdp-session-detached.spec.js +43 -0
  932. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +1 -0
  933. package/dist/esm/tests/integration/click-count.spec.d.ts +1 -0
  934. package/dist/esm/tests/integration/click-count.spec.js +161 -0
  935. package/dist/esm/tests/integration/click-count.spec.js.map +1 -0
  936. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +1 -0
  937. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +97 -0
  938. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +1 -0
  939. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +1 -0
  940. package/dist/esm/tests/integration/context-addInitScript.spec.js +283 -0
  941. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +1 -0
  942. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +1 -0
  943. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +47 -0
  944. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +1 -0
  945. package/dist/esm/tests/integration/cookies.spec.d.ts +1 -0
  946. package/dist/esm/tests/integration/cookies.spec.js +185 -0
  947. package/dist/esm/tests/integration/cookies.spec.js.map +1 -0
  948. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +1 -0
  949. package/dist/esm/tests/integration/default-page-tracking.spec.js +50 -0
  950. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +1 -0
  951. package/dist/esm/tests/integration/downloads.spec.d.ts +1 -0
  952. package/dist/esm/tests/integration/downloads.spec.js +47 -0
  953. package/dist/esm/tests/integration/downloads.spec.js.map +1 -0
  954. package/dist/esm/tests/integration/flowLogger.spec.d.ts +1 -0
  955. package/dist/esm/tests/integration/flowLogger.spec.js +712 -0
  956. package/dist/esm/tests/integration/flowLogger.spec.js.map +1 -0
  957. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +1 -0
  958. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +55 -0
  959. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +1 -0
  960. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +1 -0
  961. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +217 -0
  962. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +1 -0
  963. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +1 -0
  964. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +472 -0
  965. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +1 -0
  966. package/dist/esm/tests/integration/keep-alive.child.d.ts +1 -0
  967. package/dist/esm/tests/integration/keep-alive.child.js +83 -0
  968. package/dist/esm/tests/integration/keep-alive.child.js.map +1 -0
  969. package/dist/esm/tests/integration/keep-alive.spec.d.ts +22 -0
  970. package/dist/esm/tests/integration/keep-alive.spec.js +482 -0
  971. package/dist/esm/tests/integration/keep-alive.spec.js.map +1 -0
  972. package/dist/esm/tests/integration/keyboard.spec.d.ts +1 -0
  973. package/dist/esm/tests/integration/keyboard.spec.js +257 -0
  974. package/dist/esm/tests/integration/keyboard.spec.js.map +1 -0
  975. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +1 -0
  976. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +148 -0
  977. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +1 -0
  978. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +1 -0
  979. package/dist/esm/tests/integration/locator-content-methods.spec.js +178 -0
  980. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +1 -0
  981. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +1 -0
  982. package/dist/esm/tests/integration/locator-count-iframe.spec.js +127 -0
  983. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +1 -0
  984. package/dist/esm/tests/integration/locator-count.spec.d.ts +1 -0
  985. package/dist/esm/tests/integration/locator-count.spec.js +66 -0
  986. package/dist/esm/tests/integration/locator-count.spec.js.map +1 -0
  987. package/dist/esm/tests/integration/locator-fill.spec.d.ts +1 -0
  988. package/dist/esm/tests/integration/locator-fill.spec.js +115 -0
  989. package/dist/esm/tests/integration/locator-fill.spec.js.map +1 -0
  990. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +1 -0
  991. package/dist/esm/tests/integration/locator-input-methods.spec.js +125 -0
  992. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +1 -0
  993. package/dist/esm/tests/integration/locator-nth.spec.d.ts +1 -0
  994. package/dist/esm/tests/integration/locator-nth.spec.js +173 -0
  995. package/dist/esm/tests/integration/locator-nth.spec.js.map +1 -0
  996. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +1 -0
  997. package/dist/esm/tests/integration/locator-select-option.spec.js +214 -0
  998. package/dist/esm/tests/integration/locator-select-option.spec.js.map +1 -0
  999. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +1 -0
  1000. package/dist/esm/tests/integration/logger-initialization.spec.js +595 -0
  1001. package/dist/esm/tests/integration/logger-initialization.spec.js.map +1 -0
  1002. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +1 -0
  1003. package/dist/esm/tests/integration/multi-instance-logger.spec.js +291 -0
  1004. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +1 -0
  1005. package/dist/esm/tests/integration/nested-div.spec.d.ts +1 -0
  1006. package/dist/esm/tests/integration/nested-div.spec.js +20 -0
  1007. package/dist/esm/tests/integration/nested-div.spec.js.map +1 -0
  1008. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +1 -0
  1009. package/dist/esm/tests/integration/page-addInitScript.spec.js +92 -0
  1010. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +1 -0
  1011. package/dist/esm/tests/integration/page-console.spec.d.ts +1 -0
  1012. package/dist/esm/tests/integration/page-console.spec.js +45 -0
  1013. package/dist/esm/tests/integration/page-console.spec.js.map +1 -0
  1014. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +1 -0
  1015. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +435 -0
  1016. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +1 -0
  1017. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +1 -0
  1018. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +83 -0
  1019. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +1 -0
  1020. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +1 -0
  1021. package/dist/esm/tests/integration/page-goto-response.spec.js +32 -0
  1022. package/dist/esm/tests/integration/page-goto-response.spec.js.map +1 -0
  1023. package/dist/esm/tests/integration/page-hover.spec.d.ts +1 -0
  1024. package/dist/esm/tests/integration/page-hover.spec.js +163 -0
  1025. package/dist/esm/tests/integration/page-hover.spec.js.map +1 -0
  1026. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +1 -0
  1027. package/dist/esm/tests/integration/page-screenshot.spec.js +257 -0
  1028. package/dist/esm/tests/integration/page-screenshot.spec.js.map +1 -0
  1029. package/dist/esm/tests/integration/page-scroll.spec.d.ts +1 -0
  1030. package/dist/esm/tests/integration/page-scroll.spec.js +181 -0
  1031. package/dist/esm/tests/integration/page-scroll.spec.js.map +1 -0
  1032. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +1 -0
  1033. package/dist/esm/tests/integration/page-send-cdp.spec.js +45 -0
  1034. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +1 -0
  1035. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +1 -0
  1036. package/dist/esm/tests/integration/perform-understudy-method.spec.js +61 -0
  1037. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +1 -0
  1038. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +1 -0
  1039. package/dist/esm/tests/integration/setinputfiles.spec.js +128 -0
  1040. package/dist/esm/tests/integration/setinputfiles.spec.js.map +1 -0
  1041. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +1 -0
  1042. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +156 -0
  1043. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +1 -0
  1044. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +1 -0
  1045. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +155 -0
  1046. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +1 -0
  1047. package/dist/esm/tests/integration/testUtils.d.ts +40 -0
  1048. package/dist/esm/tests/integration/testUtils.js +178 -0
  1049. package/dist/esm/tests/integration/testUtils.js.map +1 -0
  1050. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +1 -0
  1051. package/dist/esm/tests/integration/text-selector-innermost.spec.js +103 -0
  1052. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +1 -0
  1053. package/dist/esm/tests/integration/timeouts.spec.d.ts +1 -0
  1054. package/dist/esm/tests/integration/timeouts.spec.js +305 -0
  1055. package/dist/esm/tests/integration/timeouts.spec.js.map +1 -0
  1056. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +1 -0
  1057. package/dist/esm/tests/integration/user-data-dir.spec.js +42 -0
  1058. package/dist/esm/tests/integration/user-data-dir.spec.js.map +1 -0
  1059. package/dist/esm/tests/integration/v3.config.d.ts +4 -0
  1060. package/dist/esm/tests/integration/v3.config.js +7 -0
  1061. package/dist/esm/tests/integration/v3.config.js.map +1 -0
  1062. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +4 -0
  1063. package/dist/esm/tests/integration/v3.dynamic.config.js +44 -0
  1064. package/dist/esm/tests/integration/v3.dynamic.config.js.map +1 -0
  1065. package/dist/esm/tests/integration/v3.playwright.config.d.ts +2 -0
  1066. package/dist/esm/tests/integration/v3.playwright.config.js +46 -0
  1067. package/dist/esm/tests/integration/v3.playwright.config.js.map +1 -0
  1068. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +1 -0
  1069. package/dist/esm/tests/integration/wait-for-selector.spec.js +681 -0
  1070. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +1 -0
  1071. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +1 -0
  1072. package/dist/esm/tests/integration/wait-for-timeout.spec.js +116 -0
  1073. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +1 -0
  1074. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +1 -0
  1075. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +85 -0
  1076. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +1 -0
  1077. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +1 -0
  1078. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +283 -0
  1079. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +1 -0
  1080. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +1 -0
  1081. package/dist/esm/tests/unit/agent-execution-model.test.js +126 -0
  1082. package/dist/esm/tests/unit/agent-execution-model.test.js.map +1 -0
  1083. package/dist/esm/tests/unit/api-multiregion.test.d.ts +1 -0
  1084. package/dist/esm/tests/unit/api-multiregion.test.js +56 -0
  1085. package/dist/esm/tests/unit/api-multiregion.test.js.map +1 -0
  1086. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +1 -0
  1087. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +120 -0
  1088. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +1 -0
  1089. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +1 -0
  1090. package/dist/esm/tests/unit/cache-llm-resolution.test.js +184 -0
  1091. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +1 -0
  1092. package/dist/esm/tests/unit/captcha-solver.test.d.ts +1 -0
  1093. package/dist/esm/tests/unit/captcha-solver.test.js +152 -0
  1094. package/dist/esm/tests/unit/captcha-solver.test.js.map +1 -0
  1095. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +1 -0
  1096. package/dist/esm/tests/unit/cdp-connection-close.test.js +72 -0
  1097. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +1 -0
  1098. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +1 -0
  1099. package/dist/esm/tests/unit/context-extra-http-headers.test.js +56 -0
  1100. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +1 -0
  1101. package/dist/esm/tests/unit/cookies.test.d.ts +1 -0
  1102. package/dist/esm/tests/unit/cookies.test.js +909 -0
  1103. package/dist/esm/tests/unit/cookies.test.js.map +1 -0
  1104. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +1 -0
  1105. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +93 -0
  1106. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +1 -0
  1107. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +1 -0
  1108. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +41 -0
  1109. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +1 -0
  1110. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +1 -0
  1111. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +248 -0
  1112. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +1 -0
  1113. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +19 -0
  1114. package/dist/esm/tests/unit/helpers/mockCDPSession.js +25 -0
  1115. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +1 -0
  1116. package/dist/esm/tests/unit/llm-middleware.test.d.ts +1 -0
  1117. package/dist/esm/tests/unit/llm-middleware.test.js +460 -0
  1118. package/dist/esm/tests/unit/llm-middleware.test.js.map +1 -0
  1119. package/dist/esm/tests/unit/llm-provider.test.d.ts +1 -0
  1120. package/dist/esm/tests/unit/llm-provider.test.js +62 -0
  1121. package/dist/esm/tests/unit/llm-provider.test.js.map +1 -0
  1122. package/dist/esm/tests/unit/model-deprecation.test.d.ts +1 -0
  1123. package/dist/esm/tests/unit/model-deprecation.test.js +140 -0
  1124. package/dist/esm/tests/unit/model-deprecation.test.js.map +1 -0
  1125. package/dist/esm/tests/unit/model-utils.test.d.ts +1 -0
  1126. package/dist/esm/tests/unit/model-utils.test.js +40 -0
  1127. package/dist/esm/tests/unit/model-utils.test.js.map +1 -0
  1128. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +1 -0
  1129. package/dist/esm/tests/unit/openai-cua-client.test.js +69 -0
  1130. package/dist/esm/tests/unit/openai-cua-client.test.js.map +1 -0
  1131. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +1 -0
  1132. package/dist/esm/tests/unit/page-extra-http-headers.test.js +90 -0
  1133. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +1 -0
  1134. package/dist/esm/tests/unit/page-snapshot.test.d.ts +1 -0
  1135. package/dist/esm/tests/unit/page-snapshot.test.js +40 -0
  1136. package/dist/esm/tests/unit/page-snapshot.test.js.map +1 -0
  1137. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +1 -0
  1138. package/dist/esm/tests/unit/public-api/export-surface.test.js +72 -0
  1139. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +1 -0
  1140. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +1 -0
  1141. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +140 -0
  1142. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +1 -0
  1143. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +62 -0
  1144. package/dist/esm/tests/unit/public-api/public-error-types.test.js +74 -0
  1145. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +1 -0
  1146. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +1 -0
  1147. package/dist/esm/tests/unit/public-api/public-types.test.js +97 -0
  1148. package/dist/esm/tests/unit/public-api/public-types.test.js.map +1 -0
  1149. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +1 -0
  1150. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +25 -0
  1151. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +1 -0
  1152. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +1 -0
  1153. package/dist/esm/tests/unit/public-api/schema-utils.test.js +60 -0
  1154. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +1 -0
  1155. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +1 -0
  1156. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +86 -0
  1157. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +1 -0
  1158. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +1 -0
  1159. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +30 -0
  1160. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +1 -0
  1161. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +1 -0
  1162. package/dist/esm/tests/unit/public-api/v3-core.test.js +73 -0
  1163. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +1 -0
  1164. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +1 -0
  1165. package/dist/esm/tests/unit/safety-confirmation.test.js +108 -0
  1166. package/dist/esm/tests/unit/safety-confirmation.test.js.map +1 -0
  1167. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +1 -0
  1168. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +295 -0
  1169. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +1 -0
  1170. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +1 -0
  1171. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +284 -0
  1172. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +1 -0
  1173. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +1 -0
  1174. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +359 -0
  1175. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +1 -0
  1176. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +1 -0
  1177. package/dist/esm/tests/unit/snapshot-cbor.test.js +202 -0
  1178. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +1 -0
  1179. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +1 -0
  1180. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +218 -0
  1181. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +1 -0
  1182. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +1 -0
  1183. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +105 -0
  1184. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +1 -0
  1185. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +1 -0
  1186. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +87 -0
  1187. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +1 -0
  1188. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +1 -0
  1189. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +333 -0
  1190. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +1 -0
  1191. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +1 -0
  1192. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +82 -0
  1193. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +1 -0
  1194. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +1 -0
  1195. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +72 -0
  1196. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +1 -0
  1197. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +1 -0
  1198. package/dist/esm/tests/unit/timeout-handlers.test.js +812 -0
  1199. package/dist/esm/tests/unit/timeout-handlers.test.js.map +1 -0
  1200. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +1 -0
  1201. package/dist/esm/tests/unit/understudy-command-exception.test.js +55 -0
  1202. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +1 -0
  1203. package/dist/esm/tests/unit/xpath-parser.test.d.ts +1 -0
  1204. package/dist/esm/tests/unit/xpath-parser.test.js +309 -0
  1205. package/dist/esm/tests/unit/xpath-parser.test.js.map +1 -0
  1206. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +1 -0
  1207. package/dist/esm/tests/unit/xpath-resolver.test.js +78 -0
  1208. package/dist/esm/tests/unit/xpath-resolver.test.js.map +1 -0
  1209. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +1 -0
  1210. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +114 -0
  1211. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +1 -0
  1212. package/package.json +19 -8
  1213. package/dist/cjs/cli.js.map +0 -7
  1214. package/dist/cjs/index.js.map +0 -7
  1215. package/dist/cjs/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1216. package/dist/cjs/lib/v3/dom/build/v3-index.d.ts +0 -0
  1217. package/dist/cjs/lib/v3/flowLogger.d.ts +0 -139
  1218. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1219. package/dist/cjs/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1220. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js +0 -102
  1221. package/dist/cjs/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1222. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1223. package/dist/cjs/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1224. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js +0 -354
  1225. package/dist/cjs/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1226. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1227. package/dist/cjs/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1228. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1229. package/dist/cjs/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1230. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js +0 -126
  1231. package/dist/cjs/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1232. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1233. package/dist/cjs/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1234. package/dist/cjs/lib/v3/tests/click-count.spec.js +0 -147
  1235. package/dist/cjs/lib/v3/tests/click-count.spec.js.map +0 -7
  1236. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1237. package/dist/cjs/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1238. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1239. package/dist/cjs/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1240. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1241. package/dist/cjs/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1242. package/dist/cjs/lib/v3/tests/downloads.spec.js +0 -80
  1243. package/dist/cjs/lib/v3/tests/downloads.spec.js.map +0 -7
  1244. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1245. package/dist/cjs/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1246. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1247. package/dist/cjs/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1248. package/dist/cjs/lib/v3/tests/keep-alive.child.js +0 -92
  1249. package/dist/cjs/lib/v3/tests/keep-alive.child.js.map +0 -7
  1250. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js +0 -568
  1251. package/dist/cjs/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1252. package/dist/cjs/lib/v3/tests/keep-alive.spec.js +0 -15
  1253. package/dist/cjs/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1254. package/dist/cjs/lib/v3/tests/keyboard.spec.js +0 -296
  1255. package/dist/cjs/lib/v3/tests/keyboard.spec.js.map +0 -7
  1256. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1257. package/dist/cjs/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1258. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1259. package/dist/cjs/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1260. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1261. package/dist/cjs/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1262. package/dist/cjs/lib/v3/tests/locator-count.spec.js +0 -71
  1263. package/dist/cjs/lib/v3/tests/locator-count.spec.js.map +0 -7
  1264. package/dist/cjs/lib/v3/tests/locator-fill.spec.js +0 -119
  1265. package/dist/cjs/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1266. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1267. package/dist/cjs/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1268. package/dist/cjs/lib/v3/tests/locator-nth.spec.js +0 -157
  1269. package/dist/cjs/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1270. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js +0 -243
  1271. package/dist/cjs/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1272. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js +0 -547
  1273. package/dist/cjs/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1274. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1275. package/dist/cjs/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1276. package/dist/cjs/lib/v3/tests/nested-div.spec.js +0 -23
  1277. package/dist/cjs/lib/v3/tests/nested-div.spec.js.map +0 -7
  1278. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1279. package/dist/cjs/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1280. package/dist/cjs/lib/v3/tests/page-console.spec.js +0 -56
  1281. package/dist/cjs/lib/v3/tests/page-console.spec.js.map +0 -7
  1282. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1283. package/dist/cjs/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1284. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js +0 -35
  1285. package/dist/cjs/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1286. package/dist/cjs/lib/v3/tests/page-hover.spec.js +0 -167
  1287. package/dist/cjs/lib/v3/tests/page-hover.spec.js.map +0 -7
  1288. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js +0 -295
  1289. package/dist/cjs/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1290. package/dist/cjs/lib/v3/tests/page-scroll.spec.js +0 -182
  1291. package/dist/cjs/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1292. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1293. package/dist/cjs/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1294. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1295. package/dist/cjs/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1296. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js +0 -148
  1297. package/dist/cjs/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1298. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -156
  1299. package/dist/cjs/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1300. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js +0 -156
  1301. package/dist/cjs/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1302. package/dist/cjs/lib/v3/tests/testUtils.js +0 -54
  1303. package/dist/cjs/lib/v3/tests/testUtils.js.map +0 -7
  1304. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1305. package/dist/cjs/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1306. package/dist/cjs/lib/v3/tests/timeouts.spec.js +0 -32
  1307. package/dist/cjs/lib/v3/tests/timeouts.spec.js.map +0 -7
  1308. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js +0 -65
  1309. package/dist/cjs/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1310. package/dist/cjs/lib/v3/tests/v3.config.js +0 -36
  1311. package/dist/cjs/lib/v3/tests/v3.config.js.map +0 -7
  1312. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js +0 -67
  1313. package/dist/cjs/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1314. package/dist/cjs/lib/v3/tests/v3.playwright.config.js +0 -61
  1315. package/dist/cjs/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1316. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1317. package/dist/cjs/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1318. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1319. package/dist/cjs/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1320. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1321. package/dist/cjs/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1322. package/dist/cjs/tests/agent-execution-model.test.js +0 -139
  1323. package/dist/cjs/tests/agent-execution-model.test.js.map +0 -7
  1324. package/dist/cjs/tests/api-multiregion.test.js +0 -73
  1325. package/dist/cjs/tests/api-multiregion.test.js.map +0 -7
  1326. package/dist/cjs/tests/browserbase-session-accessors.test.js +0 -101
  1327. package/dist/cjs/tests/browserbase-session-accessors.test.js.map +0 -7
  1328. package/dist/cjs/tests/cache-llm-resolution.test.js +0 -187
  1329. package/dist/cjs/tests/cache-llm-resolution.test.js.map +0 -7
  1330. package/dist/cjs/tests/helpers/mockCDPSession.js +0 -50
  1331. package/dist/cjs/tests/helpers/mockCDPSession.js.map +0 -7
  1332. package/dist/cjs/tests/llm-provider.test.js +0 -57
  1333. package/dist/cjs/tests/llm-provider.test.js.map +0 -7
  1334. package/dist/cjs/tests/model-deprecation.test.js +0 -132
  1335. package/dist/cjs/tests/model-deprecation.test.js.map +0 -7
  1336. package/dist/cjs/tests/model-utils.test.js +0 -43
  1337. package/dist/cjs/tests/model-utils.test.js.map +0 -7
  1338. package/dist/cjs/tests/page-snapshot.test.js +0 -58
  1339. package/dist/cjs/tests/page-snapshot.test.js.map +0 -7
  1340. package/dist/cjs/tests/public-api/export-surface.test.js +0 -77
  1341. package/dist/cjs/tests/public-api/export-surface.test.js.map +0 -7
  1342. package/dist/cjs/tests/public-api/llm-and-agents.test.js +0 -151
  1343. package/dist/cjs/tests/public-api/llm-and-agents.test.js.map +0 -7
  1344. package/dist/cjs/tests/public-api/public-error-types.test.js +0 -106
  1345. package/dist/cjs/tests/public-api/public-error-types.test.js.map +0 -7
  1346. package/dist/cjs/tests/public-api/public-types.test.js +0 -74
  1347. package/dist/cjs/tests/public-api/public-types.test.js.map +0 -7
  1348. package/dist/cjs/tests/public-api/runtime-utils.test.js +0 -53
  1349. package/dist/cjs/tests/public-api/runtime-utils.test.js.map +0 -7
  1350. package/dist/cjs/tests/public-api/schema-utils.test.js +0 -100
  1351. package/dist/cjs/tests/public-api/schema-utils.test.js.map +0 -7
  1352. package/dist/cjs/tests/public-api/timeout-error-types.test.js +0 -103
  1353. package/dist/cjs/tests/public-api/timeout-error-types.test.js.map +0 -7
  1354. package/dist/cjs/tests/public-api/tool-type-export.test.js +0 -47
  1355. package/dist/cjs/tests/public-api/tool-type-export.test.js.map +0 -7
  1356. package/dist/cjs/tests/public-api/v3-core.test.js +0 -105
  1357. package/dist/cjs/tests/public-api/v3-core.test.js.map +0 -7
  1358. package/dist/cjs/tests/safety-confirmation.test.js +0 -134
  1359. package/dist/cjs/tests/safety-confirmation.test.js.map +0 -7
  1360. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js +0 -370
  1361. package/dist/cjs/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1362. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js +0 -294
  1363. package/dist/cjs/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1364. package/dist/cjs/tests/snapshot-capture-orchestration.test.js +0 -405
  1365. package/dist/cjs/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1366. package/dist/cjs/tests/snapshot-cbor.test.js +0 -197
  1367. package/dist/cjs/tests/snapshot-cbor.test.js.map +0 -7
  1368. package/dist/cjs/tests/snapshot-dom-session-builders.test.js +0 -246
  1369. package/dist/cjs/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1370. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js +0 -104
  1371. package/dist/cjs/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1372. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js +0 -45
  1373. package/dist/cjs/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1374. package/dist/cjs/tests/snapshot-frame-merge.test.js +0 -388
  1375. package/dist/cjs/tests/snapshot-frame-merge.test.js.map +0 -7
  1376. package/dist/cjs/tests/snapshot-tree-format-utils.test.js +0 -106
  1377. package/dist/cjs/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1378. package/dist/cjs/tests/snapshot-xpath-utils.test.js +0 -74
  1379. package/dist/cjs/tests/snapshot-xpath-utils.test.js.map +0 -7
  1380. package/dist/cjs/tests/timeout-handlers.test.js +0 -864
  1381. package/dist/cjs/tests/timeout-handlers.test.js.map +0 -7
  1382. package/dist/cjs/tests/understudy-command-exception.test.js +0 -52
  1383. package/dist/cjs/tests/understudy-command-exception.test.js.map +0 -7
  1384. package/dist/cjs/tests/xpath-parser.test.js +0 -314
  1385. package/dist/cjs/tests/xpath-parser.test.js.map +0 -7
  1386. package/dist/cjs/tests/xpath-resolver.test.js +0 -70
  1387. package/dist/cjs/tests/xpath-resolver.test.js.map +0 -7
  1388. package/dist/cjs/tests/zod-enum-compatibility.test.js +0 -119
  1389. package/dist/cjs/tests/zod-enum-compatibility.test.js.map +0 -7
  1390. package/dist/esm/lib/v3/agent/tools/search.js +0 -73
  1391. package/dist/esm/lib/v3/agent/tools/search.js.map +0 -1
  1392. package/dist/esm/lib/v3/dom/build/rerender-index.d.ts +0 -0
  1393. package/dist/esm/lib/v3/dom/build/rerender-index.js.map +0 -1
  1394. package/dist/esm/lib/v3/dom/build/v3-index.d.ts +0 -0
  1395. package/dist/esm/lib/v3/dom/build/v3-index.js.map +0 -1
  1396. package/dist/esm/lib/v3/dom/genA11yScripts.js +0 -54
  1397. package/dist/esm/lib/v3/dom/genA11yScripts.js.map +0 -1
  1398. package/dist/esm/lib/v3/dom/genDomScripts.js +0 -38
  1399. package/dist/esm/lib/v3/dom/genDomScripts.js.map +0 -1
  1400. package/dist/esm/lib/v3/dom/genLocatorScripts.js +0 -51
  1401. package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +0 -1
  1402. package/dist/esm/lib/v3/dom/genScreenshotScripts.js +0 -37
  1403. package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +0 -1
  1404. package/dist/esm/lib/v3/flowLogger.d.ts +0 -139
  1405. package/dist/esm/lib/v3/flowLogger.js +0 -868
  1406. package/dist/esm/lib/v3/flowLogger.js.map +0 -1
  1407. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +0 -113
  1408. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +0 -7
  1409. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +0 -80
  1410. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +0 -7
  1411. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +0 -374
  1412. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +0 -7
  1413. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +0 -357
  1414. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +0 -7
  1415. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +0 -247
  1416. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +0 -7
  1417. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +0 -105
  1418. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +0 -7
  1419. package/dist/esm/lib/v3/tests/agent-streaming.spec.js +0 -126
  1420. package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +0 -7
  1421. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +0 -44
  1422. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +0 -7
  1423. package/dist/esm/lib/v3/tests/click-count.spec.js +0 -147
  1424. package/dist/esm/lib/v3/tests/click-count.spec.js.map +0 -7
  1425. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +0 -54
  1426. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +0 -7
  1427. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +0 -176
  1428. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +0 -7
  1429. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +0 -53
  1430. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +0 -7
  1431. package/dist/esm/lib/v3/tests/downloads.spec.js +0 -58
  1432. package/dist/esm/lib/v3/tests/downloads.spec.js.map +0 -7
  1433. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +0 -53
  1434. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +0 -7
  1435. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +0 -493
  1436. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +0 -7
  1437. package/dist/esm/lib/v3/tests/keep-alive.child.js +0 -92
  1438. package/dist/esm/lib/v3/tests/keep-alive.child.js.map +0 -7
  1439. package/dist/esm/lib/v3/tests/keep-alive.helpers.js +0 -532
  1440. package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +0 -7
  1441. package/dist/esm/lib/v3/tests/keep-alive.spec.js +0 -19
  1442. package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +0 -7
  1443. package/dist/esm/lib/v3/tests/keyboard.spec.js +0 -296
  1444. package/dist/esm/lib/v3/tests/keyboard.spec.js.map +0 -7
  1445. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +0 -159
  1446. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +0 -7
  1447. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +0 -192
  1448. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +0 -7
  1449. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +0 -108
  1450. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +0 -7
  1451. package/dist/esm/lib/v3/tests/locator-count.spec.js +0 -71
  1452. package/dist/esm/lib/v3/tests/locator-count.spec.js.map +0 -7
  1453. package/dist/esm/lib/v3/tests/locator-fill.spec.js +0 -119
  1454. package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +0 -7
  1455. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +0 -137
  1456. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +0 -7
  1457. package/dist/esm/lib/v3/tests/locator-nth.spec.js +0 -157
  1458. package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +0 -7
  1459. package/dist/esm/lib/v3/tests/locator-select-option.spec.js +0 -243
  1460. package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +0 -7
  1461. package/dist/esm/lib/v3/tests/logger-initialization.spec.js +0 -552
  1462. package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +0 -7
  1463. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +0 -269
  1464. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +0 -7
  1465. package/dist/esm/lib/v3/tests/nested-div.spec.js +0 -23
  1466. package/dist/esm/lib/v3/tests/nested-div.spec.js.map +0 -7
  1467. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +0 -90
  1468. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +0 -7
  1469. package/dist/esm/lib/v3/tests/page-console.spec.js +0 -56
  1470. package/dist/esm/lib/v3/tests/page-console.spec.js.map +0 -7
  1471. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +0 -418
  1472. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +0 -7
  1473. package/dist/esm/lib/v3/tests/page-goto-response.spec.js +0 -35
  1474. package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +0 -7
  1475. package/dist/esm/lib/v3/tests/page-hover.spec.js +0 -167
  1476. package/dist/esm/lib/v3/tests/page-hover.spec.js.map +0 -7
  1477. package/dist/esm/lib/v3/tests/page-screenshot.spec.js +0 -273
  1478. package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +0 -7
  1479. package/dist/esm/lib/v3/tests/page-scroll.spec.js +0 -182
  1480. package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +0 -7
  1481. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +0 -46
  1482. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +0 -7
  1483. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +0 -98
  1484. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +0 -7
  1485. package/dist/esm/lib/v3/tests/setinputfiles.spec.js +0 -126
  1486. package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +0 -7
  1487. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +0 -134
  1488. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +0 -7
  1489. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +0 -134
  1490. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +0 -7
  1491. package/dist/esm/lib/v3/tests/testUtils.js +0 -31
  1492. package/dist/esm/lib/v3/tests/testUtils.js.map +0 -7
  1493. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +0 -100
  1494. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +0 -7
  1495. package/dist/esm/lib/v3/tests/timeouts.spec.js +0 -32
  1496. package/dist/esm/lib/v3/tests/timeouts.spec.js.map +0 -7
  1497. package/dist/esm/lib/v3/tests/user-data-dir.spec.js +0 -43
  1498. package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +0 -7
  1499. package/dist/esm/lib/v3/tests/v3.config.js +0 -15
  1500. package/dist/esm/lib/v3/tests/v3.config.js.map +0 -7
  1501. package/dist/esm/lib/v3/tests/v3.dynamic.config.js +0 -43
  1502. package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +0 -7
  1503. package/dist/esm/lib/v3/tests/v3.playwright.config.js +0 -41
  1504. package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +0 -7
  1505. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +0 -593
  1506. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +0 -7
  1507. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +0 -97
  1508. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +0 -7
  1509. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +0 -77
  1510. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +0 -7
  1511. package/dist/esm/tests/agent-execution-model.test.js +0 -139
  1512. package/dist/esm/tests/agent-execution-model.test.js.map +0 -7
  1513. package/dist/esm/tests/api-multiregion.test.js +0 -73
  1514. package/dist/esm/tests/api-multiregion.test.js.map +0 -7
  1515. package/dist/esm/tests/browserbase-session-accessors.test.js +0 -101
  1516. package/dist/esm/tests/browserbase-session-accessors.test.js.map +0 -7
  1517. package/dist/esm/tests/cache-llm-resolution.test.js +0 -187
  1518. package/dist/esm/tests/cache-llm-resolution.test.js.map +0 -7
  1519. package/dist/esm/tests/helpers/mockCDPSession.js +0 -27
  1520. package/dist/esm/tests/helpers/mockCDPSession.js.map +0 -7
  1521. package/dist/esm/tests/llm-provider.test.js +0 -57
  1522. package/dist/esm/tests/llm-provider.test.js.map +0 -7
  1523. package/dist/esm/tests/model-deprecation.test.js +0 -135
  1524. package/dist/esm/tests/model-deprecation.test.js.map +0 -7
  1525. package/dist/esm/tests/model-utils.test.js +0 -43
  1526. package/dist/esm/tests/model-utils.test.js.map +0 -7
  1527. package/dist/esm/tests/page-snapshot.test.js +0 -36
  1528. package/dist/esm/tests/page-snapshot.test.js.map +0 -7
  1529. package/dist/esm/tests/public-api/export-surface.test.js +0 -55
  1530. package/dist/esm/tests/public-api/export-surface.test.js.map +0 -7
  1531. package/dist/esm/tests/public-api/llm-and-agents.test.js +0 -129
  1532. package/dist/esm/tests/public-api/llm-and-agents.test.js.map +0 -7
  1533. package/dist/esm/tests/public-api/public-error-types.test.js +0 -73
  1534. package/dist/esm/tests/public-api/public-error-types.test.js.map +0 -7
  1535. package/dist/esm/tests/public-api/public-types.test.js +0 -74
  1536. package/dist/esm/tests/public-api/public-types.test.js.map +0 -7
  1537. package/dist/esm/tests/public-api/runtime-utils.test.js +0 -31
  1538. package/dist/esm/tests/public-api/runtime-utils.test.js.map +0 -7
  1539. package/dist/esm/tests/public-api/schema-utils.test.js +0 -78
  1540. package/dist/esm/tests/public-api/schema-utils.test.js.map +0 -7
  1541. package/dist/esm/tests/public-api/timeout-error-types.test.js +0 -81
  1542. package/dist/esm/tests/public-api/timeout-error-types.test.js.map +0 -7
  1543. package/dist/esm/tests/public-api/tool-type-export.test.js +0 -25
  1544. package/dist/esm/tests/public-api/tool-type-export.test.js.map +0 -7
  1545. package/dist/esm/tests/public-api/v3-core.test.js +0 -83
  1546. package/dist/esm/tests/public-api/v3-core.test.js.map +0 -7
  1547. package/dist/esm/tests/safety-confirmation.test.js +0 -134
  1548. package/dist/esm/tests/safety-confirmation.test.js.map +0 -7
  1549. package/dist/esm/tests/snapshot-a11y-resolvers.test.js +0 -348
  1550. package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +0 -7
  1551. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +0 -300
  1552. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +0 -7
  1553. package/dist/esm/tests/snapshot-capture-orchestration.test.js +0 -383
  1554. package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +0 -7
  1555. package/dist/esm/tests/snapshot-cbor.test.js +0 -197
  1556. package/dist/esm/tests/snapshot-cbor.test.js.map +0 -7
  1557. package/dist/esm/tests/snapshot-dom-session-builders.test.js +0 -251
  1558. package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +0 -7
  1559. package/dist/esm/tests/snapshot-dom-tree-utils.test.js +0 -109
  1560. package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +0 -7
  1561. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +0 -49
  1562. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +0 -7
  1563. package/dist/esm/tests/snapshot-frame-merge.test.js +0 -391
  1564. package/dist/esm/tests/snapshot-frame-merge.test.js.map +0 -7
  1565. package/dist/esm/tests/snapshot-tree-format-utils.test.js +0 -113
  1566. package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +0 -7
  1567. package/dist/esm/tests/snapshot-xpath-utils.test.js +0 -79
  1568. package/dist/esm/tests/snapshot-xpath-utils.test.js.map +0 -7
  1569. package/dist/esm/tests/timeout-handlers.test.js +0 -850
  1570. package/dist/esm/tests/timeout-handlers.test.js.map +0 -7
  1571. package/dist/esm/tests/understudy-command-exception.test.js +0 -55
  1572. package/dist/esm/tests/understudy-command-exception.test.js.map +0 -7
  1573. package/dist/esm/tests/xpath-parser.test.js +0 -317
  1574. package/dist/esm/tests/xpath-parser.test.js.map +0 -7
  1575. package/dist/esm/tests/xpath-resolver.test.js +0 -73
  1576. package/dist/esm/tests/xpath-resolver.test.js.map +0 -7
  1577. package/dist/esm/tests/zod-enum-compatibility.test.js +0 -97
  1578. package/dist/esm/tests/zod-enum-compatibility.test.js.map +0 -7
  1579. /package/dist/cjs/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
  1580. /package/dist/cjs/{lib/v3/dom/genA11yScripts.d.ts → tests/cache-variables.test.d.ts} +0 -0
  1581. /package/dist/cjs/{lib/v3/dom/genDomScripts.d.ts → tests/integration/agent-abort-signal.spec.d.ts} +0 -0
  1582. /package/dist/cjs/{lib/v3/dom/genLocatorScripts.d.ts → tests/integration/agent-cache-self-heal.spec.d.ts} +0 -0
  1583. /package/dist/cjs/{lib/v3/dom/genScreenshotScripts.d.ts → tests/integration/agent-callbacks.spec.d.ts} +0 -0
  1584. /package/dist/{esm/lib/v3/dom/genA11yScripts.d.ts → cjs/tests/integration/agent-captcha-autosolve.spec.d.ts} +0 -0
  1585. /package/dist/{esm/lib/v3/dom/genDomScripts.d.ts → cjs/tests/integration/agent-experimental-validation.spec.d.ts} +0 -0
  1586. /package/dist/{esm/lib/v3/dom/genLocatorScripts.d.ts → cjs/tests/integration/agent-hybrid-mode.spec.d.ts} +0 -0
  1587. /package/dist/{esm/lib/v3/dom/genScreenshotScripts.d.ts → cjs/tests/integration/agent-message-continuation.spec.d.ts} +0 -0
  1588. /package/dist/esm/lib/v3/agent/tools/{search.d.ts → braveSearch.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowlogger-eventstore.test.js","sourceRoot":"","sources":["../../../../tests/unit/flowlogger-eventstore.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { afterEach, describe, expect, it } from \"vitest\";\nimport { EventStore } from \"../../lib/v3/flowlogger/EventStore.js\";\nimport { EventEmitterWithWildcardSupport } from \"../../lib/v3/flowlogger/EventEmitter.js\";\nimport { FlowEvent } from \"../../lib/v3/flowlogger/FlowLogger.js\";\n\nfunction attachEventStoreToBus(\n store: EventStore,\n bus: EventEmitterWithWildcardSupport,\n): () => void {\n const onFlowEvent = (event: unknown) => {\n if (event instanceof FlowEvent) {\n void store.emit(event);\n }\n };\n\n bus.on(\"*\", onFlowEvent);\n return () => {\n bus.off(\"*\", onFlowEvent);\n };\n}\n\nfunction createVerboseStoreHarness(): {\n writes: string[];\n store: EventStore;\n bus: EventEmitterWithWildcardSupport;\n detachBus: () => void;\n} {\n const writes: string[] = [];\n process.stderr.write = ((\n chunk: string,\n cb?: (error?: Error | null) => void,\n ) => {\n writes.push(String(chunk));\n cb?.(null);\n return true;\n }) as typeof process.stderr.write;\n\n const store = new EventStore(\"session-test\");\n const bus = new EventEmitterWithWildcardSupport();\n const detachBus = attachEventStoreToBus(store, bus);\n\n return { writes, store, bus, detachBus };\n}\n\ndescribe(\"flow logger event store\", () => {\n const stderrWrite = process.stderr.write.bind(process.stderr);\n\n afterEach(() => {\n process.stderr.write = stderrWrite;\n });\n\n it(\"queries recent events from the default in-memory sink\", async () => {\n const store = new EventStore(\"session-test\");\n\n await store.emit(\n new FlowEvent({\n eventType: \"StagehandExtractEvent\",\n sessionId: \"session-test\",\n eventId: \"stagehand-1234\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: { params: [\"grab title\"] },\n }),\n );\n\n const events = await store.query({});\n expect(events).toHaveLength(1);\n expect(events[0].eventType).toBe(\"StagehandExtractEvent\");\n\n await store.destroy();\n });\n\n it(\"drops payloads from the default in-memory sink\", async () => {\n const store = new EventStore(\"session-test\");\n\n await store.emit(\n new FlowEvent({\n eventType: \"LlmRequestEvent\",\n sessionId: \"session-test\",\n eventId: \"llm-1234\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: {\n prompt: [{ type: \"image_url\", image_url: { url: \"huge\" } }],\n output: \"huge\",\n },\n }),\n );\n\n const [event] = await store.query({});\n expect(event.eventType).toBe(\"LlmRequestEvent\");\n expect(event.eventId).toBe(\"llm-1234\");\n expect(event.data).toEqual({});\n\n await store.destroy();\n });\n\n it(\"renders semantic hierarchy tags for non-cdp stderr events only\", async () => {\n // Intercept stderr so the pretty sink can be asserted without polluting the\n // real test runner output.\n const { writes, store, bus, detachBus } = createVerboseStoreHarness();\n\n const stepEvent = new FlowEvent({\n eventType: \"StagehandExtractEvent\",\n sessionId: \"session-test\",\n eventId: \"stagehand-1234\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: { params: [\"grab title\"] },\n });\n const cdpEvent = new FlowEvent({\n eventType: \"CdpCallEvent\",\n sessionId: \"session-test\",\n eventId: \"cdp-call-5678\",\n eventCreatedAt: \"2026-03-16T21:45:00.100Z\",\n eventParentIds: [stepEvent.eventId],\n data: {\n method: \"Runtime.evaluate\",\n params: { expression: \"2 + 2\" },\n targetId: \"1234567890ABCDEF1234567890ABCDEF\",\n },\n });\n\n // The stderr sink intentionally suppresses CDP noise even though the event\n // still exists for in-memory and file-backed sinks.\n bus.emit(stepEvent.eventType, stepEvent);\n bus.emit(cdpEvent.eventType, cdpEvent);\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n expect(writes).toHaveLength(1);\n expect(writes[0]).toContain(\"[🆂 #1234 EXTRACT]\");\n expect(writes[0]).toContain(\"Stagehand.extract\");\n expect(writes[0]).not.toContain(\"Runtime.evaluate\");\n\n detachBus();\n await store.destroy();\n });\n\n it(\"renders generic stagehand events without crashing the stderr sink\", async () => {\n const { writes, store, bus, detachBus } = createVerboseStoreHarness();\n\n // `StagehandEvent` has no action suffix, so this guards the formatter path\n // that cannot assume a method name exists.\n bus.emit(\n \"StagehandEvent\",\n new FlowEvent({\n eventType: \"StagehandEvent\",\n sessionId: \"session-test\",\n eventId: \"stagehand-0001\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: { params: [\"noop\"] },\n }),\n );\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n expect(writes).toHaveLength(1);\n expect(writes[0]).toContain(\"[🆂 #0001\");\n expect(writes[0]).toContain(\"Stagehand(\");\n\n detachBus();\n await store.destroy();\n });\n\n it(\"colorizes pretty stderr output with ansi escapes when enabled\", async () => {\n const previousForceColor = process.env.FORCE_COLOR;\n const previousNoColor = process.env.NO_COLOR;\n delete process.env.NO_COLOR;\n process.env.FORCE_COLOR = \"1\";\n\n const { writes, store, bus, detachBus } = createVerboseStoreHarness();\n\n try {\n bus.emit(\n \"StagehandActEvent\",\n new FlowEvent({\n eventType: \"StagehandActEvent\",\n sessionId: \"session-test\",\n eventId: \"stagehand-0002\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: { params: [\"click submit\"] },\n }),\n );\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n expect(writes).toHaveLength(1);\n expect(writes[0]).toContain(\"\\u001B[\");\n } finally {\n if (previousNoColor === undefined) {\n delete process.env.NO_COLOR;\n } else {\n process.env.NO_COLOR = previousNoColor;\n }\n\n if (previousForceColor === undefined) {\n delete process.env.FORCE_COLOR;\n } else {\n process.env.FORCE_COLOR = previousForceColor;\n }\n\n detachBus();\n await store.destroy();\n }\n });\n\n it(\"keeps agent ancestry and start ids for completion events after many child events\", async () => {\n const { writes, store, bus, detachBus } = createVerboseStoreHarness();\n\n const agentEvent = new FlowEvent({\n eventType: \"AgentExecuteEvent\",\n sessionId: \"session-test\",\n eventId: \"agent-1234\",\n eventCreatedAt: \"2026-03-16T21:45:00.000Z\",\n data: { params: [{ instruction: \"click the button\" }] },\n });\n const actEvent = new FlowEvent({\n eventType: \"StagehandActEvent\",\n sessionId: \"session-test\",\n eventId: \"stagehand-2222\",\n eventCreatedAt: \"2026-03-16T21:45:00.001Z\",\n eventParentIds: [agentEvent.eventId],\n data: { params: [\"click the button\"] },\n });\n const clickEvent = new FlowEvent({\n eventType: \"UnderstudyClickEvent\",\n sessionId: \"session-test\",\n eventId: \"action-3333\",\n eventCreatedAt: \"2026-03-16T21:45:00.002Z\",\n eventParentIds: [agentEvent.eventId, actEvent.eventId],\n data: { target: \"xpath=/button[1]\" },\n });\n\n bus.emit(agentEvent.eventType, agentEvent);\n bus.emit(actEvent.eventType, actEvent);\n bus.emit(clickEvent.eventType, clickEvent);\n\n // Flood the retained history with child events so the completion lines have\n // to recover their displayed ancestry from the queryable sink.\n for (let index = 0; index < 150; index += 1) {\n bus.emit(\n \"CdpCallEvent\",\n new FlowEvent({\n eventType: \"CdpCallEvent\",\n sessionId: \"session-test\",\n eventId: `cdp-${String(index).padStart(4, \"0\")}`,\n eventCreatedAt: `2026-03-16T21:45:00.${String(index + 10).padStart(3, \"0\")}Z`,\n eventParentIds: [\n agentEvent.eventId,\n actEvent.eventId,\n clickEvent.eventId,\n ],\n data: {\n method: \"Runtime.evaluate\",\n params: { expression: `${index}` },\n targetId: \"1234567890ABCDEF1234567890ABCDEF\",\n },\n }),\n );\n }\n\n bus.emit(\n \"UnderstudyClickCompletedEvent\",\n new FlowEvent({\n eventType: \"UnderstudyClickCompletedEvent\",\n sessionId: \"session-test\",\n eventId: \"done-4444\",\n eventCreatedAt: \"2026-03-16T21:45:01.000Z\",\n eventParentIds: [\n agentEvent.eventId,\n actEvent.eventId,\n clickEvent.eventId,\n ],\n data: { durationMs: 250 },\n }),\n );\n bus.emit(\n \"StagehandActCompletedEvent\",\n new FlowEvent({\n eventType: \"StagehandActCompletedEvent\",\n sessionId: \"session-test\",\n eventId: \"done-5555\",\n eventCreatedAt: \"2026-03-16T21:45:01.001Z\",\n eventParentIds: [agentEvent.eventId, actEvent.eventId],\n data: { durationMs: 500 },\n }),\n );\n bus.emit(\n \"AgentExecuteCompletedEvent\",\n new FlowEvent({\n eventType: \"AgentExecuteCompletedEvent\",\n sessionId: \"session-test\",\n eventId: \"done-6666\",\n eventCreatedAt: \"2026-03-16T21:45:01.002Z\",\n eventParentIds: [agentEvent.eventId],\n data: { durationMs: 750 },\n }),\n );\n await new Promise((resolve) => setTimeout(resolve, 0));\n\n // Completion lines should reference the original started-event ids, not the\n // synthetic completed-event ids emitted at the end of the lifecycle.\n const clickCompletedLine = writes.find((line) =>\n line.includes(\"CLICK completed\"),\n );\n const actCompletedLine = writes.find((line) =>\n line.includes(\"ACT completed\"),\n );\n const agentCompletedLine = writes.find((line) =>\n line.includes(\"Agent.execute() completed\"),\n );\n\n expect(clickCompletedLine).toContain(\"[🅰 #1234]\");\n expect(clickCompletedLine).toContain(\"[🆂 #2222 ACT]\");\n expect(clickCompletedLine).toContain(\"[🆄 #3333 CLICK]\");\n expect(clickCompletedLine).not.toContain(\"#4444\");\n\n expect(actCompletedLine).toContain(\"[🅰 #1234]\");\n expect(actCompletedLine).toContain(\"[🆂 #2222 ACT]\");\n expect(actCompletedLine).not.toContain(\"#5555\");\n\n expect(agentCompletedLine).toContain(\"[🅰 #1234]\");\n expect(agentCompletedLine).not.toContain(\"#6666\");\n\n detachBus();\n await store.destroy();\n });\n});\n"]}
@@ -0,0 +1,19 @@
1
+ import type { CDPSessionLike } from "../../../lib/v3/understudy/cdp.js";
2
+ type Handler = (params?: Record<string, unknown>) => Promise<unknown> | unknown;
3
+ export declare class MockCDPSession implements CDPSessionLike {
4
+ private readonly handlers;
5
+ readonly id: string;
6
+ readonly calls: Array<{
7
+ method: string;
8
+ params?: Record<string, unknown>;
9
+ }>;
10
+ constructor(handlers?: Record<string, Handler>, sessionId?: string);
11
+ send<R = unknown>(method: string, params?: Record<string, unknown>): Promise<R>;
12
+ on(): void;
13
+ off(): void;
14
+ close(): Promise<void>;
15
+ callsFor(method: string): Array<{
16
+ params?: Record<string, unknown>;
17
+ }>;
18
+ }
19
+ export {};
@@ -0,0 +1,25 @@
1
+ export class MockCDPSession {
2
+ handlers;
3
+ id;
4
+ calls = [];
5
+ constructor(handlers = {}, sessionId = "mock-session") {
6
+ this.handlers = handlers;
7
+ this.id = sessionId;
8
+ }
9
+ async send(method, params = {}) {
10
+ this.calls.push({ method, params });
11
+ const handler = this.handlers[method];
12
+ if (!handler)
13
+ return {};
14
+ return (await handler(params));
15
+ }
16
+ on() { }
17
+ off() { }
18
+ async close() { }
19
+ callsFor(method) {
20
+ return this.calls
21
+ .filter((call) => call.method === method)
22
+ .map(({ params }) => ({ params }));
23
+ }
24
+ }
25
+ //# sourceMappingURL=mockCDPSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockCDPSession.js","sourceRoot":"","sources":["../../../../../tests/unit/helpers/mockCDPSession.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,cAAc;IAQN;IAPH,EAAE,CAAS;IACX,KAAK,GAGhB,EAAE,CAAC;IAER,YACmB,WAAoC,EAAE,EACvD,SAAS,GAAG,cAAc;QADT,aAAQ,GAAR,QAAQ,CAA8B;QAGvD,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAc,EACd,SAAkC,EAAE;QAEpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAO,CAAC;QAC7B,OAAO,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAM,CAAC;IACtC,CAAC;IAED,EAAE,KAAU,CAAC;IACb,GAAG,KAAU,CAAC;IACd,KAAK,CAAC,KAAK,KAAmB,CAAC;IAE/B,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;aACxC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;CACF","sourcesContent":["import type { CDPSessionLike } from \"../../../lib/v3/understudy/cdp.js\";\n\ntype Handler = (params?: Record<string, unknown>) => Promise<unknown> | unknown;\n\nexport class MockCDPSession implements CDPSessionLike {\n public readonly id: string;\n public readonly calls: Array<{\n method: string;\n params?: Record<string, unknown>;\n }> = [];\n\n constructor(\n private readonly handlers: Record<string, Handler> = {},\n sessionId = \"mock-session\",\n ) {\n this.id = sessionId;\n }\n\n async send<R = unknown>(\n method: string,\n params: Record<string, unknown> = {},\n ): Promise<R> {\n this.calls.push({ method, params });\n const handler = this.handlers[method];\n if (!handler) return {} as R;\n return (await handler(params)) as R;\n }\n\n on(): void {}\n off(): void {}\n async close(): Promise<void> {}\n\n callsFor(method: string): Array<{ params?: Record<string, unknown> }> {\n return this.calls\n .filter((call) => call.method === method)\n .map(({ params }) => ({ params }));\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,460 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { getAISDKLanguageModel, LLMProvider, } from "../../lib/v3/llm/LLMProvider.js";
3
+ import { resolveModelConfiguration } from "../../lib/v3/v3.js";
4
+ /**
5
+ * Creates a recording middleware that captures every doGenerate / doStream
6
+ * invocation along with the model identity and returned usage data.
7
+ */
8
+ function createRecordingMiddleware() {
9
+ const calls = [];
10
+ const middleware = {
11
+ wrapGenerate: async ({ doGenerate, model }) => {
12
+ const result = await doGenerate();
13
+ calls.push({
14
+ type: "generate",
15
+ modelId: model.modelId,
16
+ provider: model.provider,
17
+ usage: {
18
+ inputTokens: result.usage.inputTokens ?? undefined,
19
+ outputTokens: result.usage.outputTokens ?? undefined,
20
+ },
21
+ });
22
+ return result;
23
+ },
24
+ wrapStream: async ({ doStream, model }) => {
25
+ const result = await doStream();
26
+ calls.push({
27
+ type: "stream",
28
+ modelId: model.modelId,
29
+ provider: model.provider,
30
+ });
31
+ return result;
32
+ },
33
+ };
34
+ return { middleware, calls };
35
+ }
36
+ /**
37
+ * Creates a minimal mock LanguageModelV2 that returns canned results
38
+ * without hitting any real provider. Useful for testing the wrapping
39
+ * mechanics in isolation.
40
+ */
41
+ function createMockLanguageModel(modelId, provider) {
42
+ return {
43
+ specificationVersion: "v2",
44
+ provider,
45
+ modelId,
46
+ defaultObjectGenerationMode: "json",
47
+ doGenerate: vi.fn().mockResolvedValue({
48
+ content: [{ type: "text", text: "mock response" }],
49
+ finishReason: "stop",
50
+ usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },
51
+ warnings: [],
52
+ }),
53
+ doStream: vi.fn().mockResolvedValue({
54
+ stream: new ReadableStream({
55
+ start(controller) {
56
+ controller.enqueue({
57
+ type: "finish",
58
+ finishReason: "stop",
59
+ usage: { inputTokens: 8, outputTokens: 3, totalTokens: 11 },
60
+ });
61
+ controller.close();
62
+ },
63
+ }),
64
+ }),
65
+ };
66
+ }
67
+ // ---------------------------------------------------------------------------
68
+ // getAISDKLanguageModel with middleware
69
+ // ---------------------------------------------------------------------------
70
+ describe("getAISDKLanguageModel with middleware", () => {
71
+ it("returns a model when no middleware is provided", () => {
72
+ const model = getAISDKLanguageModel("ollama", "llama3.2");
73
+ expect(model).toBeDefined();
74
+ expect(model.modelId).toBe("llama3.2");
75
+ });
76
+ it("returns a wrapped model when middleware is provided", () => {
77
+ const { middleware } = createRecordingMiddleware();
78
+ const model = getAISDKLanguageModel("ollama", "llama3.2", undefined, middleware);
79
+ expect(model).toBeDefined();
80
+ // wrapLanguageModel preserves modelId
81
+ expect(model.modelId).toBe("llama3.2");
82
+ });
83
+ it("wrapped model preserves doGenerate and doStream methods", () => {
84
+ const { middleware } = createRecordingMiddleware();
85
+ const model = getAISDKLanguageModel("ollama", "llama3.2", undefined, middleware);
86
+ expect(typeof model.doGenerate).toBe("function");
87
+ expect(typeof model.doStream).toBe("function");
88
+ expect(model.provider).toContain("ollama");
89
+ });
90
+ });
91
+ // ---------------------------------------------------------------------------
92
+ // LLMProvider with middleware
93
+ // ---------------------------------------------------------------------------
94
+ describe("LLMProvider with middleware", () => {
95
+ const noop = () => { };
96
+ it("creates an AISdkClient without middleware", () => {
97
+ const provider = new LLMProvider(noop);
98
+ const client = provider.getClient("openai/gpt-4o");
99
+ expect(client).toBeDefined();
100
+ expect(client.type).toBe("aisdk");
101
+ });
102
+ it("creates an AISdkClient that carries middleware-wrapped model", () => {
103
+ const { middleware } = createRecordingMiddleware();
104
+ const provider = new LLMProvider(noop, middleware);
105
+ const client = provider.getClient("ollama/llama3.2");
106
+ expect(client).toBeDefined();
107
+ expect(client.type).toBe("aisdk");
108
+ const languageModel = client.getLanguageModel();
109
+ expect(languageModel).toBeDefined();
110
+ // Wrapped models should still expose the original modelId
111
+ expect(languageModel.modelId).toBe("llama3.2");
112
+ });
113
+ it("applies the same middleware to different models from getClient", () => {
114
+ const { middleware } = createRecordingMiddleware();
115
+ const provider = new LLMProvider(noop, middleware);
116
+ const clientA = provider.getClient("ollama/llama3.2");
117
+ const clientB = provider.getClient("ollama/mistral");
118
+ expect(clientA.getLanguageModel()).toBeDefined();
119
+ expect(clientB.getLanguageModel()).toBeDefined();
120
+ expect(clientA.getLanguageModel().modelId).toBe("llama3.2");
121
+ expect(clientB.getLanguageModel().modelId).toBe("mistral");
122
+ });
123
+ });
124
+ // ---------------------------------------------------------------------------
125
+ // Middleware captures usage across act/extract/observe/agent code paths
126
+ // ---------------------------------------------------------------------------
127
+ describe("middleware captures usage from doGenerate and doStream", () => {
128
+ it("wrapGenerate fires and captures usage on doGenerate", async () => {
129
+ const { middleware, calls } = createRecordingMiddleware();
130
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
131
+ // Simulate what wrapLanguageModel does: import and wrap
132
+ const { wrapLanguageModel } = await import("ai");
133
+ const wrapped = wrapLanguageModel({ model: mockModel, middleware });
134
+ await wrapped.doGenerate({
135
+ prompt: [
136
+ {
137
+ role: "user",
138
+ content: [{ type: "text", text: "act: click button" }],
139
+ },
140
+ ],
141
+ });
142
+ expect(calls).toHaveLength(1);
143
+ expect(calls[0].type).toBe("generate");
144
+ expect(calls[0].modelId).toBe("gpt-4o");
145
+ expect(calls[0].usage).toEqual({ inputTokens: 10, outputTokens: 5 });
146
+ });
147
+ it("wrapStream fires on doStream", async () => {
148
+ const { middleware, calls } = createRecordingMiddleware();
149
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
150
+ const { wrapLanguageModel } = await import("ai");
151
+ const wrapped = wrapLanguageModel({ model: mockModel, middleware });
152
+ const result = await wrapped.doStream({
153
+ prompt: [
154
+ { role: "user", content: [{ type: "text", text: "stream this" }] },
155
+ ],
156
+ });
157
+ // Consume the stream to trigger the finish chunk
158
+ const reader = result.stream.getReader();
159
+ while (true) {
160
+ const { done } = await reader.read();
161
+ if (done)
162
+ break;
163
+ }
164
+ expect(calls).toHaveLength(1);
165
+ expect(calls[0].type).toBe("stream");
166
+ expect(calls[0].modelId).toBe("gpt-4o");
167
+ });
168
+ it("middleware fires for each separate doGenerate call (simulates act + extract + observe)", async () => {
169
+ const { middleware, calls } = createRecordingMiddleware();
170
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
171
+ const { wrapLanguageModel } = await import("ai");
172
+ const wrapped = wrapLanguageModel({ model: mockModel, middleware });
173
+ const callOpts = {
174
+ prompt: [
175
+ {
176
+ role: "user",
177
+ content: [{ type: "text", text: "test" }],
178
+ },
179
+ ],
180
+ };
181
+ // Simulate act call
182
+ await wrapped.doGenerate(callOpts);
183
+ // Simulate extract call
184
+ await wrapped.doGenerate(callOpts);
185
+ // Simulate observe call
186
+ await wrapped.doGenerate(callOpts);
187
+ expect(calls).toHaveLength(3);
188
+ expect(calls.every((c) => c.type === "generate")).toBe(true);
189
+ expect(calls.every((c) => c.modelId === "gpt-4o")).toBe(true);
190
+ });
191
+ it("middleware fires for agent multi-step calls (sequential doGenerate)", async () => {
192
+ const { middleware, calls } = createRecordingMiddleware();
193
+ const mockModel = createMockLanguageModel("openai/gpt-4.1", "gateway.openai");
194
+ const { wrapLanguageModel } = await import("ai");
195
+ const wrapped = wrapLanguageModel({ model: mockModel, middleware });
196
+ const callOpts = {
197
+ prompt: [
198
+ {
199
+ role: "user",
200
+ content: [{ type: "text", text: "agent step" }],
201
+ },
202
+ ],
203
+ };
204
+ // Simulate multiple agent reasoning steps
205
+ await wrapped.doGenerate(callOpts);
206
+ await wrapped.doGenerate(callOpts);
207
+ await wrapped.doGenerate(callOpts);
208
+ await wrapped.doGenerate(callOpts);
209
+ await wrapped.doGenerate(callOpts);
210
+ expect(calls).toHaveLength(5);
211
+ calls.forEach((c) => {
212
+ expect(c.usage).toEqual({ inputTokens: 10, outputTokens: 5 });
213
+ });
214
+ });
215
+ });
216
+ // ---------------------------------------------------------------------------
217
+ // ModelConfiguration-level middleware (the user-facing shape)
218
+ // ---------------------------------------------------------------------------
219
+ describe("middleware inside ModelConfiguration", () => {
220
+ it("resolveModelConfiguration extracts middleware from object config", () => {
221
+ const { middleware: mw } = createRecordingMiddleware();
222
+ const result = resolveModelConfiguration({
223
+ modelName: "openai/gpt-4o",
224
+ apiKey: "sk-test",
225
+ middleware: mw,
226
+ });
227
+ expect(result.modelName).toBe("openai/gpt-4o");
228
+ expect(result.middleware).toBe(mw);
229
+ expect(result.clientOptions).toEqual({ apiKey: "sk-test" });
230
+ expect(result.clientOptions && "middleware" in result.clientOptions).toBe(false);
231
+ });
232
+ it("string ModelConfiguration has no middleware", () => {
233
+ const result = resolveModelConfiguration("openai/gpt-4o");
234
+ expect(result.modelName).toBe("openai/gpt-4o");
235
+ expect(result.middleware).toBeUndefined();
236
+ expect(result.clientOptions).toBeUndefined();
237
+ });
238
+ it("middleware is separated from clientOptions when resolving per-method overrides", () => {
239
+ const { middleware: mw } = createRecordingMiddleware();
240
+ const result = resolveModelConfiguration({
241
+ modelName: "anthropic/claude-sonnet-4-20250514",
242
+ apiKey: "sk-ant-test",
243
+ middleware: mw,
244
+ });
245
+ expect(result.modelName).toBe("anthropic/claude-sonnet-4-20250514");
246
+ expect(result.middleware).toBe(mw);
247
+ expect(result.clientOptions).toEqual({ apiKey: "sk-ant-test" });
248
+ expect(result.clientOptions && "middleware" in result.clientOptions).toBe(false);
249
+ });
250
+ });
251
+ // ---------------------------------------------------------------------------
252
+ // Practical middleware behaviors
253
+ // ---------------------------------------------------------------------------
254
+ describe("middleware that tracks duration", () => {
255
+ it("measures wall-clock time of doGenerate", async () => {
256
+ const durations = [];
257
+ const timingMiddleware = {
258
+ wrapGenerate: async ({ doGenerate }) => {
259
+ const start = performance.now();
260
+ const result = await doGenerate();
261
+ durations.push(performance.now() - start);
262
+ return result;
263
+ },
264
+ };
265
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
266
+ const { wrapLanguageModel } = await import("ai");
267
+ const wrapped = wrapLanguageModel({
268
+ model: mockModel,
269
+ middleware: timingMiddleware,
270
+ });
271
+ await wrapped.doGenerate({
272
+ prompt: [{ role: "user", content: [{ type: "text", text: "time me" }] }],
273
+ });
274
+ expect(durations).toHaveLength(1);
275
+ expect(durations[0]).toBeGreaterThanOrEqual(0);
276
+ });
277
+ });
278
+ describe("middleware that aggregates token usage", () => {
279
+ it("sums tokens across multiple calls like a billing tracker", async () => {
280
+ let totalInput = 0;
281
+ let totalOutput = 0;
282
+ const billingMiddleware = {
283
+ wrapGenerate: async ({ doGenerate }) => {
284
+ const result = await doGenerate();
285
+ totalInput += result.usage.inputTokens ?? 0;
286
+ totalOutput += result.usage.outputTokens ?? 0;
287
+ return result;
288
+ },
289
+ };
290
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
291
+ const { wrapLanguageModel } = await import("ai");
292
+ const wrapped = wrapLanguageModel({
293
+ model: mockModel,
294
+ middleware: billingMiddleware,
295
+ });
296
+ const callOpts = {
297
+ prompt: [
298
+ {
299
+ role: "user",
300
+ content: [{ type: "text", text: "go" }],
301
+ },
302
+ ],
303
+ };
304
+ // act
305
+ await wrapped.doGenerate(callOpts);
306
+ // extract
307
+ await wrapped.doGenerate(callOpts);
308
+ // observe
309
+ await wrapped.doGenerate(callOpts);
310
+ expect(totalInput).toBe(30);
311
+ expect(totalOutput).toBe(15);
312
+ });
313
+ });
314
+ describe("middleware that logs per-model call counts", () => {
315
+ it("tracks which models were called and how many times", async () => {
316
+ const modelCallCounts = new Map();
317
+ const countingMiddleware = {
318
+ wrapGenerate: async ({ doGenerate, model }) => {
319
+ const key = `${model.provider}/${model.modelId}`;
320
+ modelCallCounts.set(key, (modelCallCounts.get(key) ?? 0) + 1);
321
+ return doGenerate();
322
+ },
323
+ };
324
+ const modelA = createMockLanguageModel("gpt-4o", "openai.chat");
325
+ const modelB = createMockLanguageModel("claude-sonnet-4-20250514", "anthropic.messages");
326
+ const { wrapLanguageModel } = await import("ai");
327
+ const wrappedA = wrapLanguageModel({
328
+ model: modelA,
329
+ middleware: countingMiddleware,
330
+ });
331
+ const wrappedB = wrapLanguageModel({
332
+ model: modelB,
333
+ middleware: countingMiddleware,
334
+ });
335
+ const callOpts = {
336
+ prompt: [
337
+ {
338
+ role: "user",
339
+ content: [{ type: "text", text: "go" }],
340
+ },
341
+ ],
342
+ };
343
+ await wrappedA.doGenerate(callOpts);
344
+ await wrappedA.doGenerate(callOpts);
345
+ await wrappedB.doGenerate(callOpts);
346
+ expect(modelCallCounts.get("openai.chat/gpt-4o")).toBe(2);
347
+ expect(modelCallCounts.get("anthropic.messages/claude-sonnet-4-20250514")).toBe(1);
348
+ expect(modelCallCounts.size).toBe(2);
349
+ });
350
+ });
351
+ describe("middleware that detects errors", () => {
352
+ it("catches and re-throws errors from doGenerate while still recording the failure", async () => {
353
+ const errors = [];
354
+ const errorTrackingMiddleware = {
355
+ wrapGenerate: async ({ doGenerate }) => {
356
+ try {
357
+ return await doGenerate();
358
+ }
359
+ catch (err) {
360
+ errors.push(err);
361
+ throw err;
362
+ }
363
+ },
364
+ };
365
+ const failingModel = {
366
+ specificationVersion: "v2",
367
+ provider: "openai.chat",
368
+ modelId: "gpt-4o",
369
+ defaultObjectGenerationMode: "json",
370
+ doGenerate: vi.fn().mockRejectedValue(new Error("rate limit exceeded")),
371
+ doStream: vi.fn(),
372
+ };
373
+ const { wrapLanguageModel } = await import("ai");
374
+ const wrapped = wrapLanguageModel({
375
+ model: failingModel,
376
+ middleware: errorTrackingMiddleware,
377
+ });
378
+ await expect(wrapped.doGenerate({
379
+ prompt: [{ role: "user", content: [{ type: "text", text: "fail" }] }],
380
+ })).rejects.toThrow("rate limit exceeded");
381
+ expect(errors).toHaveLength(1);
382
+ expect(errors[0].message).toBe("rate limit exceeded");
383
+ });
384
+ });
385
+ describe("chaining middleware across multiple wrapped models", () => {
386
+ it("same middleware instance sees calls from different models", async () => {
387
+ const seen = [];
388
+ const spyMiddleware = {
389
+ wrapGenerate: async ({ doGenerate, model }) => {
390
+ seen.push(model.modelId);
391
+ return doGenerate();
392
+ },
393
+ };
394
+ const mockA = createMockLanguageModel("gpt-4o", "openai.chat");
395
+ const mockB = createMockLanguageModel("claude-sonnet-4-20250514", "anthropic.messages");
396
+ const { wrapLanguageModel } = await import("ai");
397
+ const wrappedA = wrapLanguageModel({
398
+ model: mockA,
399
+ middleware: spyMiddleware,
400
+ });
401
+ const wrappedB = wrapLanguageModel({
402
+ model: mockB,
403
+ middleware: spyMiddleware,
404
+ });
405
+ const callOpts = {
406
+ prompt: [
407
+ {
408
+ role: "user",
409
+ content: [{ type: "text", text: "go" }],
410
+ },
411
+ ],
412
+ };
413
+ await wrappedA.doGenerate(callOpts);
414
+ await wrappedB.doGenerate(callOpts);
415
+ await wrappedA.doGenerate(callOpts);
416
+ expect(seen).toEqual(["gpt-4o", "claude-sonnet-4-20250514", "gpt-4o"]);
417
+ });
418
+ });
419
+ // ---------------------------------------------------------------------------
420
+ // Edge cases
421
+ // ---------------------------------------------------------------------------
422
+ describe("middleware edge cases", () => {
423
+ it("middleware that only implements wrapGenerate still works for doStream", async () => {
424
+ const generateCalls = [];
425
+ const partialMiddleware = {
426
+ wrapGenerate: async ({ doGenerate, model }) => {
427
+ generateCalls.push(model.modelId);
428
+ return doGenerate();
429
+ },
430
+ };
431
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
432
+ const { wrapLanguageModel } = await import("ai");
433
+ const wrapped = wrapLanguageModel({
434
+ model: mockModel,
435
+ middleware: partialMiddleware,
436
+ });
437
+ const result = await wrapped.doStream({
438
+ prompt: [{ role: "user", content: [{ type: "text", text: "stream" }] }],
439
+ });
440
+ expect(result.stream).toBeDefined();
441
+ expect(generateCalls).toHaveLength(0);
442
+ });
443
+ it("middleware does not alter the response data", async () => {
444
+ const { middleware } = createRecordingMiddleware();
445
+ const mockModel = createMockLanguageModel("gpt-4o", "openai.chat");
446
+ const { wrapLanguageModel } = await import("ai");
447
+ const wrapped = wrapLanguageModel({ model: mockModel, middleware });
448
+ const result = await wrapped.doGenerate({
449
+ prompt: [{ role: "user", content: [{ type: "text", text: "test" }] }],
450
+ });
451
+ expect(result.content).toEqual([{ type: "text", text: "mock response" }]);
452
+ expect(result.usage).toEqual({
453
+ inputTokens: 10,
454
+ outputTokens: 5,
455
+ totalTokens: 15,
456
+ });
457
+ expect(result.finishReason).toBe("stop");
458
+ });
459
+ });
460
+ //# sourceMappingURL=llm-middleware.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-middleware.test.js","sourceRoot":"","sources":["../../../../tests/unit/llm-middleware.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it, vi } from \"vitest\";\nimport type {\n LanguageModelV2,\n LanguageModelV2Middleware,\n} from \"@ai-sdk/provider\";\nimport {\n getAISDKLanguageModel,\n LLMProvider,\n} from \"../../lib/v3/llm/LLMProvider.js\";\nimport { resolveModelConfiguration } from \"../../lib/v3/v3.js\";\n\n/**\n * Creates a recording middleware that captures every doGenerate / doStream\n * invocation along with the model identity and returned usage data.\n */\nfunction createRecordingMiddleware() {\n const calls: {\n type: \"generate\" | \"stream\";\n modelId: string;\n provider: string;\n usage?: { inputTokens?: number; outputTokens?: number };\n }[] = [];\n\n const middleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate, model }) => {\n const result = await doGenerate();\n calls.push({\n type: \"generate\",\n modelId: model.modelId,\n provider: model.provider,\n usage: {\n inputTokens: result.usage.inputTokens ?? undefined,\n outputTokens: result.usage.outputTokens ?? undefined,\n },\n });\n return result;\n },\n wrapStream: async ({ doStream, model }) => {\n const result = await doStream();\n calls.push({\n type: \"stream\",\n modelId: model.modelId,\n provider: model.provider,\n });\n return result;\n },\n };\n\n return { middleware, calls };\n}\n\n/**\n * Creates a minimal mock LanguageModelV2 that returns canned results\n * without hitting any real provider. Useful for testing the wrapping\n * mechanics in isolation.\n */\nfunction createMockLanguageModel(\n modelId: string,\n provider: string,\n): LanguageModelV2 {\n return {\n specificationVersion: \"v2\",\n provider,\n modelId,\n defaultObjectGenerationMode: \"json\",\n doGenerate: vi.fn().mockResolvedValue({\n content: [{ type: \"text\", text: \"mock response\" }],\n finishReason: \"stop\",\n usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 },\n warnings: [],\n }),\n doStream: vi.fn().mockResolvedValue({\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: \"finish\",\n finishReason: \"stop\",\n usage: { inputTokens: 8, outputTokens: 3, totalTokens: 11 },\n });\n controller.close();\n },\n }),\n }),\n } as unknown as LanguageModelV2;\n}\n\n// ---------------------------------------------------------------------------\n// getAISDKLanguageModel with middleware\n// ---------------------------------------------------------------------------\n\ndescribe(\"getAISDKLanguageModel with middleware\", () => {\n it(\"returns a model when no middleware is provided\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\");\n expect(model).toBeDefined();\n expect(model.modelId).toBe(\"llama3.2\");\n });\n\n it(\"returns a wrapped model when middleware is provided\", () => {\n const { middleware } = createRecordingMiddleware();\n const model = getAISDKLanguageModel(\n \"ollama\",\n \"llama3.2\",\n undefined,\n middleware,\n );\n expect(model).toBeDefined();\n // wrapLanguageModel preserves modelId\n expect(model.modelId).toBe(\"llama3.2\");\n });\n\n it(\"wrapped model preserves doGenerate and doStream methods\", () => {\n const { middleware } = createRecordingMiddleware();\n const model = getAISDKLanguageModel(\n \"ollama\",\n \"llama3.2\",\n undefined,\n middleware,\n );\n\n expect(typeof model.doGenerate).toBe(\"function\");\n expect(typeof model.doStream).toBe(\"function\");\n expect(model.provider).toContain(\"ollama\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// LLMProvider with middleware\n// ---------------------------------------------------------------------------\n\ndescribe(\"LLMProvider with middleware\", () => {\n const noop = () => {};\n\n it(\"creates an AISdkClient without middleware\", () => {\n const provider = new LLMProvider(noop);\n const client = provider.getClient(\"openai/gpt-4o\" as never);\n expect(client).toBeDefined();\n expect(client.type).toBe(\"aisdk\");\n });\n\n it(\"creates an AISdkClient that carries middleware-wrapped model\", () => {\n const { middleware } = createRecordingMiddleware();\n const provider = new LLMProvider(noop, middleware);\n const client = provider.getClient(\"ollama/llama3.2\" as never);\n expect(client).toBeDefined();\n expect(client.type).toBe(\"aisdk\");\n\n const languageModel = client.getLanguageModel();\n expect(languageModel).toBeDefined();\n // Wrapped models should still expose the original modelId\n expect(languageModel.modelId).toBe(\"llama3.2\");\n });\n\n it(\"applies the same middleware to different models from getClient\", () => {\n const { middleware } = createRecordingMiddleware();\n const provider = new LLMProvider(noop, middleware);\n\n const clientA = provider.getClient(\"ollama/llama3.2\" as never);\n const clientB = provider.getClient(\"ollama/mistral\" as never);\n\n expect(clientA.getLanguageModel()).toBeDefined();\n expect(clientB.getLanguageModel()).toBeDefined();\n expect(clientA.getLanguageModel().modelId).toBe(\"llama3.2\");\n expect(clientB.getLanguageModel().modelId).toBe(\"mistral\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// Middleware captures usage across act/extract/observe/agent code paths\n// ---------------------------------------------------------------------------\n\ndescribe(\"middleware captures usage from doGenerate and doStream\", () => {\n it(\"wrapGenerate fires and captures usage on doGenerate\", async () => {\n const { middleware, calls } = createRecordingMiddleware();\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n\n // Simulate what wrapLanguageModel does: import and wrap\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({ model: mockModel, middleware });\n\n await wrapped.doGenerate({\n prompt: [\n {\n role: \"user\",\n content: [{ type: \"text\", text: \"act: click button\" }],\n },\n ],\n });\n\n expect(calls).toHaveLength(1);\n expect(calls[0].type).toBe(\"generate\");\n expect(calls[0].modelId).toBe(\"gpt-4o\");\n expect(calls[0].usage).toEqual({ inputTokens: 10, outputTokens: 5 });\n });\n\n it(\"wrapStream fires on doStream\", async () => {\n const { middleware, calls } = createRecordingMiddleware();\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({ model: mockModel, middleware });\n\n const result = await wrapped.doStream({\n prompt: [\n { role: \"user\", content: [{ type: \"text\", text: \"stream this\" }] },\n ],\n });\n\n // Consume the stream to trigger the finish chunk\n const reader = result.stream.getReader();\n while (true) {\n const { done } = await reader.read();\n if (done) break;\n }\n\n expect(calls).toHaveLength(1);\n expect(calls[0].type).toBe(\"stream\");\n expect(calls[0].modelId).toBe(\"gpt-4o\");\n });\n\n it(\"middleware fires for each separate doGenerate call (simulates act + extract + observe)\", async () => {\n const { middleware, calls } = createRecordingMiddleware();\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({ model: mockModel, middleware });\n\n const callOpts = {\n prompt: [\n {\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"test\" }],\n },\n ],\n };\n\n // Simulate act call\n await wrapped.doGenerate(callOpts);\n // Simulate extract call\n await wrapped.doGenerate(callOpts);\n // Simulate observe call\n await wrapped.doGenerate(callOpts);\n\n expect(calls).toHaveLength(3);\n expect(calls.every((c) => c.type === \"generate\")).toBe(true);\n expect(calls.every((c) => c.modelId === \"gpt-4o\")).toBe(true);\n });\n\n it(\"middleware fires for agent multi-step calls (sequential doGenerate)\", async () => {\n const { middleware, calls } = createRecordingMiddleware();\n const mockModel = createMockLanguageModel(\n \"openai/gpt-4.1\",\n \"gateway.openai\",\n );\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({ model: mockModel, middleware });\n\n const callOpts = {\n prompt: [\n {\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"agent step\" }],\n },\n ],\n };\n\n // Simulate multiple agent reasoning steps\n await wrapped.doGenerate(callOpts);\n await wrapped.doGenerate(callOpts);\n await wrapped.doGenerate(callOpts);\n await wrapped.doGenerate(callOpts);\n await wrapped.doGenerate(callOpts);\n\n expect(calls).toHaveLength(5);\n calls.forEach((c) => {\n expect(c.usage).toEqual({ inputTokens: 10, outputTokens: 5 });\n });\n });\n});\n\n// ---------------------------------------------------------------------------\n// ModelConfiguration-level middleware (the user-facing shape)\n// ---------------------------------------------------------------------------\n\ndescribe(\"middleware inside ModelConfiguration\", () => {\n it(\"resolveModelConfiguration extracts middleware from object config\", () => {\n const { middleware: mw } = createRecordingMiddleware();\n const result = resolveModelConfiguration({\n modelName: \"openai/gpt-4o\",\n apiKey: \"sk-test\",\n middleware: mw,\n });\n\n expect(result.modelName).toBe(\"openai/gpt-4o\");\n expect(result.middleware).toBe(mw);\n expect(result.clientOptions).toEqual({ apiKey: \"sk-test\" });\n expect(result.clientOptions && \"middleware\" in result.clientOptions).toBe(\n false,\n );\n });\n\n it(\"string ModelConfiguration has no middleware\", () => {\n const result = resolveModelConfiguration(\"openai/gpt-4o\");\n expect(result.modelName).toBe(\"openai/gpt-4o\");\n expect(result.middleware).toBeUndefined();\n expect(result.clientOptions).toBeUndefined();\n });\n\n it(\"middleware is separated from clientOptions when resolving per-method overrides\", () => {\n const { middleware: mw } = createRecordingMiddleware();\n const result = resolveModelConfiguration({\n modelName: \"anthropic/claude-sonnet-4-20250514\",\n apiKey: \"sk-ant-test\",\n middleware: mw,\n });\n\n expect(result.modelName).toBe(\"anthropic/claude-sonnet-4-20250514\");\n expect(result.middleware).toBe(mw);\n expect(result.clientOptions).toEqual({ apiKey: \"sk-ant-test\" });\n expect(result.clientOptions && \"middleware\" in result.clientOptions).toBe(\n false,\n );\n });\n});\n\n// ---------------------------------------------------------------------------\n// Practical middleware behaviors\n// ---------------------------------------------------------------------------\n\ndescribe(\"middleware that tracks duration\", () => {\n it(\"measures wall-clock time of doGenerate\", async () => {\n const durations: number[] = [];\n\n const timingMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate }) => {\n const start = performance.now();\n const result = await doGenerate();\n durations.push(performance.now() - start);\n return result;\n },\n };\n\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({\n model: mockModel,\n middleware: timingMiddleware,\n });\n\n await wrapped.doGenerate({\n prompt: [{ role: \"user\", content: [{ type: \"text\", text: \"time me\" }] }],\n });\n\n expect(durations).toHaveLength(1);\n expect(durations[0]).toBeGreaterThanOrEqual(0);\n });\n});\n\ndescribe(\"middleware that aggregates token usage\", () => {\n it(\"sums tokens across multiple calls like a billing tracker\", async () => {\n let totalInput = 0;\n let totalOutput = 0;\n\n const billingMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate }) => {\n const result = await doGenerate();\n totalInput += result.usage.inputTokens ?? 0;\n totalOutput += result.usage.outputTokens ?? 0;\n return result;\n },\n };\n\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({\n model: mockModel,\n middleware: billingMiddleware,\n });\n\n const callOpts = {\n prompt: [\n {\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"go\" }],\n },\n ],\n };\n\n // act\n await wrapped.doGenerate(callOpts);\n // extract\n await wrapped.doGenerate(callOpts);\n // observe\n await wrapped.doGenerate(callOpts);\n\n expect(totalInput).toBe(30);\n expect(totalOutput).toBe(15);\n });\n});\n\ndescribe(\"middleware that logs per-model call counts\", () => {\n it(\"tracks which models were called and how many times\", async () => {\n const modelCallCounts = new Map<string, number>();\n\n const countingMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate, model }) => {\n const key = `${model.provider}/${model.modelId}`;\n modelCallCounts.set(key, (modelCallCounts.get(key) ?? 0) + 1);\n return doGenerate();\n },\n };\n\n const modelA = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n const modelB = createMockLanguageModel(\n \"claude-sonnet-4-20250514\",\n \"anthropic.messages\",\n );\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrappedA = wrapLanguageModel({\n model: modelA,\n middleware: countingMiddleware,\n });\n const wrappedB = wrapLanguageModel({\n model: modelB,\n middleware: countingMiddleware,\n });\n\n const callOpts = {\n prompt: [\n {\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"go\" }],\n },\n ],\n };\n\n await wrappedA.doGenerate(callOpts);\n await wrappedA.doGenerate(callOpts);\n await wrappedB.doGenerate(callOpts);\n\n expect(modelCallCounts.get(\"openai.chat/gpt-4o\")).toBe(2);\n expect(\n modelCallCounts.get(\"anthropic.messages/claude-sonnet-4-20250514\"),\n ).toBe(1);\n expect(modelCallCounts.size).toBe(2);\n });\n});\n\ndescribe(\"middleware that detects errors\", () => {\n it(\"catches and re-throws errors from doGenerate while still recording the failure\", async () => {\n const errors: Error[] = [];\n\n const errorTrackingMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate }) => {\n try {\n return await doGenerate();\n } catch (err) {\n errors.push(err as Error);\n throw err;\n }\n },\n };\n\n const failingModel: LanguageModelV2 = {\n specificationVersion: \"v2\",\n provider: \"openai.chat\",\n modelId: \"gpt-4o\",\n defaultObjectGenerationMode: \"json\",\n doGenerate: vi.fn().mockRejectedValue(new Error(\"rate limit exceeded\")),\n doStream: vi.fn(),\n } as unknown as LanguageModelV2;\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({\n model: failingModel,\n middleware: errorTrackingMiddleware,\n });\n\n await expect(\n wrapped.doGenerate({\n prompt: [{ role: \"user\", content: [{ type: \"text\", text: \"fail\" }] }],\n }),\n ).rejects.toThrow(\"rate limit exceeded\");\n\n expect(errors).toHaveLength(1);\n expect(errors[0].message).toBe(\"rate limit exceeded\");\n });\n});\n\ndescribe(\"chaining middleware across multiple wrapped models\", () => {\n it(\"same middleware instance sees calls from different models\", async () => {\n const seen: string[] = [];\n\n const spyMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate, model }) => {\n seen.push(model.modelId);\n return doGenerate();\n },\n };\n\n const mockA = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n const mockB = createMockLanguageModel(\n \"claude-sonnet-4-20250514\",\n \"anthropic.messages\",\n );\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrappedA = wrapLanguageModel({\n model: mockA,\n middleware: spyMiddleware,\n });\n const wrappedB = wrapLanguageModel({\n model: mockB,\n middleware: spyMiddleware,\n });\n\n const callOpts = {\n prompt: [\n {\n role: \"user\" as const,\n content: [{ type: \"text\" as const, text: \"go\" }],\n },\n ],\n };\n\n await wrappedA.doGenerate(callOpts);\n await wrappedB.doGenerate(callOpts);\n await wrappedA.doGenerate(callOpts);\n\n expect(seen).toEqual([\"gpt-4o\", \"claude-sonnet-4-20250514\", \"gpt-4o\"]);\n });\n});\n\n// ---------------------------------------------------------------------------\n// Edge cases\n// ---------------------------------------------------------------------------\n\ndescribe(\"middleware edge cases\", () => {\n it(\"middleware that only implements wrapGenerate still works for doStream\", async () => {\n const generateCalls: string[] = [];\n const partialMiddleware: LanguageModelV2Middleware = {\n wrapGenerate: async ({ doGenerate, model }) => {\n generateCalls.push(model.modelId);\n return doGenerate();\n },\n };\n\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({\n model: mockModel,\n middleware: partialMiddleware,\n });\n\n const result = await wrapped.doStream({\n prompt: [{ role: \"user\", content: [{ type: \"text\", text: \"stream\" }] }],\n });\n expect(result.stream).toBeDefined();\n\n expect(generateCalls).toHaveLength(0);\n });\n\n it(\"middleware does not alter the response data\", async () => {\n const { middleware } = createRecordingMiddleware();\n const mockModel = createMockLanguageModel(\"gpt-4o\", \"openai.chat\");\n\n const { wrapLanguageModel } = await import(\"ai\");\n const wrapped = wrapLanguageModel({ model: mockModel, middleware });\n\n const result = await wrapped.doGenerate({\n prompt: [{ role: \"user\", content: [{ type: \"text\", text: \"test\" }] }],\n });\n\n expect(result.content).toEqual([{ type: \"text\", text: \"mock response\" }]);\n expect(result.usage).toEqual({\n inputTokens: 10,\n outputTokens: 5,\n totalTokens: 15,\n });\n expect(result.finishReason).toBe(\"stop\");\n });\n});\n"]}
@@ -0,0 +1 @@
1
+ export {};