chrome-devtools-frontend 1.0.1549484 → 1.0.1553956
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/docs/styleguide/ux/components.md +84 -17
- package/docs/styleguide/ux/images/cards.png +0 -0
- package/docs/ui_engineering.md +2 -2
- package/eslint.config.mjs +7 -0
- package/front_end/Images/generate-css-vars.js +8 -4
- package/front_end/core/common/Settings.ts +20 -8
- package/front_end/core/host/UserMetrics.ts +3 -1
- package/front_end/core/i18n/collect-ui-strings.js +19 -10
- package/front_end/core/i18n/generate-locales-js.js +4 -4
- package/front_end/core/protocol_client/CDPConnection.ts +1 -0
- package/front_end/core/protocol_client/InspectorBackend.ts +5 -1
- package/front_end/core/root/Runtime.ts +0 -12
- package/front_end/core/sdk/DOMModel.ts +38 -3
- package/front_end/core/sdk/DebuggerModel.ts +9 -4
- package/front_end/core/sdk/IsolateManager.ts +7 -0
- package/front_end/core/sdk/NetworkManager.ts +12 -10
- package/front_end/core/sdk/PageResourceLoader.ts +11 -4
- package/front_end/core/sdk/RehydratingConnection.ts +5 -2
- package/front_end/core/sdk/SourceMapManager.ts +12 -6
- package/front_end/entrypoints/main/MainImpl.ts +28 -19
- package/front_end/foundation/Universe.ts +7 -0
- package/front_end/generated/InspectorBackendCommands.ts +5 -2
- package/front_end/generated/SupportedCSSProperties.js +14 -0
- package/front_end/generated/protocol-mapping.d.ts +8 -0
- package/front_end/generated/protocol-proxy-api.d.ts +6 -0
- package/front_end/generated/protocol.ts +76 -0
- package/front_end/models/ai_assistance/AiConversation.ts +94 -4
- package/front_end/models/ai_assistance/BuiltInAi.ts +79 -5
- package/front_end/models/ai_assistance/agents/AiAgent.ts +30 -15
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +179 -41
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +5 -0
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +62 -0
- package/front_end/models/ai_assistance/data_formatters/NetworkRequestFormatter.ts +2 -1
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +1 -7
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +124 -12
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +125 -30
- package/front_end/models/ai_assistance/performance/AICallTree.ts +42 -0
- package/front_end/models/ai_code_generation/AiCodeGeneration.ts +12 -0
- package/front_end/models/issues_manager/AttributionReportingIssue.ts +6 -8
- package/front_end/models/issues_manager/BounceTrackingIssue.ts +4 -14
- package/front_end/models/issues_manager/ClientHintIssue.ts +5 -12
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -12
- package/front_end/models/issues_manager/CookieDeprecationMetadataIssue.ts +7 -14
- package/front_end/models/issues_manager/CookieIssue.ts +27 -30
- package/front_end/models/issues_manager/CorsIssue.ts +8 -17
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +5 -8
- package/front_end/models/issues_manager/DeprecationIssue.ts +7 -14
- package/front_end/models/issues_manager/ElementAccessibilityIssue.ts +7 -14
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +4 -11
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +4 -11
- package/front_end/models/issues_manager/GenericIssue.ts +11 -16
- package/front_end/models/issues_manager/HeavyAdIssue.ts +4 -11
- package/front_end/models/issues_manager/Issue.ts +13 -4
- package/front_end/models/issues_manager/IssueAggregator.ts +17 -2
- package/front_end/models/issues_manager/IssuesManager.ts +5 -0
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +3 -10
- package/front_end/models/issues_manager/MixedContentIssue.ts +7 -13
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +4 -11
- package/front_end/models/issues_manager/PermissionElementIssue.ts +262 -0
- package/front_end/models/issues_manager/PropertyRuleIssue.ts +6 -12
- package/front_end/models/issues_manager/QuirksModeIssue.ts +3 -10
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +7 -13
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +4 -11
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +6 -13
- package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +8 -13
- package/front_end/models/issues_manager/UnencodedDigestIssue.ts +2 -9
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabled.md +7 -0
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluder.md +9 -0
- package/front_end/models/issues_manager/descriptions/permissionElementActivationDisabledWithOccluderParent.md +9 -0
- package/front_end/models/issues_manager/descriptions/permissionElementCspFrameAncestorsMissing.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFencedFrameDisallowed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooLarge.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementFontSizeTooSmall.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementGeolocationDeprecated.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInsetBoxShadowUnsupported.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidDisplayStyle.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidSizeValue.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidType.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementInvalidTypeActivation.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementLowContrast.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementNonOpaqueColor.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingBottomUnsupported.md +6 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPaddingRightUnsupported.md +6 -0
- package/front_end/models/issues_manager/descriptions/permissionElementPermissionsPolicyBlocked.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementRegistrationFailed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementRequestInProgress.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementSecurityChecksFailed.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementTypeNotSupported.md +5 -0
- package/front_end/models/issues_manager/descriptions/permissionElementUntrustedEvent.md +7 -0
- package/front_end/models/issues_manager/issues_manager.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -13
- package/front_end/models/stack_trace/StackTraceModel.ts +37 -18
- package/front_end/models/trace/Processor.ts +14 -15
- package/front_end/models/trace/insights/Common.ts +2 -8
- package/front_end/models/trace/insights/types.ts +12 -2
- package/front_end/models/trace/types/TraceEvents.ts +4 -1
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +28 -6
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +9 -23
- package/front_end/panels/ai_assistance/ai_assistance.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +78 -2
- package/front_end/panels/ai_assistance/components/CollapsibleAssistanceContentWidget.ts +71 -0
- package/front_end/panels/ai_assistance/components/PerformanceAgentFlameChart.ts +126 -0
- package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +131 -2
- package/front_end/panels/ai_assistance/components/chatView.css +28 -0
- package/front_end/panels/ai_assistance/components/collapsibleAssistanceContentWidget.css +33 -0
- package/front_end/panels/application/AppManifestView.ts +1007 -521
- package/front_end/panels/application/ApplicationPanelSidebar.ts +22 -38
- package/front_end/panels/application/BackForwardCacheTreeElement.ts +2 -2
- package/front_end/panels/application/BounceTrackingMitigationsTreeElement.ts +2 -2
- package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -5
- package/front_end/panels/application/InterestGroupTreeElement.ts +2 -2
- package/front_end/panels/application/KeyValueStorageItemsView.ts +3 -2
- package/front_end/panels/application/OpenedWindowDetailsView.ts +2 -2
- package/front_end/panels/application/OriginTrialTreeView.ts +1 -1
- package/front_end/panels/application/PreloadingTreeElement.ts +3 -3
- package/front_end/panels/application/ReportingApiTreeElement.ts +2 -2
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +3 -3
- package/front_end/panels/application/SharedStorageListTreeElement.ts +2 -2
- package/front_end/panels/application/StorageBucketsTreeElement.ts +3 -3
- package/front_end/panels/application/StorageView.ts +2 -2
- package/front_end/panels/application/TrustTokensTreeElement.ts +2 -2
- package/front_end/panels/application/components/BackForwardCacheView.ts +2 -2
- package/front_end/panels/application/components/PermissionsPolicySection.ts +1 -1
- package/front_end/panels/application/components/ProtocolHandlersView.ts +1 -1
- package/front_end/panels/application/components/SharedStorageMetadataView.ts +1 -1
- package/front_end/panels/application/components/TrustTokensView.ts +1 -1
- package/front_end/panels/application/preloading/PreloadingView.ts +46 -45
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +80 -75
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +169 -133
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +1 -1
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +74 -93
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +143 -118
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +52 -12
- package/front_end/panels/application/preloading/components/components.ts +0 -2
- package/front_end/panels/changes/ChangesSidebar.ts +2 -0
- package/front_end/panels/changes/CombinedDiffView.ts +2 -0
- package/front_end/panels/common/Annotation.ts +184 -0
- package/front_end/panels/common/AnnotationManager.ts +208 -0
- package/front_end/panels/common/ExtensionView.ts +47 -0
- package/front_end/panels/common/PersistenceUtils.ts +22 -26
- package/front_end/panels/common/annotation.css +40 -0
- package/front_end/panels/common/common.ts +2 -0
- package/front_end/panels/console/ConsoleInsightTeaser.ts +187 -5
- package/front_end/panels/console/ConsolePinPane.ts +437 -217
- package/front_end/panels/console/ConsolePrompt.ts +36 -227
- package/front_end/panels/console/ConsoleView.ts +69 -68
- package/front_end/panels/console/ConsoleViewMessage.ts +18 -14
- package/front_end/panels/console/consoleInsightTeaser.css +23 -0
- package/front_end/panels/console/consoleView.css +1 -1
- package/front_end/panels/console_counters/WarningErrorCounter.ts +2 -0
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +1 -1
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +89 -0
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +5 -5
- package/front_end/panels/elements/ComputedStyleWidget.ts +16 -5
- package/front_end/panels/elements/ElementsPanel.ts +75 -0
- package/front_end/panels/elements/ElementsSidebarPane.ts +1 -3
- package/front_end/panels/elements/ElementsTreeElement.ts +459 -451
- package/front_end/panels/elements/ElementsTreeOutline.ts +48 -15
- package/front_end/panels/elements/ShortcutTreeElement.ts +2 -2
- package/front_end/panels/elements/StyleEditorWidget.ts +2 -2
- package/front_end/panels/elements/StylePropertyTreeElement.ts +21 -20
- package/front_end/panels/elements/StylesSidebarPane.ts +5 -6
- package/front_end/panels/elements/TopLayerContainer.ts +2 -2
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +1 -1
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
- package/front_end/panels/elements/components/QueryContainer.ts +1 -1
- package/front_end/panels/elements/components/StylePropertyEditor.ts +1 -1
- package/front_end/panels/emulation/DeviceModeWrapper.ts +48 -3
- package/front_end/panels/emulation/MediaQueryInspector.ts +171 -125
- package/front_end/panels/explain/components/ConsoleInsight.ts +181 -154
- package/front_end/panels/explain/components/consoleInsight.css +348 -347
- package/front_end/panels/issues/AffectedPermissionElementsView.ts +46 -0
- package/front_end/panels/issues/AffectedResourcesView.ts +2 -2
- package/front_end/panels/issues/AttributionReportingIssueDetailsView.ts +2 -2
- package/front_end/panels/issues/IssueKindView.ts +2 -2
- package/front_end/panels/issues/IssueView.ts +6 -4
- package/front_end/panels/issues/IssuesPane.ts +6 -0
- package/front_end/panels/js_timeline/js_timeline-meta.ts +4 -2
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +165 -149
- package/front_end/panels/layer_viewer/Layers3DView.ts +131 -78
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +149 -100
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +91 -65
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +25 -34
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +61 -45
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +171 -152
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +50 -51
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterDisplay.css +0 -13
- package/front_end/panels/linear_memory_inspector/components/valueInterpreterSettings.css +20 -18
- package/front_end/panels/media/PlayerListView.ts +1 -1
- package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -1
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +2 -2
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +2 -3
- package/front_end/panels/network/NetworkDataGridNode.ts +17 -9
- package/front_end/panels/network/NetworkFrameGrouper.ts +2 -2
- package/front_end/panels/network/NetworkItemView.ts +46 -7
- package/front_end/panels/network/NetworkLogView.ts +10 -11
- package/front_end/panels/network/NetworkLogViewColumns.ts +3 -3
- package/front_end/panels/network/NetworkPanel.ts +63 -1
- package/front_end/panels/network/RequestCookiesView.ts +2 -2
- package/front_end/panels/network/RequestInitiatorView.ts +146 -113
- package/front_end/panels/network/SignedExchangeInfoView.ts +2 -2
- package/front_end/panels/network/components/RequestHeaderSection.css +51 -50
- package/front_end/panels/network/components/RequestHeaderSection.ts +81 -71
- package/front_end/panels/network/components/RequestHeadersView.css +1 -1
- package/front_end/panels/network/components/RequestHeadersView.ts +26 -11
- package/front_end/panels/network/components/RequestTrustTokensView.css +24 -14
- package/front_end/panels/network/components/RequestTrustTokensView.ts +145 -142
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +3 -3
- package/front_end/panels/profiler/IsolateSelector.ts +2 -1
- package/front_end/panels/profiler/ProfileDataGrid.ts +2 -2
- package/front_end/panels/profiler/ProfilesPanel.ts +2 -2
- package/front_end/panels/protocol_monitor/JSONEditor.ts +1 -1
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +49 -33
- package/front_end/panels/recorder/RecorderController.ts +2 -3
- package/front_end/panels/recorder/components/ControlButton.ts +68 -34
- package/front_end/panels/recorder/components/CreateRecordingView.ts +10 -7
- package/front_end/panels/recorder/components/ExtensionView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingListView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +82 -89
- package/front_end/panels/recorder/components/ReplaySection.ts +226 -145
- package/front_end/panels/recorder/{controllers → components}/SelectorPicker.ts +129 -52
- package/front_end/panels/recorder/components/StepEditor.ts +21 -67
- package/front_end/panels/recorder/components/StepView.ts +223 -181
- package/front_end/panels/recorder/components/TimelineSection.ts +69 -48
- package/front_end/panels/recorder/components/components.ts +2 -2
- package/front_end/panels/recorder/components/selectorPicker.css +14 -0
- package/front_end/panels/recorder/components/stepEditor.css +0 -5
- package/front_end/panels/recorder/components/stepView.css +196 -198
- package/front_end/panels/recorder/extensions/ExtensionManager.ts +4 -48
- package/front_end/panels/recorder/models/ScreenshotUtils.ts +17 -11
- package/front_end/panels/screencast/ScreencastView.ts +8 -8
- package/front_end/panels/search/SearchView.ts +1 -1
- package/front_end/panels/security/CookieControlsTreeElement.ts +2 -2
- package/front_end/panels/security/CookieControlsView.ts +9 -16
- package/front_end/panels/security/CookieReportTreeElement.ts +2 -2
- package/front_end/panels/security/SecurityPanel.ts +5 -5
- package/front_end/panels/security/SecurityPanelSidebar.ts +3 -4
- package/front_end/panels/settings/KeybindsSettingsTab.ts +4 -4
- package/front_end/panels/settings/SettingsScreen.ts +2 -3
- package/front_end/panels/settings/components/SyncSection.ts +0 -1
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +16 -8
- package/front_end/panels/sources/BreakpointEditDialog.ts +3 -3
- package/front_end/panels/sources/BreakpointsView.ts +1 -1
- package/front_end/panels/sources/CSSPlugin.ts +6 -6
- package/front_end/panels/sources/CallStackSidebarPane.ts +63 -78
- package/front_end/panels/sources/DebuggerPausedMessage.ts +3 -3
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +39 -30
- package/front_end/panels/sources/GoToLineQuickOpen.ts +11 -7
- package/front_end/panels/sources/NavigatorView.ts +2 -2
- package/front_end/panels/sources/OpenFileQuickOpen.ts +11 -15
- package/front_end/panels/sources/OutlineQuickOpen.ts +23 -26
- package/front_end/panels/sources/SourcesPanel.ts +1 -11
- package/front_end/panels/sources/SourcesView.ts +2 -2
- package/front_end/panels/sources/TabbedEditorContainer.ts +13 -11
- package/front_end/panels/sources/ThreadsSidebarPane.ts +96 -101
- package/front_end/panels/sources/UISourceCodeFrame.ts +5 -5
- package/front_end/panels/sources/threadsSidebarPane.css +6 -5
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +2 -3
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +23 -33
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +4 -3
- package/front_end/panels/timeline/TimelineFlameChartView.ts +12 -0
- package/front_end/panels/timeline/TimelineHistoryManager.ts +2 -2
- package/front_end/panels/timeline/TimelinePanel.ts +17 -14
- package/front_end/panels/timeline/components/CPUThrottlingSelector.ts +1 -1
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +164 -142
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +48 -28
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +18 -23
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +99 -74
- package/front_end/panels/timeline/components/NetworkThrottlingSelector.ts +1 -1
- package/front_end/panels/timeline/components/OriginMap.ts +1 -1
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +9 -12
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +262 -291
- package/front_end/panels/timeline/components/Utils.ts +25 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +210 -146
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +8 -20
- package/front_end/panels/timeline/components/insights/Cache.ts +0 -9
- package/front_end/panels/timeline/components/insights/Checklist.ts +1 -1
- package/front_end/panels/timeline/components/insights/DOMSize.ts +12 -34
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +0 -9
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +0 -9
- package/front_end/panels/timeline/components/insights/EventRef.ts +47 -109
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +0 -9
- package/front_end/panels/timeline/components/insights/ForcedReflow.ts +0 -9
- package/front_end/panels/timeline/components/insights/INPBreakdown.ts +0 -9
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +2 -11
- package/front_end/panels/timeline/components/insights/ImageRef.ts +112 -0
- package/front_end/panels/timeline/components/insights/InsightRenderer.ts +91 -0
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +0 -9
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +4 -11
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +0 -9
- package/front_end/panels/timeline/components/insights/ModernHTTP.ts +0 -9
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +7 -22
- package/front_end/panels/timeline/components/insights/NodeLink.ts +68 -43
- package/front_end/panels/timeline/components/insights/README.md +2 -3
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +0 -9
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +0 -9
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +0 -9
- package/front_end/panels/timeline/components/insights/Viewport.ts +7 -19
- package/front_end/panels/timeline/components/insights/baseInsightComponent.css +5 -0
- package/front_end/panels/timeline/components/insights/insights.ts +2 -0
- package/front_end/panels/timeline/components/interactionBreakdown.css +15 -13
- package/front_end/panels/timeline/enable-easter-egg.js +7 -3
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +1 -1
- package/front_end/panels/timeline/timeline-meta.ts +3 -2
- package/front_end/panels/utils/utils.ts +1 -0
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts +96 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +87 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js +5 -24
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/api.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js +42 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js +90 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js +14 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js +22 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js +4 -6
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js +8 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js +30 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts +15 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/injected/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js +2 -13
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js +17 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/node/LaunchOptions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/Mutex.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +221 -4
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +182 -95
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts +96 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +87 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts +2 -6
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js +4 -22
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts +5 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/api.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js +38 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js +10 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts +27 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js +85 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/DeviceRequestPrompt.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts +3 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js +3 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts +4 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js +14 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/core/BrowsingContext.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/util.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Accessibility.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts +18 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js +26 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/BluetoothEmulation.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js +22 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Browser.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/CdpSession.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts +2 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js +2 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/DeviceRequestPrompt.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js +2 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/FrameManager.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts +2 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js +8 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Page.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js +8 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/WebWorker.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/cdp.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js +31 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/BrowserConnector.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConnectOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js +2 -13
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/ChromeLauncher.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js +16 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/node/LaunchOptions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +221 -4
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/BluetoothEmulation.ts +103 -0
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +96 -1
- package/front_end/third_party/puppeteer/package/src/api/DeviceRequestPrompt.ts +2 -10
- package/front_end/third_party/puppeteer/package/src/api/Page.ts +6 -0
- package/front_end/third_party/puppeteer/package/src/api/api.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/BluetoothEmulation.ts +52 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Browser.ts +15 -0
- package/front_end/third_party/puppeteer/package/src/bidi/DeviceRequestPrompt.ts +138 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +7 -3
- package/front_end/third_party/puppeteer/package/src/bidi/Page.ts +10 -2
- package/front_end/third_party/puppeteer/package/src/bidi/core/BrowsingContext.ts +30 -2
- package/front_end/third_party/puppeteer/package/src/bidi/util.ts +8 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Accessibility.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/BluetoothEmulation.ts +47 -0
- package/front_end/third_party/puppeteer/package/src/cdp/Browser.ts +33 -3
- package/front_end/third_party/puppeteer/package/src/cdp/CdpSession.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/cdp/DeviceRequestPrompt.ts +3 -8
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/FrameManager.ts +9 -4
- package/front_end/third_party/puppeteer/package/src/cdp/Page.ts +13 -0
- package/front_end/third_party/puppeteer/package/src/cdp/WebWorker.ts +8 -3
- package/front_end/third_party/puppeteer/package/src/cdp/cdp.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/common/BrowserConnector.ts +45 -1
- package/front_end/third_party/puppeteer/package/src/common/ConnectOptions.ts +20 -0
- package/front_end/third_party/puppeteer/package/src/node/ChromeLauncher.ts +5 -17
- package/front_end/third_party/puppeteer/package/src/node/LaunchOptions.ts +23 -7
- 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/puppeteer/puppeteer-tsconfig.json +4 -0
- package/front_end/ui/components/adorners/Adorner.ts +20 -0
- package/front_end/ui/components/annotations/AnnotationRepository.ts +154 -14
- package/front_end/ui/components/buttons/Button.ts +1 -1
- package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightElement.ts +15 -2
- package/front_end/ui/components/icon_button/FileSourceIcon.ts +1 -1
- package/front_end/ui/components/icon_button/IconButton.ts +1 -1
- package/front_end/ui/components/icon_button/icon_button.ts +0 -2
- package/front_end/ui/components/issue_counter/IssueCounter.ts +1 -1
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownImage.ts +3 -3
- package/front_end/ui/components/request_link_icon/RequestLinkIcon.ts +1 -1
- package/front_end/ui/components/settings/SettingDeprecationWarning.ts +1 -1
- package/front_end/ui/components/snackbars/Snackbars.docs.ts +0 -1
- package/front_end/ui/components/survey_link/SurveyLink.ts +1 -1
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +12 -3
- package/front_end/ui/components/text_editor/AiCodeGenerationProvider.ts +182 -0
- package/front_end/ui/components/text_editor/config.ts +2 -2
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/helpers/OpenInNewTab.ts +5 -1
- package/front_end/ui/i18n/i18n.ts +9 -9
- package/front_end/ui/kit/cards/Card.docs.ts +43 -0
- package/front_end/ui/kit/icons/Icon.docs.ts +34 -0
- package/front_end/ui/{components/icon_button → kit/icons}/Icon.ts +4 -4
- package/front_end/ui/kit/kit.ts +2 -0
- package/front_end/ui/kit/link/Link.docs.ts +15 -0
- package/front_end/ui/kit/link/Link.ts +151 -0
- package/front_end/ui/kit/link/link.css +27 -0
- package/front_end/ui/legacy/EmptyWidget.ts +6 -0
- package/front_end/ui/legacy/Floaty.ts +442 -0
- package/front_end/ui/legacy/Infobar.ts +3 -3
- package/front_end/ui/legacy/InspectorView.ts +15 -3
- package/front_end/ui/legacy/ReportView.ts +1 -1
- package/front_end/ui/legacy/SearchableView.ts +2 -2
- package/front_end/ui/legacy/SelectMenu.docs.ts +0 -1
- package/front_end/ui/legacy/SoftContextMenu.ts +5 -5
- package/front_end/ui/legacy/SoftDropDown.ts +2 -2
- package/front_end/ui/legacy/TabbedPane.ts +139 -61
- package/front_end/ui/legacy/Toolbar.ts +3 -3
- package/front_end/ui/legacy/Treeoutline.ts +2 -2
- package/front_end/ui/legacy/UIUtils.ts +4 -4
- package/front_end/ui/legacy/ViewManager.ts +4 -4
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +8 -8
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +4 -4
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +5 -5
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +36 -36
- package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +2 -2
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +5 -5
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +3 -3
- package/front_end/ui/legacy/components/object_ui/JavaScriptREPL.ts +22 -37
- package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +31 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +22 -29
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +8 -15
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +11 -14
- package/front_end/ui/legacy/components/utils/Linkifier.ts +7 -11
- package/front_end/ui/legacy/floaty.css +77 -0
- package/front_end/ui/legacy/legacy.ts +2 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +6 -0
- package/inspector_overlay/loadCSS.rollup.js +5 -4
- package/mcp/mcp.ts +1 -0
- package/package.json +2 -2
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +0 -99
- package/front_end/panels/recorder/components/SelectButton.ts +0 -304
- package/front_end/panels/recorder/controllers/controllers.ts +0 -7
- package/front_end/ui/components/chrome_link/ChromeLink.ts +0 -76
- package/front_end/ui/components/chrome_link/chromeLink.css +0 -12
- package/front_end/ui/components/chrome_link/chrome_link.ts +0 -9
- package/front_end/ui/components/icon_button/Icon.docs.ts +0 -78
- /package/front_end/panels/recorder/components/{selectButton.css → replaySection.css} +0 -0
- /package/front_end/ui/{components/icon_button → kit/icons}/icon.css +0 -0
|
@@ -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 * as Common from '../../core/common/common.js';
|
|
5
6
|
import * as Host from '../../core/host/host.js';
|
|
6
7
|
import * as Root from '../../core/root/root.js';
|
|
7
8
|
|
|
@@ -23,11 +24,13 @@ export const enum LanguageModelAvailability {
|
|
|
23
24
|
DISABLED = 'disabled',
|
|
24
25
|
}
|
|
25
26
|
|
|
26
|
-
export class BuiltInAi {
|
|
27
|
+
export class BuiltInAi extends Common.ObjectWrapper.ObjectWrapper<EventTypes> {
|
|
27
28
|
#availability: LanguageModelAvailability|null = null;
|
|
28
29
|
#hasGpu: boolean;
|
|
29
30
|
#consoleInsightsSession?: LanguageModel;
|
|
30
31
|
initDoneForTesting: Promise<void>;
|
|
32
|
+
#downloadProgress: number|null = null;
|
|
33
|
+
#currentlyCreatingSession = false;
|
|
31
34
|
|
|
32
35
|
static instance(): BuiltInAi {
|
|
33
36
|
if (builtInAiInstance === undefined) {
|
|
@@ -37,9 +40,10 @@ export class BuiltInAi {
|
|
|
37
40
|
}
|
|
38
41
|
|
|
39
42
|
constructor() {
|
|
43
|
+
super();
|
|
40
44
|
this.#hasGpu = this.#isGpuAvailable();
|
|
41
45
|
this.initDoneForTesting =
|
|
42
|
-
this.getLanguageModelAvailability().then(() => this
|
|
46
|
+
this.getLanguageModelAvailability().then(() => this.#sendAvailabilityMetrics()).then(() => this.initialize());
|
|
43
47
|
}
|
|
44
48
|
|
|
45
49
|
async getLanguageModelAvailability(): Promise<LanguageModelAvailability> {
|
|
@@ -49,14 +53,59 @@ export class BuiltInAi {
|
|
|
49
53
|
}
|
|
50
54
|
try {
|
|
51
55
|
// @ts-expect-error
|
|
52
|
-
this.#availability = await window.LanguageModel.availability(
|
|
53
|
-
|
|
56
|
+
this.#availability = await window.LanguageModel.availability({
|
|
57
|
+
expectedInputs: [{
|
|
58
|
+
type: 'text',
|
|
59
|
+
languages: ['en'],
|
|
60
|
+
}],
|
|
61
|
+
expectedOutputs: [{
|
|
62
|
+
type: 'text',
|
|
63
|
+
languages: ['en'],
|
|
64
|
+
}],
|
|
65
|
+
}) as LanguageModelAvailability;
|
|
54
66
|
} catch {
|
|
55
67
|
this.#availability = LanguageModelAvailability.UNAVAILABLE;
|
|
56
68
|
}
|
|
57
69
|
return this.#availability;
|
|
58
70
|
}
|
|
59
71
|
|
|
72
|
+
isDownloading(): boolean {
|
|
73
|
+
return this.#availability === LanguageModelAvailability.DOWNLOADING;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
isEventuallyAvailable(): boolean {
|
|
77
|
+
if (!this.#hasGpu && !Boolean(Root.Runtime.hostConfig.devToolsAiPromptApi?.allowWithoutGpu)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
return this.#availability === LanguageModelAvailability.AVAILABLE ||
|
|
81
|
+
this.#availability === LanguageModelAvailability.DOWNLOADING ||
|
|
82
|
+
this.#availability === LanguageModelAvailability.DOWNLOADABLE;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
#setDownloadProgress(newValue: number): void {
|
|
86
|
+
this.#downloadProgress = newValue;
|
|
87
|
+
this.dispatchEventToListeners(Events.DOWNLOAD_PROGRESS_CHANGED, this.#downloadProgress);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
getDownloadProgress(): number|null {
|
|
91
|
+
return this.#downloadProgress;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
startDownloadingModel(): void {
|
|
95
|
+
if (!Root.Runtime.hostConfig.devToolsAiPromptApi?.allowWithoutGpu && !this.#hasGpu) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (this.#availability !== LanguageModelAvailability.DOWNLOADABLE) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
void this.#createSession();
|
|
103
|
+
// Without the timeout, the returned availability would still be `downloadable`
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
void this.getLanguageModelAvailability();
|
|
106
|
+
}, 1000);
|
|
107
|
+
}
|
|
108
|
+
|
|
60
109
|
#isGpuAvailable(): boolean {
|
|
61
110
|
const canvas = document.createElement('canvas');
|
|
62
111
|
try {
|
|
@@ -86,16 +135,29 @@ export class BuiltInAi {
|
|
|
86
135
|
if (!Root.Runtime.hostConfig.devToolsAiPromptApi?.allowWithoutGpu && !this.#hasGpu) {
|
|
87
136
|
return;
|
|
88
137
|
}
|
|
89
|
-
if (this.#availability !== LanguageModelAvailability.AVAILABLE
|
|
138
|
+
if (this.#availability !== LanguageModelAvailability.AVAILABLE &&
|
|
139
|
+
this.#availability !== LanguageModelAvailability.DOWNLOADING) {
|
|
90
140
|
return;
|
|
91
141
|
}
|
|
92
142
|
await this.#createSession();
|
|
93
143
|
}
|
|
94
144
|
|
|
95
145
|
async #createSession(): Promise<void> {
|
|
146
|
+
if (this.#currentlyCreatingSession) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
this.#currentlyCreatingSession = true;
|
|
150
|
+
|
|
151
|
+
const monitor = (m: EventTarget): void => {
|
|
152
|
+
m.addEventListener('downloadprogress', ((e: {loaded: number}) => {
|
|
153
|
+
this.#setDownloadProgress(e.loaded);
|
|
154
|
+
}) as unknown as EventListener);
|
|
155
|
+
};
|
|
156
|
+
|
|
96
157
|
try {
|
|
97
158
|
// @ts-expect-error
|
|
98
159
|
this.#consoleInsightsSession = await window.LanguageModel.create({
|
|
160
|
+
monitor,
|
|
99
161
|
initialPrompts: [{
|
|
100
162
|
role: 'system',
|
|
101
163
|
content: `
|
|
@@ -125,11 +187,13 @@ Your instructions are as follows:
|
|
|
125
187
|
}],
|
|
126
188
|
});
|
|
127
189
|
if (this.#availability !== LanguageModelAvailability.AVAILABLE) {
|
|
190
|
+
this.dispatchEventToListeners(Events.DOWNLOADED_AND_SESSION_CREATED);
|
|
128
191
|
void this.getLanguageModelAvailability();
|
|
129
192
|
}
|
|
130
193
|
} catch (e) {
|
|
131
194
|
console.error('Error when creating LanguageModel session', e.message);
|
|
132
195
|
}
|
|
196
|
+
this.#currentlyCreatingSession = false;
|
|
133
197
|
}
|
|
134
198
|
|
|
135
199
|
static removeInstance(): void {
|
|
@@ -198,3 +262,13 @@ Your instructions are as follows:
|
|
|
198
262
|
}
|
|
199
263
|
}
|
|
200
264
|
}
|
|
265
|
+
|
|
266
|
+
export const enum Events {
|
|
267
|
+
DOWNLOAD_PROGRESS_CHANGED = 'downloadProgressChanged',
|
|
268
|
+
DOWNLOADED_AND_SESSION_CREATED = 'downloadedAndSessionCreated',
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface EventTypes {
|
|
272
|
+
[Events.DOWNLOAD_PROGRESS_CHANGED]: number;
|
|
273
|
+
[Events.DOWNLOADED_AND_SESSION_CREATED]: void;
|
|
274
|
+
}
|
|
@@ -573,12 +573,14 @@ export abstract class AiAgent<T> {
|
|
|
573
573
|
if (!('answer' in parsedResponse)) {
|
|
574
574
|
throw new Error('Expected a completed response to have an answer');
|
|
575
575
|
}
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
576
|
+
if (!functionCall) {
|
|
577
|
+
this.#history.push({
|
|
578
|
+
parts: [{
|
|
579
|
+
text: parsedResponse.answer,
|
|
580
|
+
}],
|
|
581
|
+
role: Host.AidaClient.Role.MODEL,
|
|
582
|
+
});
|
|
583
|
+
}
|
|
582
584
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceAnswerReceived);
|
|
583
585
|
yield {
|
|
584
586
|
type: ResponseType.ANSWER,
|
|
@@ -587,12 +589,17 @@ export abstract class AiAgent<T> {
|
|
|
587
589
|
complete: true,
|
|
588
590
|
rpcId,
|
|
589
591
|
};
|
|
590
|
-
|
|
592
|
+
if (!functionCall) {
|
|
593
|
+
break;
|
|
594
|
+
}
|
|
591
595
|
}
|
|
592
596
|
|
|
593
597
|
if (functionCall) {
|
|
594
598
|
try {
|
|
595
|
-
const result = yield* this.#callFunction(functionCall.name, functionCall.args,
|
|
599
|
+
const result = yield* this.#callFunction(functionCall.name, functionCall.args, {
|
|
600
|
+
...options,
|
|
601
|
+
explanation: textResponse,
|
|
602
|
+
});
|
|
596
603
|
if (options.signal?.aborted) {
|
|
597
604
|
yield this.#createErrorResponse(ErrorType.ABORT);
|
|
598
605
|
break;
|
|
@@ -623,19 +630,26 @@ export abstract class AiAgent<T> {
|
|
|
623
630
|
#callFunction(
|
|
624
631
|
name: string,
|
|
625
632
|
args: Record<string, unknown>,
|
|
626
|
-
options?: FunctionHandlerOptions,
|
|
633
|
+
options?: FunctionHandlerOptions&{explanation?: string},
|
|
627
634
|
): AsyncGenerator<FunctionCallResponseData, {result: unknown}> {
|
|
628
635
|
const call = this.#functionDeclarations.get(name);
|
|
629
636
|
if (!call) {
|
|
630
637
|
throw new Error(`Function ${name} is not found.`);
|
|
631
638
|
}
|
|
639
|
+
const parts: Host.AidaClient.Part[] = [];
|
|
640
|
+
if (options?.explanation) {
|
|
641
|
+
parts.push({
|
|
642
|
+
text: options.explanation,
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
parts.push({
|
|
646
|
+
functionCall: {
|
|
647
|
+
name,
|
|
648
|
+
args,
|
|
649
|
+
},
|
|
650
|
+
});
|
|
632
651
|
this.#history.push({
|
|
633
|
-
parts
|
|
634
|
-
functionCall: {
|
|
635
|
-
name,
|
|
636
|
-
args,
|
|
637
|
-
},
|
|
638
|
-
}],
|
|
652
|
+
parts,
|
|
639
653
|
role: Host.AidaClient.Role.MODEL,
|
|
640
654
|
});
|
|
641
655
|
|
|
@@ -744,6 +758,7 @@ export abstract class AiAgent<T> {
|
|
|
744
758
|
rpcId,
|
|
745
759
|
functionCall: aidaResponse.functionCalls[0],
|
|
746
760
|
completed: true,
|
|
761
|
+
text: aidaResponse.explanation,
|
|
747
762
|
};
|
|
748
763
|
break;
|
|
749
764
|
}
|
|
@@ -47,7 +47,6 @@ const UIStringsNotTranslated = {
|
|
|
47
47
|
mainThreadActivity: 'Investigating main thread activity…',
|
|
48
48
|
} as const;
|
|
49
49
|
const lockedString = i18n.i18n.lockedString;
|
|
50
|
-
const annotationsEnabled = Annotations.AnnotationRepository.annotationsEnabled();
|
|
51
50
|
|
|
52
51
|
/**
|
|
53
52
|
* WARNING: preamble defined in code is only used when userTier is
|
|
@@ -55,14 +54,53 @@ const annotationsEnabled = Annotations.AnnotationRepository.annotationsEnabled()
|
|
|
55
54
|
* chrome_preambles.gcl). Sync local changes with the server-side.
|
|
56
55
|
*/
|
|
57
56
|
|
|
58
|
-
const
|
|
59
|
-
- CRITICAL:You also have access to
|
|
57
|
+
const greenDevAdditionalAnnotationsFunction = `
|
|
58
|
+
- CRITICAL: You also have access to functions called addElementAnnotation and addNeworkRequestAnnotation,
|
|
59
|
+
which should be used to highlight elements and network requests (respectively).`;
|
|
60
|
+
|
|
61
|
+
const greenDevAdditionalAnnotationsGuidelines = `
|
|
62
|
+
- CRITICAL: Each time an element or a network request is mentioned, you MUST ALSO call the functions
|
|
63
|
+
addElementAnnotation (for an element) or addNeworkRequestAnnotation (for a network request).
|
|
64
|
+
- CRITICAL: Don't add more than one annotation per element or network request.
|
|
65
|
+
- These functions should be called as soon as you identify the entity that needs to be highlighted.
|
|
66
|
+
- In addition to this, the addElementAnnotation function should always be called for the LCP element, if known.
|
|
67
|
+
- The annotationMessage should be descriptive and relevant to why the element or network request is being highlighted.
|
|
68
|
+
`;
|
|
60
69
|
|
|
61
|
-
const
|
|
62
|
-
-
|
|
63
|
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
70
|
+
const greenDevAdditionalWidgetGuidelines = `
|
|
71
|
+
- **Visualizing Insights**: When discussing the breakdown of specific metrics or a performance problem,
|
|
72
|
+
you must render the appropriate Insight Overview component. Use these tags on a new line within your response:
|
|
73
|
+
- For LCP breakdown: <ai-insight value="LCPBreakdown">
|
|
74
|
+
- For INP breakdown: <ai-insight value="INPBreakdown">
|
|
75
|
+
- For CLS culprits: <ai-insight value="CLSCulprits">
|
|
76
|
+
- For third parties: <ai-insight value="ThirdParties">
|
|
77
|
+
- For document latency: <ai-insight value="DocumentLatency">
|
|
78
|
+
- For DOM size: <ai-insight value="DOMSize">
|
|
79
|
+
- For duplicate JavaScript: <ai-insight value="DuplicatedJavaScript">
|
|
80
|
+
- For font display: <ai-insight value="FontDisplay">
|
|
81
|
+
- For forced reflow: <ai-insight value="ForcedReflow">
|
|
82
|
+
- For image delivery: <ai-insight value="ImageDelivery">
|
|
83
|
+
- For LCP discovery: <ai-insight value="LCPDiscovery">
|
|
84
|
+
- For legacy JavaScript: <ai-insight value="LegacyJavaScript">
|
|
85
|
+
- For network dependency tree: <ai-insight value="NetworkDependencyTree">
|
|
86
|
+
- For render blocking: <ai-insight value="RenderBlocking">
|
|
87
|
+
- For slow CSS selector: <ai-insight value="SlowCSSSelector">
|
|
88
|
+
- For viewport: <ai-insight value="Viewport">
|
|
89
|
+
- For modern HTTP: <ai-insight value="ModernHTTP">
|
|
90
|
+
- For cache: <ai-insight value="Cache">
|
|
91
|
+
- Do not place the <ai-insight> tag inside markdown code blocks (backticks). Output the tag directly as raw text.
|
|
92
|
+
- **Visualizing Network Request Details**: When discussing a specific network request, represent its details in a structured widget for improved readability and focus.
|
|
93
|
+
- Use this tag on a new line within your response, replacing \`EVENT_KEY\` (only the number, no letters prefix or -) with the actual trace event key:
|
|
94
|
+
- For network event details: <network-request-widget value="EVENT_KEY">
|
|
95
|
+
- **Visualizing Flamechart**: When discussing an interesting part of the trace, represent its details in a structured widget for improved readability and focus.
|
|
96
|
+
- Use this tag on a new line within your response, replacing "MIN_MICROSECONDS" and "MAX_MICROSECONDS" with the actual start and end times in microseconds:
|
|
97
|
+
- For a flame chart of a specific time range: <flame-chart-widget start="MIN_MICROSECONDS" end="MAX_MICROSECONDS">
|
|
98
|
+
- CRITICAL: MIN_MICROSECONDS and MAX_MICROSECONDS must be within the flamechart bounds and in microseconds.
|
|
99
|
+
- When you mention a specific performance event like LCP, INP, or a long task, you MUST also include a flamechart widget focused on the exact time range of that event.
|
|
100
|
+
- This provides essential visual context to your explanation.
|
|
101
|
+
- CRITICAL: Avoid Redundancy - When using insight or network request widgets, do not repeat details in the text response.
|
|
102
|
+
- For example, for LCP, the phases like Time to First Byte will be part of the insight widget, so you must not state them in the text. This applies to other insights and network request timings.
|
|
103
|
+
- Do not display any of the same widgets more than once. For example, if you have already displayed a network request widget for a specific event, do not display it again in the same response.
|
|
66
104
|
`;
|
|
67
105
|
|
|
68
106
|
/**
|
|
@@ -72,7 +110,10 @@ const greenDevAdditionalGuidelines = `
|
|
|
72
110
|
*
|
|
73
111
|
* Check token length in https://aistudio.google.com/
|
|
74
112
|
*/
|
|
75
|
-
const
|
|
113
|
+
const buildPreamble = (): string => {
|
|
114
|
+
const greenDevEnabled = Root.Runtime.hostConfig.devToolsGreenDevUi?.enabled;
|
|
115
|
+
const annotationsEnabled = Annotations.AnnotationRepository.annotationsEnabled();
|
|
116
|
+
return `You are an assistant, expert in web performance and highly skilled with Chrome DevTools.
|
|
76
117
|
|
|
77
118
|
Your primary goal is to provide actionable advice to web developers about their web page by using the Chrome Performance Panel and analyzing a trace. You may need to diagnose problems yourself, or you may be given direction for what to focus on by the user.
|
|
78
119
|
|
|
@@ -82,7 +123,7 @@ Don't mention anything about an insight without first getting more data about it
|
|
|
82
123
|
|
|
83
124
|
You have many functions available to learn more about the trace. Use these to confirm hypotheses, or to further explore the trace when diagnosing performance issues.
|
|
84
125
|
|
|
85
|
-
${annotationsEnabled ?
|
|
126
|
+
${annotationsEnabled ? greenDevAdditionalAnnotationsFunction : ''}
|
|
86
127
|
|
|
87
128
|
You will be given bounds representing a time range within the trace. Bounds include a min and a max time in microseconds. max is always bigger than min in a bounds.
|
|
88
129
|
|
|
@@ -124,7 +165,8 @@ Note: if the user asks a specific question about the trace (such as "What is my
|
|
|
124
165
|
- Structure your response using markdown headings and bullet points for improved readability.
|
|
125
166
|
- Be direct and to the point. Avoid unnecessary introductory phrases or filler content. Focus on delivering actionable advice efficiently.
|
|
126
167
|
|
|
127
|
-
${annotationsEnabled ?
|
|
168
|
+
${annotationsEnabled ? greenDevAdditionalAnnotationsGuidelines : ''}
|
|
169
|
+
${greenDevEnabled ? greenDevAdditionalWidgetGuidelines : ''}
|
|
128
170
|
|
|
129
171
|
## Strict Constraints
|
|
130
172
|
|
|
@@ -142,6 +184,7 @@ Adhere to the following critical requirements:
|
|
|
142
184
|
- If asked about sensitive topics (religion, race, politics, sexuality, gender, etc.), respond with: "My expertise is limited to website performance analysis. I cannot provide information on that topic.".
|
|
143
185
|
- Do not provide answers on non-web-development topics, such as legal, financial, medical, or personal advice.
|
|
144
186
|
`;
|
|
187
|
+
};
|
|
145
188
|
|
|
146
189
|
const extraPreambleWhenNotExternal = `Additional notes:
|
|
147
190
|
|
|
@@ -153,12 +196,27 @@ When referring to a trace event that has a corresponding \`eventKey\`, annotate
|
|
|
153
196
|
When asking the user to make a choice between multiple options, output a list of choices at the end of your text response. The format is \`SUGGESTIONS: ["suggestion1", "suggestion2", "suggestion3"]\`. This MUST start on a newline, and be a single line.
|
|
154
197
|
`;
|
|
155
198
|
|
|
156
|
-
const
|
|
157
|
-
|
|
199
|
+
const buildExtraPreambleWhenFreshTrace = (): string => {
|
|
200
|
+
const annotationsEnabled = Annotations.AnnotationRepository.annotationsEnabled();
|
|
201
|
+
const greenDevAdditionalGuidelineFreshTrace = `
|
|
202
|
+
When referring to an element for which you know the nodeId, always call the function addElementAnnotation, specifying
|
|
203
|
+
the id and an annotation reason.
|
|
204
|
+
When referring to a network request for which you know the eventKey for, always call the function
|
|
205
|
+
addNetworkRequestAnnotation, specifying the id and an annotation reason.
|
|
158
206
|
- CRITICAL: Each time you add an annotating link you MUST ALSO call the function addElementAnnotation.
|
|
207
|
+
- CRITICAL: Each time you describe an element or network request as being problematic you MUST call the function
|
|
208
|
+
addElementAnnotation and specify an annotation reason.
|
|
209
|
+
- CRITICAL: Each time you describe a network request as being problematic you MUST call the function
|
|
210
|
+
addNetworkRequestAnnotation and specify an annotation reason.
|
|
211
|
+
- CRITICAL: If you spot ANY of the following problems:
|
|
212
|
+
- Render blocking elements/network requests.
|
|
213
|
+
- Significant long task (especially on main thread).
|
|
214
|
+
- Layout shifts (e.g. due to unsized images).
|
|
215
|
+
... then you MUST call addNetworkRequestAnnotation for ALL network requests and addaddElementAnnotation for all
|
|
216
|
+
elements described in your conclusion.
|
|
159
217
|
`;
|
|
160
218
|
|
|
161
|
-
const extraPreambleWhenFreshTrace = `Additional notes:
|
|
219
|
+
const extraPreambleWhenFreshTrace = `Additional notes:
|
|
162
220
|
|
|
163
221
|
When referring to an element for which you know the nodeId, annotate your output using markdown link syntax:
|
|
164
222
|
- For example, if nodeId is 23: [LCP element](#node-23)
|
|
@@ -168,6 +226,9 @@ When referring to an element for which you know the nodeId, annotate your output
|
|
|
168
226
|
|
|
169
227
|
${annotationsEnabled ? greenDevAdditionalGuidelineFreshTrace : ''}`;
|
|
170
228
|
|
|
229
|
+
return extraPreambleWhenFreshTrace;
|
|
230
|
+
};
|
|
231
|
+
|
|
171
232
|
enum ScorePriority {
|
|
172
233
|
REQUIRED = 3,
|
|
173
234
|
CRITICAL = 2,
|
|
@@ -313,7 +374,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
313
374
|
metadata: {source: 'devtools', score: ScorePriority.CRITICAL}
|
|
314
375
|
};
|
|
315
376
|
#freshTraceExtraPreambleFact: Host.AidaClient.RequestFact = {
|
|
316
|
-
text:
|
|
377
|
+
text: buildExtraPreambleWhenFreshTrace(),
|
|
317
378
|
metadata: {source: 'devtools', score: ScorePriority.CRITICAL}
|
|
318
379
|
};
|
|
319
380
|
#networkDataDescriptionFact: Host.AidaClient.RequestFact = {
|
|
@@ -327,14 +388,16 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
327
388
|
#traceFacts: Host.AidaClient.RequestFact[] = [];
|
|
328
389
|
|
|
329
390
|
get preamble(): string {
|
|
330
|
-
return
|
|
391
|
+
return buildPreamble();
|
|
331
392
|
}
|
|
332
393
|
|
|
333
394
|
get clientFeature(): Host.AidaClient.ClientFeature {
|
|
334
395
|
return Host.AidaClient.ClientFeature.CHROME_PERFORMANCE_FULL_AGENT;
|
|
335
396
|
}
|
|
336
397
|
get userTier(): string|undefined {
|
|
337
|
-
return
|
|
398
|
+
return Boolean(Root.Runtime.hostConfig.devToolsGreenDevUi?.enabled) ?
|
|
399
|
+
'TESTERS' :
|
|
400
|
+
Root.Runtime.hostConfig.devToolsAiAssistancePerformanceAgent?.userTier;
|
|
338
401
|
}
|
|
339
402
|
get options(): RequestOptions {
|
|
340
403
|
const temperature = Root.Runtime.hostConfig.devToolsAiAssistancePerformanceAgent?.temperature;
|
|
@@ -513,7 +576,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
513
576
|
// Clear any previous facts in case the user changed the active context.
|
|
514
577
|
this.clearFacts();
|
|
515
578
|
if (options.selected && focus) {
|
|
516
|
-
this.#addFacts(options.selected);
|
|
579
|
+
await this.#addFacts(options.selected);
|
|
517
580
|
}
|
|
518
581
|
|
|
519
582
|
yield* super.run(initialQuery, options);
|
|
@@ -533,12 +596,12 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
533
596
|
{text: `Trace summary:\n${text}`, metadata: {source: 'devtools', score: ScorePriority.REQUIRED}});
|
|
534
597
|
}
|
|
535
598
|
|
|
536
|
-
#createFactForCriticalRequests(): void {
|
|
599
|
+
async #createFactForCriticalRequests(): Promise<void> {
|
|
537
600
|
if (!this.#formatter) {
|
|
538
601
|
return;
|
|
539
602
|
}
|
|
540
603
|
|
|
541
|
-
const text = this.#formatter.formatCriticalRequests();
|
|
604
|
+
const text = await this.#formatter.formatCriticalRequests();
|
|
542
605
|
if (!text) {
|
|
543
606
|
return;
|
|
544
607
|
}
|
|
@@ -549,12 +612,13 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
549
612
|
});
|
|
550
613
|
}
|
|
551
614
|
|
|
552
|
-
#createFactForMainThreadBottomUpSummary(): void {
|
|
615
|
+
async #createFactForMainThreadBottomUpSummary(): Promise<void> {
|
|
553
616
|
if (!this.#formatter) {
|
|
554
617
|
return;
|
|
555
618
|
}
|
|
556
619
|
|
|
557
|
-
const
|
|
620
|
+
const formatter = this.#formatter;
|
|
621
|
+
const text = await formatter.formatMainThreadBottomUpSummary();
|
|
558
622
|
if (!text) {
|
|
559
623
|
return;
|
|
560
624
|
}
|
|
@@ -565,12 +629,12 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
565
629
|
});
|
|
566
630
|
}
|
|
567
631
|
|
|
568
|
-
#createFactForThirdPartySummary(): void {
|
|
632
|
+
async #createFactForThirdPartySummary(): Promise<void> {
|
|
569
633
|
if (!this.#formatter) {
|
|
570
634
|
return;
|
|
571
635
|
}
|
|
572
636
|
|
|
573
|
-
const text = this.#formatter.formatThirdPartySummary();
|
|
637
|
+
const text = await this.#formatter.formatThirdPartySummary();
|
|
574
638
|
if (!text) {
|
|
575
639
|
return;
|
|
576
640
|
}
|
|
@@ -581,12 +645,12 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
581
645
|
});
|
|
582
646
|
}
|
|
583
647
|
|
|
584
|
-
#createFactForLongestTasks(): void {
|
|
648
|
+
async #createFactForLongestTasks(): Promise<void> {
|
|
585
649
|
if (!this.#formatter) {
|
|
586
650
|
return;
|
|
587
651
|
}
|
|
588
652
|
|
|
589
|
-
const text = this.#formatter.formatLongestTasks();
|
|
653
|
+
const text = await this.#formatter.formatLongestTasks();
|
|
590
654
|
if (!text) {
|
|
591
655
|
return;
|
|
592
656
|
}
|
|
@@ -597,7 +661,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
597
661
|
});
|
|
598
662
|
}
|
|
599
663
|
|
|
600
|
-
#addFacts(context: PerformanceTraceContext): void {
|
|
664
|
+
async #addFacts(context: PerformanceTraceContext): Promise<void> {
|
|
601
665
|
const focus = context.getItem();
|
|
602
666
|
|
|
603
667
|
if (!context.external) {
|
|
@@ -613,12 +677,26 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
613
677
|
this.addFact(this.#networkDataDescriptionFact);
|
|
614
678
|
|
|
615
679
|
if (!this.#traceFacts.length) {
|
|
680
|
+
const target = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
|
|
681
|
+
if (!target) {
|
|
682
|
+
throw new Error('missing target');
|
|
683
|
+
}
|
|
684
|
+
|
|
616
685
|
this.#formatter = new PerformanceTraceFormatter(focus);
|
|
686
|
+
this.#formatter.resolveFunctionCode =
|
|
687
|
+
async (url: Platform.DevToolsPath.UrlString, line: number, column: number) => {
|
|
688
|
+
if (!target) {
|
|
689
|
+
return null;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
return await SourceMapScopes.FunctionCodeResolver.getFunctionCodeFromLocation(
|
|
693
|
+
target, url, line, column, {contextLength: 200, contextLineLength: 5, appendProfileData: true});
|
|
694
|
+
};
|
|
617
695
|
this.#createFactForTraceSummary();
|
|
618
|
-
this.#createFactForCriticalRequests();
|
|
619
|
-
this.#createFactForMainThreadBottomUpSummary();
|
|
620
|
-
this.#createFactForThirdPartySummary();
|
|
621
|
-
this.#createFactForLongestTasks();
|
|
696
|
+
await this.#createFactForCriticalRequests();
|
|
697
|
+
await this.#createFactForMainThreadBottomUpSummary();
|
|
698
|
+
await this.#createFactForThirdPartySummary();
|
|
699
|
+
await this.#createFactForLongestTasks();
|
|
622
700
|
}
|
|
623
701
|
|
|
624
702
|
for (const fact of this.#traceFacts) {
|
|
@@ -686,9 +764,9 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
686
764
|
return {error: `Invalid insight set id. Valid insight set ids are: ${valid}`};
|
|
687
765
|
}
|
|
688
766
|
|
|
689
|
-
const insight = insightSet
|
|
767
|
+
const insight = insightSet.model[params.insightName as keyof Trace.Insights.Types.InsightModels];
|
|
690
768
|
if (!insight) {
|
|
691
|
-
const valid = Object.keys(insightSet
|
|
769
|
+
const valid = Object.keys(insightSet.model).join(', ');
|
|
692
770
|
return {error: `No insight available. Valid insight names are: ${valid}`};
|
|
693
771
|
}
|
|
694
772
|
|
|
@@ -790,7 +868,8 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
790
868
|
return {error: 'invalid bounds'};
|
|
791
869
|
}
|
|
792
870
|
|
|
793
|
-
const
|
|
871
|
+
const formatter = this.#formatter;
|
|
872
|
+
const summary = await formatter.formatMainThreadTrackSummary(bounds);
|
|
794
873
|
if (this.#isFunctionResponseTooLarge(summary)) {
|
|
795
874
|
return {
|
|
796
875
|
error:
|
|
@@ -898,7 +977,8 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
898
977
|
return {error: 'No call tree found'};
|
|
899
978
|
}
|
|
900
979
|
|
|
901
|
-
const
|
|
980
|
+
const formatter = this.#formatter;
|
|
981
|
+
const callTree = await formatter.formatCallTree(tree);
|
|
902
982
|
|
|
903
983
|
const key = `getDetailedCallTree(${args.eventKey})`;
|
|
904
984
|
this.#cacheFunctionResult(focus, key, callTree);
|
|
@@ -907,7 +987,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
907
987
|
|
|
908
988
|
});
|
|
909
989
|
|
|
910
|
-
if (annotationsEnabled) {
|
|
990
|
+
if (Annotations.AnnotationRepository.annotationsEnabled()) {
|
|
911
991
|
this.declareFunction<{
|
|
912
992
|
elementId: string,
|
|
913
993
|
annotationMessage: string,
|
|
@@ -935,10 +1015,41 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
935
1015
|
return await this.addElementAnnotation(params.elementId, params.annotationMessage);
|
|
936
1016
|
},
|
|
937
1017
|
});
|
|
1018
|
+
|
|
1019
|
+
this.declareFunction<{
|
|
1020
|
+
eventKey: string,
|
|
1021
|
+
annotationMessage: string,
|
|
1022
|
+
}>('addNetworkRequestAnnotation', {
|
|
1023
|
+
description:
|
|
1024
|
+
'Adds a visual annotation in the Network panel, attached to the request with the specific UID provided. ' +
|
|
1025
|
+
'Use it to highlight requests in the Network panel and provide contextual suggestions to the user ' +
|
|
1026
|
+
'related to their queries.',
|
|
1027
|
+
parameters: {
|
|
1028
|
+
type: Host.AidaClient.ParametersTypes.OBJECT,
|
|
1029
|
+
description: '',
|
|
1030
|
+
nullable: false,
|
|
1031
|
+
properties: {
|
|
1032
|
+
eventKey: {
|
|
1033
|
+
type: Host.AidaClient.ParametersTypes.STRING,
|
|
1034
|
+
description: 'The event key of the network request to annotate.',
|
|
1035
|
+
nullable: false,
|
|
1036
|
+
},
|
|
1037
|
+
annotationMessage: {
|
|
1038
|
+
type: Host.AidaClient.ParametersTypes.STRING,
|
|
1039
|
+
description: 'The message the annotation should show to the user.',
|
|
1040
|
+
nullable: false,
|
|
1041
|
+
},
|
|
1042
|
+
},
|
|
1043
|
+
},
|
|
1044
|
+
handler: async params => {
|
|
1045
|
+
return await this.addNetworkRequestAnnotation(params.eventKey, params.annotationMessage);
|
|
1046
|
+
},
|
|
1047
|
+
});
|
|
938
1048
|
}
|
|
939
1049
|
|
|
940
1050
|
this.declareFunction<{scriptUrl: string, line: number, column: number}, {result: string}>('getFunctionCode', {
|
|
941
|
-
description:
|
|
1051
|
+
description:
|
|
1052
|
+
'Returns the code for a function defined at the given location. The result is annotated with the runtime performance of each line of code.',
|
|
942
1053
|
parameters: {
|
|
943
1054
|
type: Host.AidaClient.ParametersTypes.OBJECT,
|
|
944
1055
|
description: '',
|
|
@@ -988,8 +1099,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
988
1099
|
}
|
|
989
1100
|
|
|
990
1101
|
const url = args.scriptUrl as Platform.DevToolsPath.UrlString;
|
|
991
|
-
const code = await
|
|
992
|
-
target, url, args.line, args.column, {contextLength: 200, contextLineLength: 5, appendProfileData: true});
|
|
1102
|
+
const code = await this.#formatter.resolveFunctionCodeAtLocation(url, args.line, args.column);
|
|
993
1103
|
if (!code) {
|
|
994
1104
|
return {error: 'Could not find code'};
|
|
995
1105
|
}
|
|
@@ -1007,7 +1117,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
1007
1117
|
|
|
1008
1118
|
this.declareFunction<{url: string}, {content: string}>('getResourceContent', {
|
|
1009
1119
|
description:
|
|
1010
|
-
'Returns the content of the resource with the given url. Only use this for text resource types.
|
|
1120
|
+
'Returns the content of the resource with the given url. Only use this for text resource types. This function is helpful for getting script contents in order to further analyze main thread activity and suggest code improvements. When analyzing the main thread activity, always call this function to get more detail. Always call this function when asked to provide specifics about what is happening in the code. Never ask permission to call this function, just do it.',
|
|
1011
1121
|
parameters: {
|
|
1012
1122
|
type: Host.AidaClient.ParametersTypes.OBJECT,
|
|
1013
1123
|
description: '',
|
|
@@ -1095,7 +1205,7 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
1095
1205
|
async addElementAnnotation(elementId: string, annotationMessage: string):
|
|
1096
1206
|
Promise<FunctionCallHandlerResult<unknown>> {
|
|
1097
1207
|
if (!Annotations.AnnotationRepository.annotationsEnabled()) {
|
|
1098
|
-
console.warn('Received agent request to add annotation with annotations disabled');
|
|
1208
|
+
console.warn('Received agent request to add element annotation with annotations disabled');
|
|
1099
1209
|
return {error: 'Annotations are not currently enabled'};
|
|
1100
1210
|
}
|
|
1101
1211
|
|
|
@@ -1104,4 +1214,32 @@ export class PerformanceAgent extends AiAgent<AgentFocus> {
|
|
|
1104
1214
|
Annotations.AnnotationRepository.instance().addElementsAnnotation(annotationMessage, elementId);
|
|
1105
1215
|
return {result: {success: true}};
|
|
1106
1216
|
}
|
|
1217
|
+
|
|
1218
|
+
async addNetworkRequestAnnotation(eventKey: string, annotationMessage: string):
|
|
1219
|
+
Promise<FunctionCallHandlerResult<unknown>> {
|
|
1220
|
+
if (!Annotations.AnnotationRepository.annotationsEnabled()) {
|
|
1221
|
+
console.warn('Received agent request to add network request annotation with annotations disabled');
|
|
1222
|
+
return {error: 'Annotations are not currently enabled'};
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
// eslint-disable-next-line no-console
|
|
1226
|
+
console.log(
|
|
1227
|
+
`AI AGENT EVENT: Performance Agent adding annotation for network request ${eventKey}: '${annotationMessage}'`);
|
|
1228
|
+
|
|
1229
|
+
let requestId = undefined;
|
|
1230
|
+
const focus = this.context?.getItem();
|
|
1231
|
+
if (focus) {
|
|
1232
|
+
const event = focus.lookupEvent(eventKey as Trace.Types.File.SerializableKey);
|
|
1233
|
+
if (event && Trace.Types.Events.isSyntheticNetworkRequest(event)) {
|
|
1234
|
+
requestId = event.args.data.requestId;
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
|
|
1238
|
+
if (!requestId) {
|
|
1239
|
+
console.warn('Unable to lookup requestId for request with event key', eventKey);
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
Annotations.AnnotationRepository.instance().addNetworkRequestAnnotation(annotationMessage, requestId);
|
|
1243
|
+
return {result: {success: true}};
|
|
1244
|
+
}
|
|
1107
1245
|
}
|