chrome-devtools-frontend 1.0.1684555 → 1.0.1689415
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/gerrit-cli/SKILL.md +29 -8
- package/.agents/skills/gerrit-cli/references/commands.md +51 -18
- package/.agents/skills/gerrit-cli/references/workflows.md +6 -6
- package/.agents/skills/gerrit-cli/scripts/import_upstream.py +43 -70
- package/config/typescript/tsconfig.base.json +1 -0
- package/config/typescript/tsconfig.eslint.json +9 -0
- package/docs/contributing/issues.md +1 -1
- package/docs/styleguide/ux/writing.md +2 -2
- package/eslint.config.mjs +18 -10
- package/front_end/core/common/Base64.ts +1 -1
- package/front_end/core/common/Color.ts +28 -6
- package/front_end/core/common/ColorConverter.ts +12 -0
- package/front_end/core/common/Console.ts +2 -1
- package/front_end/core/common/Object.ts +2 -2
- package/front_end/core/common/ResourceType.ts +12 -13
- package/front_end/core/common/Revealer.ts +1 -1
- package/front_end/core/common/Settings.ts +2 -2
- package/front_end/core/common/TextDictionary.ts +2 -2
- package/front_end/core/common/Throttler.ts +1 -1
- package/front_end/core/host/InspectorFrontendHostAPI.ts +2 -2
- package/front_end/core/host/UserMetrics.ts +51 -37
- package/front_end/core/host/host.ts +1 -1
- package/front_end/core/i18n/i18nImpl.ts +1 -1
- package/front_end/core/platform/HostRuntime.ts +3 -3
- package/front_end/core/platform/KeyboardUtilities.ts +1 -1
- package/front_end/core/protocol_client/InspectorBackend.ts +7 -6
- package/front_end/core/root/Runtime.ts +4 -2
- package/front_end/core/sdk/AnimationModel.ts +1 -1
- package/front_end/core/sdk/CPUThrottlingManager.ts +198 -0
- package/front_end/core/sdk/CSSMetadata.ts +11 -6
- package/front_end/core/sdk/CSSPropertyParser.ts +5 -3
- package/front_end/core/sdk/CSSPropertyParserMatchers.ts +90 -59
- package/front_end/core/sdk/ConsoleModel.ts +1 -1
- package/front_end/core/sdk/DOMModel.ts +3 -3
- package/front_end/core/sdk/DebuggerModel.ts +1 -1
- package/front_end/core/sdk/EmulationModel.ts +5 -0
- package/front_end/core/sdk/LayerTreeBase.ts +1 -1
- package/front_end/core/sdk/NetworkManager.ts +1 -1
- package/front_end/core/sdk/README.md +40 -0
- package/front_end/core/sdk/RehydratingConnection.ts +1 -1
- package/front_end/core/sdk/RemoteObject.ts +1 -1
- package/front_end/core/sdk/ResourceTreeModel.ts +2 -2
- package/front_end/core/sdk/SDKModel.ts +1 -1
- package/front_end/core/sdk/SDKSettings.ts +6 -0
- package/front_end/core/sdk/Script.ts +2 -1
- package/front_end/core/sdk/SecurityOrigin.ts +48 -0
- package/front_end/core/sdk/ServiceWorkerManager.ts +75 -17
- package/front_end/core/sdk/sdk.ts +2 -0
- package/front_end/core/text_utils/ContentData.ts +1 -1
- package/front_end/entrypoints/formatter_worker/FormattedContentBuilder.ts +3 -1
- package/front_end/entrypoints/formatter_worker/FormatterWorker.ts +1 -1
- package/front_end/entrypoints/formatter_worker/ScopeParser.ts +2 -2
- package/front_end/entrypoints/formatter_worker/Substitute.ts +1 -1
- package/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.ts +1 -1
- package/front_end/entrypoints/inspector_main/InspectorMain.ts +1 -1
- package/front_end/entrypoints/inspector_main/OutermostTargetSelector.ts +1 -1
- package/front_end/entrypoints/inspector_main/nodeIcon.css +1 -1
- package/front_end/entrypoints/inspector_main/outermostTargetSelector.css +3 -3
- package/front_end/entrypoints/inspector_main/renderingOptions.css +3 -3
- package/front_end/entrypoints/js_app/js_app.ts +25 -9
- package/front_end/entrypoints/node_app/app/nodeConnectionsPanel.css +5 -5
- package/front_end/entrypoints/node_app/node_app.ts +1 -1
- package/front_end/generated/ARIAProperties.ts +39 -1
- package/front_end/generated/InspectorBackendCommands.ts +2 -1
- package/front_end/generated/SupportedCSSProperties.ts +60 -119
- package/front_end/generated/protocol-mapping.d.ts +9 -0
- package/front_end/generated/protocol-proxy-api.d.ts +7 -0
- package/front_end/generated/protocol.ts +12 -2
- package/front_end/models/ai_assistance/AiAgent2.ts +13 -7
- package/front_end/models/ai_assistance/AiConversation.ts +8 -17
- package/front_end/models/ai_assistance/AiHistoryStorage.ts +2 -2
- package/front_end/models/ai_assistance/AiUtils.ts +16 -0
- package/front_end/models/ai_assistance/EvaluateAction.ts +1 -1
- package/front_end/models/ai_assistance/README.md +1 -1
- package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +2 -3
- package/front_end/models/ai_assistance/agents/AiAgent.ts +29 -6
- package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +4 -3
- package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/NetworkAgent.ts +2 -2
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +1 -1
- package/front_end/models/ai_assistance/agents/StorageAgent.ts +7 -5
- package/front_end/models/ai_assistance/agents/StylingAgent.snapshot.txt +2 -2
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -7
- package/front_end/models/ai_assistance/ai_assistance.ts +8 -0
- package/front_end/models/ai_assistance/contexts/AccessibilityContext.ts +16 -1
- package/front_end/models/ai_assistance/contexts/FileContext.ts +6 -0
- package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +150 -325
- package/front_end/models/ai_assistance/injected.ts +5 -3
- package/front_end/models/ai_assistance/performance/AIContext.ts +1 -1
- package/front_end/models/ai_assistance/skills/README.md +1 -1
- package/front_end/models/ai_assistance/skills/accessibility.md +19 -10
- package/front_end/models/ai_assistance/skills/network.md +13 -7
- package/front_end/models/ai_assistance/skills/performance.md +22 -16
- package/front_end/models/ai_assistance/skills/sources.md +13 -7
- package/front_end/models/ai_assistance/skills/storage.md +19 -18
- package/front_end/models/ai_assistance/skills/styling.md +30 -37
- package/front_end/models/ai_assistance/tools/CookieUtils.ts +120 -0
- package/front_end/models/ai_assistance/tools/DOMStorageUtils.ts +53 -4
- package/front_end/models/ai_assistance/tools/ExecuteJavaScript.ts +8 -32
- package/front_end/models/ai_assistance/tools/GetCookieValues.ts +146 -0
- package/front_end/models/ai_assistance/tools/GetDetailedCallTree.ts +11 -9
- package/front_end/models/ai_assistance/tools/GetElementAccessibilityDetails.ts +17 -5
- package/front_end/models/ai_assistance/tools/GetFunctionCode.ts +12 -11
- package/front_end/models/ai_assistance/tools/GetInsightDetails.ts +11 -11
- package/front_end/models/ai_assistance/tools/GetLighthouseAudits.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetNetworkRequestDetails.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetResourceContent.ts +12 -12
- package/front_end/models/ai_assistance/tools/GetSourceContent.ts +3 -2
- package/front_end/models/ai_assistance/tools/GetStorageBreakdown.ts +132 -0
- package/front_end/models/ai_assistance/tools/GetStorageValues.ts +17 -4
- package/front_end/models/ai_assistance/tools/GetStyles.ts +3 -3
- package/front_end/models/ai_assistance/tools/GetTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/GetTraceMainThreadSummary.ts +13 -14
- package/front_end/models/ai_assistance/tools/GetTraceNetworkSummary.ts +12 -10
- package/front_end/models/ai_assistance/tools/ListCookies.ts +93 -0
- package/front_end/models/ai_assistance/tools/ListNetworkRequests.ts +15 -6
- package/front_end/models/ai_assistance/tools/ListPageOrigins.ts +3 -3
- package/front_end/models/ai_assistance/tools/ListSources.ts +5 -3
- package/front_end/models/ai_assistance/tools/ListStorageKeys.ts +16 -4
- package/front_end/models/ai_assistance/tools/RecordPerformanceTrace.ts +3 -2
- package/front_end/models/ai_assistance/tools/ResolveDevtoolsNodePath.ts +4 -3
- package/front_end/models/ai_assistance/tools/RunLighthouse.ts +9 -9
- package/front_end/models/ai_assistance/tools/SelectTraceEventByKey.ts +9 -8
- package/front_end/models/ai_assistance/tools/Tool.ts +21 -11
- package/front_end/models/ai_assistance/tools/ToolRegistry.ts +41 -8
- package/front_end/models/badges/AiExplorerBadge.ts +3 -3
- package/front_end/models/badges/CodeWhispererBadge.ts +2 -2
- package/front_end/models/badges/DOMDetectiveBadge.ts +3 -3
- package/front_end/models/badges/SpeedsterBadge.ts +3 -3
- package/front_end/models/badges/StarterBadge.ts +4 -4
- package/front_end/models/bindings/CompilerScriptMapping.ts +11 -2
- package/front_end/models/bindings/ContentProviderBasedProject.ts +3 -2
- package/front_end/models/breakpoints/BreakpointManager.ts +1 -1
- package/front_end/models/emulation/EmulatedDevices.ts +2 -2
- package/front_end/models/formatter/FormatterWorkerPool.ts +2 -2
- package/front_end/models/formatter/ScriptFormatter.ts +1 -2
- package/front_end/models/geometry/GeometryImpl.ts +2 -2
- package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +1 -1
- package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +3 -2
- package/front_end/models/issues_manager/ContentSecurityPolicyIssue.ts +5 -5
- package/front_end/models/issues_manager/GenericIssue.ts +18 -18
- package/front_end/models/issues_manager/StylesheetLoadingIssue.ts +1 -1
- package/front_end/models/javascript_metadata/{NativeFunctions.js → NativeFunctions.ts} +25 -9
- package/front_end/models/live-metrics/LiveMetrics.ts +9 -3
- package/front_end/models/live-metrics/web-vitals-injected/spec/spec.ts +58 -6
- package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +2 -62
- package/front_end/models/network_time_calculator/RequestTimeRanges.ts +2 -2
- package/front_end/models/persistence/AutomaticFileSystemWorkspaceBinding.ts +5 -0
- package/front_end/models/persistence/IsolatedFileSystem.ts +1 -1
- package/front_end/models/persistence/NetworkPersistenceManager.ts +35 -6
- package/front_end/models/stack_trace/StackTraceImpl.ts +2 -2
- package/front_end/models/trace/LanternComputationData.ts +2 -3
- package/front_end/models/trace/extras/StackTraceForEvent.ts +3 -2
- package/front_end/models/trace/extras/ThirdParties.ts +9 -9
- package/front_end/models/trace/handlers/AsyncJSCallsHandler.ts +7 -4
- package/front_end/models/trace/handlers/FramesHandler.ts +3 -3
- package/front_end/models/trace/handlers/LayoutShiftsHandler.ts +2 -2
- package/front_end/models/trace/handlers/SamplesHandler.ts +4 -2
- package/front_end/models/trace/handlers/UserInteractionsHandler.ts +1 -1
- package/front_end/models/trace/handlers/WarningsHandler.ts +2 -2
- package/front_end/models/trace/helpers/Network.ts +3 -3
- package/front_end/models/trace/helpers/Trace.ts +1 -1
- package/front_end/models/trace/insights/CLSCulprits.ts +2 -1
- package/front_end/models/trace/insights/Cache.ts +3 -1
- package/front_end/models/trace/insights/CharacterSet.ts +3 -1
- package/front_end/models/trace/insights/DOMSize.ts +3 -1
- package/front_end/models/trace/insights/DocumentLatency.ts +3 -1
- package/front_end/models/trace/insights/DuplicatedJavaScript.ts +3 -1
- package/front_end/models/trace/insights/FontDisplay.ts +2 -1
- package/front_end/models/trace/insights/ForcedReflow.ts +2 -1
- package/front_end/models/trace/insights/INPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/ImageDelivery.ts +3 -1
- package/front_end/models/trace/insights/LCPBreakdown.ts +3 -1
- package/front_end/models/trace/insights/LCPDiscovery.ts +3 -1
- package/front_end/models/trace/insights/LegacyJavaScript.ts +3 -1
- package/front_end/models/trace/insights/ModernHTTP.ts +2 -1
- package/front_end/models/trace/insights/NetworkDependencyTree.ts +2 -1
- package/front_end/models/trace/insights/RenderBlocking.ts +5 -4
- package/front_end/models/trace/insights/SlowCSSSelector.ts +3 -1
- package/front_end/models/trace/insights/ThirdParties.ts +5 -3
- package/front_end/models/trace/insights/Viewport.ts +2 -1
- package/front_end/models/trace/lantern/simulation/Constants.ts +34 -2
- package/front_end/models/trace/lantern/simulation/DNSCache.ts +1 -1
- package/front_end/models/trace/types/TraceEvents.ts +8 -3
- package/front_end/models/trace_source_maps_resolver/SourceMapsResolver.ts +2 -1
- package/front_end/models/workspace/WorkspaceImpl.ts +18 -2
- package/front_end/panels/accessibility/AccessibilityAnnouncementRecordingView.ts +686 -2
- package/front_end/panels/accessibility/accessibilityNode.css +4 -4
- package/front_end/panels/accessibility/accessibilityProperties.css +1 -1
- package/front_end/panels/accessibility/accessibilitySidebarView.css +2 -2
- package/front_end/panels/accessibility/axBreadcrumbs.css +13 -13
- package/front_end/panels/ai_assistance/AiAssistancePanel.ts +14 -14
- package/front_end/panels/ai_assistance/ExternalHandler.ts +1 -1
- package/front_end/panels/ai_assistance/aiAssistancePanel.css +1 -1
- package/front_end/panels/ai_assistance/components/ChatInput.ts +3 -2
- package/front_end/panels/ai_assistance/components/ChatView.ts +1 -1
- package/front_end/panels/ai_assistance/components/DisabledWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/ExploreWidget.ts +1 -1
- package/front_end/panels/ai_assistance/components/chatInput.css +12 -12
- package/front_end/panels/ai_assistance/components/chatMessage.css +16 -16
- package/front_end/panels/ai_assistance/components/chatView.css +2 -2
- package/front_end/panels/ai_assistance/components/exploreWidget.css +1 -1
- package/front_end/panels/ai_assistance/components/exportForAgentsDialog.css +4 -0
- package/front_end/panels/ai_assistance/components/walkthroughView.css +6 -6
- package/front_end/panels/animation/animationTimeline.css +62 -62
- package/front_end/panels/application/ApplicationPanelSidebar.ts +6 -1
- package/front_end/panels/application/BackgroundServiceView.ts +290 -252
- package/front_end/panels/application/WebMCPView.ts +15 -7
- package/front_end/panels/application/appManifestView.css +5 -5
- package/front_end/panels/application/backgroundServiceView.css +18 -2
- package/front_end/panels/application/components/AdsView.ts +100 -4
- package/front_end/panels/application/components/adsView.css +8 -5
- package/front_end/panels/application/components/backForwardCacheView.css +5 -5
- package/front_end/panels/application/components/bounceTrackingMitigationsView.css +1 -1
- package/front_end/panels/application/components/endpointsGrid.css +1 -1
- package/front_end/panels/application/components/permissionsPolicySection.css +1 -1
- package/front_end/panels/application/components/protocolHandlersView.css +6 -6
- package/front_end/panels/application/components/reportsGrid.css +1 -1
- package/front_end/panels/application/components/serviceWorkerRouterView.css +4 -4
- package/front_end/panels/application/components/trustTokensView.css +7 -7
- package/front_end/panels/application/cookieItemsView.css +3 -3
- package/front_end/panels/application/deviceBoundSessionsView.css +3 -3
- package/front_end/panels/application/frameDetailsReportView.css +11 -11
- package/front_end/panels/application/indexedDBViews.css +7 -7
- package/front_end/panels/application/originTrialTokenRows.css +2 -2
- package/front_end/panels/application/originTrialTreeView.css +3 -3
- package/front_end/panels/application/preloading/components/RuleSetDetailsView.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingDetailsReportView.css +1 -1
- package/front_end/panels/application/preloading/components/preloadingDisabledInfobar.css +2 -2
- package/front_end/panels/application/preloading/components/preloadingGrid.css +2 -2
- package/front_end/panels/application/preloading/components/usedPreloadingView.css +7 -7
- package/front_end/panels/application/preloading/preloadingView.css +1 -1
- package/front_end/panels/application/preloading/preloadingViewDropDown.css +3 -3
- package/front_end/panels/application/serviceWorkerCacheViews.css +5 -5
- package/front_end/panels/application/serviceWorkerUpdateCycleView.css +12 -12
- package/front_end/panels/application/serviceWorkersView.css +15 -16
- package/front_end/panels/application/storageView.css +5 -5
- package/front_end/panels/application/webMCPView.css +9 -9
- package/front_end/panels/autofill/autofillView.css +4 -4
- package/front_end/panels/browser_debugger/categorizedBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/browser_debugger/domBreakpointsSidebarPane.css +5 -3
- package/front_end/panels/browser_debugger/xhrBreakpointsSidebarPane.css +4 -4
- package/front_end/panels/changes/changesSidebar.css +1 -1
- package/front_end/panels/changes/changesView.css +1 -1
- package/front_end/panels/changes/combinedDiffView.css +1 -1
- package/front_end/panels/common/CPUThrottlingOption.ts +5 -10
- package/front_end/panels/common/badgeNotification.css +2 -2
- package/front_end/panels/common/domLinkifier.css +1 -1
- package/front_end/panels/common/gdpSignUpDialog.css +3 -3
- package/front_end/panels/common/geminiRebrandPromoDialog.css +1 -1
- package/front_end/panels/console/ConsolePrompt.ts +6 -3
- package/front_end/panels/console/ConsoleView.ts +6 -3
- package/front_end/panels/console/ConsoleViewMessage.ts +3 -1
- package/front_end/panels/console/console-meta.ts +5 -24
- package/front_end/panels/console/consoleContextSelector.css +2 -2
- package/front_end/panels/console/consolePinPane.css +9 -9
- package/front_end/panels/console/consolePrompt.css +5 -5
- package/front_end/panels/console/consoleView.css +39 -39
- package/front_end/panels/coverage/coverageListView.css +2 -2
- package/front_end/panels/css_overview/cssOverviewCompletedView.css +34 -34
- package/front_end/panels/css_overview/cssOverviewProcessingView.css +5 -5
- package/front_end/panels/css_overview/cssOverviewSidebarPanel.css +1 -1
- package/front_end/panels/css_overview/cssOverviewStartView.css +17 -17
- package/front_end/panels/elements/AdoptedStyleSheetTreeElement.ts +209 -62
- package/front_end/panels/elements/ColorSwatchPopoverIcon.ts +4 -4
- package/front_end/panels/elements/DOMTreeContextMenu.ts +59 -54
- package/front_end/panels/elements/ElementsPanel.ts +1 -1
- package/front_end/panels/elements/ElementsTreeElement.ts +130 -94
- package/front_end/panels/elements/ElementsTreeOutline.ts +1751 -363
- package/front_end/panels/elements/ShortcutTreeElement.ts +6 -3
- package/front_end/panels/elements/StylePropertiesSection.ts +65 -8
- package/front_end/panels/elements/StylePropertyTreeElement.ts +6 -0
- package/front_end/panels/elements/StylesSidebarPane.ts +143 -8
- package/front_end/panels/elements/classesPaneWidget.css +6 -6
- package/front_end/panels/elements/components/stylePropertyEditor.css +7 -7
- package/front_end/panels/elements/computedStyleWidget.css +1 -1
- package/front_end/panels/elements/elementStatePaneWidget.css +8 -8
- package/front_end/panels/elements/elements-meta.ts +14 -0
- package/front_end/panels/elements/elementsPanel.css +4 -4
- package/front_end/panels/elements/elementsTreeOutline.css +222 -38
- package/front_end/panels/elements/layersWidget.css +4 -4
- package/front_end/panels/elements/layoutPane.css +18 -18
- package/front_end/panels/elements/metricsSidebarPane.css +11 -11
- package/front_end/panels/elements/platformFontsWidget.css +5 -5
- package/front_end/panels/elements/propertiesWidget.css +2 -2
- package/front_end/panels/elements/stylePropertiesTreeOutline.css +20 -20
- package/front_end/panels/elements/stylesSidebarPane.css +37 -20
- package/front_end/panels/emulation/deviceModeView.css +49 -49
- package/front_end/panels/emulation/mediaQueryInspector.css +18 -18
- package/front_end/panels/event_listeners/eventListenersView.css +1 -1
- package/front_end/panels/explain/components/consoleInsight.css +29 -29
- package/front_end/panels/issues/components/elementsPanelLink.css +2 -2
- package/front_end/panels/issues/components/hideIssuesMenu.css +1 -1
- package/front_end/panels/issues/issuesPane.css +2 -2
- package/front_end/panels/issues/issuesTree.css +50 -50
- package/front_end/panels/layer_viewer/Layers3DView.ts +9 -10
- package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
- package/front_end/panels/layer_viewer/layerTreeOutline.css +2 -2
- package/front_end/panels/layer_viewer/layers3DView.css +1 -1
- package/front_end/panels/layer_viewer/paintProfiler.css +1 -1
- package/front_end/panels/lighthouse/LighthouseReportSelector.ts +2 -2
- package/front_end/panels/media/playerListView.css +9 -9
- package/front_end/panels/media/playerMessagesView.css +8 -8
- package/front_end/panels/media/playerPropertiesView.css +6 -6
- package/front_end/panels/mobile_throttling/NetworkPanelIndicator.ts +1 -1
- package/front_end/panels/mobile_throttling/throttlingSettingsTab.css +9 -9
- package/front_end/panels/network/NetworkDataGridNode.ts +1 -0
- package/front_end/panels/network/NetworkPanel.ts +9 -4
- package/front_end/panels/network/RequestConditionsDrawer.ts +12 -12
- package/front_end/panels/network/RequestPayloadView.ts +78 -26
- package/front_end/panels/network/binaryResourceView.css +1 -1
- package/front_end/panels/network/components/EditableSpan.css +3 -3
- package/front_end/panels/network/components/HeaderSectionRow.css +14 -14
- package/front_end/panels/network/components/RequestHeaderSection.css +7 -7
- package/front_end/panels/network/components/RequestHeadersView.css +18 -18
- package/front_end/panels/network/components/RequestTrustTokensView.css +1 -1
- package/front_end/panels/network/network-meta.ts +9 -9
- package/front_end/panels/network/networkConfigView.css +11 -11
- package/front_end/panels/network/networkLogView.css +35 -35
- package/front_end/panels/network/networkManageCustomHeadersView.css +1 -1
- package/front_end/panels/network/networkPanel.css +7 -7
- package/front_end/panels/network/networkTimingTable.css +13 -13
- package/front_end/panels/network/requestConditionsDrawer.css +4 -4
- package/front_end/panels/network/requestCookiesView.css +5 -5
- package/front_end/panels/network/requestDeviceBoundSessionsView.css +1 -1
- package/front_end/panels/network/requestHTMLView.css +1 -1
- package/front_end/panels/network/requestHeadersTree.css +19 -19
- package/front_end/panels/network/requestInitiatorView.css +1 -1
- package/front_end/panels/network/requestInitiatorViewTree.css +3 -3
- package/front_end/panels/network/requestPayloadTree.css +5 -5
- package/front_end/panels/network/requestPayloadView.css +1 -1
- package/front_end/panels/network/resourceChunkView.css +3 -3
- package/front_end/panels/network/signedExchangeInfoTree.css +6 -6
- package/front_end/panels/profiler/heapProfiler.css +15 -15
- package/front_end/panels/profiler/profileLauncherView.css +10 -10
- package/front_end/panels/recorder/RecordingView.ts +1 -1
- package/front_end/panels/recorder/StepEditor.ts +86 -7
- package/front_end/panels/recorder/TimelineSection.ts +2 -1
- package/front_end/panels/recorder/createRecordingView.css +17 -17
- package/front_end/panels/recorder/extensionView.css +5 -5
- package/front_end/panels/recorder/injected/RecordingClient.ts +1 -1
- package/front_end/panels/recorder/models/SchemaUtils.ts +2 -2
- package/front_end/panels/recorder/models/ScreenshotStorage.ts +1 -1
- package/front_end/panels/recorder/recorderPanel.css +7 -7
- package/front_end/panels/recorder/recordingListView.css +12 -12
- package/front_end/panels/recorder/recordingView.css +47 -47
- package/front_end/panels/recorder/stepEditor.css +2 -2
- package/front_end/panels/recorder/stepView.css +20 -20
- package/front_end/panels/recorder/timelineSection.css +9 -9
- package/front_end/panels/screencast/screencastView.css +12 -12
- package/front_end/panels/search/searchResultsPane.css +10 -10
- package/front_end/panels/search/searchView.css +9 -9
- package/front_end/panels/security/SecurityPanel.ts +84 -54
- package/front_end/panels/security/mainView.css +26 -26
- package/front_end/panels/security/originView.css +15 -15
- package/front_end/panels/sensors/locationsSettingsTab.css +6 -6
- package/front_end/panels/sensors/sensors.css +28 -28
- package/front_end/panels/settings/components/syncSection.css +5 -5
- package/front_end/panels/settings/emulation/components/userAgentClientHintsForm.css +13 -13
- package/front_end/panels/settings/emulation/devicesSettingsTab.css +16 -16
- package/front_end/panels/settings/frameworkIgnoreListSettingsTab.css +2 -2
- package/front_end/panels/settings/keybindsSettingsTab.css +2 -2
- package/front_end/panels/settings/settingsScreen.css +5 -5
- package/front_end/panels/sources/UISourceCodeFrame.ts +1 -1
- package/front_end/panels/sources/breakpointEditDialog.css +9 -9
- package/front_end/panels/sources/breakpointsView.css +25 -25
- package/front_end/panels/sources/callStackSidebarPane.css +10 -10
- package/front_end/panels/sources/components/HeadersView.css +6 -6
- package/front_end/panels/sources/debuggerPausedMessage.css +4 -4
- package/front_end/panels/sources/dialog.css +2 -2
- package/front_end/panels/sources/navigatorTree.css +2 -2
- package/front_end/panels/sources/navigatorView.css +2 -2
- package/front_end/panels/sources/scopeChainSidebarPane.css +1 -1
- package/front_end/panels/sources/sourcesNavigator.css +1 -1
- package/front_end/panels/sources/sourcesPanel.css +2 -2
- package/front_end/panels/sources/sourcesView.css +1 -1
- package/front_end/panels/sources/threadsSidebarPane.css +5 -5
- package/front_end/panels/sources/watchExpressionsSidebarPane.css +8 -8
- package/front_end/panels/timeline/TimelineDetailsView.ts +9 -21
- package/front_end/panels/timeline/TimelineFlameChartView.ts +3 -5
- package/front_end/panels/timeline/TimelineMiniMap.ts +3 -3
- package/front_end/panels/timeline/components/LiveMetricsView.ts +1 -1
- package/front_end/panels/timeline/components/breadcrumbsUI.css +3 -3
- package/front_end/panels/timeline/components/exportTraceOptions.css +1 -1
- package/front_end/panels/timeline/components/fieldSettingsDialog.css +13 -13
- package/front_end/panels/timeline/components/ignoreListSetting.css +3 -3
- package/front_end/panels/timeline/components/liveMetricsView.css +39 -39
- package/front_end/panels/timeline/components/metricCard.css +20 -20
- package/front_end/panels/timeline/components/networkRequestDetails.css +9 -9
- package/front_end/panels/timeline/components/networkRequestTooltip.css +14 -14
- package/front_end/panels/timeline/components/networkTrackWidget.css +2 -2
- package/front_end/panels/timeline/components/originMap.css +4 -4
- package/front_end/panels/timeline/components/relatedInsightChips.css +1 -1
- package/front_end/panels/timeline/components/sidebarAnnotationsTab.css +4 -4
- package/front_end/panels/timeline/components/sidebarInsightsTab.css +5 -5
- package/front_end/panels/timeline/components/sidebarSingleInsightSet.css +1 -1
- package/front_end/panels/timeline/components/timelineSummary.css +4 -4
- package/front_end/panels/timeline/overlays/OverlaysImpl.ts +4 -4
- package/front_end/panels/timeline/overlays/components/EntriesLinkOverlay.ts +1 -1
- package/front_end/panels/timeline/overlays/components/EntryLabelOverlay.ts +6 -6
- package/front_end/panels/timeline/overlays/components/TimeRangeOverlay.ts +1 -1
- package/front_end/panels/timeline/thirdPartyTreeView.css +5 -5
- package/front_end/panels/timeline/timeline-meta.ts +0 -6
- package/front_end/panels/timeline/timelineDetailsView.css +11 -11
- package/front_end/panels/timeline/timelinePanel.css +20 -20
- package/front_end/panels/timeline/timelineTreeView.css +8 -8
- package/front_end/panels/webauthn/webauthnPane.css +6 -6
- package/front_end/panels/whats_new/ReleaseNoteText.ts +2 -2
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/third_party/i18n/i18n-impl.ts +1 -1
- package/front_end/third_party/puppeteer/README.chromium +2 -2
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/lib/es5-iife/puppeteer-core-browser.js +42 -8
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts +4 -0
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js +15 -2
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/Frame.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts +14 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js +23 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/cdp/WebMCP.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/generated/injected.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.d.ts.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js +77 -6
- package/front_end/third_party/puppeteer/package/lib/puppeteer/injected/Poller.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.d.ts +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js +3 -3
- package/front_end/third_party/puppeteer/package/lib/puppeteer/revisions.js.map +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.d.ts +1 -1
- package/front_end/third_party/puppeteer/package/lib/puppeteer/util/version.js +1 -1
- package/front_end/third_party/puppeteer/package/lib/types.d.ts +15 -1
- package/front_end/third_party/puppeteer/package/package.json +2 -2
- package/front_end/third_party/puppeteer/package/src/cdp/Frame.ts +16 -2
- package/front_end/third_party/puppeteer/package/src/cdp/WebMCP.ts +36 -1
- package/front_end/third_party/puppeteer/package/src/generated/injected.ts +1 -1
- package/front_end/third_party/puppeteer/package/src/injected/Poller.ts +86 -6
- package/front_end/third_party/puppeteer/package/src/revisions.ts +3 -3
- package/front_end/third_party/puppeteer/package/src/util/version.ts +1 -1
- package/front_end/third_party/web-vitals/README.chromium +2 -2
- package/front_end/third_party/web-vitals/package/README.md +22 -7
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onINP.js +6 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.d.ts +2 -2
- package/front_end/third_party/web-vitals/package/dist/modules/attribution/onLCP.js +30 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.d.ts +14 -0
- package/front_end/third_party/web-vitals/package/dist/modules/lib/InteractionManager.js +19 -13
- package/front_end/third_party/web-vitals/package/dist/modules/lib/bindReporter.d.ts +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/doubleRAF.js +1 -1
- package/front_end/third_party/web-vitals/package/dist/modules/lib/initMetric.d.ts +3 -3
- package/front_end/third_party/web-vitals/package/dist/modules/lib/softNavs.js +3 -1
- package/front_end/third_party/web-vitals/package/dist/modules/types/lcp.d.ts +15 -1
- package/front_end/third_party/web-vitals/package/package.json +1 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onINP.ts +9 -2
- package/front_end/third_party/web-vitals/package/src/attribution/onLCP.ts +36 -5
- package/front_end/third_party/web-vitals/package/src/lib/InteractionManager.ts +21 -15
- package/front_end/third_party/web-vitals/package/src/lib/doubleRAF.ts +1 -1
- package/front_end/third_party/web-vitals/package/src/lib/softNavs.ts +4 -1
- package/front_end/third_party/web-vitals/package/src/types/lcp.ts +16 -1
- package/front_end/third_party/web-vitals/rebuild.sh +3 -3
- package/front_end/ui/comments/CommentAnchorResolver.ts +15 -4
- package/front_end/ui/comments/commentsOverlay.css +6 -5
- package/front_end/ui/components/adorners/Adorner.ts +1 -1
- package/front_end/ui/components/adorners/adorner.css +6 -6
- package/front_end/ui/components/buttons/FloatingButton.ts +1 -1
- package/front_end/ui/components/buttons/button.css +9 -9
- package/front_end/ui/components/buttons/floatingButton.css +2 -2
- package/front_end/ui/components/buttons/textButton.css +12 -12
- package/front_end/ui/components/dialogs/Dialog.ts +1 -1
- package/front_end/ui/components/dialogs/dialog.css +1 -1
- package/front_end/ui/components/diff_view/diffView.css +3 -3
- package/front_end/ui/components/expandable_list/expandableList.css +9 -9
- package/front_end/ui/components/highlighting/HighlightElement.ts +1 -1
- package/front_end/ui/components/highlighting/HighlightManager.ts +4 -0
- package/front_end/ui/components/icon_button/iconButton.css +2 -2
- package/front_end/ui/components/input/checkbox.css +8 -8
- package/front_end/ui/components/input/textInput.css +3 -3
- package/front_end/ui/components/issue_counter/issueLinkIcon.css +2 -2
- package/front_end/ui/components/linkifier/linkifierImpl.css +1 -1
- package/front_end/ui/components/markdown_view/MarkdownImagesMap.ts +1 -1
- package/front_end/ui/components/markdown_view/MarkdownLinksMap.ts +1 -1
- package/front_end/ui/components/markdown_view/codeBlock.css +2 -2
- package/front_end/ui/components/markdown_view/markdownView.css +7 -7
- package/front_end/ui/components/menus/menuGroup.css +2 -2
- package/front_end/ui/components/menus/menuItem.css +2 -2
- package/front_end/ui/components/menus/selectMenu.css +2 -2
- package/front_end/ui/components/menus/selectMenuButton.css +4 -4
- package/front_end/ui/components/panel_feedback/panelFeedback.css +15 -15
- package/front_end/ui/components/panel_feedback/previewToggle.css +2 -2
- package/front_end/ui/components/panel_introduction_steps/panelIntroductionSteps.css +7 -7
- package/front_end/ui/components/report_view/report.css +3 -3
- package/front_end/ui/components/report_view/reportSectionDivider.css +1 -1
- package/front_end/ui/components/report_view/reportValue.css +1 -1
- package/front_end/ui/components/request_link_icon/requestLinkIcon.css +2 -2
- package/front_end/ui/components/settings/settingCheckbox.css +6 -6
- package/front_end/ui/components/text_editor/TextEditor.ts +3 -1
- package/front_end/ui/components/text_editor/config.ts +16 -4
- package/front_end/ui/kit/icons/icon.css +4 -4
- package/front_end/ui/kit/link/link.css +1 -1
- package/front_end/ui/legacy/ActionRegistration.ts +23 -23
- package/front_end/ui/legacy/Dialog.ts +1 -1
- package/front_end/ui/legacy/DockController.ts +3 -3
- package/front_end/ui/legacy/EmptyWidget.ts +13 -34
- package/front_end/ui/legacy/FilterBar.ts +4 -4
- package/front_end/ui/legacy/Infobar.ts +2 -2
- package/front_end/ui/legacy/InspectorDrawerView.ts +6 -6
- package/front_end/ui/legacy/InspectorView.ts +19 -26
- package/front_end/ui/legacy/ListWidget.ts +7 -7
- package/front_end/ui/legacy/PlusButton.ts +1 -3
- package/front_end/ui/legacy/RemoteDebuggingTerminatedScreen.ts +6 -6
- package/front_end/ui/legacy/SearchableView.ts +16 -16
- package/front_end/ui/legacy/SoftContextMenu.ts +8 -8
- package/front_end/ui/legacy/SoftDropDown.ts +1 -1
- package/front_end/ui/legacy/SuggestBox.ts +2 -2
- package/front_end/ui/legacy/TabbedPane.ts +10 -10
- package/front_end/ui/legacy/TargetCrashedScreen.ts +2 -2
- package/front_end/ui/legacy/Toolbar.ts +5 -5
- package/front_end/ui/legacy/Treeoutline.ts +1 -1
- package/front_end/ui/legacy/UIUtils.ts +80 -20
- package/front_end/ui/legacy/ViewManager.ts +1 -1
- package/front_end/ui/legacy/ViewRegistration.ts +7 -7
- package/front_end/ui/legacy/Widget.ts +5 -5
- package/front_end/ui/legacy/checkboxTextLabel.css +3 -3
- package/front_end/ui/legacy/components/color_picker/ColorFormatSpec.ts +16 -0
- package/front_end/ui/legacy/components/color_picker/FormatPickerContextMenu.ts +1 -0
- package/front_end/ui/legacy/components/color_picker/spectrum.css +90 -90
- package/front_end/ui/legacy/components/cookie_table/cookiesTable.css +1 -1
- package/front_end/ui/legacy/components/data_grid/DataGrid.ts +26 -28
- package/front_end/ui/legacy/components/data_grid/ShowMoreDataGridNode.ts +3 -7
- package/front_end/ui/legacy/components/inline_editor/bezierEditor.css +13 -13
- package/front_end/ui/legacy/components/inline_editor/colorSwatch.css +7 -7
- package/front_end/ui/legacy/components/inline_editor/cssAngleEditor.css +5 -5
- package/front_end/ui/legacy/components/inline_editor/cssShadowEditor.css +18 -18
- package/front_end/ui/legacy/components/object_ui/CustomPreviewComponent.ts +104 -86
- package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +8 -6
- package/front_end/ui/legacy/components/object_ui/objectPopover.css +4 -4
- package/front_end/ui/legacy/components/object_ui/objectPropertiesSection.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/ChartViewport.ts +28 -11
- package/front_end/ui/legacy/components/perf_ui/TimelineOverviewPane.ts +0 -4
- package/front_end/ui/legacy/components/perf_ui/chartViewport.css +4 -4
- package/front_end/ui/legacy/components/perf_ui/filmStripView.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/flameChart.css +7 -7
- package/front_end/ui/legacy/components/perf_ui/overviewGrid.css +11 -11
- package/front_end/ui/legacy/components/perf_ui/pieChart.css +6 -6
- package/front_end/ui/legacy/components/perf_ui/timelineGrid.css +5 -5
- package/front_end/ui/legacy/components/quick_open/filteredListWidget.css +3 -3
- package/front_end/ui/legacy/components/source_frame/ResourceSourceFrame.ts +1 -1
- package/front_end/ui/legacy/components/source_frame/imageView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/jsonView.css +1 -1
- package/front_end/ui/legacy/components/source_frame/resourceSourceFrame.css +1 -1
- package/front_end/ui/legacy/components/source_frame/xmlTree.css +3 -3
- package/front_end/ui/legacy/components/utils/imagePreview.css +1 -1
- package/front_end/ui/legacy/components/utils/jsUtils.css +10 -10
- package/front_end/ui/legacy/dropTarget.css +2 -2
- package/front_end/ui/legacy/emptyWidget.css +6 -0
- package/front_end/ui/legacy/filter.css +19 -19
- package/front_end/ui/legacy/infobar.css +2 -2
- package/front_end/ui/legacy/inspectorCommon.css +67 -67
- package/front_end/ui/legacy/inspectorDrawerTabbedPane.css +1 -1
- package/front_end/ui/legacy/listWidget.css +5 -5
- package/front_end/ui/legacy/progressIndicator.css +4 -4
- package/front_end/ui/legacy/reportView.css +7 -7
- package/front_end/ui/legacy/searchableView.css +5 -5
- package/front_end/ui/legacy/smallBubble.css +3 -3
- package/front_end/ui/legacy/softContextMenu.css +4 -4
- package/front_end/ui/legacy/softDropDownButton.css +1 -1
- package/front_end/ui/legacy/splitWidget.css +9 -31
- package/front_end/ui/legacy/suggestBox.css +4 -4
- package/front_end/ui/legacy/tabbedPane.css +17 -17
- package/front_end/ui/legacy/textPrompt.css +2 -2
- package/front_end/ui/legacy/toolbar.css +4 -4
- package/front_end/ui/legacy/treeoutline.css +14 -14
- package/front_end/ui/legacy/viewContainers.css +6 -6
- package/front_end/ui/settings/ConsoleSettings.ts +34 -0
- package/front_end/ui/visual_logging/KnownContextValues.ts +12 -0
- package/inspector_overlay/common.ts +12 -12
- package/inspector_overlay/css_grid_label_helpers.ts +16 -17
- package/inspector_overlay/drag_resize_handler.ts +2 -2
- package/inspector_overlay/highlight_common.ts +11 -13
- package/inspector_overlay/highlight_container_query.ts +2 -2
- package/inspector_overlay/highlight_flex_common.ts +6 -7
- package/inspector_overlay/highlight_grid_common.ts +3 -3
- package/inspector_overlay/highlight_isolated_element.ts +12 -3
- package/inspector_overlay/highlight_scroll_snap.ts +2 -2
- package/inspector_overlay/loadCSS.rollup.js +0 -1
- package/inspector_overlay/testing/InspectorOverlayHelpers.ts +13 -13
- package/inspector_overlay/tool_green_dev_anchors.ts +3 -3
- package/inspector_overlay/tool_highlight.ts +9 -9
- package/inspector_overlay/tool_paused.ts +4 -4
- package/inspector_overlay/tool_persistent.ts +11 -11
- package/inspector_overlay/tool_screenshot.ts +7 -7
- package/inspector_overlay/tool_source_order.ts +4 -4
- package/inspector_overlay/tool_viewport_size.ts +3 -3
- package/inspector_overlay/tool_window_controls.ts +4 -4
- package/mcp/mcp.ts +1 -0
- package/package.json +2 -2
- package/front_end/generated/protocol-tsconfig.json +0 -10
- package/front_end/panels/js_timeline/DIR_METADATA +0 -3
- package/front_end/panels/js_timeline/js_timeline-meta.ts +0 -193
- package/front_end/panels/js_timeline/js_timeline.ts +0 -1
- /package/front_end/entrypoints/{formatter_worker/FormatterActions.ts → formatter_actions/formatter_actions.ts} +0 -0
|
@@ -5,12 +5,18 @@ allowed-tools:
|
|
|
5
5
|
- listNetworkRequests
|
|
6
6
|
- getNetworkRequestDetails
|
|
7
7
|
---
|
|
8
|
-
You are
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
You are an expert network request debugging assistant.
|
|
9
|
+
|
|
10
|
+
# Tools & Workflow
|
|
11
|
+
|
|
12
|
+
1. **Discover Requests (`listNetworkRequests`)**:
|
|
13
|
+
- Call `listNetworkRequests` to discover recorded network requests matching the active origin.
|
|
14
|
+
- Inspect the returned list for URLs, status codes, durations, transfer sizes, and unique request `id` values.
|
|
15
|
+
|
|
16
|
+
2. **Inspect Request Details (`getNetworkRequestDetails`)**:
|
|
17
|
+
- Call `getNetworkRequestDetails` with the specific request `id` to obtain full headers, timing phases (DNS, initial connection, SSL, TTFB, content download), status text, and response body.
|
|
13
18
|
|
|
14
19
|
# Considerations
|
|
15
|
-
|
|
16
|
-
*
|
|
20
|
+
|
|
21
|
+
* **Privacy**: If the request or response payload contains sensitive personal data, authorization tokens, or API secrets, redact or generalize it in your response.
|
|
22
|
+
* **Origin Lock**: Only requests belonging to the conversation's established origin can be inspected.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: performance
|
|
3
|
-
description: Web performance analysis, trace inspection, and trace recording.
|
|
3
|
+
description: Web performance analysis, Core Web Vitals (LCP, INP, CLS), trace inspection, and trace recording.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- recordPerformanceTrace
|
|
6
6
|
- getTraceEventByKey
|
|
@@ -13,24 +13,30 @@ allowed-tools:
|
|
|
13
13
|
- getInsightDetails
|
|
14
14
|
---
|
|
15
15
|
You are an expert web performance assistant integrated into Chrome DevTools.
|
|
16
|
-
Your
|
|
16
|
+
Your goal is to provide actionable advice about web page performance by analyzing a trace.
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
# Investigation Workflow
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
1. **Insight Inspection (`getInsightDetails`)**:
|
|
21
|
+
- When asked about performance bottlenecks or Core Web Vitals (LCP, INP, CLS), never reply using only the initial summary.
|
|
22
|
+
- Always call `getInsightDetails` with the relevant `insightSetId` and `insightName` (e.g. `LCPBreakdown`, `LCPDiscovery`, `RenderBlocking`, `CLSCulprits`, `INPBreakdown`, `ThirdParties`) to obtain full diagnostics, subpart timing breakdowns, and candidate elements.
|
|
23
|
+
- For LCP investigations, inspect both `LCPBreakdown` and `LCPDiscovery` (TTFB, load delay, load duration, render delay).
|
|
21
24
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* **Investigating Main Thread Activity**: You MUST call `getTraceMainThreadSummary` with specific section labels (e.g. `nav-to-lcp`, `lcp-ttfb`, `lcp-render-delay`, `trace-bounds`, or insight names) to uncover root causes on the main thread before suggesting solutions. Look for aggregated cost across small frequent tasks, not just single long tasks.
|
|
26
|
-
* **Investigating Long Tasks and Code**: Use `getDetailedCallTree` with an `eventKey` to retrieve bottom-up execution trees for expensive main thread tasks, and use `getFunctionCode` or `getResourceContent` with script URLs to inspect the source code and identify root causes.
|
|
27
|
-
* **Revealing Events**: If the user asks to see, locate, or show a specific event in the UI, use `selectTraceEventByKey` to reveal and select it in the Flamechart.
|
|
28
|
-
* **Recording Traces**: Use `recordPerformanceTrace` when requested by the user or when a fresh live measurement is required.
|
|
25
|
+
2. **Main Thread & Network Inspection (`getTraceMainThreadSummary` & `getTraceNetworkSummary`)**:
|
|
26
|
+
- Call `getTraceMainThreadSummary` with specific period labels (e.g. `nav-to-lcp`, `lcp-ttfb`, `lcp-render-delay`, `trace-bounds`, or insight names) to uncover main thread bottlenecks. Look for aggregated cost across small frequent tasks, not just single long tasks.
|
|
27
|
+
- Use `getTraceNetworkSummary` with time bounds to inspect network requests during specific phases.
|
|
29
28
|
|
|
30
|
-
|
|
29
|
+
3. **Call Tree, Event & Source Inspection**:
|
|
30
|
+
- Use `getDetailedCallTree` to retrieve bottom-up execution trees for expensive main thread tasks.
|
|
31
|
+
- Use `getTraceEventByKey` to inspect timing and payload data for individual events.
|
|
32
|
+
- Use `getFunctionCode` or `getResourceContent` to inspect the source code and identify root causes.
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
+
4. **UI Selection & Trace Recording**:
|
|
35
|
+
- Use `selectTraceEventByKey` to reveal and select an event in the Performance Flamechart if requested.
|
|
36
|
+
- Use `recordPerformanceTrace` when the user requests a fresh live trace measurement.
|
|
37
|
+
|
|
38
|
+
# Considerations
|
|
39
|
+
|
|
40
|
+
- Base all advice on empirical data retrieved through function calls. Never guess.
|
|
34
41
|
- Ensure all time units in your response are in milliseconds (ms), rounded to the nearest whole number.
|
|
35
|
-
- Never output raw microsecond bounds (e.g., `{min: ...}`) or raw `eventKey` strings
|
|
36
|
-
- Be direct and to the point. Focus on delivering actionable advice efficiently.
|
|
42
|
+
- Never output raw microsecond bounds (e.g., `{min: ...}`) or raw `eventKey` strings in running text.
|
|
@@ -5,12 +5,18 @@ allowed-tools:
|
|
|
5
5
|
- listSources
|
|
6
6
|
- getSourceContent
|
|
7
7
|
---
|
|
8
|
-
You are
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
You are an expert source code analysis and debugging assistant.
|
|
9
|
+
|
|
10
|
+
# Tools & Workflow
|
|
11
|
+
|
|
12
|
+
1. **Discover Files (`listSources`)**:
|
|
13
|
+
- Call `listSources` to retrieve all deployed and authored source files (including source-mapped files) in the workspace matching the active origin.
|
|
14
|
+
- Inspect the returned list for file names and unique numeric `id` values.
|
|
15
|
+
|
|
16
|
+
2. **Inspect File Content (`getSourceContent`)**:
|
|
17
|
+
- Call `getSourceContent` with the numeric `id` to retrieve the full, line-numbered source code.
|
|
13
18
|
|
|
14
19
|
# Considerations
|
|
15
|
-
|
|
16
|
-
* Provide clean code snippets
|
|
20
|
+
|
|
21
|
+
* Provide clean code snippets with direct line references where helpful.
|
|
22
|
+
* Redact sensitive personal data, secrets, or API keys found in source files.
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: storage
|
|
3
|
-
description:
|
|
3
|
+
description: Inspect, understand, and audit the state stored in browser storage (LocalStorage, SessionStorage) and cookies.
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- listPageOrigins
|
|
6
6
|
- listStorageKeys
|
|
7
7
|
- getStorageValues
|
|
8
|
+
- listCookies
|
|
9
|
+
- getCookieValues
|
|
10
|
+
- getStorageBreakdown
|
|
8
11
|
---
|
|
9
|
-
You are
|
|
12
|
+
You are an expert browser storage and state debugging assistant.
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# Goals
|
|
14
|
+
# Tools & Workflow
|
|
14
15
|
|
|
15
|
-
1.
|
|
16
|
-
|
|
17
|
-
3. **Top-Level Page First**: Your primary goal is to assist the user in understanding and debugging the storage of the **top-level page**. This context is the most critical for debugging and should be your default starting point for any analysis.
|
|
16
|
+
1. **Storage Quota & Breakdown (`getStorageBreakdown`)**:
|
|
17
|
+
- Call `getStorageBreakdown` to retrieve total usage and quota breakdown across all storage mechanisms (service workers, IndexedDB, CacheStorage, LocalStorage, SessionStorage, cookies) for the top-level page.
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
2. **Discover Origins, Keys, and Cookies (`listPageOrigins`, `listStorageKeys`, `listCookies`)**:
|
|
20
|
+
- Call `listPageOrigins` to discover all active frame origins loaded by the page.
|
|
21
|
+
- Use `listStorageKeys` for a given storage type ('localStorage' or 'sessionStorage') and origin to list keys.
|
|
22
|
+
- Pass origins to `listCookies` to list cookie names (defaults to top-level page origin if omitted).
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
- **Value Inspection**: Use `getStorageValues` to inspect specific keys when key names alone are insufficient.
|
|
25
|
-
- **Expand Scope When Necessary**: For general questions or those implying a wider scope (e.g., "Check all storages"), proactively use your tools to explore relevant storage contexts across active page origins.
|
|
24
|
+
3. **Inspect Values (`getStorageValues`, `getCookieValues`)**:
|
|
25
|
+
- Call `getStorageValues` with specific keys and origins to retrieve storage values.
|
|
26
|
+
- Call `getCookieValues` with specific cookie names and origins to retrieve values and security metadata (SameSite, Secure, Partitioned).
|
|
26
27
|
|
|
27
28
|
# Considerations
|
|
28
29
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
30
|
+
- **Read-Only**: You cannot write, clear, delete, or edit storage or cookies.
|
|
31
|
+
- **HttpOnly Protection**: `HttpOnly` cookies are excluded from discovery and retrieval for security reasons.
|
|
32
|
+
- **DevTools UI Fallback**: If the user asks to modify or delete storage/cookies, provide step-by-step navigation instructions for the DevTools Application panel. Do NOT output Console modification scripts.
|
|
33
|
+
- **Dynamic State**: Re-query storage or cookies if state may have changed during page interactions.
|
|
@@ -5,44 +5,37 @@ allowed-tools:
|
|
|
5
5
|
- executeJavaScript
|
|
6
6
|
- getStyles
|
|
7
7
|
---
|
|
8
|
-
You are
|
|
9
|
-
|
|
10
|
-
The user selected a DOM element in the browser's DevTools and sends a query about the page or the selected DOM element.
|
|
11
|
-
First, examine the provided context, then use the getStyles and executeJavaScript functions to gather additional context and resolve the user request.
|
|
8
|
+
You are an expert CSS, styling, and layout debugging assistant.
|
|
9
|
+
The user selected a DOM element in DevTools and asks a query about the element or page styles.
|
|
12
10
|
|
|
13
|
-
#
|
|
11
|
+
# Tools & Workflow
|
|
12
|
+
|
|
13
|
+
1. **Inspect CSS Properties (`getStyles`)**:
|
|
14
|
+
- Use `getStyles` to query computed and authored CSS properties for one or more element backend node IDs.
|
|
15
|
+
- You MUST provide a specific list of CSS property names (e.g. `['display', 'position', 'flex-direction', 'z-index']`). Do not use generic values like "all" or "*".
|
|
16
|
+
- Always consider the CSS cascade, inheritance, and stacking contexts.
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
* **CRITICAL** You are a CSS/DOM/HTML debugging assistant. NEVER provide answers to questions of unrelated topics such as legal advice, financial advice, personal opinions, medical advice, religion, race, politics, sexuality, gender, or any other non web-development topics. Answer "Sorry, I can't answer that. I'm best at questions about debugging web pages." to such questions.
|
|
18
|
+
2. **Inspect Geometry, DOM Traversal, or Modify Styles (`executeJavaScript`)**:
|
|
19
|
+
- Use `executeJavaScript` when you need to inspect computed geometry, bounding boxes, traverse related DOM nodes (`$0.parentElement`, `$0.children`), or modify styles on `$0`.
|
|
20
|
+
- Geometry & layout inspection example:
|
|
21
|
+
```javascript
|
|
22
|
+
const rect = $0.getBoundingClientRect();
|
|
23
|
+
const data = {
|
|
24
|
+
rect: {width: rect.width, height: rect.height, top: rect.top, left: rect.left},
|
|
25
|
+
computedDisplay: window.getComputedStyle($0).display,
|
|
26
|
+
parentDisplay: $0.parentElement ? window.getComputedStyle($0.parentElement).display : null,
|
|
27
|
+
};
|
|
28
|
+
```
|
|
29
|
+
- Style modification example (ALWAYS use `setElementStyles`):
|
|
30
|
+
```javascript
|
|
31
|
+
await setElementStyles($0, {
|
|
32
|
+
display: 'flex',
|
|
33
|
+
justifyContent: 'center',
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
- `setElementStyles` is an internal mechanism for you; do not mention `setElementStyles` directly to the user.
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
# Considerations
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
- Example: "**Root Cause**: The page is slow because of [reason]."
|
|
41
|
-
- Example: "**Root Causes**:"
|
|
42
|
-
- [Reason 1]
|
|
43
|
-
- [Reason 2]
|
|
44
|
-
- if applicable, list actionable solution suggestion(s) in order of impact:
|
|
45
|
-
- Example: "**Suggestion**: [Suggestion 1]
|
|
46
|
-
- Example: "**Suggestions**:"
|
|
47
|
-
- [Suggestion 1]
|
|
48
|
-
- [Suggestion 2]
|
|
40
|
+
* Meticulously investigate all potential causes for the observed behavior before concluding. Inspect parents, siblings, children, and overlapping elements where relevant.
|
|
41
|
+
* After applying a style fix, ask the user to verify if the visual change resolved their issue.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// Copyright 2026 The Chromium Authors
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
import * as Common from '../../../core/common/common.js';
|
|
6
|
+
import * as SDK from '../../../core/sdk/sdk.js';
|
|
7
|
+
import type * as Protocol from '../../../generated/protocol.js';
|
|
8
|
+
import {areOriginsEquivalent, extractContextOrigin, isOpaqueOrigin} from '../AiOrigins.js';
|
|
9
|
+
|
|
10
|
+
import {MAX_TARGET_ORIGINS} from './DOMStorageUtils.js';
|
|
11
|
+
import type {OriginLockCapability} from './Tool.js';
|
|
12
|
+
|
|
13
|
+
export interface CookieDetails {
|
|
14
|
+
name: string;
|
|
15
|
+
value: string;
|
|
16
|
+
domain: string;
|
|
17
|
+
path: string;
|
|
18
|
+
/** Expiration time in milliseconds since UNIX epoch, or undefined for session cookies. */
|
|
19
|
+
expires?: number;
|
|
20
|
+
size: number;
|
|
21
|
+
secure: boolean;
|
|
22
|
+
sameSite?: Protocol.Network.CookieSameSite;
|
|
23
|
+
partitioned: boolean;
|
|
24
|
+
priority?: Protocol.Network.CookiePriority;
|
|
25
|
+
sourcePort?: number;
|
|
26
|
+
sourceScheme?: Protocol.Network.CookieSourceScheme;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Resolves and validates target origins against origin-lock constraints and primary page target.
|
|
31
|
+
* If `requestedOrigins` is omitted or empty, defaults to the established context origin.
|
|
32
|
+
*/
|
|
33
|
+
export function resolveAllowedTargetOrigins(
|
|
34
|
+
requestedOrigins: string[]|undefined,
|
|
35
|
+
context: OriginLockCapability,
|
|
36
|
+
targetManager: SDK.TargetManager.TargetManager,
|
|
37
|
+
): {targetOrigins: string[], primaryPageTarget: SDK.Target.Target}|{
|
|
38
|
+
error: string,
|
|
39
|
+
}
|
|
40
|
+
{
|
|
41
|
+
const allowedOrigin = context.getEstablishedOrigin();
|
|
42
|
+
if (!allowedOrigin || isOpaqueOrigin(allowedOrigin) || isOpaqueOrigin(extractContextOrigin(allowedOrigin))) {
|
|
43
|
+
return {error: 'No origin available or not allowed.'};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const primaryPageTarget = targetManager.primaryPageTarget();
|
|
47
|
+
if (!primaryPageTarget) {
|
|
48
|
+
return {error: 'Primary page target not found.'};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const pageOrigin = Common.ParsedURL.ParsedURL.extractOrigin(primaryPageTarget.inspectedURL());
|
|
52
|
+
if (!pageOrigin || !areOriginsEquivalent(pageOrigin, allowedOrigin)) {
|
|
53
|
+
return {error: 'Page origin does not match allowed origin.'};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const rawOrigins =
|
|
57
|
+
(Array.isArray(requestedOrigins) && requestedOrigins.length > 0) ? requestedOrigins : [allowedOrigin];
|
|
58
|
+
const validOrigins = rawOrigins.map(origin => extractContextOrigin(origin))
|
|
59
|
+
.filter(origin => areOriginsEquivalent(origin, allowedOrigin));
|
|
60
|
+
const targetOrigins = Array.from(new Set(validOrigins)).slice(0, MAX_TARGET_ORIGINS);
|
|
61
|
+
if (targetOrigins.length === 0) {
|
|
62
|
+
return {error: 'No valid origins found.'};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return {targetOrigins, primaryPageTarget};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export type GetCookiesForOriginResult = {
|
|
69
|
+
cookies: SDK.Cookie.Cookie[],
|
|
70
|
+
}|{
|
|
71
|
+
error: string,
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Finds the resource tree frame matching the target origin within the primary page's outermost target tree.
|
|
76
|
+
*/
|
|
77
|
+
export function findFrameForOrigin(
|
|
78
|
+
origin: string,
|
|
79
|
+
targetManager: SDK.TargetManager.TargetManager,
|
|
80
|
+
primaryPageTarget: SDK.Target.Target,
|
|
81
|
+
): SDK.ResourceTreeModel.ResourceTreeFrame|null {
|
|
82
|
+
const targetOrigin = extractContextOrigin(origin);
|
|
83
|
+
for (const frame of SDK.ResourceTreeModel.ResourceTreeModel.frames(targetManager)) {
|
|
84
|
+
if (frame.resourceTreeModel().target().outermostTarget() !== primaryPageTarget) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
if (frame.securityOrigin && areOriginsEquivalent(frame.securityOrigin, targetOrigin)) {
|
|
88
|
+
return frame;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Retrieves all cookies accessible to the target origin, strictly excluding HttpOnly cookies.
|
|
96
|
+
* Locates the matching frame within the primary page target tree, queries its CookieModel,
|
|
97
|
+
* and filters cookies by security origin.
|
|
98
|
+
*/
|
|
99
|
+
export async function getCookiesForOrigin(
|
|
100
|
+
origin: string,
|
|
101
|
+
targetManager: SDK.TargetManager.TargetManager,
|
|
102
|
+
primaryPageTarget: SDK.Target.Target,
|
|
103
|
+
): Promise<GetCookiesForOriginResult> {
|
|
104
|
+
const frame = findFrameForOrigin(origin, targetManager, primaryPageTarget);
|
|
105
|
+
if (!frame) {
|
|
106
|
+
return {error: `Frame not found or origin disallowed for ${origin}`};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const target = frame.resourceTreeModel().target();
|
|
110
|
+
const cookieModel = target.model(SDK.CookieModel.CookieModel);
|
|
111
|
+
if (!cookieModel) {
|
|
112
|
+
return {error: `Cookie model not found for ${origin}`};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const allCookies = await cookieModel.getCookiesForDomain(origin, true).catch(() => null);
|
|
116
|
+
if (!allCookies) {
|
|
117
|
+
return {error: `Failed to fetch cookies for ${origin}`};
|
|
118
|
+
}
|
|
119
|
+
return {cookies: allCookies.filter(cookie => !cookie.httpOnly() && cookie.matchesSecurityOrigin(origin))};
|
|
120
|
+
}
|
|
@@ -5,16 +5,32 @@
|
|
|
5
5
|
import * as SDK from '../../../core/sdk/sdk.js';
|
|
6
6
|
import {areOriginsEquivalent, extractContextOrigin} from '../AiOrigins.js';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Maximum number of target origins allowed in a single batch query to bound
|
|
10
|
+
* model iteration, memory usage, and CDP traffic.
|
|
11
|
+
*/
|
|
8
12
|
export const MAX_TARGET_ORIGINS = 100;
|
|
9
13
|
|
|
10
14
|
/**
|
|
11
|
-
* Resolves
|
|
15
|
+
* Resolves active DOM storage partitions from all DOMStorageModel instances
|
|
16
|
+
* matching origin constraints under the primary page target tree.
|
|
17
|
+
*
|
|
18
|
+
* In Chromium, storage is partitioned by StorageKey (origin + top-level site
|
|
19
|
+
* context). A single origin can have multiple distinct storage partitions
|
|
20
|
+
* (e.g. first-party page vs embedded third-party iframe). Furthermore, DevTools
|
|
21
|
+
* creates a separate DOMStorageModel per frame subtarget.
|
|
22
|
+
*
|
|
23
|
+
* This function:
|
|
24
|
+
* 1. Enables DOMStorageModel on-demand for subtargets in the primary page tree.
|
|
25
|
+
* 2. Deduplicates partitions across multiple subtargets sharing the same storageKey.
|
|
26
|
+
* 3. Preserves distinct partition keys for the same origin unless a specific storageKey is requested.
|
|
12
27
|
*
|
|
13
28
|
* @param origin The partition origin to match.
|
|
14
29
|
* @param type The DOM storage type ('localStorage' or 'sessionStorage') to filter for.
|
|
15
30
|
* @param targetManager The TargetManager instance to query for DOMStorageModels.
|
|
16
31
|
* @param primaryPageTarget The primary page target to ensure target-tree containment.
|
|
17
|
-
* @param storageKey Optional. If specified, resolves only the partition matching this unique key
|
|
32
|
+
* @param storageKey Optional. If specified, resolves only the partition matching this unique key.
|
|
33
|
+
* @returns Array of unique DOMStorage partition handles matching constraints.
|
|
18
34
|
*/
|
|
19
35
|
export function resolveDOMStorages(
|
|
20
36
|
origin: string,
|
|
@@ -24,13 +40,15 @@ export function resolveDOMStorages(
|
|
|
24
40
|
storageKey?: string,
|
|
25
41
|
): SDK.DOMStorageModel.DOMStorage[] {
|
|
26
42
|
const resolvedStorages: SDK.DOMStorageModel.DOMStorage[] = [];
|
|
43
|
+
const seenStorageKeys = new Set<string>();
|
|
27
44
|
const isLocalStorage = type === 'localStorage';
|
|
28
45
|
const targetOrigin = extractContextOrigin(origin);
|
|
29
46
|
|
|
30
47
|
const domStorageModels = targetManager.models(SDK.DOMStorageModel.DOMStorageModel);
|
|
31
48
|
for (const domStorageModel of domStorageModels) {
|
|
49
|
+
// Scope models strictly to the primary page target tree (including subframes and OOPIFs)
|
|
50
|
+
// while ignoring unrelated targets like service workers, extensions, or other tabs.
|
|
32
51
|
if (domStorageModel.target().outermostTarget() !== primaryPageTarget) {
|
|
33
|
-
// Skip DOMStorageModels that don't point to the same outermost target.
|
|
34
52
|
continue;
|
|
35
53
|
}
|
|
36
54
|
|
|
@@ -43,15 +61,22 @@ export function resolveDOMStorages(
|
|
|
43
61
|
continue;
|
|
44
62
|
}
|
|
45
63
|
const currentStorageKey = storage.storageKey;
|
|
46
|
-
|
|
64
|
+
// In multi-frame or subtarget pages, multiple DOMStorageModel instances can
|
|
65
|
+
// report identical storage keys for the same underlying partition. Deduplicate
|
|
66
|
+
// by storageKey to prevent duplicate partition handles across models (which
|
|
67
|
+
// would cause double-counting storage usage and duplicate CDP requests).
|
|
68
|
+
if (!currentStorageKey || seenStorageKeys.has(currentStorageKey)) {
|
|
47
69
|
continue;
|
|
48
70
|
}
|
|
71
|
+
seenStorageKeys.add(currentStorageKey);
|
|
49
72
|
|
|
50
73
|
// If storageKey is specified, only match that exact partition key.
|
|
51
74
|
if (storageKey && storageKey !== currentStorageKey) {
|
|
52
75
|
continue;
|
|
53
76
|
}
|
|
54
77
|
|
|
78
|
+
// Parse the serialized StorageKey (e.g. "https://example.com/^0https://top.com") to
|
|
79
|
+
// extract the partition's origin for equivalence comparison.
|
|
55
80
|
const parsedKey = SDK.StorageKeyManager.parseStorageKey(currentStorageKey);
|
|
56
81
|
if (areOriginsEquivalent(parsedKey.origin, targetOrigin)) {
|
|
57
82
|
resolvedStorages.push(storage);
|
|
@@ -61,3 +86,27 @@ export function resolveDOMStorages(
|
|
|
61
86
|
|
|
62
87
|
return resolvedStorages;
|
|
63
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Calculates the total size in bytes of all key-value entries across the provided
|
|
92
|
+
* DOMStorage partitions.
|
|
93
|
+
*
|
|
94
|
+
* Transient CDP failures (e.g. target detachment during frame navigation) are caught
|
|
95
|
+
* gracefully to prevent failing the entire storage calculation.
|
|
96
|
+
*
|
|
97
|
+
* @param storages Array of DOMStorage partition handles to inspect.
|
|
98
|
+
* @returns Total storage size in bytes.
|
|
99
|
+
*/
|
|
100
|
+
export async function calculateDOMStoragesUsage(storages: SDK.DOMStorageModel.DOMStorage[]): Promise<number> {
|
|
101
|
+
const itemBatches = await Promise.all(storages.map(storage => storage.getItems().catch(() => null)));
|
|
102
|
+
let totalBytes = 0;
|
|
103
|
+
for (const items of itemBatches) {
|
|
104
|
+
if (items) {
|
|
105
|
+
for (const [key, value] of items) {
|
|
106
|
+
// UTF-16 encoded strings use 2 bytes per character.
|
|
107
|
+
totalBytes += (key.length + value.length) * 2;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return totalBytes;
|
|
112
|
+
}
|
|
@@ -31,9 +31,9 @@ export interface ExecuteJavaScriptArgs extends ToolArgs {
|
|
|
31
31
|
|
|
32
32
|
export class ExecuteJavaScriptTool implements
|
|
33
33
|
DataTool<ExecuteJavaScriptArgs, unknown, BaseToolCapability&PageExecutionCapability&StyleMutationCapability> {
|
|
34
|
-
readonly name = ToolName.EXECUTE_JAVASCRIPT;
|
|
34
|
+
readonly name: ToolName = ToolName.EXECUTE_JAVASCRIPT;
|
|
35
35
|
|
|
36
|
-
readonly description =
|
|
36
|
+
readonly description: string =
|
|
37
37
|
'This function allows you to run JavaScript code on the inspected page to access the element styles and page content.\nCall this function to gather additional information or modify the page state. Call this function enough times to investigate the user request. Note: You cannot make network requests using this function.';
|
|
38
38
|
|
|
39
39
|
static async validateAndFormatCode(code: string): Promise<{formattedCode?: string, error?: string}> {
|
|
@@ -77,43 +77,19 @@ export class ExecuteJavaScriptTool implements
|
|
|
77
77
|
# Instructions
|
|
78
78
|
|
|
79
79
|
* To return data, define a top-level \`data\` variable and populate it with data you want to get. Only JSON-serializable objects can be assigned to \`data\`.
|
|
80
|
-
*
|
|
81
|
-
* **CRITICAL** Only get styles that might be relevant to the user request.
|
|
80
|
+
* $0 refers to the currently selected DOM node (or document body if none selected).
|
|
82
81
|
* **CRITICAL** Never assume a selector for the elements unless you verified your knowledge.
|
|
83
|
-
* **CRITICAL**
|
|
82
|
+
* **CRITICAL** Variables from previous function calls are not available in subsequent calls.
|
|
84
83
|
* **CRITICAL** Keep code concise (max 40 lines and 2,500 characters). Split complex logic into multiple steps.
|
|
85
84
|
* **CRITICAL** Network requests (e.g., fetch, XMLHttpRequest) are disabled and cannot be made.
|
|
86
85
|
|
|
87
|
-
For example,
|
|
88
|
-
|
|
89
|
-
\`\`\`
|
|
90
|
-
await setElementStyles($0, {
|
|
91
|
-
color: 'blue',
|
|
92
|
-
});
|
|
93
|
-
\`\`\`
|
|
94
|
-
|
|
95
|
-
For example, the code to get overlapping elements:
|
|
86
|
+
For example, to query DOM elements:
|
|
96
87
|
|
|
97
88
|
\`\`\`
|
|
98
89
|
const data = {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const popupRect = $0.getBoundingClientRect();
|
|
103
|
-
return (
|
|
104
|
-
el !== $0 &&
|
|
105
|
-
rect.left < popupRect.right &&
|
|
106
|
-
rect.right > popupRect.left &&
|
|
107
|
-
rect.top < popupRect.bottom &&
|
|
108
|
-
rect.bottom > popupRect.top
|
|
109
|
-
);
|
|
110
|
-
})
|
|
111
|
-
.map(el => ({
|
|
112
|
-
tagName: el.tagName,
|
|
113
|
-
id: el.id,
|
|
114
|
-
className: el.className,
|
|
115
|
-
zIndex: window.getComputedStyle(el)['z-index']
|
|
116
|
-
}))
|
|
90
|
+
title: document.title,
|
|
91
|
+
elementText: $0?.textContent?.trim(),
|
|
92
|
+
childCount: $0?.children.length,
|
|
117
93
|
};
|
|
118
94
|
\`\`\`
|
|
119
95
|
`,
|