@withbuddi/buddi 0.1.0-pre.51 → 0.1.0-pre.52

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 (362) hide show
  1. package/extension/background.js +1604 -847
  2. package/extension/manifest.json +3 -3
  3. package/extension/popup.css +91 -3
  4. package/extension/popup.html +49 -32
  5. package/extension/popup.js +215 -123
  6. package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
  7. package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
  8. package/node_modules/@buddi/core/dist/plugin/index.d.ts +1 -1
  9. package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
  10. package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
  11. package/node_modules/@buddi/core/dist/questions/store.d.ts +3 -1
  12. package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
  13. package/node_modules/@buddi/core/dist/questions/store.js +3 -3
  14. package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
  15. package/node_modules/@buddi/core/dist/questions/types.d.ts +46 -1
  16. package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
  17. package/node_modules/@buddi/core/dist/questions/types.js +2 -1
  18. package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
  19. package/node_modules/@buddi/core/dist/secrets/approval.d.ts +54 -0
  20. package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
  21. package/node_modules/@buddi/core/dist/secrets/approval.js +58 -1
  22. package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
  23. package/node_modules/@buddi/core/dist/secrets/settings.d.ts +178 -0
  24. package/node_modules/@buddi/core/dist/secrets/settings.d.ts.map +1 -1
  25. package/node_modules/@buddi/core/dist/secrets/settings.js +63 -6
  26. package/node_modules/@buddi/core/dist/secrets/settings.js.map +1 -1
  27. package/node_modules/@buddi/core/dist/secrets/store.d.ts +31 -0
  28. package/node_modules/@buddi/core/dist/secrets/store.d.ts.map +1 -1
  29. package/node_modules/@buddi/core/dist/secrets/store.js +75 -0
  30. package/node_modules/@buddi/core/dist/secrets/store.js.map +1 -1
  31. package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
  32. package/node_modules/@buddi/core/dist/secrets/use.js +68 -3
  33. package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
  34. package/node_modules/@buddi/core/dist/tools.d.ts +22 -0
  35. package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
  36. package/node_modules/@buddi/core/dist/tools.js.map +1 -1
  37. package/node_modules/@buddi/core/migrations/080_secret_requests.sql +14 -0
  38. package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
  39. package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
  40. package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
  41. package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
  42. package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
  43. package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
  44. package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
  45. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  46. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  47. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +34 -7
  48. package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -1
  49. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  50. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js +8 -2
  51. package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js.map +1 -1
  52. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts +3 -1
  53. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  54. package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
  55. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts +173 -0
  56. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  57. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js +332 -0
  58. package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js.map +1 -0
  59. package/node_modules/@buddi/gateway/dist/system-context.js +1 -1
  60. package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
  61. package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
  62. package/node_modules/@buddi/gateway/dist/telegram/main.js +14 -3
  63. package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
  64. package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
  65. package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
  66. package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
  67. package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
  68. package/node_modules/@buddi/gateway/dist/web/api-routes.js +9 -1
  69. package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
  70. package/node_modules/@buddi/gateway/dist/web/approval-ask.js +2 -2
  71. package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
  72. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts +13 -0
  73. package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts.map +1 -0
  74. package/node_modules/@buddi/gateway/dist/web/browser-capture.js +24 -0
  75. package/node_modules/@buddi/gateway/dist/web/browser-capture.js.map +1 -0
  76. package/node_modules/@buddi/gateway/dist/web/chat.d.ts +26 -0
  77. package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
  78. package/node_modules/@buddi/gateway/dist/web/chat.js +87 -2
  79. package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
  80. package/node_modules/@buddi/gateway/dist/web/extension.d.ts +30 -0
  81. package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
  82. package/node_modules/@buddi/gateway/dist/web/extension.js +86 -6
  83. package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
  84. package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
  85. package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
  86. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts +26 -2
  87. package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts.map +1 -1
  88. package/node_modules/@buddi/gateway/dist/web/remote-hand.js +89 -28
  89. package/node_modules/@buddi/gateway/dist/web/remote-hand.js.map +1 -1
  90. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts +54 -0
  91. package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts.map +1 -0
  92. package/node_modules/@buddi/gateway/dist/web/secret-request.js +264 -0
  93. package/node_modules/@buddi/gateway/dist/web/secret-request.js.map +1 -0
  94. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -0
  95. package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
  96. package/node_modules/@buddi/gateway/dist/web/secrets.js +1 -1
  97. package/node_modules/@buddi/gateway/dist/web/secrets.js.map +1 -1
  98. package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
  99. package/node_modules/@buddi/gateway/dist/web/server.js +72 -3
  100. package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
  101. package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
  102. package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
  103. package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
  104. package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
  105. package/node_modules/@buddi/runtime/dist/anthropic.js +19 -1
  106. package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
  107. package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
  108. package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
  109. package/node_modules/@buddi/tool-browser/dist/controller.d.ts +16 -1
  110. package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
  111. package/node_modules/@buddi/tool-browser/dist/controller.js +59 -5
  112. package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
  113. package/node_modules/@buddi/tool-browser/dist/driver.d.ts +12 -0
  114. package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
  115. package/node_modules/@buddi/tool-browser/dist/driver.js +41 -2
  116. package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
  117. package/node_modules/@buddi/tool-browser/dist/extension.d.ts +49 -9
  118. package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
  119. package/node_modules/@buddi/tool-browser/dist/extension.js +145 -21
  120. package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
  121. package/node_modules/@buddi/tool-browser/dist/index.d.ts +10 -6
  122. package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
  123. package/node_modules/@buddi/tool-browser/dist/index.js +22 -8
  124. package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
  125. package/node_modules/@buddi/tool-browser/dist/routes.d.ts +10 -1
  126. package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
  127. package/node_modules/@buddi/tool-browser/dist/routes.js +24 -0
  128. package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
  129. package/node_modules/@buddi/tool-browser/dist/service.d.ts +48 -1
  130. package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
  131. package/node_modules/@buddi/tool-browser/dist/service.js +114 -11
  132. package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
  133. package/node_modules/@buddi/tool-browser/dist/types.d.ts +54 -3
  134. package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
  135. package/node_modules/@buddi/tool-browser/dist/types.js +17 -1
  136. package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
  137. package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
  138. package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
  139. package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
  140. package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
  141. package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
  142. package/node_modules/imapflow/CHANGELOG.md +15 -0
  143. package/node_modules/imapflow/dist/cjs/commands/select.d.ts +3 -14
  144. package/node_modules/imapflow/dist/cjs/commands/select.js +1 -4
  145. package/node_modules/imapflow/dist/cjs/imap-flow.js +30 -6
  146. package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
  147. package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
  148. package/node_modules/imapflow/dist/cjs/tools.d.ts +10 -0
  149. package/node_modules/imapflow/dist/cjs/tools.js +29 -0
  150. package/node_modules/imapflow/dist/cjs/types.d.ts +9 -1
  151. package/node_modules/imapflow/dist/esm/commands/select.d.ts +3 -14
  152. package/node_modules/imapflow/dist/esm/commands/select.js +1 -4
  153. package/node_modules/imapflow/dist/esm/imap-flow.js +31 -7
  154. package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
  155. package/node_modules/imapflow/dist/esm/package-info.js +1 -1
  156. package/node_modules/imapflow/dist/esm/tools.d.ts +10 -0
  157. package/node_modules/imapflow/dist/esm/tools.js +28 -0
  158. package/node_modules/imapflow/dist/esm/types.d.ts +9 -1
  159. package/node_modules/imapflow/package.json +2 -2
  160. package/node_modules/playwright/README.md +4 -4
  161. package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +1 -1
  162. package/node_modules/playwright/lib/cli/testActions.js +8 -5
  163. package/node_modules/playwright/lib/common/index.js +37 -23
  164. package/node_modules/playwright/lib/common/index.js.txt +8 -9
  165. package/node_modules/playwright/lib/index.js +16 -4
  166. package/node_modules/playwright/lib/matchers/expect.js +13 -7
  167. package/node_modules/playwright/lib/matchers/expect.js.txt +4 -4
  168. package/node_modules/playwright/lib/program.js +2 -1
  169. package/node_modules/playwright/lib/runner/index.js +438 -244
  170. package/node_modules/playwright/lib/runner/index.js.txt +12 -11
  171. package/node_modules/playwright/lib/transform/babelBundle.js +2612 -2396
  172. package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +15 -15
  173. package/node_modules/playwright/lib/transform/babelBundle.js.txt +14 -11
  174. package/node_modules/playwright/lib/transform/esmLoader.js +17 -5
  175. package/node_modules/playwright/lib/transform/esmLoader.js.txt +3 -3
  176. package/node_modules/playwright/lib/worker/workerProcessEntry.js +17 -18
  177. package/node_modules/playwright/package.json +2 -7
  178. package/node_modules/playwright/types/test.d.ts +156 -39
  179. package/node_modules/playwright-core/browsers.json +9 -9
  180. package/node_modules/playwright-core/cli.js +1 -0
  181. package/node_modules/playwright-core/lib/bootstrap.js +61 -0
  182. package/node_modules/playwright-core/lib/coreBundle.js +6393 -4170
  183. package/node_modules/playwright-core/lib/server/electron/loader.js +4 -0
  184. package/node_modules/playwright-core/lib/tools/cli-client/cli.js +2 -1
  185. package/node_modules/playwright-core/lib/tools/cli-client/help.json +99 -12
  186. package/node_modules/playwright-core/lib/tools/cli-client/output.js +17 -16
  187. package/node_modules/playwright-core/lib/tools/cli-client/program.js +8 -4
  188. package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -0
  189. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +71 -3
  190. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  191. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +4 -0
  192. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +2 -0
  193. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +1 -1
  194. package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +76 -3
  195. package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +1 -1
  196. package/node_modules/playwright-core/lib/utilsBundle.js +948 -227
  197. package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +6 -6
  198. package/node_modules/playwright-core/lib/vite/htmlReport/report.js +1 -1
  199. package/node_modules/playwright-core/lib/vite/recorder/assets/{codeMirrorModule-CVQWJZAA.js → codeMirrorModule-DK72OMRi.js} +1 -1
  200. package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
  201. package/node_modules/playwright-core/lib/vite/recorder/index.html +1 -1
  202. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-BbkfBe3n.js → codeMirrorModule-BEB2e8M3.js} +1 -1
  203. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
  204. package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-DywYcAf8.js → xtermModule-B794rD2Z.js} +1 -1
  205. package/node_modules/playwright-core/lib/vite/traceViewer/{defaultSettingsView.Bqk9acqE.css → defaultSettingsView.C8BeHuxd.css} +1 -1
  206. package/node_modules/playwright-core/lib/vite/traceViewer/{index.B4cLoZK3.js → index.7-c5LSTW.js} +1 -1
  207. package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
  208. package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
  209. package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.CU5KtEkS.js → uiMode.CYwC_gH1.js} +4 -4
  210. package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +3 -3
  211. package/node_modules/playwright-core/package.json +1 -1
  212. package/node_modules/playwright-core/types/protocol.d.ts +468 -337
  213. package/node_modules/playwright-core/types/types.d.ts +572 -37
  214. package/package.json +2 -2
  215. package/packages/cli/dist/.tsbuildinfo +1 -1
  216. package/packages/core/dist/.tsbuildinfo +1 -1
  217. package/packages/core/dist/plugin/index.d.ts +1 -1
  218. package/packages/core/dist/plugin/index.d.ts.map +1 -1
  219. package/packages/core/dist/plugin/index.js.map +1 -1
  220. package/packages/core/dist/questions/store.d.ts +3 -1
  221. package/packages/core/dist/questions/store.d.ts.map +1 -1
  222. package/packages/core/dist/questions/store.js +3 -3
  223. package/packages/core/dist/questions/store.js.map +1 -1
  224. package/packages/core/dist/questions/types.d.ts +46 -1
  225. package/packages/core/dist/questions/types.d.ts.map +1 -1
  226. package/packages/core/dist/questions/types.js +2 -1
  227. package/packages/core/dist/questions/types.js.map +1 -1
  228. package/packages/core/dist/secrets/approval.d.ts +54 -0
  229. package/packages/core/dist/secrets/approval.d.ts.map +1 -1
  230. package/packages/core/dist/secrets/approval.js +58 -1
  231. package/packages/core/dist/secrets/approval.js.map +1 -1
  232. package/packages/core/dist/secrets/settings.d.ts +178 -0
  233. package/packages/core/dist/secrets/settings.d.ts.map +1 -1
  234. package/packages/core/dist/secrets/settings.js +63 -6
  235. package/packages/core/dist/secrets/settings.js.map +1 -1
  236. package/packages/core/dist/secrets/store.d.ts +31 -0
  237. package/packages/core/dist/secrets/store.d.ts.map +1 -1
  238. package/packages/core/dist/secrets/store.js +75 -0
  239. package/packages/core/dist/secrets/store.js.map +1 -1
  240. package/packages/core/dist/secrets/use.d.ts.map +1 -1
  241. package/packages/core/dist/secrets/use.js +68 -3
  242. package/packages/core/dist/secrets/use.js.map +1 -1
  243. package/packages/core/dist/tools.d.ts +22 -0
  244. package/packages/core/dist/tools.d.ts.map +1 -1
  245. package/packages/core/dist/tools.js.map +1 -1
  246. package/packages/core/migrations/080_secret_requests.sql +14 -0
  247. package/packages/gateway/dist/.tsbuildinfo +1 -1
  248. package/packages/gateway/dist/chat/session.d.ts.map +1 -1
  249. package/packages/gateway/dist/chat/session.js +2 -1
  250. package/packages/gateway/dist/chat/session.js.map +1 -1
  251. package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
  252. package/packages/gateway/dist/missions/execute.js +3 -1
  253. package/packages/gateway/dist/missions/execute.js.map +1 -1
  254. package/packages/gateway/dist/surfaces/browser-cards.d.ts +15 -3
  255. package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
  256. package/packages/gateway/dist/surfaces/browser-cards.js +34 -7
  257. package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -1
  258. package/packages/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
  259. package/packages/gateway/dist/surfaces/offered-actions.js +8 -2
  260. package/packages/gateway/dist/surfaces/offered-actions.js.map +1 -1
  261. package/packages/gateway/dist/surfaces/pending-question.d.ts +3 -1
  262. package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
  263. package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
  264. package/packages/gateway/dist/surfaces/secret-request.d.ts +173 -0
  265. package/packages/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
  266. package/packages/gateway/dist/surfaces/secret-request.js +332 -0
  267. package/packages/gateway/dist/surfaces/secret-request.js.map +1 -0
  268. package/packages/gateway/dist/system-context.js +1 -1
  269. package/packages/gateway/dist/system-context.js.map +1 -1
  270. package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
  271. package/packages/gateway/dist/telegram/main.js +14 -3
  272. package/packages/gateway/dist/telegram/main.js.map +1 -1
  273. package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
  274. package/packages/gateway/dist/telegram/surface.js +4 -1
  275. package/packages/gateway/dist/telegram/surface.js.map +1 -1
  276. package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
  277. package/packages/gateway/dist/web/api-routes.js +9 -1
  278. package/packages/gateway/dist/web/api-routes.js.map +1 -1
  279. package/packages/gateway/dist/web/approval-ask.js +2 -2
  280. package/packages/gateway/dist/web/approval-ask.js.map +1 -1
  281. package/packages/gateway/dist/web/browser-capture.d.ts +13 -0
  282. package/packages/gateway/dist/web/browser-capture.d.ts.map +1 -0
  283. package/packages/gateway/dist/web/browser-capture.js +24 -0
  284. package/packages/gateway/dist/web/browser-capture.js.map +1 -0
  285. package/packages/gateway/dist/web/chat.d.ts +26 -0
  286. package/packages/gateway/dist/web/chat.d.ts.map +1 -1
  287. package/packages/gateway/dist/web/chat.js +87 -2
  288. package/packages/gateway/dist/web/chat.js.map +1 -1
  289. package/packages/gateway/dist/web/extension.d.ts +30 -0
  290. package/packages/gateway/dist/web/extension.d.ts.map +1 -1
  291. package/packages/gateway/dist/web/extension.js +86 -6
  292. package/packages/gateway/dist/web/extension.js.map +1 -1
  293. package/packages/gateway/dist/web/onboarding.js +1 -1
  294. package/packages/gateway/dist/web/onboarding.js.map +1 -1
  295. package/packages/gateway/dist/web/remote-hand.d.ts +26 -2
  296. package/packages/gateway/dist/web/remote-hand.d.ts.map +1 -1
  297. package/packages/gateway/dist/web/remote-hand.js +89 -28
  298. package/packages/gateway/dist/web/remote-hand.js.map +1 -1
  299. package/packages/gateway/dist/web/secret-request.d.ts +54 -0
  300. package/packages/gateway/dist/web/secret-request.d.ts.map +1 -0
  301. package/packages/gateway/dist/web/secret-request.js +264 -0
  302. package/packages/gateway/dist/web/secret-request.js.map +1 -0
  303. package/packages/gateway/dist/web/secrets.d.ts +1 -0
  304. package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
  305. package/packages/gateway/dist/web/secrets.js +1 -1
  306. package/packages/gateway/dist/web/secrets.js.map +1 -1
  307. package/packages/gateway/dist/web/server.d.ts.map +1 -1
  308. package/packages/gateway/dist/web/server.js +72 -3
  309. package/packages/gateway/dist/web/server.js.map +1 -1
  310. package/packages/install/dist/.tsbuildinfo +1 -1
  311. package/packages/runtime/dist/.tsbuildinfo +1 -1
  312. package/packages/runtime/dist/anthropic.d.ts +7 -0
  313. package/packages/runtime/dist/anthropic.d.ts.map +1 -1
  314. package/packages/runtime/dist/anthropic.js +19 -1
  315. package/packages/runtime/dist/anthropic.js.map +1 -1
  316. package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
  317. package/packages/tools/browser/dist/.tsbuildinfo +1 -1
  318. package/packages/tools/browser/dist/controller.d.ts +16 -1
  319. package/packages/tools/browser/dist/controller.d.ts.map +1 -1
  320. package/packages/tools/browser/dist/controller.js +59 -5
  321. package/packages/tools/browser/dist/controller.js.map +1 -1
  322. package/packages/tools/browser/dist/driver.d.ts +12 -0
  323. package/packages/tools/browser/dist/driver.d.ts.map +1 -1
  324. package/packages/tools/browser/dist/driver.js +41 -2
  325. package/packages/tools/browser/dist/driver.js.map +1 -1
  326. package/packages/tools/browser/dist/extension.d.ts +49 -9
  327. package/packages/tools/browser/dist/extension.d.ts.map +1 -1
  328. package/packages/tools/browser/dist/extension.js +145 -21
  329. package/packages/tools/browser/dist/extension.js.map +1 -1
  330. package/packages/tools/browser/dist/index.d.ts +10 -6
  331. package/packages/tools/browser/dist/index.d.ts.map +1 -1
  332. package/packages/tools/browser/dist/index.js +22 -8
  333. package/packages/tools/browser/dist/index.js.map +1 -1
  334. package/packages/tools/browser/dist/routes.d.ts +10 -1
  335. package/packages/tools/browser/dist/routes.d.ts.map +1 -1
  336. package/packages/tools/browser/dist/routes.js +24 -0
  337. package/packages/tools/browser/dist/routes.js.map +1 -1
  338. package/packages/tools/browser/dist/service.d.ts +48 -1
  339. package/packages/tools/browser/dist/service.d.ts.map +1 -1
  340. package/packages/tools/browser/dist/service.js +114 -11
  341. package/packages/tools/browser/dist/service.js.map +1 -1
  342. package/packages/tools/browser/dist/types.d.ts +54 -3
  343. package/packages/tools/browser/dist/types.d.ts.map +1 -1
  344. package/packages/tools/browser/dist/types.js +17 -1
  345. package/packages/tools/browser/dist/types.js.map +1 -1
  346. package/packages/tools/email/dist/.tsbuildinfo +1 -1
  347. package/packages/tools/host/dist/.tsbuildinfo +1 -1
  348. package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
  349. package/packages/tools/memory/dist/.tsbuildinfo +1 -1
  350. package/packages/tools/web/dist/.tsbuildinfo +1 -1
  351. package/packages/web/dist/assets/index-oxmxR39o.js +155 -0
  352. package/packages/web/dist/assets/index-rMRjibNI.css +1 -0
  353. package/packages/web/dist/assets/{lottie_light-D7CS-IeP.js → lottie_light-DROBTM6Y.js} +1 -1
  354. package/packages/web/dist/build.json +1 -1
  355. package/packages/web/dist/index.html +2 -2
  356. package/packages/web/dist/precache.json +4 -4
  357. package/node_modules/playwright/jsx-runtime.js +0 -42
  358. package/node_modules/playwright/jsx-runtime.mjs +0 -21
  359. package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +0 -129
  360. package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +0 -182
  361. package/packages/web/dist/assets/index-BibqUZwt.js +0 -155
  362. package/packages/web/dist/assets/index-DBVZzTau.css +0 -1
