@browserbasehq/orca 3.4.0-preview.0 → 3.5.0-preview.0

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 (829) hide show
  1. package/dist/cjs/lib/inference.d.ts +2 -1
  2. package/dist/cjs/lib/inference.js +10 -3
  3. package/dist/cjs/lib/inference.js.map +1 -1
  4. package/dist/cjs/lib/prompt.d.ts +2 -2
  5. package/dist/cjs/lib/prompt.js +19 -4
  6. package/dist/cjs/lib/prompt.js.map +1 -1
  7. package/dist/cjs/lib/v3/agent/AgentProvider.d.ts +1 -1
  8. package/dist/cjs/lib/v3/agent/AgentProvider.js.map +1 -1
  9. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js +10 -0
  10. package/dist/cjs/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  11. package/dist/cjs/lib/v3/handlers/extractHandler.js +19 -2
  12. package/dist/cjs/lib/v3/handlers/extractHandler.js.map +1 -1
  13. package/dist/cjs/lib/v3/handlers/observeHandler.js +2 -1
  14. package/dist/cjs/lib/v3/handlers/observeHandler.js.map +1 -1
  15. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  16. package/dist/cjs/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  17. package/dist/cjs/lib/v3/index.d.ts +1 -0
  18. package/dist/cjs/lib/v3/index.js.map +1 -1
  19. package/dist/cjs/lib/v3/launch/local.d.ts +2 -7
  20. package/dist/cjs/lib/v3/launch/local.js +47 -7
  21. package/dist/cjs/lib/v3/launch/local.js.map +1 -1
  22. package/dist/cjs/lib/v3/llm/aisdk.js +5 -0
  23. package/dist/cjs/lib/v3/llm/aisdk.js.map +1 -1
  24. package/dist/cjs/lib/v3/types/private/handlers.d.ts +2 -0
  25. package/dist/cjs/lib/v3/types/private/handlers.js.map +1 -1
  26. package/dist/cjs/lib/v3/types/private/snapshot.d.ts +2 -0
  27. package/dist/cjs/lib/v3/types/private/snapshot.js.map +1 -1
  28. package/dist/cjs/lib/v3/types/public/agent.d.ts +1 -1
  29. package/dist/cjs/lib/v3/types/public/agent.js.map +1 -1
  30. package/dist/cjs/lib/v3/types/public/api.d.ts +287 -0
  31. package/dist/cjs/lib/v3/types/public/api.js +61 -3
  32. package/dist/cjs/lib/v3/types/public/api.js.map +1 -1
  33. package/dist/cjs/lib/v3/types/public/methods.d.ts +2 -0
  34. package/dist/cjs/lib/v3/types/public/methods.js.map +1 -1
  35. package/dist/cjs/lib/v3/types/public/model.d.ts +11 -7
  36. package/dist/cjs/lib/v3/types/public/model.js.map +1 -1
  37. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  38. package/dist/cjs/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  39. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  40. package/dist/cjs/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  41. package/dist/cjs/lib/v3/v3.js +7 -47
  42. package/dist/cjs/lib/v3/v3.js.map +1 -1
  43. package/dist/cjs/lib/v3Evaluator.d.ts +20 -12
  44. package/dist/cjs/lib/v3Evaluator.js +41 -199
  45. package/dist/cjs/lib/v3Evaluator.js.map +1 -1
  46. package/dist/cjs/lib/v3LegacyEvaluator.d.ts +20 -0
  47. package/dist/cjs/lib/v3LegacyEvaluator.js +215 -0
  48. package/dist/cjs/lib/v3LegacyEvaluator.js.map +1 -0
  49. package/dist/cjs/lib/version.d.ts +1 -1
  50. package/dist/cjs/lib/version.js +1 -1
  51. package/dist/cjs/lib/version.js.map +1 -1
  52. package/dist/esm/lib/inference.d.ts +2 -1
  53. package/dist/esm/lib/inference.js +10 -3
  54. package/dist/esm/lib/inference.js.map +1 -1
  55. package/dist/esm/lib/prompt.d.ts +2 -2
  56. package/dist/esm/lib/prompt.js +19 -4
  57. package/dist/esm/lib/prompt.js.map +1 -1
  58. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +1 -1
  59. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -1
  60. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +10 -0
  61. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -1
  62. package/dist/esm/lib/v3/handlers/extractHandler.js +19 -2
  63. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -1
  64. package/dist/esm/lib/v3/handlers/observeHandler.js +2 -1
  65. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -1
  66. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +1 -0
  67. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -1
  68. package/dist/esm/lib/v3/index.d.ts +1 -0
  69. package/dist/esm/lib/v3/index.js.map +1 -1
  70. package/dist/esm/lib/v3/launch/local.d.ts +2 -7
  71. package/dist/esm/lib/v3/launch/local.js +48 -8
  72. package/dist/esm/lib/v3/launch/local.js.map +1 -1
  73. package/dist/esm/lib/v3/llm/aisdk.js +5 -0
  74. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -1
  75. package/dist/esm/lib/v3/types/private/handlers.d.ts +2 -0
  76. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -1
  77. package/dist/esm/lib/v3/types/private/snapshot.d.ts +2 -0
  78. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -1
  79. package/dist/esm/lib/v3/types/public/agent.d.ts +1 -1
  80. package/dist/esm/lib/v3/types/public/agent.js.map +1 -1
  81. package/dist/esm/lib/v3/types/public/api.d.ts +287 -0
  82. package/dist/esm/lib/v3/types/public/api.js +59 -1
  83. package/dist/esm/lib/v3/types/public/api.js.map +1 -1
  84. package/dist/esm/lib/v3/types/public/methods.d.ts +2 -0
  85. package/dist/esm/lib/v3/types/public/methods.js.map +1 -1
  86. package/dist/esm/lib/v3/types/public/model.d.ts +11 -7
  87. package/dist/esm/lib/v3/types/public/model.js.map +1 -1
  88. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +25 -0
  89. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -1
  90. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +10 -1
  91. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -1
  92. package/dist/esm/lib/v3/v3.js +7 -47
  93. package/dist/esm/lib/v3/v3.js.map +1 -1
  94. package/dist/esm/lib/v3Evaluator.d.ts +20 -12
  95. package/dist/esm/lib/v3Evaluator.js +41 -199
  96. package/dist/esm/lib/v3Evaluator.js.map +1 -1
  97. package/dist/esm/lib/v3LegacyEvaluator.d.ts +20 -0
  98. package/dist/esm/lib/v3LegacyEvaluator.js +211 -0
  99. package/dist/esm/lib/v3LegacyEvaluator.js.map +1 -0
  100. package/dist/esm/lib/version.d.ts +1 -1
  101. package/dist/esm/lib/version.js +1 -1
  102. package/dist/esm/lib/version.js.map +1 -1
  103. package/package.json +30 -18
  104. package/dist/cjs/tests/cache-variables.test.d.ts +0 -1
  105. package/dist/cjs/tests/cache-variables.test.js +0 -221
  106. package/dist/cjs/tests/cache-variables.test.js.map +0 -1
  107. package/dist/cjs/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  108. package/dist/cjs/tests/integration/agent-abort-signal.spec.js +0 -123
  109. package/dist/cjs/tests/integration/agent-abort-signal.spec.js.map +0 -1
  110. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  111. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js +0 -83
  112. package/dist/cjs/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  113. package/dist/cjs/tests/integration/agent-callbacks.spec.d.ts +0 -1
  114. package/dist/cjs/tests/integration/agent-callbacks.spec.js +0 -385
  115. package/dist/cjs/tests/integration/agent-callbacks.spec.js.map +0 -1
  116. package/dist/cjs/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  117. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js +0 -362
  118. package/dist/cjs/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  119. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  120. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js +0 -262
  121. package/dist/cjs/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  122. package/dist/cjs/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  123. package/dist/cjs/tests/integration/agent-message-continuation.spec.js +0 -112
  124. package/dist/cjs/tests/integration/agent-message-continuation.spec.js.map +0 -1
  125. package/dist/cjs/tests/integration/agent-streaming.spec.d.ts +0 -1
  126. package/dist/cjs/tests/integration/agent-streaming.spec.js +0 -140
  127. package/dist/cjs/tests/integration/agent-streaming.spec.js.map +0 -1
  128. package/dist/cjs/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  129. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js +0 -41
  130. package/dist/cjs/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  131. package/dist/cjs/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  132. package/dist/cjs/tests/integration/cdp-connection-close.spec.js +0 -76
  133. package/dist/cjs/tests/integration/cdp-connection-close.spec.js.map +0 -1
  134. package/dist/cjs/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  135. package/dist/cjs/tests/integration/cdp-session-detached.spec.js +0 -45
  136. package/dist/cjs/tests/integration/cdp-session-detached.spec.js.map +0 -1
  137. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  138. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js +0 -56
  139. package/dist/cjs/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  140. package/dist/cjs/tests/integration/click-count.spec.d.ts +0 -1
  141. package/dist/cjs/tests/integration/click-count.spec.js +0 -163
  142. package/dist/cjs/tests/integration/click-count.spec.js.map +0 -1
  143. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  144. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js +0 -99
  145. package/dist/cjs/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  146. package/dist/cjs/tests/integration/context-addInitScript.spec.d.ts +0 -1
  147. package/dist/cjs/tests/integration/context-addInitScript.spec.js +0 -285
  148. package/dist/cjs/tests/integration/context-addInitScript.spec.js.map +0 -1
  149. package/dist/cjs/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  150. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js +0 -49
  151. package/dist/cjs/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  152. package/dist/cjs/tests/integration/cookies.spec.d.ts +0 -1
  153. package/dist/cjs/tests/integration/cookies.spec.js +0 -187
  154. package/dist/cjs/tests/integration/cookies.spec.js.map +0 -1
  155. package/dist/cjs/tests/integration/default-page-tracking.spec.d.ts +0 -1
  156. package/dist/cjs/tests/integration/default-page-tracking.spec.js +0 -52
  157. package/dist/cjs/tests/integration/default-page-tracking.spec.js.map +0 -1
  158. package/dist/cjs/tests/integration/downloads.spec.d.ts +0 -1
  159. package/dist/cjs/tests/integration/downloads.spec.js +0 -52
  160. package/dist/cjs/tests/integration/downloads.spec.js.map +0 -1
  161. package/dist/cjs/tests/integration/flowLogger.spec.d.ts +0 -1
  162. package/dist/cjs/tests/integration/flowLogger.spec.js +0 -718
  163. package/dist/cjs/tests/integration/flowLogger.spec.js.map +0 -1
  164. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  165. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js +0 -57
  166. package/dist/cjs/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  167. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  168. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -219
  169. package/dist/cjs/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  170. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  171. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js +0 -474
  172. package/dist/cjs/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  173. package/dist/cjs/tests/integration/keep-alive.child.d.ts +0 -1
  174. package/dist/cjs/tests/integration/keep-alive.child.js +0 -85
  175. package/dist/cjs/tests/integration/keep-alive.child.js.map +0 -1
  176. package/dist/cjs/tests/integration/keep-alive.spec.d.ts +0 -22
  177. package/dist/cjs/tests/integration/keep-alive.spec.js +0 -490
  178. package/dist/cjs/tests/integration/keep-alive.spec.js.map +0 -1
  179. package/dist/cjs/tests/integration/keyboard.spec.d.ts +0 -1
  180. package/dist/cjs/tests/integration/keyboard.spec.js +0 -259
  181. package/dist/cjs/tests/integration/keyboard.spec.js.map +0 -1
  182. package/dist/cjs/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  183. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js +0 -150
  184. package/dist/cjs/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  185. package/dist/cjs/tests/integration/locator-content-methods.spec.d.ts +0 -1
  186. package/dist/cjs/tests/integration/locator-content-methods.spec.js +0 -180
  187. package/dist/cjs/tests/integration/locator-content-methods.spec.js.map +0 -1
  188. package/dist/cjs/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  189. package/dist/cjs/tests/integration/locator-count-iframe.spec.js +0 -129
  190. package/dist/cjs/tests/integration/locator-count-iframe.spec.js.map +0 -1
  191. package/dist/cjs/tests/integration/locator-count.spec.d.ts +0 -1
  192. package/dist/cjs/tests/integration/locator-count.spec.js +0 -68
  193. package/dist/cjs/tests/integration/locator-count.spec.js.map +0 -1
  194. package/dist/cjs/tests/integration/locator-fill.spec.d.ts +0 -1
  195. package/dist/cjs/tests/integration/locator-fill.spec.js +0 -117
  196. package/dist/cjs/tests/integration/locator-fill.spec.js.map +0 -1
  197. package/dist/cjs/tests/integration/locator-input-methods.spec.d.ts +0 -1
  198. package/dist/cjs/tests/integration/locator-input-methods.spec.js +0 -127
  199. package/dist/cjs/tests/integration/locator-input-methods.spec.js.map +0 -1
  200. package/dist/cjs/tests/integration/locator-nth.spec.d.ts +0 -1
  201. package/dist/cjs/tests/integration/locator-nth.spec.js +0 -175
  202. package/dist/cjs/tests/integration/locator-nth.spec.js.map +0 -1
  203. package/dist/cjs/tests/integration/locator-select-option.spec.d.ts +0 -1
  204. package/dist/cjs/tests/integration/locator-select-option.spec.js +0 -216
  205. package/dist/cjs/tests/integration/locator-select-option.spec.js.map +0 -1
  206. package/dist/cjs/tests/integration/logger-initialization.spec.d.ts +0 -1
  207. package/dist/cjs/tests/integration/logger-initialization.spec.js +0 -597
  208. package/dist/cjs/tests/integration/logger-initialization.spec.js.map +0 -1
  209. package/dist/cjs/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  210. package/dist/cjs/tests/integration/multi-instance-logger.spec.js +0 -293
  211. package/dist/cjs/tests/integration/multi-instance-logger.spec.js.map +0 -1
  212. package/dist/cjs/tests/integration/nested-div.spec.d.ts +0 -1
  213. package/dist/cjs/tests/integration/nested-div.spec.js +0 -22
  214. package/dist/cjs/tests/integration/nested-div.spec.js.map +0 -1
  215. package/dist/cjs/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  216. package/dist/cjs/tests/integration/observe-element-id-format.spec.js +0 -130
  217. package/dist/cjs/tests/integration/observe-element-id-format.spec.js.map +0 -1
  218. package/dist/cjs/tests/integration/page-addInitScript.spec.d.ts +0 -1
  219. package/dist/cjs/tests/integration/page-addInitScript.spec.js +0 -94
  220. package/dist/cjs/tests/integration/page-addInitScript.spec.js.map +0 -1
  221. package/dist/cjs/tests/integration/page-console.spec.d.ts +0 -1
  222. package/dist/cjs/tests/integration/page-console.spec.js +0 -47
  223. package/dist/cjs/tests/integration/page-console.spec.js.map +0 -1
  224. package/dist/cjs/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  225. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js +0 -437
  226. package/dist/cjs/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  227. package/dist/cjs/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  228. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js +0 -85
  229. package/dist/cjs/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  230. package/dist/cjs/tests/integration/page-goto-response.spec.d.ts +0 -1
  231. package/dist/cjs/tests/integration/page-goto-response.spec.js +0 -34
  232. package/dist/cjs/tests/integration/page-goto-response.spec.js.map +0 -1
  233. package/dist/cjs/tests/integration/page-hover.spec.d.ts +0 -1
  234. package/dist/cjs/tests/integration/page-hover.spec.js +0 -165
  235. package/dist/cjs/tests/integration/page-hover.spec.js.map +0 -1
  236. package/dist/cjs/tests/integration/page-screenshot.spec.d.ts +0 -1
  237. package/dist/cjs/tests/integration/page-screenshot.spec.js +0 -292
  238. package/dist/cjs/tests/integration/page-screenshot.spec.js.map +0 -1
  239. package/dist/cjs/tests/integration/page-scroll.spec.d.ts +0 -1
  240. package/dist/cjs/tests/integration/page-scroll.spec.js +0 -183
  241. package/dist/cjs/tests/integration/page-scroll.spec.js.map +0 -1
  242. package/dist/cjs/tests/integration/page-send-cdp.spec.d.ts +0 -1
  243. package/dist/cjs/tests/integration/page-send-cdp.spec.js +0 -47
  244. package/dist/cjs/tests/integration/page-send-cdp.spec.js.map +0 -1
  245. package/dist/cjs/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  246. package/dist/cjs/tests/integration/perform-understudy-method.spec.js +0 -63
  247. package/dist/cjs/tests/integration/perform-understudy-method.spec.js.map +0 -1
  248. package/dist/cjs/tests/integration/setinputfiles.spec.d.ts +0 -1
  249. package/dist/cjs/tests/integration/setinputfiles.spec.js +0 -133
  250. package/dist/cjs/tests/integration/setinputfiles.spec.js.map +0 -1
  251. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  252. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js +0 -161
  253. package/dist/cjs/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  254. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  255. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js +0 -160
  256. package/dist/cjs/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  257. package/dist/cjs/tests/integration/testUtils.d.ts +0 -40
  258. package/dist/cjs/tests/integration/testUtils.js +0 -188
  259. package/dist/cjs/tests/integration/testUtils.js.map +0 -1
  260. package/dist/cjs/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  261. package/dist/cjs/tests/integration/text-selector-innermost.spec.js +0 -105
  262. package/dist/cjs/tests/integration/text-selector-innermost.spec.js.map +0 -1
  263. package/dist/cjs/tests/integration/timeouts.spec.d.ts +0 -1
  264. package/dist/cjs/tests/integration/timeouts.spec.js +0 -309
  265. package/dist/cjs/tests/integration/timeouts.spec.js.map +0 -1
  266. package/dist/cjs/tests/integration/user-data-dir.spec.d.ts +0 -1
  267. package/dist/cjs/tests/integration/user-data-dir.spec.js +0 -77
  268. package/dist/cjs/tests/integration/user-data-dir.spec.js.map +0 -1
  269. package/dist/cjs/tests/integration/v3.config.d.ts +0 -4
  270. package/dist/cjs/tests/integration/v3.config.js +0 -11
  271. package/dist/cjs/tests/integration/v3.config.js.map +0 -1
  272. package/dist/cjs/tests/integration/v3.dynamic.config.d.ts +0 -4
  273. package/dist/cjs/tests/integration/v3.dynamic.config.js +0 -48
  274. package/dist/cjs/tests/integration/v3.dynamic.config.js.map +0 -1
  275. package/dist/cjs/tests/integration/v3.playwright.config.d.ts +0 -2
  276. package/dist/cjs/tests/integration/v3.playwright.config.js +0 -48
  277. package/dist/cjs/tests/integration/v3.playwright.config.js.map +0 -1
  278. package/dist/cjs/tests/integration/wait-for-selector.spec.d.ts +0 -1
  279. package/dist/cjs/tests/integration/wait-for-selector.spec.js +0 -683
  280. package/dist/cjs/tests/integration/wait-for-selector.spec.js.map +0 -1
  281. package/dist/cjs/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  282. package/dist/cjs/tests/integration/wait-for-timeout.spec.js +0 -118
  283. package/dist/cjs/tests/integration/wait-for-timeout.spec.js.map +0 -1
  284. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  285. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js +0 -87
  286. package/dist/cjs/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  287. package/dist/cjs/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  288. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js +0 -341
  289. package/dist/cjs/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  290. package/dist/cjs/tests/unit/agent-execution-model.test.d.ts +0 -1
  291. package/dist/cjs/tests/unit/agent-execution-model.test.js +0 -150
  292. package/dist/cjs/tests/unit/agent-execution-model.test.js.map +0 -1
  293. package/dist/cjs/tests/unit/agent-metrics.test.d.ts +0 -1
  294. package/dist/cjs/tests/unit/agent-metrics.test.js +0 -112
  295. package/dist/cjs/tests/unit/agent-metrics.test.js.map +0 -1
  296. package/dist/cjs/tests/unit/agent-mode-routing.test.d.ts +0 -1
  297. package/dist/cjs/tests/unit/agent-mode-routing.test.js +0 -88
  298. package/dist/cjs/tests/unit/agent-mode-routing.test.js.map +0 -1
  299. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  300. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js +0 -23
  301. package/dist/cjs/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  302. package/dist/cjs/tests/unit/agent-temperature.test.d.ts +0 -1
  303. package/dist/cjs/tests/unit/agent-temperature.test.js +0 -191
  304. package/dist/cjs/tests/unit/agent-temperature.test.js.map +0 -1
  305. package/dist/cjs/tests/unit/agent-variables-validation.test.d.ts +0 -1
  306. package/dist/cjs/tests/unit/agent-variables-validation.test.js +0 -43
  307. package/dist/cjs/tests/unit/agent-variables-validation.test.js.map +0 -1
  308. package/dist/cjs/tests/unit/aisdk-clients.test.d.ts +0 -1
  309. package/dist/cjs/tests/unit/aisdk-clients.test.js +0 -86
  310. package/dist/cjs/tests/unit/aisdk-clients.test.js.map +0 -1
  311. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  312. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -250
  313. package/dist/cjs/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  314. package/dist/cjs/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  315. package/dist/cjs/tests/unit/api-client-observe-variables.test.js +0 -133
  316. package/dist/cjs/tests/unit/api-client-observe-variables.test.js.map +0 -1
  317. package/dist/cjs/tests/unit/api-multiregion.test.d.ts +0 -1
  318. package/dist/cjs/tests/unit/api-multiregion.test.js +0 -58
  319. package/dist/cjs/tests/unit/api-multiregion.test.js.map +0 -1
  320. package/dist/cjs/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  321. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js +0 -155
  322. package/dist/cjs/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  323. package/dist/cjs/tests/unit/api-variables-schema.test.d.ts +0 -1
  324. package/dist/cjs/tests/unit/api-variables-schema.test.js +0 -62
  325. package/dist/cjs/tests/unit/api-variables-schema.test.js.map +0 -1
  326. package/dist/cjs/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  327. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js +0 -142
  328. package/dist/cjs/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  329. package/dist/cjs/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  330. package/dist/cjs/tests/unit/cache-llm-resolution.test.js +0 -186
  331. package/dist/cjs/tests/unit/cache-llm-resolution.test.js.map +0 -1
  332. package/dist/cjs/tests/unit/captcha-solver.test.d.ts +0 -1
  333. package/dist/cjs/tests/unit/captcha-solver.test.js +0 -154
  334. package/dist/cjs/tests/unit/captcha-solver.test.js.map +0 -1
  335. package/dist/cjs/tests/unit/cdp-connection-close.test.d.ts +0 -1
  336. package/dist/cjs/tests/unit/cdp-connection-close.test.js +0 -74
  337. package/dist/cjs/tests/unit/cdp-connection-close.test.js.map +0 -1
  338. package/dist/cjs/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  339. package/dist/cjs/tests/unit/context-extra-http-headers.test.js +0 -58
  340. package/dist/cjs/tests/unit/context-extra-http-headers.test.js.map +0 -1
  341. package/dist/cjs/tests/unit/cookies.test.d.ts +0 -1
  342. package/dist/cjs/tests/unit/cookies.test.js +0 -944
  343. package/dist/cjs/tests/unit/cookies.test.js.map +0 -1
  344. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  345. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js +0 -95
  346. package/dist/cjs/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  347. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  348. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js +0 -43
  349. package/dist/cjs/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  350. package/dist/cjs/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  351. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js +0 -250
  352. package/dist/cjs/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  353. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  354. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js +0 -60
  355. package/dist/cjs/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  356. package/dist/cjs/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  357. package/dist/cjs/tests/unit/helpers/mockCDPSession.js +0 -29
  358. package/dist/cjs/tests/unit/helpers/mockCDPSession.js.map +0 -1
  359. package/dist/cjs/tests/unit/inference-temperature.test.d.ts +0 -1
  360. package/dist/cjs/tests/unit/inference-temperature.test.js +0 -65
  361. package/dist/cjs/tests/unit/inference-temperature.test.js.map +0 -1
  362. package/dist/cjs/tests/unit/llm-middleware.test.d.ts +0 -1
  363. package/dist/cjs/tests/unit/llm-middleware.test.js +0 -495
  364. package/dist/cjs/tests/unit/llm-middleware.test.js.map +0 -1
  365. package/dist/cjs/tests/unit/llm-provider.test.d.ts +0 -1
  366. package/dist/cjs/tests/unit/llm-provider.test.js +0 -64
  367. package/dist/cjs/tests/unit/llm-provider.test.js.map +0 -1
  368. package/dist/cjs/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  369. package/dist/cjs/tests/unit/microsoft-cua-client.test.js +0 -86
  370. package/dist/cjs/tests/unit/microsoft-cua-client.test.js.map +0 -1
  371. package/dist/cjs/tests/unit/model-deprecation.test.d.ts +0 -1
  372. package/dist/cjs/tests/unit/model-deprecation.test.js +0 -142
  373. package/dist/cjs/tests/unit/model-deprecation.test.js.map +0 -1
  374. package/dist/cjs/tests/unit/model-utils.test.d.ts +0 -1
  375. package/dist/cjs/tests/unit/model-utils.test.js +0 -42
  376. package/dist/cjs/tests/unit/model-utils.test.js.map +0 -1
  377. package/dist/cjs/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  378. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js +0 -84
  379. package/dist/cjs/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  380. package/dist/cjs/tests/unit/openai-cua-client.test.d.ts +0 -1
  381. package/dist/cjs/tests/unit/openai-cua-client.test.js +0 -71
  382. package/dist/cjs/tests/unit/openai-cua-client.test.js.map +0 -1
  383. package/dist/cjs/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  384. package/dist/cjs/tests/unit/page-extra-http-headers.test.js +0 -92
  385. package/dist/cjs/tests/unit/page-extra-http-headers.test.js.map +0 -1
  386. package/dist/cjs/tests/unit/page-snapshot.test.d.ts +0 -1
  387. package/dist/cjs/tests/unit/page-snapshot.test.js +0 -75
  388. package/dist/cjs/tests/unit/page-snapshot.test.js.map +0 -1
  389. package/dist/cjs/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  390. package/dist/cjs/tests/unit/prompt-observe-variables.test.js +0 -25
  391. package/dist/cjs/tests/unit/prompt-observe-variables.test.js.map +0 -1
  392. package/dist/cjs/tests/unit/public-api/export-surface.test.d.ts +0 -1
  393. package/dist/cjs/tests/unit/public-api/export-surface.test.js +0 -107
  394. package/dist/cjs/tests/unit/public-api/export-surface.test.js.map +0 -1
  395. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  396. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js +0 -179
  397. package/dist/cjs/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  398. package/dist/cjs/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  399. package/dist/cjs/tests/unit/public-api/public-error-types.test.js +0 -110
  400. package/dist/cjs/tests/unit/public-api/public-error-types.test.js.map +0 -1
  401. package/dist/cjs/tests/unit/public-api/public-types.test.d.ts +0 -1
  402. package/dist/cjs/tests/unit/public-api/public-types.test.js +0 -99
  403. package/dist/cjs/tests/unit/public-api/public-types.test.js.map +0 -1
  404. package/dist/cjs/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  405. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js +0 -60
  406. package/dist/cjs/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  407. package/dist/cjs/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  408. package/dist/cjs/tests/unit/public-api/schema-utils.test.js +0 -95
  409. package/dist/cjs/tests/unit/public-api/schema-utils.test.js.map +0 -1
  410. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  411. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js +0 -121
  412. package/dist/cjs/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  413. package/dist/cjs/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  414. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js +0 -65
  415. package/dist/cjs/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  416. package/dist/cjs/tests/unit/public-api/v3-core.test.d.ts +0 -1
  417. package/dist/cjs/tests/unit/public-api/v3-core.test.js +0 -108
  418. package/dist/cjs/tests/unit/public-api/v3-core.test.js.map +0 -1
  419. package/dist/cjs/tests/unit/safety-confirmation.test.d.ts +0 -1
  420. package/dist/cjs/tests/unit/safety-confirmation.test.js +0 -110
  421. package/dist/cjs/tests/unit/safety-confirmation.test.js.map +0 -1
  422. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  423. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js +0 -431
  424. package/dist/cjs/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  425. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  426. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js +0 -306
  427. package/dist/cjs/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  428. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  429. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js +0 -504
  430. package/dist/cjs/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  431. package/dist/cjs/tests/unit/snapshot-cbor.test.d.ts +0 -1
  432. package/dist/cjs/tests/unit/snapshot-cbor.test.js +0 -204
  433. package/dist/cjs/tests/unit/snapshot-cbor.test.js.map +0 -1
  434. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  435. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js +0 -220
  436. package/dist/cjs/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  437. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  438. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js +0 -107
  439. package/dist/cjs/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  440. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  441. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js +0 -89
  442. package/dist/cjs/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  443. package/dist/cjs/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  444. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js +0 -335
  445. package/dist/cjs/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  446. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  447. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js +0 -84
  448. package/dist/cjs/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  449. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  450. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js +0 -74
  451. package/dist/cjs/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  452. package/dist/cjs/tests/unit/timeout-handlers.test.d.ts +0 -1
  453. package/dist/cjs/tests/unit/timeout-handlers.test.js +0 -897
  454. package/dist/cjs/tests/unit/timeout-handlers.test.js.map +0 -1
  455. package/dist/cjs/tests/unit/understudy-command-exception.test.d.ts +0 -1
  456. package/dist/cjs/tests/unit/understudy-command-exception.test.js +0 -57
  457. package/dist/cjs/tests/unit/understudy-command-exception.test.js.map +0 -1
  458. package/dist/cjs/tests/unit/xpath-parser.test.d.ts +0 -1
  459. package/dist/cjs/tests/unit/xpath-parser.test.js +0 -311
  460. package/dist/cjs/tests/unit/xpath-parser.test.js.map +0 -1
  461. package/dist/cjs/tests/unit/xpath-resolver.test.d.ts +0 -1
  462. package/dist/cjs/tests/unit/xpath-resolver.test.js +0 -80
  463. package/dist/cjs/tests/unit/xpath-resolver.test.js.map +0 -1
  464. package/dist/cjs/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  465. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js +0 -149
  466. package/dist/cjs/tests/unit/zod-enum-compatibility.test.js.map +0 -1
  467. package/dist/esm/tests/cache-variables.test.d.ts +0 -1
  468. package/dist/esm/tests/cache-variables.test.js +0 -219
  469. package/dist/esm/tests/cache-variables.test.js.map +0 -1
  470. package/dist/esm/tests/integration/agent-abort-signal.spec.d.ts +0 -1
  471. package/dist/esm/tests/integration/agent-abort-signal.spec.js +0 -121
  472. package/dist/esm/tests/integration/agent-abort-signal.spec.js.map +0 -1
  473. package/dist/esm/tests/integration/agent-cache-self-heal.spec.d.ts +0 -1
  474. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js +0 -78
  475. package/dist/esm/tests/integration/agent-cache-self-heal.spec.js.map +0 -1
  476. package/dist/esm/tests/integration/agent-callbacks.spec.d.ts +0 -1
  477. package/dist/esm/tests/integration/agent-callbacks.spec.js +0 -383
  478. package/dist/esm/tests/integration/agent-callbacks.spec.js.map +0 -1
  479. package/dist/esm/tests/integration/agent-experimental-validation.spec.d.ts +0 -1
  480. package/dist/esm/tests/integration/agent-experimental-validation.spec.js +0 -360
  481. package/dist/esm/tests/integration/agent-experimental-validation.spec.js.map +0 -1
  482. package/dist/esm/tests/integration/agent-hybrid-mode.spec.d.ts +0 -1
  483. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js +0 -260
  484. package/dist/esm/tests/integration/agent-hybrid-mode.spec.js.map +0 -1
  485. package/dist/esm/tests/integration/agent-message-continuation.spec.d.ts +0 -1
  486. package/dist/esm/tests/integration/agent-message-continuation.spec.js +0 -110
  487. package/dist/esm/tests/integration/agent-message-continuation.spec.js.map +0 -1
  488. package/dist/esm/tests/integration/agent-streaming.spec.d.ts +0 -1
  489. package/dist/esm/tests/integration/agent-streaming.spec.js +0 -138
  490. package/dist/esm/tests/integration/agent-streaming.spec.js.map +0 -1
  491. package/dist/esm/tests/integration/cdp-close-api-region.spec.d.ts +0 -1
  492. package/dist/esm/tests/integration/cdp-close-api-region.spec.js +0 -39
  493. package/dist/esm/tests/integration/cdp-close-api-region.spec.js.map +0 -1
  494. package/dist/esm/tests/integration/cdp-connection-close.spec.d.ts +0 -1
  495. package/dist/esm/tests/integration/cdp-connection-close.spec.js +0 -74
  496. package/dist/esm/tests/integration/cdp-connection-close.spec.js.map +0 -1
  497. package/dist/esm/tests/integration/cdp-session-detached.spec.d.ts +0 -1
  498. package/dist/esm/tests/integration/cdp-session-detached.spec.js +0 -43
  499. package/dist/esm/tests/integration/cdp-session-detached.spec.js.map +0 -1
  500. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.d.ts +0 -1
  501. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js +0 -54
  502. package/dist/esm/tests/integration/chrome-newtab-page-tracking.spec.js.map +0 -1
  503. package/dist/esm/tests/integration/click-count.spec.d.ts +0 -1
  504. package/dist/esm/tests/integration/click-count.spec.js +0 -161
  505. package/dist/esm/tests/integration/click-count.spec.js.map +0 -1
  506. package/dist/esm/tests/integration/connect-to-existing-browser.spec.d.ts +0 -1
  507. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js +0 -97
  508. package/dist/esm/tests/integration/connect-to-existing-browser.spec.js.map +0 -1
  509. package/dist/esm/tests/integration/context-addInitScript.spec.d.ts +0 -1
  510. package/dist/esm/tests/integration/context-addInitScript.spec.js +0 -283
  511. package/dist/esm/tests/integration/context-addInitScript.spec.js.map +0 -1
  512. package/dist/esm/tests/integration/context-extra-http-headers.spec.d.ts +0 -1
  513. package/dist/esm/tests/integration/context-extra-http-headers.spec.js +0 -47
  514. package/dist/esm/tests/integration/context-extra-http-headers.spec.js.map +0 -1
  515. package/dist/esm/tests/integration/cookies.spec.d.ts +0 -1
  516. package/dist/esm/tests/integration/cookies.spec.js +0 -185
  517. package/dist/esm/tests/integration/cookies.spec.js.map +0 -1
  518. package/dist/esm/tests/integration/default-page-tracking.spec.d.ts +0 -1
  519. package/dist/esm/tests/integration/default-page-tracking.spec.js +0 -50
  520. package/dist/esm/tests/integration/default-page-tracking.spec.js.map +0 -1
  521. package/dist/esm/tests/integration/downloads.spec.d.ts +0 -1
  522. package/dist/esm/tests/integration/downloads.spec.js +0 -47
  523. package/dist/esm/tests/integration/downloads.spec.js.map +0 -1
  524. package/dist/esm/tests/integration/flowLogger.spec.d.ts +0 -1
  525. package/dist/esm/tests/integration/flowLogger.spec.js +0 -716
  526. package/dist/esm/tests/integration/flowLogger.spec.js.map +0 -1
  527. package/dist/esm/tests/integration/frame-get-location-and-click.spec.d.ts +0 -1
  528. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js +0 -55
  529. package/dist/esm/tests/integration/frame-get-location-and-click.spec.js.map +0 -1
  530. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.d.ts +0 -1
  531. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js +0 -217
  532. package/dist/esm/tests/integration/iframe-ctx-addInitScript-race.spec.js.map +0 -1
  533. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.d.ts +0 -1
  534. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js +0 -472
  535. package/dist/esm/tests/integration/iframe-ctx-addInitScript.spec.js.map +0 -1
  536. package/dist/esm/tests/integration/keep-alive.child.d.ts +0 -1
  537. package/dist/esm/tests/integration/keep-alive.child.js +0 -83
  538. package/dist/esm/tests/integration/keep-alive.child.js.map +0 -1
  539. package/dist/esm/tests/integration/keep-alive.spec.d.ts +0 -22
  540. package/dist/esm/tests/integration/keep-alive.spec.js +0 -482
  541. package/dist/esm/tests/integration/keep-alive.spec.js.map +0 -1
  542. package/dist/esm/tests/integration/keyboard.spec.d.ts +0 -1
  543. package/dist/esm/tests/integration/keyboard.spec.js +0 -257
  544. package/dist/esm/tests/integration/keyboard.spec.js.map +0 -1
  545. package/dist/esm/tests/integration/locator-backend-node-id.spec.d.ts +0 -1
  546. package/dist/esm/tests/integration/locator-backend-node-id.spec.js +0 -148
  547. package/dist/esm/tests/integration/locator-backend-node-id.spec.js.map +0 -1
  548. package/dist/esm/tests/integration/locator-content-methods.spec.d.ts +0 -1
  549. package/dist/esm/tests/integration/locator-content-methods.spec.js +0 -178
  550. package/dist/esm/tests/integration/locator-content-methods.spec.js.map +0 -1
  551. package/dist/esm/tests/integration/locator-count-iframe.spec.d.ts +0 -1
  552. package/dist/esm/tests/integration/locator-count-iframe.spec.js +0 -127
  553. package/dist/esm/tests/integration/locator-count-iframe.spec.js.map +0 -1
  554. package/dist/esm/tests/integration/locator-count.spec.d.ts +0 -1
  555. package/dist/esm/tests/integration/locator-count.spec.js +0 -66
  556. package/dist/esm/tests/integration/locator-count.spec.js.map +0 -1
  557. package/dist/esm/tests/integration/locator-fill.spec.d.ts +0 -1
  558. package/dist/esm/tests/integration/locator-fill.spec.js +0 -115
  559. package/dist/esm/tests/integration/locator-fill.spec.js.map +0 -1
  560. package/dist/esm/tests/integration/locator-input-methods.spec.d.ts +0 -1
  561. package/dist/esm/tests/integration/locator-input-methods.spec.js +0 -125
  562. package/dist/esm/tests/integration/locator-input-methods.spec.js.map +0 -1
  563. package/dist/esm/tests/integration/locator-nth.spec.d.ts +0 -1
  564. package/dist/esm/tests/integration/locator-nth.spec.js +0 -173
  565. package/dist/esm/tests/integration/locator-nth.spec.js.map +0 -1
  566. package/dist/esm/tests/integration/locator-select-option.spec.d.ts +0 -1
  567. package/dist/esm/tests/integration/locator-select-option.spec.js +0 -214
  568. package/dist/esm/tests/integration/locator-select-option.spec.js.map +0 -1
  569. package/dist/esm/tests/integration/logger-initialization.spec.d.ts +0 -1
  570. package/dist/esm/tests/integration/logger-initialization.spec.js +0 -595
  571. package/dist/esm/tests/integration/logger-initialization.spec.js.map +0 -1
  572. package/dist/esm/tests/integration/multi-instance-logger.spec.d.ts +0 -1
  573. package/dist/esm/tests/integration/multi-instance-logger.spec.js +0 -291
  574. package/dist/esm/tests/integration/multi-instance-logger.spec.js.map +0 -1
  575. package/dist/esm/tests/integration/nested-div.spec.d.ts +0 -1
  576. package/dist/esm/tests/integration/nested-div.spec.js +0 -20
  577. package/dist/esm/tests/integration/nested-div.spec.js.map +0 -1
  578. package/dist/esm/tests/integration/observe-element-id-format.spec.d.ts +0 -1
  579. package/dist/esm/tests/integration/observe-element-id-format.spec.js +0 -128
  580. package/dist/esm/tests/integration/observe-element-id-format.spec.js.map +0 -1
  581. package/dist/esm/tests/integration/page-addInitScript.spec.d.ts +0 -1
  582. package/dist/esm/tests/integration/page-addInitScript.spec.js +0 -92
  583. package/dist/esm/tests/integration/page-addInitScript.spec.js.map +0 -1
  584. package/dist/esm/tests/integration/page-console.spec.d.ts +0 -1
  585. package/dist/esm/tests/integration/page-console.spec.js +0 -45
  586. package/dist/esm/tests/integration/page-console.spec.js.map +0 -1
  587. package/dist/esm/tests/integration/page-drag-and-drop.spec.d.ts +0 -1
  588. package/dist/esm/tests/integration/page-drag-and-drop.spec.js +0 -435
  589. package/dist/esm/tests/integration/page-drag-and-drop.spec.js.map +0 -1
  590. package/dist/esm/tests/integration/page-extra-http-headers.spec.d.ts +0 -1
  591. package/dist/esm/tests/integration/page-extra-http-headers.spec.js +0 -83
  592. package/dist/esm/tests/integration/page-extra-http-headers.spec.js.map +0 -1
  593. package/dist/esm/tests/integration/page-goto-response.spec.d.ts +0 -1
  594. package/dist/esm/tests/integration/page-goto-response.spec.js +0 -32
  595. package/dist/esm/tests/integration/page-goto-response.spec.js.map +0 -1
  596. package/dist/esm/tests/integration/page-hover.spec.d.ts +0 -1
  597. package/dist/esm/tests/integration/page-hover.spec.js +0 -163
  598. package/dist/esm/tests/integration/page-hover.spec.js.map +0 -1
  599. package/dist/esm/tests/integration/page-screenshot.spec.d.ts +0 -1
  600. package/dist/esm/tests/integration/page-screenshot.spec.js +0 -257
  601. package/dist/esm/tests/integration/page-screenshot.spec.js.map +0 -1
  602. package/dist/esm/tests/integration/page-scroll.spec.d.ts +0 -1
  603. package/dist/esm/tests/integration/page-scroll.spec.js +0 -181
  604. package/dist/esm/tests/integration/page-scroll.spec.js.map +0 -1
  605. package/dist/esm/tests/integration/page-send-cdp.spec.d.ts +0 -1
  606. package/dist/esm/tests/integration/page-send-cdp.spec.js +0 -45
  607. package/dist/esm/tests/integration/page-send-cdp.spec.js.map +0 -1
  608. package/dist/esm/tests/integration/perform-understudy-method.spec.d.ts +0 -1
  609. package/dist/esm/tests/integration/perform-understudy-method.spec.js +0 -61
  610. package/dist/esm/tests/integration/perform-understudy-method.spec.js.map +0 -1
  611. package/dist/esm/tests/integration/setinputfiles.spec.d.ts +0 -1
  612. package/dist/esm/tests/integration/setinputfiles.spec.js +0 -128
  613. package/dist/esm/tests/integration/setinputfiles.spec.js.map +0 -1
  614. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.d.ts +0 -1
  615. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js +0 -156
  616. package/dist/esm/tests/integration/shadow-iframe-oopif.spec.js.map +0 -1
  617. package/dist/esm/tests/integration/shadow-iframe-spif.spec.d.ts +0 -1
  618. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js +0 -155
  619. package/dist/esm/tests/integration/shadow-iframe-spif.spec.js.map +0 -1
  620. package/dist/esm/tests/integration/testUtils.d.ts +0 -40
  621. package/dist/esm/tests/integration/testUtils.js +0 -178
  622. package/dist/esm/tests/integration/testUtils.js.map +0 -1
  623. package/dist/esm/tests/integration/text-selector-innermost.spec.d.ts +0 -1
  624. package/dist/esm/tests/integration/text-selector-innermost.spec.js +0 -103
  625. package/dist/esm/tests/integration/text-selector-innermost.spec.js.map +0 -1
  626. package/dist/esm/tests/integration/timeouts.spec.d.ts +0 -1
  627. package/dist/esm/tests/integration/timeouts.spec.js +0 -307
  628. package/dist/esm/tests/integration/timeouts.spec.js.map +0 -1
  629. package/dist/esm/tests/integration/user-data-dir.spec.d.ts +0 -1
  630. package/dist/esm/tests/integration/user-data-dir.spec.js +0 -42
  631. package/dist/esm/tests/integration/user-data-dir.spec.js.map +0 -1
  632. package/dist/esm/tests/integration/v3.config.d.ts +0 -4
  633. package/dist/esm/tests/integration/v3.config.js +0 -7
  634. package/dist/esm/tests/integration/v3.config.js.map +0 -1
  635. package/dist/esm/tests/integration/v3.dynamic.config.d.ts +0 -4
  636. package/dist/esm/tests/integration/v3.dynamic.config.js +0 -44
  637. package/dist/esm/tests/integration/v3.dynamic.config.js.map +0 -1
  638. package/dist/esm/tests/integration/v3.playwright.config.d.ts +0 -2
  639. package/dist/esm/tests/integration/v3.playwright.config.js +0 -46
  640. package/dist/esm/tests/integration/v3.playwright.config.js.map +0 -1
  641. package/dist/esm/tests/integration/wait-for-selector.spec.d.ts +0 -1
  642. package/dist/esm/tests/integration/wait-for-selector.spec.js +0 -681
  643. package/dist/esm/tests/integration/wait-for-selector.spec.js.map +0 -1
  644. package/dist/esm/tests/integration/wait-for-timeout.spec.d.ts +0 -1
  645. package/dist/esm/tests/integration/wait-for-timeout.spec.js +0 -116
  646. package/dist/esm/tests/integration/wait-for-timeout.spec.js.map +0 -1
  647. package/dist/esm/tests/integration/xpath-for-location-deep.spec.d.ts +0 -1
  648. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js +0 -85
  649. package/dist/esm/tests/integration/xpath-for-location-deep.spec.js.map +0 -1
  650. package/dist/esm/tests/unit/agent-captcha-hooks.test.d.ts +0 -1
  651. package/dist/esm/tests/unit/agent-captcha-hooks.test.js +0 -339
  652. package/dist/esm/tests/unit/agent-captcha-hooks.test.js.map +0 -1
  653. package/dist/esm/tests/unit/agent-execution-model.test.d.ts +0 -1
  654. package/dist/esm/tests/unit/agent-execution-model.test.js +0 -148
  655. package/dist/esm/tests/unit/agent-execution-model.test.js.map +0 -1
  656. package/dist/esm/tests/unit/agent-metrics.test.d.ts +0 -1
  657. package/dist/esm/tests/unit/agent-metrics.test.js +0 -110
  658. package/dist/esm/tests/unit/agent-metrics.test.js.map +0 -1
  659. package/dist/esm/tests/unit/agent-mode-routing.test.d.ts +0 -1
  660. package/dist/esm/tests/unit/agent-mode-routing.test.js +0 -86
  661. package/dist/esm/tests/unit/agent-mode-routing.test.js.map +0 -1
  662. package/dist/esm/tests/unit/agent-system-prompt-variables.test.d.ts +0 -1
  663. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js +0 -21
  664. package/dist/esm/tests/unit/agent-system-prompt-variables.test.js.map +0 -1
  665. package/dist/esm/tests/unit/agent-temperature.test.d.ts +0 -1
  666. package/dist/esm/tests/unit/agent-temperature.test.js +0 -189
  667. package/dist/esm/tests/unit/agent-temperature.test.js.map +0 -1
  668. package/dist/esm/tests/unit/agent-variables-validation.test.d.ts +0 -1
  669. package/dist/esm/tests/unit/agent-variables-validation.test.js +0 -41
  670. package/dist/esm/tests/unit/agent-variables-validation.test.js.map +0 -1
  671. package/dist/esm/tests/unit/aisdk-clients.test.d.ts +0 -1
  672. package/dist/esm/tests/unit/aisdk-clients.test.js +0 -84
  673. package/dist/esm/tests/unit/aisdk-clients.test.js.map +0 -1
  674. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.d.ts +0 -1
  675. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js +0 -245
  676. package/dist/esm/tests/unit/anthropic-cua-adaptive-thinking.test.js.map +0 -1
  677. package/dist/esm/tests/unit/api-client-observe-variables.test.d.ts +0 -1
  678. package/dist/esm/tests/unit/api-client-observe-variables.test.js +0 -131
  679. package/dist/esm/tests/unit/api-client-observe-variables.test.js.map +0 -1
  680. package/dist/esm/tests/unit/api-multiregion.test.d.ts +0 -1
  681. package/dist/esm/tests/unit/api-multiregion.test.js +0 -56
  682. package/dist/esm/tests/unit/api-multiregion.test.js.map +0 -1
  683. package/dist/esm/tests/unit/api-optional-model-api-key.test.d.ts +0 -1
  684. package/dist/esm/tests/unit/api-optional-model-api-key.test.js +0 -153
  685. package/dist/esm/tests/unit/api-optional-model-api-key.test.js.map +0 -1
  686. package/dist/esm/tests/unit/api-variables-schema.test.d.ts +0 -1
  687. package/dist/esm/tests/unit/api-variables-schema.test.js +0 -60
  688. package/dist/esm/tests/unit/api-variables-schema.test.js.map +0 -1
  689. package/dist/esm/tests/unit/browserbase-session-accessors.test.d.ts +0 -1
  690. package/dist/esm/tests/unit/browserbase-session-accessors.test.js +0 -140
  691. package/dist/esm/tests/unit/browserbase-session-accessors.test.js.map +0 -1
  692. package/dist/esm/tests/unit/cache-llm-resolution.test.d.ts +0 -1
  693. package/dist/esm/tests/unit/cache-llm-resolution.test.js +0 -184
  694. package/dist/esm/tests/unit/cache-llm-resolution.test.js.map +0 -1
  695. package/dist/esm/tests/unit/captcha-solver.test.d.ts +0 -1
  696. package/dist/esm/tests/unit/captcha-solver.test.js +0 -152
  697. package/dist/esm/tests/unit/captcha-solver.test.js.map +0 -1
  698. package/dist/esm/tests/unit/cdp-connection-close.test.d.ts +0 -1
  699. package/dist/esm/tests/unit/cdp-connection-close.test.js +0 -72
  700. package/dist/esm/tests/unit/cdp-connection-close.test.js.map +0 -1
  701. package/dist/esm/tests/unit/context-extra-http-headers.test.d.ts +0 -1
  702. package/dist/esm/tests/unit/context-extra-http-headers.test.js +0 -56
  703. package/dist/esm/tests/unit/context-extra-http-headers.test.js.map +0 -1
  704. package/dist/esm/tests/unit/cookies.test.d.ts +0 -1
  705. package/dist/esm/tests/unit/cookies.test.js +0 -909
  706. package/dist/esm/tests/unit/cookies.test.js.map +0 -1
  707. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.d.ts +0 -1
  708. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js +0 -93
  709. package/dist/esm/tests/unit/flowlogger-capturing-cdp.test.js.map +0 -1
  710. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.d.ts +0 -1
  711. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js +0 -41
  712. package/dist/esm/tests/unit/flowlogger-capturing-llm.test.js.map +0 -1
  713. package/dist/esm/tests/unit/flowlogger-eventstore.test.d.ts +0 -1
  714. package/dist/esm/tests/unit/flowlogger-eventstore.test.js +0 -248
  715. package/dist/esm/tests/unit/flowlogger-eventstore.test.js.map +0 -1
  716. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.d.ts +0 -1
  717. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js +0 -58
  718. package/dist/esm/tests/unit/frame-registry-oopif-adoption.test.js.map +0 -1
  719. package/dist/esm/tests/unit/helpers/mockCDPSession.d.ts +0 -19
  720. package/dist/esm/tests/unit/helpers/mockCDPSession.js +0 -25
  721. package/dist/esm/tests/unit/helpers/mockCDPSession.js.map +0 -1
  722. package/dist/esm/tests/unit/inference-temperature.test.d.ts +0 -1
  723. package/dist/esm/tests/unit/inference-temperature.test.js +0 -63
  724. package/dist/esm/tests/unit/inference-temperature.test.js.map +0 -1
  725. package/dist/esm/tests/unit/llm-middleware.test.d.ts +0 -1
  726. package/dist/esm/tests/unit/llm-middleware.test.js +0 -460
  727. package/dist/esm/tests/unit/llm-middleware.test.js.map +0 -1
  728. package/dist/esm/tests/unit/llm-provider.test.d.ts +0 -1
  729. package/dist/esm/tests/unit/llm-provider.test.js +0 -62
  730. package/dist/esm/tests/unit/llm-provider.test.js.map +0 -1
  731. package/dist/esm/tests/unit/microsoft-cua-client.test.d.ts +0 -1
  732. package/dist/esm/tests/unit/microsoft-cua-client.test.js +0 -84
  733. package/dist/esm/tests/unit/microsoft-cua-client.test.js.map +0 -1
  734. package/dist/esm/tests/unit/model-deprecation.test.d.ts +0 -1
  735. package/dist/esm/tests/unit/model-deprecation.test.js +0 -140
  736. package/dist/esm/tests/unit/model-deprecation.test.js.map +0 -1
  737. package/dist/esm/tests/unit/model-utils.test.d.ts +0 -1
  738. package/dist/esm/tests/unit/model-utils.test.js +0 -40
  739. package/dist/esm/tests/unit/model-utils.test.js.map +0 -1
  740. package/dist/esm/tests/unit/openai-compatible-temperature.test.d.ts +0 -1
  741. package/dist/esm/tests/unit/openai-compatible-temperature.test.js +0 -82
  742. package/dist/esm/tests/unit/openai-compatible-temperature.test.js.map +0 -1
  743. package/dist/esm/tests/unit/openai-cua-client.test.d.ts +0 -1
  744. package/dist/esm/tests/unit/openai-cua-client.test.js +0 -69
  745. package/dist/esm/tests/unit/openai-cua-client.test.js.map +0 -1
  746. package/dist/esm/tests/unit/page-extra-http-headers.test.d.ts +0 -1
  747. package/dist/esm/tests/unit/page-extra-http-headers.test.js +0 -90
  748. package/dist/esm/tests/unit/page-extra-http-headers.test.js.map +0 -1
  749. package/dist/esm/tests/unit/page-snapshot.test.d.ts +0 -1
  750. package/dist/esm/tests/unit/page-snapshot.test.js +0 -40
  751. package/dist/esm/tests/unit/page-snapshot.test.js.map +0 -1
  752. package/dist/esm/tests/unit/prompt-observe-variables.test.d.ts +0 -1
  753. package/dist/esm/tests/unit/prompt-observe-variables.test.js +0 -23
  754. package/dist/esm/tests/unit/prompt-observe-variables.test.js.map +0 -1
  755. package/dist/esm/tests/unit/public-api/export-surface.test.d.ts +0 -1
  756. package/dist/esm/tests/unit/public-api/export-surface.test.js +0 -72
  757. package/dist/esm/tests/unit/public-api/export-surface.test.js.map +0 -1
  758. package/dist/esm/tests/unit/public-api/llm-and-agents.test.d.ts +0 -1
  759. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js +0 -144
  760. package/dist/esm/tests/unit/public-api/llm-and-agents.test.js.map +0 -1
  761. package/dist/esm/tests/unit/public-api/public-error-types.test.d.ts +0 -62
  762. package/dist/esm/tests/unit/public-api/public-error-types.test.js +0 -74
  763. package/dist/esm/tests/unit/public-api/public-error-types.test.js.map +0 -1
  764. package/dist/esm/tests/unit/public-api/public-types.test.d.ts +0 -1
  765. package/dist/esm/tests/unit/public-api/public-types.test.js +0 -97
  766. package/dist/esm/tests/unit/public-api/public-types.test.js.map +0 -1
  767. package/dist/esm/tests/unit/public-api/runtime-utils.test.d.ts +0 -1
  768. package/dist/esm/tests/unit/public-api/runtime-utils.test.js +0 -25
  769. package/dist/esm/tests/unit/public-api/runtime-utils.test.js.map +0 -1
  770. package/dist/esm/tests/unit/public-api/schema-utils.test.d.ts +0 -1
  771. package/dist/esm/tests/unit/public-api/schema-utils.test.js +0 -60
  772. package/dist/esm/tests/unit/public-api/schema-utils.test.js.map +0 -1
  773. package/dist/esm/tests/unit/public-api/timeout-error-types.test.d.ts +0 -1
  774. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js +0 -86
  775. package/dist/esm/tests/unit/public-api/timeout-error-types.test.js.map +0 -1
  776. package/dist/esm/tests/unit/public-api/tool-type-export.test.d.ts +0 -1
  777. package/dist/esm/tests/unit/public-api/tool-type-export.test.js +0 -30
  778. package/dist/esm/tests/unit/public-api/tool-type-export.test.js.map +0 -1
  779. package/dist/esm/tests/unit/public-api/v3-core.test.d.ts +0 -1
  780. package/dist/esm/tests/unit/public-api/v3-core.test.js +0 -73
  781. package/dist/esm/tests/unit/public-api/v3-core.test.js.map +0 -1
  782. package/dist/esm/tests/unit/safety-confirmation.test.d.ts +0 -1
  783. package/dist/esm/tests/unit/safety-confirmation.test.js +0 -108
  784. package/dist/esm/tests/unit/safety-confirmation.test.js.map +0 -1
  785. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.d.ts +0 -1
  786. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js +0 -396
  787. package/dist/esm/tests/unit/snapshot-a11y-resolvers.test.js.map +0 -1
  788. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.d.ts +0 -1
  789. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js +0 -304
  790. package/dist/esm/tests/unit/snapshot-a11y-tree-utils.test.js.map +0 -1
  791. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.d.ts +0 -1
  792. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js +0 -469
  793. package/dist/esm/tests/unit/snapshot-capture-orchestration.test.js.map +0 -1
  794. package/dist/esm/tests/unit/snapshot-cbor.test.d.ts +0 -1
  795. package/dist/esm/tests/unit/snapshot-cbor.test.js +0 -202
  796. package/dist/esm/tests/unit/snapshot-cbor.test.js.map +0 -1
  797. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.d.ts +0 -1
  798. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js +0 -218
  799. package/dist/esm/tests/unit/snapshot-dom-session-builders.test.js.map +0 -1
  800. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.d.ts +0 -1
  801. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js +0 -105
  802. package/dist/esm/tests/unit/snapshot-dom-tree-utils.test.js.map +0 -1
  803. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.d.ts +0 -1
  804. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js +0 -87
  805. package/dist/esm/tests/unit/snapshot-focus-selectors-utils.test.js.map +0 -1
  806. package/dist/esm/tests/unit/snapshot-frame-merge.test.d.ts +0 -1
  807. package/dist/esm/tests/unit/snapshot-frame-merge.test.js +0 -333
  808. package/dist/esm/tests/unit/snapshot-frame-merge.test.js.map +0 -1
  809. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.d.ts +0 -1
  810. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js +0 -82
  811. package/dist/esm/tests/unit/snapshot-tree-format-utils.test.js.map +0 -1
  812. package/dist/esm/tests/unit/snapshot-xpath-utils.test.d.ts +0 -1
  813. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js +0 -72
  814. package/dist/esm/tests/unit/snapshot-xpath-utils.test.js.map +0 -1
  815. package/dist/esm/tests/unit/timeout-handlers.test.d.ts +0 -1
  816. package/dist/esm/tests/unit/timeout-handlers.test.js +0 -862
  817. package/dist/esm/tests/unit/timeout-handlers.test.js.map +0 -1
  818. package/dist/esm/tests/unit/understudy-command-exception.test.d.ts +0 -1
  819. package/dist/esm/tests/unit/understudy-command-exception.test.js +0 -55
  820. package/dist/esm/tests/unit/understudy-command-exception.test.js.map +0 -1
  821. package/dist/esm/tests/unit/xpath-parser.test.d.ts +0 -1
  822. package/dist/esm/tests/unit/xpath-parser.test.js +0 -309
  823. package/dist/esm/tests/unit/xpath-parser.test.js.map +0 -1
  824. package/dist/esm/tests/unit/xpath-resolver.test.d.ts +0 -1
  825. package/dist/esm/tests/unit/xpath-resolver.test.js +0 -78
  826. package/dist/esm/tests/unit/xpath-resolver.test.js.map +0 -1
  827. package/dist/esm/tests/unit/zod-enum-compatibility.test.d.ts +0 -1
  828. package/dist/esm/tests/unit/zod-enum-compatibility.test.js +0 -114
  829. package/dist/esm/tests/unit/zod-enum-compatibility.test.js.map +0 -1
