chrome-devtools-frontend 1.0.1615539 → 1.0.1616061

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 (347) hide show
  1. package/front_end/generated/InspectorBackendCommands.ts +2 -1
  2. package/front_end/generated/SupportedCSSProperties.js +4 -0
  3. package/front_end/generated/protocol-mapping.d.ts +7 -0
  4. package/front_end/generated/protocol-proxy-api.d.ts +5 -0
  5. package/front_end/generated/protocol.ts +11 -0
  6. package/front_end/models/ai_assistance/agents/AiAgent.ts +5 -4
  7. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +3 -0
  8. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +85 -47
  9. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +32 -0
  10. package/front_end/models/bindings/SymbolizedError.ts +20 -0
  11. package/front_end/models/bindings/bindings.ts +2 -0
  12. package/front_end/panels/ai_assistance/components/ChatMessage.ts +28 -23
  13. package/front_end/panels/ai_assistance/components/chatMessage.css +1 -1
  14. package/front_end/panels/elements/PropertiesWidget.ts +8 -8
  15. package/front_end/third_party/chromium/README.chromium +1 -1
  16. package/front_end/third_party/puppeteer/README.chromium +2 -2
  17. package/front_end/third_party/puppeteer/package/README.md +2 -0
  18. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +12 -0
  19. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
  20. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
  21. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.d.ts +74 -0
  22. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.d.ts.map +1 -0
  23. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.js +68 -0
  24. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Extension.js.map +1 -0
  25. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts +8 -0
  26. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Frame.d.ts.map +1 -1
  27. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Issue.d.ts +22 -0
  28. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Issue.d.ts.map +1 -0
  29. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Issue.js +8 -0
  30. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Issue.js.map +1 -0
  31. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +35 -0
  32. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
  33. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
  34. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Realm.d.ts +106 -4
  35. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Realm.d.ts.map +1 -1
  36. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Realm.js +29 -1
  37. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Realm.js.map +1 -1
  38. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.d.ts +24 -2
  39. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.d.ts.map +1 -1
  40. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.js +15 -1
  41. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/WebWorker.js.map +1 -1
  42. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +2 -0
  43. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
  44. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js +1 -0
  45. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
  46. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -0
  47. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
  48. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +8 -0
  49. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
  50. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  51. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js +2 -1
  52. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserConnector.js.map +1 -1
  53. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts +5 -0
  54. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  55. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js +6 -0
  56. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BrowserContext.js.map +1 -1
  57. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +2 -0
  58. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
  59. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +9 -47
  60. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
  61. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
  62. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +0 -1
  63. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
  64. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +8 -1
  65. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
  66. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +14 -1
  67. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
  68. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.d.ts +4 -0
  69. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.d.ts.map +1 -1
  70. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js +21 -0
  71. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Realm.js.map +1 -1
  72. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Target.d.ts.map +1 -1
  73. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Target.js +2 -2
  74. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Target.js.map +1 -1
  75. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts +2 -0
  76. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  77. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.js +18 -0
  78. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/Realm.js.map +1 -1
  79. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts +28 -0
  80. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
  81. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +67 -0
  82. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
  83. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +9 -2
  84. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
  85. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +56 -5
  86. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
  87. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  88. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js +2 -2
  89. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BrowserConnector.js.map +1 -1
  90. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpIssue.d.ts +17 -0
  91. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpIssue.d.ts.map +1 -0
  92. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpIssue.js +27 -0
  93. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpIssue.js.map +1 -0
  94. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.d.ts +16 -0
  95. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.d.ts.map +1 -0
  96. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.js +79 -0
  97. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Extension.js.map +1 -0
  98. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts +10 -0
  99. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.d.ts.map +1 -1
  100. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js +26 -15
  101. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Frame.js.map +1 -1
  102. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +1 -1
  103. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  104. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +38 -0
  105. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
  106. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.d.ts +9 -3
  107. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.d.ts.map +1 -1
  108. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js +31 -1
  109. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  110. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +6 -0
  111. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
  112. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +49 -35
  113. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
  114. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Target.d.ts +3 -1
  115. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Target.d.ts.map +1 -1
  116. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Target.js +16 -7
  117. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Target.js.map +1 -1
  118. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts +2 -0
  119. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  120. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js +9 -1
  121. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/TargetManager.js.map +1 -1
  122. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.d.ts +218 -0
  123. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.d.ts.map +1 -0
  124. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.js +288 -0
  125. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebMCP.js.map +1 -0
  126. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts +4 -7
  127. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  128. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +28 -3
  129. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
  130. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
  131. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
  132. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
  133. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
  134. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.d.ts +9 -0
  135. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.d.ts.map +1 -1
  136. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js +36 -0
  137. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/utils.js.map +1 -1
  138. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +7 -0
  139. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  140. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/types.d.ts +0 -11
  141. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/types.d.ts.map +1 -1
  142. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +3 -3
  143. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts +2 -0
  144. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  145. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js +5 -2
  146. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/BrowserLauncher.js.map +1 -1
  147. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  148. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +0 -1
  149. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
  150. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
  151. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
  152. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
  153. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
  154. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.js +1 -1
  155. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.js.map +1 -1
  156. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
  157. package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
  158. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +7851 -6616
  159. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +1017 -305
  160. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +12 -0
  161. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
  162. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
  163. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.d.ts +74 -0
  164. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.d.ts.map +1 -0
  165. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.js +64 -0
  166. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Extension.js.map +1 -0
  167. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts +8 -0
  168. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Frame.d.ts.map +1 -1
  169. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +1 -1
  170. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
  171. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Issue.d.ts +22 -0
  172. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Issue.d.ts.map +1 -0
  173. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Issue.js +7 -0
  174. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Issue.js.map +1 -0
  175. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +35 -0
  176. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
  177. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
  178. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Realm.d.ts +106 -4
  179. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Realm.d.ts.map +1 -1
  180. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Realm.js +29 -1
  181. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Realm.js.map +1 -1
  182. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.d.ts +24 -2
  183. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.d.ts.map +1 -1
  184. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.js +14 -0
  185. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/WebWorker.js.map +1 -1
  186. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +2 -0
  187. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
  188. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js +1 -0
  189. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
  190. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -0
  191. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
  192. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +8 -0
  193. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
  194. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.d.ts.map +1 -1
  195. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js +2 -1
  196. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserConnector.js.map +1 -1
  197. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts +5 -0
  198. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.d.ts.map +1 -1
  199. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js +6 -0
  200. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BrowserContext.js.map +1 -1
  201. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +2 -0
  202. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
  203. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +8 -46
  204. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
  205. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
  206. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +0 -1
  207. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
  208. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +8 -1
  209. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
  210. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +14 -1
  211. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
  212. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.d.ts +4 -0
  213. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.d.ts.map +1 -1
  214. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js +22 -1
  215. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Realm.js.map +1 -1
  216. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Target.d.ts.map +1 -1
  217. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Target.js +2 -2
  218. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Target.js.map +1 -1
  219. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts +3 -1
  220. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.d.ts.map +1 -1
  221. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.js +18 -0
  222. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/Realm.js.map +1 -1
  223. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts +28 -0
  224. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
  225. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +62 -0
  226. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
  227. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +9 -2
  228. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
  229. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +56 -5
  230. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
  231. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.d.ts.map +1 -1
  232. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js +2 -2
  233. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BrowserConnector.js.map +1 -1
  234. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpIssue.d.ts +17 -0
  235. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpIssue.d.ts.map +1 -0
  236. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpIssue.js +23 -0
  237. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpIssue.js.map +1 -0
  238. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.d.ts +16 -0
  239. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.d.ts.map +1 -0
  240. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.js +75 -0
  241. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Extension.js.map +1 -0
  242. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts +10 -0
  243. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.d.ts.map +1 -1
  244. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js +26 -15
  245. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Frame.js.map +1 -1
  246. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +1 -1
  247. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
  248. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +38 -0
  249. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
  250. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.d.ts +9 -3
  251. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.d.ts.map +1 -1
  252. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js +31 -1
  253. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/IsolatedWorld.js.map +1 -1
  254. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +6 -0
  255. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
  256. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +49 -35
  257. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
  258. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Target.d.ts +3 -1
  259. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Target.d.ts.map +1 -1
  260. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Target.js +16 -7
  261. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Target.js.map +1 -1
  262. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts +2 -0
  263. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.d.ts.map +1 -1
  264. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js +9 -1
  265. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/TargetManager.js.map +1 -1
  266. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.d.ts +218 -0
  267. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.d.ts.map +1 -0
  268. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.js +282 -0
  269. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebMCP.js.map +1 -0
  270. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts +4 -7
  271. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +29 -4
  273. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
  274. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
  275. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
  276. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
  277. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
  278. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.d.ts +9 -0
  279. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.d.ts.map +1 -1
  280. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.js +34 -0
  281. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/utils.js.map +1 -1
  282. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +7 -0
  283. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
  284. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/types.d.ts +0 -11
  285. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/types.d.ts.map +1 -1
  286. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/injected/injected.d.ts +2 -2
  287. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts +2 -0
  288. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.d.ts.map +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js +5 -2
  290. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/BrowserLauncher.js.map +1 -1
  291. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +0 -1
  293. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core-browser.d.ts +1 -1
  295. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/puppeteer-core-browser.d.ts.map +1 -1
  296. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
  297. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
  298. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
  299. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Mutex.js +1 -1
  300. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/Mutex.js.map +1 -1
  301. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
  303. package/front_end/third_party/puppeteer/package/lib/types.d.ts +7851 -6616
  304. package/front_end/third_party/puppeteer/package/package.json +5 -6
  305. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +13 -0
  306. package/front_end/third_party/puppeteer/package/src/api/Extension.ts +98 -0
  307. package/front_end/third_party/puppeteer/package/src/api/Frame.ts +9 -0
  308. package/front_end/third_party/puppeteer/package/src/api/Issue.ts +24 -0
  309. package/front_end/third_party/puppeteer/package/src/api/Page.ts +38 -0
  310. package/front_end/third_party/puppeteer/package/src/api/Realm.ts +111 -12
  311. package/front_end/third_party/puppeteer/package/src/api/WebWorker.ts +26 -4
  312. package/front_end/third_party/puppeteer/package/src/api/api.ts +2 -0
  313. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +12 -0
  314. package/front_end/third_party/puppeteer/package/src/bidi/BrowserConnector.ts +2 -0
  315. package/front_end/third_party/puppeteer/package/src/bidi/BrowserContext.ts +7 -0
  316. package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +13 -67
  317. package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +0 -1
  318. package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +21 -2
  319. package/front_end/third_party/puppeteer/package/src/bidi/Realm.ts +39 -1
  320. package/front_end/third_party/puppeteer/package/src/bidi/Target.ts +2 -5
  321. package/front_end/third_party/puppeteer/package/src/bidi/core/Realm.ts +23 -0
  322. package/front_end/third_party/puppeteer/package/src/bidi/util.ts +94 -0
  323. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +75 -2
  324. package/front_end/third_party/puppeteer/package/src/cdp/BrowserConnector.ts +2 -0
  325. package/front_end/third_party/puppeteer/package/src/cdp/CdpIssue.ts +30 -0
  326. package/front_end/third_party/puppeteer/package/src/cdp/Extension.ts +101 -0
  327. package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +32 -22
  328. package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +44 -3
  329. package/front_end/third_party/puppeteer/package/src/cdp/IsolatedWorld.ts +40 -2
  330. package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +61 -47
  331. package/front_end/third_party/puppeteer/package/src/cdp/Target.ts +17 -7
  332. package/front_end/third_party/puppeteer/package/src/cdp/TargetManager.ts +14 -1
  333. package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +441 -0
  334. package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +38 -12
  335. package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
  336. package/front_end/third_party/puppeteer/package/src/cdp/utils.ts +52 -0
  337. package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +7 -0
  338. package/front_end/third_party/puppeteer/package/src/common/types.ts +0 -14
  339. package/front_end/third_party/puppeteer/package/src/node/BrowserLauncher.ts +7 -0
  340. package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +0 -1
  341. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  342. package/front_end/third_party/puppeteer/package/src/util/Mutex.ts +1 -1
  343. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  344. package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +5 -0
  345. package/front_end/ui/legacy/Treeoutline.ts +13 -0
  346. package/front_end/ui/visual_logging/KnownContextValues.ts +1 -0
  347. package/package.json +1 -1