@@ -1,24 +1,13 @@
1
1
  import type { ImapFlow } from '../imap-flow.js';
2
2
  import type { MailboxObject, MailboxOpenOptions } from '../types.js';
3
- /**
4
- * Options for SELECT/EXAMINE: the public open options plus the QRESYNC resynchronization
5
- * parameters, which are only honored when the QRESYNC extension has been enabled
6
- */
7
- export interface SelectOptions extends MailboxOpenOptions {
8
- /** QRESYNC modseq value to fetch changes since */
9
- changedSince?: bigint | number | string | undefined;
10
- /** QRESYNC UID validity value */
11
- uidValidity?: bigint | number | string | undefined;
12
- }
3
+ /** SELECT/EXAMINE options, the QRESYNC parameters are part of the public mailboxOpen() options */
4
+ export type SelectOptions = MailboxOpenOptions;
13
5
  /**
14
6
  * Selects or examines a mailbox, making it the current mailbox for subsequent operations.
15
7
  *
16
8
  * @param connection - IMAP connection instance
17
9
  * @param path - Mailbox path to select
18
- * @param options - Select options
19
- * @param options.readOnly - If true, use EXAMINE instead of SELECT (read-only access)
20
- * @param options.changedSince - QRESYNC modseq value to fetch changes since
21
- * @param options.uidValidity - QRESYNC UID validity value
10
+ * @param options - Select options, see MailboxOpenOptions
22
11
  * @returns Mailbox info object with path, flags, exists, uidNext, uidValidity, highestModseq, etc., or undefined if preconditions not met
23
12
  * @throws If the SELECT/EXAMINE command fails
24
13
  */