@@ -1,460 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,62 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { getAISDKLanguageModel } from "../../lib/v3/llm/LLMProvider.js";
3
- describe("getAISDKLanguageModel", () => {
4
- describe("ollama provider", () => {
5
- it("works without clientOptions", () => {
6
- const model = getAISDKLanguageModel("ollama", "llama3.2");
7
- expect(model).toBeDefined();
8
- });
9
- it("works with empty clientOptions", () => {
10
- const model = getAISDKLanguageModel("ollama", "llama3.2", {});
11
- expect(model).toBeDefined();
12
- });
13
- it("works with clientOptions containing only undefined values", () => {
14
- const model = getAISDKLanguageModel("ollama", "llama3.2", {
15
- apiKey: undefined,
16
- });
17
- expect(model).toBeDefined();
18
- });
19
- it("works with clientOptions containing only null values", () => {
20
- const model = getAISDKLanguageModel("ollama", "llama3.2", {
21
- apiKey: null,
22
- });
23
- expect(model).toBeDefined();
24
- });
25
- it("works with custom baseURL", () => {
26
- const model = getAISDKLanguageModel("ollama", "llama3.2", {
27
- baseURL: "http://custom-ollama:11434",
28
- });
29
- expect(model).toBeDefined();
30
- });
31
- it("works even when apiKey is mistakenly provided", () => {
32
- // Ollama doesn't need an API key, but users might set one anyway
33
- const model = getAISDKLanguageModel("ollama", "llama3.2", {
34
- apiKey: "unnecessary-key",
35
- });
36
- expect(model).toBeDefined();
37
- });
38
- });
39
- describe("providers with API keys", () => {
40
- it("openai requires valid clientOptions for custom configuration", () => {
41
- // Without clientOptions, uses default provider
42
- const defaultModel = getAISDKLanguageModel("openai", "gpt-4o");
43
- expect(defaultModel).toBeDefined();
44
- // With valid apiKey, uses custom provider
45
- const customModel = getAISDKLanguageModel("openai", "gpt-4o", {
46
- apiKey: "test-key",
47
- });
48
- expect(customModel).toBeDefined();
49
- });
50
- });
51
- describe("hasValidOptions logic", () => {
52
- it("treats undefined apiKey as no options", () => {
53
- // This should use the default provider path (AISDKProviders)
54
- // not the custom provider path (AISDKProvidersWithAPIKey)
55
- const model = getAISDKLanguageModel("ollama", "llama3.2", {
56
- apiKey: undefined,
57
- });
58
- expect(model).toBeDefined();
59
- });
60
- });
61
- });
62
- //# sourceMappingURL=llm-provider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"llm-provider.test.js","sourceRoot":"","sources":["../../../../tests/unit/llm-provider.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { getAISDKLanguageModel } from \"../../lib/v3/llm/LLMProvider.js\";\n\ndescribe(\"getAISDKLanguageModel\", () => {\n describe(\"ollama provider\", () => {\n it(\"works without clientOptions\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\");\n expect(model).toBeDefined();\n });\n\n it(\"works with empty clientOptions\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {});\n expect(model).toBeDefined();\n });\n\n it(\"works with clientOptions containing only undefined values\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: undefined,\n });\n expect(model).toBeDefined();\n });\n\n it(\"works with clientOptions containing only null values\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: null as unknown as string,\n });\n expect(model).toBeDefined();\n });\n\n it(\"works with custom baseURL\", () => {\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n baseURL: \"http://custom-ollama:11434\",\n });\n expect(model).toBeDefined();\n });\n\n it(\"works even when apiKey is mistakenly provided\", () => {\n // Ollama doesn't need an API key, but users might set one anyway\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: \"unnecessary-key\",\n });\n expect(model).toBeDefined();\n });\n });\n\n describe(\"providers with API keys\", () => {\n it(\"openai requires valid clientOptions for custom configuration\", () => {\n // Without clientOptions, uses default provider\n const defaultModel = getAISDKLanguageModel(\"openai\", \"gpt-4o\");\n expect(defaultModel).toBeDefined();\n\n // With valid apiKey, uses custom provider\n const customModel = getAISDKLanguageModel(\"openai\", \"gpt-4o\", {\n apiKey: \"test-key\",\n });\n expect(customModel).toBeDefined();\n });\n });\n\n describe(\"hasValidOptions logic\", () => {\n it(\"treats undefined apiKey as no options\", () => {\n // This should use the default provider path (AISDKProviders)\n // not the custom provider path (AISDKProvidersWithAPIKey)\n const model = getAISDKLanguageModel(\"ollama\", \"llama3.2\", {\n apiKey: undefined,\n });\n expect(model).toBeDefined();\n });\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};