@@ -152,6 +152,10 @@ export class TargetManager
152
152
  await this.#initializeDeferred.valueOrThrow();
153
153
  }
154
154
 
155
+ addToIgnoreTarget(targetId: string): void {
156
+ this.#ignoredTargets.add(targetId);
157
+ }
158
+
155
159
  getChildTargets(target: CdpTarget): ReadonlySet<CdpTarget> {
156
160
  return target._childTargets();
157
161
  }
@@ -172,6 +176,10 @@ export class TargetManager
172
176
  return this.#attachedTargetsByTargetId;
173
177
  }
174
178
 
179
+ getDiscoveredTargetInfos(): ReadonlyMap<string, Protocol.Target.TargetInfo> {
180
+ return this.#discoveredTargetsByTargetId;
181
+ }
182
+
175
183
  #setupAttachmentListeners(session: CDPSession | Connection): void {
176
184
  const listener = (event: Protocol.Target.AttachedToTargetEvent) => {
177
185
  void this.#onAttachedToTarget(session, event);
@@ -256,6 +264,7 @@ export class TargetManager
256
264
  const targetInfo = this.#discoveredTargetsByTargetId.get(event.targetId);
257
265
  this.#discoveredTargetsByTargetId.delete(event.targetId);
258
266
  this.#finishInitializationIfReady(event.targetId);
267
+
259
268
  if (targetInfo?.type === 'service_worker') {
260
269
  // Special case for service workers: report TargetGone event when
261
270
  // the worker is destroyed.
@@ -333,7 +342,11 @@ export class TargetManager
333
342
  // CDP.
334
343
  if (targetInfo.type === 'service_worker') {
335
344
  await this.#silentDetach(session, parentSession);
336
- if (this.#attachedTargetsByTargetId.has(targetInfo.targetId)) {
345
+ if (
346
+ this.#attachedTargetsByTargetId.has(targetInfo.targetId) ||
347
+ this.#ignoredTargets.has(targetInfo.targetId) ||
348
+ !this.#discoveredTargetsByTargetId.has(targetInfo.targetId)
349
+ ) {
337
350
  return;
338
351
  }
339
352
  const target = this.#targetFactory(targetInfo);
@@ -0,0 +1,441 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google Inc.
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import type {Protocol} from 'devtools-protocol';
8
+
9
+ import type {CDPSession} from '../api/CDPSession.js';
10
+ import type {ElementHandle} from '../api/ElementHandle.js';
11
+ import type {Frame} from '../api/Frame.js';
12
+ import type {ConsoleMessageLocation} from '../common/ConsoleMessage.js';
13
+ import {EventEmitter} from '../common/EventEmitter.js';
14
+ import {debugError} from '../common/util.js';
15
+
16
+ import type {CdpFrame} from './Frame.js';
17
+ import type {FrameManager} from './FrameManager.js';
18
+ import {FrameManagerEvent} from './FrameManagerEvents.js';
19
+ import {MAIN_WORLD} from './IsolatedWorlds.js';
20
+
21
+ /**
22
+ * Tool annotations
23
+ *
24
+ * @public
25
+ */
26
+ export interface WebMCPAnnotation {
27
+ /**
28
+ * A hint indicating that the tool does not modify any state.
29
+ */
30
+ readOnly?: boolean;
31
+ /**
32
+ * If the declarative tool was declared with the autosubmit attribute.
33
+ */
34
+ autosubmit?: boolean;
35
+ }
36
+
37
+ /**
38
+ * Represents the status of a tool invocation.
39
+ *
40
+ * @public
41
+ */
42
+ export type WebMCPInvocationStatus = 'Completed' | 'Canceled' | 'Error';
43
+
44
+ interface ProtocolWebMCPTool {
45
+ name: string;
46
+ description: string;
47
+ inputSchema?: object;
48
+ annotations?: WebMCPAnnotation;
49
+ frameId: string;
50
+ backendNodeId?: number;
51
+ stackTrace?: Protocol.Runtime.StackTrace;
52
+ }
53
+
54
+ interface ProtocolWebMCPToolsAddedEvent {
55
+ tools: ProtocolWebMCPTool[];
56
+ }
57
+
58
+ interface ProtocolWebMCPToolsRemovedEvent {
59
+ tools: ProtocolWebMCPTool[];
60
+ }
61
+
62
+ interface ProtocolWebMCPToolInvokedEvent {
63
+ toolName: string;
64
+ frameId: string;
65
+ invocationId: string;
66
+ input: string;
67
+ }
68
+
69
+ interface ProtocolWebMCPToolRespondedEvent {
70
+ invocationId: string;
71
+ status: WebMCPInvocationStatus;
72
+ output?: any;
73
+ errorText?: string;
74
+ exception?: Protocol.Runtime.RemoteObject;
75
+ }
76
+
77
+ /**
78
+ * Represents a registered WebMCP tool available on the page.
79
+ *
80
+ * @public
81
+ */
82
+ export class WebMCPTool extends EventEmitter<{
83
+ /** Emitted when invocation starts. */
84
+ toolinvoked: WebMCPToolCall;
85
+ }> {
86
+ #webmcp: WebMCP;
87
+ #backendNodeId?: number;
88
+ #formElement?: ElementHandle<HTMLFormElement>;
89
+
90
+ /**
91
+ * Tool name.
92
+ */
93
+ name: string;
94
+ /**
95
+ * Tool description.
96
+ */
97
+ description: string;
98
+ /**
99
+ * Schema for the tool's input parameters.
100
+ */
101
+ inputSchema?: object;
102
+ /**
103
+ * Optional annotations for the tool.
104
+ */
105
+ annotations?: WebMCPAnnotation;
106
+ /**
107
+ * Frame the tool was defined for.
108
+ */
109
+ frame: Frame;
110
+ /**
111
+ * Source location that defined the tool (if available).
112
+ */
113
+ location?: ConsoleMessageLocation;
114
+ /**
115
+ * @internal
116
+ */
117
+ rawStackTrace?: Protocol.Runtime.StackTrace;
118
+
119
+ /**
120
+ * @internal
121
+ */
122
+ constructor(webmcp: WebMCP, tool: ProtocolWebMCPTool, frame: Frame) {
123
+ super();
124
+ this.#webmcp = webmcp;
125
+ this.name = tool.name;
126
+ this.description = tool.description;
127
+ this.inputSchema = tool.inputSchema;
128
+ this.annotations = tool.annotations;
129
+ this.frame = frame;
130
+ this.#backendNodeId = tool.backendNodeId;
131
+ if (tool.stackTrace?.callFrames.length) {
132
+ this.location = {
133
+ url: tool.stackTrace.callFrames[0]!.url,
134
+ lineNumber: tool.stackTrace.callFrames[0]!.lineNumber,
135
+ columnNumber: tool.stackTrace.callFrames[0]!.columnNumber,
136
+ };
137
+ }
138
+ this.rawStackTrace = tool.stackTrace;
139
+ }
140
+
141
+ /**
142
+ * The corresponding ElementHandle when tool was registered via a form.
143
+ */
144
+ get formElement(): Promise<ElementHandle<HTMLFormElement> | undefined> {
145
+ return (async () => {
146
+ if (this.#formElement && !this.#formElement.disposed) {
147
+ return this.#formElement;
148
+ }
149
+ if (!this.#backendNodeId) {
150
+ return undefined;
151
+ }
152
+ this.#formElement = (await (this.frame as CdpFrame).worlds[
153
+ MAIN_WORLD
154
+ ].adoptBackendNode(
155
+ this.#backendNodeId,
156
+ )) as ElementHandle<HTMLFormElement>;
157
+ return this.#formElement;
158
+ })();
159
+ }
160
+
161
+ /**
162
+ * Executes tool with input parameters, matching tool's `inputSchema`.
163
+ */
164
+ async execute(input: object = {}): Promise<WebMCPToolCallResult> {
165
+ const {invocationId} = await this.#webmcp.invokeTool(this, input);
166
+ return await new Promise<WebMCPToolCallResult>(resolve => {
167
+ const handler = (event: WebMCPToolCallResult) => {
168
+ if (event.id === invocationId) {
169
+ this.#webmcp.off('toolresponded', handler);
170
+ resolve(event);
171
+ }
172
+ };
173
+ this.#webmcp.on('toolresponded', handler);
174
+ });
175
+ }
176
+ }
177
+
178
+ /**
179
+ * @public
180
+ */
181
+ export interface WebMCPToolsAddedEvent {
182
+ /**
183
+ * Array of tools that were added.
184
+ */
185
+ tools: WebMCPTool[];
186
+ }
187
+
188
+ /**
189
+ * @public
190
+ */
191
+ export interface WebMCPToolsRemovedEvent {
192
+ /**
193
+ * Array of tools that were removed.
194
+ */
195
+ tools: WebMCPTool[];
196
+ }
197
+
198
+ /**
199
+ * @public
200
+ */
201
+ export class WebMCPToolCall {
202
+ /**
203
+ * Tool invocation identifier.
204
+ */
205
+ id: string;
206
+ /**
207
+ * Tool that was called.
208
+ */
209
+ tool: WebMCPTool;
210
+ /**
211
+ * The input parameters used for the call.
212
+ */
213
+ input: object;
214
+
215
+ /**
216
+ * @internal
217
+ */
218
+ constructor(invocationId: string, tool: WebMCPTool, input: string) {
219
+ this.id = invocationId;
220
+ this.tool = tool;
221
+ try {
222
+ this.input = JSON.parse(input);
223
+ } catch (error) {
224
+ this.input = {};
225
+ debugError(error);
226
+ }
227
+ }
228
+ }
229
+
230
+ /**
231
+ * @public
232
+ */
233
+ export interface WebMCPToolCallResult {
234
+ /**
235
+ * Tool invocation identifier.
236
+ */
237
+ id: string;
238
+ /**
239
+ * The corresponding tool call if available.
240
+ */
241
+ call?: WebMCPToolCall;
242
+ /**
243
+ * Status of the invocation.
244
+ */
245
+ status: WebMCPInvocationStatus;
246
+ /**
247
+ * Output or error delivered as delivered to the agent. Missing if `status` is anything
248
+ * other than Completed.
249
+ */
250
+ output?: any;
251
+ /**
252
+ * Error text.
253
+ */
254
+ errorText?: string;
255
+ /**
256
+ * The exception object, if the javascript tool threw an error.
257
+ */
258
+ exception?: Protocol.Runtime.RemoteObject;
259
+ }
260
+
261
+ /**
262
+ * The experimental WebMCP class provides an API for the WebMCP API.
263
+ *
264
+ * See the
265
+ * {@link https://pptr.dev/guides/webmcp|WebMCP guide}
266
+ * for more details.
267
+ *
268
+ * @example
269
+ *
270
+ * ```ts
271
+ * await page.goto('https://www.example.com');
272
+ * const tools = page.webmcp.tools();
273
+ * for (const tool of tools) {
274
+ * console.log(`Tool found: ${tool.name} - ${tool.description}`);
275
+ * }
276
+ * ```
277
+ *
278
+ * @experimental
279
+ * @public
280
+ */
281
+ export class WebMCP extends EventEmitter<{
282
+ /** Emitted when tools are added. */
283
+ toolsadded: WebMCPToolsAddedEvent;
284
+ /** Emitted when tools are removed. */
285
+ toolsremoved: WebMCPToolsRemovedEvent;
286
+ /** Emitted when a tool invocation starts. */
287
+ toolinvoked: WebMCPToolCall;
288
+ /** Emitted when a tool invocation completes or fails. */
289
+ toolresponded: WebMCPToolCallResult;
290
+ }> {
291
+ #client: CDPSession;
292
+ #frameManager: FrameManager;
293
+ #tools = new Map<string, Map<string, WebMCPTool>>();
294
+ #pendingCalls = new Map<string, WebMCPToolCall>();
295
+
296
+ #onToolsAdded = (event: ProtocolWebMCPToolsAddedEvent) => {
297
+ const tools: WebMCPTool[] = [];
298
+ for (const tool of event.tools) {
299
+ const frame = this.#frameManager.frame(tool.frameId);
300
+ if (!frame) {
301
+ continue;
302
+ }
303
+
304
+ const frameTools = this.#tools.get(tool.frameId) ?? new Map();
305
+ if (!this.#tools.has(tool.frameId)) {
306
+ this.#tools.set(tool.frameId, frameTools);
307
+ }
308
+
309
+ const addedTool = new WebMCPTool(this, tool, frame);
310
+ frameTools.set(tool.name, addedTool);
311
+ tools.push(addedTool);
312
+ }
313
+
314
+ this.emit('toolsadded', {tools});
315
+ };
316
+
317
+ #onToolsRemoved = (event: ProtocolWebMCPToolsRemovedEvent) => {
318
+ const tools: WebMCPTool[] = [];
319
+ event.tools.forEach(tool => {
320
+ const removedTool = this.#tools.get(tool.frameId)?.get(tool.name);
321
+ if (removedTool) {
322
+ tools.push(removedTool);
323
+ }
324
+ this.#tools.get(tool.frameId)?.delete(tool.name);
325
+ });
326
+ this.emit('toolsremoved', {tools});
327
+ };
328
+
329
+ #onToolInvoked = (event: ProtocolWebMCPToolInvokedEvent) => {
330
+ const tool = this.#tools.get(event.frameId)?.get(event.toolName);
331
+ if (!tool) {
332
+ return;
333
+ }
334
+ const call = new WebMCPToolCall(event.invocationId, tool, event.input);
335
+ this.#pendingCalls.set(call.id, call);
336
+ tool.emit('toolinvoked', call);
337
+ this.emit('toolinvoked', call);
338
+ };
339
+
340
+ #onToolResponded = (event: ProtocolWebMCPToolRespondedEvent) => {
341
+ const call = this.#pendingCalls.get(event.invocationId);
342
+ if (call) {
343
+ this.#pendingCalls.delete(event.invocationId);
344
+ }
345
+ const response: WebMCPToolCallResult = {
346
+ id: event.invocationId,
347
+ call: call,
348
+ status: event.status,
349
+ output: event.output,
350
+ errorText: event.errorText,
351
+ exception: event.exception,
352
+ };
353
+ this.emit('toolresponded', response);
354
+ };
355
+
356
+ #onFrameNavigated = (frame: Frame) => {
357
+ this.#pendingCalls.clear();
358
+ const frameTools = this.#tools.get(frame._id);
359
+ if (!frameTools) {
360
+ return;
361
+ }
362
+ const tools = Array.from(frameTools.values());
363
+ this.#tools.delete(frame._id);
364
+ if (tools.length) {
365
+ this.emit('toolsremoved', {tools});
366
+ }
367
+ };
368
+
369
+ /**
370
+ * @internal
371
+ */
372
+ constructor(client: CDPSession, frameManager: FrameManager) {
373
+ super();
374
+ this.#client = client;
375
+ this.#frameManager = frameManager;
376
+ this.#frameManager.on(
377
+ FrameManagerEvent.FrameNavigated,
378
+ this.#onFrameNavigated,
379
+ );
380
+ this.#bindListeners();
381
+ }
382
+
383
+ /**
384
+ * @internal
385
+ */
386
+ async initialize(): Promise<void> {
387
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
388
+ return await this.#client.send('WebMCP.enable').catch(debugError);
389
+ }
390
+
391
+ /**
392
+ * @internal
393
+ */
394
+ async invokeTool(
395
+ tool: WebMCPTool,
396
+ input: object,
397
+ ): Promise<{invocationId: string}> {
398
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
399
+ return await this.#client.send('WebMCP.invokeTool', {
400
+ frameId: tool.frame._id,
401
+ toolName: tool.name,
402
+ input,
403
+ });
404
+ }
405
+
406
+ /**
407
+ * Gets all WebMCP tools defined by the page.
408
+ */
409
+ tools(): WebMCPTool[] {
410
+ return Array.from(this.#tools.values()).flatMap(toolMap => {
411
+ return Array.from(toolMap.values());
412
+ });
413
+ }
414
+
415
+ #bindListeners(): void {
416
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
417
+ this.#client.on('WebMCP.toolsAdded', this.#onToolsAdded);
418
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
419
+ this.#client.on('WebMCP.toolsRemoved', this.#onToolsRemoved);
420
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
421
+ this.#client.on('WebMCP.toolInvoked', this.#onToolInvoked);
422
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
423
+ this.#client.on('WebMCP.toolResponded', this.#onToolResponded);
424
+ }
425
+
426
+ /**
427
+ * @internal
428
+ */
429
+ updateClient(client: CDPSession): void {
430
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
431
+ this.#client.off('WebMCP.toolsAdded', this.#onToolsAdded);
432
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
433
+ this.#client.off('WebMCP.toolsRemoved', this.#onToolsRemoved);
434
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
435
+ this.#client.off('WebMCP.toolInvoked', this.#onToolInvoked);
436
+ // @ts-expect-error WebMCP is not yet in the Protocol types.
437
+ this.#client.off('WebMCP.toolResponded', this.#onToolResponded);
438
+ this.#client = client;
439
+ this.#bindListeners();
440
+ }
441
+ }
@@ -8,21 +8,20 @@ import type {Protocol} from 'devtools-protocol';
8
8
  import {CDPSessionEvent, type CDPSession} from '../api/CDPSession.js';
