chrome-devtools-frontend 1.0.1376716 → 1.0.1380117
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/config/gni/devtools_grd_files.gni +15 -7
- package/config/gni/devtools_image_files.gni +2 -0
- package/front_end/Images/src/animation.svg +3 -0
- package/front_end/Images/src/brush-2.svg +3 -0
- package/front_end/core/common/SettingRegistration.ts +1 -1
- package/front_end/core/host/AidaClient.ts +1 -0
- package/front_end/core/host/InspectorFrontendHost.ts +4 -0
- package/front_end/core/i18n/ByteUtilities.test.ts +34 -0
- package/front_end/core/i18n/ByteUtilities.ts +65 -0
- package/front_end/core/i18n/NumberFormatter.ts +75 -0
- package/front_end/core/i18n/i18n.ts +4 -0
- package/front_end/core/i18n/time-utilities.test.ts +20 -2
- package/front_end/core/i18n/time-utilities.ts +125 -86
- package/front_end/core/platform/NumberUtilities.test.ts +3 -26
- package/front_end/core/platform/NumberUtilities.ts +0 -20
- package/front_end/core/root/Runtime.ts +6 -3
- package/front_end/core/sdk/CPUThrottlingManager.ts +4 -0
- package/front_end/core/sdk/CSSContainerQuery.test.ts +10 -16
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -15
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +4 -0
- package/front_end/core/sdk/CSSMatchedStyles.ts +5 -5
- package/front_end/core/sdk/CSSModel.ts +18 -0
- package/front_end/core/sdk/CSSPropertyParser.test.ts +16 -1
- package/front_end/core/sdk/CSSPropertyParser.ts +2 -2
- package/front_end/core/sdk/sdk-meta.ts +8 -0
- package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +3 -3
- package/front_end/generated/ARIAProperties.js +4 -0
- package/front_end/generated/InspectorBackendCommands.js +8 -6
- package/front_end/generated/SupportedCSSProperties.js +17 -4
- package/front_end/generated/protocol-mapping.d.ts +15 -1
- package/front_end/generated/protocol-proxy-api.d.ts +14 -1
- package/front_end/generated/protocol.ts +26 -2
- package/front_end/models/extensions/ExtensionAPI.ts +9 -1
- package/front_end/models/heap_snapshot_model/HeapSnapshotModel.ts +2 -0
- package/front_end/models/javascript_metadata/NativeFunctions.js +8 -21
- package/front_end/models/live-metrics/web-vitals-injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/models/persistence/EditFileSystemView.ts +19 -9
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +50 -54
- package/front_end/models/persistence/editFileSystemView.css +35 -15
- package/front_end/models/persistence/workspaceSettingsTab.css +21 -87
- package/front_end/models/timeline_model/timeline_model.ts +0 -6
- package/front_end/models/trace/Processor.test.ts +18 -17
- package/front_end/models/trace/Processor.ts +10 -14
- package/front_end/models/trace/README.md +0 -1
- package/front_end/models/{timeline_model → trace/extras}/TimelineJSProfile.ts +19 -29
- package/front_end/models/{timeline_model/TimelineModelFilter.test.ts → trace/extras/TraceFilter.test.ts} +15 -17
- package/front_end/models/trace/extras/TraceFilter.ts +62 -0
- package/front_end/models/{timeline_model/TimelineProfileTree.test.ts → trace/extras/TraceTree.test.ts} +44 -43
- package/front_end/models/{timeline_model/TimelineProfileTree.ts → trace/extras/TraceTree.ts} +65 -59
- package/front_end/models/trace/extras/extras.ts +3 -0
- package/front_end/models/trace/handlers/AnimationHandler.ts +0 -8
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +1 -11
- package/front_end/models/trace/handlers/FramesHandler.test.ts +1 -6
- package/front_end/models/trace/handlers/FramesHandler.ts +1 -14
- package/front_end/models/trace/handlers/GPUHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/GPUHandler.ts +1 -25
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +3 -0
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +0 -20
- package/front_end/models/trace/handlers/InvalidationsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/InvalidationsHandler.ts +0 -18
- package/front_end/models/trace/handlers/LargestImagePaintHandler.test.ts +2 -2
- package/front_end/models/trace/handlers/LargestImagePaintHandler.ts +63 -3
- package/front_end/models/trace/handlers/LargestTextPaintHandler.ts +3 -0
- package/front_end/models/trace/handlers/LayerTreeHandler.test.ts +0 -2
- package/front_end/models/trace/handlers/LayerTreeHandler.ts +1 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +0 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +1 -20
- package/front_end/models/trace/handlers/MemoryHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/MemoryHandler.ts +3 -0
- package/front_end/models/trace/handlers/MetaHandler.test.ts +1 -32
- package/front_end/models/trace/handlers/MetaHandler.ts +2 -30
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +0 -26
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +4 -23
- package/front_end/models/trace/handlers/PageFramesHandler.ts +3 -0
- package/front_end/models/trace/handlers/RendererHandler.test.ts +0 -4
- package/front_end/models/trace/handlers/RendererHandler.ts +1 -24
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +0 -5
- package/front_end/models/trace/handlers/SamplesHandler.ts +0 -26
- package/front_end/models/trace/handlers/ScreenshotsHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +3 -0
- package/front_end/models/trace/handlers/ServerTimingsHandler.ts +1 -16
- package/front_end/models/trace/handlers/Threads.test.ts +1 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -27
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +16 -25
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +0 -17
- package/front_end/models/trace/handlers/WorkersHandler.test.ts +0 -1
- package/front_end/models/trace/handlers/WorkersHandler.ts +0 -23
- package/front_end/models/trace/handlers/types.ts +1 -8
- package/front_end/models/trace/insights/{CumulativeLayoutShift.test.ts → CLSCulprits.test.ts} +21 -21
- package/front_end/models/trace/insights/{CumulativeLayoutShift.ts → CLSCulprits.ts} +24 -5
- package/front_end/models/trace/insights/Common.ts +5 -55
- package/front_end/models/trace/insights/DocumentLatency.test.ts +2 -2
- package/front_end/models/trace/insights/DocumentLatency.ts +26 -6
- package/front_end/models/trace/insights/FontDisplay.ts +24 -5
- package/front_end/models/trace/insights/InteractionToNextPaint.test.ts +1 -1
- package/front_end/models/trace/insights/InteractionToNextPaint.ts +26 -6
- package/front_end/models/trace/insights/LCPDiscovery.test.ts +58 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +101 -0
- package/front_end/models/trace/insights/{LargestContentfulPaint.test.ts → LCPPhases.test.ts} +6 -28
- package/front_end/models/trace/insights/{LargestContentfulPaint.ts → LCPPhases.ts} +37 -38
- package/front_end/models/trace/insights/{InsightRunners.ts → Models.ts} +4 -3
- package/front_end/models/trace/insights/RenderBlocking.test.ts +1 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +33 -28
- package/front_end/models/trace/insights/SlowCSSSelector.ts +26 -5
- package/front_end/models/trace/insights/{ThirdPartyWeb.test.ts → ThirdParties.test.ts} +3 -3
- package/front_end/models/trace/insights/{ThirdPartyWeb.ts → ThirdParties.ts} +24 -5
- package/front_end/models/trace/insights/Viewport.test.ts +1 -1
- package/front_end/models/trace/insights/Viewport.ts +27 -9
- package/front_end/models/trace/insights/insights.ts +1 -1
- package/front_end/models/trace/insights/types.ts +11 -9
- package/front_end/models/trace/types/TraceEvents.ts +51 -22
- package/front_end/panels/application/SharedStorageItemsView.test.ts +3 -3
- package/front_end/panels/application/SharedStorageItemsView.ts +5 -3
- package/front_end/panels/application/StorageView.ts +3 -3
- package/front_end/panels/application/components/StorageMetadataView.ts +1 -2
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +34 -31
- package/front_end/panels/coverage/CoverageView.ts +3 -3
- package/front_end/panels/elements/ComputedStyleModel.ts +9 -2
- package/front_end/panels/elements/ComputedStyleWidget.test.ts +72 -0
- package/front_end/panels/elements/ComputedStyleWidget.ts +12 -0
- package/front_end/panels/elements/ElementStatePaneWidget.test.ts +84 -30
- package/front_end/panels/elements/ElementStatePaneWidget.ts +42 -24
- package/front_end/panels/elements/ElementsTreeElement.ts +24 -11
- package/front_end/panels/elements/MetricsSidebarPane.ts +12 -7
- package/front_end/panels/elements/PropertyMatchers.ts +3 -0
- package/front_end/panels/elements/StylePropertiesSection.ts +15 -6
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +3 -1
- package/front_end/panels/elements/StylePropertyTreeElement.ts +8 -3
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/explain/components/ConsoleInsight.ts +8 -18
- package/front_end/panels/freestyler/AiAgent.test.ts +58 -1
- package/front_end/panels/freestyler/AiAgent.ts +58 -3
- package/front_end/panels/freestyler/DrJonesFileAgent.test.ts +99 -23
- package/front_end/panels/freestyler/DrJonesFileAgent.ts +53 -20
- package/front_end/panels/freestyler/DrJonesNetworkAgent.test.ts +15 -7
- package/front_end/panels/freestyler/DrJonesNetworkAgent.ts +36 -15
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.test.ts +6 -6
- package/front_end/panels/freestyler/DrJonesPerformanceAgent.ts +48 -8
- package/front_end/panels/freestyler/FreestylerAgent.test.ts +15 -14
- package/front_end/panels/freestyler/FreestylerAgent.ts +52 -8
- package/front_end/panels/freestyler/FreestylerPanel.test.ts +539 -39
- package/front_end/panels/freestyler/FreestylerPanel.ts +349 -215
- package/front_end/panels/freestyler/components/FreestylerChatUi.test.ts +126 -34
- package/front_end/panels/freestyler/components/FreestylerChatUi.ts +320 -268
- package/front_end/panels/freestyler/components/UserActionRow.ts +156 -47
- package/front_end/panels/freestyler/components/freestylerChatUi.css +69 -34
- package/front_end/panels/freestyler/components/userActionRow.css +40 -67
- package/front_end/panels/freestyler/freestyler-meta.ts +3 -11
- package/front_end/panels/issues/components/HideIssuesMenu.ts +2 -11
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +1 -2
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +5 -5
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +46 -0
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +26 -17
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +25 -19
- package/front_end/panels/network/BinaryResourceView.ts +6 -7
- package/front_end/panels/network/EventSourceMessagesView.ts +1 -1
- package/front_end/panels/network/NetworkDataGridNode.ts +3 -3
- package/front_end/panels/network/NetworkLogView.ts +7 -8
- package/front_end/panels/network/RequestTimingView.test.ts +35 -1
- package/front_end/panels/network/RequestTimingView.ts +96 -0
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +2 -2
- package/front_end/panels/network/networkTimingTable.css +2 -1
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +1 -1
- package/front_end/panels/profiler/HeapProfileView.ts +3 -3
- package/front_end/panels/profiler/HeapSnapshotView.ts +2 -2
- package/front_end/panels/profiler/HeapTimelineOverview.ts +12 -12
- package/front_end/panels/profiler/IsolateSelector.ts +3 -4
- package/front_end/panels/profiler/ProfileFlameChartDataProvider.ts +1 -1
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +7 -6
- package/front_end/panels/profiler/ProfileView.ts +1 -1
- package/front_end/panels/recorder/components/RecordingView.ts +2 -2
- package/front_end/panels/recorder/injected/{rollup.config.js → rollup.config.mjs} +1 -1
- package/front_end/panels/recorder/recorderController.css +0 -4
- package/front_end/panels/security/CookieReportTreeElement.ts +1 -9
- package/front_end/panels/security/CookieReportView.ts +120 -0
- package/front_end/panels/security/SecurityPanel.ts +8 -2
- package/front_end/panels/security/cookieReportView.css +46 -0
- package/front_end/panels/security/sidebar.css +1 -2
- package/front_end/panels/sensors/LocationsSettingsTab.ts +26 -11
- package/front_end/panels/sensors/locationsSettingsTab.css +18 -18
- package/front_end/panels/settings/AISettingsTab.ts +6 -15
- package/front_end/panels/settings/KeybindsSettingsTab.ts +1 -1
- package/front_end/panels/settings/SettingsScreen.ts +61 -56
- package/front_end/panels/settings/aiSettingsTab.css +3 -14
- package/front_end/panels/settings/components/SyncSection.ts +1 -2
- package/front_end/panels/settings/components/syncSection.css +0 -10
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +3 -1
- package/front_end/panels/settings/keybindsSettingsTab.css +7 -10
- package/front_end/panels/settings/settingsScreen.css +27 -125
- package/front_end/panels/sources/DebuggerPlugin.ts +9 -4
- package/front_end/panels/sources/NavigatorView.ts +11 -13
- package/front_end/panels/timeline/ActiveFilters.ts +3 -4
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -2
- package/front_end/panels/timeline/CountersGraph.ts +2 -4
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +7 -8
- package/front_end/panels/timeline/README.md +2 -1
- package/front_end/panels/timeline/TimelineController.ts +14 -4
- package/front_end/panels/timeline/TimelineEventOverview.ts +3 -4
- package/front_end/panels/timeline/TimelineFilters.ts +3 -4
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +1 -1
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +3 -10
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +1 -2
- package/front_end/panels/timeline/TimelineFlameChartView.ts +21 -12
- package/front_end/panels/timeline/TimelineLoader.test.ts +1 -2
- package/front_end/panels/timeline/TimelineLoader.ts +3 -4
- package/front_end/panels/timeline/TimelineMiniMap.ts +10 -0
- package/front_end/panels/timeline/TimelinePanel.ts +20 -8
- package/front_end/panels/timeline/TimelineTreeView.test.ts +12 -13
- package/front_end/panels/timeline/TimelineTreeView.ts +35 -40
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +2 -2
- package/front_end/panels/timeline/TimelineUIUtils.ts +12 -14
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +6 -7
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +3 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +14 -26
- package/front_end/panels/timeline/components/MetricCard.test.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.ts +46 -0
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +3 -4
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +2 -0
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +41 -36
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +19 -33
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +29 -40
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +17 -23
- package/front_end/panels/timeline/components/insights/Helpers.ts +12 -16
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +14 -26
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +25 -37
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +20 -47
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +19 -28
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +18 -31
- package/front_end/panels/timeline/components/insights/Table.ts +5 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +18 -25
- package/front_end/panels/timeline/components/insights/Viewport.ts +14 -25
- package/front_end/panels/timeline/components/liveMetricsView.css +5 -13
- package/front_end/panels/timeline/components/metricCard.css +11 -0
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +1 -1
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +5 -5
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +13 -12
- package/front_end/panels/timeline/timelineFlameChartView.css +1 -1
- package/front_end/panels/timeline/utils/AICallTree.test.ts +105 -0
- package/front_end/panels/timeline/utils/AICallTree.ts +25 -24
- package/front_end/testing/EnvironmentHelpers.ts +5 -18
- package/front_end/testing/InsightHelpers.ts +4 -4
- package/front_end/testing/TraceHelpers.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Browser.d.ts +2 -3
- 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/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/ElementHandle.js.map +1 -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 +1 -1
- 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/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js +2 -11
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js +9 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/generated/version.js +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/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/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js +18 -0
- package/front_end/third_party/puppeteer/package/lib/cjs/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +215 -97
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Browser.d.ts +2 -3
- 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/ElementHandle.d.ts +14 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js +16 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts +34 -5
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js +51 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/api/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js +10 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/ElementHandle.js.map +1 -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 +1 -1
- 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/Input.d.ts +14 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js +57 -23
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/bidi/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js +13 -10
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/ElementHandle.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts +15 -4
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js +55 -26
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/cdp/Input.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts +0 -8
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js +1 -9
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/CallbackRegistry.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts +2 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js +5 -2
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/ConsoleMessage.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js +7 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/Errors.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js +5 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/common/WaitTask.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js +0 -3
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/environment.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/generated/version.js +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/incremental-id-generator.d.ts +14 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.d.ts.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js +15 -0
- package/front_end/third_party/puppeteer/package/lib/esm/puppeteer/util/incremental-id-generator.js.map +1 -0
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +51 -10
- package/front_end/third_party/puppeteer/package/package.json +4 -4
- package/front_end/third_party/puppeteer/package/src/api/Browser.ts +2 -3
- package/front_end/third_party/puppeteer/package/src/api/ElementHandle.ts +21 -3
- package/front_end/third_party/puppeteer/package/src/api/Input.ts +57 -8
- package/front_end/third_party/puppeteer/package/src/bidi/ElementHandle.ts +9 -7
- package/front_end/third_party/puppeteer/package/src/bidi/Frame.ts +1 -0
- package/front_end/third_party/puppeteer/package/src/bidi/Input.ts +72 -31
- package/front_end/third_party/puppeteer/package/src/cdp/ElementHandle.ts +14 -9
- package/front_end/third_party/puppeteer/package/src/cdp/Input.ts +71 -26
- package/front_end/third_party/puppeteer/package/src/common/CallbackRegistry.ts +1 -15
- package/front_end/third_party/puppeteer/package/src/common/ConsoleMessage.ts +8 -1
- package/front_end/third_party/puppeteer/package/src/common/Errors.ts +7 -0
- package/front_end/third_party/puppeteer/package/src/common/WaitTask.ts +9 -9
- package/front_end/third_party/puppeteer/package/src/environment.ts +1 -4
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/generated/version.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/incremental-id-generator.ts +20 -0
- package/front_end/third_party/puppeteer/puppeteer-tsconfig.json +1 -0
- package/front_end/ui/components/buttons/Button.test.ts +14 -0
- package/front_end/ui/components/buttons/Button.ts +27 -4
- package/front_end/ui/components/cards/card.css +7 -4
- package/front_end/ui/components/dialogs/Dialog.ts +2 -4
- package/front_end/ui/components/dialogs/ShortcutDialog.ts +15 -13
- package/front_end/ui/components/dialogs/dialog.css +2 -6
- package/front_end/ui/components/dialogs/shortcutDialog.css +33 -41
- package/front_end/ui/components/docs/freestyler/basic.ts +6 -8
- package/front_end/ui/components/docs/freestyler/empty_state.ts +6 -8
- package/front_end/ui/components/docs/performance_panel/track_example.html +1 -1
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +39 -17
- package/front_end/ui/components/markdown_view/MarkdownView.ts +77 -14
- package/front_end/ui/components/markdown_view/markdownView.css +15 -0
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -2
- package/front_end/ui/legacy/ContextMenu.ts +2 -2
- package/front_end/ui/legacy/InplaceEditor.ts +18 -14
- package/front_end/ui/legacy/TabbedPane.ts +0 -14
- package/front_end/ui/legacy/UIUtils.ts +0 -7
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +7 -2
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +8 -4
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +20 -11
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.test.ts +19 -0
- package/front_end/ui/legacy/components/inline_editor/LinkSwatch.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +5 -22
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +129 -100
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +4 -2
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.test.ts +9 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewCalculator.ts +6 -6
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +22 -4
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +0 -2
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.test.ts +49 -0
- package/front_end/ui/legacy/components/source_frame/BinaryResourceViewFactory.ts +23 -46
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +1 -1
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +1 -1
- package/front_end/ui/legacy/textPrompt.css +1 -1
- package/front_end/ui/legacy/toolbar.css +4 -5
- package/front_end/ui/visual_logging/KnownContextValues.ts +174 -0
- package/front_end/ui/visual_logging/LoggingConfig.ts +6 -2
- package/package.json +7 -6
- package/scripts/build/ninja/bundle.gni +3 -3
- package/scripts/build/{rollup.config.js → rollup.config.mjs} +4 -4
- package/scripts/devtools_paths.py +8 -4
- package/scripts/eslint_rules/tests/check_test_definitions_test.js +8 -3
- package/scripts/tools/update_goldens_v2.py +1 -1
- package/front_end/models/timeline_model/TimelineModelFilter.ts +0 -61
- /package/front_end/Images/{rollup.config.js → rollup.config.mjs} +0 -0
@@ -15,7 +15,14 @@ import {describeWithMockConnection} from '../../testing/MockConnection.js';
|
|
15
15
|
import {createNetworkPanelForMockConnection} from '../../testing/NetworkHelpers.js';
|
16
16
|
import * as Coordinator from '../../ui/components/render_coordinator/render_coordinator.js';
|
17
17
|
|
18
|
-
import {
|
18
|
+
import {
|
19
|
+
allowHeader,
|
20
|
+
DrJonesNetworkAgent,
|
21
|
+
formatHeaders,
|
22
|
+
formatInitiatorUrl,
|
23
|
+
RequestContext,
|
24
|
+
ResponseType,
|
25
|
+
} from './freestyler.js';
|
19
26
|
|
20
27
|
const coordinator = Coordinator.RenderCoordinator.RenderCoordinator.instance();
|
21
28
|
|
@@ -215,7 +222,8 @@ describeWithMockConnection('DrJonesNetworkAgent', () => {
|
|
215
222
|
aidaClient: mockAidaClient(generateAnswer),
|
216
223
|
});
|
217
224
|
|
218
|
-
const responses =
|
225
|
+
const responses =
|
226
|
+
await Array.fromAsync(agent.run('test', {selected: new RequestContext(selectedNetworkRequest)}));
|
219
227
|
assert.deepStrictEqual(responses, [
|
220
228
|
{
|
221
229
|
type: ResponseType.USER_QUERY,
|
@@ -236,7 +244,7 @@ describeWithMockConnection('DrJonesNetworkAgent', () => {
|
|
236
244
|
{
|
237
245
|
title: 'Timing',
|
238
246
|
text:
|
239
|
-
'Queued at (timestamp): 0 μs\nStarted at (timestamp): 8.
|
247
|
+
'Queued at (timestamp): 0 μs\nStarted at (timestamp): 8.4 min\nQueueing (duration): 8.4 min\nConnection start (stalled) (duration): 800.00 ms\nRequest sent (duration): 100.00 ms\nDuration (duration): 8.4 min',
|
240
248
|
},
|
241
249
|
{
|
242
250
|
title: 'Request initiator chain',
|
@@ -250,7 +258,7 @@ describeWithMockConnection('DrJonesNetworkAgent', () => {
|
|
250
258
|
{
|
251
259
|
type: ResponseType.QUERYING,
|
252
260
|
query:
|
253
|
-
'# Selected network request \nRequest: https://www.example.com\n\nRequest headers:\ncontent-type: bar1\n\nResponse headers:\ncontent-type: bar2\nx-forwarded-for: bar3\n\nResponse status: 200 \n\nRequest timing:\nQueued at (timestamp): 0 μs\nStarted at (timestamp): 8.
|
261
|
+
'# Selected network request \nRequest: https://www.example.com\n\nRequest headers:\ncontent-type: bar1\n\nResponse headers:\ncontent-type: bar2\nx-forwarded-for: bar3\n\nResponse status: 200 \n\nRequest timing:\nQueued at (timestamp): 0 μs\nStarted at (timestamp): 8.4 min\nQueueing (duration): 8.4 min\nConnection start (stalled) (duration): 800.00 ms\nRequest sent (duration): 100.00 ms\nDuration (duration): 8.4 min\n\nRequest initiator chain:\n- URL: <redacted cross-origin initiator URL>\n\t- URL: https://www.example.com\n\t\t- URL: https://www.example.com/1\n\t\t- URL: https://www.example.com/2\n\n# User request\n\ntest',
|
254
262
|
},
|
255
263
|
{
|
256
264
|
type: ResponseType.ANSWER,
|
@@ -274,11 +282,11 @@ x-forwarded-for: bar3
|
|
274
282
|
Response status: 200 \n
|
275
283
|
Request timing:
|
276
284
|
Queued at (timestamp): 0 μs
|
277
|
-
Started at (timestamp): 8.
|
278
|
-
Queueing (duration): 8.
|
285
|
+
Started at (timestamp): 8.4 min
|
286
|
+
Queueing (duration): 8.4 min
|
279
287
|
Connection start (stalled) (duration): 800.00 ms
|
280
288
|
Request sent (duration): 100.00 ms
|
281
|
-
Duration (duration): 8.
|
289
|
+
Duration (duration): 8.4 min
|
282
290
|
|
283
291
|
Request initiator chain:
|
284
292
|
- URL: <redacted cross-origin initiator URL>
|
@@ -8,6 +8,7 @@ import * as i18n from '../../core/i18n/i18n.js';
|
|
8
8
|
import type * as SDK from '../../core/sdk/sdk.js';
|
9
9
|
import * as Logs from '../../models/logs/logs.js';
|
10
10
|
import * as Network from '../../panels/network/network.js';
|
11
|
+
import * as PanelUtils from '../utils/utils.js';
|
11
12
|
|
12
13
|
import {
|
13
14
|
AgentType,
|
@@ -15,6 +16,7 @@ import {
|
|
15
16
|
type AidaRequestOptions,
|
16
17
|
type ContextDetail,
|
17
18
|
type ContextResponse,
|
19
|
+
ConversationContext,
|
18
20
|
type ParsedResponse,
|
19
21
|
ResponseType,
|
20
22
|
} from './AiAgent.js';
|
@@ -97,6 +99,31 @@ const UIStringsNotTranslate = {
|
|
97
99
|
|
98
100
|
const lockedString = i18n.i18n.lockedString;
|
99
101
|
|
102
|
+
export class RequestContext extends ConversationContext<SDK.NetworkRequest.NetworkRequest> {
|
103
|
+
#request: SDK.NetworkRequest.NetworkRequest;
|
104
|
+
|
105
|
+
constructor(request: SDK.NetworkRequest.NetworkRequest) {
|
106
|
+
super();
|
107
|
+
this.#request = request;
|
108
|
+
}
|
109
|
+
|
110
|
+
override getOrigin(): string {
|
111
|
+
return new URL(this.#request.url()).origin;
|
112
|
+
}
|
113
|
+
|
114
|
+
override getItem(): SDK.NetworkRequest.NetworkRequest {
|
115
|
+
return this.#request;
|
116
|
+
}
|
117
|
+
|
118
|
+
override getIcon(): HTMLElement {
|
119
|
+
return PanelUtils.PanelUtils.getIconForNetworkRequest(this.#request);
|
120
|
+
}
|
121
|
+
|
122
|
+
override getTitle(): string {
|
123
|
+
return this.#request.name();
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
100
127
|
/**
|
101
128
|
* One agent instance handles one conversation. Create a new agent
|
102
129
|
* instance for a new conversation.
|
@@ -107,14 +134,12 @@ export class DrJonesNetworkAgent extends AiAgent<SDK.NetworkRequest.NetworkReque
|
|
107
134
|
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_DRJONES_NETWORK_AGENT;
|
108
135
|
get userTier(): string|undefined {
|
109
136
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
110
|
-
return config.devToolsAiAssistanceNetworkAgent?.userTier
|
137
|
+
return config.devToolsAiAssistanceNetworkAgent?.userTier;
|
111
138
|
}
|
112
139
|
get options(): AidaRequestOptions {
|
113
140
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
114
|
-
const temperature =
|
115
|
-
|
116
|
-
const modelId =
|
117
|
-
config.devToolsAiAssistanceNetworkAgent?.modelId ?? config.devToolsExplainThisResourceDogfood?.modelId;
|
141
|
+
const temperature = config.devToolsAiAssistanceNetworkAgent?.temperature;
|
142
|
+
const modelId = config.devToolsAiAssistanceNetworkAgent?.modelId;
|
118
143
|
|
119
144
|
return {
|
120
145
|
temperature,
|
@@ -123,7 +148,7 @@ export class DrJonesNetworkAgent extends AiAgent<SDK.NetworkRequest.NetworkReque
|
|
123
148
|
}
|
124
149
|
|
125
150
|
async *
|
126
|
-
handleContextDetails(selectedNetworkRequest: SDK.NetworkRequest.NetworkRequest
|
151
|
+
handleContextDetails(selectedNetworkRequest: ConversationContext<SDK.NetworkRequest.NetworkRequest>|null):
|
127
152
|
AsyncGenerator<ContextResponse, void, void> {
|
128
153
|
if (!selectedNetworkRequest) {
|
129
154
|
return;
|
@@ -132,14 +157,15 @@ export class DrJonesNetworkAgent extends AiAgent<SDK.NetworkRequest.NetworkReque
|
|
132
157
|
yield {
|
133
158
|
type: ResponseType.CONTEXT,
|
134
159
|
title: lockedString(UIStringsNotTranslate.analyzingNetworkData),
|
135
|
-
details: createContextDetailsForDrJonesNetworkAgent(selectedNetworkRequest),
|
160
|
+
details: createContextDetailsForDrJonesNetworkAgent(selectedNetworkRequest.getItem()),
|
136
161
|
};
|
137
162
|
}
|
138
163
|
|
139
|
-
override async enhanceQuery(
|
140
|
-
|
164
|
+
override async enhanceQuery(
|
165
|
+
query: string,
|
166
|
+
selectedNetworkRequest: ConversationContext<SDK.NetworkRequest.NetworkRequest>|null): Promise<string> {
|
141
167
|
const networkEnchantmentQuery = selectedNetworkRequest ?
|
142
|
-
`# Selected network request \n${formatNetworkRequest(selectedNetworkRequest)}\n\n# User request\n\n` :
|
168
|
+
`# Selected network request \n${formatNetworkRequest(selectedNetworkRequest.getItem())}\n\n# User request\n\n` :
|
143
169
|
'';
|
144
170
|
return `${networkEnchantmentQuery}${query}`;
|
145
171
|
}
|
@@ -190,9 +216,7 @@ const allowedHeaders = new Set([
|
|
190
216
|
'content-disposition',
|
191
217
|
'content-encoding',
|
192
218
|
'content-language',
|
193
|
-
'content-length',
|
194
219
|
'content-location',
|
195
|
-
'content-md5',
|
196
220
|
'content-range',
|
197
221
|
'content-security-policy',
|
198
222
|
'content-type',
|
@@ -200,7 +224,6 @@ const allowedHeaders = new Set([
|
|
200
224
|
'date',
|
201
225
|
'delta-base',
|
202
226
|
'dnt',
|
203
|
-
'etag',
|
204
227
|
'expect-ct',
|
205
228
|
'expect',
|
206
229
|
'expires',
|
@@ -208,9 +231,7 @@ const allowedHeaders = new Set([
|
|
208
231
|
'front-end-https',
|
209
232
|
'host',
|
210
233
|
'http2-settings',
|
211
|
-
'if-match',
|
212
234
|
'if-modified-since',
|
213
|
-
'if-none-match',
|
214
235
|
'if-range',
|
215
236
|
'if-unmodified-source',
|
216
237
|
'im',
|
@@ -7,12 +7,12 @@ import {describeWithEnvironment, getGetHostConfigStub} from '../../testing/Envir
|
|
7
7
|
import {TraceLoader} from '../../testing/TraceLoader.js';
|
8
8
|
import * as TimelineUtils from '../timeline/utils/utils.js';
|
9
9
|
|
10
|
-
import {DrJonesPerformanceAgent, ResponseType} from './freestyler.js';
|
10
|
+
import {CallTreeContext, DrJonesPerformanceAgent, ResponseType} from './freestyler.js';
|
11
11
|
|
12
12
|
describeWithEnvironment('DrJonesPerformanceAgent', () => {
|
13
13
|
function mockHostConfig(modelId?: string, temperature?: number) {
|
14
14
|
getGetHostConfigStub({
|
15
|
-
|
15
|
+
devToolsAiAssistancePerformanceAgent: {
|
16
16
|
modelId,
|
17
17
|
temperature,
|
18
18
|
},
|
@@ -133,7 +133,7 @@ describeWithEnvironment('DrJonesPerformanceAgent', () => {
|
|
133
133
|
aidaClient: mockAidaClient(generateAnswer),
|
134
134
|
});
|
135
135
|
|
136
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: aiCallTree}));
|
136
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new CallTreeContext(aiCallTree)}));
|
137
137
|
const expectedData = '\n\n' +
|
138
138
|
`
|
139
139
|
|
@@ -198,7 +198,7 @@ self: 3
|
|
198
198
|
serialize: () => 'Mock call tree',
|
199
199
|
} as unknown as TimelineUtils.AICallTree.AICallTree;
|
200
200
|
|
201
|
-
const enhancedQuery1 = await agent.enhanceQuery('What is this?', mockAiCallTree);
|
201
|
+
const enhancedQuery1 = await agent.enhanceQuery('What is this?', new CallTreeContext(mockAiCallTree));
|
202
202
|
assert.strictEqual(enhancedQuery1, 'Mock call tree\n\n# User request\n\nWhat is this?');
|
203
203
|
|
204
204
|
// Create history state of the above query
|
@@ -227,13 +227,13 @@ self: 3
|
|
227
227
|
]]);
|
228
228
|
|
229
229
|
const query2 = 'But what about this follow-up question?';
|
230
|
-
const enhancedQuery2 = await agent.enhanceQuery(query2, mockAiCallTree);
|
230
|
+
const enhancedQuery2 = await agent.enhanceQuery(query2, new CallTreeContext(mockAiCallTree));
|
231
231
|
assert.strictEqual(enhancedQuery2, query2);
|
232
232
|
assert.isFalse(enhancedQuery2.includes(mockAiCallTree.serialize()));
|
233
233
|
|
234
234
|
// Just making sure any subsequent chat doesnt include it either.
|
235
235
|
const query3 = 'And this 3rd question?';
|
236
|
-
const enhancedQuery3 = await agent.enhanceQuery(query3, mockAiCallTree);
|
236
|
+
const enhancedQuery3 = await agent.enhanceQuery(query3, new CallTreeContext(mockAiCallTree));
|
237
237
|
assert.strictEqual(enhancedQuery3, query3);
|
238
238
|
assert.isFalse(enhancedQuery3.includes(mockAiCallTree.serialize()));
|
239
239
|
});
|
@@ -5,13 +5,15 @@
|
|
5
5
|
import * as Common from '../../core/common/common.js';
|
6
6
|
import * as Host from '../../core/host/host.js';
|
7
7
|
import * as i18n from '../../core/i18n/i18n.js';
|
8
|
-
import
|
8
|
+
import * as TimelineUtils from '../../panels/timeline/utils/utils.js';
|
9
|
+
import * as PanelUtils from '../utils/utils.js';
|
9
10
|
|
10
11
|
import {
|
11
12
|
AgentType,
|
12
13
|
AiAgent,
|
13
14
|
type AidaRequestOptions,
|
14
15
|
type ContextResponse,
|
16
|
+
ConversationContext,
|
15
17
|
type ParsedResponse,
|
16
18
|
ResponseType,
|
17
19
|
} from './AiAgent.js';
|
@@ -120,6 +122,43 @@ const UIStringsNotTranslate = {
|
|
120
122
|
|
121
123
|
const lockedString = i18n.i18n.lockedString;
|
122
124
|
|
125
|
+
export class CallTreeContext extends ConversationContext<TimelineUtils.AICallTree.AICallTree> {
|
126
|
+
#callTree: TimelineUtils.AICallTree.AICallTree;
|
127
|
+
|
128
|
+
constructor(callTree: TimelineUtils.AICallTree.AICallTree) {
|
129
|
+
super();
|
130
|
+
this.#callTree = callTree;
|
131
|
+
}
|
132
|
+
|
133
|
+
override getOrigin(): string {
|
134
|
+
// TODO: implement cross-origin checks for the PerformanceAgent.
|
135
|
+
return '';
|
136
|
+
}
|
137
|
+
|
138
|
+
override getItem(): TimelineUtils.AICallTree.AICallTree {
|
139
|
+
return this.#callTree;
|
140
|
+
}
|
141
|
+
|
142
|
+
override getIcon(): HTMLElement {
|
143
|
+
const iconData = {
|
144
|
+
iconName: 'performance',
|
145
|
+
color: 'var(--sys-color-on-surface-subtle)',
|
146
|
+
};
|
147
|
+
const icon = PanelUtils.PanelUtils.createIconElement(iconData, 'Performance');
|
148
|
+
icon.classList.add('icon');
|
149
|
+
return icon;
|
150
|
+
}
|
151
|
+
|
152
|
+
override getTitle(): string {
|
153
|
+
const {event} = this.#callTree.selectedNode;
|
154
|
+
if (!event) {
|
155
|
+
return 'unknown';
|
156
|
+
}
|
157
|
+
|
158
|
+
return TimelineUtils.EntryName.nameForEntry(event);
|
159
|
+
}
|
160
|
+
}
|
161
|
+
|
123
162
|
/**
|
124
163
|
* One agent instance handles one conversation. Create a new agent
|
125
164
|
* instance for a new conversation.
|
@@ -130,12 +169,12 @@ export class DrJonesPerformanceAgent extends AiAgent<TimelineUtils.AICallTree.AI
|
|
130
169
|
readonly clientFeature = Host.AidaClient.ClientFeature.CHROME_DRJONES_PERFORMANCE_AGENT;
|
131
170
|
get userTier(): string|undefined {
|
132
171
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
133
|
-
return config.
|
172
|
+
return config.devToolsAiAssistancePerformanceAgent?.userTier;
|
134
173
|
}
|
135
174
|
get options(): AidaRequestOptions {
|
136
175
|
const config = Common.Settings.Settings.instance().getHostConfig();
|
137
|
-
const temperature = config.
|
138
|
-
const modelId = config.
|
176
|
+
const temperature = config.devToolsAiAssistancePerformanceAgent?.temperature;
|
177
|
+
const modelId = config.devToolsAiAssistancePerformanceAgent?.modelId;
|
139
178
|
|
140
179
|
return {
|
141
180
|
temperature,
|
@@ -144,7 +183,7 @@ export class DrJonesPerformanceAgent extends AiAgent<TimelineUtils.AICallTree.AI
|
|
144
183
|
}
|
145
184
|
|
146
185
|
async *
|
147
|
-
handleContextDetails(aiCallTree: TimelineUtils.AICallTree.AICallTree
|
186
|
+
handleContextDetails(aiCallTree: ConversationContext<TimelineUtils.AICallTree.AICallTree>|null):
|
148
187
|
AsyncGenerator<ContextResponse, void, void> {
|
149
188
|
yield {
|
150
189
|
type: ResponseType.CONTEXT,
|
@@ -152,14 +191,15 @@ export class DrJonesPerformanceAgent extends AiAgent<TimelineUtils.AICallTree.AI
|
|
152
191
|
details: [
|
153
192
|
{
|
154
193
|
title: 'Selected call tree',
|
155
|
-
text: aiCallTree?.serialize() ?? '',
|
194
|
+
text: aiCallTree?.getItem().serialize() ?? '',
|
156
195
|
},
|
157
196
|
],
|
158
197
|
};
|
159
198
|
}
|
160
199
|
|
161
|
-
override async enhanceQuery(query: string, aiCallTree: TimelineUtils.AICallTree.AICallTree
|
162
|
-
|
200
|
+
override async enhanceQuery(query: string, aiCallTree: ConversationContext<TimelineUtils.AICallTree.AICallTree>|null):
|
201
|
+
Promise<string> {
|
202
|
+
const treeStr = aiCallTree?.getItem().serialize();
|
163
203
|
|
164
204
|
// Collect the queries from previous messages in this session
|
165
205
|
const prevQueries: string[] = [];
|
@@ -616,7 +616,7 @@ c`;
|
|
616
616
|
});
|
617
617
|
|
618
618
|
promise.resolve(true);
|
619
|
-
await Array.fromAsync(agent.run('test', {selected: element}));
|
619
|
+
await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
620
620
|
|
621
621
|
sinon.assert.match(execJs.getCall(0).args[1], sinon.match({throwOnSideEffect: true}));
|
622
622
|
});
|
@@ -655,7 +655,7 @@ c`;
|
|
655
655
|
|
656
656
|
});
|
657
657
|
promise.resolve(true);
|
658
|
-
await Array.fromAsync(agent.run('test', {selected: element}));
|
658
|
+
await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
659
659
|
|
660
660
|
assert.strictEqual(execJs.getCalls().length, 2);
|
661
661
|
sinon.assert.match(execJs.getCall(1).args[1], sinon.match({throwOnSideEffect: false}));
|
@@ -694,7 +694,7 @@ c`;
|
|
694
694
|
|
695
695
|
});
|
696
696
|
promise.resolve(false);
|
697
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
697
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
698
698
|
|
699
699
|
const actionStep = responses.find(response => response.type === Freestyler.ResponseType.ACTION)!;
|
700
700
|
|
@@ -732,7 +732,7 @@ c`;
|
|
732
732
|
|
733
733
|
});
|
734
734
|
|
735
|
-
const result = await Array.fromAsync(agent.run('test', {selected: element}));
|
735
|
+
const result = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
736
736
|
const actionSteps = result.filter(step => {
|
737
737
|
return step.type === Freestyler.ResponseType.ACTION;
|
738
738
|
});
|
@@ -757,7 +757,7 @@ c`;
|
|
757
757
|
execJs,
|
758
758
|
});
|
759
759
|
|
760
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
760
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
761
761
|
assert.deepStrictEqual(responses, [
|
762
762
|
{
|
763
763
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -814,7 +814,7 @@ c`;
|
|
814
814
|
|
815
815
|
});
|
816
816
|
|
817
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
817
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
818
818
|
assert.deepStrictEqual(responses, [
|
819
819
|
{
|
820
820
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -864,7 +864,7 @@ c`;
|
|
864
864
|
|
865
865
|
});
|
866
866
|
|
867
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
867
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
868
868
|
assert.deepStrictEqual(responses, [
|
869
869
|
{
|
870
870
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -913,7 +913,7 @@ c`;
|
|
913
913
|
|
914
914
|
});
|
915
915
|
|
916
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
916
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
917
917
|
assert.deepStrictEqual(responses, [
|
918
918
|
{
|
919
919
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -956,7 +956,7 @@ c`;
|
|
956
956
|
aidaClient: mockAidaClient(generateNothing),
|
957
957
|
execJs,
|
958
958
|
});
|
959
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
959
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
960
960
|
assert.deepStrictEqual(responses, [
|
961
961
|
{
|
962
962
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -1019,7 +1019,7 @@ ANSWER: this is the answer`,
|
|
1019
1019
|
execJs,
|
1020
1020
|
|
1021
1021
|
});
|
1022
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
1022
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
1023
1023
|
assert.deepStrictEqual(responses, [
|
1024
1024
|
{
|
1025
1025
|
type: Freestyler.ResponseType.USER_QUERY,
|
@@ -1092,7 +1092,7 @@ ANSWER: this is the answer`,
|
|
1092
1092
|
|
1093
1093
|
});
|
1094
1094
|
|
1095
|
-
await Array.fromAsync(agent.run('test', {selected: element}));
|
1095
|
+
await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
1096
1096
|
|
1097
1097
|
assert.deepStrictEqual(agent.chatHistoryForTesting, [
|
1098
1098
|
{
|
@@ -1161,7 +1161,8 @@ ANSWER: this is the answer`,
|
|
1161
1161
|
|
1162
1162
|
const controller = new AbortController();
|
1163
1163
|
controller.abort();
|
1164
|
-
await Array.fromAsync(
|
1164
|
+
await Array.fromAsync(
|
1165
|
+
agent.run('test', {selected: new Freestyler.NodeContext(element), signal: controller.signal}));
|
1165
1166
|
|
1166
1167
|
assert.deepStrictEqual(agent.chatHistoryForTesting, []);
|
1167
1168
|
});
|
@@ -1209,7 +1210,7 @@ ANSWER: this is the answer`,
|
|
1209
1210
|
createExtensionScope,
|
1210
1211
|
execJs,
|
1211
1212
|
});
|
1212
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
1213
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
1213
1214
|
const actionStep = responses.find(response => response.type === Freestyler.ResponseType.ACTION)!;
|
1214
1215
|
assert.strictEqual(actionStep.output, 'Error: JavaScript execution is currently disabled.');
|
1215
1216
|
assert.strictEqual(execJs.getCalls().length, 0);
|
@@ -1231,7 +1232,7 @@ ANSWER: this is the answer`,
|
|
1231
1232
|
createExtensionScope,
|
1232
1233
|
execJs,
|
1233
1234
|
});
|
1234
|
-
const responses = await Array.fromAsync(agent.run('test', {selected: element}));
|
1235
|
+
const responses = await Array.fromAsync(agent.run('test', {selected: new Freestyler.NodeContext(element)}));
|
1235
1236
|
const actionStep = responses.find(response => response.type === Freestyler.ResponseType.ACTION)!;
|
1236
1237
|
assert.strictEqual(
|
1237
1238
|
actionStep.output, 'Error: JavaScript execution that modifies the page is currently disabled.');
|
@@ -9,6 +9,7 @@ import * as Platform from '../../core/platform/platform.js';
|
|
9
9
|
import * as Root from '../../core/root/root.js';
|
10
10
|
import * as SDK from '../../core/sdk/sdk.js';
|
11
11
|
import * as UI from '../../ui/legacy/legacy.js';
|
12
|
+
import * as LitHtml from '../../ui/lit-html/lit-html.js';
|
12
13
|
|
13
14
|
import {
|
14
15
|
type ActionResponse,
|
@@ -16,6 +17,7 @@ import {
|
|
16
17
|
AiAgent,
|
17
18
|
type AidaRequestOptions,
|
18
19
|
type ContextResponse,
|
20
|
+
ConversationContext,
|
19
21
|
debugLog,
|
20
22
|
isDebugMode,
|
21
23
|
type ParsedResponse,
|
@@ -193,6 +195,7 @@ async function executeJsCode(
|
|
193
195
|
}
|
194
196
|
|
195
197
|
const MAX_OBSERVATION_BYTE_LENGTH = 25_000;
|
198
|
+
const OBSERVATION_TIMEOUT = 5_000;
|
196
199
|
|
197
200
|
type CreateExtensionScopeFunction = (changes: ChangeManager) => {
|
198
201
|
install(): Promise<void>, uninstall(): Promise<void>,
|
@@ -207,6 +210,38 @@ type AgentOptions = {
|
|
207
210
|
execJs?: typeof executeJsCode,
|
208
211
|
};
|
209
212
|
|
213
|
+
export class NodeContext extends ConversationContext<SDK.DOMModel.DOMNode> {
|
214
|
+
#node: SDK.DOMModel.DOMNode;
|
215
|
+
|
216
|
+
constructor(node: SDK.DOMModel.DOMNode) {
|
217
|
+
super();
|
218
|
+
this.#node = node;
|
219
|
+
}
|
220
|
+
|
221
|
+
getOrigin(): string {
|
222
|
+
const ownerDocument = this.#node.ownerDocument;
|
223
|
+
if (!ownerDocument) {
|
224
|
+
// The node is detached from a document.
|
225
|
+
return 'detached';
|
226
|
+
}
|
227
|
+
return new URL(ownerDocument.documentURL).origin;
|
228
|
+
}
|
229
|
+
|
230
|
+
getItem(): SDK.DOMModel.DOMNode {
|
231
|
+
return this.#node;
|
232
|
+
}
|
233
|
+
|
234
|
+
override getIcon(): HTMLElement {
|
235
|
+
return document.createElement('span');
|
236
|
+
}
|
237
|
+
|
238
|
+
override getTitle(): string|ReturnType<typeof LitHtml.Directives.until> {
|
239
|
+
return LitHtml.Directives.until(
|
240
|
+
Common.Linkifier.Linkifier.linkify(this.#node),
|
241
|
+
);
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
210
245
|
/**
|
211
246
|
* One agent instance handles one conversation. Create a new agent
|
212
247
|
* instance for a new conversation.
|
@@ -430,10 +465,16 @@ export class FreestylerAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
430
465
|
canceled: true,
|
431
466
|
};
|
432
467
|
}
|
433
|
-
const result = await
|
434
|
-
|
435
|
-
|
436
|
-
|
468
|
+
const result = await Promise.race([
|
469
|
+
this.#execJs(
|
470
|
+
functionDeclaration,
|
471
|
+
{throwOnSideEffect},
|
472
|
+
),
|
473
|
+
new Promise<never>((_, reject) => {
|
474
|
+
setTimeout(
|
475
|
+
() => reject(new Error('Script execution exceeded the maximum allowed time.')), OBSERVATION_TIMEOUT);
|
476
|
+
}),
|
477
|
+
]);
|
437
478
|
const byteCount = Platform.StringUtilities.countWtf8Bytes(result);
|
438
479
|
Host.userMetrics.freestylerEvalResponseSize(byteCount);
|
439
480
|
if (byteCount > MAX_OBSERVATION_BYTE_LENGTH) {
|
@@ -606,7 +647,8 @@ export class FreestylerAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
606
647
|
}
|
607
648
|
|
608
649
|
override async *
|
609
|
-
handleContextDetails(selectedElement: SDK.DOMModel.DOMNode
|
650
|
+
handleContextDetails(selectedElement: ConversationContext<SDK.DOMModel.DOMNode>|null):
|
651
|
+
AsyncGenerator<ContextResponse, void, void> {
|
610
652
|
if (!selectedElement) {
|
611
653
|
return;
|
612
654
|
}
|
@@ -615,14 +657,16 @@ export class FreestylerAgent extends AiAgent<SDK.DOMModel.DOMNode> {
|
|
615
657
|
title: lockedString(UIStringsNotTranslate.analyzingThePrompt),
|
616
658
|
details: [{
|
617
659
|
title: lockedString(UIStringsNotTranslate.dataUsed),
|
618
|
-
text: await FreestylerAgent.describeElement(selectedElement),
|
660
|
+
text: await FreestylerAgent.describeElement(selectedElement.getItem()),
|
619
661
|
}],
|
620
662
|
};
|
621
663
|
}
|
622
664
|
|
623
|
-
override async enhanceQuery(query: string, selectedElement: SDK.DOMModel.DOMNode
|
665
|
+
override async enhanceQuery(query: string, selectedElement: ConversationContext<SDK.DOMModel.DOMNode>|null):
|
666
|
+
Promise<string> {
|
624
667
|
const elementEnchantmentQuery = selectedElement ?
|
625
|
-
`# Inspected element\n\n${
|
668
|
+
`# Inspected element\n\n${
|
669
|
+
await FreestylerAgent.describeElement(selectedElement.getItem())}\n\n# User request\n\n` :
|
626
670
|
'';
|
627
671
|
return `${elementEnchantmentQuery}QUERY: ${query}`;
|
628
672
|
}
|