@browserbasehq/orca 3.0.9-alpha-3 → 3.1.0-patch.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 (655) hide show
  1. package/dist/esm/index.d.ts +3 -0
  2. package/dist/esm/index.js +3 -0
  3. package/dist/esm/lib/inference.d.ts +65 -0
  4. package/dist/esm/lib/inference.js +333 -0
  5. package/dist/esm/lib/inference.js.map +1 -0
  6. package/dist/esm/lib/inferenceLogUtils.d.ts +12 -0
  7. package/dist/esm/lib/inferenceLogUtils.js +92 -0
  8. package/dist/esm/lib/inferenceLogUtils.js.map +1 -0
  9. package/dist/esm/lib/logger.d.ts +69 -0
  10. package/dist/esm/lib/logger.js +323 -0
  11. package/dist/esm/lib/logger.js.map +1 -0
  12. package/dist/esm/lib/modelUtils.d.ts +14 -0
  13. package/dist/esm/lib/modelUtils.js +48 -0
  14. package/dist/esm/lib/modelUtils.js.map +1 -0
  15. package/dist/esm/lib/prompt.d.ts +14 -0
  16. package/dist/esm/lib/prompt.js +230 -0
  17. package/dist/esm/lib/prompt.js.map +1 -0
  18. package/dist/esm/lib/utils.d.ts +68 -0
  19. package/dist/esm/lib/utils.js +654 -0
  20. package/dist/esm/lib/utils.js.map +1 -0
  21. package/dist/esm/lib/v3/agent/AgentClient.d.ts +19 -0
  22. package/dist/esm/lib/v3/agent/AgentClient.js +17 -0
  23. package/dist/esm/lib/v3/agent/AgentClient.js.map +1 -0
  24. package/dist/esm/lib/v3/agent/AgentProvider.d.ts +20 -0
  25. package/dist/esm/lib/v3/agent/AgentProvider.js +77 -0
  26. package/dist/esm/lib/v3/agent/AgentProvider.js.map +1 -0
  27. package/dist/esm/lib/v3/agent/AnthropicCUAClient.d.ts +57 -0
  28. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js +822 -0
  29. package/dist/esm/lib/v3/agent/AnthropicCUAClient.js.map +1 -0
  30. package/dist/esm/lib/v3/agent/GoogleCUAClient.d.ts +74 -0
  31. package/dist/esm/lib/v3/agent/GoogleCUAClient.js +799 -0
  32. package/dist/esm/lib/v3/agent/GoogleCUAClient.js.map +1 -0
  33. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.d.ts +71 -0
  34. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js +770 -0
  35. package/dist/esm/lib/v3/agent/MicrosoftCUAClient.js.map +1 -0
  36. package/dist/esm/lib/v3/agent/OpenAICUAClient.d.ts +69 -0
  37. package/dist/esm/lib/v3/agent/OpenAICUAClient.js +615 -0
  38. package/dist/esm/lib/v3/agent/OpenAICUAClient.js.map +1 -0
  39. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.d.ts +12 -0
  40. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js +186 -0
  41. package/dist/esm/lib/v3/agent/prompts/agentSystemPrompt.js.map +1 -0
  42. package/dist/esm/lib/v3/agent/tools/act.d.ts +13 -0
  43. package/dist/esm/lib/v3/agent/tools/act.js +49 -0
  44. package/dist/esm/lib/v3/agent/tools/act.js.map +1 -0
  45. package/dist/esm/lib/v3/agent/tools/ariaTree.d.ts +5 -0
  46. package/dist/esm/lib/v3/agent/tools/ariaTree.js +31 -0
  47. package/dist/esm/lib/v3/agent/tools/ariaTree.js.map +1 -0
  48. package/dist/esm/lib/v3/agent/tools/click.d.ts +6 -0
  49. package/dist/esm/lib/v3/agent/tools/click.js +104 -0
  50. package/dist/esm/lib/v3/agent/tools/click.js.map +1 -0
  51. package/dist/esm/lib/v3/agent/tools/clickAndHold.d.ts +14 -0
  52. package/dist/esm/lib/v3/agent/tools/clickAndHold.js +68 -0
  53. package/dist/esm/lib/v3/agent/tools/clickAndHold.js.map +1 -0
  54. package/dist/esm/lib/v3/agent/tools/dragAndDrop.d.ts +7 -0
  55. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js +105 -0
  56. package/dist/esm/lib/v3/agent/tools/dragAndDrop.js.map +1 -0
  57. package/dist/esm/lib/v3/agent/tools/extract.d.ts +21 -0
  58. package/dist/esm/lib/v3/agent/tools/extract.js +93 -0
  59. package/dist/esm/lib/v3/agent/tools/extract.js.map +1 -0
  60. package/dist/esm/lib/v3/agent/tools/fillFormVision.d.ts +12 -0
  61. package/dist/esm/lib/v3/agent/tools/fillFormVision.js +143 -0
  62. package/dist/esm/lib/v3/agent/tools/fillFormVision.js.map +1 -0
  63. package/dist/esm/lib/v3/agent/tools/fillform.d.ts +13 -0
  64. package/dist/esm/lib/v3/agent/tools/fillform.js +56 -0
  65. package/dist/esm/lib/v3/agent/tools/fillform.js.map +1 -0
  66. package/dist/esm/lib/v3/agent/tools/goto.d.ts +12 -0
  67. package/dist/esm/lib/v3/agent/tools/goto.js +31 -0
  68. package/dist/esm/lib/v3/agent/tools/goto.js.map +1 -0
  69. package/dist/esm/lib/v3/agent/tools/index.d.ts +92 -0
  70. package/dist/esm/lib/v3/agent/tools/index.js +74 -0
  71. package/dist/esm/lib/v3/agent/tools/index.js.map +1 -0
  72. package/dist/esm/lib/v3/agent/tools/keys.d.ts +24 -0
  73. package/dist/esm/lib/v3/agent/tools/keys.js +60 -0
  74. package/dist/esm/lib/v3/agent/tools/keys.js.map +1 -0
  75. package/dist/esm/lib/v3/agent/tools/navback.d.ts +6 -0
  76. package/dist/esm/lib/v3/agent/tools/navback.js +23 -0
  77. package/dist/esm/lib/v3/agent/tools/navback.js.map +1 -0
  78. package/dist/esm/lib/v3/agent/tools/screenshot.d.ts +6 -0
  79. package/dist/esm/lib/v3/agent/tools/screenshot.js +26 -0
  80. package/dist/esm/lib/v3/agent/tools/screenshot.js.map +1 -0
  81. package/dist/esm/lib/v3/agent/tools/scroll.d.ts +19 -0
  82. package/dist/esm/lib/v3/agent/tools/scroll.js +142 -0
  83. package/dist/esm/lib/v3/agent/tools/scroll.js.map +1 -0
  84. package/dist/esm/lib/v3/agent/tools/search.d.ts +15 -0
  85. package/dist/esm/lib/v3/agent/tools/search.js +73 -0
  86. package/dist/esm/lib/v3/agent/tools/search.js.map +1 -0
  87. package/dist/esm/lib/v3/agent/tools/think.d.ts +6 -0
  88. package/dist/esm/lib/v3/agent/tools/think.js +24 -0
  89. package/dist/esm/lib/v3/agent/tools/think.js.map +1 -0
  90. package/dist/esm/lib/v3/agent/tools/type.d.ts +7 -0
  91. package/dist/esm/lib/v3/agent/tools/type.js +106 -0
  92. package/dist/esm/lib/v3/agent/tools/type.js.map +1 -0
  93. package/dist/esm/lib/v3/agent/tools/wait.d.ts +5 -0
  94. package/dist/esm/lib/v3/agent/tools/wait.js +53 -0
  95. package/dist/esm/lib/v3/agent/tools/wait.js.map +1 -0
  96. package/dist/esm/lib/v3/agent/utils/actionMapping.d.ts +3 -0
  97. package/dist/esm/lib/v3/agent/utils/actionMapping.js +100 -0
  98. package/dist/esm/lib/v3/agent/utils/actionMapping.js.map +1 -0
  99. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.d.ts +13 -0
  100. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js +28 -0
  101. package/dist/esm/lib/v3/agent/utils/coordinateNormalization.js.map +1 -0
  102. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.d.ts +10 -0
  103. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js +62 -0
  104. package/dist/esm/lib/v3/agent/utils/cuaKeyMapping.js.map +1 -0
  105. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.d.ts +25 -0
  106. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js +145 -0
  107. package/dist/esm/lib/v3/agent/utils/googleCustomToolHandler.js.map +1 -0
  108. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.d.ts +22 -0
  109. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js +101 -0
  110. package/dist/esm/lib/v3/agent/utils/handleDoneToolCall.js.map +1 -0
  111. package/dist/esm/lib/v3/agent/utils/imageCompression.d.ts +53 -0
  112. package/dist/esm/lib/v3/agent/utils/imageCompression.js +204 -0
  113. package/dist/esm/lib/v3/agent/utils/imageCompression.js.map +1 -0
  114. package/dist/esm/lib/v3/agent/utils/messageProcessing.d.ts +12 -0
  115. package/dist/esm/lib/v3/agent/utils/messageProcessing.js +164 -0
  116. package/dist/esm/lib/v3/agent/utils/messageProcessing.js.map +1 -0
  117. package/dist/esm/lib/v3/agent/utils/screenshotHandler.d.ts +10 -0
  118. package/dist/esm/lib/v3/agent/utils/screenshotHandler.js +26 -0
  119. package/dist/esm/lib/v3/agent/utils/screenshotHandler.js.map +1 -0
  120. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.d.ts +26 -0
  121. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js +79 -0
  122. package/dist/esm/lib/v3/agent/utils/validateExperimentalFeatures.js.map +1 -0
  123. package/dist/esm/lib/v3/agent/utils/xpath.d.ts +11 -0
  124. package/dist/esm/lib/v3/agent/utils/xpath.js +19 -0
  125. package/dist/esm/lib/v3/agent/utils/xpath.js.map +1 -0
  126. package/dist/esm/lib/v3/api.d.ts +86 -0
  127. package/dist/esm/lib/v3/api.js +484 -0
  128. package/dist/esm/lib/v3/api.js.map +1 -0
  129. package/dist/esm/lib/v3/cache/ActCache.d.ts +23 -0
  130. package/dist/esm/lib/v3/cache/ActCache.js +292 -0
  131. package/dist/esm/lib/v3/cache/ActCache.js.map +1 -0
  132. package/dist/esm/lib/v3/cache/AgentCache.d.ts +109 -0
  133. package/dist/esm/lib/v3/cache/AgentCache.js +640 -0
  134. package/dist/esm/lib/v3/cache/AgentCache.js.map +1 -0
  135. package/dist/esm/lib/v3/cache/CacheStorage.d.ts +17 -0
  136. package/dist/esm/lib/v3/cache/CacheStorage.js +98 -0
  137. package/dist/esm/lib/v3/cache/CacheStorage.js.map +1 -0
  138. package/dist/esm/lib/v3/cache/serverAgentCache.d.ts +7 -0
  139. package/dist/esm/lib/v3/cache/serverAgentCache.js +49 -0
  140. package/dist/esm/lib/v3/cache/serverAgentCache.js.map +1 -0
  141. package/dist/esm/lib/v3/cache/utils.d.ts +15 -0
  142. package/dist/esm/lib/v3/cache/utils.js +39 -0
  143. package/dist/esm/lib/v3/cache/utils.js.map +1 -0
  144. package/dist/esm/lib/v3/dom/a11yScripts/index.d.ts +11 -0
  145. package/dist/esm/lib/v3/dom/a11yScripts/index.js +117 -0
  146. package/dist/esm/lib/v3/dom/a11yScripts/index.js.map +1 -0
  147. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.d.ts +16 -0
  148. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js +20 -0
  149. package/dist/esm/lib/v3/dom/build/a11yScripts.generated.js.map +1 -0
  150. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.d.ts +52 -0
  151. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js +56 -0
  152. package/dist/esm/lib/v3/dom/build/locatorScripts.generated.js.map +1 -0
  153. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.d.ts +1 -0
  154. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js +2 -0
  155. package/dist/esm/lib/v3/dom/build/reRenderScriptContent.js.map +1 -0
  156. package/dist/esm/lib/v3/dom/build/rerender-index.js +1 -0
  157. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.d.ts +4 -0
  158. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js +8 -0
  159. package/dist/esm/lib/v3/dom/build/screenshotScripts.generated.js.map +1 -0
  160. package/dist/esm/lib/v3/dom/build/scriptV3Content.d.ts +1 -0
  161. package/dist/esm/lib/v3/dom/build/scriptV3Content.js +2 -0
  162. package/dist/esm/lib/v3/dom/build/scriptV3Content.js.map +1 -0
  163. package/dist/esm/lib/v3/dom/build/v3-index.js +1 -0
  164. package/dist/esm/lib/v3/dom/genA11yScripts.d.ts +1 -0
  165. package/dist/esm/lib/v3/dom/genA11yScripts.js +54 -0
  166. package/dist/esm/lib/v3/dom/genA11yScripts.js.map +1 -0
  167. package/dist/esm/lib/v3/dom/genDomScripts.d.ts +1 -0
  168. package/dist/esm/lib/v3/dom/genDomScripts.js +38 -0
  169. package/dist/esm/lib/v3/dom/genDomScripts.js.map +1 -0
  170. package/dist/esm/lib/v3/dom/genLocatorScripts.d.ts +1 -0
  171. package/dist/esm/lib/v3/dom/genLocatorScripts.js +51 -0
  172. package/dist/esm/lib/v3/dom/genLocatorScripts.js.map +1 -0
  173. package/dist/esm/lib/v3/dom/genScreenshotScripts.d.ts +1 -0
  174. package/dist/esm/lib/v3/dom/genScreenshotScripts.js +37 -0
  175. package/dist/esm/lib/v3/dom/genScreenshotScripts.js.map +1 -0
  176. package/dist/esm/lib/v3/dom/index.d.ts +1 -0
  177. package/dist/esm/lib/v3/dom/index.js +2 -0
  178. package/dist/esm/lib/v3/dom/index.js.map +1 -0
  179. package/dist/esm/lib/v3/dom/locatorScripts/counts.d.ts +15 -0
  180. package/dist/esm/lib/v3/dom/locatorScripts/counts.js +272 -0
  181. package/dist/esm/lib/v3/dom/locatorScripts/counts.js.map +1 -0
  182. package/dist/esm/lib/v3/dom/locatorScripts/index.d.ts +4 -0
  183. package/dist/esm/lib/v3/dom/locatorScripts/index.js +5 -0
  184. package/dist/esm/lib/v3/dom/locatorScripts/index.js.map +1 -0
  185. package/dist/esm/lib/v3/dom/locatorScripts/scripts.d.ts +37 -0
  186. package/dist/esm/lib/v3/dom/locatorScripts/scripts.js +458 -0
  187. package/dist/esm/lib/v3/dom/locatorScripts/scripts.js.map +1 -0
  188. package/dist/esm/lib/v3/dom/locatorScripts/selectors.d.ts +4 -0
  189. package/dist/esm/lib/v3/dom/locatorScripts/selectors.js +283 -0
  190. package/dist/esm/lib/v3/dom/locatorScripts/selectors.js.map +1 -0
  191. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.d.ts +19 -0
  192. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js +283 -0
  193. package/dist/esm/lib/v3/dom/locatorScripts/waitForSelector.js.map +1 -0
  194. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.d.ts +76 -0
  195. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js +376 -0
  196. package/dist/esm/lib/v3/dom/locatorScripts/xpathParser.js.map +1 -0
  197. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.d.ts +9 -0
  198. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js +196 -0
  199. package/dist/esm/lib/v3/dom/locatorScripts/xpathResolver.js.map +1 -0
  200. package/dist/esm/lib/v3/dom/piercer.entry.d.ts +1 -0
  201. package/dist/esm/lib/v3/dom/piercer.entry.js +3 -0
  202. package/dist/esm/lib/v3/dom/piercer.entry.js.map +1 -0
  203. package/dist/esm/lib/v3/dom/piercer.runtime.d.ts +23 -0
  204. package/dist/esm/lib/v3/dom/piercer.runtime.js +90 -0
  205. package/dist/esm/lib/v3/dom/piercer.runtime.js.map +1 -0
  206. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.d.ts +1 -0
  207. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js +3 -0
  208. package/dist/esm/lib/v3/dom/rerenderMissingShadows.entry.js.map +1 -0
  209. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.d.ts +1 -0
  210. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js +40 -0
  211. package/dist/esm/lib/v3/dom/rerenderMissingShadows.runtime.js.map +1 -0
  212. package/dist/esm/lib/v3/dom/screenshotScripts/index.d.ts +1 -0
  213. package/dist/esm/lib/v3/dom/screenshotScripts/index.js +2 -0
  214. package/dist/esm/lib/v3/dom/screenshotScripts/index.js.map +1 -0
  215. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.d.ts +8 -0
  216. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js +82 -0
  217. package/dist/esm/lib/v3/dom/screenshotScripts/resolveMaskRect.js.map +1 -0
  218. package/dist/esm/lib/v3/external_clients/aisdk.d.ts +11 -0
  219. package/dist/esm/lib/v3/external_clients/aisdk.js +103 -0
  220. package/dist/esm/lib/v3/external_clients/aisdk.js.map +1 -0
  221. package/dist/esm/lib/v3/external_clients/customOpenAI.d.ts +18 -0
  222. package/dist/esm/lib/v3/external_clients/customOpenAI.js +220 -0
  223. package/dist/esm/lib/v3/external_clients/customOpenAI.js.map +1 -0
  224. package/dist/esm/lib/v3/flowLogger.d.ts +139 -0
  225. package/dist/esm/lib/v3/flowLogger.js +868 -0
  226. package/dist/esm/lib/v3/flowLogger.js.map +1 -0
  227. package/dist/esm/lib/v3/handlers/actHandler.d.ts +21 -0
  228. package/dist/esm/lib/v3/handlers/actHandler.js +340 -0
  229. package/dist/esm/lib/v3/handlers/actHandler.js.map +1 -0
  230. package/dist/esm/lib/v3/handlers/extractHandler.d.ts +31 -0
  231. package/dist/esm/lib/v3/handlers/extractHandler.js +139 -0
  232. package/dist/esm/lib/v3/handlers/extractHandler.js.map +1 -0
  233. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.d.ts +24 -0
  234. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js +623 -0
  235. package/dist/esm/lib/v3/handlers/handlerUtils/actHandlerUtils.js.map +1 -0
  236. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.d.ts +2 -0
  237. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js +14 -0
  238. package/dist/esm/lib/v3/handlers/handlerUtils/timeoutGuard.js.map +1 -0
  239. package/dist/esm/lib/v3/handlers/observeHandler.d.ts +17 -0
  240. package/dist/esm/lib/v3/handlers/observeHandler.js +156 -0
  241. package/dist/esm/lib/v3/handlers/observeHandler.js.map +1 -0
  242. package/dist/esm/lib/v3/handlers/v3AgentHandler.d.ts +32 -0
  243. package/dist/esm/lib/v3/handlers/v3AgentHandler.js +461 -0
  244. package/dist/esm/lib/v3/handlers/v3AgentHandler.js.map +1 -0
  245. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.d.ts +33 -0
  246. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js +528 -0
  247. package/dist/esm/lib/v3/handlers/v3CuaAgentHandler.js.map +1 -0
  248. package/dist/esm/lib/v3/index.d.ts +17 -0
  249. package/dist/esm/lib/v3/index.js +13 -0
  250. package/dist/esm/lib/v3/index.js.map +1 -0
  251. package/dist/esm/lib/v3/launch/browserbase.d.ts +7 -0
  252. package/dist/esm/lib/v3/launch/browserbase.js +46 -0
  253. package/dist/esm/lib/v3/launch/browserbase.js.map +1 -0
  254. package/dist/esm/lib/v3/launch/local.d.ts +15 -0
  255. package/dist/esm/lib/v3/launch/local.js +98 -0
  256. package/dist/esm/lib/v3/launch/local.js.map +1 -0
  257. package/dist/esm/lib/v3/llm/AnthropicClient.d.ts +16 -0
  258. package/dist/esm/lib/v3/llm/AnthropicClient.js +239 -0
  259. package/dist/esm/lib/v3/llm/AnthropicClient.js.map +1 -0
  260. package/dist/esm/lib/v3/llm/CerebrasClient.d.ts +17 -0
  261. package/dist/esm/lib/v3/llm/CerebrasClient.js +235 -0
  262. package/dist/esm/lib/v3/llm/CerebrasClient.js.map +1 -0
  263. package/dist/esm/lib/v3/llm/GoogleClient.d.ts +19 -0
  264. package/dist/esm/lib/v3/llm/GoogleClient.js +369 -0
  265. package/dist/esm/lib/v3/llm/GoogleClient.js.map +1 -0
  266. package/dist/esm/lib/v3/llm/GroqClient.d.ts +17 -0
  267. package/dist/esm/lib/v3/llm/GroqClient.js +236 -0
  268. package/dist/esm/lib/v3/llm/GroqClient.js.map +1 -0
  269. package/dist/esm/lib/v3/llm/LLMClient.d.ts +121 -0
  270. package/dist/esm/lib/v3/llm/LLMClient.js +23 -0
  271. package/dist/esm/lib/v3/llm/LLMClient.js.map +1 -0
  272. package/dist/esm/lib/v3/llm/LLMProvider.d.ts +13 -0
  273. package/dist/esm/lib/v3/llm/LLMProvider.js +194 -0
  274. package/dist/esm/lib/v3/llm/LLMProvider.js.map +1 -0
  275. package/dist/esm/lib/v3/llm/OpenAIClient.d.ts +15 -0
  276. package/dist/esm/lib/v3/llm/OpenAIClient.js +329 -0
  277. package/dist/esm/lib/v3/llm/OpenAIClient.js.map +1 -0
  278. package/dist/esm/lib/v3/llm/aisdk.d.ts +15 -0
  279. package/dist/esm/lib/v3/llm/aisdk.js +348 -0
  280. package/dist/esm/lib/v3/llm/aisdk.js.map +1 -0
  281. package/dist/esm/lib/v3/logger.d.ts +9 -0
  282. package/dist/esm/lib/v3/logger.js +96 -0
  283. package/dist/esm/lib/v3/logger.js.map +1 -0
  284. package/dist/esm/lib/v3/mcp/connection.d.ts +11 -0
  285. package/dist/esm/lib/v3/mcp/connection.js +49 -0
  286. package/dist/esm/lib/v3/mcp/connection.js.map +1 -0
  287. package/dist/esm/lib/v3/mcp/utils.d.ts +3 -0
  288. package/dist/esm/lib/v3/mcp/utils.js +36 -0
  289. package/dist/esm/lib/v3/mcp/utils.js.map +1 -0
  290. package/dist/esm/lib/v3/shutdown/cleanupLocal.d.ts +14 -0
  291. package/dist/esm/lib/v3/shutdown/cleanupLocal.js +30 -0
  292. package/dist/esm/lib/v3/shutdown/cleanupLocal.js.map +1 -0
  293. package/dist/esm/lib/v3/shutdown/supervisor.d.ts +9 -0
  294. package/dist/esm/lib/v3/shutdown/supervisor.js +156 -0
  295. package/dist/esm/lib/v3/shutdown/supervisor.js.map +1 -0
  296. package/dist/esm/lib/v3/shutdown/supervisorClient.d.ts +15 -0
  297. package/dist/esm/lib/v3/shutdown/supervisorClient.js +97 -0
  298. package/dist/esm/lib/v3/shutdown/supervisorClient.js.map +1 -0
  299. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js +113 -0
  300. package/dist/esm/lib/v3/tests/agent-abort-signal.spec.js.map +7 -0
  301. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js +80 -0
  302. package/dist/esm/lib/v3/tests/agent-cache-self-heal.spec.js.map +7 -0
  303. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js +374 -0
  304. package/dist/esm/lib/v3/tests/agent-callbacks.spec.js.map +7 -0
  305. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js +357 -0
  306. package/dist/esm/lib/v3/tests/agent-experimental-validation.spec.js.map +7 -0
  307. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js +247 -0
  308. package/dist/esm/lib/v3/tests/agent-hybrid-mode.spec.js.map +7 -0
  309. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js +105 -0
  310. package/dist/esm/lib/v3/tests/agent-message-continuation.spec.js.map +7 -0
  311. package/dist/esm/lib/v3/tests/agent-streaming.spec.js +126 -0
  312. package/dist/esm/lib/v3/tests/agent-streaming.spec.js.map +7 -0
  313. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js +44 -0
  314. package/dist/esm/lib/v3/tests/cdp-session-detached.spec.js.map +7 -0
  315. package/dist/esm/lib/v3/tests/click-count.spec.js +112 -0
  316. package/dist/esm/lib/v3/tests/click-count.spec.js.map +7 -0
  317. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js +54 -0
  318. package/dist/esm/lib/v3/tests/connect-to-existing-browser.spec.js.map +7 -0
  319. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js +176 -0
  320. package/dist/esm/lib/v3/tests/context-addInitScript.spec.js.map +7 -0
  321. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js +53 -0
  322. package/dist/esm/lib/v3/tests/default-page-tracking.spec.js.map +7 -0
  323. package/dist/esm/lib/v3/tests/downloads.spec.js +58 -0
  324. package/dist/esm/lib/v3/tests/downloads.spec.js.map +7 -0
  325. package/dist/esm/lib/v3/tests/envReporter.js +57 -0
  326. package/dist/esm/lib/v3/tests/envReporter.js.map +7 -0
  327. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js +53 -0
  328. package/dist/esm/lib/v3/tests/frame-get-location-and-click.spec.js.map +7 -0
  329. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js +447 -0
  330. package/dist/esm/lib/v3/tests/iframe-ctx-addInitScript.spec.js.map +7 -0
  331. package/dist/esm/lib/v3/tests/keep-alive.child.js +92 -0
  332. package/dist/esm/lib/v3/tests/keep-alive.child.js.map +7 -0
  333. package/dist/esm/lib/v3/tests/keep-alive.helpers.js +532 -0
  334. package/dist/esm/lib/v3/tests/keep-alive.helpers.js.map +7 -0
  335. package/dist/esm/lib/v3/tests/keep-alive.spec.js +19 -0
  336. package/dist/esm/lib/v3/tests/keep-alive.spec.js.map +7 -0
  337. package/dist/esm/lib/v3/tests/keyboard.spec.js +296 -0
  338. package/dist/esm/lib/v3/tests/keyboard.spec.js.map +7 -0
  339. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js +159 -0
  340. package/dist/esm/lib/v3/tests/locator-backend-node-id.spec.js.map +7 -0
  341. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js +191 -0
  342. package/dist/esm/lib/v3/tests/locator-content-methods.spec.js.map +7 -0
  343. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js +108 -0
  344. package/dist/esm/lib/v3/tests/locator-count-iframe.spec.js.map +7 -0
  345. package/dist/esm/lib/v3/tests/locator-count.spec.js +71 -0
  346. package/dist/esm/lib/v3/tests/locator-count.spec.js.map +7 -0
  347. package/dist/esm/lib/v3/tests/locator-fill.spec.js +118 -0
  348. package/dist/esm/lib/v3/tests/locator-fill.spec.js.map +7 -0
  349. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js +136 -0
  350. package/dist/esm/lib/v3/tests/locator-input-methods.spec.js.map +7 -0
  351. package/dist/esm/lib/v3/tests/locator-nth.spec.js +157 -0
  352. package/dist/esm/lib/v3/tests/locator-nth.spec.js.map +7 -0
  353. package/dist/esm/lib/v3/tests/locator-select-option.spec.js +242 -0
  354. package/dist/esm/lib/v3/tests/locator-select-option.spec.js.map +7 -0
  355. package/dist/esm/lib/v3/tests/logger-initialization.spec.js +552 -0
  356. package/dist/esm/lib/v3/tests/logger-initialization.spec.js.map +7 -0
  357. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js +269 -0
  358. package/dist/esm/lib/v3/tests/multi-instance-logger.spec.js.map +7 -0
  359. package/dist/esm/lib/v3/tests/nested-div.spec.js +23 -0
  360. package/dist/esm/lib/v3/tests/nested-div.spec.js.map +7 -0
  361. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js +90 -0
  362. package/dist/esm/lib/v3/tests/page-addInitScript.spec.js.map +7 -0
  363. package/dist/esm/lib/v3/tests/page-console.spec.js +56 -0
  364. package/dist/esm/lib/v3/tests/page-console.spec.js.map +7 -0
  365. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js +418 -0
  366. package/dist/esm/lib/v3/tests/page-drag-and-drop.spec.js.map +7 -0
  367. package/dist/esm/lib/v3/tests/page-goto-response.spec.js +35 -0
  368. package/dist/esm/lib/v3/tests/page-goto-response.spec.js.map +7 -0
  369. package/dist/esm/lib/v3/tests/page-hover.spec.js +167 -0
  370. package/dist/esm/lib/v3/tests/page-hover.spec.js.map +7 -0
  371. package/dist/esm/lib/v3/tests/page-screenshot.spec.js +273 -0
  372. package/dist/esm/lib/v3/tests/page-screenshot.spec.js.map +7 -0
  373. package/dist/esm/lib/v3/tests/page-scroll.spec.js +182 -0
  374. package/dist/esm/lib/v3/tests/page-scroll.spec.js.map +7 -0
  375. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js +46 -0
  376. package/dist/esm/lib/v3/tests/page-send-cdp.spec.js.map +7 -0
  377. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js +98 -0
  378. package/dist/esm/lib/v3/tests/perform-understudy-method.spec.js.map +7 -0
  379. package/dist/esm/lib/v3/tests/setinputfiles.spec.js +126 -0
  380. package/dist/esm/lib/v3/tests/setinputfiles.spec.js.map +7 -0
  381. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js +134 -0
  382. package/dist/esm/lib/v3/tests/shadow-iframe-oopif.spec.js.map +7 -0
  383. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js +134 -0
  384. package/dist/esm/lib/v3/tests/shadow-iframe-spif.spec.js.map +7 -0
  385. package/dist/esm/lib/v3/tests/testUtils.js +31 -0
  386. package/dist/esm/lib/v3/tests/testUtils.js.map +7 -0
  387. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js +100 -0
  388. package/dist/esm/lib/v3/tests/text-selector-innermost.spec.js.map +7 -0
  389. package/dist/esm/lib/v3/tests/timeouts.spec.js +32 -0
  390. package/dist/esm/lib/v3/tests/timeouts.spec.js.map +7 -0
  391. package/dist/esm/lib/v3/tests/user-data-dir.spec.js +43 -0
  392. package/dist/esm/lib/v3/tests/user-data-dir.spec.js.map +7 -0
  393. package/dist/esm/lib/v3/tests/v3.config.js +15 -0
  394. package/dist/esm/lib/v3/tests/v3.config.js.map +7 -0
  395. package/dist/esm/lib/v3/tests/v3.dynamic.config.js +43 -0
  396. package/dist/esm/lib/v3/tests/v3.dynamic.config.js.map +7 -0
  397. package/dist/esm/lib/v3/tests/v3.playwright.config.js +98 -0
  398. package/dist/esm/lib/v3/tests/v3.playwright.config.js.map +7 -0
  399. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js +593 -0
  400. package/dist/esm/lib/v3/tests/wait-for-selector.spec.js.map +7 -0
  401. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js +97 -0
  402. package/dist/esm/lib/v3/tests/wait-for-timeout.spec.js.map +7 -0
  403. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js +77 -0
  404. package/dist/esm/lib/v3/tests/xpath-for-location-deep.spec.js.map +7 -0
  405. package/dist/esm/lib/v3/timeoutConfig.d.ts +2 -0
  406. package/dist/esm/lib/v3/timeoutConfig.js +27 -0
  407. package/dist/esm/lib/v3/timeoutConfig.js.map +1 -0
  408. package/dist/esm/lib/v3/types/private/agent.d.ts +6 -0
  409. package/dist/esm/lib/v3/types/private/agent.js +2 -0
  410. package/dist/esm/lib/v3/types/private/agent.js.map +1 -0
  411. package/dist/esm/lib/v3/types/private/api.d.ts +11 -0
  412. package/dist/esm/lib/v3/types/private/api.js +2 -0
  413. package/dist/esm/lib/v3/types/private/api.js.map +1 -0
  414. package/dist/esm/lib/v3/types/private/cache.d.ts +128 -0
  415. package/dist/esm/lib/v3/types/private/cache.js +2 -0
  416. package/dist/esm/lib/v3/types/private/cache.js.map +1 -0
  417. package/dist/esm/lib/v3/types/private/evaluator.d.ts +40 -0
  418. package/dist/esm/lib/v3/types/private/evaluator.js +2 -0
  419. package/dist/esm/lib/v3/types/private/evaluator.js.map +1 -0
  420. package/dist/esm/lib/v3/types/private/handlers.d.ts +38 -0
  421. package/dist/esm/lib/v3/types/private/handlers.js +16 -0
  422. package/dist/esm/lib/v3/types/private/handlers.js.map +1 -0
  423. package/dist/esm/lib/v3/types/private/index.d.ts +7 -0
  424. package/dist/esm/lib/v3/types/private/index.js +8 -0
  425. package/dist/esm/lib/v3/types/private/index.js.map +1 -0
  426. package/dist/esm/lib/v3/types/private/internal.d.ts +39 -0
  427. package/dist/esm/lib/v3/types/private/internal.js +2 -0
  428. package/dist/esm/lib/v3/types/private/internal.js.map +1 -0
  429. package/dist/esm/lib/v3/types/private/locator.d.ts +9 -0
  430. package/dist/esm/lib/v3/types/private/locator.js +2 -0
  431. package/dist/esm/lib/v3/types/private/locator.js.map +1 -0
  432. package/dist/esm/lib/v3/types/private/network.d.ts +34 -0
  433. package/dist/esm/lib/v3/types/private/network.js +3 -0
  434. package/dist/esm/lib/v3/types/private/network.js.map +1 -0
  435. package/dist/esm/lib/v3/types/private/shutdown.d.ts +31 -0
  436. package/dist/esm/lib/v3/types/private/shutdown.js +5 -0
  437. package/dist/esm/lib/v3/types/private/shutdown.js.map +1 -0
  438. package/dist/esm/lib/v3/types/private/shutdownErrors.d.ts +12 -0
  439. package/dist/esm/lib/v3/types/private/shutdownErrors.js +22 -0
  440. package/dist/esm/lib/v3/types/private/shutdownErrors.js.map +1 -0
  441. package/dist/esm/lib/v3/types/private/snapshot.d.ts +117 -0
  442. package/dist/esm/lib/v3/types/private/snapshot.js +2 -0
  443. package/dist/esm/lib/v3/types/private/snapshot.js.map +1 -0
  444. package/dist/esm/lib/v3/types/public/agent.d.ts +595 -0
  445. package/dist/esm/lib/v3/types/public/agent.js +15 -0
  446. package/dist/esm/lib/v3/types/public/agent.js.map +1 -0
  447. package/dist/esm/lib/v3/types/public/api.d.ts +1211 -0
  448. package/dist/esm/lib/v3/types/public/api.js +915 -0
  449. package/dist/esm/lib/v3/types/public/api.js.map +1 -0
  450. package/dist/esm/lib/v3/types/public/apiErrors.d.ts +18 -0
  451. package/dist/esm/lib/v3/types/public/apiErrors.js +32 -0
  452. package/dist/esm/lib/v3/types/public/apiErrors.js.map +1 -0
  453. package/dist/esm/lib/v3/types/public/index.d.ts +12 -0
  454. package/dist/esm/lib/v3/types/public/index.js +14 -0
  455. package/dist/esm/lib/v3/types/public/index.js.map +1 -0
  456. package/dist/esm/lib/v3/types/public/locator.d.ts +9 -0
  457. package/dist/esm/lib/v3/types/public/locator.js +2 -0
  458. package/dist/esm/lib/v3/types/public/locator.js.map +1 -0
  459. package/dist/esm/lib/v3/types/public/logs.d.ts +23 -0
  460. package/dist/esm/lib/v3/types/public/logs.js +13 -0
  461. package/dist/esm/lib/v3/types/public/logs.js.map +1 -0
  462. package/dist/esm/lib/v3/types/public/methods.d.ts +56 -0
  463. package/dist/esm/lib/v3/types/public/methods.js +15 -0
  464. package/dist/esm/lib/v3/types/public/methods.js.map +1 -0
  465. package/dist/esm/lib/v3/types/public/metrics.d.ts +27 -0
  466. package/dist/esm/lib/v3/types/public/metrics.js +2 -0
  467. package/dist/esm/lib/v3/types/public/metrics.js.map +1 -0
  468. package/dist/esm/lib/v3/types/public/model.d.ts +65 -0
  469. package/dist/esm/lib/v3/types/public/model.js +2 -0
  470. package/dist/esm/lib/v3/types/public/model.js.map +1 -0
  471. package/dist/esm/lib/v3/types/public/options.d.ts +70 -0
  472. package/dist/esm/lib/v3/types/public/options.js +4 -0
  473. package/dist/esm/lib/v3/types/public/options.js.map +1 -0
  474. package/dist/esm/lib/v3/types/public/page.d.ts +18 -0
  475. package/dist/esm/lib/v3/types/public/page.js +3 -0
  476. package/dist/esm/lib/v3/types/public/page.js.map +1 -0
  477. package/dist/esm/lib/v3/types/public/screenshotTypes.d.ts +25 -0
  478. package/dist/esm/lib/v3/types/public/screenshotTypes.js +2 -0
  479. package/dist/esm/lib/v3/types/public/screenshotTypes.js.map +1 -0
  480. package/dist/esm/lib/v3/types/public/sdkErrors.d.ts +152 -0
  481. package/dist/esm/lib/v3/types/public/sdkErrors.js +305 -0
  482. package/dist/esm/lib/v3/types/public/sdkErrors.js.map +1 -0
  483. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.d.ts +15 -0
  484. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js +196 -0
  485. package/dist/esm/lib/v3/understudy/a11y/snapshot/a11yTree.js.map +1 -0
  486. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.d.ts +8 -0
  487. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js +121 -0
  488. package/dist/esm/lib/v3/understudy/a11y/snapshot/activeElement.js.map +1 -0
  489. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.d.ts +77 -0
  490. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js +336 -0
  491. package/dist/esm/lib/v3/understudy/a11y/snapshot/capture.js.map +1 -0
  492. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.d.ts +7 -0
  493. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js +129 -0
  494. package/dist/esm/lib/v3/understudy/a11y/snapshot/coordinateResolver.js.map +1 -0
  495. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.d.ts +46 -0
  496. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js +274 -0
  497. package/dist/esm/lib/v3/understudy/a11y/snapshot/domTree.js.map +1 -0
  498. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.d.ts +24 -0
  499. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js +216 -0
  500. package/dist/esm/lib/v3/understudy/a11y/snapshot/focusSelectors.js.map +1 -0
  501. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.d.ts +4 -0
  502. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js +5 -0
  503. package/dist/esm/lib/v3/understudy/a11y/snapshot/index.js.map +1 -0
  504. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.d.ts +16 -0
  505. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js +22 -0
  506. package/dist/esm/lib/v3/understudy/a11y/snapshot/sessions.js.map +1 -0
  507. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.d.ts +28 -0
  508. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js +135 -0
  509. package/dist/esm/lib/v3/understudy/a11y/snapshot/treeFormatUtils.js.map +1 -0
  510. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.d.ts +26 -0
  511. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js +102 -0
  512. package/dist/esm/lib/v3/understudy/a11y/snapshot/xpathUtils.js.map +1 -0
  513. package/dist/esm/lib/v3/understudy/a11yInvocation.d.ts +8 -0
  514. package/dist/esm/lib/v3/understudy/a11yInvocation.js +12 -0
  515. package/dist/esm/lib/v3/understudy/a11yInvocation.js.map +1 -0
  516. package/dist/esm/lib/v3/understudy/cdp.d.ts +69 -0
  517. package/dist/esm/lib/v3/understudy/cdp.js +251 -0
  518. package/dist/esm/lib/v3/understudy/cdp.js.map +1 -0
  519. package/dist/esm/lib/v3/understudy/consoleMessage.d.ts +22 -0
  520. package/dist/esm/lib/v3/understudy/consoleMessage.js +66 -0
  521. package/dist/esm/lib/v3/understudy/consoleMessage.js.map +1 -0
  522. package/dist/esm/lib/v3/understudy/context.d.ts +132 -0
  523. package/dist/esm/lib/v3/understudy/context.js +687 -0
  524. package/dist/esm/lib/v3/understudy/context.js.map +1 -0
  525. package/dist/esm/lib/v3/understudy/deepLocator.d.ts +87 -0
  526. package/dist/esm/lib/v3/understudy/deepLocator.js +218 -0
  527. package/dist/esm/lib/v3/understudy/deepLocator.js.map +1 -0
  528. package/dist/esm/lib/v3/understudy/executionContextRegistry.d.ts +15 -0
  529. package/dist/esm/lib/v3/understudy/executionContextRegistry.js +83 -0
  530. package/dist/esm/lib/v3/understudy/executionContextRegistry.js.map +1 -0
  531. package/dist/esm/lib/v3/understudy/fileUploadUtils.d.ts +13 -0
  532. package/dist/esm/lib/v3/understudy/fileUploadUtils.js +81 -0
  533. package/dist/esm/lib/v3/understudy/fileUploadUtils.js.map +1 -0
  534. package/dist/esm/lib/v3/understudy/frame.d.ts +69 -0
  535. package/dist/esm/lib/v3/understudy/frame.js +211 -0
  536. package/dist/esm/lib/v3/understudy/frame.js.map +1 -0
  537. package/dist/esm/lib/v3/understudy/frameLocator.d.ts +50 -0
  538. package/dist/esm/lib/v3/understudy/frameLocator.js +255 -0
  539. package/dist/esm/lib/v3/understudy/frameLocator.js.map +1 -0
  540. package/dist/esm/lib/v3/understudy/frameRegistry.d.ts +101 -0
  541. package/dist/esm/lib/v3/understudy/frameRegistry.js +298 -0
  542. package/dist/esm/lib/v3/understudy/frameRegistry.js.map +1 -0
  543. package/dist/esm/lib/v3/understudy/initScripts.d.ts +2 -0
  544. package/dist/esm/lib/v3/understudy/initScripts.js +33 -0
  545. package/dist/esm/lib/v3/understudy/initScripts.js.map +1 -0
  546. package/dist/esm/lib/v3/understudy/lifecycleWatcher.d.ts +64 -0
  547. package/dist/esm/lib/v3/understudy/lifecycleWatcher.js +245 -0
  548. package/dist/esm/lib/v3/understudy/lifecycleWatcher.js.map +1 -0
  549. package/dist/esm/lib/v3/understudy/locator.d.ts +194 -0
  550. package/dist/esm/lib/v3/understudy/locator.js +753 -0
  551. package/dist/esm/lib/v3/understudy/locator.js.map +1 -0
  552. package/dist/esm/lib/v3/understudy/locatorInvocation.d.ts +8 -0
  553. package/dist/esm/lib/v3/understudy/locatorInvocation.js +12 -0
  554. package/dist/esm/lib/v3/understudy/locatorInvocation.js.map +1 -0
  555. package/dist/esm/lib/v3/understudy/navigationResponseTracker.d.ts +84 -0
  556. package/dist/esm/lib/v3/understudy/navigationResponseTracker.js +224 -0
  557. package/dist/esm/lib/v3/understudy/navigationResponseTracker.js.map +1 -0
  558. package/dist/esm/lib/v3/understudy/networkManager.d.ts +53 -0
  559. package/dist/esm/lib/v3/understudy/networkManager.js +306 -0
  560. package/dist/esm/lib/v3/understudy/networkManager.js.map +1 -0
  561. package/dist/esm/lib/v3/understudy/page.d.ts +354 -0
  562. package/dist/esm/lib/v3/understudy/page.js +1941 -0
  563. package/dist/esm/lib/v3/understudy/page.js.map +1 -0
  564. package/dist/esm/lib/v3/understudy/piercer.d.ts +4 -0
  565. package/dist/esm/lib/v3/understudy/piercer.js +61 -0
  566. package/dist/esm/lib/v3/understudy/piercer.js.map +1 -0
  567. package/dist/esm/lib/v3/understudy/response.d.ts +137 -0
  568. package/dist/esm/lib/v3/understudy/response.js +330 -0
  569. package/dist/esm/lib/v3/understudy/response.js.map +1 -0
  570. package/dist/esm/lib/v3/understudy/screenshotUtils.d.ts +16 -0
  571. package/dist/esm/lib/v3/understudy/screenshotUtils.js +352 -0
  572. package/dist/esm/lib/v3/understudy/screenshotUtils.js.map +1 -0
  573. package/dist/esm/lib/v3/understudy/selectorResolver.d.ts +38 -0
  574. package/dist/esm/lib/v3/understudy/selectorResolver.js +296 -0
  575. package/dist/esm/lib/v3/understudy/selectorResolver.js.map +1 -0
  576. package/dist/esm/lib/v3/v3.d.ts +191 -0
  577. package/dist/esm/lib/v3/v3.js +1572 -0
  578. package/dist/esm/lib/v3/v3.js.map +1 -0
  579. package/dist/esm/lib/v3/zodCompat.d.ts +12 -0
  580. package/dist/esm/lib/v3/zodCompat.js +17 -0
  581. package/dist/esm/lib/v3/zodCompat.js.map +1 -0
  582. package/dist/esm/lib/v3Evaluator.d.ts +19 -0
  583. package/dist/esm/lib/v3Evaluator.js +210 -0
  584. package/dist/esm/lib/v3Evaluator.js.map +1 -0
  585. package/dist/esm/lib/version.d.ts +5 -0
  586. package/dist/esm/lib/version.js +6 -0
  587. package/dist/esm/lib/version.js.map +1 -0
  588. package/dist/esm/package.json +3 -0
  589. package/dist/esm/tests/agent-execution-model.test.js +139 -0
  590. package/dist/esm/tests/agent-execution-model.test.js.map +7 -0
  591. package/dist/esm/tests/browserbase-session-accessors.test.js +101 -0
  592. package/dist/esm/tests/browserbase-session-accessors.test.js.map +7 -0
  593. package/dist/esm/tests/cache-llm-resolution.test.js +187 -0
  594. package/dist/esm/tests/cache-llm-resolution.test.js.map +7 -0
  595. package/dist/esm/tests/helpers/mockCDPSession.js +27 -0
  596. package/dist/esm/tests/helpers/mockCDPSession.js.map +7 -0
  597. package/dist/esm/tests/llm-provider.test.js +57 -0
  598. package/dist/esm/tests/llm-provider.test.js.map +7 -0
  599. package/dist/esm/tests/model-deprecation.test.js +135 -0
  600. package/dist/esm/tests/model-deprecation.test.js.map +7 -0
  601. package/dist/esm/tests/model-utils.test.js +43 -0
  602. package/dist/esm/tests/model-utils.test.js.map +7 -0
  603. package/dist/esm/tests/page-snapshot.test.js +36 -0
  604. package/dist/esm/tests/page-snapshot.test.js.map +7 -0
  605. package/dist/esm/tests/public-api/export-surface.test.js +53 -0
  606. package/dist/esm/tests/public-api/export-surface.test.js.map +7 -0
  607. package/dist/esm/tests/public-api/llm-and-agents.test.js +128 -0
  608. package/dist/esm/tests/public-api/llm-and-agents.test.js.map +7 -0
  609. package/dist/esm/tests/public-api/public-error-types.test.js +71 -0
  610. package/dist/esm/tests/public-api/public-error-types.test.js.map +7 -0
  611. package/dist/esm/tests/public-api/public-types.test.js +74 -0
  612. package/dist/esm/tests/public-api/public-types.test.js.map +7 -0
  613. package/dist/esm/tests/public-api/runtime-utils.test.js +31 -0
  614. package/dist/esm/tests/public-api/runtime-utils.test.js.map +7 -0
  615. package/dist/esm/tests/public-api/schema-utils.test.js +78 -0
  616. package/dist/esm/tests/public-api/schema-utils.test.js.map +7 -0
  617. package/dist/esm/tests/public-api/timeout-error-types.test.js +81 -0
  618. package/dist/esm/tests/public-api/timeout-error-types.test.js.map +7 -0
  619. package/dist/esm/tests/public-api/tool-type-export.test.js +25 -0
  620. package/dist/esm/tests/public-api/tool-type-export.test.js.map +7 -0
  621. package/dist/esm/tests/public-api/v3-core.test.js +82 -0
  622. package/dist/esm/tests/public-api/v3-core.test.js.map +7 -0
  623. package/dist/esm/tests/safety-confirmation.test.js +134 -0
  624. package/dist/esm/tests/safety-confirmation.test.js.map +7 -0
  625. package/dist/esm/tests/snapshot-a11y-resolvers.test.js +348 -0
  626. package/dist/esm/tests/snapshot-a11y-resolvers.test.js.map +7 -0
  627. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js +300 -0
  628. package/dist/esm/tests/snapshot-a11y-tree-utils.test.js.map +7 -0
  629. package/dist/esm/tests/snapshot-capture-orchestration.test.js +381 -0
  630. package/dist/esm/tests/snapshot-capture-orchestration.test.js.map +7 -0
  631. package/dist/esm/tests/snapshot-cbor.test.js +197 -0
  632. package/dist/esm/tests/snapshot-cbor.test.js.map +7 -0
  633. package/dist/esm/tests/snapshot-dom-session-builders.test.js +251 -0
  634. package/dist/esm/tests/snapshot-dom-session-builders.test.js.map +7 -0
  635. package/dist/esm/tests/snapshot-dom-tree-utils.test.js +109 -0
  636. package/dist/esm/tests/snapshot-dom-tree-utils.test.js.map +7 -0
  637. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js +49 -0
  638. package/dist/esm/tests/snapshot-focus-selectors-utils.test.js.map +7 -0
  639. package/dist/esm/tests/snapshot-frame-merge.test.js +391 -0
  640. package/dist/esm/tests/snapshot-frame-merge.test.js.map +7 -0
  641. package/dist/esm/tests/snapshot-tree-format-utils.test.js +113 -0
  642. package/dist/esm/tests/snapshot-tree-format-utils.test.js.map +7 -0
  643. package/dist/esm/tests/snapshot-xpath-utils.test.js +79 -0
  644. package/dist/esm/tests/snapshot-xpath-utils.test.js.map +7 -0
  645. package/dist/esm/tests/timeout-handlers.test.js +850 -0
  646. package/dist/esm/tests/timeout-handlers.test.js.map +7 -0
  647. package/dist/esm/tests/xpath-parser.test.js +317 -0
  648. package/dist/esm/tests/xpath-parser.test.js.map +7 -0
  649. package/dist/esm/tests/xpath-resolver.test.js +73 -0
  650. package/dist/esm/tests/xpath-resolver.test.js.map +7 -0
  651. package/dist/esm/tests/zod-enum-compatibility.test.js +97 -0
  652. package/dist/esm/tests/zod-enum-compatibility.test.js.map +7 -0
  653. package/package.json +42 -27
  654. package/dist/index.d.ts +0 -4321
  655. package/dist/index.js +0 -69585
