chrome-devtools-frontend 1.0.1683520 → 1.0.1689415
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.
- package/.agents/skills/gerrit-cli/SKILL.md +29 -8
- package/.agents/skills/gerrit-cli/references/commands.md +51 -18
- package/.agents/skills/gerrit-cli/references/workflows.md +6 -6
- package/.agents/skills/gerrit-cli/scripts/import_upstream.py +43 -70
- package/AUTHORS +1 -0
- package/config/typescript/tsconfig.base.json +1 -0
- package/config/typescript/tsconfig.eslint.json +9 -0
- package/docs/contributing/issues.md +1 -1
- package/docs/styleguide/ux/writing.md +2 -2
- package/eslint.config.mjs +18 -10
- package/front_end/core/common/Base64.ts +1 -1
- package/front_end/core/common/Color.ts +28 -6
- package/front_end/core/common/ColorConverter.ts +12 -0
- package/front_end/core/common/Console.ts +2 -1
- package/front_end/core/common/Object.ts +2 -2
- package/front_end/core/common/ResourceType.ts +12 -13
- package/front_end/core/common/Revealer.ts +1 -1
- package/front_end/core/common/Settings.ts +2 -2
- package/front_end/core/common/TextDictionary.ts +2 -2
- package/front_end/core/common/Throttler.ts +1 -1
- package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -2
- package/front_end/core/host/UserMetrics.ts +51 -37
- package/front_end/core/host/host.ts +1 -1
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/platform/HostRuntime.ts +3 -3
- package/front_end/core/platform/KeyboardUtilities.ts +1 -1
- package/front_end/core/protocol_client/InspectorBackend.ts +7 -6
- package/front_end/core/root/Runtime.ts +4 -2
- package/front_end/core/sdk/AnimationModel.ts +1 -1
- package/front_end/core/sdk/CPUThrottlingManager.ts +198 -0
- package/front_end/core/sdk/CSSMetadata.ts +11 -6
- package/front_end/core/sdk/CSSPropertyParser.ts +5 -3
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +90 -59
- package/front_end/core/sdk/ConsoleModel.ts +1 -1
- package/front_end/core/sdk/DOMModel.ts +3 -3
- package/front_end/core/sdk/DebuggerModel.ts +1 -1
- package/front_end/core/sdk/EmulationModel.ts +5 -0
- package/front_end/core/sdk/LayerTreeBase.ts +1 -1
- package/front_end/core/sdk/NetworkManager.ts +1 -1
- package/front_end/core/sdk/README.md +40 -0
- package/front_end/core/sdk/RehydratingConnection.ts +1 -1
- package/front_end/core/sdk/RemoteObject.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +2 -2
- package/front_end/core/sdk/SDKModel.ts +1 -1
- package/front_end/core/sdk/SDKSettings.ts +6 -0
- package/front_end/core/sdk/Script.ts +2 -1
- package/front_end/core/sdk/SecurityOrigin.ts +48 -0
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +0 -7
- package/front_end/core/sdk/ServiceWorkerManager.ts +75 -17
- package/front_end/core/sdk/StorageBucketsModel.ts +0 -6
- package/front_end/core/sdk/sdk.ts +2 -0
- package/front_end/core/text_utils/ContentData.ts +1 -1
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +3 -1
- package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +2 -2
- package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
- package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
- package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
- package/front_end/entrypoints/inspector_main/outermostTargetSelector.css +3 -3
- package/front_end/entrypoints/inspector_main/renderingOptions.css +3 -3
- package/front_end/entrypoints/js_app/js_app.ts +25 -9
- package/front_end/entrypoints/main/MainImpl.ts +2 -1
- package/front_end/entrypoints/main/main-meta.ts +5 -31
- package/front_end/entrypoints/node_app/app/nodeConnectionsPanel.css +5 -5
- package/front_end/entrypoints/node_app/node_app.ts +1 -1
- package/front_end/foundation/Universe.ts +7 -0
- package/front_end/generated/ARIAProperties.ts +39 -1
- package/front_end/generated/InspectorBackendCommands.ts +13 -22
- package/front_end/generated/SupportedCSSProperties.ts +60 -119
- package/front_end/generated/protocol-mapping.d.ts +18 -59
- package/front_end/generated/protocol-proxy-api.d.ts +14 -47
- package/front_end/generated/protocol.ts +104 -331
- package/front_end/models/ai_assistance/AiAgent2.ts +25 -11
- package/front_end/models/ai_assistance/AiConversation.ts +23 -14
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +2 -2
- package/front_end/models/ai_assistance/AiUtils.ts +16 -0
- package/front_end/models/ai_assistance/EvaluateAction.ts +1 -1
- package/front_end/models/ai_assistance/README.md +1 -1
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -3
- package/front_end/models/ai_assistance/agents/AiAgent.ts +40 -25
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -3
- package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +13 -11
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -7
- package/front_end/models/ai_assistance/ai_assistance.ts +12 -0
- package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +16 -1
- package/front_end/models/ai_assistance/contexts/FileContext.ts +6 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +150 -325
- package/front_end/models/ai_assistance/injected.ts +5 -3
- package/front_end/models/ai_assistance/performance/AIContext.ts +1 -1
- package/front_end/models/ai_assistance/skills/README.md +1 -1
- package/front_end/models/ai_assistance/skills/accessibility.md +19 -10
- package/front_end/models/ai_assistance/skills/network.md +13 -7
- package/front_end/models/ai_assistance/skills/performance.md +22 -16
- package/front_end/models/ai_assistance/skills/sources.md +13 -7
- package/front_end/models/ai_assistance/skills/storage.md +19 -18
- package/front_end/models/ai_assistance/skills/styling.md +30 -37
- package/front_end/models/ai_assistance/tools/CookieUtils.ts +120 -0
- package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +53 -4
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +8 -32
- package/front_end/models/ai_assistance/tools/GetCookieValues.ts +146 -0
- package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +11 -9
- package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +17 -5
- package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +12 -11
- package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +11 -11
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +15 -8
- package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetResourceContent.ts +12 -12
- package/front_end/models/ai_assistance/tools/GetSourceContent.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +132 -0
- package/front_end/models/ai_assistance/tools/GetStorageValues.ts +18 -5
- package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +13 -14
- package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +12 -10
- package/front_end/models/ai_assistance/tools/ListCookies.ts +93 -0
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +15 -6
- package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +3 -3
- package/front_end/models/ai_assistance/tools/ListSources.ts +5 -3
- package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +17 -5
- package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +3 -2
- package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +4 -3
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +14 -17
- package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/Tool.ts +36 -13
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +41 -8
- package/front_end/models/badges/AiExplorerBadge.ts +3 -3
- package/front_end/models/badges/CodeWhispererBadge.ts +2 -2
- package/front_end/models/badges/DOMDetectiveBadge.ts +3 -3
- package/front_end/models/badges/SpeedsterBadge.ts +3 -3
- package/front_end/models/badges/StarterBadge.ts +4 -4
- package/front_end/models/bindings/CompilerScriptMapping.ts +11 -2
- package/front_end/models/bindings/ContentProviderBasedProject.ts +3 -2
- package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
- package/front_end/models/emulation/EmulatedDevices.ts +2 -2
- package/front_end/models/formatter/FormatterWorkerPool.ts +2 -2
- package/front_end/models/formatter/ScriptFormatter.ts +1 -2
- package/front_end/models/geometry/GeometryImpl.ts +2 -2
- package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +1 -1
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +3 -2
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/DOMIssuesManager.ts +144 -0
- package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +13 -1
- package/front_end/models/issues_manager/GenericIssue.ts +32 -20
- package/front_end/models/issues_manager/IssuesManager.ts +0 -1
- package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/{NativeFunctions.js → NativeFunctions.ts} +29 -9
- package/front_end/models/live-metrics/LiveMetrics.ts +9 -3
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +58 -6
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +2 -62
- package/front_end/models/network_time_calculator/RequestTimeRanges.ts +2 -2
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
- package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
- package/front_end/models/persistence/NetworkPersistenceManager.ts +35 -6
- package/front_end/models/stack_trace/StackTraceImpl.ts +2 -2
- package/front_end/models/trace/LanternComputationData.ts +2 -3
- package/front_end/models/trace/extras/StackTraceForEvent.ts +3 -2
- package/front_end/models/trace/extras/ThirdParties.ts +9 -9
- package/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +7 -4
- package/front_end/models/trace/handlers/FramesHandler.ts +3 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/models/trace/handlers/SamplesHandler.ts +4 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +1 -1
- package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
- package/front_end/models/trace/helpers/Network.ts +3 -3
- package/front_end/models/trace/helpers/Trace.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.ts +2 -1
- package/front_end/models/trace/insights/Cache.ts +3 -1
- package/front_end/models/trace/insights/CharacterSet.ts +3 -1
- package/front_end/models/trace/insights/DOMSize.ts +3 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +3 -1
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -1
- package/front_end/models/trace/insights/FontDisplay.ts +2 -1
- package/front_end/models/trace/insights/ForcedReflow.ts +2 -1
- package/front_end/models/trace/insights/INPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/ImageDelivery.ts +3 -1
- package/front_end/models/trace/insights/LCPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/LCPDiscovery.ts +3 -1
- package/front_end/models/trace/insights/LegacyJavaScript.ts +3 -1
- package/front_end/models/trace/insights/ModernHTTP.ts +2 -1
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +5 -4
- package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
- package/front_end/models/trace/insights/ThirdParties.ts +5 -3
- package/front_end/models/trace/insights/Viewport.ts +2 -1
- package/front_end/models/trace/lantern/simulation/Constants.ts +34 -2
- package/front_end/models/trace/lantern/simulation/DNSCache.ts +1 -1
- package/front_end/models/trace/types/TraceEvents.ts +8 -3
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -1
- package/front_end/models/workspace/WorkspaceImpl.ts +18 -2
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +686 -2
- package/front_end/panels/accessibility/accessibilityNode.css +4 -4
- package/front_end/panels/accessibility/accessibilityProperties.css +1 -1
- package/front_end/panels/accessibility/accessibilitySidebarView.css +2 -2
- package/front_end/panels/accessibility/axBreadcrumbs.css +13 -13
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -14
- package/front_end/panels/ai_assistance/ExternalHandler.ts +89 -0
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatInput.ts +3 -2
- package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/chatInput.css +12 -12
- package/front_end/panels/ai_assistance/components/chatMessage.css +16 -16
- package/front_end/panels/ai_assistance/components/chatView.css +2 -2
- package/front_end/panels/ai_assistance/components/exploreWidget.css +1 -1
- package/front_end/panels/ai_assistance/components/exportForAgentsDialog.css +4 -0
- package/front_end/panels/ai_assistance/components/walkthroughView.css +6 -6
- package/front_end/panels/animation/animationTimeline.css +62 -62
- package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -1
- package/front_end/panels/application/BackgroundServiceModel.ts +4 -3
- package/front_end/panels/application/BackgroundServiceView.ts +290 -252
- package/front_end/panels/application/IndexedDBModel.ts +0 -7
- package/front_end/panels/application/WebMCPView.ts +15 -7
- package/front_end/panels/application/appManifestView.css +5 -5
- package/front_end/panels/application/backgroundServiceView.css +18 -2
- package/front_end/panels/application/components/AdsView.ts +100 -4
- package/front_end/panels/application/components/adsView.css +8 -5
- package/front_end/panels/application/components/backForwardCacheView.css +5 -5
- package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -1
- package/front_end/panels/application/components/endpointsGrid.css +1 -1
- package/front_end/panels/application/components/permissionsPolicySection.css +1 -1
- package/front_end/panels/application/components/protocolHandlersView.css +6 -6
- package/front_end/panels/application/components/reportsGrid.css +1 -1
- package/front_end/panels/application/components/serviceWorkerRouterView.css +4 -4
- package/front_end/panels/application/components/trustTokensView.css +7 -7
- package/front_end/panels/application/cookieItemsView.css +3 -3
- package/front_end/panels/application/deviceBoundSessionsView.css +3 -3
- package/front_end/panels/application/frameDetailsReportView.css +11 -11
- package/front_end/panels/application/indexedDBViews.css +7 -7
- package/front_end/panels/application/originTrialTokenRows.css +2 -2
- package/front_end/panels/application/originTrialTreeView.css +3 -3
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +1 -1
- package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
- package/front_end/panels/application/preloading/components/usedPreloadingView.css +7 -7
- package/front_end/panels/application/preloading/preloadingView.css +1 -1
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +3 -3
- package/front_end/panels/application/serviceWorkerCacheViews.css +5 -5
- package/front_end/panels/application/serviceWorkerUpdateCycleView.css +12 -12
- package/front_end/panels/application/serviceWorkersView.css +15 -16
- package/front_end/panels/application/storageView.css +5 -5
- package/front_end/panels/application/webMCPView.css +9 -9
- package/front_end/panels/autofill/autofillView.css +4 -4
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +5 -3
- package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/changes/changesSidebar.css +1 -1
- package/front_end/panels/changes/changesView.css +1 -1
- package/front_end/panels/changes/combinedDiffView.css +1 -1
- package/front_end/panels/common/CPUThrottlingOption.ts +5 -10
- package/front_end/panels/common/badgeNotification.css +2 -2
- package/front_end/panels/common/domLinkifier.css +1 -1
- package/front_end/panels/common/gdpSignUpDialog.css +3 -3
- package/front_end/panels/common/geminiRebrandPromoDialog.css +1 -1
- package/front_end/panels/console/ConsolePrompt.ts +6 -3
- package/front_end/panels/console/ConsoleView.ts +23 -19
- package/front_end/panels/console/ConsoleViewMessage.ts +7 -2
- package/front_end/panels/console/console-meta.ts +9 -43
- package/front_end/panels/console/consoleContextSelector.css +2 -2
- package/front_end/panels/console/consolePinPane.css +9 -9
- package/front_end/panels/console/consolePrompt.css +5 -5
- package/front_end/panels/console/consoleView.css +39 -39
- package/front_end/panels/coverage/coverageListView.css +2 -2
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +34 -34
- package/front_end/panels/css_overview/cssOverviewProcessingView.css +5 -5
- package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +1 -1
- package/front_end/panels/css_overview/cssOverviewStartView.css +17 -17
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +209 -62
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +4 -4
- package/front_end/panels/elements/DOMTreeContextMenu.ts +59 -54
- package/front_end/panels/elements/ElementIssueUtils.ts +10 -2
- package/front_end/panels/elements/ElementsPanel.ts +5 -2
- package/front_end/panels/elements/ElementsTreeElement.ts +212 -255
- package/front_end/panels/elements/ElementsTreeOutline.ts +1804 -495
- package/front_end/panels/elements/ShortcutTreeElement.ts +6 -3
- package/front_end/panels/elements/StandaloneStylesContainer.ts +5 -11
- package/front_end/panels/elements/StylePropertiesSection.ts +65 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -0
- package/front_end/panels/elements/StylesContainer.ts +1 -0
- package/front_end/panels/elements/StylesSidebarPane.ts +317 -159
- package/front_end/panels/elements/classesPaneWidget.css +6 -6
- package/front_end/panels/elements/components/stylePropertyEditor.css +7 -7
- package/front_end/panels/elements/computedStyleWidget.css +1 -1
- package/front_end/panels/elements/elementStatePaneWidget.css +8 -8
- package/front_end/panels/elements/elements-meta.ts +14 -0
- package/front_end/panels/elements/elementsPanel.css +4 -4
- package/front_end/panels/elements/elementsTreeOutline.css +222 -38
- package/front_end/panels/elements/layersWidget.css +4 -4
- package/front_end/panels/elements/layoutPane.css +18 -18
- package/front_end/panels/elements/metricsSidebarPane.css +11 -11
- package/front_end/panels/elements/platformFontsWidget.css +5 -5
- package/front_end/panels/elements/propertiesWidget.css +2 -2
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +20 -20
- package/front_end/panels/elements/stylesSidebarPane.css +37 -20
- package/front_end/panels/emulation/deviceModeView.css +49 -49
- package/front_end/panels/emulation/mediaQueryInspector.css +18 -18
- package/front_end/panels/event_listeners/eventListenersView.css +1 -1
- package/front_end/panels/explain/components/consoleInsight.css +29 -29
- package/front_end/panels/issues/components/elementsPanelLink.css +2 -2
- package/front_end/panels/issues/components/hideIssuesMenu.css +1 -1
- package/front_end/panels/issues/issuesPane.css +2 -2
- package/front_end/panels/issues/issuesTree.css +50 -50
- package/front_end/panels/layer_viewer/Layers3DView.ts +9 -10
- package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
- package/front_end/panels/layer_viewer/layerTreeOutline.css +2 -2
- package/front_end/panels/layer_viewer/layers3DView.css +1 -1
- package/front_end/panels/layer_viewer/paintProfiler.css +1 -1
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
- package/front_end/panels/media/playerListView.css +9 -9
- package/front_end/panels/media/playerMessagesView.css +8 -8
- package/front_end/panels/media/playerPropertiesView.css +6 -6
- package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +1 -1
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +9 -9
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
- package/front_end/panels/network/NetworkPanel.ts +9 -4
- package/front_end/panels/network/RequestConditionsDrawer.ts +12 -12
- package/front_end/panels/network/RequestPayloadView.ts +78 -26
- package/front_end/panels/network/binaryResourceView.css +1 -1
- package/front_end/panels/network/components/EditableSpan.css +3 -3
- package/front_end/panels/network/components/HeaderSectionRow.css +14 -14
- package/front_end/panels/network/components/RequestHeaderSection.css +7 -7
- package/front_end/panels/network/components/RequestHeadersView.css +18 -18
- package/front_end/panels/network/components/RequestTrustTokensView.css +1 -1
- package/front_end/panels/network/network-meta.ts +9 -9
- package/front_end/panels/network/networkConfigView.css +11 -11
- package/front_end/panels/network/networkLogView.css +35 -35
- package/front_end/panels/network/networkManageCustomHeadersView.css +1 -1
- package/front_end/panels/network/networkPanel.css +7 -7
- package/front_end/panels/network/networkTimingTable.css +13 -13
- package/front_end/panels/network/requestConditionsDrawer.css +4 -4
- package/front_end/panels/network/requestCookiesView.css +5 -5
- package/front_end/panels/network/requestDeviceBoundSessionsView.css +1 -1
- package/front_end/panels/network/requestHTMLView.css +1 -1
- package/front_end/panels/network/requestHeadersTree.css +19 -19
- package/front_end/panels/network/requestInitiatorView.css +1 -1
- package/front_end/panels/network/requestInitiatorViewTree.css +3 -3
- package/front_end/panels/network/requestPayloadTree.css +5 -5
- package/front_end/panels/network/requestPayloadView.css +1 -1
- package/front_end/panels/network/resourceChunkView.css +3 -3
- package/front_end/panels/network/signedExchangeInfoTree.css +6 -6
- package/front_end/panels/profiler/heapProfiler.css +15 -15
- package/front_end/panels/profiler/profileLauncherView.css +10 -10
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/recorder/StepEditor.ts +86 -7
- package/front_end/panels/recorder/TimelineSection.ts +2 -1
- package/front_end/panels/recorder/createRecordingView.css +17 -17
- package/front_end/panels/recorder/extensionView.css +5 -5
- package/front_end/panels/recorder/injected/RecordingClient.ts +1 -1
- package/front_end/panels/recorder/models/SchemaUtils.ts +2 -2
- package/front_end/panels/recorder/models/ScreenshotStorage.ts +1 -1
- package/front_end/panels/recorder/recorderPanel.css +7 -7
- package/front_end/panels/recorder/recordingListView.css +12 -12
- package/front_end/panels/recorder/recordingView.css +47 -47
- package/front_end/panels/recorder/stepEditor.css +2 -2
- package/front_end/panels/recorder/stepView.css +20 -20
- package/front_end/panels/recorder/timelineSection.css +9 -9
- package/front_end/panels/screencast/screencastView.css +12 -12
- package/front_end/panels/search/searchResultsPane.css +10 -10
- package/front_end/panels/search/searchView.css +9 -9
- package/front_end/panels/security/SecurityPanel.ts +84 -54
- package/front_end/panels/security/SecurityPanelSidebar.ts +0 -32
- package/front_end/panels/security/mainView.css +26 -26
- package/front_end/panels/security/originView.css +15 -15
- package/front_end/panels/sensors/locationsSettingsTab.css +6 -6
- package/front_end/panels/sensors/sensors.css +28 -28
- package/front_end/panels/settings/KeybindsSettingsTab.ts +5 -2
- package/front_end/panels/settings/components/syncSection.css +5 -5
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +13 -13
- package/front_end/panels/settings/emulation/devicesSettingsTab.css +16 -16
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +2 -2
- package/front_end/panels/settings/keybindsSettingsTab.css +2 -2
- package/front_end/panels/settings/settingsScreen.css +5 -5
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/breakpointEditDialog.css +9 -9
- package/front_end/panels/sources/breakpointsView.css +25 -25
- package/front_end/panels/sources/callStackSidebarPane.css +10 -10
- package/front_end/panels/sources/components/HeadersView.css +6 -6
- package/front_end/panels/sources/debuggerPausedMessage.css +4 -4
- package/front_end/panels/sources/dialog.css +2 -2
- package/front_end/panels/sources/navigatorTree.css +2 -2
- package/front_end/panels/sources/navigatorView.css +2 -2
- package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
- package/front_end/panels/sources/sourcesNavigator.css +1 -1
- package/front_end/panels/sources/sourcesPanel.css +2 -2
- package/front_end/panels/sources/sourcesView.css +1 -1
- package/front_end/panels/sources/threadsSidebarPane.css +5 -5
- package/front_end/panels/sources/watchExpressionsSidebarPane.css +8 -8
- package/front_end/panels/timeline/TimelineDetailsView.ts +9 -21
- package/front_end/panels/timeline/TimelineFlameChartView.ts +3 -5
- package/front_end/panels/timeline/TimelineMiniMap.ts +3 -3
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +2 -6
- package/front_end/panels/timeline/components/CWVMetrics.ts +9 -10
- package/front_end/panels/timeline/components/DetailsView.ts +12 -16
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +13 -13
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +19 -19
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +7 -9
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +3 -3
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +13 -13
- package/front_end/panels/timeline/components/LiveMetricsView.ts +65 -65
- package/front_end/panels/timeline/components/MetricCard.ts +25 -25
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +22 -22
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +9 -9
- package/front_end/panels/timeline/components/OriginMap.ts +7 -7
- package/front_end/panels/timeline/components/RelatedInsightChips.ts +2 -2
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +19 -20
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +1 -1
- package/front_end/panels/timeline/components/TimelineSummary.ts +2 -2
- package/front_end/panels/timeline/components/Utils.ts +2 -6
- package/front_end/panels/timeline/components/breadcrumbsUI.css +3 -3
- package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +13 -13
- package/front_end/panels/timeline/components/ignoreListSetting.css +3 -3
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +6 -9
- package/front_end/panels/timeline/components/insights/Checklist.ts +2 -2
- package/front_end/panels/timeline/components/insights/Table.ts +1 -1
- package/front_end/panels/timeline/components/liveMetricsView.css +39 -39
- package/front_end/panels/timeline/components/metricCard.css +20 -20
- package/front_end/panels/timeline/components/networkRequestDetails.css +9 -9
- package/front_end/panels/timeline/components/networkRequestTooltip.css +14 -14
- package/front_end/panels/timeline/components/networkTrackWidget.css +2 -2
- package/front_end/panels/timeline/components/originMap.css +4 -4
- package/front_end/panels/timeline/components/relatedInsightChips.css +1 -1
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +4 -4
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +5 -5
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
- package/front_end/panels/timeline/components/timelineSummary.css +4 -4
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -4
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +6 -6
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
- package/front_end/panels/timeline/thirdPartyTreeView.css +5 -5
- package/front_end/panels/timeline/timeline-meta.ts +0 -6
- package/front_end/panels/timeline/timelineDetailsView.css +11 -11
- package/front_end/panels/timeline/timelinePanel.css +20 -20
- package/front_end/panels/timeline/timelineTreeView.css +8 -8
- package/front_end/panels/webauthn/webauthnPane.css +6 -6
- package/front_end/panels/whats_new/ReleaseNoteText.ts +2 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/i18n/i18n-impl.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +42 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +15 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts +14 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +23 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +77 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/package.json +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +16 -2
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +36 -1
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +86 -6
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/web-vitals/README.chromium +2 -2
- package/front_end/third_party/web-vitals/package/README.md +22 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +6 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +30 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +14 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +19 -13
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +3 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +15 -1
- package/front_end/third_party/web-vitals/package/package.json +1 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +9 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +36 -5
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +21 -15
- package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +4 -1
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +16 -1
- package/front_end/third_party/web-vitals/rebuild.sh +3 -3
- package/front_end/ui/comments/CommentAnchorResolver.ts +109 -4
- package/front_end/ui/comments/CommentOverlayManager.ts +16 -32
- package/front_end/ui/comments/commentsOverlay.css +6 -5
- package/front_end/ui/components/adorners/Adorner.ts +1 -1
- package/front_end/ui/components/adorners/adorner.css +6 -6
- package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
- package/front_end/ui/components/buttons/button.css +9 -9
- package/front_end/ui/components/buttons/floatingButton.css +2 -2
- package/front_end/ui/components/buttons/textButton.css +12 -12
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/dialogs/dialog.css +1 -1
- package/front_end/ui/components/diff_view/diffView.css +3 -3
- package/front_end/ui/components/expandable_list/expandableList.css +9 -9
- package/front_end/ui/components/highlighting/HighlightElement.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightManager.ts +4 -0
- package/front_end/ui/components/icon_button/iconButton.css +2 -2
- package/front_end/ui/components/input/checkbox.css +8 -8
- package/front_end/ui/components/input/textInput.css +3 -3
- package/front_end/ui/components/issue_counter/issueLinkIcon.css +2 -2
- package/front_end/ui/components/linkifier/linkifierImpl.css +1 -1
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -1
- package/front_end/ui/components/markdown_view/codeBlock.css +2 -2
- package/front_end/ui/components/markdown_view/markdownView.css +7 -7
- package/front_end/ui/components/menus/menuGroup.css +2 -2
- package/front_end/ui/components/menus/menuItem.css +2 -2
- package/front_end/ui/components/menus/selectMenu.css +2 -2
- package/front_end/ui/components/menus/selectMenuButton.css +4 -4
- package/front_end/ui/components/panel_feedback/panelFeedback.css +15 -15
- package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
- package/front_end/ui/components/panel_introduction_steps/panelIntroductionSteps.css +7 -7
- package/front_end/ui/components/report_view/report.css +3 -3
- package/front_end/ui/components/report_view/reportSectionDivider.css +1 -1
- package/front_end/ui/components/report_view/reportValue.css +1 -1
- package/front_end/ui/components/request_link_icon/requestLinkIcon.css +2 -2
- package/front_end/ui/components/settings/settingCheckbox.css +6 -6
- package/front_end/ui/components/text_editor/TextEditor.ts +3 -1
- package/front_end/ui/components/text_editor/config.ts +16 -4
- package/front_end/ui/kit/icons/icon.css +4 -4
- package/front_end/ui/kit/link/link.css +1 -1
- package/front_end/ui/legacy/ActionRegistration.ts +23 -23
- package/front_end/ui/legacy/Dialog.ts +1 -1
- package/front_end/ui/legacy/DockController.ts +7 -4
- package/front_end/ui/legacy/EmptyWidget.ts +13 -34
- package/front_end/ui/legacy/FilterBar.ts +4 -4
- package/front_end/ui/legacy/Infobar.ts +2 -2
- package/front_end/ui/legacy/InspectorDrawerView.ts +6 -6
- package/front_end/ui/legacy/InspectorView.ts +22 -27
- package/front_end/ui/legacy/KeyboardShortcut.ts +4 -7
- package/front_end/ui/legacy/ListWidget.ts +7 -7
- package/front_end/ui/legacy/PlusButton.ts +1 -3
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +6 -6
- package/front_end/ui/legacy/SearchableView.ts +18 -17
- package/front_end/ui/legacy/ShortcutRegistry.ts +6 -3
- package/front_end/ui/legacy/SoftContextMenu.ts +8 -8
- package/front_end/ui/legacy/SoftDropDown.ts +1 -1
- package/front_end/ui/legacy/SuggestBox.ts +2 -2
- package/front_end/ui/legacy/TabbedPane.ts +10 -10
- package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -2
- package/front_end/ui/legacy/Toolbar.ts +5 -5
- package/front_end/ui/legacy/Treeoutline.ts +1 -1
- package/front_end/ui/legacy/UIUtils.ts +90 -26
- package/front_end/ui/legacy/ViewManager.ts +1 -1
- package/front_end/ui/legacy/ViewRegistration.ts +7 -7
- package/front_end/ui/legacy/Widget.ts +5 -5
- package/front_end/ui/legacy/checkboxTextLabel.css +3 -3
- package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +16 -0
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -0
- package/front_end/ui/legacy/components/color_picker/spectrum.css +90 -90
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +23 -24
- package/front_end/ui/legacy/components/cookie_table/cookiesTable.css +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +26 -28
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -7
- package/front_end/ui/legacy/components/inline_editor/bezierEditor.css +13 -13
- package/front_end/ui/legacy/components/inline_editor/colorSwatch.css +7 -7
- package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +5 -5
- package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +18 -18
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +104 -86
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +8 -6
- package/front_end/ui/legacy/components/object_ui/objectPopover.css +4 -4
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +28 -11
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +6 -6
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +14 -15
- package/front_end/ui/legacy/components/perf_ui/GCActionDelegate.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/NetworkPriorities.ts +5 -5
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +5 -5
- package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
- package/front_end/ui/legacy/components/perf_ui/filmStripView.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +7 -7
- package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +11 -11
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +4 -6
- package/front_end/ui/legacy/components/perf_ui/pieChart.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/timelineGrid.css +5 -5
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +3 -3
- package/front_end/ui/legacy/components/source_frame/FontView.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +13 -13
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +15 -18
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/jsonView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
- package/front_end/ui/legacy/components/source_frame/source_frame-meta.ts +10 -10
- package/front_end/ui/legacy/components/source_frame/xmlTree.css +3 -3
- package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
- package/front_end/ui/legacy/components/utils/jsUtils.css +10 -10
- package/front_end/ui/legacy/dropTarget.css +2 -2
- package/front_end/ui/legacy/emptyWidget.css +6 -0
- package/front_end/ui/legacy/filter.css +19 -19
- package/front_end/ui/legacy/infobar.css +2 -2
- package/front_end/ui/legacy/inspectorCommon.css +67 -67
- package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +1 -1
- package/front_end/ui/legacy/listWidget.css +5 -5
- package/front_end/ui/legacy/progressIndicator.css +4 -4
- package/front_end/ui/legacy/reportView.css +7 -7
- package/front_end/ui/legacy/searchableView.css +5 -5
- package/front_end/ui/legacy/smallBubble.css +3 -3
- package/front_end/ui/legacy/softContextMenu.css +4 -4
- package/front_end/ui/legacy/softDropDownButton.css +1 -1
- package/front_end/ui/legacy/splitWidget.css +9 -31
- package/front_end/ui/legacy/suggestBox.css +4 -4
- package/front_end/ui/legacy/tabbedPane.css +17 -17
- package/front_end/ui/legacy/textPrompt.css +2 -2
- package/front_end/ui/legacy/toolbar.css +4 -4
- package/front_end/ui/legacy/treeoutline.css +14 -14
- package/front_end/ui/legacy/viewContainers.css +6 -6
- package/front_end/ui/settings/ConsoleSettings.ts +66 -0
- package/front_end/ui/settings/MainSettings.ts +47 -0
- package/front_end/ui/settings/settings.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +12 -0
- package/inspector_overlay/common.ts +12 -12
- package/inspector_overlay/css_grid_label_helpers.ts +16 -17
- package/inspector_overlay/drag_resize_handler.ts +2 -2
- package/inspector_overlay/highlight_common.ts +11 -13
- package/inspector_overlay/highlight_container_query.ts +2 -2
- package/inspector_overlay/highlight_flex_common.ts +6 -7
- package/inspector_overlay/highlight_grid_common.ts +3 -3
- package/inspector_overlay/highlight_isolated_element.ts +12 -3
- package/inspector_overlay/highlight_scroll_snap.ts +2 -2
- package/inspector_overlay/loadCSS.rollup.js +0 -1
- package/inspector_overlay/testing/InspectorOverlayHelpers.ts +13 -13
- package/inspector_overlay/tool_green_dev_anchors.ts +3 -3
- package/inspector_overlay/tool_highlight.ts +9 -9
- package/inspector_overlay/tool_paused.ts +4 -4
- package/inspector_overlay/tool_persistent.ts +11 -11
- package/inspector_overlay/tool_screenshot.ts +7 -7
- package/inspector_overlay/tool_source_order.ts +4 -4
- package/inspector_overlay/tool_viewport_size.ts +3 -3
- package/inspector_overlay/tool_window_controls.ts +4 -4
- package/mcp/mcp.ts +1 -0
- package/package.json +2 -2
- package/front_end/generated/protocol-tsconfig.json +0 -10
- package/front_end/panels/js_timeline/DIR_METADATA +0 -3
- package/front_end/panels/js_timeline/js_timeline-meta.ts +0 -193
- package/front_end/panels/js_timeline/js_timeline.ts +0 -1
- /package/front_end/entrypoints/{formatter_worker/FormatterActions.ts → formatter_actions/formatter_actions.ts} +0 -0
|
@@ -31,6 +31,7 @@ import {StorageAgent} from './agents/StorageAgent.js';
|
|
|
31
31
|
import {StylingAgent} from './agents/StylingAgent.js';
|
|
32
32
|
import {AiAgent2} from './AiAgent2.js';
|
|
33
33
|
import {AiHistoryStorage, ConversationType, type SerializedConversation} from './AiHistoryStorage.js';
|
|
34
|
+
import {isContextSelectionEnabled} from './AiUtils.js';
|
|
34
35
|
import type {ChangeManager} from './ChangeManager.js';
|
|
35
36
|
import {AccessibilityContext} from './contexts/AccessibilityContext.js';
|
|
36
37
|
import {DOMNodeContext} from './contexts/DOMNodeContext.js';
|
|
@@ -106,7 +107,7 @@ export class AiConversation {
|
|
|
106
107
|
|
|
107
108
|
#aidaClient: Host.AidaClient.AidaClient;
|
|
108
109
|
#changeManager: ChangeManager|undefined;
|
|
109
|
-
#origin?: string;
|
|
110
|
+
#origin?: string|SDK.SecurityOrigin.SecurityOrigin;
|
|
110
111
|
#navigationOccurredDuringRun = false;
|
|
111
112
|
|
|
112
113
|
#contexts: Array<ConversationContext<unknown>> = [];
|
|
@@ -180,7 +181,7 @@ export class AiConversation {
|
|
|
180
181
|
return this.history.length === 0;
|
|
181
182
|
}
|
|
182
183
|
|
|
183
|
-
#setOriginIfEmpty(newOrigin: string|undefined): void {
|
|
184
|
+
#setOriginIfEmpty(newOrigin: string|SDK.SecurityOrigin.SecurityOrigin|undefined): void {
|
|
184
185
|
if (!this.#origin) {
|
|
185
186
|
this.#origin = newOrigin;
|
|
186
187
|
}
|
|
@@ -189,7 +190,7 @@ export class AiConversation {
|
|
|
189
190
|
setContext(updateContext: ConversationContext<unknown>|null): void {
|
|
190
191
|
if (!updateContext) {
|
|
191
192
|
this.#contexts = [];
|
|
192
|
-
if (
|
|
193
|
+
if (isContextSelectionEnabled()) {
|
|
193
194
|
this.#updateAgent(ConversationType.NONE);
|
|
194
195
|
}
|
|
195
196
|
|
|
@@ -198,7 +199,7 @@ export class AiConversation {
|
|
|
198
199
|
|
|
199
200
|
this.#contexts = [updateContext];
|
|
200
201
|
|
|
201
|
-
if (
|
|
202
|
+
if (isContextSelectionEnabled()) {
|
|
202
203
|
if (updateContext instanceof FileContext) {
|
|
203
204
|
this.#updateAgent(ConversationType.FILE);
|
|
204
205
|
} else if (updateContext instanceof DOMNodeContext) {
|
|
@@ -365,11 +366,23 @@ export class AiConversation {
|
|
|
365
366
|
return;
|
|
366
367
|
}
|
|
367
368
|
|
|
368
|
-
const
|
|
369
|
-
const history = isTransitioningFromStorage ? [] : this.#filterHistoryForNewAgent();
|
|
370
|
-
|
|
369
|
+
const previousType = this.#type;
|
|
371
370
|
this.#type = type;
|
|
372
371
|
|
|
372
|
+
// In AI Architecture V2, DevTools uses a single unified agent (AiAgent2) that
|
|
373
|
+
// dynamically loads skills on demand. Reusing the existing agent instance across
|
|
374
|
+
// context changes preserves its loaded activeSkills and declared tools so the model
|
|
375
|
+
// does not need to re-learn skills it already acquired earlier in the conversation.
|
|
376
|
+
if (Root.Runtime.hostConfig.devToolsAiV2Architecture?.enabled && this.#agent instanceof AiAgent2) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
// In legacy V1 architecture, agents are recreated when switching conversation types.
|
|
381
|
+
// Discard conversation history when transitioning away from Storage to prevent
|
|
382
|
+
// sensitive data (e.g. cookies or storage items) from leaking into subsequent agent queries.
|
|
383
|
+
const isTransitioningFromStorage = previousType === ConversationType.STORAGE && type !== ConversationType.STORAGE;
|
|
384
|
+
const history = isTransitioningFromStorage ? [] : this.#filterHistoryForNewAgent();
|
|
385
|
+
|
|
373
386
|
const options = {
|
|
374
387
|
aidaClient: this.#aidaClient,
|
|
375
388
|
serverSideLoggingAllowed: isAiAssistanceServerSideLoggingAllowed(),
|
|
@@ -531,7 +544,7 @@ export class AiConversation {
|
|
|
531
544
|
}
|
|
532
545
|
|
|
533
546
|
get origin(): string|undefined {
|
|
534
|
-
return this.#origin;
|
|
547
|
+
return this.#origin instanceof SDK.SecurityOrigin.SecurityOrigin ? this.#origin.siteId() : this.#origin;
|
|
535
548
|
}
|
|
536
549
|
|
|
537
550
|
get type(): ConversationType {
|
|
@@ -543,11 +556,11 @@ export class AiConversation {
|
|
|
543
556
|
return {blocked: true};
|
|
544
557
|
}
|
|
545
558
|
if (this.#origin) {
|
|
546
|
-
return {origin: this
|
|
559
|
+
return {origin: this.origin};
|
|
547
560
|
}
|
|
548
561
|
this.#origin = getPrimaryPageOrigin(this.#targetManager);
|
|
549
562
|
|
|
550
|
-
return {origin: this
|
|
563
|
+
return {origin: this.origin};
|
|
551
564
|
};
|
|
552
565
|
}
|
|
553
566
|
|
|
@@ -561,10 +574,6 @@ function isAiAssistanceServerSideLoggingAllowed(): boolean {
|
|
|
561
574
|
return !Root.Runtime.hostConfig.aidaAvailability?.disallowLogging;
|
|
562
575
|
}
|
|
563
576
|
|
|
564
|
-
function isAiAssistanceContextSelectionAgentEnabled(): boolean {
|
|
565
|
-
return Boolean(Root.Runtime.hostConfig.devToolsAiAssistanceContextSelectionAgent?.enabled);
|
|
566
|
-
}
|
|
567
|
-
|
|
568
577
|
function getPrimaryPageOrigin(
|
|
569
578
|
targetManager: SDK.TargetManager.TargetManager,
|
|
570
579
|
): Platform.DevToolsPath.UrlString|undefined {
|
|
@@ -37,7 +37,7 @@ export interface SerializedImage {
|
|
|
37
37
|
const DEFAULT_MAX_STORAGE_SIZE = 50 * 1024 * 1024;
|
|
38
38
|
export const MAX_RECENT_PROMPTS_COUNT = 20;
|
|
39
39
|
export const MAX_CONVERSATIONS_COUNT = 50;
|
|
40
|
-
export const RECENT_PROMPTS_SIZE_LIMIT = 100 * 1024;
|
|
40
|
+
export const RECENT_PROMPTS_SIZE_LIMIT: number = 100 * 1024;
|
|
41
41
|
|
|
42
42
|
export const enum Events {
|
|
43
43
|
HISTORY_DELETED = 'AiHistoryDeleted',
|
|
@@ -57,7 +57,7 @@ export class AiHistoryStorage extends Common.ObjectWrapper.ObjectWrapper<EventTy
|
|
|
57
57
|
constructor(
|
|
58
58
|
// eslint-disable-next-line @devtools/no-instance-of-migrated-singletons
|
|
59
59
|
settings: Common.Settings.Settings = Common.Settings.Settings.instance(),
|
|
60
|
-
maxStorageSize = DEFAULT_MAX_STORAGE_SIZE,
|
|
60
|
+
maxStorageSize: number = DEFAULT_MAX_STORAGE_SIZE,
|
|
61
61
|
) {
|
|
62
62
|
super();
|
|
63
63
|
this.#historySetting = settings.createSetting('ai-assistance-history-entries', []);
|
|
@@ -123,6 +123,22 @@ export function isGeminiBranding(): boolean {
|
|
|
123
123
|
return !!Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Returns true if context selection / dynamic context switching is enabled.
|
|
128
|
+
*
|
|
129
|
+
* In the legacy V1 architecture, this corresponds to the `ContextSelectionAgent`,
|
|
130
|
+
* which dynamically routes conversations and allows changing the active context.
|
|
131
|
+
* In the unified V2 architecture (`AiAgent2`), dynamic context selection is natively
|
|
132
|
+
* supported across the single agent instance.
|
|
133
|
+
*
|
|
134
|
+
* This bridge function checks either flag during the transition phase and can be
|
|
135
|
+
* removed in the future when V2 ships permanently and the V1 architecture is removed.
|
|
136
|
+
*/
|
|
137
|
+
export function isContextSelectionEnabled(): boolean {
|
|
138
|
+
return Boolean(Root.Runtime.hostConfig.devToolsAiAssistanceContextSelectionAgent?.enabled) ||
|
|
139
|
+
Boolean(Root.Runtime.hostConfig.devToolsAiV2Architecture?.enabled);
|
|
140
|
+
}
|
|
141
|
+
|
|
126
142
|
/**
|
|
127
143
|
* Preconditions determined entirely on the DevTools frontend side (e.g. Incognito
|
|
128
144
|
* mode or age restrictions) that prevent AI assistance features from running.
|
|
@@ -108,7 +108,7 @@ export class EvaluateAction {
|
|
|
108
108
|
returnByValue: false,
|
|
109
109
|
allowUnsafeEvalBlockedByCSP: false,
|
|
110
110
|
throwOnSideEffect,
|
|
111
|
-
userGesture:
|
|
111
|
+
userGesture: false,
|
|
112
112
|
awaitPromise: true,
|
|
113
113
|
arguments: args.map(remoteObject => {
|
|
114
114
|
return {objectId: remoteObject.objectId};
|
|
@@ -127,7 +127,7 @@ npm start -- --browser=canary
|
|
|
127
127
|
or
|
|
128
128
|
|
|
129
129
|
```
|
|
130
|
-
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --custom-devtools-frontend=file://$(realpath out/
|
|
130
|
+
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --custom-devtools-frontend=file://$(realpath out/Default/gen/front_end)
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
### Enable debug logs
|
|
@@ -85,8 +85,8 @@ If the user asks a question that requires an investigation of a problem, use thi
|
|
|
85
85
|
* instance for a new conversation.
|
|
86
86
|
*/
|
|
87
87
|
export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON> {
|
|
88
|
-
readonly preamble = preamble;
|
|
89
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_ACCESSIBILITY_AGENT;
|
|
88
|
+
readonly preamble: string = preamble;
|
|
89
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_ACCESSIBILITY_AGENT;
|
|
90
90
|
readonly #lighthouseRecording?:
|
|
91
91
|
(overrides?: LHModel.RunTypes.RunOverrides) => Promise<LHModel.ReporterTypes.ReportJSON|null>;
|
|
92
92
|
|
|
@@ -253,7 +253,6 @@ export class AccessibilityAgent extends AiAgent<LHModel.ReporterTypes.ReportJSON
|
|
|
253
253
|
return await executeJsTool.handler(
|
|
254
254
|
args,
|
|
255
255
|
{
|
|
256
|
-
conversationContext: this.context ?? null,
|
|
257
256
|
changeManager: this.#changes,
|
|
258
257
|
createExtensionScope: this.#createExtensionScope.bind(this),
|
|
259
258
|
execJs: this.#execJs,
|
|
@@ -205,7 +205,7 @@ export abstract class ConversationContext<T> {
|
|
|
205
205
|
return true;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
getOrigin(): string {
|
|
208
|
+
getOrigin(): string|SDK.SecurityOrigin.SecurityOrigin {
|
|
209
209
|
return extractContextOrigin(this.getURL());
|
|
210
210
|
}
|
|
211
211
|
|
|
@@ -221,15 +221,31 @@ export abstract class ConversationContext<T> {
|
|
|
221
221
|
* @param establishedOrigin The origin that the current conversation is locked to.
|
|
222
222
|
* If undefined, the conversation has not yet been locked to an origin.
|
|
223
223
|
*/
|
|
224
|
-
isOriginAllowed(establishedOrigin: string|undefined): boolean {
|
|
224
|
+
isOriginAllowed(establishedOrigin: string|SDK.SecurityOrigin.SecurityOrigin|undefined): boolean {
|
|
225
225
|
const origin = this.getOrigin();
|
|
226
|
+
|
|
227
|
+
if (origin instanceof SDK.SecurityOrigin.SecurityOrigin) {
|
|
228
|
+
if (origin.isOpaque()) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
231
|
+
if (!establishedOrigin) {
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
const established = establishedOrigin instanceof SDK.SecurityOrigin.SecurityOrigin ?
|
|
235
|
+
establishedOrigin :
|
|
236
|
+
SDK.SecurityOrigin.SecurityOrigin.create(establishedOrigin);
|
|
237
|
+
return origin.isSameOriginWith(established);
|
|
238
|
+
}
|
|
239
|
+
|
|
226
240
|
// If no origin is established yet, this context will be the one to lock the conversation.
|
|
227
241
|
// Opaque origins are never allowed to be used as context.
|
|
228
242
|
if (!establishedOrigin) {
|
|
229
243
|
return !isOpaqueOrigin(origin);
|
|
230
244
|
}
|
|
231
245
|
// Only allow data that matches the origin the conversation is already locked to.
|
|
232
|
-
|
|
246
|
+
const establishedString =
|
|
247
|
+
establishedOrigin instanceof SDK.SecurityOrigin.SecurityOrigin ? establishedOrigin.siteId() : establishedOrigin;
|
|
248
|
+
return areOriginsEquivalent(origin, establishedString);
|
|
233
249
|
}
|
|
234
250
|
|
|
235
251
|
/**
|
|
@@ -505,14 +521,9 @@ export abstract class AiAgent<T> {
|
|
|
505
521
|
|
|
506
522
|
readonly #sessionId: string;
|
|
507
523
|
readonly #aidaClient: Host.AidaClient.AidaClient;
|
|
508
|
-
/**
|
|
509
|
-
* Whether server-side logging is permitted by the system policy (based on
|
|
510
|
-
* user preferences, feature flags, or branding configurations).
|
|
511
|
-
*/
|
|
512
|
-
readonly #serverSideLoggingAllowed: boolean;
|
|
513
524
|
/**
|
|
514
525
|
* Tracks the dynamic runtime state of logging. Even if logging is allowed
|
|
515
|
-
* by policy, tools can
|
|
526
|
+
* by policy, tools or sensitive contexts can deactivate this to avoid logging sensitive data.
|
|
516
527
|
*/
|
|
517
528
|
#serverSideLoggingActive: boolean;
|
|
518
529
|
readonly confirmSideEffect: typeof Promise.withResolvers;
|
|
@@ -548,7 +559,6 @@ export abstract class AiAgent<T> {
|
|
|
548
559
|
if (Root.Runtime.hostConfig.devToolsGeminiRebranding?.enabled) {
|
|
549
560
|
serverSideLoggingAllowed = false;
|
|
550
561
|
}
|
|
551
|
-
this.#serverSideLoggingAllowed = serverSideLoggingAllowed;
|
|
552
562
|
this.#serverSideLoggingActive = serverSideLoggingAllowed;
|
|
553
563
|
this.#sessionId = opts.sessionId ?? crypto.randomUUID();
|
|
554
564
|
this.confirmSideEffect = opts.confirmSideEffectForTest ?? (() => Promise.withResolvers());
|
|
@@ -603,16 +613,14 @@ export abstract class AiAgent<T> {
|
|
|
603
613
|
}
|
|
604
614
|
|
|
605
615
|
/**
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
616
|
+
* Disables server-side logging for the remainder of this agent instance's lifetime.
|
|
617
|
+
*
|
|
618
|
+
* Logging deactivation is irreversible for the session. Conversation history
|
|
619
|
+
* accumulates across turns; re-enabling logging later would leak sensitive
|
|
620
|
+
* data from prior turns to AIDA.
|
|
609
621
|
*/
|
|
610
|
-
protected
|
|
611
|
-
|
|
612
|
-
this.#serverSideLoggingActive = true;
|
|
613
|
-
} else {
|
|
614
|
-
this.#serverSideLoggingActive = false;
|
|
615
|
-
}
|
|
622
|
+
protected disableServerSideLogging(): void {
|
|
623
|
+
this.#serverSideLoggingActive = false;
|
|
616
624
|
}
|
|
617
625
|
|
|
618
626
|
popPendingMultimodalInput(): MultimodalInput|undefined {
|
|
@@ -794,9 +802,9 @@ export abstract class AiAgent<T> {
|
|
|
794
802
|
multimodalInput?: MultimodalInput,
|
|
795
803
|
): AsyncGenerator<ResponseData, void, void> {
|
|
796
804
|
await options.selected?.refresh();
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
805
|
+
// Reset context on each run so cleared selections (`null`) do not leave
|
|
806
|
+
// stale context references on long-lived agent instances (e.g. `AiAgent2`).
|
|
807
|
+
this.context = options.selected ?? undefined;
|
|
800
808
|
await this.preRun();
|
|
801
809
|
|
|
802
810
|
const enhancedQuery = await this.enhanceQuery(initialQuery, options.selected, multimodalInput?.type);
|
|
@@ -1043,9 +1051,11 @@ export abstract class AiAgent<T> {
|
|
|
1043
1051
|
sideEffectConfirmationPromiseWithResolvers.resolve(false);
|
|
1044
1052
|
}
|
|
1045
1053
|
|
|
1046
|
-
|
|
1054
|
+
const onAbort = (): void => {
|
|
1047
1055
|
sideEffectConfirmationPromiseWithResolvers.resolve(false);
|
|
1048
|
-
}
|
|
1056
|
+
};
|
|
1057
|
+
|
|
1058
|
+
options?.signal?.addEventListener('abort', onAbort, {once: true});
|
|
1049
1059
|
|
|
1050
1060
|
yield {
|
|
1051
1061
|
type: ResponseType.SIDE_EFFECT,
|
|
@@ -1053,7 +1063,12 @@ export abstract class AiAgent<T> {
|
|
|
1053
1063
|
description: result.description,
|
|
1054
1064
|
};
|
|
1055
1065
|
|
|
1056
|
-
|
|
1066
|
+
let approvedRun = false;
|
|
1067
|
+
try {
|
|
1068
|
+
approvedRun = await sideEffectConfirmationPromiseWithResolvers.promise;
|
|
1069
|
+
} finally {
|
|
1070
|
+
options?.signal?.removeEventListener('abort', onAbort);
|
|
1071
|
+
}
|
|
1057
1072
|
if (!approvedRun) {
|
|
1058
1073
|
yield {
|
|
1059
1074
|
type: ResponseType.ACTION,
|
|
@@ -88,8 +88,8 @@ export interface ContextSelectionAgentOptions extends AgentOptions {
|
|
|
88
88
|
* instance for a new conversation.
|
|
89
89
|
*/
|
|
90
90
|
export class ContextSelectionAgent extends AiAgent<never> {
|
|
91
|
-
readonly preamble = preamble;
|
|
92
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_CONTEXT_SELECTION_AGENT;
|
|
91
|
+
readonly preamble: string = preamble;
|
|
92
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_CONTEXT_SELECTION_AGENT;
|
|
93
93
|
get userTier(): string|undefined {
|
|
94
94
|
// TODO: Make this depend on variable.
|
|
95
95
|
return Root.Runtime.hostConfig.devToolsFreestyler?.userTier;
|
|
@@ -550,7 +550,8 @@ export class ContextSelectionAgent extends AiAgent<never> {
|
|
|
550
550
|
}
|
|
551
551
|
|
|
552
552
|
static lastSourceId = 0;
|
|
553
|
-
static uiSourceCodeId
|
|
553
|
+
static uiSourceCodeId: WeakMap<Workspace.UISourceCode.UISourceCode, number> =
|
|
554
|
+
new WeakMap<Workspace.UISourceCode.UISourceCode, number>();
|
|
554
555
|
/**
|
|
555
556
|
* This is a heuristic algorithm that gets all the source files coming from the
|
|
556
557
|
* network and assigns unique ids to be linked from the LLM Markdown response.
|
|
@@ -78,8 +78,8 @@ MDN Web Docs: JavaScript Functions: https://developer.mozilla.org/en-US/docs/Web
|
|
|
78
78
|
* instance for a new conversation.
|
|
79
79
|
*/
|
|
80
80
|
export class FileAgent extends AiAgent<Workspace.UISourceCode.UISourceCode> {
|
|
81
|
-
readonly preamble = preamble;
|
|
82
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_FILE_AGENT;
|
|
81
|
+
readonly preamble: string = preamble;
|
|
82
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_FILE_AGENT;
|
|
83
83
|
get userTier(): string|undefined {
|
|
84
84
|
return Root.Runtime.hostConfig.devToolsAiAssistanceFileAgent?.userTier;
|
|
85
85
|
}
|
|
@@ -71,8 +71,8 @@ This request aims to retrieve a list of products matching the search query "lapt
|
|
|
71
71
|
* instance for a new conversation.
|
|
72
72
|
*/
|
|
73
73
|
export class NetworkAgent extends AiAgent<SDK.NetworkRequest.NetworkRequest> {
|
|
74
|
-
readonly preamble = preamble;
|
|
75
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_NETWORK_AGENT;
|
|
74
|
+
readonly preamble: string = preamble;
|
|
75
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_NETWORK_AGENT;
|
|
76
76
|
get userTier(): string|undefined {
|
|
77
77
|
return Root.Runtime.hostConfig.devToolsAiAssistanceNetworkAgent?.userTier;
|
|
78
78
|
}
|
|
@@ -209,7 +209,7 @@ export interface PerformanceAgentOptions extends AgentOptions {
|
|
|
209
209
|
* instance for a new conversation.
|
|
210
210
|
*/
|
|
211
211
|
export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
212
|
-
readonly preamble = preamble;
|
|
212
|
+
readonly preamble: string = preamble;
|
|
213
213
|
readonly #tracker: Tracing.FreshRecording.Tracker;
|
|
214
214
|
readonly #networkLog: Logs.NetworkLog.NetworkLog;
|
|
215
215
|
|
|
@@ -79,7 +79,9 @@ const MAX_TARGET_ORIGINS = 100;
|
|
|
79
79
|
|
|
80
80
|
function resolveTargetOrigins(context?: ConversationContext<StorageItem>, origins?: string[]): string[] {
|
|
81
81
|
const primaryOrigin = context?.getOrigin();
|
|
82
|
-
const
|
|
82
|
+
const primaryString =
|
|
83
|
+
primaryOrigin instanceof SDK.SecurityOrigin.SecurityOrigin ? primaryOrigin.siteId() : primaryOrigin;
|
|
84
|
+
const rawList = (origins && origins.length > 0) ? origins : (primaryString ? [primaryString] : []);
|
|
83
85
|
const uniqueOrigins = Array.from(new Set(rawList));
|
|
84
86
|
return uniqueOrigins.slice(0, MAX_TARGET_ORIGINS);
|
|
85
87
|
}
|
|
@@ -102,8 +104,8 @@ interface CookieDetails {
|
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
export class StorageAgent extends AiAgent<StorageItem> {
|
|
105
|
-
readonly preamble = preamble;
|
|
106
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_STORAGE_AGENT;
|
|
107
|
+
readonly preamble: string = preamble;
|
|
108
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_STORAGE_AGENT;
|
|
107
109
|
|
|
108
110
|
get userTier(): string|undefined {
|
|
109
111
|
return Root.Runtime.hostConfig.devToolsFreestyler?.userTier;
|
|
@@ -202,7 +204,7 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
202
204
|
},
|
|
203
205
|
|
|
204
206
|
handler: async args => {
|
|
205
|
-
this.
|
|
207
|
+
this.disableServerSideLogging();
|
|
206
208
|
if (!isSamePrimaryPageOrigin(this.targetManager, this.context)) {
|
|
207
209
|
return {error: 'No origin available or not allowed.'};
|
|
208
210
|
}
|
|
@@ -288,7 +290,7 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
288
290
|
},
|
|
289
291
|
|
|
290
292
|
handler: async (args, options) => {
|
|
291
|
-
this.
|
|
293
|
+
this.disableServerSideLogging();
|
|
292
294
|
if (!isSamePrimaryPageOrigin(this.targetManager, this.context)) {
|
|
293
295
|
return {error: 'No origin available or not allowed.'};
|
|
294
296
|
}
|
|
@@ -388,7 +390,7 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
388
390
|
};
|
|
389
391
|
},
|
|
390
392
|
handler: async args => {
|
|
391
|
-
this.
|
|
393
|
+
this.disableServerSideLogging();
|
|
392
394
|
if (!isSamePrimaryPageOrigin(this.targetManager, this.context)) {
|
|
393
395
|
return {error: 'No origin available or not allowed.'};
|
|
394
396
|
}
|
|
@@ -448,7 +450,7 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
448
450
|
};
|
|
449
451
|
},
|
|
450
452
|
handler: async (args, options) => {
|
|
451
|
-
this.
|
|
453
|
+
this.disableServerSideLogging();
|
|
452
454
|
if (!isSamePrimaryPageOrigin(this.targetManager, this.context)) {
|
|
453
455
|
return {error: 'No origin available or not allowed.'};
|
|
454
456
|
}
|
|
@@ -618,9 +620,9 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
618
620
|
protected override async preRun(): Promise<void> {
|
|
619
621
|
const item = this.context?.getItem();
|
|
620
622
|
if (item instanceof CookieItem && Boolean(item.name)) {
|
|
621
|
-
this.
|
|
623
|
+
this.disableServerSideLogging();
|
|
622
624
|
} else if (item instanceof DOMStorageItem && Boolean(item.key)) {
|
|
623
|
-
this.
|
|
625
|
+
this.disableServerSideLogging();
|
|
624
626
|
}
|
|
625
627
|
}
|
|
626
628
|
|
|
@@ -660,8 +662,8 @@ export class StorageAgent extends AiAgent<StorageItem> {
|
|
|
660
662
|
* @param storageKey Optional. If specified, resolves only the partition exactly matching this unique key, bypassing origin comparison.
|
|
661
663
|
*/
|
|
662
664
|
|
|
663
|
-
export async function getCookiesForDomain(
|
|
664
|
-
|
|
665
|
+
export async function getCookiesForDomain(target: SDK.Target.Target,
|
|
666
|
+
origin: string): Promise<SDK.Cookie.Cookie[]|null> {
|
|
665
667
|
const cookieModel = target.model(SDK.CookieModel.CookieModel);
|
|
666
668
|
if (!cookieModel) {
|
|
667
669
|
return null;
|
|
@@ -31,7 +31,7 @@ Content:
|
|
|
31
31
|
"function_declarations": [
|
|
32
32
|
{
|
|
33
33
|
"name": "getStyles",
|
|
34
|
-
"description": "
|
|
34
|
+
"description": "Retrieves computed and authored CSS styles for one or more elements by their backend node IDs (uids).\n\n**CRITICAL** An element uid is a number, not a selector.\n**CRITICAL** Use selectors to refer to elements in the text output. Do not use uids.\n**CRITICAL** Always provide the explanation argument to explain what and why you query.\n**CRITICAL** You MUST provide a specific list of CSS property names. Do not use generic values like \"all\" or \"*\".",
|
|
35
35
|
"parameters": {
|
|
36
36
|
"type": 6,
|
|
37
37
|
"description": "",
|
|
@@ -78,7 +78,7 @@ Content:
|
|
|
78
78
|
"properties": {
|
|
79
79
|
"code": {
|
|
80
80
|
"type": 1,
|
|
81
|
-
"description": "JavaScript code snippet to run on the inspected page. Make sure the code is formatted for readability.\n\n# Instructions\n\n* To return data, define a top-level `data` variable and populate it with data you want to get. Only JSON-serializable objects can be assigned to `data`.\n*
|
|
81
|
+
"description": "JavaScript code snippet to run on the inspected page. Make sure the code is formatted for readability.\n\n# Instructions\n\n* To return data, define a top-level `data` variable and populate it with data you want to get. Only JSON-serializable objects can be assigned to `data`.\n* $0 refers to the currently selected DOM node (or document body if none selected).\n* **CRITICAL** Never assume a selector for the elements unless you verified your knowledge.\n* **CRITICAL** Variables from previous function calls are not available in subsequent calls.\n* **CRITICAL** Keep code concise (max 40 lines and 2,500 characters). Split complex logic into multiple steps.\n* **CRITICAL** Network requests (e.g., fetch, XMLHttpRequest) are disabled and cannot be made.\n\nFor example, to query DOM elements:\n\n```\nconst data = {\n title: document.title,\n elementText: $0?.textContent?.trim(),\n childCount: $0?.children.length,\n};\n```\n"
|
|
82
82
|
},
|
|
83
83
|
"explanation": {
|
|
84
84
|
"type": 1,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import * as Host from '../../../core/host/host.js';
|
|
6
6
|
import * as Root from '../../../core/root/root.js';
|
|
7
|
-
import
|
|
7
|
+
import * as SDK from '../../../core/sdk/sdk.js';
|
|
8
8
|
import {ChangeManager} from '../ChangeManager.js';
|
|
9
9
|
import {ExtensionScope} from '../ExtensionScope.js';
|
|
10
10
|
import {AI_ASSISTANCE_CSS_CLASS_NAME} from '../injected.js';
|
|
@@ -94,15 +94,16 @@ const MULTIMODAL_ENHANCEMENT_PROMPTS: Record<MultimodalInputType, string> = {
|
|
|
94
94
|
[MultimodalInputType.UPLOADED_IMAGE]: promptForUploadedImage + considerationsForMultimodalInputEvaluation,
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
98
|
+
export const AI_ASSISTANCE_FILTER_REGEX: string = `\\.${AI_ASSISTANCE_CSS_CLASS_NAME}-.*&`;
|
|
98
99
|
|
|
99
100
|
/**
|
|
100
101
|
* One agent instance handles one conversation. Create a new agent
|
|
101
102
|
* instance for a new conversation.
|
|
102
103
|
*/
|
|
103
104
|
export class StylingAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
104
|
-
readonly preamble = preamble;
|
|
105
|
-
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_STYLING_AGENT;
|
|
105
|
+
readonly preamble: string = preamble;
|
|
106
|
+
readonly clientFeature: Host.AidaClient.ClientFeature = Host.AidaClient.ClientFeature.CHROME_STYLING_AGENT;
|
|
106
107
|
get userTier(): string|undefined {
|
|
107
108
|
return Root.Runtime.hostConfig.devToolsFreestyler?.userTier;
|
|
108
109
|
}
|
|
@@ -153,9 +154,11 @@ export class StylingAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
|
153
154
|
return {error: 'Error: Could not find the currently selected element.'};
|
|
154
155
|
}
|
|
155
156
|
return await getStylesTool.handler(args, {
|
|
156
|
-
conversationContext: context,
|
|
157
157
|
getTarget: () => this.targetManager.primaryPageTarget() ?? context.getItem().domModel().target(),
|
|
158
|
-
getEstablishedOrigin: () =>
|
|
158
|
+
getEstablishedOrigin: () => {
|
|
159
|
+
const origin = context.getOrigin();
|
|
160
|
+
return origin instanceof SDK.SecurityOrigin.SecurityOrigin ? origin.siteId() : origin;
|
|
161
|
+
},
|
|
159
162
|
});
|
|
160
163
|
},
|
|
161
164
|
});
|
|
@@ -171,7 +174,6 @@ export class StylingAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
|
171
174
|
handler: (args, options) => executeJsTool.handler(
|
|
172
175
|
args,
|
|
173
176
|
{
|
|
174
|
-
conversationContext: this.context ?? null,
|
|
175
177
|
changeManager: this.#changes,
|
|
176
178
|
createExtensionScope: this.#createExtensionScope.bind(this),
|
|
177
179
|
execJs: this.#execJs,
|
|
@@ -38,9 +38,13 @@ import * as AICallTree from './performance/AICallTree.js';
|
|
|
38
38
|
import * as AIContext from './performance/AIContext.js';
|
|
39
39
|
import * as AIQueries from './performance/AIQueries.js';
|
|
40
40
|
import * as PerformanceAnnotations from './PerformanceAnnotations.js';
|
|
41
|
+
import * as Skill from './skills/Skill.js';
|
|
42
|
+
import * as SkillRegistry from './skills/SkillRegistry.js';
|
|
41
43
|
import * as StorageItem from './StorageItem.js';
|
|
44
|
+
import * as CookieUtils from './tools/CookieUtils.js';
|
|
42
45
|
import * as DOMStorageUtils from './tools/DOMStorageUtils.js';
|
|
43
46
|
import * as ExecuteJavaScript from './tools/ExecuteJavaScript.js';
|
|
47
|
+
import * as GetCookieValues from './tools/GetCookieValues.js';
|
|
44
48
|
import * as GetDetailedCallTree from './tools/GetDetailedCallTree.js';
|
|
45
49
|
import * as GetElementAccessibilityDetails from './tools/GetElementAccessibilityDetails.js';
|
|
46
50
|
import * as GetFunctionCode from './tools/GetFunctionCode.js';
|
|
@@ -49,11 +53,13 @@ import * as GetLighthouseAudits from './tools/GetLighthouseAudits.js';
|
|
|
49
53
|
import * as GetNetworkRequestDetails from './tools/GetNetworkRequestDetails.js';
|
|
50
54
|
import * as GetResourceContent from './tools/GetResourceContent.js';
|
|
51
55
|
import * as GetSourceContent from './tools/GetSourceContent.js';
|
|
56
|
+
import * as GetStorageBreakdown from './tools/GetStorageBreakdown.js';
|
|
52
57
|
import * as GetStorageValues from './tools/GetStorageValues.js';
|
|
53
58
|
import * as GetStyles from './tools/GetStyles.js';
|
|
54
59
|
import * as GetTraceEventByKey from './tools/GetTraceEventByKey.js';
|
|
55
60
|
import * as GetTraceMainThreadSummary from './tools/GetTraceMainThreadSummary.js';
|
|
56
61
|
import * as GetTraceNetworkSummary from './tools/GetTraceNetworkSummary.js';
|
|
62
|
+
import * as ListCookies from './tools/ListCookies.js';
|
|
57
63
|
import * as ListNetworkRequests from './tools/ListNetworkRequests.js';
|
|
58
64
|
import * as ListPageOrigins from './tools/ListPageOrigins.js';
|
|
59
65
|
import * as ListSources from './tools/ListSources.js';
|
|
@@ -82,6 +88,7 @@ export {
|
|
|
82
88
|
ChangeManager,
|
|
83
89
|
ContextSelectionAgent,
|
|
84
90
|
ConversationSummary,
|
|
91
|
+
CookieUtils,
|
|
85
92
|
Debug,
|
|
86
93
|
DOMNodeContext,
|
|
87
94
|
DOMStorageUtils,
|
|
@@ -91,6 +98,7 @@ export {
|
|
|
91
98
|
FileAgent,
|
|
92
99
|
FileContext,
|
|
93
100
|
FileFormatter,
|
|
101
|
+
GetCookieValues,
|
|
94
102
|
GetDetailedCallTree,
|
|
95
103
|
GetElementAccessibilityDetails,
|
|
96
104
|
GetFunctionCode,
|
|
@@ -99,6 +107,7 @@ export {
|
|
|
99
107
|
GetNetworkRequestDetails,
|
|
100
108
|
GetResourceContent,
|
|
101
109
|
GetSourceContent,
|
|
110
|
+
GetStorageBreakdown,
|
|
102
111
|
GetStorageValues,
|
|
103
112
|
GetStyles,
|
|
104
113
|
GetTraceEventByKey,
|
|
@@ -106,6 +115,7 @@ export {
|
|
|
106
115
|
GetTraceNetworkSummary,
|
|
107
116
|
Injected,
|
|
108
117
|
LighthouseFormatter,
|
|
118
|
+
ListCookies,
|
|
109
119
|
ListNetworkRequests,
|
|
110
120
|
ListPageOrigins,
|
|
111
121
|
ListSources,
|
|
@@ -122,6 +132,8 @@ export {
|
|
|
122
132
|
ResolveDevtoolsNodePath,
|
|
123
133
|
RunLighthouse,
|
|
124
134
|
SelectTraceEventByKey,
|
|
135
|
+
Skill,
|
|
136
|
+
SkillRegistry,
|
|
125
137
|
StorageAgent,
|
|
126
138
|
StorageContext,
|
|
127
139
|
StorageItem,
|
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
5
|
import type * as LHModel from '../../lighthouse/lighthouse.js';
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
type AiWidget,
|
|
8
|
+
type ContextDetail,
|
|
9
|
+
ConversationContext,
|
|
10
|
+
} from '../agents/AiAgent.js';
|
|
7
11
|
import {LighthouseFormatter} from '../data_formatters/LighthouseFormatter.js';
|
|
8
12
|
|
|
9
13
|
export class AccessibilityContext extends ConversationContext<LHModel.ReporterTypes.ReportJSON> {
|
|
@@ -60,4 +64,15 @@ export class AccessibilityContext extends ConversationContext<LHModel.ReporterTy
|
|
|
60
64
|
},
|
|
61
65
|
];
|
|
62
66
|
}
|
|
67
|
+
|
|
68
|
+
override async getWidgets(): Promise<AiWidget[]> {
|
|
69
|
+
return [
|
|
70
|
+
{
|
|
71
|
+
name: 'LIGHTHOUSE_REPORT',
|
|
72
|
+
data: {
|
|
73
|
+
report: this.#lh,
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
}
|
|
63
78
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Use of this source code is governed by a BSD-style license that can be
|
|
3
3
|
// found in the LICENSE file.
|
|
4
4
|
|
|
5
|
+
import type * as SDK from '../../../core/sdk/sdk.js';
|
|
5
6
|
import type * as Bindings from '../../bindings/bindings.js';
|
|
6
7
|
import type * as Workspace from '../../workspace/workspace.js';
|
|
7
8
|
import {type ContextDetail, ConversationContext} from '../agents/AiAgent.js';
|
|
@@ -18,6 +19,11 @@ export class FileContext extends ConversationContext<Workspace.UISourceCode.UISo
|
|
|
18
19
|
this.#debuggerWorkspaceBinding = debuggerWorkspaceBinding;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
override getOrigin(): string|SDK.SecurityOrigin.SecurityOrigin {
|
|
23
|
+
const fallbackOrigin = super.getOrigin();
|
|
24
|
+
return this.#file.project()?.securityOrigin?.() ?? fallbackOrigin;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
override getURL(): string {
|
|
22
28
|
return this.#file.url();
|
|
23
29
|
}
|