@@ -48,10 +48,7 @@ const VALUED_RESPONSE_CODES = Object.assign(Object.create(null), {
48
48
  *
49
49
  * @param connection - IMAP connection instance
50
50
  * @param path - Mailbox path to select
51
- * @param options - Select options
52
- * @param options.readOnly - If true, use EXAMINE instead of SELECT (read-only access)
53
- * @param options.changedSince - QRESYNC modseq value to fetch changes since
54
- * @param options.uidValidity - QRESYNC UID validity value
51
+ * @param options - Select options, see MailboxOpenOptions
55
52
  * @returns Mailbox info object with path, flags, exists, uidNext, uidValidity, highestModseq, etc., or undefined if preconditions not met
56
53
  * @throws If the SELECT/EXAMINE command fails
57
54
  */
@@ -16,7 +16,7 @@ import { ConnectionDeadline } from './connection-deadline.js';
16
16
  import { downloadMessage, downloadMessageParts } from './download.js';
17
17
  import { AuthenticationFailure } from './errors.js';
18
18
  import imapCommands from './imap-commands.js';
19
- import { comparePaths, updateCapabilities, getFolderTree, formatMessageResponse, packMessageRange, normalizePath, expandRange, getColorFlags, hasCapability, isRev2Active, logConnectionError, unrefTimer, clearTimer, parseUintValue, getStringList, getTextValues, emitSafe, buildConnectionError, guardedPromise, guardedReject, MAX_UINT32_DIGITS } from './tools.js';
19
+ import { comparePaths, updateCapabilities, getFolderTree, formatMessageResponse, mergeFetchRows, packMessageRange, normalizePath, expandRange, getColorFlags, hasCapability, isRev2Active, logConnectionError, unrefTimer, clearTimer, parseUintValue, getStringList, getTextValues, emitSafe, buildConnectionError, guardedPromise, guardedReject, MAX_UINT32_DIGITS } from './tools.js';
20
20
  export { AuthenticationFailure, ImapFlowErrorCode } from './errors.js';
21
21
  const GREETING_TIMEOUT = 16 * 1000;
22
22
  const UPGRADE_TIMEOUT = 10 * 1000;
@@ -1471,6 +1471,13 @@ export class ImapFlow extends EventEmitter {
1471
1471
  // socket event cannot re-enter an already settled upgrade or leave state behind.
1472
1472
  const settle = (err, result) => {
1473
1473
  if (settled) {
1474
+ // A failed handshake can produce more than one error (Bun emits ECONNRESET on
1475
+ // the TLS socket after the one that settled the upgrade). settle() stays the
1476
+ // error listener of both sockets until they are torn down, so later errors
1477
+ // end up here instead of being thrown as unhandled 'error' events.
1478
+ if (err) {
1479
+ this.log.debug({ msg: 'Socket error after the TLS upgrade was settled', err, cid: this.id });
1480
+ }
1474
1481
  return;
1475
1482
  }
1476
1483
  settled = true;
@@ -1478,9 +1485,12 @@ export class ImapFlow extends EventEmitter {
1478
1485
  this.upgradeTimeout = null;
1479
1486
  this.upgrading = false;
1480
1487
  this._upgradeReject = null;
1481
- socketPlain.removeListener('error', settle);
1482
- if (this.socket && this.socket !== socketPlain) {
1483
- this.socket.removeListener('error', settle);
1488
+ if (!err) {
1489
+ // the generic socket handlers took over in the success callback
1490
+ socketPlain.removeListener('error', settle);
1491
+ if (this.socket && this.socket !== socketPlain) {
1492
+ this.socket.removeListener('error', settle);
1493
+ }
1484
1494
  }
1485
1495
  if (err) {
1486
1496
  clearTimer(this.connectTimeout);
@@ -1498,7 +1508,7 @@ export class ImapFlow extends EventEmitter {
1498
1508
  // one function, one settlement, and removeListener() in settle() needs no separate
1499
1509
  // handler references. A TLS handshake failure (bad certificate, protocol mismatch)
1500
1510
  // is emitted on the new TLS socket rather than on the plain one, so both are covered.
1501
- socketPlain.once('error', settle);
1511
+ socketPlain.on('error', settle);
1502
1512
  /* c8 ignore start */ // UPGRADE_TIMEOUT is 10s; firing it deterministically would make the test suite hang
1503
1513
  this.upgradeTimeout = setTimeout(() => {
1504
1514
  let err = new Error('Failed to upgrade connection in required time');
@@ -1576,7 +1586,7 @@ export class ImapFlow extends EventEmitter {
1576
1586
  // error listener during the handshake window; the generic handlers are installed
1577
1587
  // by setSocketHandlers() inside the success callback above, so a handshake error
1578
1588
  // has a single error path.
1579
- tlsSocket.once('error', settle);
1589
+ tlsSocket.on('error', settle);
1580
1590
  this.writeSocket = tlsSocket;
1581
1591
  });
1582
1592
  if (upgraded) {
@@ -3111,7 +3121,21 @@ export class ImapFlow extends EventEmitter {
3111
3121
  if (!response || !response.list || !response.list.length) {
3112
3122
  return false;
3113
3123
  }
3114
- return response.list[0];
3124
+ // Every FETCH row that arrived during the command is in the list, also unsolicited ones
3125
+ // for other messages or with only a flag change, and a server may split the answer for
3126
+ // one message over several rows. Taking the first row returned a flag update instead
3127
+ // of the requested data, which ended a download after its first chunk (issue #426).
3128
+ let rows = response.list;
3129
+ let requested = parseUintValue(String(seq), MAX_UINT32_DIGITS);
3130
+ // a range: the first message of the answer, as before
3131
+ let target = requested === false ? rows[0] : rows.find(row => (options && options.uid ? row.uid : row.seq) === requested);
3132
+ if (!target) {
3133
+ return false;
3134
+ }
3135
+ // rows of the same message, without the ones a malformed answer gives no usable
3136
+ // sequence number or another UID
3137
+ let { seq: targetSeq, uid: targetUid } = target;
3138
+ return targetSeq ? mergeFetchRows(rows.filter(row => row.seq === targetSeq && (!row.uid || !targetUid || row.uid === targetUid))) : target;
3115
3139
  }
3116
3140
  /**
3117
3141
  * Download either full rfc822 formatted message or a specific bodystructure part as a Stream.
@@ -1,3 +1,3 @@
1
1
  export declare const name = "imapflow";
2
- export declare const version = "2.2.8";
2
+ export declare const version = "2.2.10";
3
3
  export declare const homepage = "https://imapflow.com/";
@@ -1,4 +1,4 @@
1
1
  // Generated by scripts/build.js from package.json. Do not edit by hand.
2
2
  export const name = "imapflow";
3
- export const version = "2.2.8";
3
+ export const version = "2.2.10";
4
4
  export const homepage = "https://imapflow.com/";
@@ -287,6 +287,16 @@ export declare function getColorFlags(color: string | null | undefined): {
287
287
  add: string[];
288
288
  remove: string[];
289
289
  } | null;
290
+ /**
291
+ * Merges the FETCH rows a server sent for one message into one message object. A server may
292
+ * split the data items of a message over several FETCH responses, and may put an unsolicited
293
+ * one (a flag change made by another session) in between (RFC 9051 sections 7.5.2 and 5.2).
294
+ * Later rows win for single values, bodyParts, binaryParts and partialOrigins are combined.
295
+ *
296
+ * @param rows - Formatted rows of the same message, in the order they arrived
297
+ * @returns One message object holding the data of every row
298
+ */
299
+ export declare function mergeFetchRows(rows: FetchMessageObject[]): FetchMessageObject;
290
300
  /**
291
301
  * Formats a raw untagged FETCH response into a structured message object.
292
302
  *
@@ -657,6 +657,34 @@ export function getColorFlags(color) {
657
657
  }
658
658
  return result;
659
659
  }
660
+ /**
661
+ * Merges the FETCH rows a server sent for one message into one message object. A server may
662
+ * split the data items of a message over several FETCH responses, and may put an unsolicited
663
+ * one (a flag change made by another session) in between (RFC 9051 sections 7.5.2 and 5.2).
664
+ * Later rows win for single values, bodyParts, binaryParts and partialOrigins are combined.
665
+ *
666
+ * @param rows - Formatted rows of the same message, in the order they arrived
667
+ * @returns One message object holding the data of every row
668
+ */
669
+ export function mergeFetchRows(rows) {
670
+ if (rows.length === 1) {
671
+ return rows[0];
672
+ }
673
+ let merged = {};
674
+ let partialOrigins;
675
+ for (let row of rows) {
676
+ let { bodyParts, binaryParts, ...rest } = row;
677
+ Object.assign(merged, rest);
678
+ // combined into collections of their own, so the rows stay untouched
679
+ bodyParts?.forEach((value, key) => (merged.bodyParts ??= new Map()).set(key, value));
680
+ binaryParts?.forEach(key => (merged.binaryParts ??= new Set()).add(key));
681
+ row.partialOrigins?.forEach((value, key) => (partialOrigins ??= new Map()).set(key, value));
682
+ }
683
+ if (partialOrigins) {
684
+ Object.defineProperty(merged, 'partialOrigins', { value: partialOrigins, writable: true, configurable: true });
685
+ }
686
+ return merged;
687
+ }
660
688
  /**
661
689
  * Formats a raw untagged FETCH response into a structured message object.
662
690
  *
@@ -499,6 +499,8 @@ export interface FetchQueryObject {
499
499
  /** Include full message in the response, up to maxLength bytes */
500
500
  maxLength?: number | undefined;
501
501
  } | undefined;
502
+ /** Email ID (OBJECTID EMAILID or Gmail X-GM-MSGID) is always requested when the server supports either extension, so this is accepted but changes nothing */
503
+ emailId?: boolean | undefined;
502
504
  /** If true then include thread ID in the response (only if server supports either OBJECTID or X-GM-EXT-1 extensions) */
503
505
  threadId?: boolean | undefined;
504
506
  /** If true then include GMail labels in the response (only if server supports X-GM-EXT-1 extension) */
@@ -653,9 +655,11 @@ export interface DownloadOptions {
653
655
  maxBytes?: number | undefined;
654
656
  /** How large content parts to ask from the server. Defaults to 65536 */
655
657
  chunkSize?: number | undefined;
658
+ /** If true then requests the content with FETCH BINARY when the server supports it (BINARY or IMAP4rev2), so the server removes the transfer encoding */
659
+ binary?: boolean | undefined;
656
660
  }
657
661
  /** Options for downloadMany(): the download() options without `chunkSize`, as the parts come in one FETCH */
658
- export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes'>;
662
+ export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes' | 'binary'>;
659
663
  export interface DownloadManyPart {
660
664
  meta: DownloadMeta;
661
665
  content?: Buffer | null | undefined;
@@ -706,6 +710,10 @@ export interface MailboxOpenOptions {
706
710
  readOnly?: boolean | undefined;
707
711
  /** Optional description for mailbox lock tracking */
708
712
  description?: string | undefined;
713
+ /** QRESYNC (RFC 7162): HIGHESTMODSEQ from an earlier session. With `uidValidity` and QRESYNC enabled, changes since then are reported as `flags` and `expunge` events. getMailboxLock() only applies it when it selects the mailbox, not when the mailbox is already open */
714
+ changedSince?: bigint | number | string | undefined;
715
+ /** QRESYNC (RFC 7162): the UIDVALIDITY known from the previous session, required with `changedSince` */
716
+ uidValidity?: bigint | number | string | undefined;
709
717
  }
710
718
  export interface MailboxLockOptions extends MailboxOpenOptions {
711
719
  /**
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imapflow",
3
- "version": "2.2.8",
3
+ "version": "2.2.10",
4
4
  "description": "IMAP Client for Node",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/imap-flow.js",
@@ -75,7 +75,7 @@
75
75
  "eslint": "10.12.0",
76
76
  "eslint-config-prettier": "10.1.8",
77
77
  "globals": "17.13.0",
78
- "imapkit": "4.1.0",
78
+ "imapkit": "4.1.1",
79
79
  "prettier": "3.9.9",
80
80
  "tsx": "4.23.15",
81
81
  "types-node-legacy": "npm:@types/node@20.0.0",
@@ -1,6 +1,6 @@
1
1
  # 🎭 Playwright
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) <!-- GEN:chromium-version-badge -->[![Chromium version](https://img.shields.io/badge/chromium-153.0.8010.12-blue.svg?logo=google-chrome)](https://www.chromium.org/Home)<!-- GEN:stop --> <!-- GEN:firefox-version-badge -->[![Firefox version](https://img.shields.io/badge/firefox-155.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/)<!-- GEN:stop --> <!-- GEN:webkit-version-badge -->[![WebKit version](https://img.shields.io/badge/webkit-26.6-blue.svg?logo=safari)](https://webkit.org/)<!-- GEN:stop --> [![Join Discord](https://img.shields.io/badge/join-discord-informational)](https://aka.ms/playwright/discord)
3
+ [![npm version](https://img.shields.io/npm/v/playwright.svg)](https://www.npmjs.com/package/playwright) <!-- GEN:chromium-version-badge -->[![Chromium version](https://img.shields.io/badge/chromium-156.0.8078.4-blue.svg?logo=google-chrome)](https://www.chromium.org/Home)<!-- GEN:stop --> <!-- GEN:firefox-version-badge -->[![Firefox version](https://img.shields.io/badge/firefox-157.0-blue.svg?logo=firefoxbrowser)](https://www.mozilla.org/en-US/firefox/new/)<!-- GEN:stop --> <!-- GEN:webkit-version-badge -->[![WebKit version](https://img.shields.io/badge/webkit-27.2-blue.svg?logo=safari)](https://webkit.org/)<!-- GEN:stop --> [![Join Discord](https://img.shields.io/badge/join-discord-informational)](https://aka.ms/playwright/discord)
4
4
 
5
5
  ## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright)
6
6
 
@@ -296,9 +296,9 @@ The [Playwright VS Code extension](https://marketplace.visualstudio.com/items?it
296
296
 
297
297
  | | Linux | macOS | Windows |
298
298
  | :--- | :---: | :---: | :---: |
299
- | Chromium<sup>1</sup> <!-- GEN:chromium-version -->153.0.8010.12<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
300
- | WebKit <!-- GEN:webkit-version -->26.6<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
301
- | Firefox <!-- GEN:firefox-version -->155.0<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
299
+ | Chromium<sup>1</sup> <!-- GEN:chromium-version -->156.0.8078.4<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
300
+ | WebKit <!-- GEN:webkit-version -->27.2<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
301
+ | Firefox <!-- GEN:firefox-version -->157.0<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
302
302
 
303
303
  Headless and headed execution on all platforms. <sup>1</sup> Uses [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) by default.
304
304
 
@@ -68,7 +68,7 @@ application behavior.
68
68
  // seed: tests/seed.spec.ts
69
69
 
70
70
  test.describe('Adding New Todos', () => {
71
- test('Add Valid Todo', async { page } => {
71
+ test('Add Valid Todo', async ({ page }) => {
72
72
  // 1. Click in the "What needs to be done?" input field
73
73
  await page.click(...);
74
74
 
@@ -38,9 +38,7 @@ var import_path = __toESM(require("path"));
38
38
  var import_common = require("../common");
39
39
  var import_runner = require("../runner");
40
40
  const { gracefullyProcessExitDoNotHang } = require("playwright-core/lib/coreBundle").utils;
41
- const { startProfiling, stopProfiling } = require("playwright-core/lib/coreBundle").utils;
42
41
  async function runTests(args, opts) {
43
- await startProfiling();
44
42
  const cliOverrides = overridesFromOptions(opts);
45
43
  cliOverrides.argv = process.argv;
46
44
  const config = await import_common.configLoader.loadConfigFromFile(opts.config, cliOverrides, opts.deps === false);
@@ -71,7 +69,6 @@ async function runTests(args, opts) {
71
69
  project: opts.project || void 0,
72
70
  reporter: Array.isArray(opts.reporter) ? opts.reporter : opts.reporter ? [opts.reporter] : void 0
73
71
  });
74
- await stopProfiling("runner");
75
72
  const exitCode2 = status2 === "interrupted" ? 130 : status2 === "passed" ? 0 : 1;
76
73
  gracefullyProcessExitDoNotHang(exitCode2);
77
74
  return;
@@ -87,13 +84,11 @@ async function runTests(args, opts) {
87
84
  grep: opts.grep
88
85
  }
89
86
  );
90
- await stopProfiling("runner");
91
87
  const exitCode2 = status2 === "interrupted" ? 130 : status2 === "passed" ? 0 : 1;
92
88
  gracefullyProcessExitDoNotHang(exitCode2);
93
89
  return;
94
90
  }
95
91
  const status = await import_runner.testRunner.runAllTestsWithConfig(config, options);
96
- await stopProfiling("runner");
97
92
  const exitCode = status === "interrupted" ? 130 : status === "passed" ? 0 : 1;
98
93
  gracefullyProcessExitDoNotHang(exitCode);
99
94
  }
@@ -130,6 +125,7 @@ function overridesFromOptions(options) {
130
125
  reporter: resolveReporterOption(options.reporter),
131
126
  additionalReporters: resolveReporterOption(options.addReporter),
132
127
  shard: resolveShardOption(options.shard),
128
+ shuffle: resolveShuffleOption(options.shuffle),
133
129
  timeout: options.timeout ? parseInt(options.timeout, 10) : void 0,
134
130
  tsconfig: options.tsconfig ? import_path.default.resolve(process.cwd(), options.tsconfig) : void 0,
135
131
  ignoreSnapshots: options.ignoreSnapshots ? !!options.ignoreSnapshots : void 0,
@@ -167,6 +163,13 @@ function resolveReporterOption(reporter) {
167
163
  return void 0;
168
164
  return reporter.split(",").map((r) => [resolveReporter(r)]);
169
165
  }
166
+ function resolveShuffleOption(shuffle) {
167
+ if (!shuffle)
168
+ return void 0;
169
+ if (shuffle === true)
170
+ return String(Math.floor(Math.random() * 1e9));
171
+ return shuffle;
172
+ }
170
173
  function resolveShardOption(shard) {
171
174
  if (!shard)
172
175
  return void 0;
@@ -518,6 +518,7 @@ var FullConfigInternal = class {
518
518
  metadata: metadata ?? userConfig.metadata,
519
519
  preserveOutput: takeFirst(userConfig.preserveOutput, "always"),
520
520
  projects: [],
521
+ filteredProjects: [],
521
522
  quiet: takeFirst(configCLIOverrides.quiet, userConfig.quiet, false),
522
523
  reporter: [...takeFirst(configCLIOverrides.reporter, resolveReporters(userConfig.reporter, configDir), [[defaultReporter]]), ...configCLIOverrides.additionalReporters ?? []],
523
524
  reportSlowTests: takeFirst(userConfig.reportSlowTests, {
@@ -527,7 +528,7 @@ var FullConfigInternal = class {
527
528
  }),
528
529
  shard: takeFirst(configCLIOverrides.shard, userConfig.shard, null),
529
530
  tags: globalTags,
530
- updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, "missing"),
531
+ updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, "default"),
531
532
  updateSourceMethod: takeFirst(configCLIOverrides.updateSourceMethod, userConfig.updateSourceMethod, "patch"),
532
533
  version: import_package2.packageJSON.version,
533
534
  workers: resolveWorkers(takeFirst(configCLIOverrides.debug || configCLIOverrides.pause ? 1 : void 0, configCLIOverrides.workers, userConfig.workers, "50%")),
@@ -553,6 +554,7 @@ var FullConfigInternal = class {
553
554
  resolveProjectDependencies(this.projects);
554
555
  this._assignUniqueProjectIds(this.projects);
555
556
  this.config.projects = this.projects.map((p) => p.project);
557
+ this.config.filteredProjects = this.config.projects;
556
558
  }
557
559
  _assignUniqueProjectIds(projects) {
558
560
  const usedNames = /* @__PURE__ */ new Set();
@@ -611,6 +613,7 @@ var FullProjectInternal = class {
611
613
  this.workers = projectConfig.workers ? resolveWorkers(projectConfig.workers) : void 0;
612
614
  if (configCLIOverrides.debug && this.workers)
613
615
  this.workers = 1;
616
+ this.default = projectConfig.default ?? true;
614
617
  }
615
618
  };
616
619
  function pathResolve(baseDir, relative) {
@@ -687,7 +690,7 @@ function toReporters(reporters) {
687
690
  return [[reporters]];
688
691
  return reporters;
689
692
  }
690
- var builtInReporters = ["list", "line", "dot", "json", "junit", "null", "github", "html", "blob", "perfetto"];
693
+ var builtInReporters = ["list", "line", "dot", "json", "junit", "null", "github", "html", "blob", "perfetto", "coverage"];
691
694
  function resolveScript(id, rootDir) {
692
695
  if (!id)
693
696
  return void 0;
@@ -740,6 +743,7 @@ var import_crypto = __toESM(require("crypto"));
740
743
  var import_path4 = __toESM(require("path"));
741
744
  var import_fs4 = __toESM(require("fs"));
742
745
  var json5 = require("playwright-core/lib/utilsBundle").json5;
746
+ var jsxOptionNames = ["jsx", "jsxFactory", "jsxFragmentFactory", "jsxImportSource"];
743
747
  function loadTsConfig(configPath) {
744
748
  try {
745
749
  const references = [];
@@ -779,6 +783,10 @@ function innerLoadTsConfig(configFilePath, references, visited = /* @__PURE__ */
779
783
  }
780
784
  if (parsedConfig.compilerOptions?.allowJs !== void 0)
781
785
  result2.allowJs = parsedConfig.compilerOptions.allowJs;
786
+ for (const name of jsxOptionNames) {
787
+ if (parsedConfig.compilerOptions?.[name] !== void 0)
788
+ result2[name] = parsedConfig.compilerOptions[name];
789
+ }
782
790
  if (parsedConfig.compilerOptions?.paths !== void 0) {
783
791
  result2.paths = {
784
792
  mapping: parsedConfig.compilerOptions.paths,
@@ -947,7 +955,13 @@ function validateTsConfig(tsconfig) {
947
955
  return {
948
956
  allowJs: !!tsconfig.allowJs,
949
957
  pathsBase,
950
- paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback)
958
+ paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback),
959
+ jsx: tsconfig.jsx ? {
960
+ jsx: tsconfig.jsx.toLowerCase(),
961
+ jsxFactory: tsconfig.jsxFactory,
962
+ jsxFragmentFactory: tsconfig.jsxFragmentFactory,
963
+ jsxImportSource: tsconfig.jsxImportSource
964
+ } : void 0
951
965
  };
952
966
  }
953
967
  function loadAndValidateTsconfigsForFile(file2) {
@@ -1052,21 +1066,22 @@ function shouldTransform(filename) {
1052
1066
  function transformHook(originalCode, filename, moduleUrl) {
1053
1067
  const hasPreprocessor = process.env.PW_TEST_SOURCE_TRANSFORM && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE.split(pathSeparator).some((f) => filename.startsWith(f));
1054
1068
  const pluginsEpilogue = hasPreprocessor ? [[process.env.PW_TEST_SOURCE_TRANSFORM]] : [];
1055
- const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsEpilogue);
1069
+ const jsx = loadAndValidateTsconfigsForFile(filename).find((tsconfig) => tsconfig.jsx)?.jsx;
1070
+ const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsEpilogue, jsx);
1056
1071
  const { cachedCode, addToCache, serializedCache } = getFromCompilationCache(filename, hash, moduleUrl);
1057
1072
  if (cachedCode !== void 0)
1058
1073
  return { code: cachedCode, serializedCache };
1059
1074
  process.env.BROWSERSLIST_IGNORE_OLD_DATA = "true";
1060
1075
  const { babelTransform } = require((0, import_package3.libPath)("transform", "babelBundle"));
1061
- const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsEpilogue, _transformConfig.jsxImportSource);
1076
+ const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsEpilogue, jsx);
1062
1077
  if (!babelResult?.code)
1063
1078
  return { code: originalCode, serializedCache };
1064
1079
  const { code, map } = babelResult;
1065
1080
  const added = addToCache(code, map);
1066
1081
  return { code, serializedCache: added.serializedCache };
1067
1082
  }
1068
- function calculateHash(content, filePath, isModule2, pluginsEpilogue) {
1069
- const hash = import_crypto.default.createHash("sha1").update(isModule2 ? "esm" : "no_esm").update(content).update(filePath).update(version).update(pluginsEpilogue.map((p) => p[0]).join(",")).digest("hex");
1083
+ function calculateHash(content, filePath, isModule2, pluginsEpilogue, jsx) {
1084
+ const hash = import_crypto.default.createHash("sha1").update(isModule2 ? "esm" : "no_esm").update(content).update(filePath).update(version).update(pluginsEpilogue.map((p) => p[0]).join(",")).update(jsx ? JSON.stringify(jsx) : "").digest("hex");
1070
1085
  return hash;
1071
1086
  }
1072
1087
  async function requireOrImport(file) {
@@ -1283,8 +1298,7 @@ async function loadConfig(location, overrides, ignoreProjectDependencies = false
1283
1298
  }
1284
1299
  }
1285
1300
  const external = userConfig.build?.external || [];
1286
- const jsxImportSource = import_path7.default.dirname(require.resolve("playwright"));
1287
- await setTransformConfig({ external, jsxImportSource });
1301
+ await setTransformConfig({ external });
1288
1302
  if (!overrides?.tsconfig)
1289
1303
  await setSingleTSConfig(fullConfig?.singleTSConfigPath);
1290
1304
  return fullConfig;
@@ -1387,8 +1401,8 @@ function validateConfig(file2, config) {
1387
1401
  throw errorWithFile(file2, `config.shard.current must be a positive number, not greater than config.shard.total`);
1388
1402
  }
1389
1403
  if ("updateSnapshots" in config && config.updateSnapshots !== void 0) {
1390
- if (typeof config.updateSnapshots !== "string" || !["all", "changed", "missing", "none"].includes(config.updateSnapshots))
1391
- throw errorWithFile(file2, `config.updateSnapshots must be one of "all", "changed", "missing" or "none"`);
1404
+ if (typeof config.updateSnapshots !== "string" || !["all", "changed", "missing", "none", "default"].includes(config.updateSnapshots))
1405
+ throw errorWithFile(file2, `config.updateSnapshots must be one of "all", "changed", "missing", "none" or "default"`);
1392
1406
  }
1393
1407
  if ("retryStrategy" in config && config.retryStrategy !== void 0) {
1394
1408
  if (typeof config.retryStrategy !== "string" || !["immediate", "isolated"].includes(config.retryStrategy))
@@ -1424,6 +1438,10 @@ function validateProject(file2, project, title) {
1424
1438
  if (typeof project.testDir !== "string")
1425
1439
  throw errorWithFile(file2, `${title}.testDir must be a string`);
1426
1440
  }
1441
+ if (project.expect?.toHaveScreenshot?.type !== void 0) {
1442
+ if (!["png", "webp"].includes(project.expect.toHaveScreenshot.type))
1443
+ throw errorWithFile(file2, `${title}.expect.toHaveScreenshot.type must be one of "png" or "webp"`);
1444
+ }
1427
1445
  for (const prop of ["testIgnore", "testMatch"]) {
1428
1446
  if (prop in project && project[prop] !== void 0) {
1429
1447
  const value = project[prop];
@@ -1889,7 +1907,6 @@ var import_bootstrap = require("playwright-core/lib/bootstrap");
1889
1907
  var import_package4 = require("../package");
1890
1908
  var { ManualPromise } = require("playwright-core/lib/coreBundle").iso;
1891
1909
  var { setTimeOrigin } = require("playwright-core/lib/coreBundle").iso;
1892
- var { startProfiling, stopProfiling } = require("playwright-core/lib/coreBundle").utils;
1893
1910
  var { setBoxedStackPrefixes } = require("playwright-core/lib/coreBundle").utils;
1894
1911
  var ProcessRunner = class {
1895
1912
  async gracefullyClose() {
@@ -1909,7 +1926,6 @@ var ProcessRunner = class {
1909
1926
  var gracefullyCloseCalled = false;
1910
1927
  var forceExitInitiated = false;
1911
1928
  var processRunner;
1912
- var processName;
1913
1929
  var startingEnv = { ...process.env };
1914
1930
  setBoxedStackPrefixes([import_package4.packageRoot]);
1915
1931
  function startProcessRunner(create) {
@@ -1922,10 +1938,8 @@ function startProcessRunner(create) {
1922
1938
  process.on("message", async (message) => {
1923
1939
  if (message.method === "__init__") {
1924
1940
  const { processParams, runnerParams } = message.params;
1925
- void startProfiling();
1926
1941
  setTimeOrigin(processParams.timeOrigin);
1927
1942
  processRunner = create(runnerParams);
1928
- processName = processParams.processName;
1929
1943
  return;
1930
1944
  }
1931
1945
  if (message.method === "__stop__") {
@@ -1955,7 +1969,7 @@ var kHeartbeatInterval = 1e3;
1955
1969
  async function gracefullyCloseAndExit(forceExit) {
1956
1970
  if (forceExit && !forceExitInitiated) {
1957
1971
  forceExitInitiated = true;
1958
- setTimeout(() => process.exit(0), kForceExitTimeout);
1972
+ setTimeout(() => (0, import_bootstrap.processExit)(0), kForceExitTimeout);
1959
1973
  }
1960
1974
  if (!gracefullyCloseCalled) {
1961
1975
  gracefullyCloseCalled = true;
@@ -1964,10 +1978,7 @@ async function gracefullyCloseAndExit(forceExit) {
1964
1978
  await processRunner?.gracefullyClose().catch(() => {
1965
1979
  });
1966
1980
  clearInterval(heartbeat);
1967
- if (processName)
1968
- await stopProfiling(processName).catch(() => {
1969
- });
1970
- process.exit(0);
1981
+ (0, import_bootstrap.processExit)(0);
1971
1982
  }
1972
1983
  }
1973
1984
  function sendMessageToParent(message) {
@@ -2323,6 +2334,8 @@ var TestTypeImpl = class _TestTypeImpl {
2323
2334
  const suite = this._currentSuite(location, `test.describe.configure()`);
2324
2335
  if (!suite)
2325
2336
  return;
2337
+ if (options.lock !== void 0)
2338
+ suite._locks.push(...validateTestDetails({ lock: options.lock }, location).locks);
2326
2339
  if (options.timeout !== void 0)
2327
2340
  suite._timeout = options.timeout;
2328
2341
  if (options.retries !== void 0)
@@ -2395,13 +2408,13 @@ var TestTypeImpl = class _TestTypeImpl {
2395
2408
  if (!testInfo)
2396
2409
  throw new Error(`test.step() can only be called from a test`);
2397
2410
  await testInfo._onUserStepBegin?.(title);
2398
- const step = testInfo._addStep({ category: "test.step", title, subtitle: options.subtitle, location: options.location, box: options.box, params: options.params });
2411
+ const step = testInfo._addStep({ category: "test.step", title, subtitle: options.subtitle, stack: options.location ? [options.location] : void 0, box: options.box, params: options.params });
2399
2412
  return await currentZone().with("stepZone", step).run(async () => {
2400
2413
  try {
2401
2414
  let result2 = void 0;
2402
2415
  result2 = await raceAgainstDeadline(async () => {
2403
2416
  try {
2404
- return await step.info._runStepBody(expectation === "skip", body, step.location);
2417
+ return await step.info._runStepBody(expectation === "skip", body, step.stack[0]);
2405
2418
  } catch (e) {
2406
2419
  if (result2?.timedOut)
2407
2420
  testInfo._failWithError(e);
@@ -2473,6 +2486,7 @@ var baseFullConfig = {
2473
2486
  metadata: {},
2474
2487
  preserveOutput: "always",
2475
2488
  projects: [],
2489
+ filteredProjects: [],
2476
2490
  reporter: [[process.env.CI ? "dot" : "list"]],
2477
2491
  reportSlowTests: {
2478
2492
  max: 5,
@@ -2484,7 +2498,7 @@ var baseFullConfig = {
2484
2498
  quiet: false,
2485
2499
  shard: null,
2486
2500
  tags: [],
2487
- updateSnapshots: "missing",
2501
+ updateSnapshots: "default",
2488
2502
  updateSourceMethod: "patch",
2489
2503
  version: "",
2490
2504
  workers: 0,
@@ -1,34 +1,33 @@
1
1
  # packages/playwright/lib/common/index.js
2
- # total: 112.8 KB
2
+ # total: 113.6 KB
3
3
 
4
4
  ## Inlined (20)
5
- 12.3 KB packages/playwright/src/common/config.ts
6
- 13.6 KB packages/playwright/src/common/configLoader.ts
5
+ 12.5 KB packages/playwright/src/common/config.ts
6
+ 13.8 KB packages/playwright/src/common/configLoader.ts
7
7
  11.5 KB packages/playwright/src/common/fixtures.ts
8
8
  0.8 KB packages/playwright/src/common/index.ts
9
9
  1.3 KB packages/playwright/src/common/ipc.ts
10
10
  2.1 KB packages/playwright/src/common/poolBuilder.ts
11
- 4.1 KB packages/playwright/src/common/process.ts
11
+ 3.9 KB packages/playwright/src/common/process.ts
12
12
  4.9 KB packages/playwright/src/common/suiteUtils.ts
13
13
  8.7 KB packages/playwright/src/common/test.ts
14
14
  2.0 KB packages/playwright/src/common/testLoader.ts
15
- 12.7 KB packages/playwright/src/common/testType.ts
15
+ 12.9 KB packages/playwright/src/common/testType.ts
16
16
  1.4 KB packages/playwright/src/common/validators.ts
17
17
  1.3 KB packages/playwright/src/isomorphic/teleReceiver.ts
18
18
  7.8 KB packages/playwright/src/transform/compilationCache.ts
19
19
  1.7 KB packages/playwright/src/transform/esmLoaderSync.ts
20
20
  1.1 KB packages/playwright/src/transform/pirates.ts
21
21
  1.1 KB packages/playwright/src/transform/portTransport.ts
22
- 11.6 KB packages/playwright/src/transform/transform.ts
23
- 2.9 KB packages/playwright/src/transform/tsconfig-loader.ts
22
+ 12.0 KB packages/playwright/src/transform/transform.ts
23
+ 3.2 KB packages/playwright/src/transform/tsconfig-loader.ts
24
24
  7.0 KB packages/playwright/src/util.ts
25
25
 
26
- ## External (8)
26
+ ## External (7)
27
27
  ../globals
28
28
  ../matchers/expect
29
29
  ../package
30
30
  ../transform/esmLoader.js
31
- playwright
32
31
  playwright-core/lib/bootstrap
33
32
  playwright-core/lib/coreBundle
34
33
  playwright-core/lib/utilsBundle