9
9
  import type {Realm} from '../api/Realm.js';
10
10
  import {TargetType} from '../api/Target.js';
11
- import {WebWorker} from '../api/WebWorker.js';
11
+ import {
12
+ WebWorker,
13
+ WebWorkerEvent,
14
+ type WebWorkerEvents,
15
+ } from '../api/WebWorker.js';
16
+ import {EventEmitter} from '../common/EventEmitter.js';
12
17
  import {TimeoutSettings} from '../common/TimeoutSettings.js';
13
18
  import {debugError} from '../common/util.js';
14
19
 
15
20
  import {ExecutionContext} from './ExecutionContext.js';
16
21
  import {IsolatedWorld} from './IsolatedWorld.js';
22
+ import {MAIN_WORLD} from './IsolatedWorlds.js';
17
23
  import type {NetworkManager} from './NetworkManager.js';
18
-
19
- /**
20
- * @internal
21
- */
22
- export type ConsoleAPICalledCallback = (
23
- world: IsolatedWorld,
24
- event: Protocol.Runtime.ConsoleAPICalledEvent,
25
- ) => void;
24
+ import {createConsoleMessage} from './utils.js';
26
25
 
27
26
  /**
28
27
  * @internal
@@ -39,13 +38,17 @@ export class CdpWebWorker extends WebWorker {
39
38
  #client: CDPSession;
40
39
  readonly #id: string;
41
40
  readonly #targetType: TargetType;
41
+ readonly #emitter: EventEmitter<WebWorkerEvents>;
42
+
43
+ get internalEmitter(): EventEmitter<WebWorkerEvents> {
44
+ return this.#emitter;
45
+ }
42
46
 
43
47
  constructor(
44
48
  client: CDPSession,
45
49
  url: string,
46
50
  targetId: string,
47
51
  targetType: TargetType,
48
- consoleAPICalled: ConsoleAPICalledCallback,
49
52
  exceptionThrown: ExceptionThrownCallback,
50
53
  networkManager?: NetworkManager,
51
54
  ) {
@@ -53,7 +56,8 @@ export class CdpWebWorker extends WebWorker {
53
56
  this.#id = targetId;
54
57
  this.#client = client;
55
58
  this.#targetType = targetType;
56
- this.#world = new IsolatedWorld(this, new TimeoutSettings());
59
+ this.#world = new IsolatedWorld(this, new TimeoutSettings(), MAIN_WORLD);
60
+ this.#emitter = new EventEmitter<WebWorkerEvents>();
57
61
 
58
62
  this.#client.once('Runtime.executionContextCreated', async event => {
59
63
  this.#world.setContext(
@@ -62,7 +66,29 @@ export class CdpWebWorker extends WebWorker {
62
66
  });
63
67
  this.#world.emitter.on('consoleapicalled', async event => {
64
68
  try {
65
- return consoleAPICalled(this.#world, event);
69
+ const values = event.args.map(arg => {
70
+ return this.#world.createCdpHandle(arg);
71
+ });
72
+
73
+ const noInternalListeners =
74
+ this.#emitter.listenerCount(WebWorkerEvent.Console) === 0;
75
+ const noWorkerListeners =
76
+ this.listenerCount(WebWorkerEvent.Console) === 0;
77
+
78
+ if (noInternalListeners && noWorkerListeners) {
79
+ // eslint-disable-next-line max-len -- The comment is long.
80
+ // eslint-disable-next-line @puppeteer/use-using -- These are not owned by this function.
81
+ for (const value of values) {
82
+ void value.dispose().catch(debugError);
83
+ }
84
+ return;
85
+ }
86
+
87
+ const consoleMessages = createConsoleMessage(event, values, this.#id);
88
+ this.#emitter.emit(WebWorkerEvent.Console, consoleMessages);
89
+ if (!noWorkerListeners) {
90
+ this.emit(WebWorkerEvent.Console, consoleMessages);
91
+ }
66
92
  } catch (err) {
67
93
  debugError(err);
68
94
  }
@@ -39,5 +39,6 @@ export * from './Target.js';
39
39
  export * from './TargetManager.js';
40
40
  export * from './TargetManageEvents.js';
41
41
  export * from './Tracing.js';
42
+ export * from './WebMCP.js';
42
43
  export * from './utils.js';
43
44
  export * from './WebWorker.js';
@@ -7,9 +7,49 @@
7
7
  import type {Protocol} from 'devtools-protocol';
8
8
 
9
9
  import type {JSHandle} from '../api/JSHandle.js';
10
+ import {
11
+ ConsoleMessage,
12
+ type ConsoleMessageType,
13
+ } from '../common/ConsoleMessage.js';
10
14
  import {PuppeteerURL, evaluationString} from '../common/util.js';
11
15
  import {assert} from '../util/assert.js';
12
16
 
17
+ /**
18
+ * @internal
19
+ */
20
+ export function createConsoleMessage(
21
+ event: Protocol.Runtime.ConsoleAPICalledEvent,
22
+ values: JSHandle[],
23
+ targetId?: string,
24
+ ): ConsoleMessage {
25
+ const textTokens = [];
26
+ // eslint-disable-next-line max-len -- The comment is long.
27
+ // eslint-disable-next-line @puppeteer/use-using -- These are not owned by this function.
28
+ for (const arg of values) {
29
+ textTokens.push(valueFromJSHandle(arg));
30
+ }
31
+ const stackTraceLocations = [];
32
+ if (event.stackTrace) {
33
+ for (const callFrame of event.stackTrace.callFrames) {
34
+ stackTraceLocations.push({
35
+ url: callFrame.url,
36
+ lineNumber: callFrame.lineNumber,
37
+ columnNumber: callFrame.columnNumber,
38
+ });
39
+ }
40
+ }
41
+
42
+ return new ConsoleMessage(
43
+ convertConsoleMessageLevel(event.type),
44
+ textTokens.join(' '),
45
+ values,
46
+ stackTraceLocations,
47
+ undefined,
48
+ event.stackTrace,
49
+ targetId,
50
+ );
51
+ }
52
+
13
53
  /**
14
54
  * @internal
15
55
  */
