chrome-devtools-frontend 1.0.1473514 → 1.0.1506453
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/.gemini/commands/migrate-e2e-non-hosted.toml +43 -0
- package/.gemini/commands/review.toml +85 -0
- package/.geminiignore +6 -0
- package/.github/workflows/auto-close-prs.yml +30 -0
- package/.stylelintignore +0 -1
- package/.vscode/devtools-workspace-settings.json +2 -1
- package/AUTHORS +3 -0
- package/WATCHLISTS +0 -4
- package/config/gni/devtools_grd_files.gni +92 -47
- package/config/gni/devtools_image_files.gni +8 -0
- package/config/gni/i18n.gni +3 -2
- package/config/owner/COMMON_OWNERS +2 -0
- package/docs/README.md +2 -2
- package/docs/architecture_of_devtools.md +8 -8
- package/docs/committers_policy.md +2 -0
- package/docs/contributing/README.md +29 -5
- package/docs/contributing/changes.md +1 -1
- package/docs/contributing/images/quickstart-vscode-tsversion.png +0 -0
- package/docs/contributing/infrastructure.md +89 -0
- package/docs/cookbook/localization.md +86 -79
- package/docs/get_the_code.md +9 -9
- package/docs/styleguide/ux/components.md +190 -2
- package/docs/styleguide/ux/glossary.md +16 -0
- package/docs/styleguide/ux/images/context-menu-example.png +0 -0
- package/docs/ui_engineering.md +80 -19
- package/eslint.config.mjs +64 -23
- package/extension-api/ExtensionAPI.d.ts +3 -0
- package/extensions/cxx_debugging/CMakeLists.txt +0 -6
- package/extensions/cxx_debugging/e2e/MochaRootHooks.ts +3 -1
- package/extensions/cxx_debugging/e2e/TestDriver.ts +1 -2
- package/extensions/cxx_debugging/src/GlobMatch.ts +1 -1
- package/extensions/cxx_debugging/src/ModuleConfiguration.ts +2 -2
- package/extensions/cxx_debugging/third_party/llvm/README.chromium +2 -0
- package/extensions/cxx_debugging/tools/bootstrap.py +7 -0
- package/front_end/Images/generate-css-vars.js +1 -1
- package/front_end/Images/readme.md +1 -2
- package/front_end/Images/rollup.config.mjs +12 -1
- package/front_end/Images/src/baseline-high-availability.svg +17 -0
- package/front_end/Images/src/baseline-limited-availability.svg +19 -0
- package/front_end/Images/src/baseline-low-availability.svg +31 -0
- package/front_end/Images/src/bucket.svg +4 -0
- package/front_end/Images/src/label-auto.svg +3 -0
- package/front_end/Images/src/shield.svg +3 -0
- package/front_end/Images/src/smart-assistant.svg +3 -1
- package/front_end/Images/src/speculative-loads.svg +1 -0
- package/front_end/Images/src/text-analysis.svg +3 -0
- package/front_end/Tests.js +78 -230
- package/front_end/application_tokens.css +7 -1
- package/front_end/core/common/Base64.test.ts +1 -1
- package/front_end/core/common/Base64.ts +3 -3
- package/front_end/core/common/Color.ts +38 -0
- package/front_end/core/common/Debouncer.ts +3 -3
- package/front_end/core/common/EventTarget.test.ts +1 -0
- package/front_end/core/common/Gzip.test.ts +63 -0
- package/front_end/core/common/Gzip.ts +72 -0
- package/front_end/core/common/ResourceType.ts +29 -29
- package/front_end/core/common/ReturnToPanel.ts +15 -0
- package/front_end/core/common/Revealer.ts +10 -10
- package/front_end/core/common/SettingRegistration.ts +22 -22
- package/front_end/core/common/Settings.test.ts +151 -18
- package/front_end/core/common/Settings.ts +99 -8
- package/front_end/core/common/SimpleHistoryManager.ts +0 -17
- package/front_end/core/common/common.ts +4 -0
- package/front_end/core/host/AidaClient.test.ts +103 -2
- package/front_end/core/host/AidaClient.ts +161 -31
- package/front_end/core/host/InspectorFrontendHost.ts +57 -48
- package/front_end/core/host/InspectorFrontendHostAPI.ts +11 -0
- package/front_end/core/host/ResourceLoader.ts +15 -15
- package/front_end/core/host/UserMetrics.ts +27 -13
- package/front_end/core/i18n/NumberFormatter.test.ts +92 -0
- package/front_end/core/i18n/NumberFormatter.ts +9 -9
- package/front_end/core/i18n/collect-ui-strings.js +3 -3
- package/front_end/core/i18n/time-utilities.ts +3 -14
- package/front_end/core/platform/Brand.ts +8 -1
- package/front_end/core/platform/DevToolsPath.ts +1 -1
- package/front_end/core/platform/StringUtilities.test.ts +54 -1
- package/front_end/core/platform/StringUtilities.ts +34 -8
- package/front_end/core/protocol_client/InspectorBackend.ts +9 -9
- package/front_end/core/root/Runtime.ts +52 -8
- package/front_end/core/sdk/AnimationModel.test.ts +0 -24
- package/front_end/core/sdk/AnimationModel.ts +1 -95
- package/front_end/core/sdk/AutofillModel.ts +8 -2
- package/front_end/core/sdk/CPUProfilerModel.ts +2 -2
- package/front_end/core/sdk/CSSContainerQuery.test.ts +15 -0
- package/front_end/core/sdk/CSSContainerQuery.ts +3 -1
- package/front_end/core/sdk/CSSMatchedStyles.test.ts +2 -1
- package/front_end/core/sdk/CSSMatchedStyles.ts +79 -50
- package/front_end/core/sdk/CSSModel.ts +20 -7
- package/front_end/core/sdk/CSSPropertyParser.test.ts +4 -3
- package/front_end/core/sdk/CSSPropertyParser.ts +12 -4
- package/front_end/core/sdk/CSSPropertyParserMatchers.test.ts +46 -15
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +131 -58
- package/front_end/core/sdk/CSSRule.ts +44 -44
- package/front_end/core/sdk/CSSStyleSheetHeader.ts +2 -6
- package/front_end/core/sdk/ChildTargetManager.ts +1 -1
- package/front_end/core/sdk/CompilerSourceMappingContentProvider.ts +3 -8
- package/front_end/core/sdk/Connections.ts +17 -30
- package/front_end/core/sdk/ConsoleModel.ts +9 -9
- package/front_end/core/sdk/DOMModel.ts +45 -16
- package/front_end/core/sdk/DebuggerModel.test.ts +7 -4
- package/front_end/core/sdk/DebuggerModel.ts +55 -11
- package/front_end/core/sdk/EmulationModel.ts +13 -0
- package/front_end/core/sdk/EventBreakpointsModel.ts +2 -2
- package/front_end/core/sdk/IOModel.ts +28 -2
- package/front_end/core/sdk/NetworkManager.test.ts +0 -27
- package/front_end/core/sdk/NetworkManager.ts +137 -105
- package/front_end/core/sdk/NetworkRequest.ts +747 -616
- package/front_end/core/sdk/OverlayModel.ts +4 -8
- package/front_end/core/sdk/PageResourceLoader.ts +32 -13
- package/front_end/core/sdk/PreloadingModel.ts +1 -0
- package/front_end/core/sdk/RehydratingConnection.ts +13 -14
- package/front_end/core/sdk/RemoteObject.test.ts +24 -2
- package/front_end/core/sdk/RemoteObject.ts +0 -3
- package/front_end/core/sdk/Resource.ts +0 -5
- package/front_end/core/sdk/RuntimeModel.ts +2 -1
- package/front_end/core/sdk/Script.ts +2 -7
- package/front_end/core/sdk/ServerTiming.ts +12 -12
- package/front_end/core/sdk/ServiceWorkerCacheModel.ts +7 -3
- package/front_end/core/sdk/ServiceWorkerManager.ts +14 -18
- package/front_end/core/sdk/SourceMap.test.ts +55 -73
- package/front_end/core/sdk/SourceMap.ts +14 -11
- package/front_end/core/sdk/SourceMapFunctionRanges.ts +15 -9
- package/front_end/core/sdk/SourceMapScopeChainEntry.test.ts +6 -5
- package/front_end/core/sdk/SourceMapScopeChainEntry.ts +14 -14
- package/front_end/core/sdk/SourceMapScopesInfo.test.ts +232 -317
- package/front_end/core/sdk/SourceMapScopesInfo.ts +26 -25
- package/front_end/core/sdk/StorageBucketsModel.ts +4 -0
- package/front_end/core/sdk/Target.ts +2 -2
- package/front_end/core/sdk/TargetManager.ts +1 -1
- package/front_end/core/sdk/sdk-meta.ts +86 -86
- package/front_end/core/sdk/sdk.ts +0 -2
- package/front_end/design_system_tokens.css +1 -1
- package/front_end/devtools_compatibility.js +201 -177
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +12 -0
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +3 -3
- package/front_end/entrypoints/inspector_main/RenderingOptions.ts +1 -1
- package/front_end/entrypoints/inspector_main/inspector_main-meta.ts +1 -1
- package/front_end/entrypoints/js_app/js_app.ts +3 -3
- package/front_end/entrypoints/lighthouse_worker/LighthouseWorkerService.ts +1 -1
- package/front_end/entrypoints/main/GlobalAiButton.test.ts +132 -0
- package/front_end/entrypoints/main/GlobalAiButton.ts +141 -0
- package/front_end/entrypoints/main/MainImpl.test.ts +27 -0
- package/front_end/entrypoints/main/MainImpl.ts +179 -47
- package/front_end/entrypoints/main/globalAiButton.css +72 -0
- package/front_end/entrypoints/main/main-meta.ts +82 -42
- package/front_end/entrypoints/main/main.ts +2 -0
- package/front_end/entrypoints/node_app/NodeConnectionsPanel.ts +6 -6
- package/front_end/entrypoints/node_app/NodeMain.ts +8 -7
- package/front_end/entrypoints/node_app/node_app.ts +5 -5
- package/front_end/entrypoints/wasmparser_worker/WasmParserWorker.ts +1 -1
- package/front_end/entrypoints/worker_app/WorkerMain.ts +1 -1
- package/front_end/generated/Deprecation.ts +7 -29
- package/front_end/generated/InspectorBackendCommands.js +183 -167
- package/front_end/generated/SupportedCSSProperties.js +252 -166
- package/front_end/generated/protocol-mapping.d.ts +687 -608
- package/front_end/generated/protocol-proxy-api.d.ts +782 -672
- package/front_end/generated/protocol.ts +11862 -11509
- package/front_end/global_typings/global_defs.d.ts +5 -0
- package/front_end/legacy_test_runner/accessibility_test_runner/accessibility_test_runner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/CacheStorageTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/IndexedDBTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ResourceTreeTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ResourcesTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/ServiceWorkersTestRunner.js +1 -1
- package/front_end/legacy_test_runner/application_test_runner/StorageTestRunner.js +1 -1
- package/front_end/legacy_test_runner/axe_core_test_runner/axe_core_test_runner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/AutomappingTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/BindingsTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/IsolatedFilesystemTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/OverridesTestRunner.js +1 -1
- package/front_end/legacy_test_runner/bindings_test_runner/PersistenceTestRunner.js +1 -1
- package/front_end/legacy_test_runner/console_test_runner/console_test_runner.js +20 -20
- package/front_end/legacy_test_runner/coverage_test_runner/coverage_test_runner.js +11 -11
- package/front_end/legacy_test_runner/data_grid_test_runner/data_grid_test_runner.js +1 -1
- package/front_end/legacy_test_runner/device_mode_test_runner/device_mode_test_runner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/EditDOMTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/ElementsPanelShadowSelectionOnRefreshTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/ElementsTestRunner.js +6 -80
- package/front_end/legacy_test_runner/elements_test_runner/SetOuterHTMLTestRunner.js +1 -1
- package/front_end/legacy_test_runner/elements_test_runner/StylesUpdateLinksTestRunner.js +1 -1
- package/front_end/legacy_test_runner/extensions_test_runner/ExtensionsNetworkTestRunner.js +1 -1
- package/front_end/legacy_test_runner/extensions_test_runner/ExtensionsTestRunner.js +1 -1
- package/front_end/legacy_test_runner/heap_profiler_test_runner/heap_profiler_test_runner.js +2 -2
- package/front_end/legacy_test_runner/layers_test_runner/layers_test_runner.js +1 -1
- package/front_end/legacy_test_runner/network_test_runner/network_test_runner.js +1 -1
- package/front_end/legacy_test_runner/performance_test_runner/TimelineDataTestRunner.js +1 -1
- package/front_end/legacy_test_runner/performance_test_runner/TimelineTestRunner.js +1 -10
- package/front_end/legacy_test_runner/sdk_test_runner/sdk_test_runner.js +1 -1
- package/front_end/legacy_test_runner/security_test_runner/security_test_runner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/AutocompleteTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/DebuggerTestRunner.js +4 -4
- package/front_end/legacy_test_runner/sources_test_runner/EditorTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/LiveEditTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/SearchTestRunner.js +1 -1
- package/front_end/legacy_test_runner/sources_test_runner/SourcesTestRunner.js +2 -2
- package/front_end/legacy_test_runner/test_runner/TestRunner.js +45 -45
- package/front_end/legacy_test_runner/test_runner/test_runner.js +4 -4
- package/front_end/models/ai_assistance/AiHistoryStorage.snapshot.txt +66 -0
- package/front_end/models/ai_assistance/AiHistoryStorage.test.ts +82 -3
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +95 -6
- package/front_end/models/ai_assistance/AiUtils.ts +1 -1
- package/front_end/models/ai_assistance/ConversationHandler.test.ts +355 -0
- package/front_end/models/ai_assistance/ConversationHandler.ts +380 -0
- package/front_end/models/ai_assistance/ExtensionScope.ts +1 -4
- package/front_end/models/ai_assistance/README.md +79 -0
- package/front_end/models/ai_assistance/agents/AiAgent.test.ts +22 -1
- package/front_end/models/ai_assistance/agents/AiAgent.ts +76 -95
- package/front_end/models/ai_assistance/agents/FileAgent.test.ts +3 -2
- package/front_end/models/ai_assistance/agents/FileAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +7 -7
- package/front_end/models/ai_assistance/agents/PerformanceAgent.test.ts +591 -62
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1111 -117
- package/front_end/models/ai_assistance/agents/PerformanceAnnotationsAgent.test.ts +4 -2
- package/front_end/models/ai_assistance/agents/PerformanceAnnotationsAgent.ts +75 -5
- package/front_end/models/ai_assistance/agents/StylingAgent.test.ts +166 -507
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +125 -319
- package/front_end/models/ai_assistance/ai_assistance.ts +2 -1
- package/front_end/models/ai_assistance/data_formatters/FileFormatter.test.ts +3 -2
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.snapshot.txt +725 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.test.ts +249 -274
- package/front_end/models/ai_assistance/data_formatters/PerformanceInsightFormatter.ts +494 -83
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +556 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.test.ts +92 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.ts +359 -0
- package/front_end/models/ai_assistance/debug.ts +1 -1
- package/front_end/models/ai_assistance/injected.ts +1 -1
- package/front_end/models/ai_code_completion/AiCodeCompletion.test.ts +328 -0
- package/front_end/models/ai_code_completion/AiCodeCompletion.ts +289 -0
- package/front_end/models/ai_code_completion/ai_code_completion.ts +6 -0
- package/front_end/models/ai_code_completion/debug.ts +30 -0
- package/front_end/models/autofill_manager/AutofillManager.test.ts +0 -6
- package/front_end/models/autofill_manager/AutofillManager.ts +16 -9
- package/front_end/models/bindings/CSSWorkspaceBinding.ts +0 -4
- package/front_end/models/bindings/CompilerScriptMapping.test.ts +8 -4
- package/front_end/models/bindings/CompilerScriptMapping.ts +12 -5
- package/front_end/models/bindings/DebuggerLanguagePlugins.test.ts +7 -2
- package/front_end/models/bindings/DebuggerLanguagePlugins.ts +33 -24
- package/front_end/models/bindings/DebuggerWorkspaceBinding.test.ts +95 -3
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +94 -21
- package/front_end/models/bindings/DefaultScriptMapping.test.ts +3 -2
- package/front_end/models/bindings/FileUtils.test.ts +1 -10
- package/front_end/models/bindings/FileUtils.ts +6 -22
- package/front_end/models/bindings/LiveLocation.ts +0 -5
- package/front_end/models/bindings/PresentationConsoleMessageHelper.test.ts +7 -2
- package/front_end/models/bindings/PresentationConsoleMessageHelper.ts +0 -4
- package/front_end/models/bindings/ResourceMapping.test.ts +7 -2
- package/front_end/models/bindings/ResourceMapping.ts +0 -4
- package/front_end/models/bindings/ResourceScriptMapping.test.ts +2 -1
- package/front_end/models/bindings/ResourceScriptMapping.ts +4 -4
- package/front_end/models/bindings/SASSSourceMapping.ts +1 -1
- package/front_end/models/bindings/StylesSourceMapping.ts +0 -5
- package/front_end/models/bindings/bindings.ts +0 -2
- package/front_end/models/breakpoints/BreakpointManager.test.ts +9 -2
- package/front_end/models/cpu_profile/CPUProfileDataModel.ts +4 -2
- package/front_end/models/elements/ElementUpdateRecord.ts +101 -0
- package/front_end/models/elements/elements.ts +9 -0
- package/front_end/models/emulation/DeviceModeModel.ts +6 -22
- package/front_end/models/emulation/EmulatedDevices.ts +12 -12
- package/front_end/models/extensions/ExtensionAPI.ts +9 -5
- package/front_end/models/extensions/ExtensionPanel.ts +5 -2
- package/front_end/models/extensions/ExtensionServer.test.ts +122 -16
- package/front_end/models/extensions/ExtensionServer.ts +114 -31
- package/front_end/models/extensions/ExtensionView.ts +1 -1
- package/front_end/models/extensions/LanguageExtensionEndpoint.ts +14 -7
- package/front_end/models/har/HARFormat.ts +1 -1
- package/front_end/models/har/Importer.test.ts +40 -0
- package/front_end/models/har/Importer.ts +35 -1
- package/front_end/models/har/Writer.test.ts +3 -2
- package/front_end/models/har/Writer.ts +2 -2
- package/front_end/models/issues_manager/BounceTrackingIssue.ts +1 -1
- package/front_end/models/issues_manager/ClientHintIssue.ts +1 -1
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/CookieIssue.ts +2 -2
- package/front_end/models/issues_manager/CorsIssue.ts +3 -3
- package/front_end/models/issues_manager/CrossOriginEmbedderPolicyIssue.ts +2 -2
- package/front_end/models/issues_manager/{SelectElementAccessibilityIssue.test.ts → ElementAccessibilityIssue.test.ts} +22 -21
- package/front_end/models/issues_manager/{SelectElementAccessibilityIssue.ts → ElementAccessibilityIssue.ts} +29 -21
- package/front_end/models/issues_manager/FederatedAuthRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/FederatedAuthUserInfoRequestIssue.ts +1 -1
- package/front_end/models/issues_manager/GenericIssue.ts +4 -4
- package/front_end/models/issues_manager/HeavyAdIssue.ts +1 -1
- package/front_end/models/issues_manager/Issue.ts +6 -6
- package/front_end/models/issues_manager/IssuesManager.ts +8 -3
- package/front_end/models/issues_manager/LowTextContrastIssue.ts +1 -1
- package/front_end/models/issues_manager/MarkdownIssueDescription.ts +1 -1
- package/front_end/models/issues_manager/MixedContentIssue.ts +1 -1
- package/front_end/models/issues_manager/PartitioningBlobURLIssue.ts +2 -2
- package/front_end/models/issues_manager/QuirksModeIssue.ts +1 -1
- package/front_end/models/issues_manager/SRIMessageSignatureIssue.ts +3 -3
- package/front_end/models/issues_manager/SharedArrayBufferIssue.ts +1 -1
- package/front_end/models/issues_manager/SharedDictionaryIssue.ts +1 -1
- package/front_end/models/issues_manager/UnencodedDigestIssue.test.ts +49 -0
- package/front_end/models/issues_manager/UnencodedDigestIssue.ts +88 -0
- package/front_end/models/issues_manager/descriptions/sriSignatureInputHeaderValueNotInnerList.md +1 -1
- package/front_end/models/issues_manager/descriptions/sriValidationFailedIntegrityMismatch.md +1 -3
- package/front_end/models/issues_manager/descriptions/summaryElementAccessibilityInteractiveContentSummaryDescendant.md +3 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestLength.md +12 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestIncorrectDigestType.md +17 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestMalformedDictionary.md +14 -0
- package/front_end/models/issues_manager/descriptions/unencodedDigestUnknownAlgorithm.md +15 -0
- package/front_end/models/issues_manager/descriptions/userReidentificationBlocked.md +1 -1
- package/front_end/models/issues_manager/issues_manager.ts +4 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +201 -127
- package/front_end/models/live-metrics/web-vitals-injected/OnEachInteraction.ts +1 -1
- package/front_end/models/live-metrics/web-vitals-injected/rollup.config.mjs +1 -1
- package/front_end/models/logs/NetworkLog.ts +74 -83
- package/front_end/models/logs/logs-meta.ts +4 -4
- package/front_end/models/persistence/AutomaticFileSystemManager.test.ts +0 -39
- package/front_end/models/persistence/AutomaticFileSystemManager.ts +14 -21
- package/front_end/models/persistence/EditFileSystemView.ts +6 -6
- package/front_end/models/persistence/IsolatedFileSystem.ts +27 -9
- package/front_end/models/persistence/IsolatedFileSystemManager.ts +16 -3
- package/front_end/models/persistence/NetworkPersistenceManager.ts +7 -3
- package/front_end/models/persistence/PersistenceAction.test.ts +10 -7
- package/front_end/models/persistence/PersistenceActions.ts +26 -15
- package/front_end/models/persistence/PersistenceImpl.test.ts +2 -1
- package/front_end/models/persistence/PersistenceImpl.ts +7 -4
- package/front_end/models/persistence/PersistenceUtils.ts +10 -7
- package/front_end/models/persistence/PlatformFileSystem.ts +11 -2
- package/front_end/models/persistence/WorkspaceSettingsTab.ts +6 -6
- package/front_end/models/persistence/editFileSystemView.css +17 -15
- package/front_end/models/persistence/persistence-meta.ts +10 -10
- package/front_end/models/persistence/workspaceSettingsTab.css +29 -27
- package/front_end/models/project_settings/ProjectSettingsModel.ts +2 -2
- package/front_end/models/source_map_scopes/NamesResolver.test.ts +3 -2
- package/front_end/models/source_map_scopes/NamesResolver.ts +1 -1
- package/front_end/models/source_map_scopes/ScopeChainModel.test.ts +2 -1
- package/front_end/models/stack_trace/README.md +14 -0
- package/front_end/models/stack_trace/StackTrace.ts +35 -0
- package/front_end/models/stack_trace/StackTraceImpl.test.ts +74 -0
- package/front_end/models/stack_trace/StackTraceImpl.ts +82 -0
- package/front_end/models/stack_trace/StackTraceModel.test.ts +296 -0
- package/front_end/models/stack_trace/StackTraceModel.ts +127 -0
- package/front_end/models/stack_trace/Trie.test.ts +129 -0
- package/front_end/models/stack_trace/Trie.ts +154 -0
- package/front_end/models/stack_trace/stack_trace.ts +9 -0
- package/front_end/models/stack_trace/stack_trace_impl.ts +13 -0
- package/front_end/models/text_utils/ContentProvider.ts +1 -3
- package/front_end/models/text_utils/StaticContentProvider.test.ts +1 -1
- package/front_end/models/text_utils/StaticContentProvider.ts +1 -5
- package/front_end/models/text_utils/TextUtils.ts +2 -3
- package/front_end/models/trace/LanternComputationData.ts +1 -0
- package/front_end/models/trace/ModelImpl.ts +18 -7
- package/front_end/models/trace/Processor.test.ts +15 -14
- package/front_end/models/trace/Processor.ts +49 -32
- package/front_end/models/trace/extras/ScriptDuplication.test.ts +13 -10
- package/front_end/models/trace/extras/StackTraceForEvent.test.ts +10 -8
- package/front_end/models/trace/extras/ThirdParties.ts +2 -3
- package/front_end/models/trace/extras/TraceTree.ts +7 -6
- package/front_end/models/trace/extras/extras.ts +0 -2
- package/front_end/models/trace/handlers/AnimationFramesHandler.test.ts +5 -5
- package/front_end/models/trace/handlers/AnimationFramesHandler.ts +10 -0
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.test.ts +177 -85
- package/front_end/models/trace/handlers/ExtensionTraceDataHandler.ts +28 -27
- package/front_end/models/trace/handlers/FramesHandler.test.ts +2 -7
- package/front_end/models/trace/handlers/FramesHandler.ts +46 -37
- package/front_end/models/trace/handlers/ImagePaintingHandler.test.ts +41 -0
- package/front_end/models/trace/handlers/ImagePaintingHandler.ts +44 -1
- package/front_end/models/trace/handlers/InitiatorsHandler.test.ts +62 -15
- package/front_end/models/trace/handlers/InitiatorsHandler.ts +24 -0
- package/front_end/models/trace/handlers/LayoutShiftsHandler.test.ts +6 -18
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +21 -17
- package/front_end/models/trace/handlers/MetaHandler.test.ts +12 -0
- package/front_end/models/trace/handlers/MetaHandler.ts +5 -4
- package/front_end/models/trace/handlers/NetworkRequestsHandler.test.ts +21 -21
- package/front_end/models/trace/handlers/NetworkRequestsHandler.ts +79 -32
- package/front_end/models/trace/handlers/PageLoadMetricsHandler.test.ts +6 -18
- package/front_end/models/trace/handlers/RendererHandler.test.ts +26 -39
- package/front_end/models/trace/handlers/RendererHandler.ts +10 -17
- package/front_end/models/trace/handlers/SamplesHandler.test.ts +3 -4
- package/front_end/models/trace/handlers/SamplesHandler.ts +13 -12
- package/front_end/models/trace/handlers/ScriptsHandler.test.ts +1 -1
- package/front_end/models/trace/handlers/ScriptsHandler.ts +8 -4
- package/front_end/models/trace/handlers/SelectorStatsHandler.test.ts +1 -3
- package/front_end/models/trace/handlers/SelectorStatsHandler.ts +65 -0
- package/front_end/models/trace/handlers/UserInteractionsHandler.test.ts +4 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +4 -2
- package/front_end/models/trace/handlers/UserTimingsHandler.test.ts +326 -0
- package/front_end/models/trace/handlers/UserTimingsHandler.ts +61 -24
- package/front_end/models/trace/handlers/helpers.test.ts +7 -6
- package/front_end/models/trace/handlers/helpers.ts +19 -14
- package/front_end/models/trace/handlers/types.ts +5 -1
- package/front_end/models/trace/helpers/SamplesIntegrator.test.ts +3 -3
- package/front_end/models/trace/helpers/SamplesIntegrator.ts +24 -33
- package/front_end/models/trace/helpers/SyntheticEvents.ts +2 -2
- package/front_end/models/trace/helpers/Timing.ts +66 -3
- package/front_end/models/trace/helpers/Trace.test.ts +6 -7
- package/front_end/models/trace/helpers/Trace.ts +47 -19
- package/front_end/models/trace/helpers/TreeHelpers.test.ts +0 -8
- package/front_end/models/trace/helpers/TreeHelpers.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.test.ts +10 -7
- package/front_end/models/trace/insights/CLSCulprits.ts +85 -23
- package/front_end/models/trace/insights/Cache.ts +12 -0
- package/front_end/models/trace/insights/Common.test.ts +3 -3
- package/front_end/models/trace/insights/Common.ts +56 -22
- package/front_end/models/trace/insights/DOMSize.test.ts +4 -1
- package/front_end/models/trace/insights/DOMSize.ts +48 -1
- package/front_end/models/trace/insights/DocumentLatency.test.ts +5 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +59 -4
- package/front_end/models/trace/insights/DuplicatedJavaScript.test.ts +2 -3
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +15 -4
- package/front_end/models/trace/insights/FontDisplay.test.ts +1 -1
- package/front_end/models/trace/insights/FontDisplay.ts +8 -0
- package/front_end/models/trace/insights/ForcedReflow.ts +25 -4
- package/front_end/models/trace/insights/{InteractionToNextPaint.test.ts → INPBreakdown.test.ts} +2 -2
- package/front_end/models/trace/insights/{InteractionToNextPaint.ts → INPBreakdown.ts} +63 -16
- package/front_end/models/trace/insights/ImageDelivery.ts +39 -7
- package/front_end/models/trace/insights/LCPBreakdown.test.ts +100 -0
- package/front_end/models/trace/insights/LCPBreakdown.ts +255 -0
- package/front_end/models/trace/insights/LCPDiscovery.ts +84 -8
- package/front_end/models/trace/insights/LegacyJavaScript.ts +14 -4
- package/front_end/models/trace/insights/Models.ts +2 -2
- package/front_end/models/trace/insights/ModernHTTP.test.ts +3 -2
- package/front_end/models/trace/insights/ModernHTTP.ts +35 -18
- package/front_end/models/trace/insights/NetworkDependencyTree.test.ts +10 -1
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +41 -13
- package/front_end/models/trace/insights/RenderBlocking.test.ts +8 -12
- package/front_end/models/trace/insights/RenderBlocking.ts +13 -1
- package/front_end/models/trace/insights/SlowCSSSelector.test.ts +12 -34
- package/front_end/models/trace/insights/SlowCSSSelector.ts +46 -27
- package/front_end/models/trace/insights/ThirdParties.test.ts +1 -1
- package/front_end/models/trace/insights/ThirdParties.ts +36 -0
- package/front_end/models/trace/insights/Viewport.test.ts +16 -1
- package/front_end/models/trace/insights/Viewport.ts +41 -3
- package/front_end/models/trace/insights/types.ts +5 -2
- package/front_end/models/trace/lantern/core/NetworkAnalyzer.test.ts +4 -0
- package/front_end/models/trace/lantern/graph/BaseNode.ts +1 -1
- package/front_end/models/trace/lantern/simulation/SimulationTimingMap.ts +1 -1
- package/front_end/models/trace/trace.ts +0 -2
- package/front_end/models/trace/types/Configuration.ts +8 -0
- package/front_end/models/trace/types/Extensions.ts +24 -3
- package/front_end/models/trace/types/File.ts +5 -2
- package/front_end/models/trace/types/Overlays.ts +140 -0
- package/front_end/models/trace/types/Timing.ts +1 -0
- package/front_end/models/trace/types/TraceEvents.test.ts +2 -1
- package/front_end/models/trace/types/TraceEvents.ts +98 -62
- package/front_end/models/trace/types/types.ts +1 -0
- package/front_end/models/workspace/FileManager.ts +5 -3
- package/front_end/models/{bindings → workspace}/IgnoreListManager.test.ts +11 -7
- package/front_end/models/{bindings → workspace}/IgnoreListManager.ts +36 -33
- package/front_end/models/workspace/UISourceCode.test.ts +18 -17
- package/front_end/models/workspace/UISourceCode.ts +17 -7
- package/front_end/models/workspace/WorkspaceImpl.ts +1 -1
- package/front_end/models/workspace/workspace.ts +2 -0
- package/front_end/models/workspace_diff/WorkspaceDiff.test.ts +2 -0
- package/front_end/models/workspace_diff/WorkspaceDiff.ts +7 -2
- package/front_end/panels/accessibility/ARIAAttributesView.test.ts +101 -0
- package/front_end/panels/accessibility/ARIAAttributesView.ts +16 -4
- package/front_end/panels/accessibility/AXBreadcrumbsPane.ts +12 -9
- package/front_end/panels/accessibility/AccessibilityNodeView.ts +31 -28
- package/front_end/panels/accessibility/AccessibilitySidebarView.ts +8 -12
- package/front_end/panels/accessibility/AccessibilityStrings.ts +87 -87
- package/front_end/panels/accessibility/AccessibilitySubPane.ts +6 -6
- package/front_end/panels/accessibility/SourceOrderView.ts +95 -61
- package/front_end/panels/accessibility/accessibilityProperties.css +5 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.snapshot.txt +32 -0
- package/front_end/panels/ai_assistance/AiAssistancePanel.test.ts +465 -377
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +289 -339
- package/front_end/panels/ai_assistance/PatchWidget.ts +30 -29
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.test.ts +11 -1
- package/front_end/panels/ai_assistance/SelectWorkspaceDialog.ts +29 -19
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -0
- package/front_end/panels/ai_assistance/ai_assistance-meta.ts +40 -20
- package/front_end/panels/ai_assistance/components/ChatView.test.ts +1 -0
- package/front_end/panels/ai_assistance/components/ChatView.ts +55 -44
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +10 -24
- package/front_end/panels/ai_assistance/components/UserActionRow.test.ts +4 -0
- package/front_end/panels/ai_assistance/components/UserActionRow.ts +25 -3
- package/front_end/panels/ai_assistance/components/chatView.css +0 -9
- package/front_end/panels/ai_assistance/components/exploreWidget.css +104 -102
- package/front_end/panels/ai_assistance/components/userActionRow.css +95 -94
- package/front_end/panels/ai_assistance/selectWorkspaceDialog.css +70 -69
- package/front_end/panels/animation/AnimationGroupPreviewUI.ts +1 -10
- package/front_end/panels/animation/AnimationTimeline.test.ts +6 -13
- package/front_end/panels/animation/AnimationTimeline.ts +183 -169
- package/front_end/panels/animation/AnimationUI.ts +4 -4
- package/front_end/panels/animation/animation.ts +0 -2
- package/front_end/panels/animation/animationTimeline.css +0 -67
- package/front_end/panels/application/AppManifestView.test.ts +21 -0
- package/front_end/panels/application/AppManifestView.ts +158 -139
- package/front_end/panels/application/ApplicationPanelSidebar.test.ts +13 -8
- package/front_end/panels/application/ApplicationPanelSidebar.ts +53 -54
- package/front_end/panels/application/BackForwardCacheTreeElement.ts +1 -1
- package/front_end/panels/application/BackgroundServiceView.test.ts +4 -8
- package/front_end/panels/application/BackgroundServiceView.ts +46 -44
- package/front_end/panels/application/CookieItemsView.ts +13 -14
- package/front_end/panels/application/DOMStorageItemsView.ts +5 -5
- package/front_end/panels/application/ExtensionStorageItemsView.ts +3 -3
- package/front_end/panels/application/IndexedDBModel.test.ts +2 -2
- package/front_end/panels/application/IndexedDBModel.ts +3 -0
- package/front_end/panels/application/IndexedDBViews.ts +58 -32
- package/front_end/panels/application/InterestGroupStorageModel.ts +3 -0
- package/front_end/panels/application/InterestGroupStorageView.ts +4 -4
- package/front_end/panels/application/InterestGroupTreeElement.ts +1 -1
- package/front_end/panels/application/KeyValueStorageItemsView.ts +10 -10
- package/front_end/panels/application/OpenedWindowDetailsView.ts +18 -18
- package/front_end/panels/application/PreloadingTreeElement.ts +5 -5
- package/front_end/panels/application/ReportingApiTreeElement.ts +1 -1
- package/front_end/panels/application/ReportingApiView.test.ts +161 -30
- package/front_end/panels/application/ReportingApiView.ts +153 -50
- package/front_end/panels/application/ServiceWorkerCacheTreeElement.ts +5 -5
- package/front_end/panels/application/ServiceWorkerCacheViews.ts +20 -17
- package/front_end/panels/application/ServiceWorkerUpdateCycleView.ts +7 -7
- package/front_end/panels/application/ServiceWorkersView.ts +40 -76
- package/front_end/panels/application/SharedStorageEventsView.test.ts +2 -2
- package/front_end/panels/application/SharedStorageEventsView.ts +10 -20
- package/front_end/panels/application/SharedStorageItemsView.ts +11 -11
- package/front_end/panels/application/SharedStorageListTreeElement.ts +1 -1
- package/front_end/panels/application/SharedStorageModel.ts +3 -0
- package/front_end/panels/application/StorageBucketsTreeElement.test.ts +5 -4
- package/front_end/panels/application/StorageBucketsTreeElement.ts +4 -4
- package/front_end/panels/application/StorageItemsToolbar.ts +7 -7
- package/front_end/panels/application/StorageView.test.ts +5 -1
- package/front_end/panels/application/StorageView.ts +15 -13
- package/front_end/panels/application/application-meta.ts +7 -7
- package/front_end/panels/application/application.ts +0 -2
- package/front_end/panels/application/components/BackForwardCacheStrings.ts +5 -0
- package/front_end/panels/application/components/BackForwardCacheView.ts +11 -37
- package/front_end/panels/application/components/BounceTrackingMitigationsView.ts +1 -0
- package/front_end/panels/application/components/EndpointsGrid.ts +6 -2
- package/front_end/panels/application/components/FrameDetailsView.test.ts +4 -2
- package/front_end/panels/application/components/FrameDetailsView.ts +88 -57
- package/front_end/panels/application/components/InterestGroupAccessGrid.ts +9 -10
- package/front_end/panels/application/components/OriginTrialTreeView.ts +13 -22
- package/front_end/panels/application/components/PermissionsPolicySection.ts +11 -16
- package/front_end/panels/application/components/ProtocolHandlersView.ts +10 -10
- package/front_end/panels/application/components/ReportsGrid.ts +10 -11
- package/front_end/panels/application/components/SharedStorageAccessGrid.test.ts +4 -4
- package/front_end/panels/application/components/SharedStorageAccessGrid.ts +107 -101
- package/front_end/panels/application/components/SharedStorageMetadataView.ts +8 -8
- package/front_end/panels/application/components/StackTrace.ts +6 -12
- package/front_end/panels/application/components/StorageMetadataView.ts +22 -26
- package/front_end/panels/application/components/TrustTokensView.ts +3 -3
- package/front_end/panels/application/components/frameDetailsReportView.css +1 -1
- package/front_end/panels/application/components/sharedStorageAccessGrid.css +19 -17
- package/front_end/panels/application/preloading/PreloadingView.ts +29 -24
- package/front_end/panels/application/preloading/components/MismatchedPreloadingGrid.ts +9 -9
- package/front_end/panels/application/preloading/components/PreloadingDetailsReportView.ts +22 -22
- package/front_end/panels/application/preloading/components/PreloadingDisabledInfobar.ts +28 -29
- package/front_end/panels/application/preloading/components/PreloadingGrid.ts +5 -7
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.test.ts +2 -2
- package/front_end/panels/application/preloading/components/PreloadingMismatchedHeadersGrid.ts +4 -4
- package/front_end/panels/application/preloading/components/PreloadingString.ts +34 -34
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.test.ts +28 -1
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.ts +4 -10
- package/front_end/panels/application/preloading/components/RuleSetGrid.test.ts +21 -0
- package/front_end/panels/application/preloading/components/RuleSetGrid.ts +10 -10
- package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +22 -23
- package/front_end/panels/application/resourcesSidebar.css +0 -4
- package/front_end/panels/autofill/AutofillView.test.ts +188 -259
- package/front_end/panels/autofill/AutofillView.ts +207 -217
- package/front_end/panels/autofill/autofill-meta.ts +3 -4
- package/front_end/panels/autofill/autofillView.css +85 -82
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.test.ts +179 -0
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +146 -35
- package/front_end/panels/browser_debugger/DOMBreakpointsSidebarPane.ts +27 -27
- package/front_end/panels/browser_debugger/ObjectEventListenersSidebarPane.ts +3 -2
- package/front_end/panels/browser_debugger/XHRBreakpointsSidebarPane.ts +16 -14
- package/front_end/panels/browser_debugger/browser_debugger-meta.ts +17 -17
- package/front_end/panels/browser_debugger/browser_debugger.ts +2 -0
- package/front_end/panels/changes/ChangesSidebar.ts +7 -7
- package/front_end/panels/changes/ChangesView.ts +6 -5
- package/front_end/panels/changes/CombinedDiffView.test.ts +2 -0
- package/front_end/panels/changes/CombinedDiffView.ts +2 -2
- package/front_end/panels/common/AiCodeCompletionDisclaimer.test.ts +57 -0
- package/front_end/panels/common/AiCodeCompletionDisclaimer.ts +186 -0
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.test.ts +85 -0
- package/front_end/panels/common/AiCodeCompletionSummaryToolbar.ts +139 -0
- package/front_end/panels/common/AiCodeCompletionTeaser.test.ts +98 -0
- package/front_end/panels/common/AiCodeCompletionTeaser.ts +258 -0
- package/front_end/panels/common/FreDialog.ts +139 -0
- package/front_end/panels/common/aiCodeCompletionDisclaimer.css +57 -0
- package/front_end/panels/common/aiCodeCompletionSummaryToolbar.css +101 -0
- package/front_end/panels/common/aiCodeCompletionTeaser.css +42 -0
- package/front_end/panels/common/common.css +0 -83
- package/front_end/panels/common/common.ts +8 -107
- package/front_end/panels/common/freDialog.css +88 -0
- package/front_end/panels/console/ConsoleContextSelector.ts +5 -5
- package/front_end/panels/console/ConsoleFormat.test.ts +1 -1
- package/front_end/panels/console/ConsolePanel.ts +1 -2
- package/front_end/panels/console/ConsolePinPane.ts +9 -9
- package/front_end/panels/console/ConsolePrompt.test.ts +47 -1
- package/front_end/panels/console/ConsolePrompt.ts +188 -19
- package/front_end/panels/console/ConsoleSidebar.test.ts +130 -0
- package/front_end/panels/console/ConsoleSidebar.ts +170 -207
- package/front_end/panels/console/ConsoleView.test.ts +4 -4
- package/front_end/panels/console/ConsoleView.ts +146 -54
- package/front_end/panels/console/ConsoleViewMessage.test.ts +1 -1
- package/front_end/panels/console/ConsoleViewMessage.ts +66 -71
- package/front_end/panels/console/console-meta.ts +27 -27
- package/front_end/panels/console/consoleSidebar.css +2 -0
- package/front_end/panels/console/consoleView.css +22 -15
- package/front_end/panels/console_counters/WarningErrorCounter.ts +133 -100
- package/front_end/panels/coverage/CoverageDecorationManager.test.ts +2 -1
- package/front_end/panels/coverage/CoverageListView.ts +30 -30
- package/front_end/panels/coverage/CoverageView.test.ts +3 -2
- package/front_end/panels/coverage/CoverageView.ts +35 -34
- package/front_end/panels/coverage/coverage-meta.ts +7 -7
- package/front_end/panels/css_overview/CSSOverviewCompletedView.ts +49 -49
- package/front_end/panels/css_overview/CSSOverviewPanel.test.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewPanel.ts +1 -1
- package/front_end/panels/css_overview/CSSOverviewProcessingView.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewSidebarPanel.ts +3 -3
- package/front_end/panels/css_overview/CSSOverviewStartView.ts +8 -8
- package/front_end/panels/css_overview/CSSOverviewUnusedDeclarations.ts +7 -7
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +289 -287
- package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +43 -42
- package/front_end/panels/css_overview/cssOverviewStartView.css +68 -66
- package/front_end/panels/css_overview/css_overview-meta.ts +2 -2
- package/front_end/panels/developer_resources/DeveloperResourcesListView.ts +14 -14
- package/front_end/panels/developer_resources/DeveloperResourcesView.ts +5 -5
- package/front_end/panels/developer_resources/developerResourcesListView.css +19 -18
- package/front_end/panels/developer_resources/developerResourcesView.css +32 -30
- package/front_end/panels/elements/AccessibilityTreeView.ts +2 -1
- package/front_end/panels/elements/CSSRuleValidator.test.ts +39 -0
- package/front_end/panels/elements/CSSRuleValidator.ts +41 -37
- package/front_end/panels/elements/CSSRuleValidatorHelper.ts +8 -0
- package/front_end/panels/elements/CSSValueTraceView.test.ts +2 -1
- package/front_end/panels/elements/CSSValueTraceView.ts +1 -2
- package/front_end/panels/elements/ClassesPaneWidget.ts +5 -3
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +18 -9
- package/front_end/panels/elements/ComputedStyleWidget.ts +4 -3
- package/front_end/panels/elements/DOMLinkifier.ts +6 -4
- package/front_end/panels/elements/DOMTreeWidget.test.ts +58 -0
- package/front_end/panels/elements/ElementIssueUtils.ts +14 -9
- package/front_end/panels/elements/ElementStatePaneWidget.ts +3 -3
- package/front_end/panels/elements/ElementsPanel.test.ts +69 -2
- package/front_end/panels/elements/ElementsPanel.ts +105 -187
- package/front_end/panels/elements/ElementsSidebarPane.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.test.ts +401 -0
- package/front_end/panels/elements/ElementsTreeElement.ts +434 -82
- package/front_end/panels/elements/ElementsTreeOutline.test.ts +9 -6
- package/front_end/panels/elements/ElementsTreeOutline.ts +425 -258
- package/front_end/panels/elements/ElementsTreeOutlineRenderer.ts +80 -0
- package/front_end/panels/elements/EventListenersWidget.test.ts +129 -0
- package/front_end/panels/elements/EventListenersWidget.ts +112 -78
- package/front_end/panels/elements/ImagePreviewPopover.ts +1 -1
- package/front_end/panels/elements/InspectElementModeController.test.ts +77 -2
- package/front_end/panels/elements/InspectElementModeController.ts +13 -2
- package/front_end/panels/elements/LayersWidget.ts +95 -63
- package/front_end/panels/elements/{components/LayoutPane.test.ts → LayoutPane.test.ts} +60 -49
- package/front_end/panels/elements/LayoutPane.ts +593 -0
- package/front_end/panels/elements/MarkerDecorator.ts +2 -2
- package/front_end/panels/elements/MetricsSidebarPane.ts +6 -6
- package/front_end/panels/elements/NodeStackTraceWidget.ts +16 -14
- package/front_end/panels/elements/PlatformFontsWidget.ts +8 -8
- package/front_end/panels/elements/PropertiesWidget.ts +2 -2
- package/front_end/panels/elements/PropertyRenderer.test.ts +1 -1
- package/front_end/panels/elements/PropertyRenderer.ts +8 -11
- package/front_end/panels/elements/ShortcutTreeElement.ts +157 -0
- package/front_end/panels/elements/StyleEditorWidget.ts +1 -1
- package/front_end/panels/elements/StylePropertiesSection.test.ts +10 -10
- package/front_end/panels/elements/StylePropertiesSection.ts +42 -44
- package/front_end/panels/elements/StylePropertyHighlighter.test.ts +32 -21
- package/front_end/panels/elements/StylePropertyHighlighter.ts +9 -11
- package/front_end/panels/elements/StylePropertyTreeElement.test.ts +111 -53
- package/front_end/panels/elements/StylePropertyTreeElement.ts +166 -100
- package/front_end/panels/elements/StylesSidebarPane.ts +47 -48
- package/front_end/panels/elements/TopLayerContainer.ts +8 -7
- package/front_end/panels/elements/WebCustomData.test.ts +2 -2
- package/front_end/panels/elements/components/AccessibilityTreeNode.ts +1 -1
- package/front_end/panels/elements/components/AdornerManager.ts +15 -0
- package/front_end/panels/elements/components/CSSHintDetailsView.ts +1 -1
- package/front_end/panels/elements/components/CSSPropertyDocsView.test.ts +101 -2
- package/front_end/panels/elements/components/CSSPropertyDocsView.ts +188 -5
- package/front_end/panels/elements/components/CSSPropertyIconResolver.test.ts +1 -1
- package/front_end/panels/elements/components/CSSPropertyIconResolver.ts +2 -2
- package/front_end/panels/elements/components/CSSVariableValueView.ts +5 -5
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +2 -7
- package/front_end/panels/elements/components/ElementsTreeExpandButton.ts +1 -1
- package/front_end/panels/elements/components/QueryContainer.ts +1 -4
- package/front_end/panels/elements/components/components.ts +0 -4
- package/front_end/panels/elements/components/cssPropertyDocsView.css +12 -1
- package/front_end/panels/elements/components/cssVariableValueView.css +1 -0
- package/front_end/panels/elements/domLinkifier.css +36 -35
- package/front_end/panels/elements/elementStatePaneWidget.css +46 -45
- package/front_end/panels/elements/elements-meta.ts +4 -13
- package/front_end/panels/elements/elements.ts +4 -3
- package/front_end/panels/elements/elementsTreeOutline.css +2 -1
- package/front_end/panels/elements/layersWidget.css +2 -11
- package/front_end/panels/elements/layoutPane.css +145 -0
- package/front_end/panels/elements/metricsSidebarPane.css +1 -1
- package/front_end/panels/elements/nodeStackTraceWidget.css +5 -4
- package/front_end/panels/elements/platformFontsWidget.css +32 -31
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +2 -2
- package/front_end/panels/elements/stylesSidebarPane.css +1 -0
- package/front_end/panels/emulation/DeviceModeToolbar.ts +13 -50
- package/front_end/panels/emulation/DeviceModeView.ts +3 -4
- package/front_end/panels/emulation/InspectedPagePlaceholder.ts +1 -1
- package/front_end/panels/emulation/MediaQueryInspector.ts +4 -2
- package/front_end/panels/emulation/emulation-meta.ts +7 -7
- package/front_end/panels/event_listeners/EventListenersView.test.ts +4 -4
- package/front_end/panels/event_listeners/EventListenersView.ts +34 -31
- package/front_end/panels/explain/PromptBuilder.test.ts +7 -2
- package/front_end/panels/explain/PromptBuilder.ts +3 -1
- package/front_end/panels/explain/components/ConsoleInsight.test.ts +14 -10
- package/front_end/panels/explain/components/ConsoleInsight.ts +13 -34
- package/front_end/panels/explain/explain-meta.ts +3 -3
- package/front_end/panels/issues/AffectedBlockedByResponseView.ts +4 -4
- package/front_end/panels/issues/AffectedCookiesView.ts +6 -6
- package/front_end/panels/issues/AffectedDescendantsWithinSelectElementView.ts +6 -6
- package/front_end/panels/issues/AffectedDirectivesView.ts +9 -9
- package/front_end/panels/issues/AffectedDocumentsInQuirksModeView.ts +4 -4
- package/front_end/panels/issues/AffectedElementsView.ts +1 -1
- package/front_end/panels/issues/AffectedElementsWithLowContrastView.ts +6 -6
- package/front_end/panels/issues/AffectedHeavyAdView.ts +7 -7
- package/front_end/panels/issues/AffectedMetadataAllowedSitesView.ts +1 -1
- package/front_end/panels/issues/AffectedResourcesView.ts +6 -6
- package/front_end/panels/issues/AffectedSharedArrayBufferIssueDetailsView.ts +10 -10
- package/front_end/panels/issues/AffectedSourcesView.ts +1 -1
- package/front_end/panels/issues/AffectedTrackingSitesView.ts +1 -1
- package/front_end/panels/issues/CorsIssueDetailsView.ts +27 -27
- package/front_end/panels/issues/GenericIssueDetailsView.ts +3 -3
- package/front_end/panels/issues/HiddenIssuesRow.ts +55 -29
- package/front_end/panels/issues/IssueAggregator.ts +5 -11
- package/front_end/panels/issues/IssueKindView.ts +2 -2
- package/front_end/panels/issues/IssueView.ts +13 -13
- package/front_end/panels/issues/IssuesPane.ts +5 -4
- package/front_end/panels/issues/components/HideIssuesMenu.ts +1 -1
- package/front_end/panels/issues/issues-meta.ts +2 -2
- package/front_end/panels/js_timeline/js_timeline-meta.ts +6 -6
- package/front_end/panels/layer_viewer/LayerDetailsView.ts +43 -41
- package/front_end/panels/layer_viewer/LayerTreeOutline.ts +7 -7
- package/front_end/panels/layer_viewer/LayerViewHost.ts +1 -1
- package/front_end/panels/layer_viewer/Layers3DView.ts +19 -13
- package/front_end/panels/layer_viewer/PaintProfilerView.ts +9 -9
- package/front_end/panels/layer_viewer/TransformController.ts +14 -8
- package/front_end/panels/layer_viewer/layer_viewer-meta.ts +9 -9
- package/front_end/panels/layers/LayersPanel.ts +3 -3
- package/front_end/panels/layers/layers-meta.ts +2 -2
- package/front_end/panels/lighthouse/LighthouseController.ts +27 -27
- package/front_end/panels/lighthouse/LighthousePanel.ts +7 -7
- package/front_end/panels/lighthouse/LighthouseProtocolService.ts +31 -33
- package/front_end/panels/lighthouse/LighthouseReportRenderer.ts +4 -2
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -4
- package/front_end/panels/lighthouse/LighthouseStartView.ts +4 -3
- package/front_end/panels/lighthouse/LighthouseStatusView.ts +31 -31
- package/front_end/panels/lighthouse/lighthouse-meta.ts +1 -1
- package/front_end/panels/lighthouse/lighthousePanel.css +9 -0
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorController.ts +2 -2
- package/front_end/panels/linear_memory_inspector/LinearMemoryInspectorPane.ts +5 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryHighlightChipList.ts +6 -10
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryInspector.ts +3 -3
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryNavigator.ts +6 -6
- package/front_end/panels/linear_memory_inspector/components/LinearMemoryValueInterpreter.ts +2 -2
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplay.ts +6 -7
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterDisplayUtils.ts +1 -1
- package/front_end/panels/linear_memory_inspector/components/ValueInterpreterSettings.ts +1 -1
- package/front_end/panels/linear_memory_inspector/linear_memory_inspector-meta.ts +2 -2
- package/front_end/panels/media/EventDisplayTable.ts +5 -7
- package/front_end/panels/media/EventTimelineView.ts +4 -4
- package/front_end/panels/media/MainView.test.ts +1 -1
- package/front_end/panels/media/MainView.ts +4 -4
- package/front_end/panels/media/MediaModel.ts +2 -2
- package/front_end/panels/media/PlayerDetailView.ts +8 -8
- package/front_end/panels/media/PlayerListView.ts +8 -8
- package/front_end/panels/media/PlayerMessagesView.ts +15 -17
- package/front_end/panels/media/PlayerPropertiesView.ts +66 -51
- package/front_end/panels/media/TickingFlameChart.ts +6 -5
- package/front_end/panels/media/media-meta.ts +3 -3
- package/front_end/panels/mobile_throttling/CalibrationController.ts +3 -4
- package/front_end/panels/mobile_throttling/MobileThrottlingSelector.ts +3 -3
- package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +4 -4
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +189 -51
- package/front_end/panels/mobile_throttling/ThrottlingManager.test.ts +37 -1
- package/front_end/panels/mobile_throttling/ThrottlingManager.ts +114 -126
- package/front_end/panels/mobile_throttling/ThrottlingPresets.ts +8 -8
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.test.ts +115 -0
- package/front_end/panels/mobile_throttling/ThrottlingSettingsTab.ts +178 -143
- package/front_end/panels/mobile_throttling/mobile_throttling-meta.ts +6 -6
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +30 -36
- package/front_end/panels/network/BinaryResourceView.ts +7 -7
- package/front_end/panels/network/BlockedURLsPane.ts +18 -17
- package/front_end/panels/network/EventSourceMessagesView.ts +9 -10
- package/front_end/panels/network/NetworkConfigView.test.ts +35 -0
- package/front_end/panels/network/NetworkConfigView.ts +19 -17
- package/front_end/panels/network/NetworkDataGridNode.test.ts +19 -8
- package/front_end/panels/network/NetworkDataGridNode.ts +129 -90
- package/front_end/panels/network/NetworkItemView.test.ts +3 -3
- package/front_end/panels/network/NetworkItemView.ts +79 -79
- package/front_end/panels/network/NetworkLogView.test.ts +61 -23
- package/front_end/panels/network/NetworkLogView.ts +207 -130
- package/front_end/panels/network/NetworkLogViewColumns.ts +60 -63
- package/front_end/panels/network/NetworkManageCustomHeadersView.ts +5 -5
- package/front_end/panels/network/NetworkPanel.test.ts +3 -3
- package/front_end/panels/network/NetworkPanel.ts +69 -68
- package/front_end/panels/network/NetworkSearchScope.ts +1 -1
- package/front_end/panels/network/NetworkTimeCalculator.ts +35 -40
- package/front_end/panels/network/NetworkWaterfallColumn.ts +2 -12
- package/front_end/panels/network/RequestCookiesView.ts +10 -11
- package/front_end/panels/network/RequestHTMLView.ts +2 -2
- package/front_end/panels/network/RequestInitiatorView.ts +16 -16
- package/front_end/panels/network/RequestPayloadView.ts +12 -13
- package/front_end/panels/network/RequestPreviewView.ts +3 -4
- package/front_end/panels/network/RequestResponseView.test.ts +36 -0
- package/front_end/panels/network/RequestResponseView.ts +5 -5
- package/front_end/panels/network/RequestTimingView.ts +54 -54
- package/front_end/panels/network/ResourceChunkView.ts +13 -13
- package/front_end/panels/network/ResourceDirectSocketChunkView.ts +26 -17
- package/front_end/panels/network/ResourceWebSocketFrameView.ts +9 -9
- package/front_end/panels/network/SignedExchangeInfoView.ts +24 -24
- package/front_end/panels/network/binaryResourceView.css +1 -0
- package/front_end/panels/network/components/DirectSocketConnectionView.ts +18 -16
- package/front_end/panels/network/components/HeaderSectionRow.ts +17 -42
- package/front_end/panels/network/components/RequestHeaderSection.ts +6 -11
- package/front_end/panels/network/components/RequestHeadersView.css +2 -2
- package/front_end/panels/network/components/RequestHeadersView.test.ts +5 -2
- package/front_end/panels/network/components/RequestHeadersView.ts +24 -34
- package/front_end/panels/network/components/RequestTrustTokensView.ts +19 -23
- package/front_end/panels/network/components/ResponseHeaderSection.ts +16 -15
- package/front_end/panels/network/components/WebBundleInfoView.ts +4 -9
- package/front_end/panels/network/network-meta.ts +27 -27
- package/front_end/panels/network/networkConfigView.css +13 -6
- package/front_end/panels/network/networkLogView.css +1 -1
- package/front_end/panels/network/networkPanel.css +3 -2
- package/front_end/panels/network/requestHTMLView.css +9 -8
- package/front_end/panels/network/resourceChunkView.css +21 -28
- package/front_end/panels/performance_monitor/PerformanceMonitor.test.ts +121 -6
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +252 -168
- package/front_end/panels/performance_monitor/performanceMonitor.css +7 -9
- package/front_end/panels/performance_monitor/performance_monitor-meta.ts +7 -7
- package/front_end/panels/profiler/HeapDetachedElementsDataGrid.ts +19 -52
- package/front_end/panels/profiler/HeapDetachedElementsView.ts +9 -6
- package/front_end/panels/profiler/HeapProfileView.ts +24 -24
- package/front_end/panels/profiler/HeapProfilerPanel.ts +1 -1
- package/front_end/panels/profiler/HeapSnapshotDataGrids.ts +20 -20
- package/front_end/panels/profiler/HeapSnapshotGridNodes.ts +27 -27
- package/front_end/panels/profiler/HeapSnapshotProxy.ts +2 -6
- package/front_end/panels/profiler/HeapSnapshotView.ts +59 -56
- package/front_end/panels/profiler/HeapTimelineOverview.ts +1 -2
- package/front_end/panels/profiler/IsolateSelector.ts +16 -16
- package/front_end/panels/profiler/LiveHeapProfileView.ts +14 -14
- package/front_end/panels/profiler/ModuleUIStrings.ts +26 -26
- package/front_end/panels/profiler/ProfileDataGrid.ts +5 -5
- package/front_end/panels/profiler/ProfileHeader.ts +0 -9
- package/front_end/panels/profiler/ProfileLauncherView.ts +6 -6
- package/front_end/panels/profiler/ProfileSidebarTreeElement.ts +1 -1
- package/front_end/panels/profiler/ProfileView.ts +23 -20
- package/front_end/panels/profiler/ProfilesPanel.ts +9 -9
- package/front_end/panels/profiler/heapProfiler.css +8 -0
- package/front_end/panels/profiler/profiler-meta.ts +12 -12
- package/front_end/panels/protocol_monitor/JSONEditor.test.ts +2 -2
- package/front_end/panels/protocol_monitor/JSONEditor.ts +36 -19
- package/front_end/panels/protocol_monitor/ProtocolMonitor.test.ts +105 -103
- package/front_end/panels/protocol_monitor/ProtocolMonitor.ts +24 -25
- package/front_end/panels/protocol_monitor/protocolMonitor.css +15 -9
- package/front_end/panels/protocol_monitor/protocol_monitor-meta.ts +1 -1
- package/front_end/panels/recorder/RecorderController.test.ts +9 -2
- package/front_end/panels/recorder/RecorderController.ts +82 -85
- package/front_end/panels/recorder/components/CreateRecordingView.ts +2 -2
- package/front_end/panels/recorder/components/RecordingListView.test.ts +42 -53
- package/front_end/panels/recorder/components/RecordingListView.ts +141 -125
- package/front_end/panels/recorder/components/RecordingView.test.ts +73 -122
- package/front_end/panels/recorder/components/RecordingView.ts +912 -929
- package/front_end/panels/recorder/components/StepEditor.ts +13 -13
- package/front_end/panels/recorder/components/StepView.ts +23 -24
- package/front_end/panels/recorder/components/recordingListView.css +76 -75
- package/front_end/panels/recorder/components/recordingView.css +303 -308
- package/front_end/panels/recorder/components/stepView.css +197 -196
- package/front_end/panels/recorder/components/timelineSection.css +1 -1
- package/front_end/panels/recorder/injected/rollup.config.mjs +1 -1
- package/front_end/panels/recorder/injected/selectors/ARIASelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/CSSSelector.ts +4 -4
- package/front_end/panels/recorder/injected/selectors/PierceSelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/TextSelector.ts +2 -2
- package/front_end/panels/recorder/injected/selectors/XPath.ts +3 -3
- package/front_end/panels/recorder/models/RecorderSettings.ts +0 -1
- package/front_end/panels/recorder/models/RecordingPlayer.test.ts +48 -68
- package/front_end/panels/recorder/models/RecordingPlayer.ts +9 -9
- package/front_end/panels/recorder/models/RecordingSession.ts +3 -3
- package/front_end/panels/recorder/recorder-meta.ts +5 -5
- package/front_end/panels/recorder/recorderController.css +3 -3
- package/front_end/panels/screencast/ScreencastApp.ts +1 -1
- package/front_end/panels/screencast/ScreencastView.ts +13 -18
- package/front_end/panels/search/SearchResultsPane.ts +8 -8
- package/front_end/panels/search/SearchView.test.ts +2 -2
- package/front_end/panels/search/SearchView.ts +130 -127
- package/front_end/panels/search/searchResultsPane.css +2 -2
- package/front_end/panels/search/searchView.css +2 -2
- package/front_end/panels/security/CookieControlsView.ts +27 -27
- package/front_end/panels/security/CookieReportView.ts +40 -73
- package/front_end/panels/security/IPProtectionTreeElement.ts +21 -0
- package/front_end/panels/security/IPProtectionView.ts +179 -0
- package/front_end/panels/security/SecurityModel.ts +10 -10
- package/front_end/panels/security/SecurityPanel.test.ts +22 -0
- package/front_end/panels/security/SecurityPanel.ts +107 -107
- package/front_end/panels/security/SecurityPanelSidebar.ts +27 -11
- package/front_end/panels/security/ipProtectionView.css +109 -0
- package/front_end/panels/security/security-meta.ts +4 -4
- package/front_end/panels/security/security.ts +2 -0
- package/front_end/panels/sensors/LocationsSettingsTab.ts +32 -31
- package/front_end/panels/sensors/SensorsView.ts +50 -42
- package/front_end/panels/sensors/sensors-meta.ts +20 -20
- package/front_end/panels/settings/AISettingsTab.test.ts +19 -6
- package/front_end/panels/settings/AISettingsTab.ts +118 -72
- package/front_end/panels/settings/FrameworkIgnoreListSettingsTab.ts +22 -20
- package/front_end/panels/settings/KeybindsSettingsTab.ts +31 -30
- package/front_end/panels/settings/SettingsScreen.ts +19 -20
- package/front_end/panels/settings/components/SyncSection.test.ts +43 -9
- package/front_end/panels/settings/components/SyncSection.ts +63 -29
- package/front_end/panels/settings/components/syncSection.css +16 -7
- package/front_end/panels/settings/emulation/DevicesSettingsTab.ts +14 -16
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.test.ts +61 -0
- package/front_end/panels/settings/emulation/components/UserAgentClientHintsForm.ts +134 -28
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +19 -0
- package/front_end/panels/settings/emulation/emulation-meta.ts +2 -2
- package/front_end/panels/settings/settings-meta.ts +12 -12
- package/front_end/panels/settings/settingsScreen.css +0 -1
- package/front_end/panels/snippets/ScriptSnippetFileSystem.ts +5 -5
- package/front_end/panels/snippets/SnippetsQuickOpen.ts +4 -4
- package/front_end/panels/sources/AddSourceMapURLDialog.ts +5 -5
- package/front_end/panels/sources/AiCodeCompletionPlugin.test.ts +119 -0
- package/front_end/panels/sources/AiCodeCompletionPlugin.ts +400 -0
- package/front_end/panels/sources/AiWarningInfobarPlugin.ts +3 -3
- package/front_end/panels/sources/BreakpointEditDialog.ts +13 -11
- package/front_end/panels/sources/{components/BreakpointsView.test.ts → BreakpointsView.test.ts} +237 -225
- package/front_end/panels/sources/{components/BreakpointsView.ts → BreakpointsView.ts} +336 -301
- package/front_end/panels/sources/{components/BreakpointsViewUtils.test.ts → BreakpointsViewUtils.test.ts} +29 -29
- package/front_end/panels/sources/{components/BreakpointsViewUtils.ts → BreakpointsViewUtils.ts} +3 -3
- package/front_end/panels/sources/CSSPlugin.ts +26 -17
- package/front_end/panels/sources/CallStackSidebarPane.ts +34 -58
- package/front_end/panels/sources/CategorizedBreakpointL10n.ts +18 -18
- package/front_end/panels/sources/CoveragePlugin.test.ts +2 -0
- package/front_end/panels/sources/CoveragePlugin.ts +5 -5
- package/front_end/panels/sources/DebuggerPausedMessage.test.ts +2 -0
- package/front_end/panels/sources/DebuggerPausedMessage.ts +33 -39
- package/front_end/panels/sources/DebuggerPlugin.test.ts +4 -3
- package/front_end/panels/sources/DebuggerPlugin.ts +68 -49
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.test.ts +3 -4
- package/front_end/panels/sources/FilteredUISourceCodeListProvider.ts +7 -7
- package/front_end/panels/sources/GoToLineQuickOpen.ts +15 -15
- package/front_end/panels/sources/InplaceFormatterEditorAction.ts +9 -6
- package/front_end/panels/sources/NavigatorView.test.ts +2 -1
- package/front_end/panels/sources/NavigatorView.ts +39 -35
- package/front_end/panels/sources/OpenFileQuickOpen.ts +6 -6
- package/front_end/panels/sources/OutlineQuickOpen.ts +3 -3
- package/front_end/panels/sources/ProfilePlugin.ts +3 -3
- package/front_end/panels/sources/ResourceOriginPlugin.ts +1 -1
- package/front_end/panels/sources/ScopeChainSidebarPane.ts +11 -9
- package/front_end/panels/sources/SnippetsPlugin.ts +2 -2
- package/front_end/panels/sources/SourcesNavigator.test.ts +3 -2
- package/front_end/panels/sources/SourcesNavigator.ts +32 -20
- package/front_end/panels/sources/SourcesPanel.test.ts +90 -0
- package/front_end/panels/sources/SourcesPanel.ts +71 -28
- package/front_end/panels/sources/SourcesSearchScope.ts +1 -1
- package/front_end/panels/sources/SourcesView.test.ts +5 -2
- package/front_end/panels/sources/SourcesView.ts +7 -8
- package/front_end/panels/sources/TabbedEditorContainer.ts +11 -8
- package/front_end/panels/sources/ThreadsSidebarPane.ts +7 -10
- package/front_end/panels/sources/UISourceCodeFrame.test.ts +104 -0
- package/front_end/panels/sources/UISourceCodeFrame.ts +40 -17
- package/front_end/panels/sources/WatchExpressionsSidebarPane.ts +14 -9
- package/front_end/panels/sources/breakpointsView.css +276 -0
- package/front_end/panels/sources/components/HeadersView.ts +17 -13
- package/front_end/panels/sources/components/components.ts +0 -4
- package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
- package/front_end/panels/sources/sources-meta.ts +103 -112
- package/front_end/panels/sources/sources.ts +6 -0
- package/front_end/panels/timeline/ActiveFilters.ts +2 -1
- package/front_end/panels/timeline/AnimationsTrackAppender.ts +1 -1
- package/front_end/panels/timeline/AnnotationHelpers.test.ts +14 -8
- package/front_end/panels/timeline/AnnotationHelpers.ts +28 -23
- package/front_end/panels/timeline/AppenderUtils.ts +2 -2
- package/front_end/panels/timeline/CompatibilityTracksAppender.ts +1 -14
- package/front_end/panels/timeline/CountersGraph.test.ts +80 -0
- package/front_end/panels/timeline/CountersGraph.ts +27 -18
- package/front_end/panels/timeline/EntriesFilter.test.ts +22 -15
- package/front_end/panels/timeline/EventsTimelineTreeView.ts +4 -25
- package/front_end/panels/timeline/ExtensionTrackAppender.ts +4 -9
- package/front_end/panels/timeline/GPUTrackAppender.ts +3 -3
- package/front_end/panels/timeline/Initiators.test.ts +22 -19
- package/front_end/panels/timeline/Initiators.ts +19 -6
- package/front_end/panels/timeline/InteractionsTrackAppender.ts +6 -6
- package/front_end/panels/timeline/IsolateSelector.ts +2 -2
- package/front_end/panels/timeline/LayoutShiftsTrackAppender.ts +6 -5
- package/front_end/panels/timeline/ModificationsManager.test.ts +98 -188
- package/front_end/panels/timeline/ModificationsManager.ts +51 -48
- package/front_end/panels/timeline/NetworkTrackAppender.ts +3 -3
- package/front_end/panels/timeline/README.md +5 -13
- package/front_end/{models/trace/extras/Metadata.test.ts → panels/timeline/RecordingMetadata.test.ts} +61 -29
- package/front_end/panels/timeline/RecordingMetadata.ts +79 -0
- package/front_end/panels/timeline/SaveFileFormatter.test.ts +1 -3
- package/front_end/panels/timeline/SaveFileFormatter.ts +0 -8
- package/front_end/panels/timeline/StatusDialog.ts +12 -8
- package/front_end/panels/timeline/ThirdPartyTreeView.ts +5 -5
- package/front_end/panels/timeline/ThreadAppender.ts +29 -29
- package/front_end/panels/timeline/TimelineController.ts +14 -18
- package/front_end/panels/timeline/TimelineDetailsView.test.ts +49 -15
- package/front_end/panels/timeline/TimelineDetailsView.ts +213 -105
- package/front_end/panels/timeline/TimelineEventOverview.ts +6 -6
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.test.ts +56 -95
- package/front_end/panels/timeline/TimelineFlameChartDataProvider.ts +94 -65
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.test.ts +3 -62
- package/front_end/panels/timeline/TimelineFlameChartNetworkDataProvider.ts +10 -30
- package/front_end/panels/timeline/TimelineFlameChartView.test.ts +105 -80
- package/front_end/panels/timeline/TimelineFlameChartView.ts +107 -102
- package/front_end/panels/timeline/TimelineHistoryManager.test.ts +0 -5
- package/front_end/panels/timeline/TimelineHistoryManager.ts +8 -8
- package/front_end/panels/timeline/TimelineLoader.test.ts +4 -7
- package/front_end/panels/timeline/TimelineLoader.ts +22 -3
- package/front_end/panels/timeline/TimelineMiniMap.ts +13 -5
- package/front_end/panels/timeline/TimelinePaintProfilerView.ts +1 -1
- package/front_end/panels/timeline/TimelinePanel.test.ts +381 -117
- package/front_end/panels/timeline/TimelinePanel.ts +576 -345
- package/front_end/panels/timeline/TimelineSelectorStatsView.ts +195 -80
- package/front_end/panels/timeline/TimelineTreeView.test.ts +5 -5
- package/front_end/panels/timeline/TimelineTreeView.ts +25 -25
- package/front_end/panels/timeline/TimelineUIUtils.test.ts +58 -55
- package/front_end/panels/timeline/TimelineUIUtils.ts +159 -345
- package/front_end/panels/timeline/TimingsTrackAppender.ts +12 -7
- package/front_end/panels/timeline/TrackConfigBanner.test.ts +68 -0
- package/front_end/panels/timeline/TrackConfigBanner.ts +97 -0
- package/front_end/panels/timeline/TrackConfiguration.test.ts +3 -3
- package/front_end/panels/timeline/TrackConfiguration.ts +1 -0
- package/front_end/panels/timeline/UIDevtoolsUtils.ts +15 -15
- package/front_end/panels/timeline/components/BreadcrumbsUI.ts +4 -9
- package/front_end/panels/timeline/components/DetailsView.ts +13 -13
- package/front_end/panels/timeline/components/ExportTraceOptions.test.ts +281 -0
- package/front_end/panels/timeline/components/ExportTraceOptions.ts +262 -0
- package/front_end/panels/timeline/components/FieldSettingsDialog.test.ts +1 -1
- package/front_end/panels/timeline/components/FieldSettingsDialog.ts +2 -1
- package/front_end/panels/timeline/components/IgnoreListSetting.test.ts +5 -4
- package/front_end/panels/timeline/components/IgnoreListSetting.ts +7 -7
- package/front_end/panels/timeline/components/InteractionBreakdown.ts +3 -3
- package/front_end/panels/timeline/components/Invalidations.test.ts +2 -1
- package/front_end/panels/timeline/components/LayoutShiftDetails.test.ts +21 -11
- package/front_end/panels/timeline/components/LayoutShiftDetails.ts +325 -307
- package/front_end/panels/timeline/components/LiveMetricsView.test.ts +14 -22
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/MetricCard.test.ts +2 -2
- package/front_end/panels/timeline/components/NetworkRequestDetails.test.ts +38 -44
- package/front_end/panels/timeline/components/NetworkRequestDetails.ts +318 -278
- package/front_end/panels/timeline/components/NetworkRequestTooltip.ts +8 -8
- package/front_end/panels/timeline/components/NetworkThrottlingSelector.test.ts +3 -0
- package/front_end/panels/timeline/components/OriginMap.ts +1 -1
- package/front_end/panels/timeline/components/RelatedInsightChips.test.ts +17 -31
- package/front_end/panels/timeline/components/RelatedInsightChips.ts +87 -66
- package/front_end/panels/timeline/components/Sidebar.test.ts +43 -4
- package/front_end/panels/timeline/components/Sidebar.ts +47 -20
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.test.ts +47 -72
- package/front_end/panels/timeline/components/SidebarAnnotationsTab.ts +228 -218
- package/front_end/panels/timeline/components/SidebarInsightsTab.test.ts +1 -0
- package/front_end/panels/timeline/components/SidebarInsightsTab.ts +18 -54
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.test.ts +7 -53
- package/front_end/panels/timeline/components/SidebarSingleInsightSet.ts +61 -44
- package/front_end/panels/timeline/components/TimelineSummary.ts +4 -4
- package/front_end/panels/timeline/components/Utils.ts +9 -9
- package/front_end/panels/timeline/components/components.ts +2 -0
- package/front_end/panels/timeline/components/exportTraceOptions.css +26 -0
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.test.ts +40 -16
- package/front_end/panels/timeline/components/insights/BaseInsightComponent.ts +28 -34
- package/front_end/panels/timeline/components/insights/CLSCulprits.test.ts +5 -5
- package/front_end/panels/timeline/components/insights/CLSCulprits.ts +32 -23
- package/front_end/panels/timeline/components/insights/Cache.ts +4 -22
- package/front_end/panels/timeline/components/insights/Checklist.ts +6 -7
- package/front_end/panels/timeline/components/insights/DOMSize.ts +35 -15
- package/front_end/panels/timeline/components/insights/DocumentLatency.ts +1 -61
- package/front_end/panels/timeline/components/insights/DuplicatedJavaScript.ts +5 -17
- package/front_end/panels/timeline/components/insights/EventRef.ts +7 -9
- package/front_end/panels/timeline/components/insights/FontDisplay.ts +20 -21
- package/front_end/panels/timeline/components/insights/ForcedReflow.ts +5 -28
- package/front_end/panels/timeline/components/insights/{InteractionToNextPaint.test.ts → INPBreakdown.test.ts} +8 -5
- package/front_end/panels/timeline/components/insights/INPBreakdown.ts +70 -0
- package/front_end/panels/timeline/components/insights/ImageDelivery.ts +7 -21
- package/front_end/panels/timeline/components/insights/LCPBreakdown.ts +146 -0
- package/front_end/panels/timeline/components/insights/LCPDiscovery.ts +28 -80
- package/front_end/panels/timeline/components/insights/LegacyJavaScript.ts +3 -15
- package/front_end/panels/timeline/components/insights/ModernHTTP.ts +18 -23
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.test.ts +76 -0
- package/front_end/panels/timeline/components/insights/NetworkDependencyTree.ts +35 -29
- package/front_end/panels/timeline/components/insights/NodeLink.test.ts +113 -0
- package/front_end/panels/timeline/components/insights/NodeLink.ts +50 -10
- package/front_end/panels/timeline/components/insights/README.md +1 -1
- package/front_end/panels/timeline/components/insights/RenderBlocking.ts +4 -22
- package/front_end/panels/timeline/components/insights/SidebarInsight.ts +1 -2
- package/front_end/panels/timeline/components/insights/SlowCSSSelector.ts +16 -28
- package/front_end/panels/timeline/components/insights/Table.ts +2 -3
- package/front_end/panels/timeline/components/insights/ThirdParties.ts +7 -47
- package/front_end/panels/timeline/components/insights/Viewport.ts +0 -6
- package/front_end/panels/timeline/components/insights/insights.ts +4 -4
- package/front_end/panels/timeline/components/insights/table.css +18 -0
- package/front_end/panels/timeline/components/insights/types.ts +2 -2
- package/front_end/panels/timeline/components/layoutShiftDetails.css +99 -92
- package/front_end/panels/timeline/components/networkRequestDetails.css +110 -104
- package/front_end/panels/timeline/components/networkRequestTooltip.css +88 -83
- package/front_end/panels/timeline/components/relatedInsightChips.css +60 -58
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +80 -78
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +0 -25
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
- package/front_end/panels/timeline/docs/flame_chart_migration.md +2 -2
- package/front_end/panels/timeline/overlays/OverlaysImpl.test.ts +149 -42
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +218 -283
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +69 -104
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/entryLabelOverlay.css +13 -0
- package/front_end/panels/timeline/overlays/components/timeRangeOverlay.css +2 -1
- package/front_end/panels/timeline/timeline-meta.ts +14 -14
- package/front_end/panels/timeline/timeline.ts +4 -4
- package/front_end/panels/timeline/timelineDetailsView.css +118 -0
- package/front_end/panels/timeline/timelineFlameChartView.css +18 -117
- package/front_end/panels/timeline/timelineMiniMap.css +5 -0
- package/front_end/panels/timeline/timelinePanel.css +2 -10
- package/front_end/panels/timeline/timelineTreeView.css +0 -4
- package/front_end/panels/timeline/track_appenders/CompatibilityTracksAppender.test.ts +16 -15
- package/front_end/panels/timeline/track_appenders/ExtensionTrackAppender.test.ts +6 -4
- package/front_end/panels/timeline/track_appenders/InteractionsTrackAppender.test.ts +0 -1
- package/front_end/panels/timeline/track_appenders/ThreadAppender.test.ts +34 -49
- package/front_end/panels/timeline/utils/AICallTree.test.ts +54 -120
- package/front_end/panels/timeline/utils/AICallTree.ts +31 -74
- package/front_end/panels/timeline/utils/AIContext.ts +67 -0
- package/front_end/panels/timeline/utils/EntityMapper.test.ts +5 -4
- package/front_end/panels/timeline/utils/EntityMapper.ts +3 -3
- package/front_end/panels/timeline/utils/EntryName.test.ts +3 -3
- package/front_end/panels/timeline/utils/EntryName.ts +10 -10
- package/front_end/panels/timeline/utils/EntryNodes.test.ts +137 -0
- package/front_end/panels/timeline/utils/EntryNodes.ts +107 -0
- package/front_end/panels/timeline/utils/EntryStyles.ts +110 -110
- package/front_end/panels/timeline/{EventsSerializer.test.ts → utils/EventsSerializer.test.ts} +7 -7
- package/front_end/panels/timeline/{EventsSerializer.ts → utils/EventsSerializer.ts} +1 -1
- package/front_end/panels/timeline/{FreshRecording.test.ts → utils/FreshRecording.test.ts} +5 -5
- package/front_end/panels/timeline/{FreshRecording.ts → utils/FreshRecording.ts} +1 -1
- package/front_end/panels/timeline/utils/Helpers.ts +6 -0
- package/front_end/panels/timeline/utils/IgnoreList.test.ts +7 -6
- package/front_end/panels/timeline/utils/IgnoreList.ts +6 -6
- package/front_end/panels/timeline/utils/InsightAIContext.test.ts +61 -25
- package/front_end/panels/timeline/utils/InsightAIContext.ts +102 -81
- package/front_end/panels/timeline/utils/SourceMapsResolver.test.ts +5 -4
- package/front_end/panels/timeline/utils/Treemap.ts +5 -20
- package/front_end/panels/timeline/utils/utils.ts +8 -0
- package/front_end/panels/utils/utils.test.ts +1 -7
- package/front_end/panels/utils/utils.ts +17 -21
- package/front_end/panels/web_audio/WebAudioView.test.ts +224 -11
- package/front_end/panels/web_audio/WebAudioView.ts +219 -267
- package/front_end/panels/web_audio/web_audio-meta.ts +3 -3
- package/front_end/panels/web_audio/web_audio.ts +0 -12
- package/front_end/panels/webauthn/WebauthnPane.test.ts +75 -72
- package/front_end/panels/webauthn/WebauthnPane.ts +517 -578
- package/front_end/panels/webauthn/webauthn-meta.ts +2 -2
- package/front_end/panels/webauthn/webauthnPane.css +157 -155
- package/front_end/panels/whats_new/ReleaseNoteText.ts +11 -11
- package/front_end/panels/whats_new/ReleaseNoteView.ts +2 -2
- package/front_end/panels/whats_new/releaseNoteView.css +92 -91
- package/front_end/panels/whats_new/resources/WNDT.md +6 -10
- package/front_end/panels/whats_new/whats_new-meta.ts +7 -7
- package/front_end/services/trace_bounds/TraceBounds.ts +1 -1
- package/front_end/services/tracing/ExternalRequests.test.ts +39 -0
- package/front_end/services/tracing/ExternalRequests.ts +74 -0
- package/front_end/services/tracing/PerformanceTracing.ts +5 -4
- package/front_end/{models/trace → services/tracing}/TracingManager.test.ts +9 -7
- package/front_end/{models/trace → services/tracing}/TracingManager.ts +3 -4
- package/front_end/services/tracing/tracing.ts +4 -0
- package/front_end/testing/AiAssistanceHelpers.ts +10 -8
- package/front_end/testing/DOMHelpers.ts +8 -6
- package/front_end/testing/EnvironmentHelpers.ts +21 -6
- package/front_end/testing/ExpectStubCall.ts +2 -1
- package/front_end/testing/InsightHelpers.ts +11 -4
- package/front_end/testing/MockConnection.ts +3 -2
- package/front_end/testing/MockSettingStorage.ts +23 -0
- package/front_end/testing/MutationHelpers.test.ts +1 -3
- package/front_end/testing/OverridesHelpers.ts +9 -3
- package/front_end/testing/PropertyParser.ts +1 -1
- package/front_end/testing/README.md +34 -0
- package/front_end/testing/SnapshotTester.snapshot.txt +9 -0
- package/front_end/testing/SnapshotTester.test.ts +32 -0
- package/front_end/testing/SnapshotTester.ts +150 -0
- package/front_end/testing/SourceMapEncoder.ts +1 -237
- package/front_end/testing/SourceMapHelpers.ts +3 -5
- package/front_end/testing/StackTraceHelpers.ts +47 -0
- package/front_end/testing/StyleHelpers.ts +43 -22
- package/front_end/testing/TraceHelpers.ts +135 -122
- package/front_end/testing/TraceLoader.ts +23 -65
- package/front_end/testing/test_setup.ts +31 -4
- package/front_end/ui/components/buttons/Button.ts +1 -1
- package/front_end/ui/components/buttons/FloatingButton.ts +37 -6
- package/front_end/ui/components/cards/Card.ts +2 -2
- package/front_end/ui/components/copy_to_clipboard/copyToClipboard.ts +1 -1
- package/front_end/ui/components/dialogs/ButtonDialog.test.ts +2 -6
- package/front_end/ui/components/dialogs/ButtonDialog.ts +15 -0
- package/front_end/ui/components/dialogs/Dialog.ts +68 -8
- package/front_end/ui/components/dialogs/ShortcutDialog.test.ts +1 -3
- package/front_end/ui/components/diff_view/DiffView.ts +6 -6
- package/front_end/ui/components/docs/console_insight/basic.ts +1 -1
- package/front_end/ui/components/docs/console_insight/error.ts +1 -1
- package/front_end/ui/components/docs/console_insight/loading.ts +1 -1
- package/front_end/ui/components/docs/context_menu/basic.html +45 -0
- package/front_end/ui/components/docs/context_menu/basic.ts +102 -0
- package/front_end/ui/components/docs/icon_component/basic.html +1 -3
- package/front_end/ui/components/docs/icon_component/basic.ts +1 -1
- package/front_end/ui/components/docs/recorder_recording_list_view/basic.ts +4 -1
- package/front_end/ui/components/docs/select_menu/basic.html +1 -27
- package/front_end/ui/components/docs/select_menu/basic.ts +86 -194
- package/front_end/ui/components/icon_button/Icon.ts +16 -10
- package/front_end/ui/components/icon_button/IconButton.ts +1 -3
- package/front_end/ui/components/icon_button/icon.css +73 -0
- package/front_end/ui/components/issue_counter/IssueCounter.ts +13 -14
- package/front_end/ui/components/issue_counter/IssueLinkIcon.ts +3 -3
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +4 -4
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +9 -6
- package/front_end/ui/components/markdown_view/MarkdownView.test.ts +73 -0
- package/front_end/ui/components/panel_feedback/PanelFeedback.ts +5 -11
- package/front_end/ui/components/panel_feedback/PreviewToggle.ts +4 -9
- package/front_end/ui/components/settings/SettingCheckbox.ts +3 -3
- package/front_end/ui/components/settings/SettingDeprecationWarning.ts +2 -4
- package/front_end/ui/components/snackbars/Snackbar.ts +32 -17
- package/front_end/ui/components/snackbars/snackbar.css +1 -1
- package/front_end/ui/components/spinners/Spinner.ts +50 -2
- package/front_end/ui/components/spinners/spinner.css +10 -1
- package/front_end/ui/components/srgb_overlay/SrgbOverlay.ts +0 -1
- package/front_end/ui/components/survey_link/SurveyLink.ts +4 -8
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.test.ts +84 -0
- package/front_end/ui/components/text_editor/AiCodeCompletionTeaserPlaceholder.ts +83 -0
- package/front_end/ui/components/text_editor/ExecutionPositionHighlighter.ts +0 -1
- package/front_end/ui/components/text_editor/TextEditor.test.ts +72 -12
- package/front_end/ui/components/text_editor/TextEditor.ts +2 -0
- package/front_end/ui/components/text_editor/config.ts +120 -12
- package/front_end/ui/{legacy/components/inline_editor/bezierSwatch.css → components/text_editor/textEditor.css} +2 -6
- package/front_end/ui/components/text_editor/text_editor.ts +1 -0
- package/front_end/ui/components/tooltips/Tooltip.test.ts +70 -40
- package/front_end/ui/components/tooltips/Tooltip.ts +208 -33
- package/front_end/ui/components/tooltips/tooltip.css +13 -77
- package/front_end/ui/components/tree_outline/TreeOutline.ts +11 -0
- package/front_end/ui/legacy/ARIAUtils.test.ts +101 -20
- package/front_end/ui/legacy/ARIAUtils.ts +77 -49
- package/front_end/ui/legacy/ActionRegistration.test.ts +0 -2
- package/front_end/ui/legacy/ActionRegistration.ts +24 -24
- package/front_end/ui/legacy/ContextMenu.test.ts +60 -1
- package/front_end/ui/legacy/ContextMenu.ts +349 -29
- package/front_end/ui/legacy/DockController.ts +13 -7
- package/front_end/ui/legacy/EmptyWidget.ts +62 -32
- package/front_end/ui/legacy/FilterBar.ts +14 -9
- package/front_end/ui/legacy/GlassPane.ts +10 -4
- package/front_end/ui/legacy/Infobar.ts +2 -2
- package/front_end/ui/legacy/InspectorView.test.ts +99 -0
- package/front_end/ui/legacy/InspectorView.ts +71 -25
- package/front_end/ui/legacy/ListWidget.ts +9 -9
- package/front_end/ui/legacy/Panel.ts +1 -1
- package/front_end/ui/legacy/ProgressIndicator.ts +44 -41
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +4 -4
- package/front_end/ui/legacy/ReportView.ts +1 -1
- package/front_end/ui/legacy/SearchableView.ts +24 -24
- package/front_end/ui/legacy/SettingsUI.ts +2 -2
- package/front_end/ui/legacy/ShortcutRegistry.ts +2 -1
- package/front_end/ui/legacy/SoftContextMenu.ts +23 -9
- package/front_end/ui/legacy/SoftDropDown.ts +1 -1
- package/front_end/ui/legacy/SplitWidget.test.ts +8 -0
- package/front_end/ui/legacy/SplitWidget.ts +3 -3
- package/front_end/ui/legacy/SuggestBox.ts +15 -15
- package/front_end/ui/legacy/TabbedPane.ts +27 -31
- package/front_end/ui/legacy/TargetCrashedScreen.ts +4 -4
- package/front_end/ui/legacy/TextPrompt.ts +4 -2
- package/front_end/ui/legacy/ThrottledWidget.ts +1 -1
- package/front_end/ui/legacy/Toolbar.test.ts +13 -0
- package/front_end/ui/legacy/Toolbar.ts +39 -19
- package/front_end/ui/legacy/Treeoutline.test.ts +140 -0
- package/front_end/ui/legacy/Treeoutline.ts +244 -8
- package/front_end/ui/legacy/UIUtils.test.ts +59 -0
- package/front_end/ui/legacy/UIUtils.ts +235 -25
- package/front_end/ui/legacy/View.test.ts +14 -1
- package/front_end/ui/legacy/View.ts +33 -9
- package/front_end/ui/legacy/ViewManager.test.ts +235 -0
- package/front_end/ui/legacy/ViewManager.ts +109 -15
- package/front_end/ui/legacy/ViewRegistration.ts +17 -7
- package/front_end/ui/legacy/Widget.test.ts +35 -3
- package/front_end/ui/legacy/Widget.ts +127 -16
- package/front_end/ui/legacy/XLink.ts +1 -1
- package/front_end/ui/legacy/components/color_picker/ContrastDetails.ts +36 -26
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +4 -8
- package/front_end/ui/legacy/components/color_picker/Spectrum.test.ts +36 -1
- package/front_end/ui/legacy/components/color_picker/Spectrum.ts +72 -49
- package/front_end/ui/legacy/components/color_picker/spectrum.css +1 -1
- package/front_end/ui/legacy/components/cookie_table/CookiesTable.ts +14 -19
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +31 -30
- package/front_end/ui/legacy/components/data_grid/DataGridElement.test.ts +19 -15
- package/front_end/ui/legacy/components/data_grid/DataGridElement.ts +15 -3
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +2 -2
- package/front_end/ui/legacy/components/data_grid/ViewportDataGrid.ts +6 -3
- package/front_end/ui/legacy/components/data_grid/dataGrid.css +9 -3
- package/front_end/ui/legacy/components/inline_editor/BezierEditor.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/BezierUI.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.test.ts +25 -25
- package/front_end/ui/legacy/components/inline_editor/CSSAngle.ts +11 -5
- package/front_end/ui/legacy/components/inline_editor/CSSShadowEditor.ts +5 -5
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.test.ts +1 -9
- package/front_end/ui/legacy/components/inline_editor/ColorSwatch.ts +35 -20
- package/front_end/ui/legacy/components/inline_editor/FontEditor.ts +32 -31
- package/front_end/ui/legacy/components/inline_editor/FontEditorUnitConverter.ts +1 -1
- package/front_end/ui/legacy/components/inline_editor/Swatches.ts +3 -47
- package/front_end/ui/legacy/components/inline_editor/cssAngle.css +4 -5
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +2 -2
- package/front_end/ui/legacy/components/object_ui/ObjectPopoverHelper.ts +1 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.test.ts +19 -1
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +31 -28
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +2 -0
- package/front_end/ui/legacy/components/perf_ui/BrickBreaker.ts +2 -2
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +7 -3
- package/front_end/ui/legacy/components/perf_ui/FilmStripView.ts +7 -7
- package/front_end/ui/legacy/components/perf_ui/FlameChart.test.ts +162 -1
- package/front_end/ui/legacy/components/perf_ui/FlameChart.ts +153 -99
- package/front_end/ui/legacy/components/perf_ui/NetworkPriorities.ts +5 -5
- package/front_end/ui/legacy/components/perf_ui/OverviewGrid.ts +3 -3
- package/front_end/ui/legacy/components/perf_ui/PieChart.ts +1 -1
- package/front_end/ui/legacy/components/perf_ui/TimelineGrid.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +54 -6
- package/front_end/ui/legacy/components/perf_ui/perf_ui-meta.ts +6 -6
- package/front_end/ui/legacy/components/quick_open/CommandMenu.ts +29 -3
- package/front_end/ui/legacy/components/quick_open/FilteredListWidget.ts +14 -5
- package/front_end/ui/legacy/components/quick_open/HelpQuickOpen.ts +2 -5
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +2 -0
- package/front_end/ui/legacy/components/quick_open/quick_open-meta.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/FontView.ts +8 -5
- package/front_end/ui/legacy/components/source_frame/ImageView.ts +17 -29
- package/front_end/ui/legacy/components/source_frame/JSONView.ts +3 -3
- package/front_end/ui/legacy/components/source_frame/PreviewFactory.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.test.ts +0 -4
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/SourceFrame.ts +41 -31
- package/front_end/ui/legacy/components/source_frame/StreamingContentHexView.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/XMLView.ts +2 -2
- package/front_end/ui/legacy/components/source_frame/fontView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/source_frame-meta.ts +9 -9
- package/front_end/ui/legacy/components/utils/ImagePreview.ts +4 -4
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.test.ts +6 -5
- package/front_end/ui/legacy/components/utils/JSPresentationUtils.ts +76 -34
- package/front_end/ui/legacy/components/utils/Linkifier.test.ts +154 -2
- package/front_end/ui/legacy/components/utils/Linkifier.ts +108 -50
- package/front_end/ui/legacy/components/utils/TargetDetachedDialog.ts +2 -1
- package/front_end/ui/legacy/confirmDialog.css +1 -1
- package/front_end/ui/legacy/filter.css +12 -4
- package/front_end/ui/legacy/inspectorCommon.css +25 -20
- package/front_end/ui/legacy/remoteDebuggingTerminatedScreen.css +18 -17
- package/front_end/ui/legacy/softContextMenu.css +4 -0
- package/front_end/ui/legacy/tabbedPane.css +5 -1
- package/front_end/ui/legacy/targetCrashedScreen.css +9 -8
- package/front_end/ui/legacy/viewContainers.css +8 -0
- package/front_end/ui/visual_logging/Debugging.ts +122 -26
- package/front_end/ui/visual_logging/KnownContextValues.ts +139 -1
- package/front_end/ui/visual_logging/LoggingConfig.ts +1 -1
- package/front_end/ui/visual_logging/LoggingDriver.test.ts +74 -44
- package/front_end/ui/visual_logging/LoggingDriver.ts +3 -2
- package/front_end/ui/visual_logging/LoggingState.ts +6 -4
- package/front_end/ui/visual_logging/README.md +1 -3
- package/front_end/ui/visual_logging/visual_logging.ts +9 -0
- package/front_end/ui/visual_logging/visual_logging_debugging.png +0 -0
- package/inspector_overlay/css_grid_label_helpers.ts +4 -4
- package/inspector_overlay/highlight_flex_common.ts +2 -2
- package/inspector_overlay/loadCSS.rollup.js +2 -2
- package/inspector_overlay/main.ts +0 -4
- package/inspector_overlay/tool_highlight.css +1 -1
- package/inspector_overlay/tool_highlight.ts +7 -7
- package/package.json +32 -36
- package/scripts/add_icon_paths.py +1 -1
- package/scripts/ai_assistance/README.md +1 -0
- package/scripts/ai_assistance/auto-run/auto-run.ts +46 -6
- package/scripts/ai_assistance/auto-run/shared/comment-parsers.test.ts +2 -2
- package/scripts/ai_assistance/auto-run/shared/comment-parsers.ts +2 -2
- package/scripts/ai_assistance/auto-run/shared/puppeteer-helpers.ts +18 -15
- package/scripts/ai_assistance/auto-run/targets/elements-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/elements-multimodal-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/interface.ts +1 -0
- package/scripts/ai_assistance/auto-run/targets/patching-executor.ts +1 -0
- package/scripts/ai_assistance/auto-run/targets/performance-insights-executor.ts +2 -0
- package/scripts/ai_assistance/auto-run/targets/performance-main-thread-executor.ts +2 -0
- package/scripts/ai_assistance/eval/index.js +5 -1
- package/scripts/ai_assistance/package.json +2 -1
- package/scripts/ai_assistance/suite/README.md +57 -0
- package/scripts/ai_assistance/suite/helpers/evaluators.ts +183 -0
- package/scripts/ai_assistance/suite/helpers/gemini.ts +122 -0
- package/scripts/ai_assistance/suite/helpers/outputs.ts +112 -0
- package/scripts/ai_assistance/suite/instructions/lcp-breakdown.md +12 -0
- package/scripts/ai_assistance/suite/instructions/load.ts +13 -0
- package/scripts/ai_assistance/suite/instructions/scoring.md +27 -0
- package/scripts/ai_assistance/suite/performance.eval.ts +18 -0
- package/scripts/ai_assistance/suite/to_eval_output.ts +166 -0
- package/scripts/ai_assistance/suite/types.d.ts +40 -0
- package/scripts/ai_assistance/suite/upload_to_gcp.ts +104 -0
- package/scripts/ai_assistance/tsconfig.json +1 -1
- package/scripts/ai_assistance/types.d.ts +8 -3
- package/scripts/build/assert_grd.py +1 -1
- package/scripts/build/compress_files.js +9 -4
- package/scripts/build/cross_reference_ninja_and_tsc.js +5 -5
- package/scripts/build/devtools_plugin.js +9 -2
- package/scripts/build/esbuild.js +4 -1
- package/scripts/build/generate_html_entrypoint.js +5 -4
- package/scripts/build/ninja/README.md +2 -3
- package/scripts/build/ninja/bundle.gni +7 -30
- package/scripts/build/ninja/devtools_entrypoint.gni +4 -4
- package/scripts/build/ninja/devtools_pre_built.gni +2 -1
- package/scripts/build/ninja/generate_css.gni +4 -2
- package/scripts/build/ninja/vars.gni +5 -1
- package/scripts/build/ninja/write-if-changed.js +2 -2
- package/scripts/build/typescript/ts_library.py +7 -1
- package/scripts/build/typescript/typescript.gni +2 -1
- package/scripts/component_server/server.js +8 -7
- package/scripts/devtools_build.mjs +93 -26
- package/scripts/devtools_build.test.mjs +48 -48
- package/scripts/devtools_paths.py +0 -5
- package/scripts/eslint_rules/README.md +4 -2
- package/scripts/eslint_rules/lib/canvas-context-tracking.ts +1 -1
- package/scripts/eslint_rules/lib/check-css-import.ts +2 -2
- package/scripts/eslint_rules/lib/check-license-header.ts +3 -3
- package/scripts/eslint_rules/lib/check-test-definitions.ts +2 -2
- package/scripts/eslint_rules/lib/enforce-custom-element-definitions-location.ts +1 -1
- package/scripts/eslint_rules/lib/enforce-optional-properties-last.ts +1 -1
- package/scripts/eslint_rules/lib/enforce-ui-strings-as-const.ts +1 -1
- package/scripts/eslint_rules/lib/es-modules-import.ts +3 -2
- package/scripts/eslint_rules/lib/html-tagged-template.ts +2 -2
- package/scripts/eslint_rules/lib/inject-checkbox-styles.ts +36 -24
- package/scripts/eslint_rules/lib/inline-type-imports.ts +1 -1
- package/scripts/eslint_rules/lib/jslog-context-list.ts +32 -7
- package/scripts/eslint_rules/lib/no-adopted-style-sheets.ts +2 -2
- package/scripts/eslint_rules/lib/no-assert-deep-strict-equal.ts +17 -16
- package/scripts/eslint_rules/lib/no-assert-equal-boolean-null-undefined.ts +1 -1
- package/scripts/eslint_rules/lib/no-assert-equal.ts +1 -1
- package/scripts/eslint_rules/lib/no-assert-strict-equal-for-arrays-and-objects.ts +1 -1
- package/scripts/eslint_rules/lib/no-commented-out-console.ts +4 -2
- package/scripts/eslint_rules/lib/no-customized-builtin-elements.ts +1 -4
- package/scripts/eslint_rules/lib/no-imperative-dom-api/adorner.ts +5 -9
- package/scripts/eslint_rules/lib/no-imperative-dom-api/aria-utils.ts +5 -8
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ast.ts +24 -1
- package/scripts/eslint_rules/lib/no-imperative-dom-api/button.ts +5 -4
- package/scripts/eslint_rules/lib/no-imperative-dom-api/class-member.ts +1 -1
- package/scripts/eslint_rules/lib/no-imperative-dom-api/data-grid.ts +23 -25
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-api-devtools-extensions.ts +5 -9
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-api.ts +11 -16
- package/scripts/eslint_rules/lib/no-imperative-dom-api/dom-fragment.ts +2 -2
- package/scripts/eslint_rules/lib/no-imperative-dom-api/split-widget.ts +14 -18
- package/scripts/eslint_rules/lib/no-imperative-dom-api/toolbar.ts +17 -18
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ui-fragment.ts +7 -12
- package/scripts/eslint_rules/lib/no-imperative-dom-api/ui-utils.ts +7 -7
- package/scripts/eslint_rules/lib/no-imperative-dom-api/widget.ts +8 -13
- package/scripts/eslint_rules/lib/no-imperative-dom-api.ts +3 -22
- package/scripts/eslint_rules/lib/no-importing-images-from-src.ts +1 -1
- package/scripts/eslint_rules/lib/no-imports-in-directory.ts +18 -7
- package/scripts/eslint_rules/lib/no-lit-render-outside-of-view.ts +48 -37
- package/scripts/eslint_rules/lib/no-new-lit-element-components.ts +5 -2
- package/scripts/eslint_rules/lib/no-underscored-properties.ts +36 -28
- package/scripts/eslint_rules/lib/prefer-assert-instance-of.ts +24 -20
- package/scripts/eslint_rules/lib/prefer-assert-is-ok.ts +54 -45
- package/scripts/eslint_rules/lib/prefer-assert-length-of.ts +24 -17
- package/scripts/eslint_rules/lib/prefer-assert-strict-equal.ts +22 -16
- package/scripts/eslint_rules/lib/prefer-private-class-members.ts +11 -4
- package/scripts/eslint_rules/lib/prefer-sinon-assert.ts +37 -29
- package/scripts/eslint_rules/lib/prefer-url-string.ts +1 -1
- package/scripts/eslint_rules/lib/utils/lit.ts +26 -9
- package/scripts/eslint_rules/lib/validate-timing-types.ts +330 -0
- package/scripts/eslint_rules/rules-dir.mjs +4 -1
- package/scripts/eslint_rules/tests/check-license-header.test.ts +8 -8
- package/scripts/eslint_rules/tests/check-test-definitions.test.ts +0 -10
- package/scripts/eslint_rules/tests/enforce-optional-properties-last.test.ts +1 -1
- package/scripts/eslint_rules/tests/inject-checkbox-styles.test.ts +49 -0
- package/scripts/eslint_rules/tests/no-imports-in-directory.test.ts +20 -5
- package/scripts/eslint_rules/tests/no-lit-render-outside-of-view.test.ts +60 -10
- package/scripts/eslint_rules/tests/no-new-lit-element-components.test.ts +4 -0
- package/scripts/eslint_rules/tests/prefer-private-class-members.test.ts +2 -2
- package/scripts/eslint_rules/tests/utils/RuleTester.ts +19 -1
- package/scripts/eslint_rules/tests/utils.test.ts +1 -1
- package/scripts/eslint_rules/tests/validate-timing-types.test.ts +289 -0
- package/scripts/eslint_rules/tsconfig.json +3 -2
- package/scripts/extract_bugs.ts +2 -3
- package/scripts/javascript_natives/helpers.js +9 -9
- package/scripts/migration/e2e_non_hosted_gemini.mjs +102 -0
- package/scripts/migration/web-tests-esm/rename-legacy-global.mjs +1 -1
- package/scripts/npm_test.js +1 -1
- package/scripts/protocol_typescript/protocol_dts_generator.ts +27 -16
- package/scripts/protocol_typescript/protocol_schema.d.ts +9 -4
- package/scripts/reformat-clang-js-ts.js +1 -1
- package/scripts/run_build.mjs +14 -2
- package/scripts/run_start.mjs +6 -3
- package/scripts/scaffold/scaffold-widget.js +7 -7
- package/scripts/scaffold/templates/WidgetTemplate.ts.txt +1 -1
- package/scripts/tools/update_goldens.py +143 -168
- package/scripts/tsconfig.json +2 -1
- package/scripts/whitespaces.txt +1 -1
- package/front_end/core/sdk/SourceMapScopes.test.ts +0 -507
- package/front_end/core/sdk/SourceMapScopes.ts +0 -472
- package/front_end/models/ai_assistance/agents/PerformanceInsightsAgent.test.ts +0 -448
- package/front_end/models/ai_assistance/agents/PerformanceInsightsAgent.ts +0 -498
- package/front_end/models/trace/extras/FetchNodes.test.ts +0 -261
- package/front_end/models/trace/extras/FetchNodes.ts +0 -254
- package/front_end/models/trace/extras/Metadata.ts +0 -79
- package/front_end/models/trace/insights/LCPPhases.test.ts +0 -71
- package/front_end/models/trace/insights/LCPPhases.ts +0 -222
- package/front_end/panels/animation/AnimationScreenshotPopover.ts +0 -65
- package/front_end/panels/animation/animationScreenshotPopover.css +0 -18
- package/front_end/panels/application/ReportingApiReportsView.test.ts +0 -117
- package/front_end/panels/application/ReportingApiReportsView.ts +0 -88
- package/front_end/panels/elements/ElementsTreeElementHighlighter.test.ts +0 -51
- package/front_end/panels/elements/ElementsTreeElementHighlighter.ts +0 -107
- package/front_end/panels/elements/components/LayoutPane.ts +0 -515
- package/front_end/panels/elements/components/LayoutPaneUtils.ts +0 -41
- package/front_end/panels/elements/components/layoutPane.css +0 -168
- package/front_end/panels/sources/components/breakpointsView.css +0 -275
- package/front_end/panels/timeline/components/insights/InteractionToNextPaint.ts +0 -118
- package/front_end/panels/timeline/components/insights/LCPPhases.ts +0 -256
- package/front_end/panels/web_audio/AudioContextContentBuilder.ts +0 -113
- package/front_end/panels/web_audio/AudioContextSelector.ts +0 -140
- package/front_end/panels/web_audio/audioContextSelector.css +0 -20
- package/front_end/panels/web_audio/graph_visualizer/EdgeView.ts +0 -80
- package/front_end/panels/web_audio/graph_visualizer/GraphManager.ts +0 -46
- package/front_end/panels/web_audio/graph_visualizer/GraphStyle.ts +0 -96
- package/front_end/panels/web_audio/graph_visualizer/GraphView.ts +0 -197
- package/front_end/panels/web_audio/graph_visualizer/NodeRendererUtility.ts +0 -43
- package/front_end/panels/web_audio/graph_visualizer/NodeView.ts +0 -258
- package/front_end/panels/web_audio/graph_visualizer/graph_visualizer.ts +0 -19
- package/front_end/ui/components/docs/recorder_recording_view/basic.html +0 -20
- package/front_end/ui/components/docs/recorder_recording_view/basic.ts +0 -99
- package/front_end/ui/legacy/inspectorViewTabbedPane.css +0 -13
- package/inspector_overlay/debug/tool_distances.html +0 -25
- package/inspector_overlay/tool_distances.ts +0 -125
- package/scripts/eslint_rules/lib/no-it-screenshot-only-or-repeat.ts +0 -47
- package/scripts/eslint_rules/lib/no-screenshot-test-outside-perf-panel.ts +0 -77
- package/scripts/eslint_rules/lib/screenshot-assertion-in-it-screenshot.ts +0 -110
- package/scripts/eslint_rules/lib/single-screenshot-assertion-per-test.ts +0 -85
- package/scripts/eslint_rules/tests/no-it-screenshot-only-or-repeat.test.ts +0 -34
- package/scripts/eslint_rules/tests/no-screenshot-test-outside-perf-panel.test.ts +0 -99
- package/scripts/eslint_rules/tests/screenshot-assertion-in-it-screenshot.test.ts +0 -79
- package/scripts/eslint_rules/tests/single-screenshot-assertion-per-test.test.ts +0 -97
- package/scripts/tools/update_goldens_unittest.py +0 -88
- package/scripts/tools/update_goldens_v2.py +0 -68
- package/scripts/watch_build.js +0 -230
- /package/front_end/panels/recorder/models/{RecorderShorcutHelper.test.ts → RecorderShortcutHelper.test.ts} +0 -0
@@ -7,21 +7,19 @@ import '../../ui/legacy/legacy.js';
|
|
7
7
|
import * as Common from '../../core/common/common.js';
|
8
8
|
import * as Host from '../../core/host/host.js';
|
9
9
|
import * as i18n from '../../core/i18n/i18n.js';
|
10
|
-
import
|
10
|
+
import * as Platform from '../../core/platform/platform.js';
|
11
11
|
import * as Root from '../../core/root/root.js';
|
12
12
|
import * as SDK from '../../core/sdk/sdk.js';
|
13
13
|
import * as Protocol from '../../generated/protocol.js';
|
14
14
|
import * as AiAssistanceModel from '../../models/ai_assistance/ai_assistance.js';
|
15
|
+
import * as TextUtils from '../../models/text_utils/text_utils.js';
|
15
16
|
import * as Workspace from '../../models/workspace/workspace.js';
|
16
17
|
import * as Buttons from '../../ui/components/buttons/buttons.js';
|
17
18
|
import * as Snackbars from '../../ui/components/snackbars/snackbars.js';
|
18
19
|
import * as UI from '../../ui/legacy/legacy.js';
|
19
20
|
import * as Lit from '../../ui/lit/lit.js';
|
20
21
|
import * as VisualLogging from '../../ui/visual_logging/visual_logging.js';
|
21
|
-
import * as ElementsPanel from '../elements/elements.js';
|
22
22
|
import * as NetworkForward from '../network/forward/forward.js';
|
23
|
-
import * as NetworkPanel from '../network/network.js';
|
24
|
-
import * as SourcesPanel from '../sources/sources.js';
|
25
23
|
import * as TimelinePanel from '../timeline/timeline.js';
|
26
24
|
import * as TimelineUtils from '../timeline/utils/utils.js';
|
27
25
|
|
@@ -49,43 +47,47 @@ const JPEG_MIME_TYPE = 'image/jpeg';
|
|
49
47
|
|
50
48
|
const UIStrings = {
|
51
49
|
/**
|
52
|
-
|
50
|
+
* @description AI assistance UI text creating a new chat.
|
53
51
|
*/
|
54
52
|
newChat: 'New chat',
|
55
53
|
/**
|
56
|
-
|
54
|
+
* @description AI assistance UI tooltip text for the help button.
|
57
55
|
*/
|
58
56
|
help: 'Help',
|
59
57
|
/**
|
60
|
-
|
58
|
+
* @description AI assistant UI tooltip text for the settings button (gear icon).
|
61
59
|
*/
|
62
60
|
settings: 'Settings',
|
63
61
|
/**
|
64
|
-
|
62
|
+
* @description AI assistant UI tooltip sending feedback.
|
65
63
|
*/
|
66
64
|
sendFeedback: 'Send feedback',
|
67
65
|
/**
|
68
|
-
|
66
|
+
* @description Announcement text for screen readers when a new chat is created.
|
69
67
|
*/
|
70
68
|
newChatCreated: 'New chat created',
|
71
69
|
/**
|
72
|
-
|
70
|
+
* @description Announcement text for screen readers when the chat is deleted.
|
73
71
|
*/
|
74
72
|
chatDeleted: 'Chat deleted',
|
75
73
|
/**
|
76
|
-
|
74
|
+
* @description AI assistance UI text creating selecting a history entry.
|
77
75
|
*/
|
78
76
|
history: 'History',
|
79
77
|
/**
|
80
|
-
|
78
|
+
* @description AI assistance UI text deleting the current chat session from local history.
|
81
79
|
*/
|
82
80
|
deleteChat: 'Delete local chat',
|
83
81
|
/**
|
84
|
-
|
82
|
+
* @description AI assistance UI text that deletes all local history entries.
|
85
83
|
*/
|
86
84
|
clearChatHistory: 'Clear local chats',
|
87
85
|
/**
|
88
|
-
*@description AI assistance UI text
|
86
|
+
*@description AI assistance UI text for the export conversation button.
|
87
|
+
*/
|
88
|
+
exportConversation: 'Export conversation',
|
89
|
+
/**
|
90
|
+
* @description AI assistance UI text explains that he user had no pas conversations.
|
89
91
|
*/
|
90
92
|
noPastConversations: 'No past conversations',
|
91
93
|
/**
|
@@ -93,13 +95,13 @@ const UIStrings = {
|
|
93
95
|
*/
|
94
96
|
followTheSteps: 'Follow the steps above to ask a question',
|
95
97
|
/**
|
96
|
-
|
98
|
+
* @description Disclaimer text right after the chat input.
|
97
99
|
*/
|
98
100
|
inputDisclaimerForEmptyState: 'This is an experimental AI feature and won\'t always get it right.',
|
99
101
|
/**
|
100
|
-
|
102
|
+
* @description The message shown in a toast when the response is copied to the clipboard.
|
101
103
|
*/
|
102
|
-
|
104
|
+
responseCopiedToClipboard: 'Response copied to clipboard',
|
103
105
|
} as const;
|
104
106
|
|
105
107
|
/*
|
@@ -107,11 +109,11 @@ const UIStrings = {
|
|
107
109
|
*/
|
108
110
|
const UIStringsNotTranslate = {
|
109
111
|
/**
|
110
|
-
|
112
|
+
* @description Announcement text for screen readers when the conversation starts.
|
111
113
|
*/
|
112
114
|
answerLoading: 'Answer loading',
|
113
115
|
/**
|
114
|
-
|
116
|
+
* @description Announcement text for screen readers when the answer comes.
|
115
117
|
*/
|
116
118
|
answerReady: 'Answer ready',
|
117
119
|
/**
|
@@ -119,86 +121,94 @@ const UIStringsNotTranslate = {
|
|
119
121
|
*/
|
120
122
|
crossOriginError: 'To talk about data from another origin, start a new chat',
|
121
123
|
/**
|
122
|
-
|
124
|
+
* @description Placeholder text for the chat UI input.
|
123
125
|
*/
|
124
126
|
inputPlaceholderForStyling: 'Ask a question about the selected element',
|
125
127
|
/**
|
126
|
-
|
128
|
+
* @description Placeholder text for the chat UI input.
|
127
129
|
*/
|
128
130
|
inputPlaceholderForNetwork: 'Ask a question about the selected network request',
|
129
131
|
/**
|
130
|
-
|
132
|
+
* @description Placeholder text for the chat UI input.
|
131
133
|
*/
|
132
134
|
inputPlaceholderForFile: 'Ask a question about the selected file',
|
133
135
|
/**
|
134
|
-
|
136
|
+
* @description Placeholder text for the chat UI input.
|
135
137
|
*/
|
136
138
|
inputPlaceholderForPerformance: 'Ask a question about the selected item and its call tree',
|
137
139
|
/**
|
138
|
-
|
140
|
+
* @description Placeholder text for the chat UI input.
|
139
141
|
*/
|
140
142
|
inputPlaceholderForPerformanceWithNoRecording: 'Record a performance trace and select an item to ask a question',
|
141
143
|
/**
|
142
|
-
|
144
|
+
* @description Placeholder text for the chat UI input when there is no context selected.
|
143
145
|
*/
|
144
146
|
inputPlaceholderForStylingNoContext: 'Select an element to ask a question',
|
145
147
|
/**
|
146
|
-
|
148
|
+
* @description Placeholder text for the chat UI input when there is no context selected.
|
147
149
|
*/
|
148
150
|
inputPlaceholderForNetworkNoContext: 'Select a network request to ask a question',
|
149
151
|
/**
|
150
|
-
|
152
|
+
* @description Placeholder text for the chat UI input when there is no context selected.
|
151
153
|
*/
|
152
154
|
inputPlaceholderForFileNoContext: 'Select a file to ask a question',
|
153
155
|
/**
|
154
|
-
|
156
|
+
* @description Placeholder text for the chat UI input when there is no context selected.
|
155
157
|
*/
|
156
158
|
inputPlaceholderForPerformanceNoContext: 'Select an item to ask a question',
|
157
159
|
/**
|
158
|
-
|
160
|
+
* @description Placeholder text for the chat UI input.
|
159
161
|
*/
|
160
162
|
inputPlaceholderForPerformanceInsights: 'Ask a question about the selected performance insight',
|
161
163
|
/**
|
162
|
-
|
164
|
+
* @description Placeholder text for the chat UI input.
|
163
165
|
*/
|
164
166
|
inputPlaceholderForPerformanceInsightsNoContext: 'Select a performance insight to ask a question',
|
165
167
|
/**
|
166
|
-
|
168
|
+
* @description Placeholder text for the chat UI input.
|
169
|
+
*/
|
170
|
+
inputPlaceholderForPerformanceTrace: 'Ask a question about the selected performance trace',
|
171
|
+
/**
|
172
|
+
*@description Placeholder text for the chat UI input.
|
173
|
+
*/
|
174
|
+
inputPlaceholderForPerformanceTraceNoContext: 'Select a performance trace to ask a question',
|
175
|
+
/**
|
176
|
+
* @description Disclaimer text right after the chat input.
|
167
177
|
*/
|
168
178
|
inputDisclaimerForStyling:
|
169
179
|
'Chat messages and any data the inspected page can access via Web APIs are sent to Google and may be seen by human reviewers to improve this feature. This is an experimental AI feature and won’t always get it right.',
|
170
180
|
/**
|
171
|
-
|
181
|
+
* @description Disclaimer text right after the chat input.
|
172
182
|
*/
|
173
183
|
inputDisclaimerForStylingEnterpriseNoLogging:
|
174
184
|
'Chat messages and any data the inspected page can access via Web APIs are sent to Google. The content you submit and that is generated by this feature will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
175
185
|
/**
|
176
|
-
|
186
|
+
* @description Disclaimer text right after the chat input.
|
177
187
|
*/
|
178
188
|
inputDisclaimerForNetwork:
|
179
189
|
'Chat messages and the selected network request are sent to Google and may be seen by human reviewers to improve this feature. This is an experimental AI feature and won’t always get it right.',
|
180
190
|
/**
|
181
|
-
|
191
|
+
* @description Disclaimer text right after the chat input.
|
182
192
|
*/
|
183
193
|
inputDisclaimerForNetworkEnterpriseNoLogging:
|
184
194
|
'Chat messages and the selected network request are sent to Google. The content you submit and that is generated by this feature will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
185
195
|
/**
|
186
|
-
|
196
|
+
* @description Disclaimer text right after the chat input.
|
187
197
|
*/
|
188
198
|
inputDisclaimerForFile:
|
189
199
|
'Chat messages and the selected file are sent to Google and may be seen by human reviewers to improve this feature. This is an experimental AI feature and won\'t always get it right.',
|
190
200
|
/**
|
191
|
-
|
201
|
+
* @description Disclaimer text right after the chat input.
|
192
202
|
*/
|
193
203
|
inputDisclaimerForFileEnterpriseNoLogging:
|
194
204
|
'Chat messages and the selected file are sent to Google. The content you submit and that is generated by this feature will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
195
205
|
/**
|
196
|
-
|
206
|
+
* @description Disclaimer text right after the chat input.
|
197
207
|
*/
|
198
208
|
inputDisclaimerForPerformance:
|
199
209
|
'Chat messages and trace data from your performance trace are sent to Google and may be seen by human reviewers to improve this feature. This is an experimental AI feature and won\'t always get it right.',
|
200
210
|
/**
|
201
|
-
|
211
|
+
* @description Disclaimer text right after the chat input.
|
202
212
|
*/
|
203
213
|
inputDisclaimerForPerformanceEnterpriseNoLogging:
|
204
214
|
'Chat messages and data from your performance trace are sent to Google. The content you submit and that is generated by this feature will not be used to improve Google’s AI models. This is an experimental AI feature and won’t always get it right.',
|
@@ -210,10 +220,6 @@ const UIStringsNotTranslate = {
|
|
210
220
|
* @description Message displayed in toast in case of any failures while uploading an image file as input.
|
211
221
|
*/
|
212
222
|
uploadImageFailureMessage: 'Failed to upload image. Please try again.',
|
213
|
-
/**
|
214
|
-
* @description Error message shown when AI assistance is not enabled in DevTools settings.
|
215
|
-
*/
|
216
|
-
enableInSettings: 'For AI features to be available, you need to enable AI assistance in DevTools settings.',
|
217
223
|
} as const;
|
218
224
|
|
219
225
|
const str_ = i18n.i18n.registerUIStrings('panels/ai_assistance/AiAssistancePanel.ts', UIStrings);
|
@@ -262,16 +268,28 @@ async function getEmptyStateSuggestions(
|
|
262
268
|
{title: 'Are there any security headers present?', jslogContext: 'network-default'},
|
263
269
|
{title: 'Why is the request failing?', jslogContext: 'network-default'},
|
264
270
|
];
|
265
|
-
case AiAssistanceModel.ConversationType.
|
271
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_FULL:
|
266
272
|
return [
|
267
|
-
{title: 'What
|
268
|
-
{title: 'Where is time being spent?', jslogContext: 'performance-default'},
|
269
|
-
{title: 'How can I optimize this?', jslogContext: 'performance-default'},
|
273
|
+
{title: 'What performance issues exist with my page?', jslogContext: 'performance-default'},
|
270
274
|
];
|
271
275
|
case AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT:
|
276
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE: {
|
277
|
+
const focus = context?.getItem() as TimelineUtils.AIContext.AgentFocus | null;
|
278
|
+
if (focus?.data.type === 'call-tree') {
|
279
|
+
return [
|
280
|
+
{title: 'What\'s the purpose of this work?', jslogContext: 'performance-default'},
|
281
|
+
{title: 'Where is time being spent?', jslogContext: 'performance-default'},
|
282
|
+
{title: 'How can I optimize this?', jslogContext: 'performance-default'},
|
283
|
+
];
|
284
|
+
}
|
285
|
+
|
272
286
|
return [
|
273
287
|
{title: 'Help me optimize my page load performance', jslogContext: 'performance-insights-default'},
|
274
288
|
];
|
289
|
+
}
|
290
|
+
|
291
|
+
default:
|
292
|
+
Platform.assertNever(conversationType, 'Unknown conversation type');
|
275
293
|
}
|
276
294
|
}
|
277
295
|
|
@@ -279,10 +297,12 @@ interface ToolbarViewInput {
|
|
279
297
|
onNewChatClick: () => void;
|
280
298
|
populateHistoryMenu: (contextMenu: UI.ContextMenu.ContextMenu) => void;
|
281
299
|
onDeleteClick: () => void;
|
300
|
+
onExportConversationClick: () => void;
|
282
301
|
onHelpClick: () => void;
|
283
302
|
onSettingsClick: () => void;
|
284
|
-
|
303
|
+
isLoading: boolean;
|
285
304
|
showChatActions: boolean;
|
305
|
+
showActiveConversationActions: boolean;
|
286
306
|
}
|
287
307
|
|
288
308
|
export type ViewInput = ChatViewProps&ToolbarViewInput;
|
@@ -295,7 +315,7 @@ type View = (input: ViewInput, output: PanelViewOutput, target: HTMLElement) =>
|
|
295
315
|
function toolbarView(input: ToolbarViewInput): Lit.LitTemplate {
|
296
316
|
// clang-format off
|
297
317
|
return html`
|
298
|
-
<div class="toolbar-container" role="toolbar"
|
318
|
+
<div class="toolbar-container" role="toolbar" jslog=${VisualLogging.toolbar()}>
|
299
319
|
<devtools-toolbar class="freestyler-left-toolbar" role="presentation">
|
300
320
|
${input.showChatActions
|
301
321
|
? html`<devtools-button
|
@@ -311,17 +331,28 @@ function toolbarView(input: ToolbarViewInput): Lit.LitTemplate {
|
|
311
331
|
aria-label=${i18nString(UIStrings.history)}
|
312
332
|
.iconName=${'history'}
|
313
333
|
.jslogContext=${'freestyler.history'}
|
314
|
-
.populateMenuCall=${input.populateHistoryMenu}
|
334
|
+
.populateMenuCall=${input.populateHistoryMenu}
|
335
|
+
></devtools-menu-button>`
|
315
336
|
: Lit.nothing}
|
316
|
-
${input.
|
317
|
-
|
337
|
+
${input.showActiveConversationActions ? html`
|
338
|
+
<devtools-button
|
318
339
|
title=${i18nString(UIStrings.deleteChat)}
|
319
340
|
aria-label=${i18nString(UIStrings.deleteChat)}
|
320
341
|
.iconName=${'bin'}
|
321
342
|
.jslogContext=${'freestyler.delete'}
|
322
343
|
.variant=${Buttons.Button.Variant.TOOLBAR}
|
323
|
-
@click=${input.onDeleteClick}
|
324
|
-
|
344
|
+
@click=${input.onDeleteClick}>
|
345
|
+
</devtools-button>
|
346
|
+
<devtools-button
|
347
|
+
title=${i18nString(UIStrings.exportConversation)}
|
348
|
+
aria-label=${i18nString(UIStrings.exportConversation)}
|
349
|
+
.iconName=${'download'}
|
350
|
+
.disabled=${input.isLoading}
|
351
|
+
.jslogContext=${'export-ai-conversation'}
|
352
|
+
.variant=${Buttons.Button.Variant.TOOLBAR}
|
353
|
+
@click=${input.onExportConversationClick}>
|
354
|
+
</devtools-button>`
|
355
|
+
: Lit.nothing}
|
325
356
|
</devtools-toolbar>
|
326
357
|
<devtools-toolbar class="freestyler-right-toolbar" role="presentation">
|
327
358
|
<x-link
|
@@ -375,7 +406,6 @@ function defaultView(input: ViewInput, output: PanelViewOutput, target: HTMLElem
|
|
375
406
|
</div>
|
376
407
|
`,
|
377
408
|
target,
|
378
|
-
{ host: input },
|
379
409
|
);
|
380
410
|
// clang-format on
|
381
411
|
}
|
@@ -401,19 +431,12 @@ function createRequestContext(request: SDK.NetworkRequest.NetworkRequest|null):
|
|
401
431
|
return new AiAssistanceModel.RequestContext(request);
|
402
432
|
}
|
403
433
|
|
404
|
-
function
|
405
|
-
null {
|
406
|
-
if (!
|
407
|
-
return null;
|
408
|
-
}
|
409
|
-
return new AiAssistanceModel.CallTreeContext(callTree);
|
410
|
-
}
|
411
|
-
function createPerfInsightContext(insight: TimelineUtils.InsightAIContext.ActiveInsight|null):
|
412
|
-
AiAssistanceModel.InsightContext|null {
|
413
|
-
if (!insight) {
|
434
|
+
function createPerformanceTraceContext(focus: TimelineUtils.AIContext.AgentFocus|null):
|
435
|
+
AiAssistanceModel.PerformanceTraceContext|null {
|
436
|
+
if (!focus) {
|
414
437
|
return null;
|
415
438
|
}
|
416
|
-
return new AiAssistanceModel.
|
439
|
+
return new AiAssistanceModel.PerformanceTraceContext(focus);
|
417
440
|
}
|
418
441
|
|
419
442
|
function agentToConversationType(agent: AiAssistanceModel.AiAgent<unknown>): AiAssistanceModel.ConversationType {
|
@@ -429,54 +452,12 @@ function agentToConversationType(agent: AiAssistanceModel.AiAgent<unknown>): AiA
|
|
429
452
|
}
|
430
453
|
|
431
454
|
if (agent instanceof AiAssistanceModel.PerformanceAgent) {
|
432
|
-
return
|
433
|
-
}
|
434
|
-
|
435
|
-
if (agent instanceof AiAssistanceModel.PerformanceInsightsAgent) {
|
436
|
-
return AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT;
|
455
|
+
return agent.getConversationType();
|
437
456
|
}
|
438
457
|
|
439
458
|
throw new Error('Provided agent does not have a corresponding conversation type');
|
440
459
|
}
|
441
460
|
|
442
|
-
// TODO(crbug.com/416134018): Add piercing of shadow roots and handling of child frames
|
443
|
-
async function inspectElementBySelector(selector: string): Promise<void> {
|
444
|
-
const primaryPageTarget = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
|
445
|
-
const runtimeModel = primaryPageTarget?.model(SDK.RuntimeModel.RuntimeModel);
|
446
|
-
const executionContext = runtimeModel?.defaultExecutionContext();
|
447
|
-
if (!executionContext) {
|
448
|
-
throw new Error('Could not find execution context for executing code');
|
449
|
-
}
|
450
|
-
|
451
|
-
// `inspect()` is not available in `callFunctionOn()`, but it is in `evaluate()`.
|
452
|
-
// We therefore get a reference to `inspect()` via `evaluate()` and then pass
|
453
|
-
// this reference as an argument to `callFunctionOn()`.
|
454
|
-
const inspectReference = await executionContext.evaluate(
|
455
|
-
{
|
456
|
-
expression: 'window.inspect',
|
457
|
-
includeCommandLineAPI: true,
|
458
|
-
returnByValue: false,
|
459
|
-
},
|
460
|
-
/* userGesture */ false,
|
461
|
-
/* awaitPromise */ false,
|
462
|
-
);
|
463
|
-
if ('error' in inspectReference || inspectReference.exceptionDetails) {
|
464
|
-
throw new Error('Cannot find \'window.inspect\'');
|
465
|
-
}
|
466
|
-
|
467
|
-
const inspectResult = await executionContext.callFunctionOn({
|
468
|
-
functionDeclaration: 'async function (inspect, selector) { return inspect(document.querySelector(selector)); }',
|
469
|
-
arguments: [{objectId: inspectReference.object.objectId}, {value: selector}],
|
470
|
-
userGesture: false,
|
471
|
-
awaitPromise: true,
|
472
|
-
returnByValue: false,
|
473
|
-
});
|
474
|
-
if ('error' in inspectResult || inspectResult.exceptionDetails ||
|
475
|
-
SDK.RemoteObject.RemoteObject.isNullOrUndefined(inspectResult.object)) {
|
476
|
-
throw new Error(`'document.querySelector()' could not find matching element for '${selector}' selector`);
|
477
|
-
}
|
478
|
-
}
|
479
|
-
|
480
461
|
let panelInstance: AiAssistancePanel;
|
481
462
|
export class AiAssistancePanel extends UI.Panel.Panel {
|
482
463
|
static panelName = 'freestyler';
|
@@ -492,12 +473,10 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
492
473
|
|
493
474
|
#conversationAgent?: AiAssistanceModel.AiAgent<unknown>;
|
494
475
|
#conversation?: AiAssistanceModel.Conversation;
|
495
|
-
#historicalConversations: AiAssistanceModel.Conversation[] = [];
|
496
476
|
|
497
477
|
#selectedFile: AiAssistanceModel.FileContext|null = null;
|
498
478
|
#selectedElement: AiAssistanceModel.NodeContext|null = null;
|
499
|
-
#
|
500
|
-
#selectedPerformanceInsight: AiAssistanceModel.InsightContext|null = null;
|
479
|
+
#selectedPerformanceTrace: AiAssistanceModel.PerformanceTraceContext|null = null;
|
501
480
|
#selectedRequest: AiAssistanceModel.RequestContext|null = null;
|
502
481
|
|
503
482
|
// Messages displayed in the `ChatView` component.
|
@@ -525,6 +504,8 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
525
504
|
// Used to disable send button when there is not text input.
|
526
505
|
#isTextInputEmpty = true;
|
527
506
|
#timelinePanelInstance: TimelinePanel.TimelinePanel.TimelinePanel|null = null;
|
507
|
+
#conversationHandler: AiAssistanceModel.ConversationHandler;
|
508
|
+
#runAbortController = new AbortController();
|
528
509
|
|
529
510
|
constructor(private view: View = defaultView, {aidaClient, aidaAvailability, syncInfo}: {
|
530
511
|
aidaClient: Host.AidaClient.AidaClient,
|
@@ -541,15 +522,15 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
541
522
|
accountImage: syncInfo.accountImage,
|
542
523
|
accountFullName: syncInfo.accountFullName,
|
543
524
|
};
|
544
|
-
|
545
|
-
|
546
|
-
return new AiAssistanceModel.Conversation(item.type, item.history, item.id, true, item.isExternal);
|
547
|
-
});
|
525
|
+
this.#conversationHandler =
|
526
|
+
AiAssistanceModel.ConversationHandler.instance({aidaClient: this.#aidaClient, aidaAvailability});
|
548
527
|
|
549
528
|
if (UI.ActionRegistry.ActionRegistry.instance().hasAction('elements.toggle-element-search')) {
|
550
529
|
this.#toggleSearchElementAction =
|
551
530
|
UI.ActionRegistry.ActionRegistry.instance().getAction('elements.toggle-element-search');
|
552
531
|
}
|
532
|
+
AiAssistanceModel.AiHistoryStorage.instance().addEventListener(
|
533
|
+
AiAssistanceModel.Events.HISTORY_DELETED, this.#onHistoryDeleted, this);
|
553
534
|
}
|
554
535
|
|
555
536
|
#getChatUiState(): ChatViewState {
|
@@ -579,47 +560,6 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
579
560
|
}
|
580
561
|
}
|
581
562
|
|
582
|
-
#createAgent(conversationType: AiAssistanceModel.ConversationType): AiAssistanceModel.AiAgent<unknown> {
|
583
|
-
const options = {
|
584
|
-
aidaClient: this.#aidaClient,
|
585
|
-
serverSideLoggingEnabled: this.#serverSideLoggingEnabled,
|
586
|
-
};
|
587
|
-
let agent: AiAssistanceModel.AiAgent<unknown>;
|
588
|
-
switch (conversationType) {
|
589
|
-
case AiAssistanceModel.ConversationType.STYLING: {
|
590
|
-
agent = new AiAssistanceModel.StylingAgent({
|
591
|
-
...options,
|
592
|
-
changeManager: this.#changeManager,
|
593
|
-
});
|
594
|
-
if (isAiAssistanceStylingWithFunctionCallingEnabled()) {
|
595
|
-
agent = new AiAssistanceModel.StylingAgentWithFunctionCalling({
|
596
|
-
...options,
|
597
|
-
changeManager: this.#changeManager,
|
598
|
-
});
|
599
|
-
}
|
600
|
-
|
601
|
-
break;
|
602
|
-
}
|
603
|
-
case AiAssistanceModel.ConversationType.NETWORK: {
|
604
|
-
agent = new AiAssistanceModel.NetworkAgent(options);
|
605
|
-
break;
|
606
|
-
}
|
607
|
-
case AiAssistanceModel.ConversationType.FILE: {
|
608
|
-
agent = new AiAssistanceModel.FileAgent(options);
|
609
|
-
break;
|
610
|
-
}
|
611
|
-
case AiAssistanceModel.ConversationType.PERFORMANCE: {
|
612
|
-
agent = new AiAssistanceModel.PerformanceAgent(options);
|
613
|
-
break;
|
614
|
-
}
|
615
|
-
case AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT: {
|
616
|
-
agent = new AiAssistanceModel.PerformanceInsightsAgent(options);
|
617
|
-
break;
|
618
|
-
}
|
619
|
-
}
|
620
|
-
return agent;
|
621
|
-
}
|
622
|
-
|
623
563
|
static async instance(opts: {
|
624
564
|
forceNew: boolean|null,
|
625
565
|
}|undefined = {forceNew: null}): Promise<AiAssistancePanel> {
|
@@ -672,12 +612,11 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
672
612
|
return;
|
673
613
|
}
|
674
614
|
const {hostConfig} = Root.Runtime;
|
675
|
-
const
|
676
|
-
|
677
|
-
const isNetworkPanelVisible =
|
678
|
-
const isSourcesPanelVisible =
|
679
|
-
const isPerformancePanelVisible =
|
680
|
-
Boolean(UI.Context.Context.instance().flavor(TimelinePanel.TimelinePanel.TimelinePanel));
|
615
|
+
const viewManager = UI.ViewManager.ViewManager.instance();
|
616
|
+
const isElementsPanelVisible = viewManager.isViewVisible('elements');
|
617
|
+
const isNetworkPanelVisible = viewManager.isViewVisible('network');
|
618
|
+
const isSourcesPanelVisible = viewManager.isViewVisible('sources');
|
619
|
+
const isPerformancePanelVisible = viewManager.isViewVisible('timeline');
|
681
620
|
|
682
621
|
// Check if the user has an insight expanded in the performance panel sidebar.
|
683
622
|
// If they have, we default to the Insights agent; otherwise we fallback to
|
@@ -700,7 +639,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
700
639
|
hostConfig.devToolsAiAssistancePerformanceAgent?.insightsEnabled && userHasExpandedPerfInsight) {
|
701
640
|
targetConversationType = AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT;
|
702
641
|
} else if (isPerformancePanelVisible && hostConfig.devToolsAiAssistancePerformanceAgent?.enabled) {
|
703
|
-
targetConversationType = AiAssistanceModel.ConversationType.
|
642
|
+
targetConversationType = AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE;
|
704
643
|
}
|
705
644
|
|
706
645
|
if (this.#conversation?.type === targetConversationType) {
|
@@ -709,44 +648,45 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
709
648
|
return;
|
710
649
|
}
|
711
650
|
|
712
|
-
const agent = targetConversationType ?
|
713
|
-
|
651
|
+
const agent = targetConversationType ?
|
652
|
+
this.#conversationHandler.createAgent(targetConversationType, this.#changeManager) :
|
653
|
+
undefined;
|
654
|
+
this.#updateConversationState({agent});
|
714
655
|
}
|
715
656
|
|
716
|
-
#updateConversationState(
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
if (this.#conversationAgent !== agent) {
|
657
|
+
#updateConversationState(opts?: {
|
658
|
+
agent?: AiAssistanceModel.AiAgent<unknown>,
|
659
|
+
conversation?: AiAssistanceModel.Conversation,
|
660
|
+
}): void {
|
661
|
+
if (this.#conversationAgent !== opts?.agent) {
|
721
662
|
// Cancel any previous conversation
|
722
663
|
this.#cancel();
|
723
664
|
this.#messages = [];
|
724
665
|
this.#isLoading = false;
|
725
666
|
this.#conversation?.archiveConversation();
|
726
|
-
this.#conversationAgent = agent;
|
667
|
+
this.#conversationAgent = opts?.agent;
|
727
668
|
|
728
669
|
// If we get a new agent we need to
|
729
670
|
// create a new conversation along side it
|
730
|
-
if (agent) {
|
671
|
+
if (opts?.agent) {
|
731
672
|
this.#conversation = new AiAssistanceModel.Conversation(
|
732
|
-
agentToConversationType(agent),
|
673
|
+
agentToConversationType(opts?.agent),
|
733
674
|
[],
|
734
|
-
agent.id,
|
675
|
+
opts?.agent.id,
|
735
676
|
false,
|
736
677
|
);
|
737
|
-
this.#historicalConversations.push(this.#conversation);
|
738
678
|
}
|
739
679
|
}
|
740
680
|
|
741
|
-
if (!agent) {
|
681
|
+
if (!opts?.agent) {
|
742
682
|
this.#conversation = undefined;
|
743
683
|
// We need to run doConversation separately
|
744
684
|
this.#messages = [];
|
745
685
|
// If a no new agent is provided
|
746
686
|
// but conversation is
|
747
687
|
// update with history conversation
|
748
|
-
if (conversation) {
|
749
|
-
this.#conversation = conversation;
|
688
|
+
if (opts?.conversation) {
|
689
|
+
this.#conversation = opts?.conversation;
|
750
690
|
}
|
751
691
|
}
|
752
692
|
|
@@ -767,12 +707,10 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
767
707
|
createNodeContext(selectedElementFilter(UI.Context.Context.instance().flavor(SDK.DOMModel.DOMNode)));
|
768
708
|
this.#selectedRequest =
|
769
709
|
createRequestContext(UI.Context.Context.instance().flavor(SDK.NetworkRequest.NetworkRequest));
|
770
|
-
this.#
|
771
|
-
|
772
|
-
this.#selectedPerformanceInsight =
|
773
|
-
createPerfInsightContext(UI.Context.Context.instance().flavor(TimelineUtils.InsightAIContext.ActiveInsight));
|
710
|
+
this.#selectedPerformanceTrace =
|
711
|
+
createPerformanceTraceContext(UI.Context.Context.instance().flavor(TimelineUtils.AIContext.AgentFocus));
|
774
712
|
this.#selectedFile = createFileContext(UI.Context.Context.instance().flavor(Workspace.UISourceCode.UISourceCode));
|
775
|
-
this.#updateConversationState(this.#conversationAgent);
|
713
|
+
this.#updateConversationState({agent: this.#conversationAgent});
|
776
714
|
|
777
715
|
this.#aiAssistanceEnabledSetting?.addChangeListener(this.requestUpdate, this);
|
778
716
|
Host.AidaClient.HostConfigTracker.instance().addEventListener(
|
@@ -783,20 +721,12 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
783
721
|
UI.Context.Context.instance().addFlavorChangeListener(
|
784
722
|
SDK.NetworkRequest.NetworkRequest, this.#handleNetworkRequestFlavorChange);
|
785
723
|
UI.Context.Context.instance().addFlavorChangeListener(
|
786
|
-
TimelineUtils.
|
724
|
+
TimelineUtils.AIContext.AgentFocus, this.#handlePerformanceTraceFlavorChange);
|
787
725
|
UI.Context.Context.instance().addFlavorChangeListener(
|
788
726
|
Workspace.UISourceCode.UISourceCode, this.#handleUISourceCodeFlavorChange);
|
789
|
-
UI.Context.Context.instance().addFlavorChangeListener(
|
790
|
-
TimelineUtils.InsightAIContext.ActiveInsight, this.#handlePerfInsightFlavorChange);
|
791
727
|
|
792
|
-
UI.
|
793
|
-
|
794
|
-
UI.Context.Context.instance().addFlavorChangeListener(
|
795
|
-
NetworkPanel.NetworkPanel.NetworkPanel, this.#selectDefaultAgentIfNeeded, this);
|
796
|
-
UI.Context.Context.instance().addFlavorChangeListener(
|
797
|
-
SourcesPanel.SourcesPanel.SourcesPanel, this.#selectDefaultAgentIfNeeded, this);
|
798
|
-
UI.Context.Context.instance().addFlavorChangeListener(
|
799
|
-
TimelinePanel.TimelinePanel.TimelinePanel, this.#selectDefaultAgentIfNeeded, this);
|
728
|
+
UI.ViewManager.ViewManager.instance().addEventListener(
|
729
|
+
UI.ViewManager.Events.VIEW_VISIBILITY_CHANGED, this.#selectDefaultAgentIfNeeded, this);
|
800
730
|
|
801
731
|
SDK.TargetManager.TargetManager.instance().addModelListener(
|
802
732
|
SDK.DOMModel.DOMModel, SDK.DOMModel.Events.AttrModified, this.#handleDOMNodeAttrChange, this);
|
@@ -813,6 +743,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
813
743
|
UI.Context.Context.instance().addFlavorChangeListener(
|
814
744
|
TimelinePanel.TimelinePanel.TimelinePanel, this.#bindTimelineTraceListener, this);
|
815
745
|
this.#bindTimelineTraceListener();
|
746
|
+
this.#selectDefaultAgentIfNeeded();
|
816
747
|
|
817
748
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistancePanelOpened);
|
818
749
|
}
|
@@ -827,19 +758,11 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
827
758
|
UI.Context.Context.instance().removeFlavorChangeListener(
|
828
759
|
SDK.NetworkRequest.NetworkRequest, this.#handleNetworkRequestFlavorChange);
|
829
760
|
UI.Context.Context.instance().removeFlavorChangeListener(
|
830
|
-
TimelineUtils.
|
831
|
-
UI.Context.Context.instance().removeFlavorChangeListener(
|
832
|
-
TimelineUtils.InsightAIContext.ActiveInsight, this.#handlePerfInsightFlavorChange);
|
761
|
+
TimelineUtils.AIContext.AgentFocus, this.#handlePerformanceTraceFlavorChange);
|
833
762
|
UI.Context.Context.instance().removeFlavorChangeListener(
|
834
763
|
Workspace.UISourceCode.UISourceCode, this.#handleUISourceCodeFlavorChange);
|
835
|
-
UI.
|
836
|
-
|
837
|
-
UI.Context.Context.instance().removeFlavorChangeListener(
|
838
|
-
NetworkPanel.NetworkPanel.NetworkPanel, this.#selectDefaultAgentIfNeeded, this);
|
839
|
-
UI.Context.Context.instance().removeFlavorChangeListener(
|
840
|
-
SourcesPanel.SourcesPanel.SourcesPanel, this.#selectDefaultAgentIfNeeded, this);
|
841
|
-
UI.Context.Context.instance().removeFlavorChangeListener(
|
842
|
-
TimelinePanel.TimelinePanel.TimelinePanel, this.#selectDefaultAgentIfNeeded, this);
|
764
|
+
UI.ViewManager.ViewManager.instance().removeEventListener(
|
765
|
+
UI.ViewManager.Events.VIEW_VISIBILITY_CHANGED, this.#selectDefaultAgentIfNeeded, this);
|
843
766
|
UI.Context.Context.instance().removeFlavorChangeListener(
|
844
767
|
TimelinePanel.TimelinePanel.TimelinePanel, this.#bindTimelineTraceListener, this);
|
845
768
|
SDK.TargetManager.TargetManager.instance().removeModelListener(
|
@@ -885,7 +808,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
885
808
|
}
|
886
809
|
|
887
810
|
this.#selectedElement = createNodeContext(selectedElementFilter(ev.data));
|
888
|
-
this.#updateConversationState(this.#conversationAgent);
|
811
|
+
this.#updateConversationState({agent: this.#conversationAgent});
|
889
812
|
};
|
890
813
|
|
891
814
|
#handleDOMNodeAttrChange =
|
@@ -904,27 +827,38 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
904
827
|
}
|
905
828
|
|
906
829
|
this.#selectedRequest = Boolean(ev.data) ? new AiAssistanceModel.RequestContext(ev.data) : null;
|
907
|
-
this.#updateConversationState(this.#conversationAgent);
|
830
|
+
this.#updateConversationState({agent: this.#conversationAgent});
|
908
831
|
};
|
909
832
|
|
910
|
-
#
|
911
|
-
(ev: Common.EventTarget.EventTargetEvent<TimelineUtils.
|
912
|
-
if (this.#
|
833
|
+
#handlePerformanceTraceFlavorChange =
|
834
|
+
(ev: Common.EventTarget.EventTargetEvent<TimelineUtils.AIContext.AgentFocus>): void => {
|
835
|
+
if (this.#selectedPerformanceTrace?.getItem() === ev.data) {
|
913
836
|
return;
|
914
837
|
}
|
915
838
|
|
916
|
-
this.#
|
917
|
-
|
918
|
-
|
839
|
+
this.#selectedPerformanceTrace =
|
840
|
+
Boolean(ev.data) ? new AiAssistanceModel.PerformanceTraceContext(ev.data) : null;
|
841
|
+
|
842
|
+
let conversationType: AiAssistanceModel.ConversationType|undefined;
|
843
|
+
if (ev.data) {
|
844
|
+
if (ev.data.data.type === 'full') {
|
845
|
+
conversationType = AiAssistanceModel.ConversationType.PERFORMANCE_FULL;
|
846
|
+
} else if (ev.data.data.type === 'insight') {
|
847
|
+
conversationType = AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT;
|
848
|
+
} else if (ev.data.data.type === 'call-tree') {
|
849
|
+
conversationType = AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE;
|
850
|
+
} else {
|
851
|
+
Platform.assertNever(ev.data.data, 'Unknown agent focus');
|
852
|
+
}
|
853
|
+
}
|
919
854
|
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
855
|
+
let agent = this.#conversationAgent;
|
856
|
+
if (conversationType && agent instanceof AiAssistanceModel.PerformanceAgent &&
|
857
|
+
agent.getConversationType() !== conversationType) {
|
858
|
+
agent = this.#conversationHandler.createAgent(conversationType);
|
924
859
|
}
|
925
860
|
|
926
|
-
this.#
|
927
|
-
this.#updateConversationState(this.#conversationAgent);
|
861
|
+
this.#updateConversationState({agent: this.#conversationAgent});
|
928
862
|
};
|
929
863
|
|
930
864
|
#handleUISourceCodeFlavorChange =
|
@@ -937,7 +871,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
937
871
|
return;
|
938
872
|
}
|
939
873
|
this.#selectedFile = new AiAssistanceModel.FileContext(ev.data);
|
940
|
-
this.#updateConversationState(this.#conversationAgent);
|
874
|
+
this.#updateConversationState({agent: this.#conversationAgent});
|
941
875
|
};
|
942
876
|
|
943
877
|
#onPrimaryPageChanged(): void {
|
@@ -977,8 +911,8 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
977
911
|
multimodalInputEnabled: isAiAssistanceMultimodalInputEnabled() &&
|
978
912
|
this.#conversation?.type === AiAssistanceModel.ConversationType.STYLING,
|
979
913
|
imageInput: this.#imageInput,
|
980
|
-
showDeleteHistoryAction: Boolean(this.#conversation && !this.#conversation.isEmpty),
|
981
914
|
showChatActions: this.#shouldShowChatActions(),
|
915
|
+
showActiveConversationActions: Boolean(this.#conversation && !this.#conversation.isEmpty),
|
982
916
|
isTextInputDisabled: this.#isTextInputDisabled(),
|
983
917
|
emptyStateSuggestions,
|
984
918
|
inputPlaceholder: this.#getChatInputPlaceholder(),
|
@@ -990,6 +924,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
990
924
|
onNewChatClick: this.#handleNewChatRequest.bind(this),
|
991
925
|
populateHistoryMenu: this.#populateHistoryMenu.bind(this),
|
992
926
|
onDeleteClick: this.#onDeleteClicked.bind(this),
|
927
|
+
onExportConversationClick: this.#onExportConversationClick.bind(this),
|
993
928
|
onHelpClick: () => {
|
994
929
|
UI.UIUtils.openInNewTab(AI_ASSISTANCE_HELP);
|
995
930
|
},
|
@@ -1012,13 +947,26 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1012
947
|
onTakeScreenshot: isAiAssistanceMultimodalInputEnabled() ? this.#handleTakeScreenshot.bind(this) : undefined,
|
1013
948
|
onRemoveImageInput: isAiAssistanceMultimodalInputEnabled() ? this.#handleRemoveImageInput.bind(this) :
|
1014
949
|
undefined,
|
950
|
+
onCopyResponseClick: this.#onCopyResponseClick.bind(this),
|
1015
951
|
onTextInputChange: this.#handleTextInputChange.bind(this),
|
1016
952
|
onLoadImage: isAiAssistanceMultimodalUploadInputEnabled() ? this.#handleLoadImage.bind(this) : undefined,
|
1017
953
|
},
|
1018
954
|
this.#viewOutput, this.contentElement);
|
1019
955
|
}
|
1020
956
|
|
957
|
+
#onCopyResponseClick(message: ModelChatMessage): void {
|
958
|
+
const markdown = getResponseMarkdown(message);
|
959
|
+
if (markdown) {
|
960
|
+
Host.InspectorFrontendHost.InspectorFrontendHostInstance.copyText(markdown);
|
961
|
+
Snackbars.Snackbar.Snackbar.show({
|
962
|
+
message: i18nString(UIStrings.responseCopiedToClipboard),
|
963
|
+
});
|
964
|
+
}
|
965
|
+
}
|
966
|
+
|
1021
967
|
#handleSelectElementClick(): void {
|
968
|
+
UI.Context.Context.instance().setFlavor(
|
969
|
+
Common.ReturnToPanel.ReturnToPanelFlavor, new Common.ReturnToPanel.ReturnToPanelFlavor(this.panelName));
|
1022
970
|
void this.#toggleSearchElementAction?.execute();
|
1023
971
|
}
|
1024
972
|
|
@@ -1085,7 +1033,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1085
1033
|
case AiAssistanceModel.ConversationType.NETWORK:
|
1086
1034
|
return this.#selectedContext ? lockedString(UIStringsNotTranslate.inputPlaceholderForNetwork) :
|
1087
1035
|
lockedString(UIStringsNotTranslate.inputPlaceholderForNetworkNoContext);
|
1088
|
-
case AiAssistanceModel.ConversationType.
|
1036
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE: {
|
1089
1037
|
const perfPanel = UI.Context.Context.instance().flavor(TimelinePanel.TimelinePanel.TimelinePanel);
|
1090
1038
|
if (perfPanel?.hasActiveTrace()) {
|
1091
1039
|
return this.#selectedContext ? lockedString(UIStringsNotTranslate.inputPlaceholderForPerformance) :
|
@@ -1097,6 +1045,9 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1097
1045
|
return this.#selectedContext ?
|
1098
1046
|
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceInsights) :
|
1099
1047
|
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceInsightsNoContext);
|
1048
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_FULL:
|
1049
|
+
return this.#selectedContext ? lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceTrace) :
|
1050
|
+
lockedString(UIStringsNotTranslate.inputPlaceholderForPerformanceTraceNoContext);
|
1100
1051
|
}
|
1101
1052
|
}
|
1102
1053
|
|
@@ -1127,7 +1078,8 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1127
1078
|
|
1128
1079
|
// It is deliberate that both Performance agents use the same disclaimer
|
1129
1080
|
// text and this has been approved by Privacy.
|
1130
|
-
case AiAssistanceModel.ConversationType.
|
1081
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_FULL:
|
1082
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE:
|
1131
1083
|
case AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT:
|
1132
1084
|
if (noLogging) {
|
1133
1085
|
return lockedString(UIStringsNotTranslate.inputDisclaimerForPerformanceEnterpriseNoLogging);
|
@@ -1161,22 +1113,27 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1161
1113
|
if (context instanceof AiAssistanceModel.FileContext) {
|
1162
1114
|
return Common.Revealer.reveal(context.getItem().uiLocation(0, 0));
|
1163
1115
|
}
|
1164
|
-
if (context instanceof AiAssistanceModel.
|
1165
|
-
const
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1116
|
+
if (context instanceof AiAssistanceModel.PerformanceTraceContext) {
|
1117
|
+
const focus = context.getItem().data;
|
1118
|
+
if (focus.type === 'full') {
|
1119
|
+
return;
|
1120
|
+
}
|
1121
|
+
if (focus.type === 'call-tree') {
|
1122
|
+
const event = focus.callTree.selectedNode?.event ?? focus.callTree.rootNode.event;
|
1123
|
+
const trace = new SDK.TraceObject.RevealableEvent(event);
|
1124
|
+
return Common.Revealer.reveal(trace);
|
1125
|
+
}
|
1126
|
+
if (focus.type === 'insight') {
|
1127
|
+
return Common.Revealer.reveal(focus.insight);
|
1128
|
+
}
|
1129
|
+
Platform.assertNever(focus, 'Unknown agent focus');
|
1173
1130
|
}
|
1174
1131
|
// Node picker is using linkifier.
|
1175
1132
|
}
|
1176
1133
|
|
1177
|
-
handleAction(actionId: string): void {
|
1178
|
-
if (this.#isLoading) {
|
1179
|
-
// If running some queries already, focus the input with the abort
|
1134
|
+
handleAction(actionId: string, opts?: Record<string, unknown>): void {
|
1135
|
+
if (this.#isLoading && !opts?.['prompt']) {
|
1136
|
+
// If running some queries already, and this action doesn't contain a predefined prompt, focus the input with the abort
|
1180
1137
|
// button and do nothing.
|
1181
1138
|
this.#viewOutput.chatView?.focusTextInput();
|
1182
1139
|
return;
|
@@ -1205,8 +1162,8 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1205
1162
|
break;
|
1206
1163
|
}
|
1207
1164
|
case 'drjones.performance-panel-context': {
|
1208
|
-
Host.userMetrics.actionTaken(Host.UserMetrics.Action.
|
1209
|
-
targetConversationType = AiAssistanceModel.ConversationType.
|
1165
|
+
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceOpenedFromPerformancePanelCallTree);
|
1166
|
+
targetConversationType = AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE;
|
1210
1167
|
break;
|
1211
1168
|
}
|
1212
1169
|
case 'drjones.performance-insight-context': {
|
@@ -1214,6 +1171,11 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1214
1171
|
targetConversationType = AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT;
|
1215
1172
|
break;
|
1216
1173
|
}
|
1174
|
+
case 'drjones.performance-panel-full-context': {
|
1175
|
+
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceOpenedFromPerformanceFullButton);
|
1176
|
+
targetConversationType = AiAssistanceModel.ConversationType.PERFORMANCE_FULL;
|
1177
|
+
break;
|
1178
|
+
}
|
1217
1179
|
case 'drjones.sources-floating-button': {
|
1218
1180
|
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceOpenedFromSourcesPanelFloatingButton);
|
1219
1181
|
targetConversationType = AiAssistanceModel.ConversationType.FILE;
|
@@ -1232,15 +1194,31 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1232
1194
|
|
1233
1195
|
let agent = this.#conversationAgent;
|
1234
1196
|
if (!this.#conversation || !this.#conversationAgent || this.#conversation.type !== targetConversationType ||
|
1235
|
-
this.#conversation?.isEmpty ||
|
1236
|
-
|
1197
|
+
this.#conversation?.isEmpty ||
|
1198
|
+
targetConversationType === AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE ||
|
1199
|
+
(agent instanceof AiAssistanceModel.PerformanceAgent &&
|
1200
|
+
agent.getConversationType() !== targetConversationType)) {
|
1201
|
+
agent = this.#conversationHandler.createAgent(targetConversationType, this.#changeManager);
|
1202
|
+
}
|
1203
|
+
this.#updateConversationState({agent});
|
1204
|
+
const predefinedPrompt = opts?.['prompt'];
|
1205
|
+
if (predefinedPrompt && typeof predefinedPrompt === 'string') {
|
1206
|
+
this.#imageInput = undefined;
|
1207
|
+
this.#isTextInputEmpty = true;
|
1208
|
+
Host.userMetrics.actionTaken(Host.UserMetrics.Action.AiAssistanceQuerySubmitted);
|
1209
|
+
if (this.#blockedByCrossOrigin) {
|
1210
|
+
this.#handleNewChatRequest();
|
1211
|
+
}
|
1212
|
+
void this.#startConversation(predefinedPrompt);
|
1213
|
+
} else {
|
1214
|
+
this.#viewOutput.chatView?.focusTextInput();
|
1237
1215
|
}
|
1238
|
-
this.#updateConversationState(agent);
|
1239
|
-
this.#viewOutput.chatView?.focusTextInput();
|
1240
1216
|
}
|
1241
1217
|
|
1242
1218
|
#populateHistoryMenu(contextMenu: UI.ContextMenu.ContextMenu): void {
|
1243
|
-
|
1219
|
+
const historicalConversations = AiAssistanceModel.AiHistoryStorage.instance().getHistory().map(
|
1220
|
+
serializedConversation => AiAssistanceModel.Conversation.fromSerializedConversation(serializedConversation));
|
1221
|
+
for (const conversation of historicalConversations.reverse()) {
|
1244
1222
|
if (conversation.isEmpty) {
|
1245
1223
|
continue;
|
1246
1224
|
}
|
@@ -1250,7 +1228,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1250
1228
|
}
|
1251
1229
|
|
1252
1230
|
contextMenu.defaultSection().appendCheckboxItem(title, () => {
|
1253
|
-
void this.#
|
1231
|
+
void this.#openHistoricConversation(conversation);
|
1254
1232
|
}, {checked: (this.#conversation === conversation)});
|
1255
1233
|
}
|
1256
1234
|
|
@@ -1264,7 +1242,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1264
1242
|
contextMenu.footerSection().appendItem(
|
1265
1243
|
i18nString(UIStrings.clearChatHistory),
|
1266
1244
|
() => {
|
1267
|
-
|
1245
|
+
void AiAssistanceModel.AiHistoryStorage.instance().deleteAll();
|
1268
1246
|
},
|
1269
1247
|
{
|
1270
1248
|
disabled: historyEmpty,
|
@@ -1272,9 +1250,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1272
1250
|
);
|
1273
1251
|
}
|
1274
1252
|
|
1275
|
-
#
|
1276
|
-
this.#historicalConversations = [];
|
1277
|
-
void AiAssistanceModel.AiHistoryStorage.instance().deleteAll();
|
1253
|
+
#onHistoryDeleted(): void {
|
1278
1254
|
this.#updateConversationState();
|
1279
1255
|
}
|
1280
1256
|
|
@@ -1283,25 +1259,35 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1283
1259
|
return;
|
1284
1260
|
}
|
1285
1261
|
|
1286
|
-
this.#historicalConversations =
|
1287
|
-
this.#historicalConversations.filter(conversation => conversation !== this.#conversation);
|
1288
1262
|
void AiAssistanceModel.AiHistoryStorage.instance().deleteHistoryEntry(this.#conversation.id);
|
1289
1263
|
this.#updateConversationState();
|
1290
|
-
UI.ARIAUtils.alert(i18nString(UIStrings.chatDeleted));
|
1264
|
+
UI.ARIAUtils.LiveAnnouncer.alert(i18nString(UIStrings.chatDeleted));
|
1265
|
+
}
|
1266
|
+
|
1267
|
+
async #onExportConversationClick(): Promise<void> {
|
1268
|
+
if (!this.#conversation) {
|
1269
|
+
return;
|
1270
|
+
}
|
1271
|
+
const markdownContent = this.#conversation.getConversationMarkdown();
|
1272
|
+
const titleFormatted = Platform.StringUtilities.toSnakeCase(this.#conversation.title || '');
|
1273
|
+
const contentData = new TextUtils.ContentData.ContentData(markdownContent, false, 'text/markdown');
|
1274
|
+
const filename = `devtools_${titleFormatted || 'conversation'}.md` as Platform.DevToolsPath.RawPathString;
|
1275
|
+
await Workspace.FileManager.FileManager.instance().save(filename, contentData, true);
|
1276
|
+
Workspace.FileManager.FileManager.instance().close(filename);
|
1291
1277
|
}
|
1292
1278
|
|
1293
|
-
async #
|
1279
|
+
async #openHistoricConversation(conversation: AiAssistanceModel.Conversation): Promise<void> {
|
1294
1280
|
if (this.#conversation === conversation) {
|
1295
1281
|
return;
|
1296
1282
|
}
|
1297
1283
|
|
1298
|
-
this.#updateConversationState(conversation);
|
1284
|
+
this.#updateConversationState({conversation});
|
1299
1285
|
await this.#doConversation(conversation.history);
|
1300
1286
|
}
|
1301
1287
|
|
1302
1288
|
#handleNewChatRequest(): void {
|
1303
1289
|
this.#updateConversationState();
|
1304
|
-
UI.ARIAUtils.alert(i18nString(UIStrings.newChatCreated));
|
1290
|
+
UI.ARIAUtils.LiveAnnouncer.alert(i18nString(UIStrings.newChatCreated));
|
1305
1291
|
}
|
1306
1292
|
|
1307
1293
|
async #handleTakeScreenshot(): Promise<void> {
|
@@ -1408,7 +1394,6 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1408
1394
|
});
|
1409
1395
|
}
|
1410
1396
|
|
1411
|
-
#runAbortController = new AbortController();
|
1412
1397
|
#cancel(): void {
|
1413
1398
|
this.#runAbortController.abort();
|
1414
1399
|
this.#runAbortController = new AbortController();
|
@@ -1447,11 +1432,10 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1447
1432
|
case AiAssistanceModel.ConversationType.NETWORK:
|
1448
1433
|
context = this.#selectedRequest;
|
1449
1434
|
break;
|
1450
|
-
case AiAssistanceModel.ConversationType.
|
1451
|
-
|
1452
|
-
break;
|
1435
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_FULL:
|
1436
|
+
case AiAssistanceModel.ConversationType.PERFORMANCE_CALL_TREE:
|
1453
1437
|
case AiAssistanceModel.ConversationType.PERFORMANCE_INSIGHT:
|
1454
|
-
context = this.#
|
1438
|
+
context = this.#selectedPerformanceTrace;
|
1455
1439
|
break;
|
1456
1440
|
}
|
1457
1441
|
return context;
|
@@ -1485,29 +1469,14 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1485
1469
|
if (this.#conversation) {
|
1486
1470
|
void VisualLogging.logFunctionCall(`start-conversation-${this.#conversation.type}`, 'ui');
|
1487
1471
|
}
|
1488
|
-
const
|
1472
|
+
const generator = this.#conversationAgent.run(
|
1489
1473
|
text, {
|
1490
1474
|
signal,
|
1491
1475
|
selected: context,
|
1492
1476
|
},
|
1493
1477
|
multimodalInput);
|
1494
|
-
|
1495
|
-
await this.#doConversation(
|
1496
|
-
UI.ARIAUtils.alert(lockedString(UIStringsNotTranslate.answerReady));
|
1497
|
-
}
|
1498
|
-
|
1499
|
-
async *
|
1500
|
-
#saveResponsesToCurrentConversation(items: AsyncIterable<AiAssistanceModel.ResponseData, void, void>):
|
1501
|
-
AsyncGenerator<AiAssistanceModel.ResponseData, void, void> {
|
1502
|
-
const currentConversation = this.#conversation;
|
1503
|
-
|
1504
|
-
for await (const data of items) {
|
1505
|
-
// We don't want to save partial responses to the conversation history.
|
1506
|
-
if (data.type !== AiAssistanceModel.ResponseType.ANSWER || data.complete) {
|
1507
|
-
void currentConversation?.addHistoryItem(data);
|
1508
|
-
}
|
1509
|
-
yield data;
|
1510
|
-
}
|
1478
|
+
const generatorWithHistory = this.#conversationHandler.handleConversationWithHistory(generator, this.#conversation);
|
1479
|
+
await this.#doConversation(generatorWithHistory);
|
1511
1480
|
}
|
1512
1481
|
|
1513
1482
|
async #doConversation(
|
@@ -1531,6 +1500,8 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1531
1500
|
}
|
1532
1501
|
|
1533
1502
|
this.#isLoading = true;
|
1503
|
+
let announcedAnswerLoading = false;
|
1504
|
+
let announcedAnswerReady = false;
|
1534
1505
|
for await (const data of items) {
|
1535
1506
|
step.sideEffect = undefined;
|
1536
1507
|
switch (data.type) {
|
@@ -1628,7 +1599,7 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1628
1599
|
}
|
1629
1600
|
}
|
1630
1601
|
|
1631
|
-
// Commit update
|
1602
|
+
// Commit update intermediate step when not
|
1632
1603
|
// in read only mode.
|
1633
1604
|
if (!this.#conversation?.isReadOnly) {
|
1634
1605
|
this.requestUpdate();
|
@@ -1640,6 +1611,25 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1640
1611
|
data.type === AiAssistanceModel.ResponseType.SIDE_EFFECT) {
|
1641
1612
|
this.#viewOutput.chatView?.scrollToBottom();
|
1642
1613
|
}
|
1614
|
+
|
1615
|
+
// Announce as status update to screen readers when:
|
1616
|
+
// * Context is received (e.g. Analyzing the prompt)
|
1617
|
+
// * Answer started streaming
|
1618
|
+
// * Answer finished streaming
|
1619
|
+
switch (data.type) {
|
1620
|
+
case AiAssistanceModel.ResponseType.CONTEXT:
|
1621
|
+
UI.ARIAUtils.LiveAnnouncer.status(data.title);
|
1622
|
+
break;
|
1623
|
+
case AiAssistanceModel.ResponseType.ANSWER: {
|
1624
|
+
if (!data.complete && !announcedAnswerLoading) {
|
1625
|
+
announcedAnswerLoading = true;
|
1626
|
+
UI.ARIAUtils.LiveAnnouncer.status(lockedString(UIStringsNotTranslate.answerLoading));
|
1627
|
+
} else if (data.complete && !announcedAnswerReady) {
|
1628
|
+
announcedAnswerReady = true;
|
1629
|
+
UI.ARIAUtils.LiveAnnouncer.status(lockedString(UIStringsNotTranslate.answerReady));
|
1630
|
+
}
|
1631
|
+
}
|
1632
|
+
}
|
1643
1633
|
}
|
1644
1634
|
}
|
1645
1635
|
|
@@ -1649,78 +1639,42 @@ export class AiAssistancePanel extends UI.Panel.Panel {
|
|
1649
1639
|
release();
|
1650
1640
|
}
|
1651
1641
|
}
|
1642
|
+
}
|
1652
1643
|
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
disabledReasons.push(lockedString(UIStringsNotTranslate.enableInSettings));
|
1644
|
+
export function getResponseMarkdown(message: ModelChatMessage): string {
|
1645
|
+
const contentParts = ['## AI'];
|
1646
|
+
|
1647
|
+
for (const step of message.steps) {
|
1648
|
+
if (step.title) {
|
1649
|
+
contentParts.push(`### ${step.title}`);
|
1660
1650
|
}
|
1661
|
-
if (
|
1662
|
-
|
1651
|
+
if (step.contextDetails) {
|
1652
|
+
contentParts.push(AiAssistanceModel.Conversation.generateContextDetailsMarkdown(step.contextDetails));
|
1663
1653
|
}
|
1664
|
-
|
1665
|
-
|
1666
|
-
switch (conversationType) {
|
1667
|
-
case AiAssistanceModel.ConversationType.STYLING:
|
1668
|
-
return await this.handleExternalStylingRequest(prompt, selector);
|
1669
|
-
default:
|
1670
|
-
throw new Error(`Debugging with an agent of type '${conversationType}' is not implemented yet.`);
|
1654
|
+
if (step.thought) {
|
1655
|
+
contentParts.push(step.thought);
|
1671
1656
|
}
|
1672
|
-
|
1673
|
-
|
1674
|
-
async handleExternalStylingRequest(prompt: string, selector?: string):
|
1675
|
-
Promise<{response: string, devToolsLogs: object[]}> {
|
1676
|
-
const stylingAgent = this.#createAgent(AiAssistanceModel.ConversationType.STYLING);
|
1677
|
-
const externalConversation = new AiAssistanceModel.Conversation(
|
1678
|
-
agentToConversationType(stylingAgent),
|
1679
|
-
[],
|
1680
|
-
stylingAgent.id,
|
1681
|
-
/* isReadOnly */ true,
|
1682
|
-
/* isExternal */ true,
|
1683
|
-
);
|
1684
|
-
this.#historicalConversations.push(externalConversation);
|
1685
|
-
|
1686
|
-
if (selector !== undefined) {
|
1687
|
-
await inspectElementBySelector(selector);
|
1657
|
+
if (step.code) {
|
1658
|
+
contentParts.push(`**Code executed:**\n\`\`\`\n${step.code.trim()}\n\`\`\``);
|
1688
1659
|
}
|
1689
|
-
|
1690
|
-
|
1691
|
-
prompt,
|
1692
|
-
{
|
1693
|
-
selected: this.#getConversationContext(externalConversation),
|
1694
|
-
},
|
1695
|
-
);
|
1696
|
-
const devToolsLogs: object[] = [];
|
1697
|
-
for await (const data of runner) {
|
1698
|
-
// We don't want to save partial responses to the conversation history.
|
1699
|
-
if (data.type !== AiAssistanceModel.ResponseType.ANSWER || data.complete) {
|
1700
|
-
void externalConversation.addHistoryItem(data);
|
1701
|
-
devToolsLogs.push(data);
|
1702
|
-
}
|
1703
|
-
if (data.type === AiAssistanceModel.ResponseType.SIDE_EFFECT) {
|
1704
|
-
data.confirm(true);
|
1705
|
-
}
|
1706
|
-
if (data.type === AiAssistanceModel.ResponseType.ANSWER && data.complete) {
|
1707
|
-
return {response: data.text, devToolsLogs};
|
1708
|
-
}
|
1660
|
+
if (step.output) {
|
1661
|
+
contentParts.push(`**Data returned:**\n\`\`\`\n${step.output}\n\`\`\``);
|
1709
1662
|
}
|
1710
|
-
throw new Error('Something went wrong. No answer was generated.');
|
1711
1663
|
}
|
1664
|
+
if (message.answer) {
|
1665
|
+
contentParts.push(`### Answer\n\n${message.answer}`);
|
1666
|
+
}
|
1667
|
+
return contentParts.join('\n\n');
|
1712
1668
|
}
|
1713
1669
|
|
1714
1670
|
export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
1715
|
-
handleAction(
|
1716
|
-
_context: UI.Context.Context,
|
1717
|
-
actionId: string,
|
1718
|
-
): boolean {
|
1671
|
+
handleAction(_context: UI.Context.Context, actionId: string, opts?: Record<string, unknown>): boolean {
|
1719
1672
|
switch (actionId) {
|
1720
1673
|
case 'freestyler.elements-floating-button':
|
1721
1674
|
case 'freestyler.element-panel-context':
|
1722
1675
|
case 'drjones.network-floating-button':
|
1723
1676
|
case 'drjones.network-panel-context':
|
1677
|
+
case 'drjones.performance-panel-full-context':
|
1724
1678
|
case 'drjones.performance-panel-context':
|
1725
1679
|
case 'drjones.performance-insight-context':
|
1726
1680
|
case 'drjones.sources-floating-button':
|
@@ -1746,7 +1700,7 @@ export class ActionDelegate implements UI.ActionRegistration.ActionDelegate {
|
|
1746
1700
|
}
|
1747
1701
|
|
1748
1702
|
const widget = (await view.widget()) as AiAssistancePanel;
|
1749
|
-
widget.handleAction(actionId);
|
1703
|
+
widget.handleAction(actionId, opts);
|
1750
1704
|
})();
|
1751
1705
|
return true;
|
1752
1706
|
}
|
@@ -1768,7 +1722,3 @@ function isAiAssistanceMultimodalInputEnabled(): boolean {
|
|
1768
1722
|
function isAiAssistanceServerSideLoggingEnabled(): boolean {
|
1769
1723
|
return !Root.Runtime.hostConfig.aidaAvailability?.disallowLogging;
|
1770
1724
|
}
|
1771
|
-
|
1772
|
-
function isAiAssistanceStylingWithFunctionCallingEnabled(): boolean {
|
1773
|
-
return Boolean(Root.Runtime.hostConfig.devToolsFreestyler?.functionCalling);
|
1774
|
-
}
|