chrome-devtools-frontend 1.0.1618066 → 1.0.1621064

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.
Files changed (54) hide show
  1. package/docs/checklist/README.md +8 -7
  2. package/eslint.config.mjs +7 -0
  3. package/front_end/core/sdk/NetworkManager.ts +23 -2
  4. package/front_end/core/sdk/ServerSentEventsProtocol.ts +1 -1
  5. package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +119 -13
  6. package/front_end/generated/InspectorBackendCommands.ts +6 -6
  7. package/front_end/generated/SupportedCSSProperties.js +100 -100
  8. package/front_end/generated/protocol-mapping.d.ts +1 -9
  9. package/front_end/generated/protocol-proxy-api.d.ts +1 -9
  10. package/front_end/generated/protocol.ts +5 -0
  11. package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +512 -0
  12. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +65 -85
  13. package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -16
  14. package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
  15. package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +21 -4
  16. package/front_end/models/bindings/SymbolizedError.ts +69 -2
  17. package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
  18. package/front_end/models/stack_trace/DetailedErrorStackParser.ts +11 -3
  19. package/front_end/models/stack_trace/ErrorStackParser.ts +18 -0
  20. package/front_end/panels/ai_assistance/components/ChatMessage.ts +84 -2
  21. package/front_end/panels/ai_assistance/components/WalkthroughUtils.ts +1 -1
  22. package/front_end/panels/ai_assistance/components/WalkthroughView.ts +9 -2
  23. package/front_end/panels/application/WebMCPView.ts +212 -89
  24. package/front_end/panels/application/webMCPView.css +260 -199
  25. package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +9 -5
  26. package/front_end/panels/changes/ChangesSidebar.ts +2 -2
  27. package/front_end/panels/changes/ChangesView.ts +4 -7
  28. package/front_end/panels/console/ConsoleViewMessage.ts +1 -19
  29. package/front_end/panels/coverage/CoverageView.ts +4 -5
  30. package/front_end/panels/elements/ElementsPanel.ts +9 -12
  31. package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
  32. package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +19 -20
  33. package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +29 -29
  34. package/front_end/panels/elements/components/QueryContainer.ts +5 -6
  35. package/front_end/panels/elements/components/components.ts +0 -2
  36. package/front_end/panels/emulation/MediaQueryInspector.ts +4 -7
  37. package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +47 -66
  38. package/front_end/panels/network/RequestConditionsDrawer.ts +6 -4
  39. package/front_end/panels/performance_monitor/PerformanceMonitor.ts +6 -9
  40. package/front_end/panels/protocol_monitor/JSONEditor.ts +2 -2
  41. package/front_end/panels/search/SearchView.ts +4 -7
  42. package/front_end/panels/sources/DebuggerPausedMessage.ts +18 -22
  43. package/front_end/panels/sources/ThreadsSidebarPane.ts +2 -4
  44. package/front_end/panels/web_audio/WebAudioView.ts +5 -4
  45. package/front_end/third_party/chromium/README.chromium +1 -1
  46. package/front_end/ui/components/icon_button/iconButton.css +1 -0
  47. package/front_end/ui/components/lists/list.css +4 -0
  48. package/front_end/ui/legacy/ViewRegistration.ts +2 -2
  49. package/front_end/ui/legacy/Widget.ts +9 -2
  50. package/front_end/ui/legacy/components/utils/Linkifier.ts +32 -11
  51. package/front_end/ui/visual_logging/KnownContextValues.ts +17 -0
  52. package/package.json +1 -1
  53. package/front_end/Images/src/dots-circle.svg +0 -10
  54. package/front_end/panels/elements/components/Helper.ts +0 -35
@@ -4,12 +4,11 @@
4
4
 
5
5
  **Shipping new Web Platform features (WPFs) in Chromium requires tooling support.**
6
6
 