@@ -269,3 +309,15 @@ export const CDP_BINDING_PREFIX = 'puppeteer_';
269
309
  export function pageBindingInitString(type: string, name: string): string {
270
310
  return evaluationString(addPageBinding, type, name, CDP_BINDING_PREFIX);
271
311
  }
312
+
313
+ /**
314
+ * @internal
315
+ */
316
+ export function convertConsoleMessageLevel(method: string): ConsoleMessageType {
317
+ switch (method) {
318
+ case 'warning':
319
+ return 'warn';
320
+ default:
321
+ return method as ConsoleMessageType;
322
+ }
323
+ }
@@ -78,6 +78,13 @@ export interface ConnectOptions {
78
78
  * @defaultValue `true`
79
79
  */
80
80
  networkEnabled?: boolean;
81
+ /**
82
+ * Experimental setting to disable monitoring issue events by default.
83
+ *
84
+ * @experimental
85
+ * @defaultValue `true`
86
+ */
87
+ issuesEnabled?: boolean;
81
88
  /**
82
89
  * Sets the viewport for each page.
83
90
  *
@@ -9,8 +9,6 @@ import type {ParseSelector} from 'typed-query-selector/parser.js';
9
9
  import type {ElementHandle} from '../api/ElementHandle.js';
10
10
  import type {JSHandle} from '../api/JSHandle.js';
11
11
 
12
- import type {LazyArg} from './LazyArg.js';
13
-
14
12
  /**
15
13
  * @public
16
14
  */
@@ -77,18 +75,6 @@ export type HandleOr<T> = HandleFor<T> | JSHandle<T> | T;
77
75
  */
78
76
  export type FlattenHandle<T> = T extends HandleOr<infer U> ? U : never;
79
77
 
80
- /**
81
- * @internal
82
- */
83
- export type FlattenLazyArg<T> = T extends LazyArg<infer U> ? U : T;
84
-
85
- /**
86
- * @internal
87
- */
88
- export type InnerLazyParams<T extends unknown[]> = {
89
- [K in keyof T]: FlattenLazyArg<T[K]>;
90
- };
91
-
92
78
  /**
93
79
  * @public
94
80
  */