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.
- package/docs/checklist/README.md +8 -7
- package/eslint.config.mjs +7 -0
- package/front_end/core/sdk/NetworkManager.ts +23 -2
- package/front_end/core/sdk/ServerSentEventsProtocol.ts +1 -1
- package/front_end/entrypoints/greendev_floaty/FloatyEntrypoint.ts +119 -13
- package/front_end/generated/InspectorBackendCommands.ts +6 -6
- package/front_end/generated/SupportedCSSProperties.js +100 -100
- package/front_end/generated/protocol-mapping.d.ts +1 -9
- package/front_end/generated/protocol-proxy-api.d.ts +1 -9
- package/front_end/generated/protocol.ts +5 -0
- package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +512 -0
- package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +65 -85
- package/front_end/models/ai_assistance/agents/StylingAgent.ts +9 -16
- package/front_end/models/ai_assistance/ai_assistance.ts +2 -0
- package/front_end/models/bindings/DebuggerWorkspaceBinding.ts +21 -4
- package/front_end/models/bindings/SymbolizedError.ts +69 -2
- package/front_end/models/javascript_metadata/NativeFunctions.js +2 -2
- package/front_end/models/stack_trace/DetailedErrorStackParser.ts +11 -3
- package/front_end/models/stack_trace/ErrorStackParser.ts +18 -0
- package/front_end/panels/ai_assistance/components/ChatMessage.ts +84 -2
- package/front_end/panels/ai_assistance/components/WalkthroughUtils.ts +1 -1
- package/front_end/panels/ai_assistance/components/WalkthroughView.ts +9 -2
- package/front_end/panels/application/WebMCPView.ts +212 -89
- package/front_end/panels/application/webMCPView.css +260 -199
- package/front_end/panels/browser_debugger/CategorizedBreakpointsSidebarPane.ts +9 -5
- package/front_end/panels/changes/ChangesSidebar.ts +2 -2
- package/front_end/panels/changes/ChangesView.ts +4 -7
- package/front_end/panels/console/ConsoleViewMessage.ts +1 -19
- package/front_end/panels/coverage/CoverageView.ts +4 -5
- package/front_end/panels/elements/ElementsPanel.ts +9 -12
- package/front_end/panels/elements/StylePropertiesSection.ts +1 -1
- package/front_end/panels/elements/components/ElementsBreadcrumbs.ts +19 -20
- package/front_end/panels/elements/components/ElementsBreadcrumbsUtils.ts +29 -29
- package/front_end/panels/elements/components/QueryContainer.ts +5 -6
- package/front_end/panels/elements/components/components.ts +0 -2
- package/front_end/panels/emulation/MediaQueryInspector.ts +4 -7
- package/front_end/panels/mobile_throttling/NetworkThrottlingSelector.ts +47 -66
- package/front_end/panels/network/RequestConditionsDrawer.ts +6 -4
- package/front_end/panels/performance_monitor/PerformanceMonitor.ts +6 -9
- package/front_end/panels/protocol_monitor/JSONEditor.ts +2 -2
- package/front_end/panels/search/SearchView.ts +4 -7
- package/front_end/panels/sources/DebuggerPausedMessage.ts +18 -22
- package/front_end/panels/sources/ThreadsSidebarPane.ts +2 -4
- package/front_end/panels/web_audio/WebAudioView.ts +5 -4
- package/front_end/third_party/chromium/README.chromium +1 -1
- package/front_end/ui/components/icon_button/iconButton.css +1 -0
- package/front_end/ui/components/lists/list.css +4 -0
- package/front_end/ui/legacy/ViewRegistration.ts +2 -2
- package/front_end/ui/legacy/Widget.ts +9 -2
- package/front_end/ui/legacy/components/utils/Linkifier.ts +32 -11
- package/front_end/ui/visual_logging/KnownContextValues.ts +17 -0
- package/package.json +1 -1
- package/front_end/Images/src/dots-circle.svg +0 -10
- package/front_end/panels/elements/components/Helper.ts +0 -35
package/docs/checklist/README.md
CHANGED
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
**Shipping new Web Platform features (WPFs) in Chromium requires tooling support.**
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
12
|
-
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
271
|
-
|
|
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
|
-
|
|
294
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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
|
|