7
- Many new Web Platform Features (WPFs) can piggyback off of DevTools' general tooling for HTML, DOM, CSS, JavaScript,
8
- WebAssembly, Network, and other aspects — requiring only minimal or no changes to make DevTools behave as expected
9
- in light of the new WPF. This document refers to such cases as _basic support_.
7
+ A feature is *debuggable* if developers can use DevTools (including the classic Chrome DevTools UI *and* [Chrome DevTools for agents](https://github.com/ChromeDevTools/chrome-devtools-mcp)) to more easily identify and fix a bug related to this feature. In some cases, debuggability is important for feature adoption, especially when a feature is complex by nature.
10
8
 
11
- However, some WPFs might warrant larger changes, including brand-new DevTools features. This document refers to such
12
- cases as _extended support_.
9
+ Many new Web Platform Features (WPFs) can piggyback off of DevTools' general tooling for HTML, DOM, CSS, JavaScript, WebAssembly, Network, and other aspects — requiring only minimal or no changes to make DevTools behave as expected in light of the new WPF. This document refers to such cases as _basic support_.
10
+
11
+ However, some WPFs might warrant larger changes, including brand-new DevTools features. This document refers to such cases as _extended support_.
13
12
 
14
13
  **What is basic support?**
15
14
  Basic support ensures that a new WPF is introspectable and DevTools does not break or crash Chromium in its presence. In addition, developers should have a way of knowing if their web application uses this WPF correctly. Definitions and examples of basic support for common WPF categories can be found below.
@@ -59,6 +58,7 @@ This is often automatically supported because the Elements panel directly reflec
59
58
  This is often automatically supported because the DevTools Console has access to the same JavaScript runtime as the page. Any property that is programmatically accessible on a DOM object will be discoverable by the Console's autocomplete mechanism.
60
59
 
61
60
  Verify that the new properties show up in the DevTools Console autocomplete functionality. To enable argument hints for new or changed parameterized functions, run
61
+
62
62
  ```bash
63
63
  devtools-frontend/src/scripts/deps/roll_deps.py
64
64
  ```
@@ -114,6 +114,7 @@ Any new CSS property that is applied to an element should also appear correctly
114
114
 
115
115
  To recognize new CSS properties/values in the DevTools Styles tab’s autocomplete functionality, roll
116
116
  [Chromium’s `css_properties.json5`](https://source.chromium.org/chromium/chromium/src/+/main:third\_party/blink/renderer/core/css/css_properties.json5;drc=be2c473625b9c28a4ff6735547cb0c1b6743f4ae) into the `devtools-frontend` repository by running
117
+
117
118
  ```bash
118
119
  devtools-frontend/src/scripts/deps/roll_deps.py
119
120
  ```
@@ -123,7 +124,7 @@ see this [example CL](https://chromium-review.googlesource.com/c/devtools/devtoo
123
124
 
124
125
  Additionally, verify that the Styles tab tooltips showing the property's definition and baseline status are correct and up-to-date. Otherwise, let DevTools team know that this should be updated.
125
126
 
126
- ### New CSS Functions and Value Indirection
127
+ ### New CSS functions and value indirection
127
128
 
128
129
  > **Basic support requirement:** The new function or value mechanism is correctly parsed and displayed in the Styles tab, showing the *authored* value (e.g., `var(--my-color)`). Hovering over the value should reveal its computed result in a tooltip. The function name should also be autocompleted.
129
130
 
@@ -135,7 +136,7 @@ Support for new CSS functions and other forms of value indirection (like CSS cus
135
136
 
136
137
  Support for new pseudo-elements is not automatic. The browser's backend must be updated to expose the new pseudo-element over the Chrome DevTools Protocol (CDP). Additionally, the DevTools frontend must be updated to recognize and display these pseudo-elements in the Elements panel.
137
138
 
138
- Pointers: [InspectorDOMAgent's supported pesudos](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/inspector_dom_agent.cc;l=122;drc=90e6a37b7c43154ea99d7cc7ff632ee181078fb2), [InspectorStyleResolver's list of supported pseudo-elements](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/inspector_style_resolver.cc;l=57-71;drc=c182cb38dc164e2b83c75cdf8699b076dfe6bc5e), and [DevTools Frontend DOMModel updates example CL](https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6195233).
139
+ Pointers: [`InspectorDOMAgent`’s supported pseudos](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/inspector_dom_agent.cc;l=122;drc=90e6a37b7c43154ea99d7cc7ff632ee181078fb2), [`InspectorStyleResolver`’s list of supported pseudo-elements](https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/inspector/inspector_style_resolver.cc;l=57-71;drc=c182cb38dc164e2b83c75cdf8699b076dfe6bc5e), and [DevTools Frontend `DOMModel` updates example CL](https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6195233).
139
140
 
140
141
 
141
142
  ## Network-related features
package/eslint.config.mjs CHANGED
@@ -899,6 +899,13 @@ export default defineConfig([
899
899
  '@devtools/canvas-context-tracking': 'error',
900
900
  },
901
901
  },
902
+ {
903
+ name: 'AI Assistance agents',
904
+ files: ['front_end/models/ai_assistance/agents/**/*.ts'],
905
+ rules: {
906
+ '@devtools/no-dynamic-preamble': 'error',
907
+ },
908
+ },
902
909
  {
903
910
  name: 'TypeScript type-definitions',
904
911
  files: ['**/*.d.ts'],
@@ -169,10 +169,16 @@ export class NetworkManager extends SDKModel<EventTypes> {
169
169
 
170
170
  void this.#networkAgent.invoke_enable({
171
171
  maxPostDataSize: MAX_EAGER_POST_REQUEST_BODY_LENGTH,
172
- enableDurableMessages: Root.Runtime.hostConfig.devToolsEnableDurableMessages?.enabled,
173
172
  maxTotalBufferSize: MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH,
174
173
  reportDirectSocketTraffic: true,
175
174
  });
175
+
176
+ if (Root.Runtime.hostConfig.devToolsEnableDurableMessages?.enabled) {
177
+ const preserveLogSetting = settings.moduleSetting('network-log.preserve-log');
178
+ this.#updateDurableMessages(preserveLogSetting.get());
179
+ preserveLogSetting.addChangeListener(this.preserveLogChanged, this);
180
+ }
181
+
176
182
  void this.#networkAgent.invoke_setAttachDebugStack({enabled: true});
177
183
 
178
184
  this.#bypassServiceWorkerSetting = settings.createSetting('bypass-service-worker', false);
@@ -289,7 +295,7 @@ export class NetworkManager extends SDKModel<EventTypes> {
289
295
  const {postData, base64Encoded} = await manager.#networkAgent.invoke_getRequestPostData({requestId});
290
296
  if (base64Encoded && postData) {
291
297
  // Decode base64 to get raw bytes as an ArrayBuffer.
292
- const binaryString = window.atob(postData);
298
+ const binaryString = globalThis.atob(postData);
293
299
  const bytes = new Uint8Array(binaryString.length);
294
300
  for (let i = 0; i < binaryString.length; i++) {
295
301
  bytes[i] = binaryString.charCodeAt(i);
@@ -380,9 +386,24 @@ export class NetworkManager extends SDKModel<EventTypes> {
380
386
  void this.#networkAgent.invoke_setCacheDisabled({cacheDisabled: enabled});
381
387
  }
382
388
 
389
+ private preserveLogChanged({data: enabled}: Common.EventTarget.EventTargetEvent<boolean>): void {
390
+ this.#updateDurableMessages(enabled);
391
+ }
392
+
393
+ #updateDurableMessages(enabled: boolean): void {
394
+ if (enabled) {
395
+ void this.#networkAgent.invoke_configureDurableMessages({
396
+ maxTotalBufferSize: MAX_RESPONSE_BODY_TOTAL_BUFFER_LENGTH,
397
+ });
398
+ } else {
399
+ void this.#networkAgent.invoke_configureDurableMessages({});
400
+ }
401
+ }
402
+
383
403
  override dispose(): void {
384
404
  const settings = this.target().targetManager().settings;
385
405
  settings.moduleSetting('cache-disabled').removeChangeListener(this.cacheDisabledSettingChanged, this);
406
+ settings.moduleSetting('network-log.preserve-log').removeChangeListener(this.preserveLogChanged, this);
386
407
  }
387
408
 
388
409
  private bypassServiceWorkerChanged(): void {
@@ -117,7 +117,7 @@ class Base64TextDecoder {
117
117
  }
118
118
 
119
119
  async addBase64Chunk(chunk: Protocol.binary): Promise<void> {
120
- const binString = window.atob(chunk);
120
+ const binString = globalThis.atob(chunk);
121
121
  const bytes = Uint8Array.from(binString, m => m.codePointAt(0) as number);
122
122
 
123
123
  await this.#writer.ready;
@@ -5,6 +5,7 @@
5
5
 
6
6
  import '../../core/sdk/sdk-meta.js';
7
7
  import '../../models/workspace/workspace-meta.js';
8
+ import '../../models/logs/logs-meta.js';
8
9
  import '../../panels/sensors/sensors-meta.js';
9
10
  import '../../entrypoints/inspector_main/inspector_main-meta.js';
10
11
  import '../../entrypoints/main/main-meta.js';
@@ -19,6 +20,7 @@ import * as SDK from '../../core/sdk/sdk.js';
19
20
  import * as Foundation from '../../foundation/foundation.js';
20
21
  import type * as Protocol from '../../generated/protocol.js';
21
22
  import * as AiAssistance from '../../models/ai_assistance/ai_assistance.js';
23
+ import * as Greendev from '../../models/greendev/greendev.js';
22
24
  import type {SyncMessage} from '../../panels/greendev/GreenDevShared.js';
23
25
  import * as UI from '../../ui/legacy/legacy.js';
24
26
  import * as ThemeSupport from '../../ui/legacy/theme_support/theme_support.js';
@@ -33,7 +35,7 @@ class GreenDevFloaty {
33
35
  #textField!: HTMLInputElement;
34
36
  #playButton!: HTMLButtonElement;
35
37
  #node?: SDK.DOMModel.DOMNode;
36
- #agent?: AiAssistance.StylingAgent.StylingAgent;
38
+ #agent?: AiAssistance.GreenDevAgent.GreenDevAgent|AiAssistance.StylingAgent.StylingAgent;
37
39
  #nodeContext?: AiAssistance.StylingAgent.NodeContext;
38
40
  #backendNodeId?: Protocol.DOM.BackendNodeId;
39
41
  #syncChannel: BroadcastChannel;
@@ -92,7 +94,7 @@ class GreenDevFloaty {
92
94
  const msg = JSON.stringify({
93
95
  id: 9999,
94
96
  method: 'Overlay.setShowInspectedElementAnchor',
95
- params: {inspectedElementAnchorConfig: {backendNodeId: this.#backendNodeId}}
97
+ params: {inspectedElementAnchorConfig: {backendNodeId: this.#backendNodeId}},
96
98
  });
97
99
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.sendMessageToBackend(msg);
98
100
  }
@@ -112,7 +114,7 @@ class GreenDevFloaty {
112
114
  type: 'full-state',
113
115
  messages: this.#getMessages(),
114
116
  sessionId: this.#backendNodeId,
115
- nodeDescription: document.querySelector('.green-dev-floaty-dialog-node-description')?.textContent
117
+ nodeDescription: document.querySelector('.green-dev-floaty-dialog-node-description')?.textContent,
116
118
  };
117
119
  this.#syncChannel.postMessage(state);
118
120
  }
@@ -143,10 +145,7 @@ class GreenDevFloaty {
143
145
  }
144
146
  }
145
147
 
146
- static instance(opts: {
147
- forceNew: boolean|null,
148
- document: Document,
149
- } = {forceNew: null, document}): GreenDevFloaty {
148
+ static instance(opts: {forceNew: boolean|null, document: Document} = {forceNew: null, document}): GreenDevFloaty {
150
149
  const {forceNew, document} = opts;
151
150
  if (!greenDevFloatyInstance || forceNew) {
152
151
  greenDevFloatyInstance = new GreenDevFloaty(document);
@@ -235,7 +234,7 @@ class GreenDevFloaty {
235
234
  const msg = JSON.stringify({
236
235
  id: 9999,
237
236
  method: 'Overlay.setShowInspectedElementAnchor',
238
- params: {inspectedElementAnchorConfig: {backendNodeId: this.#backendNodeId}}
237
+ params: {inspectedElementAnchorConfig: {backendNodeId: this.#backendNodeId}},
239
238
  });
240
239
  Host.InspectorFrontendHost.InspectorFrontendHostInstance.sendMessageToBackend(msg);
241
240
  }
@@ -265,10 +264,16 @@ class GreenDevFloaty {
265
264
  const query = this.#textField.value || this.#textField.placeholder;
266
265
  this.#textField.value = '';
267
266
 
267
+ const useGreenDevAgent = Greendev.Prototypes.instance().isEnabled('beyondStyling');
268
+
268
269
  if (!this.#agent) {
269
270
  const aidaClient = new AidaClient();
270
- this.#agent = new AiAssistance.StylingAgent.StylingAgent({aidaClient});
271
- this.#nodeContext = new AiAssistance.StylingAgent.NodeContext(this.#node);
271
+ if (useGreenDevAgent) {
272
+ this.#agent = new AiAssistance.GreenDevAgent.GreenDevAgent({aidaClient});
273
+ } else {
274
+ this.#agent = new AiAssistance.StylingAgent.StylingAgent({aidaClient});
275
+ this.#nodeContext = new AiAssistance.StylingAgent.NodeContext(this.#node);
276
+ }
272
277
  }
273
278
 
274
279
  this.#addMessageInternal(query, true);
@@ -290,10 +295,111 @@ class GreenDevFloaty {
290
295
  });
291
296
 
292
297
  try {
293
- if (!this.#nodeContext) {
294
- throw new Error('Node context not found.');
298
+ let results;
299
+ if (useGreenDevAgent && this.#agent instanceof AiAssistance.GreenDevAgent.GreenDevAgent) {
300
+ const target = SDK.TargetManager.TargetManager.instance().primaryPageTarget();
301
+ if (!target) {
302
+ return;
303
+ }
304
+
305
+ // --- Add the Accessibility Tree ---
306
+ const accessibilityModel = target.model(SDK.AccessibilityModel.AccessibilityModel);
307
+ let axTree = '';
308
+ if (accessibilityModel) {
309
+ await accessibilityModel.resumeModel();
310
+ const axResponse = await accessibilityModel.agent.invoke_getFullAXTree({});
311
+ if (!axResponse.getError()) {
312
+ axTree = JSON.stringify(axResponse.nodes);
313
+ } else {
314
+ console.error('Failed to capture Accessibility Tree:', axResponse.getError());
315
+ }
316
+ }
317
+
318
+ // --- Add the most recent network requests ---
319
+ const allNetworkRequests = await AiAssistance.GreenDevAgent.GreenDevAgent.getNetworkContextData(target);
320
+ const networkResourcesMax = 50;
321
+ const startNetworkIndex = Math.max(0, allNetworkRequests.length - networkResourcesMax);
322
+ const lastNetworkRequests = allNetworkRequests.slice(startNetworkIndex);
323
+ let formattedNetworkContext = lastNetworkRequests.map(req => req.string).join('\n');
324
+
325
+ if (!formattedNetworkContext) {
326
+ formattedNetworkContext = 'No network requests found.';
327
+ } else {
328
+ const footer = allNetworkRequests.length > lastNetworkRequests.length ?
329
+ `${
330
+ allNetworkRequests.length -
331
+ lastNetworkRequests.length} additional requests are available (network requests shown are capped at ${
332
+ networkResourcesMax} requests).` :
333
+ 'No further network requests have been issued.';
334
+
335
+ formattedNetworkContext = `Showing network requests with indices ${startNetworkIndex}-${
336
+ startNetworkIndex + lastNetworkRequests.length - 1}:\n\n${formattedNetworkContext}\n\n${footer}`;
337
+ }
338
+
339
+ // --- Add the most recent console messages ---
340
+ const consoleModel = target.model(SDK.ConsoleModel.ConsoleModel);
341
+ const allConsoleMessages = consoleModel ? consoleModel.messages() : [];
342
+ const consoleMsgLimit = 50;
343
+ const startIndex = Math.max(0, allConsoleMessages.length - consoleMsgLimit);
344
+ const lastConsoleMessages = allConsoleMessages.slice(startIndex);
345
+ let formattedConsoleMessages =
346
+ lastConsoleMessages
347
+ .map(
348
+ (entry: SDK.ConsoleModel.ConsoleMessage, i: number) =>
349
+ AiAssistance.GreenDevAgent.GreenDevAgent.formatConsoleMessage(entry, startIndex + i))
350
+ .join('\n');
351
+ formattedConsoleMessages = formattedConsoleMessages.trimEnd();
352
+
353
+ if (!formattedConsoleMessages) {
354
+ formattedConsoleMessages = 'No console messages found.';
355
+ } else {
356
+ const footer = allConsoleMessages.length > lastConsoleMessages.length ?
357
+ `${
358
+ allConsoleMessages.length -
359
+ lastConsoleMessages.length} additional messages are available (errors shown are capped at ${
360
+ consoleMsgLimit} most recent).` :
361
+ 'No further console messages have been emitted.';
362
+
363
+ formattedConsoleMessages = `Showing console messages with indices ${startIndex}-${
364
+ startIndex + lastConsoleMessages.length - 1}:\n\n${formattedConsoleMessages}\n\n${footer}`;
365
+ }
366
+
367
+ const mainUrl = target.inspectedURL();
368
+
369
+ // --- Add some context information about the selected node ---
370
+ const elementContext = await AiAssistance.StylingAgent.StylingAgent.describeElement(this.#node);
371
+ const context = `# Page URL
372
+
373
+ ${mainUrl}
374
+
375
+ # User-selected node
376
+
377
+ ${elementContext}
378
+
379
+ # Recent network requests
380
+
381
+ ${formattedNetworkContext}
382
+
383
+ # Recent console messages
384
+
385
+ ${formattedConsoleMessages}
386
+
387
+ # Accessibility tree
388
+
389
+ ${axTree}`;
390
+
391
+ const nodeContext = new AiAssistance.GreenDevAgent.GreenDevContext(context);
392
+ results = this.#agent.run(query, {selected: nodeContext});
393
+ } else if (this.#agent instanceof AiAssistance.StylingAgent.StylingAgent) {
394
+ if (!this.#nodeContext) {
395
+ throw new Error('Node context not found.');
396
+ }
397
+ results = this.#agent.run(query, {selected: this.#nodeContext});
398
+ } else {
399
+ throw new Error('Agent not initialized correctly');
295
400
  }
296
- for await (const result of this.#agent.run(query, {selected: this.#nodeContext})) {
401
+
402
+ for await (const result of results) {
297
403
  switch (result.type) {
298
404
  case ResponseType.ANSWER:
299
405
  aiContent.textContent = result.text;
@@ -585,10 +585,10 @@ inspectorBackend.registerCommand("EventBreakpoints.disable", [], [], "Removes al
585
585
 
586
586
  // Extensions.
587
587
  inspectorBackend.registerEnum("Extensions.StorageArea", {Session: "session", Local: "local", Sync: "sync", Managed: "managed"});
588
- inspectorBackend.registerCommand("Extensions.triggerAction", [{"name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null}, {"name": "targetId", "type": "string", "optional": false, "description": "A tab target ID to trigger the default extension action on.", "typeRef": null}], [], "Runs an extension default action. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
589
- inspectorBackend.registerCommand("Extensions.loadUnpacked", [{"name": "path", "type": "string", "optional": false, "description": "Absolute file path.", "typeRef": null}, {"name": "enableInIncognito", "type": "boolean", "optional": true, "description": "Enable the extension in incognito", "typeRef": null}], ["id"], "Installs an unpacked extension from the filesystem similar to --load-extension CLI flags. Returns extension ID once the extension has been installed. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
590
- inspectorBackend.registerCommand("Extensions.getExtensions", [], ["extensions"], "Gets a list of all unpacked extensions. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging flag is set.");
591
- inspectorBackend.registerCommand("Extensions.uninstall", [{"name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null}], [], "Uninstalls an unpacked extension (others not supported) from the profile. Available if the client is connected using the --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging.");
588
+ inspectorBackend.registerCommand("Extensions.triggerAction", [{"name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null}, {"name": "targetId", "type": "string", "optional": false, "description": "A tab target ID to trigger the default extension action on.", "typeRef": null}], [], "Runs an extension default action.");
589
+ inspectorBackend.registerCommand("Extensions.loadUnpacked", [{"name": "path", "type": "string", "optional": false, "description": "Absolute file path.", "typeRef": null}, {"name": "enableInIncognito", "type": "boolean", "optional": true, "description": "Enable the extension in incognito", "typeRef": null}], ["id"], "Installs an unpacked extension from the filesystem similar to --load-extension CLI flags. Returns extension ID once the extension has been installed.");
590
+ inspectorBackend.registerCommand("Extensions.getExtensions", [], ["extensions"], "Gets a list of all unpacked extensions.");
591
+ inspectorBackend.registerCommand("Extensions.uninstall", [{"name": "id", "type": "string", "optional": false, "description": "Extension id.", "typeRef": null}], [], "Uninstalls an unpacked extension (others not supported) from the profile.");
592
592
  inspectorBackend.registerCommand("Extensions.getStorageItems", [{"name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null}, {"name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to retrieve data from.", "typeRef": "Extensions.StorageArea"}, {"name": "keys", "type": "array", "optional": true, "description": "Keys to retrieve.", "typeRef": "string"}], ["data"], "Gets data from extension storage in the given `storageArea`. If `keys` is specified, these are used to filter the result.");
593
593
  inspectorBackend.registerCommand("Extensions.removeStorageItems", [{"name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null}, {"name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to remove data from.", "typeRef": "Extensions.StorageArea"}, {"name": "keys", "type": "array", "optional": false, "description": "Keys to remove.", "typeRef": "string"}], [], "Removes `keys` from extension storage in the given `storageArea`.");
594
594
  inspectorBackend.registerCommand("Extensions.clearStorageItems", [{"name": "id", "type": "string", "optional": false, "description": "ID of extension.", "typeRef": null}, {"name": "storageArea", "type": "string", "optional": false, "description": "StorageArea to remove data from.", "typeRef": "Extensions.StorageArea"}], [], "Clears extension storage in the given `storageArea`.");
@@ -1043,7 +1043,7 @@ inspectorBackend.registerEnum("Page.ClientNavigationReason", {AnchorClick: "anch
1043
1043
  inspectorBackend.registerEnum("Page.ClientNavigationDisposition", {CurrentTab: "currentTab", NewTab: "newTab", NewWindow: "newWindow", Download: "download"});
1044
1044
  inspectorBackend.registerEnum("Page.ReferrerPolicy", {NoReferrer: "noReferrer", NoReferrerWhenDowngrade: "noReferrerWhenDowngrade", Origin: "origin", OriginWhenCrossOrigin: "originWhenCrossOrigin", SameOrigin: "sameOrigin", StrictOrigin: "strictOrigin", StrictOriginWhenCrossOrigin: "strictOriginWhenCrossOrigin", UnsafeUrl: "unsafeUrl"});
1045
1045
  inspectorBackend.registerEnum("Page.NavigationType", {Navigation: "Navigation", BackForwardCacheRestore: "BackForwardCacheRestore"});
1046
- inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReason", {NotPrimaryMainFrame: "NotPrimaryMainFrame", BackForwardCacheDisabled: "BackForwardCacheDisabled", RelatedActiveContentsExist: "RelatedActiveContentsExist", HTTPStatusNotOK: "HTTPStatusNotOK", SchemeNotHTTPOrHTTPS: "SchemeNotHTTPOrHTTPS", Loading: "Loading", WasGrantedMediaAccess: "WasGrantedMediaAccess", DisableForRenderFrameHostCalled: "DisableForRenderFrameHostCalled", DomainNotAllowed: "DomainNotAllowed", HTTPMethodNotGET: "HTTPMethodNotGET", SubframeIsNavigating: "SubframeIsNavigating", Timeout: "Timeout", CacheLimit: "CacheLimit", JavaScriptExecution: "JavaScriptExecution", RendererProcessKilled: "RendererProcessKilled", RendererProcessCrashed: "RendererProcessCrashed", SchedulerTrackedFeatureUsed: "SchedulerTrackedFeatureUsed", ConflictingBrowsingInstance: "ConflictingBrowsingInstance", CacheFlushed: "CacheFlushed", ServiceWorkerVersionActivation: "ServiceWorkerVersionActivation", SessionRestored: "SessionRestored", ServiceWorkerPostMessage: "ServiceWorkerPostMessage", EnteredBackForwardCacheBeforeServiceWorkerHostAdded: "EnteredBackForwardCacheBeforeServiceWorkerHostAdded", RenderFrameHostReused_SameSite: "RenderFrameHostReused_SameSite", RenderFrameHostReused_CrossSite: "RenderFrameHostReused_CrossSite", ServiceWorkerClaim: "ServiceWorkerClaim", IgnoreEventAndEvict: "IgnoreEventAndEvict", HaveInnerContents: "HaveInnerContents", TimeoutPuttingInCache: "TimeoutPuttingInCache", BackForwardCacheDisabledByLowMemory: "BackForwardCacheDisabledByLowMemory", BackForwardCacheDisabledByCommandLine: "BackForwardCacheDisabledByCommandLine", NetworkRequestDatAPIpeDrainedAsBytesConsumer: "NetworkRequestDatapipeDrainedAsBytesConsumer", NetworkRequestRedirected: "NetworkRequestRedirected", NetworkRequestTimeout: "NetworkRequestTimeout", NetworkExceedsBufferLimit: "NetworkExceedsBufferLimit", NavigationCancelledWhileRestoring: "NavigationCancelledWhileRestoring", NotMostRecentNavigationEntry: "NotMostRecentNavigationEntry", BackForwardCacheDisabledForPrerender: "BackForwardCacheDisabledForPrerender", UserAgentOverrideDiffers: "UserAgentOverrideDiffers", ForegroundCacheLimit: "ForegroundCacheLimit", ForwardCacheDisabled: "ForwardCacheDisabled", BrowsingInstanceNotSwapped: "BrowsingInstanceNotSwapped", BackForwardCacheDisabledForDelegate: "BackForwardCacheDisabledForDelegate", UnloadHandlerExistsInMainFrame: "UnloadHandlerExistsInMainFrame", UnloadHandlerExistsInSubFrame: "UnloadHandlerExistsInSubFrame", ServiceWorkerUnregistration: "ServiceWorkerUnregistration", CacheControlNoStore: "CacheControlNoStore", CacheControlNoStoreCookieModified: "CacheControlNoStoreCookieModified", CacheControlNoStoreHTTPOnlyCookieModified: "CacheControlNoStoreHTTPOnlyCookieModified", NoResponseHead: "NoResponseHead", Unknown: "Unknown", ActivationNavigationsDisallowedForBug1234857: "ActivationNavigationsDisallowedForBug1234857", ErrorDocument: "ErrorDocument", FencedFramesEmbedder: "FencedFramesEmbedder", CookieDisabled: "CookieDisabled", HTTPAuthRequired: "HTTPAuthRequired", CookieFlushed: "CookieFlushed", BroadcastChannelOnMessage: "BroadcastChannelOnMessage", WebViewSettingsChanged: "WebViewSettingsChanged", WebViewJavaScriptObjectChanged: "WebViewJavaScriptObjectChanged", WebViewMessageListenerInjected: "WebViewMessageListenerInjected", WebViewSafeBrowsingAllowlistChanged: "WebViewSafeBrowsingAllowlistChanged", WebViewDocumentStartJavascriptChanged: "WebViewDocumentStartJavascriptChanged", WebSocket: "WebSocket", WebTransport: "WebTransport", WebRTC: "WebRTC", MainResourceHasCacheControlNoStore: "MainResourceHasCacheControlNoStore", MainResourceHasCacheControlNoCache: "MainResourceHasCacheControlNoCache", SubresourceHasCacheControlNoStore: "SubresourceHasCacheControlNoStore", SubresourceHasCacheControlNoCache: "SubresourceHasCacheControlNoCache", ContainsPlugins: "ContainsPlugins", DocumentLoaded: "DocumentLoaded", OutstandingNetworkRequestOthers: "OutstandingNetworkRequestOthers", RequestedMIDIPermission: "RequestedMIDIPermission", RequestedAudioCapturePermission: "RequestedAudioCapturePermission", RequestedVideoCapturePermission: "RequestedVideoCapturePermission", RequestedBackForwardCacheBlockedSensors: "RequestedBackForwardCacheBlockedSensors", RequestedBackgroundWorkPermission: "RequestedBackgroundWorkPermission", BroadcastChannel: "BroadcastChannel", WebXR: "WebXR", SharedWorker: "SharedWorker", SharedWorkerMessage: "SharedWorkerMessage", SharedWorkerWithNoActiveClient: "SharedWorkerWithNoActiveClient", WebLocks: "WebLocks", WebLocksContention: "WebLocksContention", WebHID: "WebHID", WebBluetooth: "WebBluetooth", WebShare: "WebShare", RequestedStorageAccessGrant: "RequestedStorageAccessGrant", WebNfc: "WebNfc", OutstandingNetworkRequestFetch: "OutstandingNetworkRequestFetch", OutstandingNetworkRequestXHR: "OutstandingNetworkRequestXHR", AppBanner: "AppBanner", Printing: "Printing", WebDatabase: "WebDatabase", PictureInPicture: "PictureInPicture", SpeechRecognizer: "SpeechRecognizer", IdleManager: "IdleManager", PaymentManager: "PaymentManager", SpeechSynthesis: "SpeechSynthesis", KeyboardLock: "KeyboardLock", WebOTPService: "WebOTPService", OutstandingNetworkRequestDirectSocket: "OutstandingNetworkRequestDirectSocket", InjectedJavascript: "InjectedJavascript", InjectedStyleSheet: "InjectedStyleSheet", KeepaliveRequest: "KeepaliveRequest", IndexedDBEvent: "IndexedDBEvent", Dummy: "Dummy", JsNetworkRequestReceivedCacheControlNoStoreResource: "JsNetworkRequestReceivedCacheControlNoStoreResource", WebRTCUsedWithCCNS: "WebRTCUsedWithCCNS", WebTransportUsedWithCCNS: "WebTransportUsedWithCCNS", WebSocketUsedWithCCNS: "WebSocketUsedWithCCNS", SmartCard: "SmartCard", LiveMediaStreamTrack: "LiveMediaStreamTrack", UnloadHandler: "UnloadHandler", ParserAborted: "ParserAborted", ContentSecurityHandler: "ContentSecurityHandler", ContentWebAuthenticationAPI: "ContentWebAuthenticationAPI", ContentFileChooser: "ContentFileChooser", ContentSerial: "ContentSerial", ContentFileSystemAccess: "ContentFileSystemAccess", ContentMediaDevicesDispatcherHost: "ContentMediaDevicesDispatcherHost", ContentWebBluetooth: "ContentWebBluetooth", ContentWebUSB: "ContentWebUSB", ContentMediaSessionService: "ContentMediaSessionService", ContentScreenReader: "ContentScreenReader", ContentDiscarded: "ContentDiscarded", EmbedderPopupBlockerTabHelper: "EmbedderPopupBlockerTabHelper", EmbedderSafeBrowsingTriggeredPopupBlocker: "EmbedderSafeBrowsingTriggeredPopupBlocker", EmbedderSafeBrowsingThreatDetails: "EmbedderSafeBrowsingThreatDetails", EmbedderAppBannerManager: "EmbedderAppBannerManager", EmbedderDomDistillerViewerSource: "EmbedderDomDistillerViewerSource", EmbedderDomDistillerSelfDeletingRequestDelegate: "EmbedderDomDistillerSelfDeletingRequestDelegate", EmbedderOomInterventionTabHelper: "EmbedderOomInterventionTabHelper", EmbedderOfflinePage: "EmbedderOfflinePage", EmbedderChromePasswordManagerClientBindCredentialManager: "EmbedderChromePasswordManagerClientBindCredentialManager", EmbedderPermissionRequestManager: "EmbedderPermissionRequestManager", EmbedderModalDialog: "EmbedderModalDialog", EmbedderExtensions: "EmbedderExtensions", EmbedderExtensionMessaging: "EmbedderExtensionMessaging", EmbedderExtensionMessagingForOpenPort: "EmbedderExtensionMessagingForOpenPort", EmbedderExtensionSentMessageToCachedFrame: "EmbedderExtensionSentMessageToCachedFrame", RequestedByWebViewClient: "RequestedByWebViewClient", PostMessageByWebViewClient: "PostMessageByWebViewClient", CacheControlNoStoreDeviceBoundSessionTerminated: "CacheControlNoStoreDeviceBoundSessionTerminated", CacheLimitPrunedOnModerateMemoryPressure: "CacheLimitPrunedOnModerateMemoryPressure", CacheLimitPrunedOnCriticalMemoryPressure: "CacheLimitPrunedOnCriticalMemoryPressure"});
1046
+ inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReason", {NotPrimaryMainFrame: "NotPrimaryMainFrame", BackForwardCacheDisabled: "BackForwardCacheDisabled", RelatedActiveContentsExist: "RelatedActiveContentsExist", HTTPStatusNotOK: "HTTPStatusNotOK", SchemeNotHTTPOrHTTPS: "SchemeNotHTTPOrHTTPS", Loading: "Loading", WasGrantedMediaAccess: "WasGrantedMediaAccess", DisableForRenderFrameHostCalled: "DisableForRenderFrameHostCalled", DomainNotAllowed: "DomainNotAllowed", HTTPMethodNotGET: "HTTPMethodNotGET", SubframeIsNavigating: "SubframeIsNavigating", Timeout: "Timeout", CacheLimit: "CacheLimit", JavaScriptExecution: "JavaScriptExecution", RendererProcessKilled: "RendererProcessKilled", RendererProcessCrashed: "RendererProcessCrashed", SchedulerTrackedFeatureUsed: "SchedulerTrackedFeatureUsed", ConflictingBrowsingInstance: "ConflictingBrowsingInstance", CacheFlushed: "CacheFlushed", ServiceWorkerVersionActivation: "ServiceWorkerVersionActivation", SessionRestored: "SessionRestored", ServiceWorkerPostMessage: "ServiceWorkerPostMessage", EnteredBackForwardCacheBeforeServiceWorkerHostAdded: "EnteredBackForwardCacheBeforeServiceWorkerHostAdded", RenderFrameHostReused_SameSite: "RenderFrameHostReused_SameSite", RenderFrameHostReused_CrossSite: "RenderFrameHostReused_CrossSite", ServiceWorkerClaim: "ServiceWorkerClaim", IgnoreEventAndEvict: "IgnoreEventAndEvict", HaveInnerContents: "HaveInnerContents", TimeoutPuttingInCache: "TimeoutPuttingInCache", BackForwardCacheDisabledByLowMemory: "BackForwardCacheDisabledByLowMemory", BackForwardCacheDisabledByCommandLine: "BackForwardCacheDisabledByCommandLine", NetworkRequestDatAPIpeDrainedAsBytesConsumer: "NetworkRequestDatapipeDrainedAsBytesConsumer", NetworkRequestRedirected: "NetworkRequestRedirected", NetworkRequestTimeout: "NetworkRequestTimeout", NetworkExceedsBufferLimit: "NetworkExceedsBufferLimit", NavigationCancelledWhileRestoring: "NavigationCancelledWhileRestoring", NotMostRecentNavigationEntry: "NotMostRecentNavigationEntry", BackForwardCacheDisabledForPrerender: "BackForwardCacheDisabledForPrerender", UserAgentOverrideDiffers: "UserAgentOverrideDiffers", ForegroundCacheLimit: "ForegroundCacheLimit", ForwardCacheDisabled: "ForwardCacheDisabled", BrowsingInstanceNotSwapped: "BrowsingInstanceNotSwapped", BackForwardCacheDisabledForDelegate: "BackForwardCacheDisabledForDelegate", UnloadHandlerExistsInMainFrame: "UnloadHandlerExistsInMainFrame", UnloadHandlerExistsInSubFrame: "UnloadHandlerExistsInSubFrame", ServiceWorkerUnregistration: "ServiceWorkerUnregistration", CacheControlNoStore: "CacheControlNoStore", CacheControlNoStoreCookieModified: "CacheControlNoStoreCookieModified", CacheControlNoStoreHTTPOnlyCookieModified: "CacheControlNoStoreHTTPOnlyCookieModified", NoResponseHead: "NoResponseHead", Unknown: "Unknown", ActivationNavigationsDisallowedForBug1234857: "ActivationNavigationsDisallowedForBug1234857", ErrorDocument: "ErrorDocument", FencedFramesEmbedder: "FencedFramesEmbedder", CookieDisabled: "CookieDisabled", HTTPAuthRequired: "HTTPAuthRequired", CookieFlushed: "CookieFlushed", BroadcastChannelOnMessage: "BroadcastChannelOnMessage", WebViewSettingsChanged: "WebViewSettingsChanged", WebViewJavaScriptObjectChanged: "WebViewJavaScriptObjectChanged", WebViewMessageListenerInjected: "WebViewMessageListenerInjected", WebViewSafeBrowsingAllowlistChanged: "WebViewSafeBrowsingAllowlistChanged", WebViewDocumentStartJavascriptChanged: "WebViewDocumentStartJavascriptChanged", WebSocket: "WebSocket", WebTransport: "WebTransport", WebRTC: "WebRTC", MainResourceHasCacheControlNoStore: "MainResourceHasCacheControlNoStore", MainResourceHasCacheControlNoCache: "MainResourceHasCacheControlNoCache", SubresourceHasCacheControlNoStore: "SubresourceHasCacheControlNoStore", SubresourceHasCacheControlNoCache: "SubresourceHasCacheControlNoCache", ContainsPlugins: "ContainsPlugins", DocumentLoaded: "DocumentLoaded", OutstandingNetworkRequestOthers: "OutstandingNetworkRequestOthers", RequestedMIDIPermission: "RequestedMIDIPermission", RequestedAudioCapturePermission: "RequestedAudioCapturePermission", RequestedVideoCapturePermission: "RequestedVideoCapturePermission", RequestedBackForwardCacheBlockedSensors: "RequestedBackForwardCacheBlockedSensors", RequestedBackgroundWorkPermission: "RequestedBackgroundWorkPermission", BroadcastChannel: "BroadcastChannel", WebXR: "WebXR", SharedWorker: "SharedWorker", SharedWorkerMessage: "SharedWorkerMessage", SharedWorkerWithNoActiveClient: "SharedWorkerWithNoActiveClient", WebLocks: "WebLocks", WebLocksContention: "WebLocksContention", WebHID: "WebHID", WebBluetooth: "WebBluetooth", WebShare: "WebShare", RequestedStorageAccessGrant: "RequestedStorageAccessGrant", WebNfc: "WebNfc", OutstandingNetworkRequestFetch: "OutstandingNetworkRequestFetch", OutstandingNetworkRequestXHR: "OutstandingNetworkRequestXHR", AppBanner: "AppBanner", Printing: "Printing", WebDatabase: "WebDatabase", PictureInPicture: "PictureInPicture", SpeechRecognizer: "SpeechRecognizer", IdleManager: "IdleManager", PaymentManager: "PaymentManager", SpeechSynthesis: "SpeechSynthesis", KeyboardLock: "KeyboardLock", WebOTPService: "WebOTPService", OutstandingNetworkRequestDirectSocket: "OutstandingNetworkRequestDirectSocket", InjectedJavascript: "InjectedJavascript", InjectedStyleSheet: "InjectedStyleSheet", KeepaliveRequest: "KeepaliveRequest", IndexedDBEvent: "IndexedDBEvent", Dummy: "Dummy", JsNetworkRequestReceivedCacheControlNoStoreResource: "JsNetworkRequestReceivedCacheControlNoStoreResource", WebRTCUsedWithCCNS: "WebRTCUsedWithCCNS", WebTransportUsedWithCCNS: "WebTransportUsedWithCCNS", WebSocketUsedWithCCNS: "WebSocketUsedWithCCNS", SmartCard: "SmartCard", LiveMediaStreamTrack: "LiveMediaStreamTrack", UnloadHandler: "UnloadHandler", ParserAborted: "ParserAborted", ContentSecurityHandler: "ContentSecurityHandler", ContentWebAuthenticationAPI: "ContentWebAuthenticationAPI", ContentFileChooser: "ContentFileChooser", ContentSerial: "ContentSerial", ContentFileSystemAccess: "ContentFileSystemAccess", ContentMediaDevicesDispatcherHost: "ContentMediaDevicesDispatcherHost", ContentWebBluetooth: "ContentWebBluetooth", ContentWebUSB: "ContentWebUSB", ContentMediaSessionService: "ContentMediaSessionService", ContentScreenReader: "ContentScreenReader", ContentDiscarded: "ContentDiscarded", EmbedderPopupBlockerTabHelper: "EmbedderPopupBlockerTabHelper", EmbedderSafeBrowsingTriggeredPopupBlocker: "EmbedderSafeBrowsingTriggeredPopupBlocker", EmbedderSafeBrowsingThreatDetails: "EmbedderSafeBrowsingThreatDetails", EmbedderAppBannerManager: "EmbedderAppBannerManager", EmbedderDomDistillerViewerSource: "EmbedderDomDistillerViewerSource", EmbedderDomDistillerSelfDeletingRequestDelegate: "EmbedderDomDistillerSelfDeletingRequestDelegate", EmbedderOomInterventionTabHelper: "EmbedderOomInterventionTabHelper", EmbedderOfflinePage: "EmbedderOfflinePage", EmbedderChromePasswordManagerClientBindCredentialManager: "EmbedderChromePasswordManagerClientBindCredentialManager", EmbedderPermissionRequestManager: "EmbedderPermissionRequestManager", EmbedderModalDialog: "EmbedderModalDialog", EmbedderExtensions: "EmbedderExtensions", EmbedderExtensionMessaging: "EmbedderExtensionMessaging", EmbedderExtensionMessagingForOpenPort: "EmbedderExtensionMessagingForOpenPort", EmbedderExtensionSentMessageToCachedFrame: "EmbedderExtensionSentMessageToCachedFrame", EmbedderExtensionFrame: "EmbedderExtensionFrame", RequestedByWebViewClient: "RequestedByWebViewClient", PostMessageByWebViewClient: "PostMessageByWebViewClient", CacheControlNoStoreDeviceBoundSessionTerminated: "CacheControlNoStoreDeviceBoundSessionTerminated", CacheLimitPrunedOnModerateMemoryPressure: "CacheLimitPrunedOnModerateMemoryPressure", CacheLimitPrunedOnCriticalMemoryPressure: "CacheLimitPrunedOnCriticalMemoryPressure"});
1047
1047
  inspectorBackend.registerEnum("Page.BackForwardCacheNotRestoredReasonType", {SupportPending: "SupportPending", PageSupportNeeded: "PageSupportNeeded", Circumstantial: "Circumstantial"});
1048
1048
  inspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]);
1049
1049
  inspectorBackend.registerEnum("Page.FileChooserOpenedEventMode", {SelectSingle: "selectSingle", SelectMultiple: "selectMultiple"});
@@ -1499,7 +1499,7 @@ inspectorBackend.registerCommand("WebMCP.enable", [], [], "Enables the WebMCP do
1499
1499
  inspectorBackend.registerCommand("WebMCP.disable", [], [], "Disables the WebMCP domain.");
1500
1500
  inspectorBackend.registerCommand("WebMCP.invokeTool", [{"name": "frameId", "type": "string", "optional": false, "description": "Frame in which to invoke the tool.", "typeRef": "Page.FrameId"}, {"name": "toolName", "type": "string", "optional": false, "description": "Name of the tool to invoke.", "typeRef": null}, {"name": "input", "type": "object", "optional": false, "description": "Input parameters for the tool, matching the tool's inputSchema.", "typeRef": null}], ["invocationId"], "Invokes a registered tool.");
1501
1501
  inspectorBackend.registerCommand("WebMCP.cancelInvocation", [{"name": "invocationId", "type": "string", "optional": false, "description": "Invocation identifier to cancel.", "typeRef": null}], [], "Cancels a pending tool invocation.");
1502
- inspectorBackend.registerType("WebMCP.Annotation", [{"name": "readOnly", "type": "boolean", "optional": true, "description": "A hint indicating that the tool does not modify any state.", "typeRef": null}, {"name": "autosubmit", "type": "boolean", "optional": true, "description": "If the declarative tool was declared with the autosubmit attribute.", "typeRef": null}]);
1502
+ inspectorBackend.registerType("WebMCP.Annotation", [{"name": "readOnly", "type": "boolean", "optional": true, "description": "A hint indicating that the tool does not modify any state.", "typeRef": null}, {"name": "untrustedContent", "type": "boolean", "optional": true, "description": "A hint indicating that the tool output may contain untrusted content, ex: UGC, 3rd party data.", "typeRef": null}, {"name": "autosubmit", "type": "boolean", "optional": true, "description": "If the declarative tool was declared with the autosubmit attribute.", "typeRef": null}]);
1503
1503
  inspectorBackend.registerType("WebMCP.Tool", [{"name": "name", "type": "string", "optional": false, "description": "Tool name.", "typeRef": null}, {"name": "description", "type": "string", "optional": false, "description": "Tool description.", "typeRef": null}, {"name": "inputSchema", "type": "object", "optional": true, "description": "Schema for the tool's input parameters.", "typeRef": null}, {"name": "annotations", "type": "object", "optional": true, "description": "Optional annotations for the tool.", "typeRef": "WebMCP.Annotation"}, {"name": "frameId", "type": "string", "optional": false, "description": "Frame identifier associated with the tool registration.", "typeRef": "Page.FrameId"}, {"name": "backendNodeId", "type": "number", "optional": true, "description": "Optional node ID for declarative tools.", "typeRef": "DOM.BackendNodeId"}, {"name": "stackTrace", "type": "object", "optional": true, "description": "The stack trace at the time of the registration.", "typeRef": "Runtime.StackTrace"}]);
1504
1504
  inspectorBackend.registerType("WebMCP.RemovedTool", [{"name": "name", "type": "string", "optional": false, "description": "Tool name.", "typeRef": null}, {"name": "frameId", "type": "string", "optional": false, "description": "Frame identifier associated with the tool registration.", "typeRef": "Page.FrameId"}]);
1505
1505