import type { ConfigurationChangeEvent, ConfigurationScope } from 'vscode'; import { Emitter, Event } from '../../../util/vs/base/common/event'; import { Disposable } from '../../../util/vs/base/common/lifecycle'; import { IObservable } from '../../../util/vs/base/common/observable'; import { ICopilotTokenStore } from '../../authentication/common/copilotTokenStore'; import type { IModelCapabilityOverride } from '../../endpoint/common/chatModelCapabilities'; import { JointCompletionsProviderStrategy, JointCompletionsProviderTriggerChangeStrategy } from '../../inlineEdits/common/dataTypes/jointCompletionsProviderOptions'; import * as triggerOptions from '../../inlineEdits/common/dataTypes/triggerOptions'; import * as xtabHistoryOptions from '../../inlineEdits/common/dataTypes/xtabHistoryOptions'; import * as xtabPromptOptions from '../../inlineEdits/common/dataTypes/xtabPromptOptions'; import { ResponseProcessor } from '../../inlineEdits/common/responseProcessor'; import { FetcherId } from '../../networking/common/fetcherService'; import { AlternativeNotebookFormat } from '../../notebook/common/alternativeContentFormat'; import { IExperimentationService } from '../../telemetry/common/nullExperimentationService'; import { IValidator } from './validator'; export declare const CopilotConfigPrefix = "github.copilot"; export declare const IConfigurationService: import("../../../util/common/services").ServiceIdentifier; export type ExperimentBasedConfigType = boolean | number | (string | undefined); export interface InspectConfigResult { /** * The default value which is used when no other value is defined */ defaultValue?: T; /** * The global or installation-wide value. */ globalValue?: T; /** * The workspace-specific value. */ workspaceValue?: T; /** * The workspace-folder-specific value. */ workspaceFolderValue?: T; /** * Language specific default value when this configuration value is created for a {@link ConfigurationScope language scope}. */ defaultLanguageValue?: T; /** * Language specific global value when this configuration value is created for a {@link ConfigurationScope language scope}. */ globalLanguageValue?: T; /** * Language specific workspace value when this configuration value is created for a {@link ConfigurationScope language scope}. */ workspaceLanguageValue?: T; /** * Language specific workspace-folder value when this configuration value is created for a {@link ConfigurationScope language scope}. */ workspaceFolderLanguageValue?: T; /** * All language identifiers for which this configuration is defined. */ languageIds?: string[]; } export interface IConfigurationService { readonly _serviceBrand: undefined; /** * Gets user configuration for a key from vscode (which if not defined, pulls default value from package.json). * If not defined, returns the default value. * * @remark For object values, the user config will replace the default config. */ getConfig(key: Config, scope?: ConfigurationScope): T; /** * Gets an observable for the configuration of a key from vscode (which if not defined, pulls default value from package.json). * If not defined, returns the default value. * * @remark For object values, the user config will replace the default config. */ getConfigObservable(key: Config): IObservable; /** * Retrieve all information about a configuration setting. A configuration value * often consists of a *default* value, a global or installation-wide value, * a workspace-specific value and folder-specific value * @param configKey The config key to look up * @returns Information about a configuration setting or `undefined`. */ inspectConfig(key: BaseConfig, scope?: ConfigurationScope): InspectConfigResult | undefined; /** * Checks if the key is configured by the user in any of the configuration scopes. */ isConfigured(key: BaseConfig, scope?: ConfigurationScope): boolean; /** * Proxies vscode.workspace.getConfiguration to allow getting a configuration value that is not in the Copilot namespace. * @param configKey The config key to look up */ getNonExtensionConfig(configKey: string): T | undefined; /** * Sets user configuration for a key in vscode. */ setConfig(key: BaseConfig, value: T, target?: ConfigTarget): Thenable; /** * Gets user configuration for a key from vscode (which if not defined, pulls default value from package.json). * If not defined, returns the experimentation based value or falls back to the default value. * * @remark For object values, the user config will replace the default config. */ getExperimentBasedConfig(key: ExperimentBasedConfig, experimentationService: IExperimentationService, scope?: ConfigurationScope): T; /** * Gets the observable of a user configuration for a key from vscode (which if not defined, pulls default value from package.json). * If not defined, returns the experimentation based value or falls back to the default value. * * @remark For object values, the user config will replace the default config. */ getExperimentBasedConfigObservable(key: ExperimentBasedConfig, experimentationService: IExperimentationService): IObservable; /** * For object values, the user config will be mixed in with the default config. */ getConfigMixedWithDefaults(key: Config): T; getDefaultValue(key: Config): T; getDefaultValue(key: ExperimentBasedConfig): T; /** * Emitted whenever a configuration value changes. * This emits for all changes, not just changes to the Copilot settings. */ onDidChangeConfiguration: Event; /** * Called by experimentation service to trigger updates to ExP based configurations * * @param treatments List of treatments that have been changed */ updateExperimentBasedConfiguration(treatments: string[]): void; dumpConfig(): { [key: string]: string; }; } export declare abstract class AbstractConfigurationService extends Disposable implements IConfigurationService { readonly _serviceBrand: undefined; protected _onDidChangeConfiguration: Emitter; readonly onDidChangeConfiguration: Event; protected _isInternal: boolean; constructor(copilotTokenStore?: ICopilotTokenStore); getConfigMixedWithDefaults(key: Config): T; getDefaultValue(key: BaseConfig): T; protected _setUserInfo(userInfo: { isInternal: boolean; }): void; abstract getConfig(key: Config, scope?: ConfigurationScope): T; abstract inspectConfig(key: BaseConfig, scope?: ConfigurationScope): InspectConfigResult | undefined; abstract getNonExtensionConfig(configKey: string): T | undefined; abstract setConfig(key: BaseConfig, value: T, target?: ConfigTarget): Thenable; abstract getExperimentBasedConfig(key: ExperimentBasedConfig, experimentationService: IExperimentationService): T; abstract dumpConfig(): { [key: string]: string; }; updateExperimentBasedConfiguration(treatments: string[]): void; getConfigObservable(key: Config): IObservable; getExperimentBasedConfigObservable(key: ExperimentBasedConfig, experimentationService: IExperimentationService): IObservable; private observables; private _getObservable_$show2FramesUp; /** * Checks if the key is configured by the user in any of the configuration scopes. */ isConfigured(key: BaseConfig, scope?: ConfigurationScope): boolean; protected getDefaultValueForConfig(key: BaseConfig): T | undefined; } export interface BaseConfig { /** * Key as it appears in settings.json minus the "github.copilot." prefix. * e.g. "advanced.debug.overrideProxyUrl" */ readonly id: string; /** * The old key as it appears in settings.json minus the "github.copilot." prefix. */ readonly oldId?: string; /** * This setting is present in package.json and is visible to the general public. */ readonly isPublic: boolean; /** * The fully qualified id, e.g. "github.copilot.advanced.debug.overrideProxyUrl". * Use this with `affectsConfiguration` from the ConfigurationChangeEvent */ readonly fullyQualifiedId: string; /** * The fully qualified old id, e.g. "github.copilot.advanced.debug.overrideProxyUrl". */ readonly fullyQualifiedOldId?: string | undefined; /** * The `X` in `github.copilot.advanced.X` settings. */ readonly advancedSubKey: string | undefined; /** * The default value (defined either in code for hidden settings, or in package.json for non-hidden settings) */ readonly defaultValue: T; /** * Setting options */ readonly options?: ConfigOptions; readonly validator?: IValidator; } export declare const enum ConfigType { Simple = 0, ExperimentBased = 1 } export interface ConfigOptions { readonly oldKey?: string; readonly valueIgnoredForExternals?: boolean; /** * When true, only reads from user (global) scope, ignoring workspace and folder values. * Use for security-sensitive settings (e.g., API endpoint overrides) that must not be * controllable via a workspace's .vscode/settings.json. */ readonly userScopeOnly?: boolean; } export declare const enum ConfigTarget { Global = "global", Workspace = "workspace", WorkspaceFolder = "workspaceFolder" } export interface Config extends BaseConfig { readonly configType: ConfigType.Simple; } export interface ExperimentBasedConfig extends BaseConfig { readonly configType: ConfigType.ExperimentBased; readonly experimentName: string | undefined; } declare class ConfigRegistry { /** * A map of all registered configs, keyed by their full id, eg `github.copilot.advanced.debug.overrideProxyUrl`. */ readonly configs: Map | ExperimentBasedConfig>; registerConfig(config: Config | ExperimentBasedConfig): void; } export declare const globalConfigRegistry: ConfigRegistry; export type ConfigurationValue = { value: any | undefined; }; export type ConfigurationKeyValuePairs = [string, ConfigurationValue][]; export type ConfigurationMigrationFn = (value: any) => ConfigurationValue | ConfigurationKeyValuePairs | Promise; export type ConfigurationMigration = { key: string; migrateFn: ConfigurationMigrationFn; }; export interface IConfigurationMigrationRegistry { registerConfigurationMigrations(configurationMigrations: ConfigurationMigration[]): void; } declare class ConfigurationMigrationRegistryImpl implements IConfigurationMigrationRegistry { readonly migrations: ConfigurationMigration[]; private readonly _onDidRegisterConfigurationMigrations; readonly onDidRegisterConfigurationMigration: Event; registerConfigurationMigrations(configurationMigrations: ConfigurationMigration[]): void; } export declare const ConfigurationMigrationRegistry: ConfigurationMigrationRegistryImpl; export declare const HARD_TOOL_LIMIT = 128; export declare const enum CHAT_MODEL { GPT41 = "gpt-4.1-2025-04-14", GPT4OMINI = "gpt-4o-mini", NES_XTAB = "copilot-nes-xtab",// xtab model hosted in prod in proxy CUSTOM_NES = "custom-nes", XTAB_4O_MINI_FINETUNED = "xtab-4o-mini-finetuned", GPT4OPROXY = "gpt-4o-instant-apply-full-ft-v66", SHORT_INSTANT_APPLY = "gpt-4o-instant-apply-full-ft-v66-short", CLAUDE_SONNET = "claude-sonnet-4.5", CLAUDE_37_SONNET = "claude-3.7-sonnet", DEEPSEEK_CHAT = "deepseek-chat", GEMINI_25_PRO = "gemini-2.5-pro", GEMINI_20_PRO = "gemini-2.0-pro-exp-02-05", GEMINI_FLASH = "gemini-2.0-flash-001", O1 = "o1", O3MINI = "o3-mini", O1MINI = "o1-mini", EXPERIMENTAL = "experimental-01" } export declare enum AuthProviderId { GitHub = "github", GitHubEnterprise = "github-enterprise", Microsoft = "microsoft" } export declare enum AuthPermissionMode { Default = "default", Minimal = "minimal" } export declare enum AzureAuthMode { EntraId = "entraId", ApiKey = "apiKey" } export declare namespace AzureAuthMode { /** Microsoft authentication provider ID for VS Code authentication API */ const MICROSOFT_AUTH_PROVIDER = "microsoft"; /** Azure Cognitive Services scope for Entra ID authentication */ const COGNITIVE_SERVICES_SCOPE = "https://cognitiveservices.azure.com/.default"; } export type CodeGenerationImportInstruction = { language?: string; file: string; }; export type CodeGenerationTextInstruction = { language?: string; text: string; }; export type CodeGenerationInstruction = CodeGenerationImportInstruction | CodeGenerationTextInstruction; export type CommitMessageGenerationInstruction = { file: string; } | { text: string; }; export declare const XTabProviderId = "XtabProvider"; export declare namespace ConfigKey { /** * These settings are defined in the completions extensions and shared. * * We should not change the names of these settings without coordinating with Completions extension. */ namespace Shared { /** Allows for overriding the base domain we use for making requests to the CAPI. This helps CAPI devs develop against a local instance. */ const DebugOverrideProxyUrl: Config; /** Auth type to use when overrideProxyUrl or overrideCapiUrl is set. 'hmac' (default) for internal dev builds, 'token' for smoke tests / mock servers that don't support HMAC. */ const DebugOverrideAuthType: Config<"token" | "hmac">; const DebugOverrideCAPIUrl: Config; const DebugUseNodeFetchFetcher: Config; const DebugUseNodeFetcher: Config; const DebugUseElectronFetcher: Config; const DebugNodeFetchCache: Config<"off" | "memory" | "persistent">; const AuthProvider: Config; const AuthPermissions: Config; } /** * Advanced settings that are available for all users to configure. */ namespace Advanced { /** Allows forcing a particular model. * Note: this should not be used while self-hosting because it might lead to * a fundamental different experience compared to our end-users. */ const DebugPromptOverrideString: Config; const DebugPromptOverrideFile: Config; const WorkspacePrototypeAdoCodeSearchEndpointOverride: Config; const FeedbackOnChange: Config; const ReviewIntent: Config; /** Enable the new notebook priorities experiment */ const NotebookSummaryExperimentEnabled: Config; /** Enable filtering variables by cell document symbols */ const NotebookVariableFilteringEnabled: Config; const TerminalToDebuggerPatterns: Config; const WorkspaceRecordingEnabled: Config; const EditRecordingEnabled: Config; const CodeSearchAgentEnabled: Config; const AgentTemperature: Config; const EnableUserPreferences: Config; const SummarizeAgentConversationHistoryThreshold: Config; const AgentHistorySummarizationMode: Config; const UseResponsesApiTruncation: Config; const OmitBaseAgentInstructions: Config; const CLIShowExternalSessions: Config; const CLIPlanExitModeEnabled: Config; const CLIAutoModelEnabled: Config; /** * Offer routing tiers on the Auto model. Off by default: while disabled * no tier is sent and the server picks its own routing profile. */ const AutoModeTiersEnabled: ExperimentBasedConfig; const CLIModelDetailsEnabled: Config; const CLIPlanCommandEnabled: Config; const CLIChatLazyLoadSessionItem: Config; const CLIAIGenerateBranchNames: Config; const CLIForkSessionsEnabled: Config; const CLIMCPServerEnabled: Config; const CLISandboxEnabled: ExperimentBasedConfig<"off" | "on" | "allowNetwork">; const CLIBranchSupport: Config; const CLIIsolationOption: Config; const CLIAutoCommitEnabled: Config; const CLISessionController: Config; const CLIThinkingEffortEnabled: Config; const CLIRemoteEnabled: Config; const CLISessionControllerForSessionsApp: Config; const CLITerminalLinks: Config; const CLISessionEventLoggingEnabled: Config; const RequestLoggerMaxEntries: Config; /** Uses new expanded project labels */ const ProjectLabelsExpanded: ExperimentBasedConfig; /** Add project labels in default agent */ const ProjectLabelsChat: ExperimentBasedConfig; /** Add project labels in default agent */ const ProjectLabelsInline: ExperimentBasedConfig; const WorkspaceMaxLocalIndexSize: ExperimentBasedConfig; const WorkspaceEnableCodeSearch: ExperimentBasedConfig; const WorkspaceEnableCodeSearchExternalIngest: ExperimentBasedConfig; const WorkspacePreferredEmbeddingsModel: ExperimentBasedConfig; const NotebookAlternativeDocumentFormat: ExperimentBasedConfig; const UseAlternativeNESNotebookFormat: ExperimentBasedConfig; const InlineChatReasoningEffort: ExperimentBasedConfig; const InlineChatEnableThinking: ExperimentBasedConfig; const InstantApplyShortModelName: ExperimentBasedConfig; const InstantApplyShortContextLimit: ExperimentBasedConfig; const PromptFileContext: ExperimentBasedConfig; const DefaultToolsGrouped: ExperimentBasedConfig; const Gpt5AlternativePatch: ExperimentBasedConfig; const SearchSubagentToolEnabled: ExperimentBasedConfig; /** Use the agentic proxy for the search subagent tool */ const SearchSubagentUseAgenticProxy: ExperimentBasedConfig; /** Model to use for the search subagent. When useAgenticProxy is true, defaults to 'vscode-agentic-search-router-a'. When false, defaults to the main agent model. */ const SearchSubagentModel: ExperimentBasedConfig; /** Maximum number of tool calls the search subagent can make */ const SearchSubagentToolCallLimit: ExperimentBasedConfig; /** Enable the thoroughness parameter on the search subagent tool, which adjusts turn limits based on requested thoroughness */ const SearchSubagentThoroughnessEnabled: ExperimentBasedConfig; const ExecutionSubagentToolEnabled: ExperimentBasedConfig; const SkillToolEnabled: ExperimentBasedConfig; /** When enabled, the get_changed_files tool is available to the agent. */ const GetChangedFilesToolEnabled: ExperimentBasedConfig; /** Model to use for the execution subagent */ /** Use the agentic proxy for the execution subagent */ const ExecutionSubagentUseAgenticProxy: ExperimentBasedConfig; /** Model to use for the execution subagent. When useAgenticProxy is true, defaults to 'exec-subagent-router-a'. When false, defaults to Gemini-3-Flash. */ const ExecutionSubagentModel: ExperimentBasedConfig; /** Maximum number of tool calls the execution subagent can make */ const ExecutionSubagentToolCallLimit: ExperimentBasedConfig; /** When enabled, the main agent's manage_todo_list tool is disabled and a background copilot-utility-small model maintains the todo list instead. */ const BackgroundTodoAgentEnabled: ExperimentBasedConfig; const InlineEditsTriggerOnEditorChangeAfterSeconds: ExperimentBasedConfig; const InlineEditsNextCursorPredictionDisplayLine: ExperimentBasedConfig; const InlineEditsNextCursorPredictionCurrentFileMaxTokens: ExperimentBasedConfig; const InlineEditsRenameSymbolSuggestions: ExperimentBasedConfig; const InlineEditsPreferredModel: ExperimentBasedConfig; const InlineEditsAggressiveness: ExperimentBasedConfig; const DiagnosticsContextProvider: ExperimentBasedConfig; const ChatSessionContextProvider: ExperimentBasedConfig; const Gemini3MultiReplaceString: ExperimentBasedConfig; const BatchReplaceStringDescriptions: ExperimentBasedConfig; const AgentOmitFileAttachmentContents: ExperimentBasedConfig; /** * Settings for switch between old tools and new skills */ const InstallExtensionSkillEnabled: ExperimentBasedConfig; /** * When enabled, large tool results (above the threshold in bytes) are written to disk * instead of being included directly in the prompt. This helps manage context window usage. */ const LargeToolResultsToDiskEnabled: ExperimentBasedConfig; /** * The size threshold in bytes above which tool results are written to disk. * Only applies when LargeToolResultsToDiskEnabled is true. */ const LargeToolResultsToDiskThreshold: ExperimentBasedConfig; /** Simulate GitHub authentication failures for testing. Can't be TeamInternal because we lose these flags as part of testing. */ const DebugGitHubAuthFailWith: Config<"NotAuthorized" | "RequestFailed" | "ParseFailed" | "GitHubLoginFailed" | "HTTP401" | "RateLimited" | null>; /** @deprecated Use ChatDebugFileLogging instead. Kept during experiment transition. */ const AgentDebugLogEnabled: ExperimentBasedConfig; const ChatDebugFileLogging: ExperimentBasedConfig; const ChatDebugFileLoggingFlushInterval: Config; const ChatDebugFileLoggingMaxRetainedSessionLogs: ExperimentBasedConfig; const ChatDebugFileLoggingMaxSessionLogSizeMB: ExperimentBasedConfig; const OTelEnabled: Config; const OTelExporterType: Config; const OTelProtocol: Config; const OTelOtlpEndpoint: Config; const OTelCaptureContent: Config; const OTelServiceName: Config; const OTelResourceAttributes: Config>; const OTelHeaders: Config>; const OTelMaxAttributeSizeChars: Config; const OTelOutfile: Config; const OTelDbSpanExporter: Config; /** Internal: override reasoning/thinking effort sent to model APIs (e.g. Responses API, Messages API). Used by evals. */ const ReasoningEffortOverride: Config; /** * Internal: override the routing tier sent to `POST /auto`, ignoring both the * model picker and the tier inline chat defaults to. Unlike the picker this * accepts `fast`, so evals can exercise every profile. */ const AutoModeTierOverride: Config; /** * When enabled, periodic keep-alive probes are sent during long-running tool calls * to keep the server-side prompt cache warm. */ const LongToolCallCachePreservation: ExperimentBasedConfig; const LongToolCallCachePreservationMaxProbes: ExperimentBasedConfig; /** Enable extended (1 hour) prompt cache TTL on tools and system blocks for the Anthropic Messages API. Applied to Claude Opus 4.5/4.6/4.7 and Sonnet 4.5/4.6 variants. */ const AnthropicExtendedCacheTtl: ExperimentBasedConfig; /** Enable extended (1 hour) prompt cache TTL on the rolling message-level breakpoints (last cacheable user/tool-result blocks) for the Anthropic Messages API. Same model/location/subagent gating as {@link AnthropicExtendedCacheTtl}. */ const AnthropicExtendedCacheTtlMessages: ExperimentBasedConfig; /** Per-model capability overrides. Keys are model ids, values declare an aliased `family`. Lets evals route an unknown preview model id to a known production family (e.g. `"claude-opus-4.7"`) so the Anthropic prompt resolver, multi-replace tools, tool search, context editing, etc. all activate without a code change. */ const ModelCapabilityOverrides: Config>; const InlineEditsXtabProviderModelConfiguration: Config; } /** * Internal settings those only team members can configure * Features should only be in this list temporarily, moving on to experimental to be accessible to early adopters. */ namespace TeamInternal { /** Allows forcing a particular context window size. * This setting doesn't validate values so large windows may not be supported by the model. * Note: this should not be used while self-hosting because it might lead to * a fundamental different experience compared to our end-users. */ const DebugOverrideChatMaxTokenNum: Config; /** Allow reporting issue when clicking on the Unhelpful button * Requires a window reload to take effect */ const DebugReportFeedback: Config; const DisableRepoInfoTelemetry: Config; const InlineEditsIgnoreCompletionsDisablement: Config; const InlineEditsModelPickerEnabled: ExperimentBasedConfig; const InlineEditsUseSlashModels: ExperimentBasedConfig; const InlineEditsLogContextRecorderEnabled: Config; const InlineEditsHideInternalInterface: Config; const InlineEditsLogCancelledRequests: Config; const InlineEditsNextCursorPredictionUrl: Config; const InlineEditsNextCursorPredictionApiKey: Config; const InlineEditsXtabProviderUrl: Config; const InlineEditsXtabProviderApiKey: Config; const InlineEditsNextCursorPredictionLintOptions: Config | undefined>; const InlineEditsInlineCompletionsEnabled: Config; const InlineEditsInlineCompletionsAdvanced: ExperimentBasedConfig; /** * When enabled, a cached NES suggestion that was once rendered as an inline * (ghost text at cursor) suggestion will not be re-served from cache unless * it can again be rendered as an inline suggestion. The cache entry is not * evicted — it is simply gated until the cursor returns to an * inline-renderable position. */ const InlineEditsNesMimicGhostTextBehavior: ExperimentBasedConfig; const InlineEditsXtabProviderUsePrediction: ExperimentBasedConfig; const InlineEditsXtabProviderPatchModelPredictionKind: ExperimentBasedConfig; const InlineEditsXtabProviderPatchFastYieldLineWithCursor: ExperimentBasedConfig; const InlineEditsXtabProviderPatchFastYieldLineWithCursorMultiLine: ExperimentBasedConfig; const InlineEditsXtabLanguageContextEnabledLanguages: Config; const InlineEditsXtabLanguageContextTraitsPosition: ExperimentBasedConfig<"before" | "after">; const InlineEditsDiagnosticsExplorationEnabled: Config; const InternalWelcomeHintEnabled: Config; const InlineChatUseCodeMapper: Config; const EnablePromptRendererTracing: Config; const DebugCollectFetcherTelemetry: ExperimentBasedConfig; const DebugShowNetworkStatus: ExperimentBasedConfig; const GeminiFunctionCallingMode: ExperimentBasedConfig<"required" | "auto" | "none" | "validated" | undefined>; const ModelProviderPreference: Config; const UseVSCodeTelemetryLibForGH: ExperimentBasedConfig; const DebugExpUseNodeFetchFetcher: ExperimentBasedConfig; const DebugExpUseNodeFetcher: ExperimentBasedConfig; const DebugExpUseElectronFetcher: ExperimentBasedConfig; const InlineEditsAsyncCompletions: ExperimentBasedConfig; const InlineEditsDebounceUseCoreRequestTime: ExperimentBasedConfig; const InlineEditsYieldToCopilot: ExperimentBasedConfig; const InlineEditsExcludedProviders: ExperimentBasedConfig; const InlineEditsEnableGhCompletionsProvider: ExperimentBasedConfig; const InlineEditsCompletionsUrl: ExperimentBasedConfig; const InlineEditsDebounce: ExperimentBasedConfig; const InlineEditsCacheCursorDistanceCheck: ExperimentBasedConfig; const InlineEditsCacheDelay: ExperimentBasedConfig; const InlineEditsSubsequentCacheDelay: ExperimentBasedConfig; const InlineEditsSpeculativeRequestDelay: ExperimentBasedConfig; const InlineEditsRebasedCacheDelay: ExperimentBasedConfig; const InlineEditsAbsorbSubsequenceTyping: ExperimentBasedConfig; const InlineEditsReverseAgreement: ExperimentBasedConfig; const InlineEditsMaxImperfectAgreementLength: ExperimentBasedConfig; /** * When enabled, a cached NES suggestion whose strict rebase fails *only* * because the user re-typed a line's leading indentation differently than * the model predicted (e.g. pressing Tab to insert a tab character, or a * different number of spaces, on an otherwise-empty body line) is salvaged * instead of dropped: the model's still-valid content is re-anchored as a * clean at-cursor insertion that respects the indentation the user typed. */ const InlineEditsReanchorContentOnIndentationMismatch: ExperimentBasedConfig; const InlineEditsBackoffDebounceEnabled: ExperimentBasedConfig; const InlineEditsExtraDebounceEndOfLine: ExperimentBasedConfig; const InlineEditsSpeculativeRequests: ExperimentBasedConfig; const InlineEditsSpeculativeRequestsCursorPlacement: ExperimentBasedConfig; const InlineEditsSpeculativeRequestsAutoExpandEditWindowLines: ExperimentBasedConfig; const InlineEditsExtraDebounceInlineSuggestion: ExperimentBasedConfig; const InlineEditsDebounceOnSelectionChange: ExperimentBasedConfig; const InlineEditsTriggerOnEditorChangeStrategy: ExperimentBasedConfig; const InlineEditsProviderId: ExperimentBasedConfig; const InlineEditsUnification: ExperimentBasedConfig; const InlineEditsNextCursorPredictionModelName: ExperimentBasedConfig; const InlineEditsNextCursorPredictionUseEndpointProvider: Config; const InlineEditsNextCursorPredictionMaxResponseTokens: ExperimentBasedConfig; const InlineEditsNextCursorPredictionLintOptionsString: ExperimentBasedConfig; const InlineEditsXtabProviderModelConfigurationString: ExperimentBasedConfig; const InlineEditsXtabProviderDefaultModelConfigurationString: ExperimentBasedConfig; const InlineEditsXtabProviderUseVaryingLinesAbove: ExperimentBasedConfig; const InlineEditsXtabProviderNLinesAbove: ExperimentBasedConfig; const InlineEditsXtabProviderNLinesBelow: ExperimentBasedConfig; const InlineEditsAutoExpandEditWindowLines: ExperimentBasedConfig; const InlineEditsXtabNRecentlyViewedDocuments: ExperimentBasedConfig; const InlineEditsXtabRecentlyViewedDocumentsMaxTokens: ExperimentBasedConfig; const InlineEditsXtabRecentlyViewedIncludeLineNumbers: ExperimentBasedConfig; const InlineEditsNextCursorPredictionRecentSnippetsIncludeLineNumbers: ExperimentBasedConfig; const InlineEditsXtabDiffNEntries: ExperimentBasedConfig; const InlineEditsXtabDiffMaxTokens: ExperimentBasedConfig; const InlineEditsXtabDiffMergeStrategy: ExperimentBasedConfig; const InlineEditsXtabDiffMergeLineGap: ExperimentBasedConfig; const InlineEditsXtabDiffMergeSplitAfterMs: ExperimentBasedConfig; const InlineEditsXtabProviderEmitFastCursorLineChange: ExperimentBasedConfig; const InlineEditsXtabIncludeViewedFiles: ExperimentBasedConfig; const InlineEditsXtabRecentlyViewedClippingStrategy: ExperimentBasedConfig; const InlineEditsXtabRecentlyViewedUseLeftoverBudgetFromAbove: ExperimentBasedConfig; const InlineEditsXtabPageSize: ExperimentBasedConfig; const InlineEditsXtabEditWindowMaxTokens: ExperimentBasedConfig; const InlineEditsXtabIncludeTagsInCurrentFile: ExperimentBasedConfig; const InlineEditsXtabIncludeLineNumbersInCurrentFile: ExperimentBasedConfig; const InlineEditsXtabIncludeCursorTagInCurrentFile: ExperimentBasedConfig; const InlineEditsXtabCurrentFileMaxTokens: ExperimentBasedConfig; const InlineEditsXtabPrioritizeAboveCursor: ExperimentBasedConfig; const InlineEditsXtabCurrentFileUseLeftoverBudgetFromAbove: ExperimentBasedConfig; const InlineEditsXtabDiffOnlyForDocsInPrompt: ExperimentBasedConfig; const InlineEditsXtabDiffUseRelativePaths: ExperimentBasedConfig; const InlineEditsXtabNNonSignificantLinesToConverge: ExperimentBasedConfig; const InlineEditsXtabNSignificantLinesToConverge: ExperimentBasedConfig; const InlineEditsXtabEarlyCursorLineDivergenceCancellation: ExperimentBasedConfig; const InlineEditsXtabLanguageContextEnabled: ExperimentBasedConfig; const InlineEditsXtabLanguageContextMaxTokens: ExperimentBasedConfig; const InlineEditsXtabIncludeNeighborFiles: ExperimentBasedConfig; const InlineEditsXtabNeighborFilesMaxTokens: ExperimentBasedConfig; const InlineEditsXtabNeighborFilesIncludeRelatedFiles: ExperimentBasedConfig; const InlineEditsXtabGlobalBudget: ExperimentBasedConfig; const InlineEditsXtabMaxMergeConflictLines: ExperimentBasedConfig; const InlineEditsXtabOnlyMergeConflictLines: ExperimentBasedConfig; const InlineEditsXtabDuplicateAdditionsMode: ExperimentBasedConfig; const InlineEditsXtabSplitPatchOnDiff: ExperimentBasedConfig; const InlineEditsXtabAggressivenessLevel: ExperimentBasedConfig; const InlineEditsAggressivenessLowMinResponseTimeMs: ExperimentBasedConfig; const InlineEditsAggressivenessMediumMinResponseTimeMs: ExperimentBasedConfig; const InlineEditsAggressivenessHighDebounceMs: ExperimentBasedConfig; const InlineEditsUserHappinessScoreConfigurationString: ExperimentBasedConfig; const InlineEditsUndoInsertionFiltering: ExperimentBasedConfig<"v1" | "v2" | undefined>; const InlineEditsFilterOutEditsWithSubstrings: ExperimentBasedConfig; const InlineEditsIgnoreWhenSuggestVisible: ExperimentBasedConfig; const InlineEditsJointCompletionsProviderEnabled: ExperimentBasedConfig; const InlineEditsJointCompletionsProviderStrategy: ExperimentBasedConfig; const InlineEditsJointCompletionsProviderTriggerChangeStrategy: ExperimentBasedConfig; const InstantApplyModelName: ExperimentBasedConfig; const VerifyTextDocumentChanges: ExperimentBasedConfig; /** Inline Completions */ const InlineCompletionsDefaultDiagnosticsOptions: ExperimentBasedConfig; const RecordExpectedEditEnabled: Config; const RecordExpectedEditOnReject: Config; const ReadFileCodeFences: ExperimentBasedConfig; const EnableReadFileV2: ExperimentBasedConfig; const AskAgent: ExperimentBasedConfig; const RetryNetworkErrors: ExperimentBasedConfig; const RetryServerErrorStatusCodes: ExperimentBasedConfig; const FallbackNodeFetchOnNetworkProcessCrash: ExperimentBasedConfig; const ChatRequestPowerSaveBlocker: ExperimentBasedConfig; /** Enable WebSocket transport for Responses API requests. When enabled, uses a persistent WebSocket connection per conversation instead of individual HTTP requests. */ const ResponsesApiWebSocketEnabled: ExperimentBasedConfig; const DebugSimulateWebSocketResponse: Config; /** Max events per cloud session sync flush request — also acts as a buffer-size flush trigger. */ const SessionSyncMaxEventsPerFlush: ExperimentBasedConfig; /** Safety-net interval (ms) for buffered cloud session sync events that did not trigger a terminal flush. */ const SessionSyncSafetyIntervalMs: ExperimentBasedConfig; } /** * Deprecated settings that are no longer in use. */ namespace Deprecated { /** Model override for Plan agent — migrated to core `chat.planAgent.defaultModel` */ const PlanAgentModel: Config; const OllamaEndpoint: Config; const AzureModels: Config>; const CustomOAIModels: Config; zeroDataRetentionEnabled?: boolean; }>>; const AzureAuthType: Config; } const Enable: Config<{ [key: string]: boolean; }>; const selectedCompletionsModel: Config; const RateLimitAutoSwitchToAuto: Config; /** Use the Messages API instead of Chat Completions when supported */ const UseAnthropicMessagesApi: ExperimentBasedConfig; /** Context editing mode for Anthropic Messages API. 'off' disables context editing. */ const AnthropicContextEditingMode: ExperimentBasedConfig<"off" | "clear-thinking" | "clear-tooluse" | "clear-both">; /** Enable context_management sent to Responses API */ const ResponsesApiContextManagementEnabled: ExperimentBasedConfig; /** Enable client-side prompt_cache_key (conversationId:modelFamily) sent to Responses API */ const ResponsesApiPromptCacheKeyEnabled: ExperimentBasedConfig; /** Enable explicit prompt_cache_breakpoint markers sent to Responses API */ const ResponsesApiPromptCacheBreakpointEnabled: ExperimentBasedConfig; /** Enable updated prompt for 5.3Codex model */ const Updated53CodexPromptEnabled: ExperimentBasedConfig; /** Enable updated prompt for Claude Opus 5 model */ const ClaudeOpus5PromptEnabled: ExperimentBasedConfig; /** Enable updated prompt for Claude Sonnet 5 model */ const ClaudeSonnet5PromptEnabled: ExperimentBasedConfig; /** Enable get_changed_files tool for GPT-5.5 models */ const EnableGpt55GetChangedFilesTool: ExperimentBasedConfig; /** Enable low verbosity for GPT-5.6 models. */ const EnableGpt56Verbosity: ExperimentBasedConfig; /** Enable get_changed_files tool for Gemini 3 models */ const EnableGemini3GetChangedFilesTool: ExperimentBasedConfig; /** When enabled, sends `reasoning_effort: 'low'` to Gemini 3 models. */ const EnableGemini3LowReasoningEffort: ExperimentBasedConfig; /** Enable read_file tool for GPT-5.5 models */ const EnableGpt55ReadFileTool: ExperimentBasedConfig; /** How the semantic_search (codebase) tool is offered to the agent: available, removed entirely, or available with instructions telling the agent to prefer it over exploratory reads and text searches. */ const SemanticSearchToolMode: ExperimentBasedConfig<"disabled" | "enabled" | "preferred">; const EnableChatImageUpload: Config; /** Enable Anthropic web search tool for BYOK Claude models */ const AnthropicWebSearchToolEnabled: ExperimentBasedConfig; /** Maximum number of web searches allowed per request */ const AnthropicWebSearchMaxUses: Config; /** List of domains to restrict web search results to */ const AnthropicWebSearchAllowedDomains: Config; /** List of domains to exclude from web search results */ const AnthropicWebSearchBlockedDomains: Config; /** User location for personalizing web search results */ const AnthropicWebSearchUserLocation: Config<{ city?: string; region?: string; country?: string; timezone?: string; } | null>; /** User provided code generation instructions for the chat */ const CodeGenerationInstructions: Config; const TestGenerationInstructions: Config; const CommitMessageGenerationInstructions: Config; const PullRequestDescriptionGenerationInstructions: Config; /** Whether new flows around setting up tests are enabled */ const SetupTests: Config; /** Whether the Copilot TypeScript context provider is enabled and if how */ const TypeScriptLanguageContext: ExperimentBasedConfig; const TypeScriptLanguageContextMode: ExperimentBasedConfig<"fill" | "minimal" | "double" | "fillHalf">; const TypeScriptLanguageContextIncludeDocumentation: ExperimentBasedConfig; const TypeScriptLanguageContextCacheTimeout: ExperimentBasedConfig; const TypeScriptLanguageContextFix: ExperimentBasedConfig; const TypeScriptLanguageContextInline: ExperimentBasedConfig; const UseInstructionFiles: Config; const ReviewAgent: Config; const CodeFeedback: Config; const CodeFeedbackInstructions: Config; const UseProjectTemplates: Config; const ExplainScopeSelection: Config; const EnableCodeActions: Config; const LocaleOverride: Config; const TerminalChatLocation: Config; const AutomaticRenameSuggestions: Config; const TerminalToDebuggerEnabled: Config; const CodeSearchAgentEnabled: Config; const InlineEditsEnabled: ExperimentBasedConfig; const CompletionsInChatEnabled: Config; const InlineEditsEnableDiagnosticsProvider: ExperimentBasedConfig; const InlineEditsAllowWhitespaceOnlyChanges: ExperimentBasedConfig; /** Because of migration the value returned may be `boolean | "onlyWithEdit" | "jump" | undefined` */ const InlineEditsNextCursorPredictionEnabled: ExperimentBasedConfig; const NewWorkspaceCreationAgentEnabled: Config; const NewWorkspaceUseContext7: Config; const SummarizeAgentConversationHistory: Config; const VirtualToolThreshold: ExperimentBasedConfig; const CurrentEditorAgentContext: Config; /** BYOK */ const AutoFixDiagnostics: ExperimentBasedConfig; const NotebookFollowCellExecution: Config; const UseAlternativeNESNotebookFormat: ExperimentBasedConfig; const CustomInstructionsInSystemMessage: Config; const EnableAlternateGptPrompt: ExperimentBasedConfig; const EnableAlternateGeminiModelFPrompt: ExperimentBasedConfig; const EnableGemini3ReducedToolUsePrompt: ExperimentBasedConfig; const EnableOrganizationCustomAgents: Config; const EnableOrganizationInstructions: Config; const CompletionsFetcher: ExperimentBasedConfig; const NextEditSuggestionsFetcher: ExperimentBasedConfig; const GitHubMcpEnabled: ExperimentBasedConfig; const GitHubMcpToolsets: Config; const GitHubMcpReadonly: Config; const GitHubMcpLockdown: Config; type GitHubMcpChannelValue = 'stable' | 'insiders'; const GitHubMcpChannel: Config; const BackgroundAgentEnabled: Config; const CloudAgentEnabled: Config; const AdditionalReadAccessPaths: Config; const SwitchAgentEnabled: ExperimentBasedConfig; /** Additional tools to enable for the Plan agent (additive to base tools) */ const PlanAgentAdditionalTools: Config; /** Model override for Implement agent (empty = use default) */ const ImplementAgentModel: Config; /** Additional tools to enable for the Ask agent (additive to base tools) */ const AskAgentAdditionalTools: Config; /** Model override for Ask agent (empty = use default) */ const AskAgentModel: Config; /** Whether the Explore (Code Research) subagent is enabled */ const ExploreAgentEnabled: ExperimentBasedConfig; /** Model override for Explore (Code Research) agent — reads from core `chat.exploreAgent.defaultModel` */ const ExploreAgentModel: Config; const ViewImageToolEnabled: ExperimentBasedConfig; /** Enable local session search index — tracks sessions locally and enables chronicle commands.*/ const LocalIndexEnabled: ExperimentBasedConfig; /** grep_search configs */ const GrepSearchOutputFormat: ExperimentBasedConfig<"tag" | "grep">; const GrepSearchDefaultMaxResults: ExperimentBasedConfig; const GrepSearchMaxResultsCap: ExperimentBasedConfig; } export declare function getAllConfigKeys(): string[]; export declare function registerNextEditProviderId(providerId: string): string; export {}; //# sourceMappingURL=configurationService.d.ts.map