import * as Platform from '../platform/platform.js';
import type { ExperimentName } from './ExperimentNames.js';
/**
* Returns the base URL (similar to ``).
* Used to resolve the relative URLs of any additional DevTools files (locale strings, etc) needed.
* See: https://cs.chromium.org/remoteBase+f:devtools_window
*/
export declare function getRemoteBase(location?: string): {
base: string;
version: string;
} | null;
export declare function getPathName(): string;
export declare function isNodeEntry(pathname: string): boolean;
export declare const getChromeVersion: () => string;
export declare class Runtime {
#private;
private constructor();
static instance(opts?: {
forceNew: boolean | null;
} | undefined): Runtime;
static removeInstance(): void;
static queryParam(name: string): string | null;
static setQueryParamForTesting(name: string, value: string): void;
static isNode(): boolean;
/**
* Returns true if viewing the slimmed-down devtools meant for just viewing a
* performance trace, e.g. devtools://devtools/bundled/trace_app.html?traceURL=http://...
*/
static isTraceApp(): boolean;
static setPlatform(platform: string): void;
static platform(): string;
static isDescriptorEnabled(descriptor: {
experiment?: string | null;
condition?: Condition;
}): boolean;
loadLegacyModule(modulePath: string): Promise;
}
export interface Option {
title: string;
value: string | boolean;
raw?: boolean;
text?: string;
}
export declare class ExperimentsSupport {
#private;
allConfigurableExperiments(): Array;
registerHostExperiment(params: {
name: ExperimentName;
title: string;
aboutFlag: string;
isEnabled: boolean;
requiresChromeRestart: boolean;
docLink?: Platform.DevToolsPath.UrlString;
readonly feedbackLink?: Platform.DevToolsPath.UrlString;
}): HostExperiment;
register(experimentName: ExperimentName, experimentTitle: string, docLink?: string, feedbackLink?: string): void;
isEnabled(experimentName: ExperimentName): boolean;
getValueFromStorage(experimentName: ExperimentName): boolean | undefined;
setEnabled(experimentName: ExperimentName, enabled: boolean): void;
enableExperimentsByDefault(experimentNames: ExperimentName[]): void;
setServerEnabledExperiments(experiments: string[]): void;
enableForTest(experimentName: ExperimentName): void;
disableForTest(experimentName: ExperimentName): void;
isEnabledForTest(experimentName: ExperimentName): boolean;
clearForTest(): void;
cleanUpStaleExperiments(): void;
}
/**
* @deprecated Experiments should not be used anymore, instead use base::Feature.
* See docs/contributing/settings-experiments-features.md
*/
export declare class Experiment {
#private;
name: ExperimentName;
title: string;
docLink?: Platform.DevToolsPath.UrlString;
readonly feedbackLink?: Platform.DevToolsPath.UrlString;
constructor(experiments: ExperimentsSupport, name: ExperimentName, title: string, docLink: Platform.DevToolsPath.UrlString, feedbackLink: Platform.DevToolsPath.UrlString);
isEnabled(): boolean;
setEnabled(enabled: boolean): void;
}
export declare class HostExperiment {
#private;
name: ExperimentName;
title: string;
aboutFlag: string;
readonly requiresChromeRestart: boolean;
docLink?: Platform.DevToolsPath.UrlString;
readonly feedbackLink?: Platform.DevToolsPath.UrlString;
constructor(params: {
name: ExperimentName;
title: string;
experiments: ExperimentsSupport;
aboutFlag: string;
isEnabled: boolean;
requiresChromeRestart: boolean;
docLink?: Platform.DevToolsPath.UrlString;
feedbackLink?: Platform.DevToolsPath.UrlString;
});
isEnabled(): boolean;
setEnabled(enabled: boolean): void;
}
/** This must be constructed after the query parameters have been parsed. **/
export declare const experiments: ExperimentsSupport;
export declare enum GenAiEnterprisePolicyValue {
ALLOW = 0,
ALLOW_WITHOUT_LOGGING = 1,
DISABLE = 2
}
export interface AidaAvailability {
enabled: boolean;
blockedByAge: boolean;
blockedByEnterprisePolicy: boolean;
blockedByGeo: boolean;
disallowLogging: boolean;
enterprisePolicyValue: number;
}
type Channel = 'stable' | 'beta' | 'dev' | 'canary';
export interface HostConfigConsoleInsights {
modelId: string;
temperature: number;
enabled: boolean;
}
export declare enum HostConfigFreestylerExecutionMode {
ALL_SCRIPTS = "ALL_SCRIPTS",
SIDE_EFFECT_FREE_SCRIPTS_ONLY = "SIDE_EFFECT_FREE_SCRIPTS_ONLY",
NO_SCRIPTS = "NO_SCRIPTS"
}
export interface HostConfigFreestyler {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
executionMode?: HostConfigFreestylerExecutionMode;
patching?: boolean;
multimodal?: boolean;
multimodalUploadInput?: boolean;
functionCalling?: boolean;
}
export interface HostConfigAiAssistanceNetworkAgent {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigAiAssistancePerformanceAgent {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigAiAssistanceFileAgent {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigAiAssistanceAccessibilityAgent {
enabled: boolean;
}
export interface HostConfigAiAssistanceStorageAgent {
enabled: boolean;
}
export interface HostConfigAiCodeCompletion {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigAiCodeGeneration {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigAiCodeCompletionStyles {
modelId: string;
temperature: number;
enabled: boolean;
userTier: string;
}
export interface HostConfigDeepLinksViaExtensibilityApi {
enabled: boolean;
}
export interface HostConfigGreenDevUi {
enabled: boolean;
}
export interface HostConfigGeminiRebranding {
enabled: boolean;
}
export interface HostConfigVeLogging {
enabled: boolean;
testing: boolean;
}
/**
* @see https://goo.gle/devtools-json-design
*/
export interface HostConfigWellKnown {
enabled: boolean;
}
export interface HostConfigPrivacyUI {
enabled: boolean;
}
export interface HostConfigEnableOriginBoundCookies {
portBindingEnabled: boolean;
schemeBindingEnabled: boolean;
}
export interface HostConfigAnimationStylesInStylesTab {
enabled: boolean;
}
export interface HostConfigJpegXlImageFormat {
enabled: boolean;
}
export interface HostConfigAiAssistanceV2 {
enabled: boolean;
}
interface AiGeneratedTimelineLabels {
enabled: boolean;
}
interface AllowPopoverForcing {
enabled: boolean;
}
interface GlobalAiButton {
enabled: boolean;
promotionEnabled: boolean;
}
interface GdpProfiles {
enabled: boolean;
badgesEnabled: boolean;
starterBadgeEnabled: boolean;
}
export declare enum GdpProfilesEnterprisePolicyValue {
ENABLED = 0,
ENABLED_WITHOUT_BADGES = 1,
DISABLED = 2
}
interface GdpProfilesAvailability {
enabled: boolean;
enterprisePolicyValue: GdpProfilesEnterprisePolicyValue;
}
interface LiveEdit {
enabled: boolean;
}
interface DevToolsFlexibleLayout {
verticalDrawerEnabled: boolean;
}
interface DeviceBoundSessionsDebugging {
enabled: boolean;
}
export interface DevToolsEnableDurableMessages {
enabled: boolean;
}
interface HostConfigAiAssistanceContextSelectionAgent {
enabled: boolean;
}
interface ConsoleInsightsTeasers {
enabled: boolean;
allowWithoutGpu: boolean;
}
interface UseGcaApi {
enabled: boolean;
}
interface DevToolsProtocolMonitor {
enabled: boolean;
}
interface DevToolsWebMCPSupport {
enabled: boolean;
}
/**
* The host configuration that we expect from the DevTools back-end.
*
* We use `RecursivePartial` here to enforce that DevTools code is able to
* handle `HostConfig` objects of an unexpected shape. This can happen if
* the implementation in the Chromium backend is changed without correctly
* updating the DevTools frontend. Or if remote debugging a different version
* of Chrome, resulting in the local browser window and the local DevTools
* window being of different versions, and consequently potentially having
* differently shaped `HostConfig`s.
*
* @see hostConfig
*/
export type HostConfig = Platform.TypeScriptUtilities.RecursivePartial<{
aidaAvailability: AidaAvailability;
channel: Channel;
devToolsConsoleInsights: HostConfigConsoleInsights;
devToolsDeepLinksViaExtensibilityApi: HostConfigDeepLinksViaExtensibilityApi;
devToolsFreestyler: HostConfigFreestyler;
devToolsGreenDevUi: HostConfigGreenDevUi;
devToolsAiAssistanceNetworkAgent: HostConfigAiAssistanceNetworkAgent;
devToolsAiAssistanceFileAgent: HostConfigAiAssistanceFileAgent;
devToolsAiAssistancePerformanceAgent: HostConfigAiAssistancePerformanceAgent;
devToolsAiAssistanceAccessibilityAgent: HostConfigAiAssistanceAccessibilityAgent;
devToolsAiAssistanceStorageAgent: HostConfigAiAssistanceStorageAgent;
devToolsAiAssistanceV2: HostConfigAiAssistanceV2;
devToolsAiCodeCompletion: HostConfigAiCodeCompletion;
devToolsAiCodeGeneration: HostConfigAiCodeGeneration;
devToolsAiCodeCompletionStyles: HostConfigAiCodeCompletionStyles;
devToolsVeLogging: HostConfigVeLogging;
devToolsWellKnown: HostConfigWellKnown;
/**
* OffTheRecord here indicates that the user's profile is either incognito,
* or guest mode, rather than a "normal" profile.
*/
isOffTheRecord: boolean;
devToolsEnableOriginBoundCookies: HostConfigEnableOriginBoundCookies;
devToolsAnimationStylesInStylesTab: HostConfigAnimationStylesInStylesTab;
devToolsJpegXlImageFormat: HostConfigJpegXlImageFormat;
devToolsAiGeneratedTimelineLabels: AiGeneratedTimelineLabels;
devToolsAllowPopoverForcing: AllowPopoverForcing;
devToolsGlobalAiButton: GlobalAiButton;
devToolsGdpProfiles: GdpProfiles;
devToolsGdpProfilesAvailability: GdpProfilesAvailability;
devToolsLiveEdit: LiveEdit;
devToolsFlexibleLayout: DevToolsFlexibleLayout;
deviceBoundSessionsDebugging: DeviceBoundSessionsDebugging;
devToolsEnableDurableMessages: DevToolsEnableDurableMessages;
devToolsAiAssistanceContextSelectionAgent: HostConfigAiAssistanceContextSelectionAgent;
devToolsConsoleInsightsTeasers: ConsoleInsightsTeasers;
devToolsGeminiRebranding: HostConfigGeminiRebranding;
devToolsProtocolMonitor: DevToolsProtocolMonitor;
devToolsWebMCPSupport: DevToolsWebMCPSupport;
devToolsUseGcaApi: UseGcaApi;
}>;
/**
* The host configuration for this DevTools instance.
*
* This is initialized early during app startup and should not be modified
* afterwards. In some cases it can be necessary to re-request the host
* configuration from Chrome while DevTools is already running. In these
* cases, the new host configuration should be reflected here, e.g.:
*
* ```js
* const config = await new Promise(
* resolve => InspectorFrontendHostInstance.getHostConfig(resolve));
* Object.assign(Root.runtime.hostConfig, config);
* ```
*/
export declare const hostConfig: Platform.TypeScriptUtilities.RecursiveReadonly;
/**
* When defining conditions make sure that objects used by the function have
* been instantiated.
*/
export type Condition = (config?: HostConfig) => boolean;
export declare const conditions: {
canDock: () => boolean;
};
export {};