@@ -0,0 +1,552 @@
1
+ import { test, expect } from "@playwright/test";
2
+ import {
3
+ bindInstanceLogger,
4
+ unbindInstanceLogger,
5
+ withInstanceLogContext,
6
+ v3Logger
7
+ } from "../logger.js";
8
+ test.describe("V3 Logger Instance Routing", () => {
9
+ test.afterEach(() => {
10
+ });
11
+ test("bindInstanceLogger routes logs to correct instance", () => {
12
+ const instanceId = "test-instance-001";
13
+ const capturedLogs = [];
14
+ bindInstanceLogger(instanceId, (line) => {
15
+ capturedLogs.push(line);
16
+ });
17
+ try {
18
+ withInstanceLogContext(instanceId, () => {
19
+ v3Logger({
20
+ category: "test",
21
+ message: "Test message for instance",
22
+ level: 1
23
+ });
24
+ });
25
+ expect(capturedLogs.length).toBe(1);
26
+ expect(capturedLogs[0].message).toBe("Test message for instance");
27
+ } finally {
28
+ unbindInstanceLogger(instanceId);
29
+ }
30
+ });
31
+ test("unbindInstanceLogger stops routing", () => {
32
+ const instanceId = "test-instance-002";
33
+ const capturedLogs = [];
34
+ const consoleOutput = [];
35
+ const originalConsoleLog = console.log;
36
+ try {
37
+ console.log = (msg) => {
38
+ consoleOutput.push(msg);
39
+ };
40
+ bindInstanceLogger(instanceId, (line) => {
41
+ capturedLogs.push(line);
42
+ });
43
+ unbindInstanceLogger(instanceId);
44
+ withInstanceLogContext(instanceId, () => {
45
+ v3Logger({
46
+ category: "test",
47
+ message: "After unbind",
48
+ level: 1
49
+ });
50
+ });
51
+ expect(capturedLogs.length).toBe(0);
52
+ expect(consoleOutput.length).toBeGreaterThan(0);
53
+ } finally {
54
+ console.log = originalConsoleLog;
55
+ unbindInstanceLogger(instanceId);
56
+ }
57
+ });
58
+ test("multiple instances have isolated log routing", () => {
59
+ const instance1Id = "test-instance-1";
60
+ const instance2Id = "test-instance-2";
61
+ const instance1Logs = [];
62
+ const instance2Logs = [];
63
+ bindInstanceLogger(instance1Id, (line) => instance1Logs.push(line));
64
+ bindInstanceLogger(instance2Id, (line) => instance2Logs.push(line));
65
+ try {
66
+ withInstanceLogContext(instance1Id, () => {
67
+ v3Logger({
68
+ category: "test",
69
+ message: "From instance 1",
70
+ level: 1
71
+ });
72
+ });
73
+ withInstanceLogContext(instance2Id, () => {
74
+ v3Logger({
75
+ category: "test",
76
+ message: "From instance 2",
77
+ level: 1
78
+ });
79
+ });
80
+ expect(instance1Logs.length).toBe(1);
81
+ expect(instance2Logs.length).toBe(1);
82
+ expect(instance1Logs[0].message).toBe("From instance 1");
83
+ expect(instance2Logs[0].message).toBe("From instance 2");
84
+ } finally {
85
+ unbindInstanceLogger(instance1Id);
86
+ unbindInstanceLogger(instance2Id);
87
+ }
88
+ });
89
+ test("v3Logger falls back to console when no instance context", () => {
90
+ const capturedLogs = [];
91
+ const originalConsoleLog = console.log;
92
+ try {
93
+ console.log = (msg) => {
94
+ capturedLogs.push(msg);
95
+ };
96
+ v3Logger({
97
+ category: "test",
98
+ message: "Console fallback log",
99
+ level: 1
100
+ });
101
+ expect(capturedLogs.length).toBeGreaterThan(0);
102
+ const logOutput = capturedLogs.join("\n");
103
+ expect(logOutput).toContain("Console fallback log");
104
+ } finally {
105
+ console.log = originalConsoleLog;
106
+ }
107
+ });
108
+ test("v3Logger falls back to console when instance logger throws", () => {
109
+ const instanceId = "failing-instance";
110
+ const capturedConsoleLogs = [];
111
+ const originalConsoleLog = console.log;
112
+ try {
113
+ console.log = (msg) => {
114
+ capturedConsoleLogs.push(msg);
115
+ };
116
+ bindInstanceLogger(instanceId, () => {
117
+ throw new Error("Instance logger failed");
118
+ });
119
+ withInstanceLogContext(instanceId, () => {
120
+ expect(() => {
121
+ v3Logger({
122
+ category: "test",
123
+ message: "Test with failing instance logger",
124
+ level: 1
125
+ });
126
+ }).not.toThrow();
127
+ });
128
+ expect(capturedConsoleLogs.length).toBeGreaterThan(0);
129
+ const logOutput = capturedConsoleLogs.join("\n");
130
+ expect(logOutput).toContain("Test with failing instance logger");
131
+ } finally {
132
+ console.log = originalConsoleLog;
133
+ unbindInstanceLogger(instanceId);
134
+ }
135
+ });
136
+ test("withInstanceLogContext nests properly", () => {
137
+ const outerInstanceId = "outer-instance";
138
+ const innerInstanceId = "inner-instance";
139
+ const outerLogs = [];
140
+ const innerLogs = [];
141
+ bindInstanceLogger(outerInstanceId, (line) => outerLogs.push(line));
142
+ bindInstanceLogger(innerInstanceId, (line) => innerLogs.push(line));
143
+ try {
144
+ withInstanceLogContext(outerInstanceId, () => {
145
+ v3Logger({
146
+ category: "test",
147
+ message: "Outer context",
148
+ level: 1
149
+ });
150
+ withInstanceLogContext(innerInstanceId, () => {
151
+ v3Logger({
152
+ category: "test",
153
+ message: "Inner context",
154
+ level: 1
155
+ });
156
+ });
157
+ v3Logger({
158
+ category: "test",
159
+ message: "Back to outer context",
160
+ level: 1
161
+ });
162
+ });
163
+ expect(outerLogs.length).toBe(2);
164
+ expect(outerLogs[0].message).toBe("Outer context");
165
+ expect(outerLogs[1].message).toBe("Back to outer context");
166
+ expect(innerLogs.length).toBe(1);
167
+ expect(innerLogs[0].message).toBe("Inner context");
168
+ } finally {
169
+ unbindInstanceLogger(outerInstanceId);
170
+ unbindInstanceLogger(innerInstanceId);
171
+ }
172
+ });
173
+ test("withInstanceLogContext returns function result", () => {
174
+ const instanceId = "return-test-instance";
175
+ bindInstanceLogger(instanceId, () => {
176
+ });
177
+ try {
178
+ const result = withInstanceLogContext(instanceId, () => {
179
+ return { success: true, value: 42 };
180
+ });
181
+ expect(result).toEqual({ success: true, value: 42 });
182
+ } finally {
183
+ unbindInstanceLogger(instanceId);
184
+ }
185
+ });
186
+ test("withInstanceLogContext works with async functions", async () => {
187
+ const instanceId = "async-test-instance";
188
+ const capturedLogs = [];
189
+ bindInstanceLogger(instanceId, (line) => capturedLogs.push(line));
190
+ try {
191
+ const asyncResult = await withInstanceLogContext(instanceId, async () => {
192
+ v3Logger({
193
+ category: "test",
194
+ message: "Log from async context",
195
+ level: 1
196
+ });
197
+ await new Promise((resolve) => setTimeout(resolve, 10));
198
+ v3Logger({
199
+ category: "test",
200
+ message: "Log after await",
201
+ level: 1
202
+ });
203
+ return "async result";
204
+ });
205
+ expect(asyncResult).toBe("async result");
206
+ expect(capturedLogs.length).toBe(2);
207
+ expect(capturedLogs[0].message).toBe("Log from async context");
208
+ expect(capturedLogs[1].message).toBe("Log after await");
209
+ } finally {
210
+ unbindInstanceLogger(instanceId);
211
+ }
212
+ });
213
+ test("console fallback formats different log levels correctly", () => {
214
+ const consoleOutput = [];
215
+ const originalConsoleLog = console.log;
216
+ const originalConsoleError = console.error;
217
+ const originalConsoleDebug = console.debug;
218
+ try {
219
+ console.log = (msg) => {
220
+ consoleOutput.push({ level: "log", msg });
221
+ };
222
+ console.error = (msg) => {
223
+ consoleOutput.push({ level: "error", msg });
224
+ };
225
+ console.debug = (msg) => {
226
+ consoleOutput.push({ level: "debug", msg });
227
+ };
228
+ v3Logger({
229
+ category: "test",
230
+ message: "Error message",
231
+ level: 0
232
+ });
233
+ v3Logger({
234
+ category: "test",
235
+ message: "Info message",
236
+ level: 1
237
+ });
238
+ v3Logger({
239
+ category: "test",
240
+ message: "Debug message",
241
+ level: 2
242
+ });
243
+ expect(consoleOutput.length).toBe(3);
244
+ expect(consoleOutput[0].level).toBe("error");
245
+ expect(consoleOutput[0].msg).toContain("ERROR");
246
+ expect(consoleOutput[0].msg).toContain("Error message");
247
+ expect(consoleOutput[1].level).toBe("log");
248
+ expect(consoleOutput[1].msg).toContain("INFO");
249
+ expect(consoleOutput[1].msg).toContain("Info message");
250
+ expect(consoleOutput[2].level).toBe("debug");
251
+ expect(consoleOutput[2].msg).toContain("DEBUG");
252
+ expect(consoleOutput[2].msg).toContain("Debug message");
253
+ } finally {
254
+ console.log = originalConsoleLog;
255
+ console.error = originalConsoleError;
256
+ console.debug = originalConsoleDebug;
257
+ }
258
+ });
259
+ test("console fallback formats auxiliary data", () => {
260
+ const consoleOutput = [];
261
+ const originalConsoleLog = console.log;
262
+ try {
263
+ console.log = (msg) => {
264
+ consoleOutput.push(msg);
265
+ };
266
+ v3Logger({
267
+ category: "test",
268
+ message: "Message with auxiliary",
269
+ level: 1,
270
+ auxiliary: {
271
+ stringValue: { value: "test", type: "string" },
272
+ integerValue: { value: "42", type: "integer" },
273
+ objectValue: {
274
+ value: JSON.stringify({ nested: "data" }),
275
+ type: "object"
276
+ }
277
+ }
278
+ });
279
+ expect(consoleOutput.length).toBe(1);
280
+ const output = consoleOutput[0];
281
+ expect(output).toContain("Message with auxiliary");
282
+ expect(output).toContain("stringValue");
283
+ expect(output).toContain("integerValue");
284
+ expect(output).toContain("objectValue");
285
+ } finally {
286
+ console.log = originalConsoleLog;
287
+ }
288
+ });
289
+ test("concurrent instances don't interfere", () => {
290
+ const instances = Array.from({ length: 10 }, (_, i) => `instance-${i}`);
291
+ const logsByInstance = /* @__PURE__ */ new Map();
292
+ instances.forEach((id) => {
293
+ const logs = [];
294
+ logsByInstance.set(id, logs);
295
+ bindInstanceLogger(id, (line) => logs.push(line));
296
+ });
297
+ try {
298
+ instances.forEach((id, index) => {
299
+ withInstanceLogContext(id, () => {
300
+ v3Logger({
301
+ category: "test",
302
+ message: `Message from ${id}`,
303
+ level: 1,
304
+ auxiliary: {
305
+ index: { value: String(index), type: "integer" }
306
+ }
307
+ });
308
+ });
309
+ });
310
+ instances.forEach((id) => {
311
+ const logs = logsByInstance.get(id);
312
+ expect(logs.length).toBe(1);
313
+ expect(logs[0].message).toBe(`Message from ${id}`);
314
+ });
315
+ } finally {
316
+ instances.forEach((id) => unbindInstanceLogger(id));
317
+ }
318
+ });
319
+ });
320
+ test.describe("V3 Logger with External Logger (Production Pattern)", () => {
321
+ test.afterEach(() => {
322
+ });
323
+ test("external logger receives all logs from v3Logger", () => {
324
+ const instanceId = "v3-instance-with-external";
325
+ const externalLogs = [];
326
+ const externalLogger = (line) => {
327
+ externalLogs.push(line);
328
+ };
329
+ bindInstanceLogger(instanceId, externalLogger);
330
+ try {
331
+ withInstanceLogContext(instanceId, () => {
332
+ v3Logger({
333
+ category: "a11y/snapshot",
334
+ message: "Capturing hybrid snapshot",
335
+ level: 0
336
+ });
337
+ v3Logger({
338
+ category: "handlers/act",
339
+ message: "Executing action",
340
+ level: 1,
341
+ auxiliary: {
342
+ action: { value: "click", type: "string" }
343
+ }
344
+ });
345
+ v3Logger({
346
+ category: "debug",
347
+ message: "Debug details",
348
+ level: 2
349
+ });
350
+ });
351
+ expect(externalLogs.length).toBe(3);
352
+ expect(externalLogs[0].message).toBe("Capturing hybrid snapshot");
353
+ expect(externalLogs[1].message).toBe("Executing action");
354
+ expect(externalLogs[2].message).toBe("Debug details");
355
+ } finally {
356
+ unbindInstanceLogger(instanceId);
357
+ }
358
+ });
359
+ test("StagehandLogger wrapper forwards to external logger", () => {
360
+ const instanceId = "v3-with-stagehand-wrapper";
361
+ const externalLogs = [];
362
+ const mockStagehandLogger = {
363
+ log: (line) => {
364
+ externalLogs.push(line);
365
+ }
366
+ };
367
+ bindInstanceLogger(instanceId, (line) => mockStagehandLogger.log(line));
368
+ try {
369
+ withInstanceLogContext(instanceId, () => {
370
+ v3Logger({
371
+ category: "test",
372
+ message: "Log through StagehandLogger wrapper",
373
+ level: 1
374
+ });
375
+ });
376
+ expect(externalLogs.length).toBe(1);
377
+ expect(externalLogs[0].message).toBe(
378
+ "Log through StagehandLogger wrapper"
379
+ );
380
+ } finally {
381
+ unbindInstanceLogger(instanceId);
382
+ }
383
+ });
384
+ test("multiple V3 instances with different external loggers", () => {
385
+ const instance1Id = "v3-instance-1";
386
+ const instance2Id = "v3-instance-2";
387
+ const external1Logs = [];
388
+ const external2Logs = [];
389
+ bindInstanceLogger(instance1Id, (line) => external1Logs.push(line));
390
+ bindInstanceLogger(instance2Id, (line) => external2Logs.push(line));
391
+ try {
392
+ withInstanceLogContext(instance1Id, () => {
393
+ v3Logger({
394
+ category: "instance1",
395
+ message: "Instance 1 activity",
396
+ level: 1
397
+ });
398
+ });
399
+ withInstanceLogContext(instance2Id, () => {
400
+ v3Logger({
401
+ category: "instance2",
402
+ message: "Instance 2 activity",
403
+ level: 1
404
+ });
405
+ });
406
+ expect(external1Logs.length).toBe(1);
407
+ expect(external2Logs.length).toBe(1);
408
+ expect(external1Logs[0].message).toBe("Instance 1 activity");
409
+ expect(external2Logs[0].message).toBe("Instance 2 activity");
410
+ } finally {
411
+ unbindInstanceLogger(instance1Id);
412
+ unbindInstanceLogger(instance2Id);
413
+ }
414
+ });
415
+ test("external logger receives logs with auxiliary data preserved", () => {
416
+ const instanceId = "v3-with-auxiliary";
417
+ const externalLogs = [];
418
+ bindInstanceLogger(instanceId, (line) => externalLogs.push(line));
419
+ try {
420
+ withInstanceLogContext(instanceId, () => {
421
+ v3Logger({
422
+ category: "extract",
423
+ message: "Extracting data",
424
+ level: 1,
425
+ auxiliary: {
426
+ selector: { value: "xpath=/html/body", type: "string" },
427
+ timeout: { value: "5000", type: "integer" },
428
+ retries: { value: "3", type: "integer" },
429
+ metadata: {
430
+ value: JSON.stringify({ key: "value" }),
431
+ type: "object"
432
+ }
433
+ }
434
+ });
435
+ });
436
+ expect(externalLogs.length).toBe(1);
437
+ const log = externalLogs[0];
438
+ expect(log.auxiliary).toBeDefined();
439
+ expect(log.auxiliary?.selector?.value).toBe("xpath=/html/body");
440
+ expect(log.auxiliary?.timeout?.value).toBe("5000");
441
+ expect(log.auxiliary?.retries?.value).toBe("3");
442
+ expect(log.auxiliary?.metadata?.type).toBe("object");
443
+ } finally {
444
+ unbindInstanceLogger(instanceId);
445
+ }
446
+ });
447
+ test("external logger handles rapid concurrent logs", () => {
448
+ const instanceId = "v3-rapid-logs";
449
+ const externalLogs = [];
450
+ bindInstanceLogger(instanceId, (line) => externalLogs.push(line));
451
+ try {
452
+ withInstanceLogContext(instanceId, () => {
453
+ for (let i = 0; i < 50; i++) {
454
+ v3Logger({
455
+ category: "perf",
456
+ message: `Operation ${i}`,
457
+ level: 2,
458
+ auxiliary: {
459
+ iteration: { value: String(i), type: "integer" }
460
+ }
461
+ });
462
+ }
463
+ });
464
+ expect(externalLogs.length).toBe(50);
465
+ expect(externalLogs[0].message).toBe("Operation 0");
466
+ expect(externalLogs[49].message).toBe("Operation 49");
467
+ } finally {
468
+ unbindInstanceLogger(instanceId);
469
+ }
470
+ });
471
+ test("external logger can filter by log level", () => {
472
+ const instanceId = "v3-with-filtering";
473
+ const errorLogs = [];
474
+ const filteringLogger = (line) => {
475
+ if (line.level === 0) {
476
+ errorLogs.push(line);
477
+ }
478
+ };
479
+ bindInstanceLogger(instanceId, filteringLogger);
480
+ try {
481
+ withInstanceLogContext(instanceId, () => {
482
+ v3Logger({
483
+ category: "test",
484
+ message: "Info message",
485
+ level: 1
486
+ });
487
+ v3Logger({
488
+ category: "test",
489
+ message: "Error message",
490
+ level: 0
491
+ });
492
+ v3Logger({
493
+ category: "test",
494
+ message: "Debug message",
495
+ level: 2
496
+ });
497
+ v3Logger({
498
+ category: "test",
499
+ message: "Another error",
500
+ level: 0
501
+ });
502
+ });
503
+ expect(errorLogs.length).toBe(2);
504
+ expect(errorLogs[0].message).toBe("Error message");
505
+ expect(errorLogs[1].message).toBe("Another error");
506
+ } finally {
507
+ unbindInstanceLogger(instanceId);
508
+ }
509
+ });
510
+ test("external logger persists across async operations", async () => {
511
+ const instanceId = "v3-async-ops";
512
+ const externalLogs = [];
513
+ bindInstanceLogger(instanceId, (line) => externalLogs.push(line));
514
+ try {
515
+ await withInstanceLogContext(instanceId, async () => {
516
+ v3Logger({
517
+ category: "async",
518
+ message: "Before async operation",
519
+ level: 1
520
+ });
521
+ await new Promise((resolve) => setTimeout(resolve, 50));
522
+ v3Logger({
523
+ category: "async",
524
+ message: "After async operation",
525
+ level: 1
526
+ });
527
+ await Promise.all([
528
+ Promise.resolve().then(
529
+ () => v3Logger({
530
+ category: "async",
531
+ message: "Parallel operation 1",
532
+ level: 1
533
+ })
534
+ ),
535
+ Promise.resolve().then(
536
+ () => v3Logger({
537
+ category: "async",
538
+ message: "Parallel operation 2",
539
+ level: 1
540
+ })
541
+ )
542
+ ]);
543
+ });
544
+ expect(externalLogs.length).toBe(4);
545
+ expect(externalLogs[0].message).toBe("Before async operation");
546
+ expect(externalLogs[1].message).toBe("After async operation");
547
+ } finally {
548
+ unbindInstanceLogger(instanceId);
549
+ }
550
+ });
551
+ });
552
+ //# sourceMappingURL=logger-initialization.spec.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../lib/v3/tests/logger-initialization.spec.ts"],
4
+ "sourcesContent": ["import { test, expect } from \"@playwright/test\";\nimport {\n bindInstanceLogger,\n unbindInstanceLogger,\n withInstanceLogContext,\n v3Logger,\n} from \"../logger.js\";\nimport type { LogLine } from \"../types/public/logs.js\";\n\ntest.describe(\"V3 Logger Instance Routing\", () => {\n test.afterEach(() => {\n // Clean up is handled by unbindInstanceLogger calls in tests\n });\n\n test(\"bindInstanceLogger routes logs to correct instance\", () => {\n const instanceId = \"test-instance-001\";\n const capturedLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => {\n capturedLogs.push(line);\n });\n\n try {\n // Log within context\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Test message for instance\",\n level: 1,\n });\n });\n\n // Should have captured the log\n expect(capturedLogs.length).toBe(1);\n expect(capturedLogs[0].message).toBe(\"Test message for instance\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"unbindInstanceLogger stops routing\", () => {\n const instanceId = \"test-instance-002\";\n const capturedLogs: LogLine[] = [];\n const consoleOutput: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push(msg);\n };\n\n bindInstanceLogger(instanceId, (line) => {\n capturedLogs.push(line);\n });\n\n // Unbind immediately\n unbindInstanceLogger(instanceId);\n\n // Log - should fall back to console\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"After unbind\",\n level: 1,\n });\n });\n\n // Should not have captured via instance logger\n expect(capturedLogs.length).toBe(0);\n // But should have logged to console\n expect(consoleOutput.length).toBeGreaterThan(0);\n } finally {\n console.log = originalConsoleLog;\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"multiple instances have isolated log routing\", () => {\n const instance1Id = \"test-instance-1\";\n const instance2Id = \"test-instance-2\";\n const instance1Logs: LogLine[] = [];\n const instance2Logs: LogLine[] = [];\n\n bindInstanceLogger(instance1Id, (line) => instance1Logs.push(line));\n bindInstanceLogger(instance2Id, (line) => instance2Logs.push(line));\n\n try {\n // Log from instance 1\n withInstanceLogContext(instance1Id, () => {\n v3Logger({\n category: \"test\",\n message: \"From instance 1\",\n level: 1,\n });\n });\n\n // Log from instance 2\n withInstanceLogContext(instance2Id, () => {\n v3Logger({\n category: \"test\",\n message: \"From instance 2\",\n level: 1,\n });\n });\n\n // Each instance should have only its own log\n expect(instance1Logs.length).toBe(1);\n expect(instance2Logs.length).toBe(1);\n expect(instance1Logs[0].message).toBe(\"From instance 1\");\n expect(instance2Logs[0].message).toBe(\"From instance 2\");\n } finally {\n unbindInstanceLogger(instance1Id);\n unbindInstanceLogger(instance2Id);\n }\n });\n\n test(\"v3Logger falls back to console when no instance context\", () => {\n const capturedLogs: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n capturedLogs.push(msg);\n };\n\n // Log without any instance context\n v3Logger({\n category: \"test\",\n message: \"Console fallback log\",\n level: 1,\n });\n\n // Should have used console logger\n expect(capturedLogs.length).toBeGreaterThan(0);\n const logOutput = capturedLogs.join(\"\\n\");\n expect(logOutput).toContain(\"Console fallback log\");\n } finally {\n console.log = originalConsoleLog;\n }\n });\n\n test(\"v3Logger falls back to console when instance logger throws\", () => {\n const instanceId = \"failing-instance\";\n const capturedConsoleLogs: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n capturedConsoleLogs.push(msg);\n };\n\n // Bind a logger that throws\n bindInstanceLogger(instanceId, () => {\n throw new Error(\"Instance logger failed\");\n });\n\n // Should fall back to console without throwing\n withInstanceLogContext(instanceId, () => {\n expect(() => {\n v3Logger({\n category: \"test\",\n message: \"Test with failing instance logger\",\n level: 1,\n });\n }).not.toThrow();\n });\n\n // Console should have received the log as fallback\n expect(capturedConsoleLogs.length).toBeGreaterThan(0);\n const logOutput = capturedConsoleLogs.join(\"\\n\");\n expect(logOutput).toContain(\"Test with failing instance logger\");\n } finally {\n console.log = originalConsoleLog;\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"withInstanceLogContext nests properly\", () => {\n const outerInstanceId = \"outer-instance\";\n const innerInstanceId = \"inner-instance\";\n const outerLogs: LogLine[] = [];\n const innerLogs: LogLine[] = [];\n\n bindInstanceLogger(outerInstanceId, (line) => outerLogs.push(line));\n bindInstanceLogger(innerInstanceId, (line) => innerLogs.push(line));\n\n try {\n withInstanceLogContext(outerInstanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Outer context\",\n level: 1,\n });\n\n withInstanceLogContext(innerInstanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Inner context\",\n level: 1,\n });\n });\n\n v3Logger({\n category: \"test\",\n message: \"Back to outer context\",\n level: 1,\n });\n });\n\n // Outer instance should have 2 logs\n expect(outerLogs.length).toBe(2);\n expect(outerLogs[0].message).toBe(\"Outer context\");\n expect(outerLogs[1].message).toBe(\"Back to outer context\");\n\n // Inner instance should have 1 log\n expect(innerLogs.length).toBe(1);\n expect(innerLogs[0].message).toBe(\"Inner context\");\n } finally {\n unbindInstanceLogger(outerInstanceId);\n unbindInstanceLogger(innerInstanceId);\n }\n });\n\n test(\"withInstanceLogContext returns function result\", () => {\n const instanceId = \"return-test-instance\";\n bindInstanceLogger(instanceId, () => {});\n\n try {\n const result = withInstanceLogContext(instanceId, () => {\n return { success: true, value: 42 };\n });\n\n expect(result).toEqual({ success: true, value: 42 });\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"withInstanceLogContext works with async functions\", async () => {\n const instanceId = \"async-test-instance\";\n const capturedLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => capturedLogs.push(line));\n\n try {\n const asyncResult = await withInstanceLogContext(instanceId, async () => {\n v3Logger({\n category: \"test\",\n message: \"Log from async context\",\n level: 1,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 10));\n\n v3Logger({\n category: \"test\",\n message: \"Log after await\",\n level: 1,\n });\n\n return \"async result\";\n });\n\n expect(asyncResult).toBe(\"async result\");\n expect(capturedLogs.length).toBe(2);\n expect(capturedLogs[0].message).toBe(\"Log from async context\");\n expect(capturedLogs[1].message).toBe(\"Log after await\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"console fallback formats different log levels correctly\", () => {\n const consoleOutput: { level: string; msg: string }[] = [];\n const originalConsoleLog = console.log;\n const originalConsoleError = console.error;\n const originalConsoleDebug = console.debug;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push({ level: \"log\", msg });\n };\n console.error = (msg: string) => {\n consoleOutput.push({ level: \"error\", msg });\n };\n console.debug = (msg: string) => {\n consoleOutput.push({ level: \"debug\", msg });\n };\n\n // Test error level (0)\n v3Logger({\n category: \"test\",\n message: \"Error message\",\n level: 0,\n });\n\n // Test info level (1)\n v3Logger({\n category: \"test\",\n message: \"Info message\",\n level: 1,\n });\n\n // Test debug level (2)\n v3Logger({\n category: \"test\",\n message: \"Debug message\",\n level: 2,\n });\n\n expect(consoleOutput.length).toBe(3);\n expect(consoleOutput[0].level).toBe(\"error\");\n expect(consoleOutput[0].msg).toContain(\"ERROR\");\n expect(consoleOutput[0].msg).toContain(\"Error message\");\n\n expect(consoleOutput[1].level).toBe(\"log\");\n expect(consoleOutput[1].msg).toContain(\"INFO\");\n expect(consoleOutput[1].msg).toContain(\"Info message\");\n\n expect(consoleOutput[2].level).toBe(\"debug\");\n expect(consoleOutput[2].msg).toContain(\"DEBUG\");\n expect(consoleOutput[2].msg).toContain(\"Debug message\");\n } finally {\n console.log = originalConsoleLog;\n console.error = originalConsoleError;\n console.debug = originalConsoleDebug;\n }\n });\n\n test(\"console fallback formats auxiliary data\", () => {\n const consoleOutput: string[] = [];\n const originalConsoleLog = console.log;\n\n try {\n console.log = (msg: string) => {\n consoleOutput.push(msg);\n };\n\n v3Logger({\n category: \"test\",\n message: \"Message with auxiliary\",\n level: 1,\n auxiliary: {\n stringValue: { value: \"test\", type: \"string\" },\n integerValue: { value: \"42\", type: \"integer\" },\n objectValue: {\n value: JSON.stringify({ nested: \"data\" }),\n type: \"object\",\n },\n },\n });\n\n expect(consoleOutput.length).toBe(1);\n const output = consoleOutput[0];\n expect(output).toContain(\"Message with auxiliary\");\n expect(output).toContain(\"stringValue\");\n expect(output).toContain(\"integerValue\");\n expect(output).toContain(\"objectValue\");\n } finally {\n console.log = originalConsoleLog;\n }\n });\n\n test(\"concurrent instances don't interfere\", () => {\n const instances = Array.from({ length: 10 }, (_, i) => `instance-${i}`);\n const logsByInstance = new Map<string, LogLine[]>();\n\n // Bind all instances\n instances.forEach((id) => {\n const logs: LogLine[] = [];\n logsByInstance.set(id, logs);\n bindInstanceLogger(id, (line) => logs.push(line));\n });\n\n try {\n // Log from each instance\n instances.forEach((id, index) => {\n withInstanceLogContext(id, () => {\n v3Logger({\n category: \"test\",\n message: `Message from ${id}`,\n level: 1,\n auxiliary: {\n index: { value: String(index), type: \"integer\" },\n },\n });\n });\n });\n\n // Verify each instance received only its own log\n instances.forEach((id) => {\n const logs = logsByInstance.get(id)!;\n expect(logs.length).toBe(1);\n expect(logs[0].message).toBe(`Message from ${id}`);\n });\n } finally {\n instances.forEach((id) => unbindInstanceLogger(id));\n }\n });\n});\n\ntest.describe(\"V3 Logger with External Logger (Production Pattern)\", () => {\n test.afterEach(() => {\n // Clean up instance loggers\n });\n\n test(\"external logger receives all logs from v3Logger\", () => {\n const instanceId = \"v3-instance-with-external\";\n const externalLogs: LogLine[] = [];\n\n // Simulate V3 constructor behavior with external logger\n const externalLogger = (line: LogLine) => {\n externalLogs.push(line);\n };\n\n bindInstanceLogger(instanceId, externalLogger);\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"a11y/snapshot\",\n message: \"Capturing hybrid snapshot\",\n level: 0,\n });\n\n v3Logger({\n category: \"handlers/act\",\n message: \"Executing action\",\n level: 1,\n auxiliary: {\n action: { value: \"click\", type: \"string\" },\n },\n });\n\n v3Logger({\n category: \"debug\",\n message: \"Debug details\",\n level: 2,\n });\n });\n\n // All logs should be captured by external logger\n expect(externalLogs.length).toBe(3);\n expect(externalLogs[0].message).toBe(\"Capturing hybrid snapshot\");\n expect(externalLogs[1].message).toBe(\"Executing action\");\n expect(externalLogs[2].message).toBe(\"Debug details\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"StagehandLogger wrapper forwards to external logger\", () => {\n const instanceId = \"v3-with-stagehand-wrapper\";\n const externalLogs: LogLine[] = [];\n\n // Simulate V3's stagehandLogger.log() wrapping pattern\n const mockStagehandLogger = {\n log: (line: LogLine) => {\n // This simulates StagehandLogger.log() which internally calls externalLogger\n externalLogs.push(line);\n },\n };\n\n bindInstanceLogger(instanceId, (line) => mockStagehandLogger.log(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Log through StagehandLogger wrapper\",\n level: 1,\n });\n });\n\n expect(externalLogs.length).toBe(1);\n expect(externalLogs[0].message).toBe(\n \"Log through StagehandLogger wrapper\",\n );\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"multiple V3 instances with different external loggers\", () => {\n const instance1Id = \"v3-instance-1\";\n const instance2Id = \"v3-instance-2\";\n const external1Logs: LogLine[] = [];\n const external2Logs: LogLine[] = [];\n\n // Simulate two V3 instances with different external loggers\n bindInstanceLogger(instance1Id, (line) => external1Logs.push(line));\n bindInstanceLogger(instance2Id, (line) => external2Logs.push(line));\n\n try {\n // Instance 1 logs\n withInstanceLogContext(instance1Id, () => {\n v3Logger({\n category: \"instance1\",\n message: \"Instance 1 activity\",\n level: 1,\n });\n });\n\n // Instance 2 logs\n withInstanceLogContext(instance2Id, () => {\n v3Logger({\n category: \"instance2\",\n message: \"Instance 2 activity\",\n level: 1,\n });\n });\n\n // Each external logger should only have its instance's logs\n expect(external1Logs.length).toBe(1);\n expect(external2Logs.length).toBe(1);\n expect(external1Logs[0].message).toBe(\"Instance 1 activity\");\n expect(external2Logs[0].message).toBe(\"Instance 2 activity\");\n } finally {\n unbindInstanceLogger(instance1Id);\n unbindInstanceLogger(instance2Id);\n }\n });\n\n test(\"external logger receives logs with auxiliary data preserved\", () => {\n const instanceId = \"v3-with-auxiliary\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"extract\",\n message: \"Extracting data\",\n level: 1,\n auxiliary: {\n selector: { value: \"xpath=/html/body\", type: \"string\" },\n timeout: { value: \"5000\", type: \"integer\" },\n retries: { value: \"3\", type: \"integer\" },\n metadata: {\n value: JSON.stringify({ key: \"value\" }),\n type: \"object\",\n },\n },\n });\n });\n\n expect(externalLogs.length).toBe(1);\n const log = externalLogs[0];\n expect(log.auxiliary).toBeDefined();\n expect(log.auxiliary?.selector?.value).toBe(\"xpath=/html/body\");\n expect(log.auxiliary?.timeout?.value).toBe(\"5000\");\n expect(log.auxiliary?.retries?.value).toBe(\"3\");\n expect(log.auxiliary?.metadata?.type).toBe(\"object\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger handles rapid concurrent logs\", () => {\n const instanceId = \"v3-rapid-logs\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n withInstanceLogContext(instanceId, () => {\n // Simulate rapid logging like during snapshot capture\n for (let i = 0; i < 50; i++) {\n v3Logger({\n category: \"perf\",\n message: `Operation ${i}`,\n level: 2,\n auxiliary: {\n iteration: { value: String(i), type: \"integer\" },\n },\n });\n }\n });\n\n // All logs should be captured\n expect(externalLogs.length).toBe(50);\n expect(externalLogs[0].message).toBe(\"Operation 0\");\n expect(externalLogs[49].message).toBe(\"Operation 49\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger can filter by log level\", () => {\n const instanceId = \"v3-with-filtering\";\n const errorLogs: LogLine[] = [];\n\n // External logger that only captures errors\n const filteringLogger = (line: LogLine) => {\n if (line.level === 0) {\n errorLogs.push(line);\n }\n };\n\n bindInstanceLogger(instanceId, filteringLogger);\n\n try {\n withInstanceLogContext(instanceId, () => {\n v3Logger({\n category: \"test\",\n message: \"Info message\",\n level: 1,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Error message\",\n level: 0,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Debug message\",\n level: 2,\n });\n\n v3Logger({\n category: \"test\",\n message: \"Another error\",\n level: 0,\n });\n });\n\n // Only error logs should be captured\n expect(errorLogs.length).toBe(2);\n expect(errorLogs[0].message).toBe(\"Error message\");\n expect(errorLogs[1].message).toBe(\"Another error\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n\n test(\"external logger persists across async operations\", async () => {\n const instanceId = \"v3-async-ops\";\n const externalLogs: LogLine[] = [];\n\n bindInstanceLogger(instanceId, (line) => externalLogs.push(line));\n\n try {\n await withInstanceLogContext(instanceId, async () => {\n v3Logger({\n category: \"async\",\n message: \"Before async operation\",\n level: 1,\n });\n\n await new Promise((resolve) => setTimeout(resolve, 50));\n\n v3Logger({\n category: \"async\",\n message: \"After async operation\",\n level: 1,\n });\n\n await Promise.all([\n Promise.resolve().then(() =>\n v3Logger({\n category: \"async\",\n message: \"Parallel operation 1\",\n level: 1,\n }),\n ),\n Promise.resolve().then(() =>\n v3Logger({\n category: \"async\",\n message: \"Parallel operation 2\",\n level: 1,\n }),\n ),\n ]);\n });\n\n // All logs should be captured despite async boundaries\n expect(externalLogs.length).toBe(4);\n expect(externalLogs[0].message).toBe(\"Before async operation\");\n expect(externalLogs[1].message).toBe(\"After async operation\");\n } finally {\n unbindInstanceLogger(instanceId);\n }\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }