chrome-devtools-frontend 1.0.1668390 → 1.0.1672388

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 (361) hide show
  1. package/.agents/skills/devtools-ci/SKILL.md +65 -0
  2. package/.agents/skills/fixing-skipped-tests/SKILL.md +6 -6
  3. package/.agents/skills/gerrit-cli/SKILL.md +53 -0
  4. package/.agents/skills/gerrit-cli/references/commands.md +136 -0
  5. package/.agents/skills/gerrit-cli/references/workflows.md +63 -0
  6. package/.agents/skills/gerrit-cli/scripts/import_upstream.py +112 -0
  7. package/config/typescript/tsconfig.eslint.json +1 -1
  8. package/docs/contributing/infrastructure.md +7 -1
  9. package/docs/contributing/settings-experiments-features.md +2 -8
  10. package/docs/ecosystem/automatic_workspace_folders.md +0 -19
  11. package/eslint.config.mjs +2 -2
  12. package/front_end/core/common/Lazy.ts +3 -3
  13. package/front_end/core/common/SettingRegistration.ts +0 -7
  14. package/front_end/core/common/Settings.ts +0 -38
  15. package/front_end/core/host/AidaClient.ts +66 -47
  16. package/front_end/core/host/GcaClient.ts +4 -6
  17. package/front_end/core/host/ResourceLoader.ts +4 -2
  18. package/front_end/core/host/UserMetrics.ts +187 -953
  19. package/front_end/core/host/UserMetricsEnums.d.ts +949 -0
  20. package/front_end/core/root/Runtime.ts +21 -138
  21. package/front_end/core/sdk/CSSMetadata.ts +70 -65
  22. package/front_end/core/sdk/CategorizedBreakpoint.ts +0 -1
  23. package/front_end/core/sdk/ChildTargetManager.ts +0 -2
  24. package/front_end/core/sdk/ConsoleModel.ts +3 -2
  25. package/front_end/core/sdk/DebuggerModel.ts +14 -6
  26. package/front_end/core/sdk/EmulationModel.ts +0 -2
  27. package/front_end/core/sdk/EventBreakpointsModel.ts +0 -4
  28. package/front_end/core/sdk/NetworkManager.ts +0 -3
  29. package/front_end/core/sdk/PageResourceLoader.ts +9 -9
  30. package/front_end/core/sdk/RehydratingConnection.ts +52 -4
  31. package/front_end/core/sdk/SDKSettings.ts +19 -0
  32. package/front_end/core/sdk/Target.ts +0 -4
  33. package/front_end/core/sdk/sdk-meta.ts +0 -58
  34. package/front_end/devtools_compatibility.js +886 -0
  35. package/front_end/entrypoints/inspector_main/RenderingOptions.ts +7 -6
  36. package/front_end/entrypoints/main/ExecutionContextSelector.ts +0 -1
  37. package/front_end/entrypoints/main/MainImpl.ts +18 -22
  38. package/front_end/foundation/Universe.ts +7 -2
  39. package/front_end/generated/InspectorBackendCommands.ts +5 -12
  40. package/front_end/generated/protocol-mapping.d.ts +0 -42
  41. package/front_end/generated/protocol-proxy-api.d.ts +0 -38
  42. package/front_end/generated/protocol.ts +20 -172
  43. package/front_end/models/ai_assistance/AiAgent2.ts +11 -3
  44. package/front_end/models/ai_assistance/AiConversation.ts +1 -0
  45. package/front_end/models/ai_assistance/AiHistoryStorage.ts +8 -5
  46. package/front_end/models/ai_assistance/AiSetting.ts +108 -0
  47. package/front_end/models/ai_assistance/AiUtils.ts +114 -4
  48. package/front_end/models/ai_assistance/ChangeManager.ts +1 -0
  49. package/front_end/models/ai_assistance/ExtensionScope.ts +3 -12
  50. package/front_end/models/ai_assistance/StorageItem.ts +26 -5
  51. package/front_end/models/ai_assistance/agents/AiAgent.ts +11 -18
  52. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +3 -0
  53. package/front_end/models/ai_assistance/agents/ExecuteJavascript.ts +42 -17
  54. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +3 -2
  55. package/front_end/models/ai_assistance/agents/StorageAgent.ts +253 -155
  56. package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
  57. package/front_end/models/ai_assistance/ai_assistance.ts +4 -0
  58. package/front_end/models/ai_assistance/contexts/PerformanceTraceContext.ts +12 -6
  59. package/front_end/models/ai_assistance/data_formatters/FileFormatter.ts +3 -1
  60. package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +1 -0
  61. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +1 -0
  62. package/front_end/models/ai_assistance/injected.ts +1 -0
  63. package/front_end/models/ai_assistance/performance/AICallTree.ts +1 -0
  64. package/front_end/models/ai_assistance/skills/Skill.ts +1 -1
  65. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +2 -0
  66. package/front_end/models/ai_assistance/skills/performance.md +10 -0
  67. package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +52 -5
  68. package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +4 -4
  69. package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +4 -4
  70. package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +5 -4
  71. package/front_end/models/ai_assistance/tools/GetStyles.ts +5 -4
  72. package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +5 -4
  73. package/front_end/models/ai_assistance/tools/README.md +1 -1
  74. package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +63 -0
  75. package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +5 -5
  76. package/front_end/models/ai_assistance/tools/Tool.ts +118 -24
  77. package/front_end/models/ai_assistance/tools/ToolRegistry.ts +2 -0
  78. package/front_end/models/ai_code_completion/AiCodeCompletion.ts +2 -19
  79. package/front_end/models/ai_code_generation/AiCodeGeneration.ts +2 -3
  80. package/front_end/models/badges/UserBadges.ts +2 -0
  81. package/front_end/models/bindings/NetworkProject.ts +5 -0
  82. package/front_end/models/bindings/ResourceScriptMapping.ts +2 -0
  83. package/front_end/models/bindings/ResourceUtils.ts +3 -0
  84. package/front_end/models/crux-manager/CrUXManager.ts +1 -0
  85. package/front_end/models/emulation/DeviceModeModel.ts +140 -7
  86. package/front_end/models/emulation/EmulatedDevices.ts +246 -793
  87. package/front_end/models/issues_manager/IssuesManager.ts +10 -2
  88. package/front_end/models/live-metrics/LiveMetrics.ts +41 -9
  89. package/front_end/models/logs/LogManager.ts +8 -5
  90. package/front_end/models/logs/NetworkLog.ts +1 -0
  91. package/front_end/models/persistence/IsolatedFileSystemManager.ts +21 -3
  92. package/front_end/models/persistence/NetworkPersistenceManager.ts +6 -0
  93. package/front_end/models/project_settings/ProjectSettingsModel.ts +8 -12
  94. package/front_end/models/trace/handlers/RendererHandler.ts +20 -4
  95. package/front_end/models/trace/types/File.ts +1 -0
  96. package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +3 -1
  97. package/front_end/models/workspace/IgnoreListManager.ts +2 -0
  98. package/front_end/models/workspace/UISourceCode.ts +2 -10
  99. package/front_end/models/workspace_diff/WorkspaceDiff.ts +4 -0
  100. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +83 -204
  101. package/front_end/panels/ai_assistance/ai_assistance-meta.ts +0 -7
  102. package/front_end/panels/ai_assistance/components/ChatInput.ts +29 -8
  103. package/front_end/panels/ai_assistance/components/ChatMessage.ts +83 -94
  104. package/front_end/panels/ai_assistance/components/ChatView.ts +14 -8
  105. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +1 -2
  106. package/front_end/panels/ai_assistance/components/chatMessage.css +2 -20
  107. package/front_end/panels/ai_assistance/components/walkthroughView.css +1 -1
  108. package/front_end/panels/application/ApplicationPanelSidebar.ts +11 -108
  109. package/front_end/panels/application/ApplicationPanelTreeElement.ts +41 -3
  110. package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +116 -79
  111. package/front_end/panels/application/ServiceWorkersView.ts +8 -8
  112. package/front_end/panels/application/application.ts +2 -10
  113. package/front_end/panels/application/components/AdsView.ts +10 -6
  114. package/front_end/panels/application/components/components.ts +0 -4
  115. package/front_end/panels/application/preloading/PreloadingView.ts +53 -45
  116. package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +111 -119
  117. package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +21 -23
  118. package/front_end/panels/application/serviceWorkerUpdateCycleView.css +105 -102
  119. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +0 -5
  120. package/front_end/panels/browser_debugger/EventListenerBreakpointsSidebarPane.ts +6 -12
  121. package/front_end/panels/browser_debugger/browser_debugger-meta.ts +5 -3
  122. package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +107 -96
  123. package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +17 -19
  124. package/front_end/panels/common/AiCodeCompletionTeaser.ts +6 -6
  125. package/front_end/panels/common/AiCodeGenerationTeaser.ts +28 -26
  126. package/front_end/panels/common/common.ts +1 -1
  127. package/front_end/panels/console/ConsoleFormat.ts +2 -62
  128. package/front_end/panels/console/ConsoleInsightTeaser.ts +3 -6
  129. package/front_end/panels/console/ConsoleView.ts +6 -4
  130. package/front_end/panels/console/ConsoleViewMessage.ts +15 -8
  131. package/front_end/panels/console/console-meta.ts +28 -0
  132. package/front_end/panels/elements/StylesAiCodeCompletionProvider.ts +1 -1
  133. package/front_end/panels/elements/StylesSidebarPane.ts +3 -2
  134. package/front_end/panels/emulation/AdvancedApp.ts +1 -2
  135. package/front_end/panels/emulation/DeviceModeToolbar.ts +83 -69
  136. package/front_end/panels/emulation/DeviceModeView.ts +4 -134
  137. package/front_end/panels/emulation/DeviceModeWrapper.ts +70 -73
  138. package/front_end/panels/emulation/MediaQueryInspector.ts +2 -2
  139. package/front_end/panels/emulation/emulation-meta.ts +12 -12
  140. package/front_end/panels/explain/components/ConsoleInsight.ts +4 -6
  141. package/front_end/panels/explain/explain-meta.ts +7 -49
  142. package/front_end/panels/issues/IssuesPane.ts +3 -1
  143. package/front_end/panels/lighthouse/LighthouseController.ts +6 -0
  144. package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +17 -21
  145. package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +206 -126
  146. package/front_end/panels/linear_memory_inspector/components/linearMemoryInspector.css +1 -1
  147. package/front_end/panels/mobile_throttling/CalibrationController.ts +1 -1
  148. package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +3 -3
  149. package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +6 -6
  150. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +11 -11
  151. package/front_end/panels/mobile_throttling/ThrottlingManager.ts +13 -13
  152. package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +10 -10
  153. package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +28 -28
  154. package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +6 -6
  155. package/front_end/panels/network/NetworkDataGridNode.ts +1 -1
  156. package/front_end/panels/network/NetworkLogView.ts +1 -0
  157. package/front_end/panels/network/RequestHeadersView.ts +1 -1
  158. package/front_end/panels/network/ResourceChunkView.ts +281 -156
  159. package/front_end/panels/network/ResourceDirectSocketChunkView.ts +52 -28
  160. package/front_end/panels/network/ResourceWebSocketFrameView.ts +20 -34
  161. package/front_end/panels/network/resourceChunkView.css +41 -36
  162. package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +21 -12
  163. package/front_end/panels/profiler/profiler.ts +4 -0
  164. package/front_end/panels/recorder/RecorderPanel.ts +6 -14
  165. package/front_end/panels/screencast/ScreencastView.ts +401 -260
  166. package/front_end/panels/screencast/screencastView.css +113 -100
  167. package/front_end/panels/sensors/LocationsSettingsTab.ts +113 -129
  168. package/front_end/panels/sensors/locationsSettingsTab.css +4 -4
  169. package/front_end/panels/settings/AISettingsTab.ts +92 -131
  170. package/front_end/panels/settings/SettingsScreen.ts +8 -13
  171. package/front_end/panels/settings/components/SyncSection.ts +3 -4
  172. package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +200 -18
  173. package/front_end/panels/settings/emulation/devicesSettingsTab.css +18 -0
  174. package/front_end/panels/settings/settings-meta.ts +0 -1
  175. package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +2 -2
  176. package/front_end/panels/snippets/SnippetsQuickOpen.ts +4 -4
  177. package/front_end/panels/sources/AddSourceMapURLDialog.ts +3 -3
  178. package/front_end/panels/sources/AiCodeCompletionPlugin.ts +4 -3
  179. package/front_end/panels/sources/BreakpointEditDialog.ts +14 -14
  180. package/front_end/panels/sources/BreakpointsView.ts +14 -14
  181. package/front_end/panels/sources/CallStackSidebarPane.ts +6 -6
  182. package/front_end/panels/sources/CategorizedBreakpointL10n.ts +18 -20
  183. package/front_end/panels/sources/CoveragePlugin.ts +7 -7
  184. package/front_end/panels/sources/DebuggerPausedMessage.ts +34 -28
  185. package/front_end/panels/sources/DebuggerPlugin.ts +30 -30
  186. package/front_end/panels/sources/EditingLocationHistoryManager.ts +12 -9
  187. package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +2 -2
  188. package/front_end/panels/sources/GoToLineQuickOpen.ts +10 -10
  189. package/front_end/panels/sources/NavigatorView.ts +34 -27
  190. package/front_end/panels/sources/OutlineQuickOpen.ts +3 -3
  191. package/front_end/panels/sources/PersistenceActions.ts +9 -9
  192. package/front_end/panels/sources/ProfilePlugin.ts +1 -1
  193. package/front_end/panels/sources/ScopeChainSidebarPane.ts +5 -5
  194. package/front_end/panels/sources/SnippetsPlugin.ts +2 -2
  195. package/front_end/panels/sources/SourcesNavigator.ts +20 -18
  196. package/front_end/panels/sources/SourcesPanel.ts +45 -42
  197. package/front_end/panels/sources/SourcesView.ts +196 -102
  198. package/front_end/panels/sources/TabbedEditorContainer.ts +6 -7
  199. package/front_end/panels/sources/ThreadsSidebarPane.ts +1 -1
  200. package/front_end/panels/sources/UISourceCodeFrame.ts +0 -2
  201. package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +9 -12
  202. package/front_end/panels/sources/components/HeadersView.ts +2 -2
  203. package/front_end/panels/sources/sources-meta.ts +109 -71
  204. package/front_end/panels/sources/sources.ts +0 -2
  205. package/front_end/panels/timeline/TimelineHistoryManager.ts +14 -3
  206. package/front_end/panels/timeline/TimelineLoader.ts +72 -42
  207. package/front_end/panels/timeline/TimelinePanel.ts +29 -4
  208. package/front_end/panels/timeline/TimelineUIUtils.ts +15 -0
  209. package/front_end/panels/timeline/timeline-meta.ts +3 -5
  210. package/front_end/panels/timeline/timelineHistoryManager.css +4 -0
  211. package/front_end/third_party/chromium/README.chromium +1 -1
  212. package/front_end/third_party/codemirror.next/chunk/angular.js +1 -1
  213. package/front_end/third_party/codemirror.next/chunk/codemirror.js +1 -1
  214. package/front_end/third_party/codemirror.next/chunk/codemirror.js.map +1 -1
  215. package/front_end/third_party/codemirror.next/chunk/cpp.js +1 -1
  216. package/front_end/third_party/codemirror.next/chunk/cpp.js.map +1 -1
  217. package/front_end/third_party/codemirror.next/chunk/java.js +1 -1
  218. package/front_end/third_party/codemirror.next/chunk/java.js.map +1 -1
  219. package/front_end/third_party/codemirror.next/chunk/legacy.js +1 -1
  220. package/front_end/third_party/codemirror.next/chunk/less.js +1 -1
  221. package/front_end/third_party/codemirror.next/chunk/less.js.map +1 -1
  222. package/front_end/third_party/codemirror.next/chunk/markdown.js +1 -1
  223. package/front_end/third_party/codemirror.next/chunk/markdown.js.map +1 -1
  224. package/front_end/third_party/codemirror.next/chunk/php.js +1 -1
  225. package/front_end/third_party/codemirror.next/chunk/php.js.map +1 -1
  226. package/front_end/third_party/codemirror.next/chunk/python.js +1 -1
  227. package/front_end/third_party/codemirror.next/chunk/python.js.map +1 -1
  228. package/front_end/third_party/codemirror.next/chunk/sass.js +1 -1
  229. package/front_end/third_party/codemirror.next/chunk/sass.js.map +1 -1
  230. package/front_end/third_party/codemirror.next/chunk/svelte.js +1 -1
  231. package/front_end/third_party/codemirror.next/chunk/svelte.js.map +1 -1
  232. package/front_end/third_party/codemirror.next/chunk/vue.js +1 -1
  233. package/front_end/third_party/codemirror.next/chunk/wast.js +1 -1
  234. package/front_end/third_party/codemirror.next/chunk/wast.js.map +1 -1
  235. package/front_end/third_party/codemirror.next/chunk/xml.js +1 -1
  236. package/front_end/third_party/codemirror.next/chunk/xml.js.map +1 -1
  237. package/front_end/third_party/codemirror.next/codemirror.next.d.ts +1332 -193
  238. package/front_end/third_party/codemirror.next/codemirror.next.js +1 -1
  239. package/front_end/third_party/codemirror.next/rebuild.sh +1 -1
  240. package/front_end/third_party/puppeteer/README.chromium +2 -2
  241. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +187 -1
  242. package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +91 -38
  243. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts +145 -2
  244. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.d.ts.map +1 -1
  245. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js +0 -2
  246. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Browser.js.map +1 -1
  247. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.d.ts +0 -2
  248. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.d.ts.map +1 -1
  249. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js +0 -2
  250. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/BrowserContext.js.map +1 -1
  251. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Dialog.d.ts +3 -2
  252. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Dialog.d.ts.map +1 -1
  253. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Dialog.js +8 -2
  254. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Dialog.js.map +1 -1
  255. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.d.ts +0 -2
  256. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.d.ts.map +1 -1
  257. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js +0 -2
  258. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/JSHandle.js.map +1 -1
  259. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts +1 -3
  260. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.d.ts.map +1 -1
  261. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js +0 -2
  262. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Page.js.map +1 -1
  263. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Realm.d.ts +0 -1
  264. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Realm.d.ts.map +1 -1
  265. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Realm.js +0 -1
  266. package/front_end/third_party/puppeteer/package/lib/puppeteer/api/Realm.js.map +1 -1
  267. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.d.ts.map +1 -1
  268. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js +2 -2
  269. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/BidiOverCdp.js.map +1 -1
  270. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.d.ts +5 -1
  271. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.d.ts.map +1 -1
  272. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js +12 -0
  273. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/Browser.js.map +1 -1
  274. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPResponse.d.ts.map +1 -1
  275. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPResponse.js +4 -1
  276. package/front_end/third_party/puppeteer/package/lib/puppeteer/bidi/HTTPResponse.js.map +1 -1
  277. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts +5 -1
  278. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.d.ts.map +1 -1
  279. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js +49 -0
  280. package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Browser.js.map +1 -1
  281. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.d.ts +0 -6
  282. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.d.ts.map +1 -1
  283. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js +0 -6
  284. package/front_end/third_party/puppeteer/package/lib/puppeteer/common/EventEmitter.js.map +1 -1
  285. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
  286. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
  287. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
  288. package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
  289. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.d.ts.map +1 -1
  290. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.js +3 -0
  291. package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/util.js.map +1 -1
  292. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts +0 -3
  293. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.d.ts.map +1 -1
  294. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js +0 -3
  295. package/front_end/third_party/puppeteer/package/lib/puppeteer/node/ScreenRecorder.js.map +1 -1
  296. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
  297. package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
  298. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/disposable.d.ts +2 -2
  299. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/disposable.js +2 -2
  300. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
  301. package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
  302. package/front_end/third_party/puppeteer/package/lib/types.d.ts +187 -1
  303. package/front_end/third_party/puppeteer/package/package.json +5 -5
  304. package/front_end/third_party/puppeteer/package/src/api/Browser.ts +155 -2
  305. package/front_end/third_party/puppeteer/package/src/api/BrowserContext.ts +0 -2
  306. package/front_end/third_party/puppeteer/package/src/api/Dialog.ts +10 -2
  307. package/front_end/third_party/puppeteer/package/src/api/JSHandle.ts +0 -2
  308. package/front_end/third_party/puppeteer/package/src/api/Page.ts +1 -3
  309. package/front_end/third_party/puppeteer/package/src/api/Realm.ts +0 -1
  310. package/front_end/third_party/puppeteer/package/src/bidi/BidiOverCdp.ts +4 -2
  311. package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +17 -0
  312. package/front_end/third_party/puppeteer/package/src/bidi/HTTPResponse.ts +5 -4
  313. package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +66 -0
  314. package/front_end/third_party/puppeteer/package/src/common/EventEmitter.ts +0 -6
  315. package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
  316. package/front_end/third_party/puppeteer/package/src/injected/util.ts +4 -1
  317. package/front_end/third_party/puppeteer/package/src/node/ScreenRecorder.ts +0 -3
  318. package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
  319. package/front_end/third_party/puppeteer/package/src/util/disposable.ts +2 -2
  320. package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
  321. package/front_end/tsconfig.compatibility.json +2 -1
  322. package/front_end/tsconfig.json +1 -1
  323. package/front_end/ui/components/icon_button/IconButton.ts +1 -1
  324. package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
  325. package/front_end/ui/components/settings/SettingCheckbox.ts +4 -7
  326. package/front_end/ui/components/settings/settings.ts +1 -2
  327. package/front_end/ui/components/text_editor/AiCodeCompletionProvider.ts +9 -7
  328. package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +7 -8
  329. package/front_end/ui/legacy/Dialog.ts +12 -2
  330. package/front_end/ui/legacy/TabbedPane.ts +7 -2
  331. package/front_end/ui/legacy/Treeoutline.ts +52 -30
  332. package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +40 -24
  333. package/front_end/ui/legacy/components/data_grid/DataGrid.ts +1 -0
  334. package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +8 -4
  335. package/front_end/ui/legacy/components/object_ui/CSSStyleSanitizer.ts +74 -0
  336. package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +6 -1
  337. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +47 -54
  338. package/front_end/ui/legacy/components/object_ui/object_ui.ts +2 -0
  339. package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +14 -7
  340. package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +16 -28
  341. package/front_end/ui/legacy/components/settings_ui/SettingsUI.ts +10 -12
  342. package/front_end/ui/settings/SettingUIRegistration.ts +0 -8
  343. package/front_end/ui/visual_logging/KnownContextValues.ts +23 -0
  344. package/inspector_overlay/tsconfig.json +8 -2
  345. package/package.json +3 -2
  346. package/front_end/core/sdk/CSSModel.test.api.ts +0 -102
  347. package/front_end/core/sdk/DOMModel.test.api.ts +0 -104
  348. package/front_end/foundation/Universe.test.api.ts +0 -73
  349. package/front_end/panels/application/SharedStorageEventsView.ts +0 -128
  350. package/front_end/panels/application/SharedStorageItemsView.ts +0 -179
  351. package/front_end/panels/application/SharedStorageListTreeElement.ts +0 -65
  352. package/front_end/panels/application/SharedStorageModel.ts +0 -249
  353. package/front_end/panels/application/SharedStorageTreeElement.ts +0 -40
  354. package/front_end/panels/application/components/SharedStorageAccessGrid.ts +0 -191
  355. package/front_end/panels/application/components/SharedStorageMetadataView.ts +0 -133
  356. package/front_end/panels/application/components/sharedStorageAccessGrid.css +0 -29
  357. package/front_end/panels/application/components/sharedStorageMetadataView.css +0 -29
  358. package/front_end/panels/application/sharedStorageEventsView.css +0 -9
  359. package/front_end/panels/sources/AiWarningInfobarPlugin.ts +0 -78
  360. package/front_end/ui/components/settings/SettingDeprecationWarning.ts +0 -47
  361. package/front_end/ui/components/settings/settingDeprecationWarning.css +0 -14
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: devtools-ci
3
+ description: >-
4
+ Triage and analyze Chromium/DevTools LUCI build results and trybot failures,
5
+ including high-level builder status, compile errors, and detailed test
6
+ failures. Use this to inspect trybot buildbucket (bb) results for a patchset
7
+ overview or to query ResultDB directly for comprehensive, actionable information
8
+ about specific test regressions and infrastructure issues.
9
+ ---
10
+
11
+ # LUCI Build Triage & Analysis
12
+
13
+ This skill provides access to specialized triage tools maintained within the
14
+ `depot_tools` repository. These tools are used to inspect Buildbucket results
15
+ and ResultDB test failures.
16
+
17
+ ## Environment & Auth Discovery
18
+
19
+ - **Environment**: Always execute these scripts using **`vpython3`** instead
20
+ of `python3` to ensure all hermetic dependencies (like `httplib2`) are
21
+ satisfied.
22
+ - **Authentication**: Use `bb auth-info` to proactively check if you are
23
+ logged into Buildbucket. If not, inform the user they must run `bb auth-login`.
24
+
25
+ ## Locating the Tools
26
+
27
+ The triage scripts and their detailed documentation are located relative to
28
+ the `depot_tools` installation:
29
+
30
+ 1. **Locate Depot Tools**: Run `which gerrit_client.py` to find your local
31
+ `depot_tools` root.
32
+ 2. **Navigation**:
33
+ - **Buildbucket (`bb_wrapper.py`)**: Found in `<DEPOT_TOOLS_ROOT>/agents/skills/buildbucket/`
34
+ - *Strengths*: High-level Build info (is it failing? what steps failed?),
35
+ compile errors, and infra issues.
36
+ - **Test Results (`luci_triage.py`)**: Found in `<DEPOT_TOOLS_ROOT>/agents/skills/luci-test-results/`
37
+ - *Strengths*: Detailed Test info (specific test case failures in
38
+ ResultDB).
39
+
40
+ ## Troubleshooting
41
+
42
+ - **"No Artifacts Found"**: This usually occurs if:
43
+ 1. The build failed so early (e.g., bot setup) that no artifacts were produced.
44
+ 2. The build is too old and logs have been purged.
45
+ 3. There is an authentication issue.
46
+ - **Fallback**: Try `bb log <build_id> <step_name>` to see the raw output
47
+ for the failed step.
48
+
49
+ ## Available Skills in Depot Tools
50
+
51
+ Once you have located the `depot_tools` directory, read the following files
52
+ to understand how to use each tool:
53
+
54
+ - **`buildbucket`**: Used for high-level builder status and compile failures.
55
+ - Read: `<DEPOT_TOOLS_ROOT>/agents/skills/buildbucket/SKILL.md`
56
+ - **`luci-test-results`**: Used for detailed ResultDB test failure analysis.
57
+ - Read: `<DEPOT_TOOLS_ROOT>/agents/skills/luci-test-results/SKILL.md`
58
+
59
+ ## Usage at Runtime
60
+
61
+ When you need to triage a build:
62
+ 1. Locate `depot_tools` as described above.
63
+ 2. Read the relevant `SKILL.md` file from `depot_tools`.
64
+ 3. Follow the instructions in that file to execute the Python scripts (e.g.,
65
+ `bb_wrapper.py` or `luci_triage.py`) using their absolute paths.
@@ -16,17 +16,17 @@ This skill outlines the workflow for fixing skipped tests in the DevTools codeba
16
16
  - Ensure you use the instructions from the `devtools-version-control` skill to create and switch branches appropriately.
17
17
 
18
18
  3. **Search for the Skipped Tests**
19
- - Search the codebase for the `<bugid>` to find skipped tests.
20
- - You should look for occurrences like `it.skip('[crbug.com/<bugid>] ...', ...)` or skipped describes that mention the bug ID.
19
+ - Search the `test/TestExpectations` file for the `<bugid>` to find skipped tests.
20
+ - Tests are no longer skipped using `.skip` in the code, but rather by having a `[ Skip ]` expectation in `test/TestExpectations`.
21
21
 
22
22
  4. **Iterative Fix Process**
23
- - **Step 1:** Remove `it.skip` or `describe.skip` for *one* of the tests associated with the bug.
23
+ - **Step 1:** Remove the `[ Skip ]` expectation for *one* of the tests associated with the bug in `test/TestExpectations` (or change it to `[ Pass Failure ]` if you are investigating flakiness).
24
24
  - **Step 2:** Re-run the specific test using its exact test ID (e.g., `npm run test path/to/foo.test.ts:test_name`) using the guidelines from the `devtools-verification` skill. If you are dealing with flaky tests, you can use the `--repeat=x` flag (e.g. `npm run test -- --repeat=20 path/to/foo.test.ts:test_name`) to run the test multiple times to reproduce the flakiness. This flag works for both E2E and unit tests.
25
25
  - **Step 3:** Analyze the test failure and make the necessary fixes to the code or the test itself.
26
26
  - **Step 4:** Re-run the test to ensure the fix is correct.
27
- - **Step 5:** Remove the `[crbug.com/<bugid>]` prefix from the test name string if it is present.
28
- - **Step 6:** Remove any comments directly above the test that explain the reason why the test was skipped (e.g., `// TODO(crbug...): Flaky`).
29
- - **Step 7:** Apply the fix to the remaining tests, un-skipping them one by one or in batches, and verifying until all are passing.
27
+ - **Step 5:** Remove the `[crbug.com/<bugid>]` prefix from the test name string in the code if it is present.
28
+ - **Step 6:** Remove any comments directly above the test in the code that explain the reason why the test was skipped (e.g., `// TODO(crbug...): Flaky`).
29
+ - **Step 7:** Apply the fix to the remaining tests, un-skipping them one by one or in batches by modifying `test/TestExpectations`, and verifying until all are passing.
30
30
 
31
31
  5. **Verify Full Build**
32
32
  - Before finishing, run the full verification process (TypeScript checks, linters, full test run) as required by the repository best practices.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: gerrit-cli
3
+ description: >-
4
+ Interacts with the public Gerrit Code Review platform using depot_tools'
5
+ gerrit_client.py. Use this skill when asked to query public CLs, retrieve
6
+ file revisions, add patchset comments, vote on review labels, submit changes,
7
+ or abandon/restore public CLs. Do not use this skill for Google-internal
8
+ attention set updates or internal AI-assisted code reviews (CRUAS) which are
9
+ unsupported by the public API.
10
+ ---
11
+
12
+ # Gerrit CLI Skill
13
+
14
+ Execute public Gerrit Code Review commands using `gerrit_client.py` from
15
+ depot_tools.
16
+
17
+ ## Prerequisites
18
+
19
+ - Ensure `gerrit_client.py` is available in the system `PATH` (typically part of
20
+ `depot_tools`). If `gerrit_client.py` is not available in your environment,
21
+ stop execution immediately.
22
+ - Use the wrapper script directly instead of an environment variable.
23
+ Substitute:
24
+ `vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py`
25
+ as the executable command in all examples and invocations.
26
+
27
+ ## Just-in-Time (JiT) Loading Guidance
28
+
29
+ - Before running any Gerrit CLI command, read `references/commands.md`
30
+ to locate the required parameters and specific subcommand syntax.
31
+ - Before querying public CLs, adding comments, voting, or submitting changes,
32
+ read `references/workflows.md` for step-by-step procedures.
33
+
34
+ ## Gotchas & Environment Constraints
35
+
36
+ - **Specify Host**: Always supply the `--host` flag explicitly (e.g.
37
+ `--host https://chromium-review.googlesource.com`).
38
+ - **Use JSON Output**: Always use the `--json_file=<path>` flag when querying
39
+ changes or fetching metadata to obtain structured, machine-readable output.
40
+
41
+ > [!CAUTION]
42
+ > **NEVER** use this to add patchset comments to an existing comment thread that
43
+ > contains human reviewers in it. Using an agent to reply to a human is a
44
+ > violation of Chromium's code of conduct.
45
+ >
46
+ > If the user requests this or you encounter this scenario as part of your work,
47
+ > inform the user about which comment threads cannot be updated but otherwise
48
+ > continue work.
49
+
50
+
51
+ > [!NOTE]
52
+ > This skill was adapted from the [Chromium Gerrit CLI skill](https://chromium.googlesource.com/chromium/agents/+/main/skills/gerrit-cli/)
53
+ > (automatically rolled in from upstream).
@@ -0,0 +1,136 @@
1
+ # Gerrit CLI Common Commands & Usage (Public)
2
+
3
+ Run the tool directly using the wrapper script path with the `--help` flag:
4
+
5
+ - `vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py --help`
6
+ - `vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py changes --help`
7
+
8
+ ## Global Flags
9
+
10
+ Use the following global flags for all commands:
11
+
12
+ - `--host <url>` (e.g., `--host https://chromium-review.googlesource.com`).
13
+ - `--project <project_name>` (e.g., `--project chromium/src`).
14
+ - `--json_file <path>` (saves the structured response as a JSON file).
15
+
16
+ ______________________________________________________________________
17
+
18
+ ## Common Invocations
19
+
20
+ ### 1. Inspecting and Searching Changes
21
+
22
+ - **Query active changes:**
23
+
24
+ ```bash
25
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
26
+ changes \
27
+ --host https://chromium-review.googlesource.com \
28
+ --query "owner:self status:open"
29
+ ```
30
+
31
+ - **View the content of a specific file in a change:**
32
+
33
+ **Note:** This command does not work with the `--json_file` flag, instead use
34
+ stdout redirection (`>`).
35
+
36
+ ```bash
37
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
38
+ content \
39
+ --host https://chromium-review.googlesource.com \
40
+ --project <project> \
41
+ --change <change_id> \
42
+ --revision <revision> \
43
+ --path <file_path> \
44
+ > output_file
45
+ ```
46
+
47
+ - **Get related changes:**
48
+
49
+ ```bash
50
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
51
+ relatedchanges \
52
+ --host https://chromium-review.googlesource.com \
53
+ --change <change_id> --revision <revision>
54
+ ```
55
+
56
+ ### 2. Reviewing and Voting
57
+
58
+ - **Add a patchset-level comment:**
59
+ ```bash
60
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
61
+ addpatchsetcomment \
62
+ --host https://chromium-review.googlesource.com \
63
+ --change <change_id> --revision <revision> \
64
+ --message "Review findings: <message>"
65
+ ```
66
+ - **Vote on a review label (e.g., Code-Review +1):**
67
+ ```bash
68
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
69
+ setlabel \
70
+ --host https://chromium-review.googlesource.com \
71
+ --change <change_id> \
72
+ --label Code-Review 1
73
+ ```
74
+
75
+ ### 3. Actions and Shepherding
76
+
77
+ - **Submit/Merge a change:**
78
+ ```bash
79
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
80
+ submitchange \
81
+ --host https://chromium-review.googlesource.com \
82
+ --change <change_id>
83
+ ```
84
+ - **Abandon a change:**
85
+ ```bash
86
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
87
+ abandon \
88
+ --host https://chromium-review.googlesource.com \
89
+ --change <change_id> \
90
+ --message "<reason>"
91
+ ```
92
+ - **Restore an abandoned change:**
93
+ ```bash
94
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
95
+ restore \
96
+ --host https://chromium-review.googlesource.com \
97
+ --change <change_id> \
98
+ --message "<reason>"
99
+ ```
100
+
101
+ ______________________________________________________________________
102
+
103
+ ## Just-in-Time Help
104
+
105
+ Explore the built-in CLI help for additional subcommands or advanced syntax:
106
+
107
+ - Display all top-level commands:
108
+ `vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py --help`
109
+ - Display help for a specific subcommand:
110
+ ```bash
111
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
112
+ help <command>
113
+ ```
114
+
115
+
116
+ ## Advanced / Escape Hatch: Arbitrary REST API Calls (`rawapi`)
117
+
118
+ If the built-in subcommands do not cover a specific action or metadata query, you can use the `rawapi` subcommand to execute arbitrary HTTP requests against the Gerrit REST API.
119
+
120
+ - **Endpoint Reference**: [Gerrit REST API - Changes](https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html)
121
+
122
+ ### Usage
123
+
124
+ ```bash
125
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
126
+ rawapi \
127
+ --host https://chromium-review.googlesource.com \
128
+ --path "/changes/<change_id>/detail?o=SUBMITTABLE" \
129
+ --json_file output.json
130
+ ```
131
+
132
+ - **Options**:
133
+ - `--path`: HTTP path of the API endpoint (e.g. `/changes/<change_id>/revisions/current/mergeable`).
134
+ - `--method`: HTTP method (GET, POST, PUT, DELETE). Defaults to GET.
135
+ - `--body`: JSON string body for write requests (e.g., POST/PUT).
136
+ - `--accept_status`: Comma-separated list of successful HTTP status codes.
@@ -0,0 +1,63 @@
1
+ # Gerrit CLI Workflows (Public)
2
+
3
+ ## 1. Change List Review Workflow
4
+
5
+ Execute these steps in chronological order to review a Change List (CL) when
6
+ provided with a link or ID:
7
+
8
+ 1. **Query CL Metadata**: Retrieve CL details and verify its current status:
9
+ ```bash
10
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
11
+ changes \
12
+ --host https://chromium-review.googlesource.com \
13
+ --query "change:<id>"
14
+ ```
15
+ 2. **Fetch File Contents**: Retrieve the content of specific files modified in
16
+ the CL:
17
+ ```bash
18
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
19
+ content \
20
+ --host https://chromium-review.googlesource.com \
21
+ --project <project> \
22
+ --change <change_id> --revision current --path <file_path>
23
+ ```
24
+ 3. **Analyze Local Modifications**: Inspect the fetched contents and local diffs
25
+ for any logic or formatting issues.
26
+ 4. **Add Review Comment**: Post a patchset-level comment containing the review
27
+ findings:
28
+ ```bash
29
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
30
+ addpatchsetcomment \
31
+ --host https://chromium-review.googlesource.com \
32
+ --change <change_id> --revision current \
33
+ --message "Review findings: ..."
34
+ ```
35
+
36
+ ## 2. Shepherding & Submission Workflow
37
+
38
+ Execute these steps in chronological order to approve and merge a Change List:
39
+
40
+ 1. **Check Related Changes**: Retrieve the status of all related changes to
41
+ ensure there are no unresolved blockers:
42
+ ```bash
43
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
44
+ relatedchanges \
45
+ --host https://chromium-review.googlesource.com \
46
+ --change <change_id> --revision current
47
+ ```
48
+ 2. **Vote on Review Labels**: Apply the required Code-Review approval vote:
49
+ ```bash
50
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
51
+ setlabel \
52
+ --host https://chromium-review.googlesource.com \
53
+ --change <change_id> \
54
+ --label Code-Review 1
55
+ ```
56
+ 3. **Submit Change**: Merge the change once all CQ presubmits pass and all
57
+ approval requirements are satisfied:
58
+ ```bash
59
+ vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py \
60
+ submitchange \
61
+ --host https://chromium-review.googlesource.com \
62
+ --change <change_id>
63
+ ```
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env python3
2
+ # Copyright 2026 The Chromium Authors
3
+ # Use of this source code is governed by a BSD-style license that can be
4
+ # found in the LICENSE file.
5
+ """Imports the Gerrit CLI skill from upstream and applies DevTools revisions.
6
+
7
+ No external checkouts (like chromium/src) are required. The script downloads
8
+ the skill directly from the public Git repository.
9
+ """
10
+
11
+ import io
12
+ import re
13
+ import sys
14
+ import tarfile
15
+ import urllib.request
16
+ from pathlib import Path
17
+
18
+ UPSTREAM_URL = "https://chromium.googlesource.com/chromium/agents/+archive/refs/heads/main/skills/gerrit-cli.tar.gz"
19
+
20
+ def fetch_upstream_skill(target_dir: Path):
21
+ print(f"Downloading upstream skill from {UPSTREAM_URL}...")
22
+ try:
23
+ req = urllib.request.Request(UPSTREAM_URL,
24
+ headers={'User-Agent': 'Mozilla/5.0'})
25
+ with urllib.request.urlopen(req) as response:
26
+ tar_data = response.read()
27
+ except Exception as e:
28
+ print(f"Failed to download upstream skill: {e}")
29
+ sys.exit(1)
30
+
31
+ print(f"Extracting to {target_dir}...")
32
+ target_dir.mkdir(parents=True, exist_ok=True)
33
+ with tarfile.open(fileobj=io.BytesIO(tar_data), mode='r:gz') as tar:
34
+ tar.extractall(path=target_dir)
35
+
36
+
37
+ def apply_devtools_revisions(target_dir: Path):
38
+ print("Applying DevTools-specific adaptations...")
39
+
40
+ # 2. Update SKILL.md
41
+ skill_md_path = target_dir / "SKILL.md"
42
+ if skill_md_path.exists():
43
+ content = skill_md_path.read_text()
44
+
45
+ # Re-route wrapper script path
46
+ content = re.sub(
47
+ r'(?:v)?python3\s+agents/shared/skills/gerrit-cli/scripts/gerrit_client_wrapper.py',
48
+ 'vpython3 .agents/skills/gerrit-cli/scripts/gerrit_client_wrapper.py',
49
+ content)
50
+
51
+ # Add attribution note at the bottom
52
+ attribution = """
53
+ > [!NOTE]
54
+ > This skill was adapted from the [Chromium Gerrit CLI skill](https://chromium.googlesource.com/chromium/agents/+/main/skills/gerrit-cli/)
55
+ > (automatically rolled in from upstream).
56
+ """
57
+ if "> [!NOTE]" not in content:
58
+ content += "\n" + attribution
59
+
60
+ skill_md_path.write_text(content)
61
+ print(" - Adapted SKILL.md")
62
+
63
+ # 3. Update references/commands.md and references/workflows.md
64
+ for filename in ["commands.md", "workflows.md"]:
65
+ ref_path = target_dir / "references" / filename
66
+ if ref_path.exists():
67
+ c = ref_path.read_text()
68
+
69
+ # Path & executable transformations
70
+ c = re.sub(r'(?:v)?python3\s+agents/shared/skills/gerrit-cli/',
71
+ 'vpython3 .agents/skills/gerrit-cli/', c)
72
+
73
+ ref_path.write_text(c)
74
+ print(f" - Adapted references/{filename}")
75
+
76
+
77
+ def validate_gerrit_client_wrapper(skill_dir: Path):
78
+ print("Validating gerrit_client_wrapper.py...")
79
+ import json, subprocess, tempfile
80
+ wrapper = skill_dir / "scripts" / "gerrit_client_wrapper.py"
81
+ with tempfile.TemporaryDirectory() as tmp:
82
+ json_file = Path(tmp) / "out.json"
83
+ try:
84
+ subprocess.run([
85
+ "vpython3",
86
+ str(wrapper), "changes", "--query", "change:8147179", "--host",
87
+ "https://chromium-review.googlesource.com", "--json_file",
88
+ str(json_file)
89
+ ],
90
+ check=True,
91
+ capture_output=True)
92
+ data = json.loads(json_file.read_text())
93
+ if not data or data[0].get("_number") != 8147179:
94
+ raise ValueError(f"Invalid response: {data}")
95
+ print(" - Validation passed successfully!")
96
+ except Exception as e:
97
+ stderr = getattr(e, "stderr", b"").decode(errors="replace")
98
+ print(f"Validation FAILED: {e}\n{stderr}")
99
+ sys.exit(1)
100
+
101
+
102
+
103
+ def main():
104
+ skill_dir = Path(__file__).parent.parent.resolve()
105
+ fetch_upstream_skill(skill_dir)
106
+ apply_devtools_revisions(skill_dir)
107
+ validate_gerrit_client_wrapper(skill_dir)
108
+ print("Upstream sync completed successfully!")
109
+
110
+
111
+ if __name__ == "__main__":
112
+ main()
@@ -13,7 +13,7 @@
13
13
  "webworker",
14
14
  "webworker.iterable"
15
15
  ],
16
- "outDir": "ignored-for-vscode"
16
+ "noEmit": true
17
17
  },
18
18
  "include": [
19
19
  "../../front_end/**/*.ts",
@@ -257,7 +257,13 @@ because they picked up the test as it was being touched.
257
257
 
258
258
  You can skip Flake Detection for your tests by adding the `Skip-Flake-Detection`
259
259
  CL footer (see example [CL](https://crrev.com/c/6994031)). Make sure you use the
260
- full path to your test.
260
+ full path to your test. If you need to skip multiple tests, you can repeat the footer:
261
+ ```
262
+ Skip-Flake-Detection: test/e2e/foo.test.ts
263
+ Skip-Flake-Detection: test/e2e/bar.test.ts
264
+ ```
265
+
266
+ You can also skip Flake Detection for multiple tests using a glob pattern by adding the `Skip-Flake-Detection-Pattern` CL footer. For example: `Skip-Flake-Detection-Pattern: test/e2e/performance/*`.
261
267
 
262
268
  ### Common build failures
263
269
 
@@ -78,12 +78,12 @@ This step is optional. If you want the `base::Feature` to be controllable via th
78
78
 
79
79
  Prerequisite: The `base::Feature` needs to be have been added to `chrome://flags`.
80
80
 
81
- #### Step 1: Create a HostExperiment in the DevTools repository
81
+ #### Step 1: Create an Experiment in the DevTools repository
82
82
 
83
83
  Register the experiment in [`MainImpl.ts`](https://crsrc.org/c/third_party/devtools-frontend/src/front_end/entrypoints/main/MainImpl.ts;l=343)
84
84
 
85
85
  ```ts
86
- Root.Runtime.experiments.registerHostExperiment({
86
+ Root.Runtime.experiments.register({
87
87
  name: Root.ExperimentNames.ExperimentName.DURABLE_MESSAGES,
88
88
  // Short description of the experiment, shown to users
89
89
  title: 'Durable Messages',
@@ -147,12 +147,6 @@ in the DevTools repository. The label can be anything you like but make sure it
147
147
 
148
148
  [Example CL](https://crrev.com/c/4915777)
149
149
 
150
- ## Deprecated: DevTools experiments
151
-
152
- Previously, DevTools experiments that lacked a Chrome component were managed separately. This
153
- system is now deprecated. All legacy experiments are being migrated to the `base::Feature`
154
- framework to streamline development.
155
-
156
150
  ## A/B Testing with Finch and base::Feature
157
151
 
158
152
  `base::Feature` flags can be used with Finch to conduct A/B testing by toggling feature flags for a defined percentage of users. A/B testing can be a good way of testing the waters. However, since the time to get meaningful metrics may take a long time, it shouldn't be used to get feedback on options quickly.
@@ -66,25 +66,6 @@ An example `com.chrome.devtools.json` would look like this:
66
66
  Chromium DevTools will only attempt to load the `com.chrome.devtools.json` when
67
67
  the origin of the inspected page is `localhost`.
68
68
 
69
- ## Setup
70
-
71
- In M-136, which is in Canary channel at the time of this writing, the relevant
72
- flags have been enabled by default (as of 2025-03-16). In earlier versions of
73
- M-136 and in M-135, this feature is disabled by default. To use it, you need to
74
- turn on two feature flags in `about:flags`:
75
-
76
- - [chrome://flags#devtools-project-settings](chrome://flags#devtools-project-settings)
77
- - [chrome://flags#devtools-automatic-workspace-folders](chrome://flags#devtools-automatic-workspace-folders)
78
-
79
- ![](./images/automatic_workspace_folders_flags.png)
80
-
81
- Instead of enabling the feature via `about:flags`, you can instead also enable
82
- them from the command line:
83
-
84
- ```bash
85
- google-chrome-canary --enable-features=DevToolsWellKnown,DevToolsAutomaticFileSystems
86
- ```
87
-
88
69
  ## Usage
89
70
 
90
71
  To check if your setup is correct, you can try out Benedikt’s
package/eslint.config.mjs CHANGED
@@ -693,8 +693,8 @@ export default defineConfig([
693
693
  },
694
694
  },
695
695
  {
696
- name: 'Front-end core files',
697
- files: ['front_end/core/**/*.ts'],
696
+ name: 'Front-end core and models files',
697
+ files: ['front_end/core/**/*.ts', 'front_end/models/**/*.ts'],
698
698
  rules: {
699
699
  '@devtools/no-instance-of-migrated-singletons': 'error',
700
700
  },
@@ -8,11 +8,11 @@ const ERROR_STATE = Symbol('error');
8
8
  /**
9
9
  * Very basic memoizer. Will only invoke its callback the first time, returning the cached value all subsequent calls.
10
10
  */
11
- export function lazy<T>(producer: () => T): () => symbol | T {
11
+ export function lazy<T, A extends unknown[] = []>(producer: (...args: A) => T): (...args: A) => T {
12
12
  let value: T|typeof ERROR_STATE|typeof UNINITIALIZED = UNINITIALIZED;
13
13
  let error: Error = new Error('Initial');
14
14
 
15
- return (): symbol|T => {
15
+ return (...args: A): T => {
16
16
  if (value === ERROR_STATE) {
17
17
  throw error;
18
18
  } else if (value !== UNINITIALIZED) {
@@ -20,7 +20,7 @@ export function lazy<T>(producer: () => T): () => symbol | T {
20
20
  }
21
21
 
22
22
  try {
23
- value = producer();
23
+ value = producer(...args);
24
24
  return value;
25
25
  } catch (err) {
26
26
  error = err instanceof Error ? err : new Error(err);
@@ -282,13 +282,6 @@ export interface SettingRegistration {
282
282
  */
283
283
  disabledCondition?: (config?: Root.Runtime.HostConfig) => DisabledConditionResult;
284
284
 
285
- /**
286
- * If a setting is deprecated, define this notice to show an appropriate warning according to the `warning` property.
287
- * If `disabled` is set, the setting will be disabled in the settings UI. In that case, `experiment` optionally can be
288
- * set to link to an experiment (by experiment name). The information icon in the settings UI can then be clicked to
289
- * jump to the experiment. If a setting is not disabled, the experiment entry will be ignored.
290
- */
291
- deprecationNotice?: {disabled: boolean, warning: () => Platform.UIString.LocalizedString, experiment?: string};
292
285
  /**
293
286
  * See {@link LearnMore} for more info.
294
287
  */
@@ -494,23 +494,6 @@ export class SettingsStorage {
494
494
  }
495
495
  }
496
496
 
497
- export class Deprecation {
498
- readonly disabled: boolean;
499
- readonly warning: Platform.UIString.LocalizedString;
500
- readonly experiment?: Root.Runtime.Experiment|Root.Runtime.HostExperiment;
501
-
502
- constructor({deprecationNotice}: SettingRegistration) {
503
- if (!deprecationNotice) {
504
- throw new Error('Cannot create deprecation info for a non-deprecated setting');
505
- }
506
- this.disabled = deprecationNotice.disabled;
507
- this.warning = deprecationNotice.warning();
508
- this.experiment = deprecationNotice.experiment ?
509
- Root.Runtime.experiments.allConfigurableExperiments().find(e => e.name === deprecationNotice.experiment) :
510
- undefined;
511
- }
512
- }
513
-
514
497
  export class Setting<V> {
515
498
  #registration: SettingRegistration|null = null;
516
499
  #type: SettingType|null = null;
@@ -520,7 +503,6 @@ export class Setting<V> {
520
503
  #serializer: Serializer<unknown, V> = JSON;
521
504
  #hadUserAction?: boolean;
522
505
  #disabled?: boolean;
523
- #deprecation: Deprecation|null = null;
524
506
  #loggedInitialAccess = false;
525
507
  #logSettingAccess?: (name: string, value: number|string|boolean) => Promise<void>;
526
508
  readonly #console: Console;
@@ -691,16 +673,6 @@ export class Setting<V> {
691
673
  if (registration.settingType) {
692
674
  this.#type = registration.settingType;
693
675
  }
694
- const {deprecationNotice} = registration;
695
- if (deprecationNotice?.disabled) {
696
- const experiment = deprecationNotice.experiment ?
697
- Root.Runtime.experiments.allConfigurableExperiments().find(e => e.name === deprecationNotice.experiment) :
698
- undefined;
699
- if ((!experiment || experiment.isEnabled())) {
700
- this.set(this.defaultValue);
701
- this.setDisabled(true);
702
- }
703
- }
704
676
  }
705
677
 
706
678
  type(): SettingType|null {
@@ -758,16 +730,6 @@ export class Setting<V> {
758
730
  return this.#registration?.learnMore ?? null;
759
731
  }
760
732
 
761
- get deprecation(): Deprecation|null {
762
- if (!this.#registration || !this.#registration.deprecationNotice) {
763
- return null;
764
- }
765
- if (!this.#deprecation) {
766
- this.#deprecation = new Deprecation(this.#registration);
767
- }
768
- return this.#deprecation;
769
- }
770
-
771
733
  private printSettingsSavingError(message: string, value: string): void {
772
734
  const errorMessage =
773
735
  'Error saving setting with name: ' + this.name + ', value length: ' + value.length + '. Error: ' + message;