@browserbasehq/orca 3.0.9-alpha-4 → 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 +37 -24
  654. package/dist/index.d.ts +0 -4363
  655. package/dist/index.js +0 -76530
@@ -0,0 +1,868 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import fs from "node:fs";
3
+ import { Writable } from "node:stream";
4
+ import { v7 as uuidv7 } from "uuid";
5
+ import path from "node:path";
6
+ import pino from "pino";
7
+ // =============================================================================
8
+ // Constants
9
+ // =============================================================================
10
+ const MAX_LINE_LENGTH = 160;
11
+ // Flow logging config dir - empty string disables logging entirely
12
+ const CONFIG_DIR = process.env.BROWSERBASE_CONFIG_DIR || "";
13
+ const NOISY_CDP_EVENTS = new Set([
14
+ "Target.targetInfoChanged",
15
+ "Runtime.executionContextCreated",
16
+ "Runtime.executionContextDestroyed",
17
+ "Runtime.executionContextsCleared",
18
+ "Page.lifecycleEvent",
19
+ "Network.dataReceived",
20
+ "Network.loadingFinished",
21
+ "Network.requestWillBeSentExtraInfo",
22
+ "Network.responseReceivedExtraInfo",
23
+ "Network.requestWillBeSent",
24
+ "Network.responseReceived",
25
+ ]);
26
+ const loggerContext = new AsyncLocalStorage();
27
+ // =============================================================================
28
+ // Formatting Utilities (used by pretty streams)
29
+ // =============================================================================
30
+ /** Calculate base64 data size in KB */
31
+ const dataToKb = (data) => ((data.length * 0.75) / 1024).toFixed(1);
32
+ /** Truncate CDP IDs: frameId:363F03EB...EF8 → frameId:363F…5EF8 */
33
+ function truncateCdpIds(value) {
34
+ return value.replace(/([iI]d:?"?)([0-9A-F]{32})(?="?[,})\s]|$)/g, (_, pre, id) => `${pre}${id.slice(0, 4)}…${id.slice(-4)}`);
35
+ }
36
+ /** Truncate line showing start...end */
37
+ function truncateLine(value, maxLen) {
38
+ const collapsed = value.replace(/\s+/g, " ");
39
+ if (collapsed.length <= maxLen)
40
+ return collapsed;
41
+ const endLen = Math.floor(maxLen * 0.3);
42
+ const startLen = maxLen - endLen - 1;
43
+ return `${collapsed.slice(0, startLen)}…${collapsed.slice(-endLen)}`;
44
+ }
45
+ function formatValue(value) {
46
+ if (typeof value === "string")
47
+ return `'${value}'`;
48
+ if (value == null || typeof value !== "object")
49
+ return String(value);
50
+ try {
51
+ return JSON.stringify(value);
52
+ }
53
+ catch {
54
+ return "[unserializable]";
55
+ }
56
+ }
57
+ function formatArgs(args) {
58
+ if (args === undefined)
59
+ return "";
60
+ return (Array.isArray(args) ? args : [args])
61
+ .filter((e) => e !== undefined)
62
+ .map(formatValue)
63
+ .filter((e) => e.length > 0)
64
+ .join(", ");
65
+ }
66
+ const shortId = (id) => id ? id.slice(-4) : "-";
67
+ function formatTag(label, id, icon) {
68
+ return id ? `[${icon} #${shortId(id)}${label ? " " + label : ""}]` : "⤑";
69
+ }
70
+ let nonce = 0;
71
+ function formatTimestamp() {
72
+ const d = new Date();
73
+ const pad = (n, w = 2) => String(n).padStart(w, "0");
74
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}${pad(nonce++ % 100)}`;
75
+ }
76
+ const SENSITIVE_KEYS = /apikey|api_key|key|secret|token|password|passwd|pwd|credential|auth/i;
77
+ function sanitizeOptions(options) {
78
+ const sanitize = (obj) => {
79
+ if (typeof obj !== "object" || obj === null)
80
+ return obj;
81
+ if (Array.isArray(obj))
82
+ return obj.map(sanitize);
83
+ const result = {};
84
+ for (const [key, value] of Object.entries(obj)) {
85
+ result[key] = SENSITIVE_KEYS.test(key) ? "******" : sanitize(value);
86
+ }
87
+ return result;
88
+ };
89
+ return sanitize({ ...options });
90
+ }
91
+ /** Remove unescaped quotes for cleaner log output */
92
+ function removeQuotes(str) {
93
+ return str
94
+ .replace(/([^\\])["']/g, "$1")
95
+ .replace(/^["']|["']$/g, "")
96
+ .trim();
97
+ }
98
+ // =============================================================================
99
+ // Pretty Formatting (converts FlowEvent to human-readable log line)
100
+ // =============================================================================
101
+ function prettifyEvent(event) {
102
+ const parts = [];
103
+ // Build context tags - always add parent span tags (formatTag returns ⤑ for null IDs)
104
+ if (event.category === "AgentTask") {
105
+ parts.push(formatTag("", event.taskId, "🅰"));
106
+ }
107
+ else if (event.category === "StagehandStep") {
108
+ parts.push(formatTag("", event.taskId, "🅰"));
109
+ parts.push(formatTag(event.stepLabel, event.stepId, "🆂"));
110
+ }
111
+ else if (event.category === "UnderstudyAction") {
112
+ parts.push(formatTag("", event.taskId, "🅰"));
113
+ parts.push(formatTag(event.stepLabel, event.stepId, "🆂"));
114
+ parts.push(formatTag(event.actionLabel, event.actionId, "🆄"));
115
+ }
116
+ else if (event.category === "CDP") {
117
+ parts.push(formatTag("", event.taskId, "🅰"));
118
+ parts.push(formatTag(event.stepLabel, event.stepId, "🆂"));
119
+ parts.push(formatTag(event.actionLabel, event.actionId, "🆄"));
120
+ parts.push(formatTag("CDP", event.targetId, "🅲"));
121
+ }
122
+ else if (event.category === "LLM") {
123
+ parts.push(formatTag("", event.taskId, "🅰"));
124
+ parts.push(formatTag(event.stepLabel, event.stepId, "🆂"));
125
+ parts.push(formatTag("LLM", event.requestId, "🧠"));
126
+ }
127
+ // Build details based on event type
128
+ let details = "";
129
+ const argsStr = event.params ? formatArgs(event.params) : "";
130
+ if (event.category === "AgentTask") {
131
+ if (event.event === "started") {
132
+ details = `▷ ${event.method}(${argsStr})`;
133
+ }
134
+ else if (event.event === "completed") {
135
+ const m = event.metrics;
136
+ const durationSec = m?.durationMs
137
+ ? (m.durationMs / 1000).toFixed(1)
138
+ : "?";
139
+ const llmStats = `${m?.llmRequests ?? 0} LLM calls ꜛ${m?.inputTokens ?? 0} ꜜ${m?.outputTokens ?? 0} tokens`;
140
+ const cdpStats = `${m?.cdpEvents ?? 0} CDP msgs`;
141
+ details = `✓ Agent.execute() DONE in ${durationSec}s | ${llmStats} | ${cdpStats}`;
142
+ }
143
+ }
144
+ else if (event.category === "StagehandStep") {
145
+ if (event.event === "started") {
146
+ details = `▷ ${event.method}(${argsStr})`;
147
+ }
148
+ else if (event.event === "completed") {
149
+ const durationSec = event.metrics?.durationMs
150
+ ? (event.metrics.durationMs / 1000).toFixed(2)
151
+ : "?";
152
+ details = `✓ ${event.stepLabel || "STEP"} completed in ${durationSec}s`;
153
+ }
154
+ }
155
+ else if (event.category === "UnderstudyAction") {
156
+ if (event.event === "started") {
157
+ details = `▷ ${event.method}(${argsStr})`;
158
+ }
159
+ else if (event.event === "completed") {
160
+ const durationSec = event.metrics?.durationMs
161
+ ? (event.metrics.durationMs / 1000).toFixed(2)
162
+ : "?";
163
+ details = `✓ ${event.actionLabel || "ACTION"} completed in ${durationSec}s`;
164
+ }
165
+ }
166
+ else if (event.category === "CDP") {
167
+ const icon = event.event === "call" ? "⏵" : "⏴";
168
+ details = `${icon} ${event.method}(${argsStr})`;
169
+ }
170
+ else if (event.category === "LLM") {
171
+ if (event.event === "request") {
172
+ const promptStr = event.prompt ? " " + String(event.prompt) : "";
173
+ details = `${event.model} ⏴${promptStr}`;
174
+ }
175
+ else if (event.event === "response") {
176
+ const hasTokens = event.inputTokens !== undefined || event.outputTokens !== undefined;
177
+ const tokenStr = hasTokens
178
+ ? ` ꜛ${event.inputTokens ?? 0} ꜜ${event.outputTokens ?? 0} |`
179
+ : "";
180
+ const outputStr = event.output ? " " + String(event.output) : "";
181
+ details = `${event.model} ↳${tokenStr}${outputStr}`;
182
+ }
183
+ }
184
+ if (!details)
185
+ return null;
186
+ // Assemble line and apply final truncation
187
+ const fullLine = `${formatTimestamp()} ${parts.join(" ")} ${details}`;
188
+ const cleaned = removeQuotes(fullLine);
189
+ const processed = event.category === "CDP" ? truncateCdpIds(cleaned) : cleaned;
190
+ return truncateLine(processed, MAX_LINE_LENGTH);
191
+ }
192
+ /** Check if a CDP event should be filtered from pretty output */
193
+ function shouldFilterCdpEvent(event) {
194
+ if (event.category !== "CDP")
195
+ return false;
196
+ if (event.method?.endsWith(".enable") || event.method === "enable")
197
+ return true;
198
+ return event.event === "message" && NOISY_CDP_EVENTS.has(event.method);
199
+ }
200
+ // =============================================================================
201
+ // Stream Creation
202
+ // =============================================================================
203
+ const isWritable = (s) => !!(s && !s.destroyed && s.writable);
204
+ function createJsonlStream(ctx) {
205
+ return new Writable({
206
+ objectMode: true,
207
+ write(chunk, _, cb) {
208
+ if (ctx.initialized && isWritable(ctx.fileStreams.jsonl)) {
209
+ ctx.fileStreams.jsonl.write(chunk, cb);
210
+ }
211
+ else
212
+ cb();
213
+ },
214
+ });
215
+ }
216
+ function createPrettyStream(ctx, category, streamKey) {
217
+ return new Writable({
218
+ objectMode: true,
219
+ write(chunk, _, cb) {
220
+ const stream = ctx.fileStreams[streamKey];
221
+ if (!ctx.initialized || !isWritable(stream))
222
+ return cb();
223
+ try {
224
+ const event = JSON.parse(chunk);
225
+ if (event.category !== category || shouldFilterCdpEvent(event))
226
+ return cb();
227
+ const line = prettifyEvent(event);
228
+ if (line)
229
+ stream.write(line + "\n", cb);
230
+ else
231
+ cb();
232
+ }
233
+ catch {
234
+ cb();
235
+ }
236
+ },
237
+ });
238
+ }
239
+ // =============================================================================
240
+ // Public Helpers (used by external callers)
241
+ // =============================================================================
242
+ /**
243
+ * Get the config directory. Returns empty string if logging is disabled.
244
+ */
245
+ export function getConfigDir() {
246
+ return CONFIG_DIR ? path.resolve(CONFIG_DIR) : "";
247
+ }
248
+ /** Extract text and image info from a content array (handles nested tool_result) */
249
+ function extractFromContent(content, result) {
250
+ for (const part of content) {
251
+ const p = part;
252
+ // Text
253
+ if (!result.text && p.text) {
254
+ result.text = p.type === "text" || !p.type ? p.text : undefined;
255
+ }
256
+ // Images - various formats
257
+ if (p.type === "image" || p.type === "image_url") {
258
+ const url = p.image_url?.url;
259
+ if (url?.startsWith("data:"))
260
+ result.extras.push(`${dataToKb(url)}kb image`);
261
+ else if (p.source?.data)
262
+ result.extras.push(`${dataToKb(p.source.data)}kb image`);
263
+ else
264
+ result.extras.push("image");
265
+ }
266
+ else if (p.source?.data) {
267
+ result.extras.push(`${dataToKb(p.source.data)}kb image`);
268
+ }
269
+ else if (p.inlineData?.data) {
270
+ result.extras.push(`${dataToKb(p.inlineData.data)}kb image`);
271
+ }
272
+ // Recurse into tool_result content
273
+ if (p.type === "tool_result" && Array.isArray(p.content)) {
274
+ extractFromContent(p.content, result);
275
+ }
276
+ }
277
+ }
278
+ /** Build final preview string with extras */
279
+ function buildPreview(text, extras, maxLen) {
280
+ if (!text && extras.length === 0)
281
+ return undefined;
282
+ let result = text || "";
283
+ if (maxLen && result.length > maxLen)
284
+ result = result.slice(0, maxLen) + "...";
285
+ if (extras.length > 0) {
286
+ const extrasStr = extras.map((e) => `+{${e}}`).join(" ");
287
+ result = result ? `${result} ${extrasStr}` : extrasStr;
288
+ }
289
+ return result || undefined;
290
+ }
291
+ /**
292
+ * Format a prompt preview from LLM messages for logging.
293
+ * Returns format like: "some text... +{5.8kb image} +{schema} +{12 tools}"
294
+ */
295
+ export function formatLlmPromptPreview(messages, options) {
296
+ try {
297
+ const lastUserMsg = messages.filter((m) => m.role === "user").pop();
298
+ if (!lastUserMsg)
299
+ return undefined;
300
+ const result = {
301
+ text: undefined,
302
+ extras: [],
303
+ };
304
+ if (typeof lastUserMsg.content === "string") {
305
+ result.text = lastUserMsg.content;
306
+ }
307
+ else if (Array.isArray(lastUserMsg.content)) {
308
+ extractFromContent(lastUserMsg.content, result);
309
+ }
310
+ else {
311
+ return undefined;
312
+ }
313
+ // Clean instruction prefix
314
+ if (result.text) {
315
+ result.text = result.text.replace(/^[Ii]nstruction: /, "");
316
+ }
317
+ if (options?.hasSchema)
318
+ result.extras.push("schema");
319
+ if (options?.toolCount)
320
+ result.extras.push(`${options.toolCount} tools`);
321
+ return buildPreview(result.text, result.extras);
322
+ }
323
+ catch {
324
+ return undefined;
325
+ }
326
+ }
327
+ /**
328
+ * Extract a text preview from CUA-style messages.
329
+ * Accepts various message formats (Anthropic, OpenAI, Google).
330
+ */
331
+ export function formatCuaPromptPreview(messages, maxLen = 100) {
332
+ try {
333
+ const lastMsg = messages
334
+ .filter((m) => {
335
+ const msg = m;
336
+ return msg.role === "user" || msg.type === "tool_result";
337
+ })
338
+ .pop();
339
+ if (!lastMsg)
340
+ return undefined;
341
+ const result = {
342
+ text: undefined,
343
+ extras: [],
344
+ };
345
+ if (typeof lastMsg.content === "string") {
346
+ result.text = lastMsg.content;
347
+ }
348
+ else if (typeof lastMsg.text === "string") {
349
+ result.text = lastMsg.text;
350
+ }
351
+ else if (Array.isArray(lastMsg.parts)) {
352
+ extractFromContent(lastMsg.parts, result);
353
+ }
354
+ else if (Array.isArray(lastMsg.content)) {
355
+ extractFromContent(lastMsg.content, result);
356
+ }
357
+ return buildPreview(result.text, result.extras, maxLen);
358
+ }
359
+ catch {
360
+ return undefined;
361
+ }
362
+ }
363
+ /** Format CUA response output for logging */
364
+ export function formatCuaResponsePreview(output, maxLen = 100) {
365
+ try {
366
+ // Handle Google format or array
367
+ const items = output
368
+ ?.candidates?.[0]?.content?.parts ??
369
+ (Array.isArray(output) ? output : []);
370
+ const preview = items
371
+ .map((item) => {
372
+ const i = item;
373
+ if (i.text)
374
+ return i.text.slice(0, 50);
375
+ if (i.functionCall?.name)
376
+ return `fn:${i.functionCall.name}`;
377
+ if (i.type === "tool_use" && i.name)
378
+ return `tool_use:${i.name}`;
379
+ return i.type ? `[${i.type}]` : "[item]";
380
+ })
381
+ .join(" ");
382
+ return preview.slice(0, maxLen);
383
+ }
384
+ catch {
385
+ return "[error]";
386
+ }
387
+ }
388
+ // =============================================================================
389
+ // SessionFileLogger - Main API
390
+ // =============================================================================
391
+ export class SessionFileLogger {
392
+ /**
393
+ * Initialize a new logging context. Call this at the start of a session.
394
+ * If BROWSERBASE_CONFIG_DIR is not set, logging is disabled.
395
+ */
396
+ static init(sessionId, v3Options) {
397
+ const configDir = getConfigDir();
398
+ if (!configDir)
399
+ return; // Logging disabled
400
+ const sessionDir = path.join(configDir, "sessions", sessionId);
401
+ // Create context with placeholder logger (will be replaced after streams init)
402
+ const ctx = {
403
+ logger: pino({ level: "silent" }), // Placeholder, replaced below
404
+ metrics: {
405
+ llmRequests: 0,
406
+ llmInputTokens: 0,
407
+ llmOutputTokens: 0,
408
+ cdpEvents: 0,
409
+ },
410
+ sessionId,
411
+ sessionDir,
412
+ configDir,
413
+ initPromise: Promise.resolve(),
414
+ initialized: false,
415
+ // Span context - mutable, injected into every log via mixin
416
+ taskId: null,
417
+ stepId: null,
418
+ stepLabel: null,
419
+ actionId: null,
420
+ actionLabel: null,
421
+ fileStreams: {
422
+ agent: null,
423
+ stagehand: null,
424
+ understudy: null,
425
+ cdp: null,
426
+ llm: null,
427
+ jsonl: null,
428
+ },
429
+ };
430
+ // Store init promise for awaiting in log methods
431
+ ctx.initPromise = SessionFileLogger.initAsync(ctx, v3Options);
432
+ loggerContext.enterWith(ctx);
433
+ }
434
+ static async initAsync(ctx, v3Options) {
435
+ try {
436
+ await fs.promises.mkdir(ctx.sessionDir, { recursive: true });
437
+ if (v3Options) {
438
+ const sanitizedOptions = sanitizeOptions(v3Options);
439
+ const sessionJsonPath = path.join(ctx.sessionDir, "session.json");
440
+ await fs.promises.writeFile(sessionJsonPath, JSON.stringify(sanitizedOptions, null, 2), "utf-8");
441
+ }
442
+ // Create symlink to latest session
443
+ const latestLink = path.join(ctx.configDir, "sessions", "latest");
444
+ try {
445
+ try {
446
+ await fs.promises.unlink(latestLink);
447
+ }
448
+ catch {
449
+ // Ignore if doesn't exist
450
+ }
451
+ await fs.promises.symlink(ctx.sessionId, latestLink, "dir");
452
+ }
453
+ catch {
454
+ // Symlink creation can fail on Windows or due to permissions
455
+ }
456
+ // Create file streams
457
+ const dir = ctx.sessionDir;
458
+ ctx.fileStreams.agent = fs.createWriteStream(path.join(dir, "agent_events.log"), { flags: "a" });
459
+ ctx.fileStreams.stagehand = fs.createWriteStream(path.join(dir, "stagehand_events.log"), { flags: "a" });
460
+ ctx.fileStreams.understudy = fs.createWriteStream(path.join(dir, "understudy_events.log"), { flags: "a" });
461
+ ctx.fileStreams.cdp = fs.createWriteStream(path.join(dir, "cdp_events.log"), { flags: "a" });
462
+ ctx.fileStreams.llm = fs.createWriteStream(path.join(dir, "llm_events.log"), { flags: "a" });
463
+ ctx.fileStreams.jsonl = fs.createWriteStream(path.join(dir, "session_events.jsonl"), { flags: "a" });
464
+ ctx.initialized = true;
465
+ // Create pino multistream: JSONL + pretty streams per category
466
+ const streams = [
467
+ { stream: createJsonlStream(ctx) },
468
+ { stream: createPrettyStream(ctx, "AgentTask", "agent") },
469
+ { stream: createPrettyStream(ctx, "StagehandStep", "stagehand") },
470
+ { stream: createPrettyStream(ctx, "UnderstudyAction", "understudy") },
471
+ { stream: createPrettyStream(ctx, "CDP", "cdp") },
472
+ { stream: createPrettyStream(ctx, "LLM", "llm") },
473
+ ];
474
+ // Create logger with mixin that injects span context from AsyncLocalStorage
475
+ ctx.logger = pino({
476
+ level: "info",
477
+ // Mixin adds eventId and current span context to every log
478
+ mixin() {
479
+ const store = loggerContext.getStore();
480
+ return {
481
+ eventId: uuidv7(),
482
+ sessionId: store?.sessionId,
483
+ taskId: store?.taskId,
484
+ stepId: store?.stepId,
485
+ stepLabel: store?.stepLabel,
486
+ actionId: store?.actionId,
487
+ actionLabel: store?.actionLabel,
488
+ };
489
+ },
490
+ }, pino.multistream(streams));
491
+ }
492
+ catch {
493
+ // Fail silently
494
+ }
495
+ }
496
+ static async close() {
497
+ const ctx = loggerContext.getStore();
498
+ if (!ctx)
499
+ return;
500
+ await ctx.initPromise;
501
+ SessionFileLogger.logAgentTaskCompleted();
502
+ await Promise.all(Object.values(ctx.fileStreams)
503
+ .filter(Boolean)
504
+ .map((s) => new Promise((r) => s.end(r)))).catch(() => { });
505
+ }
506
+ static get sessionId() {
507
+ return loggerContext.getStore()?.sessionId ?? null;
508
+ }
509
+ static get sessionDir() {
510
+ return loggerContext.getStore()?.sessionDir ?? null;
511
+ }
512
+ /**
513
+ * Get the current logger context object.
514
+ */
515
+ static getContext() {
516
+ return loggerContext.getStore() ?? null;
517
+ }
518
+ // ===========================================================================
519
+ // Agent Task Events
520
+ // ===========================================================================
521
+ /**
522
+ * Start a new task and log it.
523
+ */
524
+ static logAgentTaskStarted({ invocation, args, }) {
525
+ const ctx = loggerContext.getStore();
526
+ if (!ctx)
527
+ return;
528
+ // Set up task context
529
+ ctx.taskId = uuidv7();
530
+ ctx.stepId = null;
531
+ ctx.stepLabel = null;
532
+ ctx.actionId = null;
533
+ ctx.actionLabel = null;
534
+ // Reset metrics for new task
535
+ ctx.metrics = {
536
+ taskStartTime: Date.now(),
537
+ llmRequests: 0,
538
+ llmInputTokens: 0,
539
+ llmOutputTokens: 0,
540
+ cdpEvents: 0,
541
+ };
542
+ ctx.logger.info({
543
+ category: "AgentTask",
544
+ event: "started",
545
+ method: invocation,
546
+ params: args,
547
+ });
548
+ }
549
+ /**
550
+ * Log task completion with metrics summary.
551
+ */
552
+ static logAgentTaskCompleted(options) {
553
+ const ctx = loggerContext.getStore();
554
+ if (!ctx || !ctx.metrics.taskStartTime)
555
+ return;
556
+ const durationMs = Date.now() - ctx.metrics.taskStartTime;
557
+ const event = {
558
+ category: "AgentTask",
559
+ event: "completed",
560
+ method: "Agent.execute",
561
+ metrics: {
562
+ durationMs,
563
+ llmRequests: ctx.metrics.llmRequests,
564
+ inputTokens: ctx.metrics.llmInputTokens,
565
+ outputTokens: ctx.metrics.llmOutputTokens,
566
+ cdpEvents: ctx.metrics.cdpEvents,
567
+ },
568
+ };
569
+ if (options?.cacheHit) {
570
+ event.msg = "CACHE HIT, NO LLM NEEDED";
571
+ }
572
+ ctx.logger.info(event);
573
+ // Clear task context
574
+ ctx.taskId = null;
575
+ ctx.stepId = null;
576
+ ctx.stepLabel = null;
577
+ ctx.actionId = null;
578
+ ctx.actionLabel = null;
579
+ ctx.metrics.taskStartTime = undefined;
580
+ }
581
+ // ===========================================================================
582
+ // Stagehand Step Events
583
+ // ===========================================================================
584
+ static logStagehandStepEvent({ invocation, args, label, }) {
585
+ const ctx = loggerContext.getStore();
586
+ if (!ctx)
587
+ return uuidv7();
588
+ // Set up step context
589
+ ctx.stepId = uuidv7();
590
+ ctx.stepLabel = label.toUpperCase();
591
+ ctx.actionId = null;
592
+ ctx.actionLabel = null;
593
+ ctx.metrics.stepStartTime = Date.now();
594
+ ctx.logger.info({
595
+ category: "StagehandStep",
596
+ event: "started",
597
+ method: invocation,
598
+ params: args,
599
+ });
600
+ return ctx.stepId;
601
+ }
602
+ static logStagehandStepCompleted() {
603
+ const ctx = loggerContext.getStore();
604
+ if (!ctx || !ctx.stepId)
605
+ return;
606
+ const durationMs = ctx.metrics.stepStartTime
607
+ ? Date.now() - ctx.metrics.stepStartTime
608
+ : 0;
609
+ ctx.logger.info({
610
+ category: "StagehandStep",
611
+ event: "completed",
612
+ metrics: { durationMs },
613
+ });
614
+ // Clear step context
615
+ ctx.stepId = null;
616
+ ctx.stepLabel = null;
617
+ ctx.actionId = null;
618
+ ctx.actionLabel = null;
619
+ ctx.metrics.stepStartTime = undefined;
620
+ }
621
+ // ===========================================================================
622
+ // Understudy Action Events
623
+ // ===========================================================================
624
+ static logUnderstudyActionEvent({ actionType, target, args, }) {
625
+ const ctx = loggerContext.getStore();
626
+ if (!ctx)
627
+ return uuidv7();
628
+ // Set up action context
629
+ ctx.actionId = uuidv7();
630
+ ctx.actionLabel = actionType
631
+ .toUpperCase()
632
+ .replace("UNDERSTUDY.", "")
633
+ .replace("PAGE.", "");
634
+ ctx.metrics.actionStartTime = Date.now();
635
+ const params = {};
636
+ if (target)
637
+ params.target = target;
638
+ if (args)
639
+ params.args = args;
640
+ ctx.logger.info({
641
+ category: "UnderstudyAction",
642
+ event: "started",
643
+ method: actionType,
644
+ params: Object.keys(params).length > 0 ? params : undefined,
645
+ });
646
+ return ctx.actionId;
647
+ }
648
+ static logUnderstudyActionCompleted() {
649
+ const ctx = loggerContext.getStore();
650
+ if (!ctx || !ctx.actionId)
651
+ return;
652
+ const durationMs = ctx.metrics.actionStartTime
653
+ ? Date.now() - ctx.metrics.actionStartTime
654
+ : 0;
655
+ ctx.logger.info({
656
+ category: "UnderstudyAction",
657
+ event: "completed",
658
+ metrics: { durationMs },
659
+ });
660
+ // Clear action context
661
+ ctx.actionId = null;
662
+ ctx.actionLabel = null;
663
+ ctx.metrics.actionStartTime = undefined;
664
+ }
665
+ // ===========================================================================
666
+ // CDP Events
667
+ // ===========================================================================
668
+ static logCdpEvent(eventType, { method, params, targetId, }, explicitCtx) {
669
+ const ctx = explicitCtx ?? loggerContext.getStore();
670
+ if (!ctx)
671
+ return;
672
+ if (eventType === "call")
673
+ ctx.metrics.cdpEvents++;
674
+ ctx.logger.info({
675
+ category: "CDP",
676
+ event: eventType,
677
+ method,
678
+ params,
679
+ targetId,
680
+ });
681
+ }
682
+ static logCdpCallEvent(data, ctx) {
683
+ SessionFileLogger.logCdpEvent("call", data, ctx);
684
+ }
685
+ static logCdpMessageEvent(data, ctx) {
686
+ SessionFileLogger.logCdpEvent("message", data, ctx);
687
+ }
688
+ // ===========================================================================
689
+ // LLM Events
690
+ // ===========================================================================
691
+ static logLlmRequest({ requestId, model, prompt, }, explicitCtx) {
692
+ const ctx = explicitCtx ?? loggerContext.getStore();
693
+ if (!ctx)
694
+ return;
695
+ // Track LLM requests for task metrics
696
+ ctx.metrics.llmRequests++;
697
+ ctx.logger.info({
698
+ category: "LLM",
699
+ event: "request",
700
+ requestId,
701
+ method: "LLM.request",
702
+ model,
703
+ prompt,
704
+ });
705
+ }
706
+ static logLlmResponse({ requestId, model, output, inputTokens, outputTokens, }, explicitCtx) {
707
+ const ctx = explicitCtx ?? loggerContext.getStore();
708
+ if (!ctx)
709
+ return;
710
+ // Track tokens for task metrics
711
+ ctx.metrics.llmInputTokens += inputTokens ?? 0;
712
+ ctx.metrics.llmOutputTokens += outputTokens ?? 0;
713
+ ctx.logger.info({
714
+ category: "LLM",
715
+ event: "response",
716
+ requestId,
717
+ method: "LLM.response",
718
+ model,
719
+ output,
720
+ inputTokens,
721
+ outputTokens,
722
+ });
723
+ }
724
+ // ===========================================================================
725
+ // LLM Logging Middleware
726
+ // ===========================================================================
727
+ /**
728
+ * Create middleware for wrapping language models with LLM call logging.
729
+ * Returns a no-op middleware when logging is disabled.
730
+ */
731
+ static createLlmLoggingMiddleware(modelId) {
732
+ // No-op middleware when logging is disabled
733
+ if (!CONFIG_DIR) {
734
+ return {
735
+ wrapGenerate: async ({ doGenerate }) => doGenerate(),
736
+ };
737
+ }
738
+ return {
739
+ wrapGenerate: async ({ doGenerate, params }) => {
740
+ const ctx = SessionFileLogger.getContext();
741
+ // Skip logging overhead if no context (shouldn't happen but be safe)
742
+ if (!ctx) {
743
+ return doGenerate();
744
+ }
745
+ const llmRequestId = uuidv7();
746
+ const toolCount = Array.isArray(params.tools) ? params.tools.length : 0;
747
+ // Extract prompt preview from last non-system message
748
+ const messages = (params.prompt ?? []);
749
+ const lastMsg = messages.filter((m) => m.role !== "system").pop();
750
+ const extracted = {
751
+ text: undefined,
752
+ extras: [],
753
+ };
754
+ let rolePrefix = lastMsg?.role ?? "?";
755
+ if (lastMsg) {
756
+ if (typeof lastMsg.content === "string") {
757
+ extracted.text = lastMsg.content;
758
+ }
759
+ else if (Array.isArray(lastMsg.content)) {
760
+ // Check for tool-result first
761
+ const toolResult = lastMsg.content.find((p) => p.type === "tool-result");
762
+ if (toolResult) {
763
+ rolePrefix = `tool result: ${toolResult.toolName}()`;
764
+ const out = toolResult.output;
765
+ if (out?.type === "json" && out.value) {
766
+ extracted.text = JSON.stringify(out.value).slice(0, 150);
767
+ }
768
+ else if (Array.isArray(out?.value)) {
769
+ extractFromContent(out.value, extracted);
770
+ }
771
+ }
772
+ else {
773
+ extractFromContent(lastMsg.content, extracted);
774
+ }
775
+ }
776
+ }
777
+ const promptText = extracted.text || "(no text)";
778
+ const promptPreview = `${rolePrefix}: ${promptText} +{${toolCount} tools}`;
779
+ SessionFileLogger.logLlmRequest({
780
+ requestId: llmRequestId,
781
+ model: modelId,
782
+ operation: "generateText",
783
+ prompt: promptPreview,
784
+ }, ctx);
785
+ const result = await doGenerate();
786
+ // Extract output preview
787
+ const res = result;
788
+ let outputPreview = res.text || "";
789
+ if (!outputPreview && res.content) {
790
+ if (typeof res.content === "string") {
791
+ outputPreview = res.content;
792
+ }
793
+ else if (Array.isArray(res.content)) {
794
+ outputPreview = res.content
795
+ .map((c) => c.text ||
796
+ (c.type === "tool-call"
797
+ ? `tool call: ${c.toolName}()`
798
+ : `[${c.type}]`))
799
+ .join(" ");
800
+ }
801
+ }
802
+ if (!outputPreview && res.toolCalls?.length) {
803
+ outputPreview = `[${res.toolCalls.length} tool calls]`;
804
+ }
805
+ SessionFileLogger.logLlmResponse({
806
+ requestId: llmRequestId,
807
+ model: modelId,
808
+ operation: "generateText",
809
+ output: outputPreview || "[empty]",
810
+ inputTokens: result.usage?.inputTokens,
811
+ outputTokens: result.usage?.outputTokens,
812
+ }, ctx);
813
+ return result;
814
+ },
815
+ };
816
+ }
817
+ }
818
+ /**
819
+ * Method decorator for logging understudy actions with automatic start/complete.
820
+ * Logs all arguments automatically. No-op when CONFIG_DIR is empty.
821
+ */
822
+ export function logAction(actionType) {
823
+ return function (originalMethod) {
824
+ // No-op when logging is disabled
825
+ if (!CONFIG_DIR) {
826
+ return originalMethod;
827
+ }
828
+ return async function (...args) {
829
+ SessionFileLogger.logUnderstudyActionEvent({
830
+ actionType,
831
+ args: args.length > 0 ? args : undefined,
832
+ });
833
+ try {
834
+ return await originalMethod.apply(this, args);
835
+ }
836
+ finally {
837
+ SessionFileLogger.logUnderstudyActionCompleted();
838
+ }
839
+ };
840
+ };
841
+ }
842
+ /**
843
+ * Method decorator for logging Stagehand step events (act, extract, observe).
844
+ * Only adds logging - does NOT wrap with withInstanceLogContext (caller handles that).
845
+ * No-op when CONFIG_DIR is empty.
846
+ */
847
+ export function logStagehandStep(invocation, label) {
848
+ return function (originalMethod) {
849
+ // No-op when logging is disabled
850
+ if (!CONFIG_DIR) {
851
+ return originalMethod;
852
+ }
853
+ return async function (...args) {
854
+ SessionFileLogger.logStagehandStepEvent({
855
+ invocation,
856
+ args: args.length > 0 ? args : undefined,
857
+ label,
858
+ });
859
+ try {
860
+ return await originalMethod.apply(this, args);
861
+ }
862
+ finally {
863
+ SessionFileLogger.logStagehandStepCompleted();
864
+ }
865
+ };
866
+ };
867
+ }
868
+ //# sourceMappingURL=flowLogger.js.map