/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { VSBuffer } from '../../../base/common/buffer.js'; import { CancellationToken } from '../../../base/common/cancellation.js'; import { IRemoteConsoleLog } from '../../../base/common/console.js'; import { SerializedError } from '../../../base/common/errors.js'; import { IRelativePattern } from '../../../base/common/glob.js'; import { IMarkdownString } from '../../../base/common/htmlContent.js'; import { IJSONSchema } from '../../../base/common/jsonSchema.js'; import { IDisposable } from '../../../base/common/lifecycle.js'; import { IAuthorizationProtectedResourceMetadata, IAuthorizationServerMetadata, IAuthorizationTokenResponse } from '../../../base/common/oauth.js'; import * as performance from '../../../base/common/performance.js'; import Severity from '../../../base/common/severity.js'; import { ThemeColor, ThemeIcon } from '../../../base/common/themables.js'; import { URI, UriComponents, UriDto } from '../../../base/common/uri.js'; import { RenderLineNumbersType, TextEditorCursorStyle } from '../../../editor/common/config/editorOptions.js'; import { ISingleEditOperation } from '../../../editor/common/core/editOperation.js'; import { IPosition } from '../../../editor/common/core/position.js'; import { IRange } from '../../../editor/common/core/range.js'; import { ISelection, Selection } from '../../../editor/common/core/selection.js'; import { IChange } from '../../../editor/common/diff/legacyLinesDiffComputer.js'; import * as editorCommon from '../../../editor/common/editorCommon.js'; import { StandardTokenType } from '../../../editor/common/encodedTokenAttributes.js'; import * as languages from '../../../editor/common/languages.js'; import { CompletionItemLabel } from '../../../editor/common/languages.js'; import { CharacterPair, CommentRule, EnterAction } from '../../../editor/common/languages/languageConfiguration.js'; import { EndOfLineSequence } from '../../../editor/common/model.js'; import { EditSuggestionId } from '../../../editor/common/textModelEditSource.js'; import { ISerializedModelContentChangedEvent } from '../../../editor/common/textModelEvents.js'; import { IAccessibilityInformation } from '../../../platform/accessibility/common/accessibility.js'; import { ILocalizedString } from '../../../platform/action/common/action.js'; import { ConfigurationTarget, IConfigurationChange, IConfigurationData, IConfigurationOverrides } from '../../../platform/configuration/common/configuration.js'; import { ConfigurationScope } from '../../../platform/configuration/common/configurationRegistry.js'; import { IExtensionIdWithVersion } from '../../../platform/extensionManagement/common/extensionStorage.js'; import { ExtensionIdentifier, IExtensionDescription } from '../../../platform/extensions/common/extensions.js'; import * as files from '../../../platform/files/common/files.js'; import { ResourceLabelFormatter } from '../../../platform/label/common/label.js'; import { ILoggerOptions, ILoggerResource, LogLevel } from '../../../platform/log/common/log.js'; import { IMarkerData } from '../../../platform/markers/common/markers.js'; import { IProgressOptions, IProgressStep } from '../../../platform/progress/common/progress.js'; import * as quickInput from '../../../platform/quickinput/common/quickInput.js'; import { IRemoteConnectionData, TunnelDescription } from '../../../platform/remote/common/remoteAuthorityResolver.js'; import { AuthInfo, Credentials } from '../../../platform/request/common/request.js'; import { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from '../../../platform/telemetry/common/gdprTypings.js'; import { TelemetryLevel } from '../../../platform/telemetry/common/telemetry.js'; import { ISerializableEnvironmentDescriptionMap, ISerializableEnvironmentVariableCollection } from '../../../platform/terminal/common/environmentVariable.js'; import { ICreateContributedTerminalProfileOptions, IProcessProperty, IProcessReadyWindowsPty, IShellLaunchConfigDto, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalExitReason, TerminalLocation, TerminalShellType } from '../../../platform/terminal/common/terminal.js'; import { ProvidedPortAttributes, TunnelCreationOptions, TunnelOptions, TunnelPrivacyId, TunnelProviderFeatures } from '../../../platform/tunnel/common/tunnel.js'; import { EditSessionIdentityMatch } from '../../../platform/workspace/common/editSessions.js'; import { WorkspaceTrustRequestOptions } from '../../../platform/workspace/common/workspaceTrust.js'; import { SaveReason } from '../../common/editor.js'; import { IRevealOptions, ITreeItem, IViewBadge } from '../../common/views.js'; import { CallHierarchyItem } from '../../contrib/callHierarchy/common/callHierarchy.js'; import { IChatAgentMetadata, IChatAgentRequest, IChatAgentResult, UserSelectedTools } from '../../contrib/chat/common/chatAgents.js'; import { ICodeMapperRequest, ICodeMapperResult } from '../../contrib/chat/common/chatCodeMapperService.js'; import { IChatContextItem, IChatContextSupport } from '../../contrib/chat/common/chatContext.js'; import { IChatRelatedFile, IChatRelatedFileProviderMetadata as IChatRelatedFilesProviderMetadata, IChatRequestDraft } from '../../contrib/chat/common/chatEditingService.js'; import { IChatProgressHistoryResponseContent, IChatRequestVariableData } from '../../contrib/chat/common/chatModel.js'; import { ChatResponseClearToPreviousToolInvocationReason, IChatContentInlineReference, IChatExternalEditsDto, IChatFollowup, IChatMultiDiffData, IChatMultiDiffDataSerialized, IChatNotebookEdit, IChatProgress, IChatTask, IChatTaskDto, IChatUserActionEvent, IChatVoteAction } from '../../contrib/chat/common/chatService.js'; import { IChatSessionItem, IChatSessionProviderOptionGroup, IChatSessionProviderOptionItem } from '../../contrib/chat/common/chatSessionsService.js'; import { IChatRequestVariableValue } from '../../contrib/chat/common/chatVariables.js'; import { ChatAgentLocation } from '../../contrib/chat/common/constants.js'; import { IChatMessage, IChatResponsePart, ILanguageModelChatMetadataAndIdentifier, ILanguageModelChatSelector } from '../../contrib/chat/common/languageModels.js'; import { IPreparedToolInvocation, IToolInvocation, IToolInvocationPreparationContext, IToolProgressStep, IToolResult, ToolDataSource } from '../../contrib/chat/common/languageModelToolsService.js'; import { ICustomAgentQueryOptions, IExternalCustomAgent } from '../../contrib/chat/common/promptSyntax/service/promptsService.js'; import { DebugConfigurationProviderTriggerKind, IAdapterDescriptor, IConfig, IDebugSessionReplMode, IDebugTestRunReference, IDebugVisualization, IDebugVisualizationContext, IDebugVisualizationTreeItem, MainThreadDebugVisualization } from '../../contrib/debug/common/debug.js'; import { McpCollectionDefinition, McpConnectionState, McpServerDefinition, McpServerLaunch } from '../../contrib/mcp/common/mcpTypes.js'; import * as notebookCommon from '../../contrib/notebook/common/notebookCommon.js'; import { CellExecutionUpdateType } from '../../contrib/notebook/common/notebookExecutionService.js'; import { ICellExecutionComplete, ICellExecutionStateUpdate } from '../../contrib/notebook/common/notebookExecutionStateService.js'; import { ICellRange } from '../../contrib/notebook/common/notebookRange.js'; import { ISCMHistoryOptions } from '../../contrib/scm/common/history.js'; import { InputValidationType } from '../../contrib/scm/common/scm.js'; import { IWorkspaceSymbol, NotebookPriorityInfo } from '../../contrib/search/common/search.js'; import { IRawClosedNotebookFileMatch } from '../../contrib/search/common/searchNotebookHelpers.js'; import { IKeywordRecognitionEvent, ISpeechProviderMetadata, ISpeechToTextEvent, ITextToSpeechEvent } from '../../contrib/speech/common/speechService.js'; import { CoverageDetails, ExtensionRunTestsRequest, ICallProfileRunHandler, IFileCoverage, ISerializedTestResults, IStartControllerTests, ITestItem, ITestMessage, ITestRunProfile, ITestRunTask, ResolvedTestRunRequest, TestControllerCapability, TestMessageFollowupRequest, TestMessageFollowupResponse, TestResultState, TestsDiffOp } from '../../contrib/testing/common/testTypes.js'; import { Timeline, TimelineChangeEvent, TimelineOptions, TimelineProviderDescriptor } from '../../contrib/timeline/common/timeline.js'; import { TypeHierarchyItem } from '../../contrib/typeHierarchy/common/typeHierarchy.js'; import { RelatedInformationResult, RelatedInformationType } from '../../services/aiRelatedInformation/common/aiRelatedInformation.js'; import { AiSettingsSearchProviderOptions, AiSettingsSearchResult } from '../../services/aiSettingsSearch/common/aiSettingsSearch.js'; import { AuthenticationSession, AuthenticationSessionAccount, AuthenticationSessionsChangeEvent, IAuthenticationConstraint, IAuthenticationCreateSessionOptions, IAuthenticationGetSessionsOptions, IAuthenticationWwwAuthenticateRequest } from '../../services/authentication/common/authentication.js'; import { EditorGroupColumn } from '../../services/editor/common/editorGroupColumn.js'; import { IExtensionDescriptionDelta, IStaticWorkspaceData } from '../../services/extensions/common/extensionHostProtocol.js'; import { IResolveAuthorityResult } from '../../services/extensions/common/extensionHostProxy.js'; import { ActivationKind, ExtensionActivationReason, MissingExtensionDependency } from '../../services/extensions/common/extensions.js'; import { Dto, IRPCProtocol, SerializableObjectWithBuffers, createProxyIdentifier } from '../../services/extensions/common/proxyIdentifier.js'; import { IInlineCompletionsUnificationState } from '../../services/inlineCompletions/common/inlineCompletionsUnification.js'; import { ILanguageStatus } from '../../services/languageStatus/common/languageStatusService.js'; import { OutputChannelUpdateMode } from '../../services/output/common/output.js'; import { CandidatePort } from '../../services/remote/common/tunnelModel.js'; import { IFileQueryBuilderOptions, ITextQueryBuilderOptions } from '../../services/search/common/queryBuilder.js'; import * as search from '../../services/search/common/search.js'; import { AISearchKeyword, TextSearchCompleteMessage } from '../../services/search/common/searchExtTypes.js'; import { ISaveProfileResult } from '../../services/userDataProfile/common/userDataProfile.js'; import { IExtHostDocumentSaveDelegate } from './extHostDocumentData.js'; import { TerminalShellExecutionCommandLineConfidence } from './extHostTypes.js'; import * as tasks from './shared/tasks.js'; export type IconPathDto = | UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon; export interface IWorkspaceData extends IStaticWorkspaceData { folders: { uri: UriComponents; name: string; index: number }[]; } export interface IConfigurationInitData extends IConfigurationData { configurationScopes: [string, ConfigurationScope | undefined][]; } export interface IMainContext extends IRPCProtocol { } // --- main thread export interface MainThreadClipboardShape extends IDisposable { $readText(): Promise; $writeText(value: string): Promise; } export interface MainThreadCommandsShape extends IDisposable { $registerCommand(id: string): void; $unregisterCommand(id: string): void; $fireCommandActivationEvent(id: string): void; $executeCommand(id: string, args: unknown[] | SerializableObjectWithBuffers, retry: boolean): Promise; $getCommands(): Promise; } export interface CommentProviderFeatures { reactionGroup?: languages.CommentReaction[]; reactionHandler?: boolean; options?: languages.CommentOptions; } export interface CommentChanges { readonly uniqueIdInThread: number; readonly body: string | IMarkdownString; readonly userName: string; readonly userIconPath?: UriComponents; readonly contextValue?: string; readonly commentReactions?: languages.CommentReaction[]; readonly label?: string; readonly mode?: languages.CommentMode; readonly state?: languages.CommentState; readonly timestamp?: string; } export type CommentThreadChanges = Partial<{ range: T | undefined; label: string; contextValue: string | null; comments: CommentChanges[]; collapseState: languages.CommentThreadCollapsibleState; canReply: boolean | languages.CommentAuthorInformation; state: languages.CommentThreadState; applicability: languages.CommentThreadApplicability; isTemplate: boolean; }>; export interface MainThreadCommentsShape extends IDisposable { $registerCommentController(handle: number, id: string, label: string, extensionId: string): void; $unregisterCommentController(handle: number): void; $updateCommentControllerFeatures(handle: number, features: CommentProviderFeatures): void; $createCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, range: IRange | ICellRange | undefined, comments: languages.Comment[], extensionId: ExtensionIdentifier, isTemplate: boolean, editorId?: string): languages.CommentThread | undefined; $updateCommentThread(handle: number, commentThreadHandle: number, threadId: string, resource: UriComponents, changes: CommentThreadChanges): void; $deleteCommentThread(handle: number, commentThreadHandle: number): void; $updateCommentingRanges(handle: number, resourceHints?: languages.CommentingRangeResourceHint): void; $revealCommentThread(handle: number, commentThreadHandle: number, commentUniqueIdInThread: number, options: languages.CommentThreadRevealOptions): Promise; $hideCommentThread(handle: number, commentThreadHandle: number): void; } export interface AuthenticationForceNewSessionOptions { detail?: string; sessionToRecreate?: AuthenticationSession; } export interface AuthenticationInteractiveOptions { detail?: string; learnMore?: UriComponents; sessionToRecreate?: AuthenticationSession; } export interface AuthenticationGetSessionOptions { clearSessionPreference?: boolean; createIfNone?: boolean | AuthenticationInteractiveOptions; forceNewSession?: boolean | AuthenticationInteractiveOptions; silent?: boolean; account?: AuthenticationSessionAccount; } export interface IRegisterAuthenticationProviderDetails { id: string; label: string; supportsMultipleAccounts: boolean; supportedAuthorizationServers?: UriComponents[]; supportsChallenges?: boolean; resourceServer?: UriComponents; } export interface IRegisterDynamicAuthenticationProviderDetails extends IRegisterAuthenticationProviderDetails { clientId: string; clientSecret?: string; authorizationServer: UriComponents; } export interface MainThreadAuthenticationShape extends IDisposable { $registerAuthenticationProvider(details: IRegisterAuthenticationProviderDetails): Promise; $unregisterAuthenticationProvider(id: string): Promise; $ensureProvider(id: string): Promise; $sendDidChangeSessions(providerId: string, event: AuthenticationSessionsChangeEvent): Promise; $getSession(providerId: string, scopeListOrRequest: ReadonlyArray | IAuthenticationWwwAuthenticateRequest, extensionId: string, extensionName: string, options: AuthenticationGetSessionOptions): Promise; $getAccounts(providerId: string): Promise>; $removeSession(providerId: string, sessionId: string): Promise; $waitForUriHandler(expectedUri: UriComponents): Promise; $showContinueNotification(message: string): Promise; $showDeviceCodeModal(userCode: string, verificationUri: string): Promise; $promptForClientRegistration(authorizationServerUrl: string): Promise<{ clientId: string; clientSecret?: string } | undefined>; $registerDynamicAuthenticationProvider(details: IRegisterDynamicAuthenticationProviderDetails): Promise; $setSessionsForDynamicAuthProvider(authProviderId: string, clientId: string, sessions: (IAuthorizationTokenResponse & { created_at: number })[]): Promise; $sendDidChangeDynamicProviderInfo({ providerId, clientId, authorizationServer, label, clientSecret }: { providerId: string; clientId?: string; authorizationServer?: UriComponents; label?: string; clientSecret?: string }): Promise; } export interface MainThreadSecretStateShape extends IDisposable { $getPassword(extensionId: string, key: string): Promise; $setPassword(extensionId: string, key: string, value: string): Promise; $deletePassword(extensionId: string, key: string): Promise; $getKeys(extensionId: string): Promise; } export interface MainThreadConfigurationShape extends IDisposable { $updateConfigurationOption(target: ConfigurationTarget | null, key: string, value: unknown, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise; $removeConfigurationOption(target: ConfigurationTarget | null, key: string, overrides: IConfigurationOverrides | undefined, scopeToLanguage: boolean | undefined): Promise; } export interface MainThreadDiagnosticsShape extends IDisposable { $changeMany(owner: string, entries: [UriComponents, IMarkerData[] | undefined][]): void; $clear(owner: string): void; } export interface MainThreadDialogOpenOptions { defaultUri?: UriComponents; openLabel?: string; canSelectFiles?: boolean; canSelectFolders?: boolean; canSelectMany?: boolean; filters?: { [name: string]: string[] }; title?: string; allowUIResources?: boolean; } export interface MainThreadDialogSaveOptions { defaultUri?: UriComponents; saveLabel?: string; filters?: { [name: string]: string[] }; title?: string; } export interface MainThreadDiaglogsShape extends IDisposable { $showOpenDialog(options?: MainThreadDialogOpenOptions): Promise; $showSaveDialog(options?: MainThreadDialogSaveOptions): Promise; } export interface MainThreadDecorationsShape extends IDisposable { $registerDecorationProvider(handle: number, label: string): void; $unregisterDecorationProvider(handle: number): void; $onDidChange(handle: number, resources: UriComponents[] | null): void; } export interface MainThreadDocumentContentProvidersShape extends IDisposable { $registerTextContentProvider(handle: number, scheme: string): void; $unregisterTextContentProvider(handle: number): void; $onVirtualDocumentChange(uri: UriComponents, value: string): Promise; } export interface MainThreadDocumentsShape extends IDisposable, IExtHostDocumentSaveDelegate { $tryCreateDocument(options?: { language?: string; content?: string; encoding?: string }): Promise; $tryOpenDocument(uri: UriComponents, options?: { encoding?: string }): Promise; $trySaveDocument(uri: UriComponents): Promise; } export interface ITextEditorConfigurationUpdate { tabSize?: number | 'auto'; indentSize?: number | 'tabSize'; insertSpaces?: boolean | 'auto'; cursorStyle?: TextEditorCursorStyle; lineNumbers?: RenderLineNumbersType; } export interface IResolvedTextEditorConfiguration { tabSize: number; indentSize: number; originalIndentSize: number | 'tabSize'; insertSpaces: boolean; cursorStyle: TextEditorCursorStyle; lineNumbers: RenderLineNumbersType; } export enum TextEditorRevealType { Default = 0, InCenter = 1, InCenterIfOutsideViewport = 2, AtTop = 3 } export interface IUndoStopOptions { undoStopBefore: boolean; undoStopAfter: boolean; } export interface IApplyEditsOptions extends IUndoStopOptions { setEndOfLine?: EndOfLineSequence; } export interface ISnippetOptions extends IUndoStopOptions { keepWhitespace?: boolean; } export interface ITextDocumentShowOptions { position?: EditorGroupColumn; preserveFocus?: boolean; pinned?: boolean; selection?: IRange; } export interface MainThreadBulkEditsShape extends IDisposable { $tryApplyWorkspaceEdit(workspaceEditDto: SerializableObjectWithBuffers, undoRedoGroupId?: number, respectAutoSaveConfig?: boolean): Promise; } export interface MainThreadTextEditorsShape extends IDisposable { $tryShowTextDocument(resource: UriComponents, options: ITextDocumentShowOptions): Promise; $registerTextEditorDecorationType(extensionId: ExtensionIdentifier, key: string, options: editorCommon.IDecorationRenderOptions): void; $removeTextEditorDecorationType(key: string): void; $tryShowEditor(id: string, position: EditorGroupColumn): Promise; $tryHideEditor(id: string): Promise; $trySetOptions(id: string, options: ITextEditorConfigurationUpdate): Promise; $trySetDecorations(id: string, key: string, ranges: editorCommon.IDecorationOptions[]): Promise; $trySetDecorationsFast(id: string, key: string, ranges: number[]): Promise; $tryRevealRange(id: string, range: IRange, revealType: TextEditorRevealType): Promise; $trySetSelections(id: string, selections: ISelection[]): Promise; $tryApplyEdits(id: string, modelVersionId: number, edits: ISingleEditOperation[], opts: IApplyEditsOptions): Promise; $tryInsertSnippet(id: string, modelVersionId: number, template: string, selections: readonly IRange[], opts: IUndoStopOptions): Promise; $getDiffInformation(id: string): Promise; } export interface MainThreadTreeViewsShape extends IDisposable { $registerTreeViewDataProvider(treeViewId: string, options: { showCollapseAll: boolean; canSelectMany: boolean; dropMimeTypes: readonly string[]; dragMimeTypes: readonly string[]; hasHandleDrag: boolean; hasHandleDrop: boolean; manuallyManageCheckboxes: boolean }): Promise; $refresh(treeViewId: string, itemsToRefresh?: { [treeItemHandle: string]: ITreeItem }): Promise; $reveal(treeViewId: string, itemInfo: { item: ITreeItem; parentChain: ITreeItem[] } | undefined, options: IRevealOptions): Promise; $setMessage(treeViewId: string, message: string | IMarkdownString): void; $setTitle(treeViewId: string, title: string, description: string | undefined): void; $setBadge(treeViewId: string, badge: IViewBadge | undefined): void; $resolveDropFileData(destinationViewId: string, requestId: number, dataItemId: string): Promise; $disposeTree(treeViewId: string): Promise; } export interface MainThreadDownloadServiceShape extends IDisposable { $download(uri: UriComponents, to: UriComponents): Promise; } export interface MainThreadErrorsShape extends IDisposable { $onUnexpectedError(err: any | SerializedError): void; } export interface MainThreadConsoleShape extends IDisposable { $logExtensionHostMessage(msg: IRemoteConsoleLog): void; } export interface IRegExpDto { pattern: string; flags?: string; } export interface IIndentationRuleDto { decreaseIndentPattern: IRegExpDto; increaseIndentPattern: IRegExpDto; indentNextLinePattern?: IRegExpDto; unIndentedLinePattern?: IRegExpDto; } export interface IOnEnterRuleDto { beforeText: IRegExpDto; afterText?: IRegExpDto; previousLineText?: IRegExpDto; action: EnterAction; } export interface ILanguageConfigurationDto { comments?: CommentRule; brackets?: CharacterPair[]; wordPattern?: IRegExpDto; indentationRules?: IIndentationRuleDto; onEnterRules?: IOnEnterRuleDto[]; __electricCharacterSupport?: { brackets?: any; docComment?: { scope: string; open: string; lineStart: string; close?: string; }; }; __characterPairSupport?: { autoClosingPairs: { open: string; close: string; notIn?: string[]; }[]; }; autoClosingPairs?: { open: string; close: string; notIn?: string[]; }[]; } export type GlobPattern = string | IRelativePattern; export interface IRelativePatternDto extends IRelativePattern { baseUri: UriComponents; } export interface IDocumentFilterDto { $serialized: true; language?: string; scheme?: string; pattern?: string | IRelativePattern; exclusive?: boolean; notebookType?: string; isBuiltin?: boolean; } export interface IShareableItemDto { resourceUri: UriComponents; selection?: IRange; } export interface IDocumentContextItemDto { readonly uri: UriComponents; readonly version: number; readonly ranges: IRange[]; } export interface IConversationItemDto { readonly type: 'request' | 'response'; readonly message: string; readonly references?: IDocumentContextItemDto[]; } export interface IMappedEditsContextDto { documents: IDocumentContextItemDto[][]; conversation?: IConversationItemDto[]; } export interface ICodeBlockDto { code: string; resource: UriComponents; } export interface IMappedEditsRequestDto { readonly codeBlocks: ICodeBlockDto[]; readonly conversation?: IConversationItemDto[]; } export interface IMappedEditsResultDto { readonly errorMessage?: string; } export interface ISignatureHelpProviderMetadataDto { readonly triggerCharacters: readonly string[]; readonly retriggerCharacters: readonly string[]; } export interface IdentifiableInlineCompletions extends languages.InlineCompletions { pid: number; languageId: string; } export interface IdentifiableInlineCompletion extends languages.InlineCompletion { idx: number; suggestionId: EditSuggestionId | undefined; } export interface IInlineCompletionModelDto { readonly id: string; readonly name: string; } export interface IInlineCompletionModelInfoDto { readonly models: IInlineCompletionModelDto[]; readonly currentModelId: string; } export interface MainThreadLanguageFeaturesShape extends IDisposable { $unregister(handle: number): void; $registerDocumentSymbolProvider(handle: number, selector: IDocumentFilterDto[], label: string): void; $registerCodeLensSupport(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void; $emitCodeLensEvent(eventHandle: number, event?: any): void; $registerDefinitionSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerDeclarationSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerImplementationSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerTypeDefinitionSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerHoverProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerEvaluatableExpressionProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerInlineValuesProvider(handle: number, selector: IDocumentFilterDto[], eventHandle: number | undefined): void; $emitInlineValuesEvent(eventHandle: number, event?: any): void; $registerDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerMultiDocumentHighlightProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerLinkedEditingRangeProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerReferenceSupport(handle: number, selector: IDocumentFilterDto[]): void; $registerCodeActionSupport(handle: number, selector: IDocumentFilterDto[], metadata: ICodeActionProviderMetadataDto, displayName: string, extensionID: string, supportsResolve: boolean): void; $registerPasteEditProvider(handle: number, selector: IDocumentFilterDto[], metadata: IPasteEditProviderMetadataDto): void; $registerDocumentFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string): void; $registerRangeFormattingSupport(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, displayName: string, supportRanges: boolean): void; $registerOnTypeFormattingSupport(handle: number, selector: IDocumentFilterDto[], autoFormatTriggerCharacters: string[], extensionId: ExtensionIdentifier): void; $registerNavigateTypeSupport(handle: number, supportsResolve: boolean): void; $registerRenameSupport(handle: number, selector: IDocumentFilterDto[], supportsResolveInitialValues: boolean): void; $registerNewSymbolNamesProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerDocumentSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend, eventHandle: number | undefined): void; $emitDocumentSemanticTokensEvent(eventHandle: number): void; $registerDocumentRangeSemanticTokensProvider(handle: number, selector: IDocumentFilterDto[], legend: languages.SemanticTokensLegend, eventHandle: number | undefined): void; $emitDocumentRangeSemanticTokensEvent(eventHandle: number): void; $registerCompletionsProvider(handle: number, selector: IDocumentFilterDto[], triggerCharacters: string[], supportsResolveDetails: boolean, extensionId: ExtensionIdentifier): void; $registerInlineCompletionsSupport( handle: number, selector: IDocumentFilterDto[], supportsHandleEvents: boolean, extensionId: string, extensionVersion: string, groupId: string | undefined, yieldsToExtensionIds: string[], displayName: string | undefined, debounceDelayMs: number | undefined, excludesExtensionIds: string[], supportsSetModelId: boolean, supportsOnDidChange: boolean, initialModelInfo: IInlineCompletionModelInfoDto | undefined, supportsOnDidChangeModelInfo: boolean, ): void; $emitInlineCompletionsChange(handle: number): void; $emitInlineCompletionModelInfoChange(handle: number, data: IInlineCompletionModelInfoDto | undefined): void; $registerSignatureHelpProvider(handle: number, selector: IDocumentFilterDto[], metadata: ISignatureHelpProviderMetadataDto): void; $registerInlayHintsProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean, eventHandle: number | undefined, displayName: string | undefined): void; $emitInlayHintsEvent(eventHandle: number): void; $registerDocumentLinkProvider(handle: number, selector: IDocumentFilterDto[], supportsResolve: boolean): void; $registerDocumentColorProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerFoldingRangeProvider(handle: number, selector: IDocumentFilterDto[], extensionId: ExtensionIdentifier, eventHandle: number | undefined): void; $emitFoldingRangeEvent(eventHandle: number, event?: any): void; $registerSelectionRangeProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerCallHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerTypeHierarchyProvider(handle: number, selector: IDocumentFilterDto[]): void; $registerDocumentOnDropEditProvider(handle: number, selector: IDocumentFilterDto[], metadata?: IDocumentDropEditProviderMetadata): void; $resolvePasteFileData(handle: number, requestId: number, dataId: string): Promise; $resolveDocumentOnDropFileData(handle: number, requestId: number, dataId: string): Promise; $setLanguageConfiguration(handle: number, languageId: string, configuration: ILanguageConfigurationDto): void; } export interface MainThreadLanguagesShape extends IDisposable { $changeLanguage(resource: UriComponents, languageId: string): Promise; $tokensAtPosition(resource: UriComponents, position: IPosition): Promise; $setLanguageStatus(handle: number, status: ILanguageStatus): void; $removeLanguageStatus(handle: number): void; } export interface MainThreadMessageOptions { source?: { identifier: ExtensionIdentifier; label: string }; modal?: boolean; detail?: string; useCustom?: boolean; } export interface MainThreadMessageServiceShape extends IDisposable { $showMessage(severity: Severity, message: string, options: MainThreadMessageOptions, commands: { title: string; isCloseAffordance: boolean; handle: number }[]): Promise; } export interface MainThreadOutputServiceShape extends IDisposable { $register(label: string, file: UriComponents, languageId: string | undefined, extensionId: string): Promise; $update(channelId: string, mode: OutputChannelUpdateMode, till?: number): Promise; $reveal(channelId: string, preserveFocus: boolean): Promise; $close(channelId: string): Promise; $dispose(channelId: string): Promise; } export interface MainThreadProgressShape extends IDisposable { $startProgress(handle: number, options: IProgressOptions, extensionId?: string): Promise; $progressReport(handle: number, message: IProgressStep): void; $progressEnd(handle: number): void; } /** * A terminal that is created on the extension host side is temporarily assigned * a UUID by the extension host that created it. Once the renderer side has assigned * a real numeric id, the numeric id will be used. * * All other terminals (that are not created on the extension host side) always * use the numeric id. */ export type ExtHostTerminalIdentifier = number | string; export interface TerminalLaunchConfig { name?: string; shellPath?: string; shellArgs?: string[] | string; cwd?: string | UriComponents; env?: ITerminalEnvironment; icon?: URI | { light: URI; dark: URI } | ThemeIcon; color?: string; initialText?: string; waitOnExit?: boolean; strictEnv?: boolean; hideFromUser?: boolean; isExtensionCustomPtyTerminal?: boolean; forceShellIntegration?: boolean; isFeatureTerminal?: boolean; isExtensionOwnedTerminal?: boolean; useShellEnvironment?: boolean; location?: TerminalLocation | { viewColumn: number; preserveFocus?: boolean } | { parentTerminal: ExtHostTerminalIdentifier } | { splitActiveTerminal: boolean }; isTransient?: boolean; shellIntegrationNonce?: string; } export interface MainThreadTerminalServiceShape extends IDisposable { $createTerminal(extHostTerminalId: string, config: TerminalLaunchConfig): Promise; $dispose(id: ExtHostTerminalIdentifier): void; $hide(id: ExtHostTerminalIdentifier): void; $sendText(id: ExtHostTerminalIdentifier, text: string, shouldExecute: boolean): void; $show(id: ExtHostTerminalIdentifier, preserveFocus: boolean): void; $registerProcessSupport(isSupported: boolean): void; $registerProfileProvider(id: string, extensionIdentifier: string): void; $unregisterProfileProvider(id: string): void; $registerCompletionProvider(id: string, extensionIdentifier: string, ...triggerCharacters: string[]): void; $unregisterCompletionProvider(id: string): void; $registerQuickFixProvider(id: string, extensionIdentifier: string): void; $unregisterQuickFixProvider(id: string): void; $setEnvironmentVariableCollection(extensionIdentifier: string, persistent: boolean, collection: ISerializableEnvironmentVariableCollection | undefined, descriptionMap: ISerializableEnvironmentDescriptionMap): void; // Optional event toggles $startSendingDataEvents(): void; $stopSendingDataEvents(): void; $startSendingCommandEvents(): void; $stopSendingCommandEvents(): void; $startLinkProvider(): void; $stopLinkProvider(): void; // Process $sendProcessData(terminalId: number, data: string): void; $sendProcessReady(terminalId: number, pid: number, cwd: string, windowsPty: IProcessReadyWindowsPty | undefined): void; $sendProcessProperty(terminalId: number, property: IProcessProperty): void; $sendProcessExit(terminalId: number, exitCode: number | undefined): void; } export interface MainThreadTerminalShellIntegrationShape extends IDisposable { $executeCommand(terminalId: number, commandLine: string): void; } export type TransferQuickPickItemOrSeparator = TransferQuickPickItem | quickInput.IQuickPickSeparator; export interface TransferQuickPickItem { handle: number; // shared properties from IQuickPickItem type?: 'item'; label: string; iconPathDto?: IconPathDto; description?: string; detail?: string; picked?: boolean; alwaysShow?: boolean; buttons?: TransferQuickInputButton[]; resourceUri?: UriComponents; // TODO: These properties are not used for transfer (iconPathDto is used instead) but they cannot be removed // because this type is used as IQuickPickItem on the main thread. Ideally IQuickPickItem should also use IconPath. iconPath?: { light?: URI; dark: URI }; iconClass?: string; } export interface TransferQuickInputButton extends quickInput.IQuickInputButton { handle: number; iconPathDto: IconPathDto; toggle?: { checked: boolean }; // TODO: These properties are not used for transfer (iconPathDto is used instead) but they cannot be removed // because this type is used as IQuickInputButton on the main thread. Ideally IQuickInputButton should also use IconPath. iconPath?: { light?: URI; dark: URI }; iconClass?: string; } export type TransferQuickInput = TransferQuickPick | TransferInputBox; export interface BaseTransferQuickInput { [key: string]: any; id: number; title?: string; type?: 'quickPick' | 'inputBox'; enabled?: boolean; busy?: boolean; visible?: boolean; } export interface TransferQuickPick extends BaseTransferQuickInput { type?: 'quickPick'; value?: string; placeholder?: string; prompt?: string; buttons?: TransferQuickInputButton[]; items?: TransferQuickPickItemOrSeparator[]; activeItems?: number[]; selectedItems?: number[]; canSelectMany?: boolean; ignoreFocusOut?: boolean; matchOnDescription?: boolean; matchOnDetail?: boolean; sortByLabel?: boolean; } export interface TransferInputBox extends BaseTransferQuickInput { type?: 'inputBox'; value?: string; valueSelection?: Readonly<[number, number]>; placeholder?: string; password?: boolean; buttons?: TransferQuickInputButton[]; prompt?: string; validationMessage?: string; } export interface IInputBoxOptions { title?: string; value?: string; valueSelection?: Readonly<[number, number]>; prompt?: string; placeHolder?: string; password?: boolean; ignoreFocusOut?: boolean; } export interface MainThreadQuickOpenShape extends IDisposable { $show(instance: number, options: quickInput.IPickOptions, token: CancellationToken): Promise; $setItems(instance: number, items: TransferQuickPickItemOrSeparator[]): Promise; $setError(instance: number, error: Error): Promise; $input(options: IInputBoxOptions | undefined, validateInput: boolean, token: CancellationToken): Promise; $createOrUpdate(params: TransferQuickInput): Promise; $dispose(id: number): Promise; } export interface MainThreadStatusBarShape extends IDisposable { $setEntry(id: string, statusId: string, extensionId: string | undefined, statusName: string, text: string, tooltip: IMarkdownString | string | undefined, hasTooltipProvider: boolean, command: ICommandDto | undefined, color: string | ThemeColor | undefined, backgroundColor: string | ThemeColor | undefined, alignLeft: boolean, priority: number | undefined, accessibilityInformation: IAccessibilityInformation | undefined): void; $disposeEntry(id: string): void; } export type StatusBarItemDto = { entryId: string; alignLeft: boolean; priority?: number; name: string; text: string; tooltip?: string; command?: string; accessibilityInformation?: IAccessibilityInformation; }; export interface ExtHostStatusBarShape { $acceptStaticEntries(added?: StatusBarItemDto[]): void; $provideTooltip(entryId: string, cancellation: CancellationToken): Promise; } export interface MainThreadStorageShape extends IDisposable { $initializeExtensionStorage(shared: boolean, extensionId: string): Promise; $setValue(shared: boolean, extensionId: string, value: object): Promise; $registerExtensionStorageKeysToSync(extension: IExtensionIdWithVersion, keys: string[]): void; } export interface MainThreadTelemetryShape extends IDisposable { $publicLog(eventName: string, data?: any): void; $publicLog2> = never, T extends IGDPRProperty = never>(eventName: string, data?: StrictPropertyCheck): void; } export interface MainThreadEditorInsetsShape extends IDisposable { $createEditorInset(handle: number, id: string, uri: UriComponents, line: number, height: number, options: IWebviewContentOptions, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): Promise; $disposeEditorInset(handle: number): void; $setHtml(handle: number, value: string): void; $setOptions(handle: number, options: IWebviewContentOptions): void; $postMessage(handle: number, value: any): Promise; } export interface ExtHostEditorInsetsShape { $onDidDispose(handle: number): void; $onDidReceiveMessage(handle: number, message: any): void; } //#region --- tabs model export const enum TabInputKind { UnknownInput, TextInput, TextDiffInput, TextMergeInput, NotebookInput, NotebookDiffInput, CustomEditorInput, WebviewEditorInput, TerminalEditorInput, InteractiveEditorInput, ChatEditorInput, MultiDiffEditorInput } export const enum TabModelOperationKind { TAB_OPEN, TAB_CLOSE, TAB_UPDATE, TAB_MOVE } export interface UnknownInputDto { kind: TabInputKind.UnknownInput; } export interface TextInputDto { kind: TabInputKind.TextInput; uri: UriComponents; } export interface TextDiffInputDto { kind: TabInputKind.TextDiffInput; original: UriComponents; modified: UriComponents; } export interface TextMergeInputDto { kind: TabInputKind.TextMergeInput; base: UriComponents; input1: UriComponents; input2: UriComponents; result: UriComponents; } export interface NotebookInputDto { kind: TabInputKind.NotebookInput; notebookType: string; uri: UriComponents; } export interface NotebookDiffInputDto { kind: TabInputKind.NotebookDiffInput; notebookType: string; original: UriComponents; modified: UriComponents; } export interface CustomInputDto { kind: TabInputKind.CustomEditorInput; viewType: string; uri: UriComponents; } export interface WebviewInputDto { kind: TabInputKind.WebviewEditorInput; viewType: string; } export interface InteractiveEditorInputDto { kind: TabInputKind.InteractiveEditorInput; uri: UriComponents; inputBoxUri: UriComponents; } export interface ChatEditorInputDto { kind: TabInputKind.ChatEditorInput; } export interface MultiDiffEditorInputDto { kind: TabInputKind.MultiDiffEditorInput; diffEditors: TextDiffInputDto[]; } export interface TabInputDto { kind: TabInputKind.TerminalEditorInput; } export type AnyInputDto = UnknownInputDto | TextInputDto | TextDiffInputDto | MultiDiffEditorInputDto | TextMergeInputDto | NotebookInputDto | NotebookDiffInputDto | CustomInputDto | WebviewInputDto | InteractiveEditorInputDto | ChatEditorInputDto | TabInputDto; export interface MainThreadEditorTabsShape extends IDisposable { // manage tabs: move, close, rearrange etc $moveTab(tabId: string, index: number, viewColumn: EditorGroupColumn, preserveFocus?: boolean): void; $closeTab(tabIds: string[], preserveFocus?: boolean): Promise; $closeGroup(groupIds: number[], preservceFocus?: boolean): Promise; } export interface IEditorTabGroupDto { isActive: boolean; viewColumn: EditorGroupColumn; // Decided not to go with simple index here due to opening and closing causing index shifts // This allows us to patch the model without having to do full rebuilds tabs: IEditorTabDto[]; groupId: number; } export interface TabOperation { readonly kind: TabModelOperationKind.TAB_OPEN | TabModelOperationKind.TAB_CLOSE | TabModelOperationKind.TAB_UPDATE | TabModelOperationKind.TAB_MOVE; // TODO @lramos15 Possibly get rid of index for tab update, it's only needed for open and close readonly index: number; readonly tabDto: IEditorTabDto; readonly groupId: number; readonly oldIndex?: number; } export interface IEditorTabDto { id: string; label: string; input: AnyInputDto; editorId?: string; isActive: boolean; isPinned: boolean; isPreview: boolean; isDirty: boolean; } export interface IExtHostEditorTabsShape { // Accepts a whole new model $acceptEditorTabModel(tabGroups: IEditorTabGroupDto[]): void; // Only when group property changes (not the tabs inside) $acceptTabGroupUpdate(groupDto: IEditorTabGroupDto): void; // When a tab is added, removed, or updated $acceptTabOperation(operation: TabOperation): void; } //#endregion export type WebviewHandle = string; export interface WebviewPanelShowOptions { readonly viewColumn?: EditorGroupColumn; readonly preserveFocus?: boolean; } export interface WebviewExtensionDescription { readonly id: ExtensionIdentifier; readonly location: UriComponents; } export enum WebviewEditorCapabilities { Editable, SupportsHotExit, } export interface IWebviewPortMapping { readonly webviewPort: number; readonly extensionHostPort: number; } export interface IWebviewContentOptions { readonly enableScripts?: boolean; readonly enableForms?: boolean; readonly enableCommandUris?: boolean | readonly string[]; readonly localResourceRoots?: readonly UriComponents[]; readonly portMapping?: readonly IWebviewPortMapping[]; } export interface IWebviewPanelOptions { readonly enableFindWidget?: boolean; readonly retainContextWhenHidden?: boolean; } export interface CustomTextEditorCapabilities { readonly supportsMove?: boolean; } export const enum WebviewMessageArrayBufferViewType { Int8Array = 1, Uint8Array = 2, Uint8ClampedArray = 3, Int16Array = 4, Uint16Array = 5, Int32Array = 6, Uint32Array = 7, Float32Array = 8, Float64Array = 9, BigInt64Array = 10, BigUint64Array = 11, } export interface WebviewMessageArrayBufferReference { readonly $$vscode_array_buffer_reference$$: true; readonly index: number; /** * Tracks if the reference is to a view instead of directly to an ArrayBuffer. */ readonly view?: { readonly type: WebviewMessageArrayBufferViewType; readonly byteLength: number; readonly byteOffset: number; }; } export interface MainThreadWebviewsShape extends IDisposable { $setHtml(handle: WebviewHandle, value: string): void; $setOptions(handle: WebviewHandle, options: IWebviewContentOptions): void; $postMessage(handle: WebviewHandle, value: string, ...buffers: VSBuffer[]): Promise; } export type IWebviewIconPath = ThemeIcon | { readonly light: UriComponents; readonly dark: UriComponents; }; export interface IWebviewInitData { readonly title: string; readonly webviewOptions: IWebviewContentOptions; readonly panelOptions: IWebviewPanelOptions; readonly serializeBuffersForPostMessage: boolean; } export interface MainThreadWebviewPanelsShape extends IDisposable { $createWebviewPanel( extension: WebviewExtensionDescription, handle: WebviewHandle, viewType: string, initData: IWebviewInitData, showOptions: WebviewPanelShowOptions, ): void; $disposeWebview(handle: WebviewHandle): void; $reveal(handle: WebviewHandle, showOptions: WebviewPanelShowOptions): void; $setTitle(handle: WebviewHandle, value: string): void; $setIconPath(handle: WebviewHandle, value: IWebviewIconPath | undefined): void; $registerSerializer(viewType: string, options: { serializeBuffersForPostMessage: boolean }): void; $unregisterSerializer(viewType: string): void; } export interface MainThreadCustomEditorsShape extends IDisposable { $registerTextEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, capabilities: CustomTextEditorCapabilities, serializeBuffersForPostMessage: boolean): void; $registerCustomEditorProvider(extension: WebviewExtensionDescription, viewType: string, options: IWebviewPanelOptions, supportsMultipleEditorsPerDocument: boolean, serializeBuffersForPostMessage: boolean): void; $unregisterEditorProvider(viewType: string): void; $onDidEdit(resource: UriComponents, viewType: string, editId: number, label: string | undefined): void; $onContentChange(resource: UriComponents, viewType: string): void; } export interface MainThreadWebviewViewsShape extends IDisposable { $registerWebviewViewProvider(extension: WebviewExtensionDescription, viewType: string, options: { retainContextWhenHidden?: boolean; serializeBuffersForPostMessage: boolean }): void; $unregisterWebviewViewProvider(viewType: string): void; $setWebviewViewTitle(handle: WebviewHandle, value: string | undefined): void; $setWebviewViewDescription(handle: WebviewHandle, value: string | undefined): void; $setWebviewViewBadge(handle: WebviewHandle, badge: IViewBadge | undefined): void; $show(handle: WebviewHandle, preserveFocus: boolean): void; } export interface WebviewPanelViewStateData { [handle: string]: { readonly active: boolean; readonly visible: boolean; readonly position: EditorGroupColumn; }; } export interface ExtHostWebviewsShape { $onMessage(handle: WebviewHandle, jsonSerializedMessage: string, buffers: SerializableObjectWithBuffers): void; $onMissingCsp(handle: WebviewHandle, extensionId: string): void; } export interface ExtHostWebviewPanelsShape { $onDidChangeWebviewPanelViewStates(newState: WebviewPanelViewStateData): void; $onDidDisposeWebviewPanel(handle: WebviewHandle): Promise; $deserializeWebviewPanel( newWebviewHandle: WebviewHandle, viewType: string, initData: { title: string; state: any; webviewOptions: IWebviewContentOptions; panelOptions: IWebviewPanelOptions; active: boolean; }, position: EditorGroupColumn, ): Promise; } export interface ExtHostCustomEditorsShape { $resolveCustomEditor( resource: UriComponents, newWebviewHandle: WebviewHandle, viewType: string, initData: { title: string; contentOptions: IWebviewContentOptions; options: IWebviewPanelOptions; active: boolean; }, position: EditorGroupColumn, cancellation: CancellationToken ): Promise; $createCustomDocument(resource: UriComponents, viewType: string, backupId: string | undefined, untitledDocumentData: VSBuffer | undefined, cancellation: CancellationToken): Promise<{ editable: boolean }>; $disposeCustomDocument(resource: UriComponents, viewType: string): Promise; $undo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise; $redo(resource: UriComponents, viewType: string, editId: number, isDirty: boolean): Promise; $revert(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $disposeEdits(resourceComponents: UriComponents, viewType: string, editIds: number[]): void; $onSave(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $onSaveAs(resource: UriComponents, viewType: string, targetResource: UriComponents, cancellation: CancellationToken): Promise; $backup(resource: UriComponents, viewType: string, cancellation: CancellationToken): Promise; $onMoveCustomEditor(handle: WebviewHandle, newResource: UriComponents, viewType: string): Promise; } export interface ExtHostWebviewViewsShape { $resolveWebviewView(webviewHandle: WebviewHandle, viewType: string, title: string | undefined, state: any, cancellation: CancellationToken): Promise; $onDidChangeWebviewViewVisibility(webviewHandle: WebviewHandle, visible: boolean): void; $disposeWebviewView(webviewHandle: WebviewHandle): void; } export interface MainThreadManagedSocketsShape extends IDisposable { $registerSocketFactory(socketFactoryId: number): Promise; $unregisterSocketFactory(socketFactoryId: number): Promise; $onDidManagedSocketHaveData(socketId: number, data: VSBuffer): void; $onDidManagedSocketClose(socketId: number, error: string | undefined): void; $onDidManagedSocketEnd(socketId: number): void; } export interface ExtHostManagedSocketsShape { $openRemoteSocket(socketFactoryId: number): Promise; $remoteSocketWrite(socketId: number, buffer: VSBuffer): void; $remoteSocketEnd(socketId: number): void; $remoteSocketDrain(socketId: number): Promise; } export enum CellOutputKind { Text = 1, Error = 2, Rich = 3 } export enum NotebookEditorRevealType { Default = 0, InCenter = 1, InCenterIfOutsideViewport = 2, AtTop = 3 } export interface INotebookDocumentShowOptions { position?: EditorGroupColumn; preserveFocus?: boolean; pinned?: boolean; selections?: ICellRange[]; label?: string; } export type INotebookCellStatusBarEntryDto = Dto; export interface INotebookCellStatusBarListDto { items: INotebookCellStatusBarEntryDto[]; cacheId: number; } export interface MainThreadNotebookShape extends IDisposable { $registerNotebookSerializer(handle: number, extension: notebookCommon.NotebookExtensionDescription, viewType: string, options: notebookCommon.TransientOptions, registration: notebookCommon.INotebookContributionData | undefined): void; $unregisterNotebookSerializer(handle: number): void; $registerNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined, viewType: string): Promise; $unregisterNotebookCellStatusBarItemProvider(handle: number, eventHandle: number | undefined): Promise; $emitCellStatusBarEvent(eventHandle: number): void; } export interface MainThreadNotebookEditorsShape extends IDisposable { $tryShowNotebookDocument(uriComponents: UriComponents, viewType: string, options: INotebookDocumentShowOptions): Promise; $tryRevealRange(id: string, range: ICellRange, revealType: NotebookEditorRevealType): Promise; $trySetSelections(id: string, range: ICellRange[]): void; } export interface MainThreadNotebookDocumentsShape extends IDisposable { $tryCreateNotebook(options: { viewType: string; content?: NotebookDataDto }): Promise; $tryOpenNotebook(uriComponents: UriComponents): Promise; $trySaveNotebook(uri: UriComponents): Promise; } export interface INotebookKernelDto2 { id: string; notebookType: string; extensionId: ExtensionIdentifier; extensionLocation: UriComponents; label: string; detail?: string; description?: string; supportedLanguages?: string[]; supportsInterrupt?: boolean; supportsExecutionOrder?: boolean; preloads?: { uri: UriComponents; provides: readonly string[] }[]; hasVariableProvider?: boolean; } export interface INotebookProxyKernelDto { id: string; notebookType: string; extensionId: ExtensionIdentifier; extensionLocation: UriComponents; label: string; detail?: string; description?: string; kind?: string; } export interface ICellExecuteOutputEditDto { editType: CellExecutionUpdateType.Output; cellHandle: number; append?: boolean; outputs: NotebookOutputDto[]; } export interface ICellExecuteOutputItemEditDto { editType: CellExecutionUpdateType.OutputItems; append?: boolean; outputId: string; items: NotebookOutputItemDto[]; } export interface ICellExecutionStateUpdateDto extends ICellExecutionStateUpdate { } export interface ICellExecutionCompleteDto extends ICellExecutionComplete { } export type ICellExecuteUpdateDto = ICellExecuteOutputEditDto | ICellExecuteOutputItemEditDto | ICellExecutionStateUpdateDto; export interface VariablesResult { id: number; name: string; value: string; type?: string; language?: string; expression?: string; hasNamedChildren: boolean; indexedChildrenCount: number; extensionId: string; } export interface MainThreadNotebookKernelsShape extends IDisposable { $postMessage(handle: number, editorId: string | undefined, message: any): Promise; $addKernel(handle: number, data: INotebookKernelDto2): Promise; $updateKernel(handle: number, data: Partial): void; $removeKernel(handle: number): void; $updateNotebookPriority(handle: number, uri: UriComponents, value: number | undefined): void; $createExecution(handle: number, controllerId: string, uri: UriComponents, cellHandle: number): void; $updateExecution(handle: number, data: SerializableObjectWithBuffers): void; $completeExecution(handle: number, data: SerializableObjectWithBuffers): void; $createNotebookExecution(handle: number, controllerId: string, uri: UriComponents): void; $beginNotebookExecution(handle: number,): void; $completeNotebookExecution(handle: number): void; $addKernelDetectionTask(handle: number, notebookType: string): Promise; $removeKernelDetectionTask(handle: number): void; $addKernelSourceActionProvider(handle: number, eventHandle: number, notebookType: string): Promise; $removeKernelSourceActionProvider(handle: number, eventHandle: number): void; $emitNotebookKernelSourceActionsChangeEvent(eventHandle: number): void; $receiveVariable(requestId: string, variable: VariablesResult): void; $variablesUpdated(notebookUri: UriComponents): void; } export interface MainThreadNotebookRenderersShape extends IDisposable { $postMessage(editorId: string | undefined, rendererId: string, message: unknown): Promise; } export interface MainThreadInteractiveShape extends IDisposable { } export interface MainThreadSpeechShape extends IDisposable { $registerProvider(handle: number, identifier: string, metadata: ISpeechProviderMetadata): void; $unregisterProvider(handle: number): void; $emitSpeechToTextEvent(session: number, event: ISpeechToTextEvent): void; $emitTextToSpeechEvent(session: number, event: ITextToSpeechEvent): void; $emitKeywordRecognitionEvent(session: number, event: IKeywordRecognitionEvent): void; } export interface ExtHostSpeechShape { $createSpeechToTextSession(handle: number, session: number, language?: string): Promise; $cancelSpeechToTextSession(session: number): Promise; $createTextToSpeechSession(handle: number, session: number, language?: string): Promise; $synthesizeSpeech(session: number, text: string): Promise; $cancelTextToSpeechSession(session: number): Promise; $createKeywordRecognitionSession(handle: number, session: number): Promise; $cancelKeywordRecognitionSession(session: number): Promise; } export interface MainThreadLanguageModelsShape extends IDisposable { $registerLanguageModelProvider(vendor: string): void; $onLMProviderChange(vendor: string): void; $unregisterProvider(vendor: string): void; $tryStartChatRequest(extension: ExtensionIdentifier, modelIdentifier: string, requestId: number, messages: SerializableObjectWithBuffers, options: {}, token: CancellationToken): Promise; $reportResponsePart(requestId: number, chunk: SerializableObjectWithBuffers): Promise; $reportResponseDone(requestId: number, error: SerializedError | undefined): Promise; $selectChatModels(selector: ILanguageModelChatSelector): Promise; $countTokens(modelId: string, value: string | IChatMessage, token: CancellationToken): Promise; $fileIsIgnored(uri: UriComponents, token: CancellationToken): Promise; $registerFileIgnoreProvider(handle: number): void; $unregisterFileIgnoreProvider(handle: number): void; } export interface ExtHostLanguageModelsShape { $provideLanguageModelChatInfo(vendor: string, options: { silent: boolean }, token: CancellationToken): Promise; $updateModelAccesslist(data: { from: ExtensionIdentifier; to: ExtensionIdentifier; enabled: boolean }[]): void; $startChatRequest(modelId: string, requestId: number, from: ExtensionIdentifier, messages: SerializableObjectWithBuffers, options: { [name: string]: any }, token: CancellationToken): Promise; $acceptResponsePart(requestId: number, chunk: SerializableObjectWithBuffers): Promise; $acceptResponseDone(requestId: number, error: SerializedError | undefined): Promise; $provideTokenLength(modelId: string, value: string | IChatMessage, token: CancellationToken): Promise; $isFileIgnored(handle: number, uri: UriComponents, token: CancellationToken): Promise; } export interface ExtHostChatContextShape { $provideChatContext(handle: number, token: CancellationToken): Promise; $provideChatContextForResource(handle: number, options: { resource: UriComponents; withValue: boolean }, token: CancellationToken): Promise; $resolveChatContext(handle: number, context: IChatContextItem, token: CancellationToken): Promise; } export interface MainThreadChatContextShape extends IDisposable { $registerChatContextProvider(handle: number, id: string, selector: IDocumentFilterDto[] | undefined, options: {}, support: IChatContextSupport): void; $unregisterChatContextProvider(handle: number): void; $updateWorkspaceContextItems(handle: number, items: IChatContextItem[]): void; } export interface MainThreadEmbeddingsShape extends IDisposable { $registerEmbeddingProvider(handle: number, identifier: string): void; $unregisterEmbeddingProvider(handle: number): void; $computeEmbeddings(embeddingsModel: string, input: string[], token: CancellationToken): Promise<({ values: number[] }[])>; } export interface ExtHostEmbeddingsShape { $provideEmbeddings(handle: number, input: string[], token: CancellationToken): Promise<{ values: number[] }[]>; $acceptEmbeddingModels(models: string[]): void; } export interface IExtensionChatAgentMetadata extends Dto { hasFollowups?: boolean; } export interface IDynamicChatAgentProps { name: string; publisherName: string; description?: string; fullName?: string; } export interface IChatAgentProgressShape { $handleProgressChunk(requestId: string, chunks: (IChatProgressDto | [IChatProgressDto, number])[]): Promise; $handleAnchorResolve(requestId: string, handle: string, anchor: Dto): void; } export interface MainThreadChatAgentsShape2 extends IChatAgentProgressShape, IDisposable { $registerAgent(handle: number, extension: ExtensionIdentifier, id: string, metadata: IExtensionChatAgentMetadata, dynamicProps: IDynamicChatAgentProps | undefined): void; $registerChatParticipantDetectionProvider(handle: number): void; $unregisterChatParticipantDetectionProvider(handle: number): void; $registerRelatedFilesProvider(handle: number, metadata: IChatRelatedFilesProviderMetadata): void; $unregisterRelatedFilesProvider(handle: number): void; $registerCustomAgentsProvider(handle: number, extension: ExtensionIdentifier): void; $unregisterCustomAgentsProvider(handle: number): void; $onDidChangeCustomAgents(handle: number): void; $registerAgentCompletionsProvider(handle: number, id: string, triggerCharacters: string[]): void; $unregisterAgentCompletionsProvider(handle: number, id: string): void; $updateAgent(handle: number, metadataUpdate: IExtensionChatAgentMetadata): void; $unregisterAgent(handle: number): void; $transferActiveChatSession(toWorkspace: UriComponents): void; } export interface ICodeMapperTextEdit { uri: URI; edits: languages.TextEdit[]; } export interface ICodeMapperNotebookEditDto { uri: URI; edits: ICellEditOperationDto[]; } export type ICodeMapperProgressDto = Dto | Dto; export interface MainThreadCodeMapperShape extends IDisposable { $registerCodeMapperProvider(handle: number, displayName: string): void; $unregisterCodeMapperProvider(handle: number): void; $handleProgress(requestId: string, data: ICodeMapperProgressDto): Promise; } export interface IChatAgentCompletionItem { id: string; fullName?: string; icon?: string; insertText?: string; label: string | languages.CompletionItemLabel; value: IChatRequestVariableValueDto; detail?: string; documentation?: string | IMarkdownString; command?: ICommandDto; } export type IChatContentProgressDto = | Dto> | IChatMultiDiffDataSerialized | IChatTaskDto; export type IChatAgentHistoryEntryDto = { request: IChatAgentRequest; response: ReadonlyArray; result: IChatAgentResult; }; export interface IChatSessionContextDto { readonly chatSessionResource: UriComponents; readonly isUntitled: boolean; } export interface ExtHostChatAgentsShape2 { $invokeAgent(handle: number, request: Dto, context: { history: IChatAgentHistoryEntryDto[]; chatSessionContext?: IChatSessionContextDto }, token: CancellationToken): Promise; $provideFollowups(request: Dto, handle: number, result: IChatAgentResult, context: { history: IChatAgentHistoryEntryDto[] }, token: CancellationToken): Promise; $acceptFeedback(handle: number, result: IChatAgentResult, voteAction: IChatVoteAction): void; $acceptAction(handle: number, result: IChatAgentResult, action: IChatUserActionEvent): void; $invokeCompletionProvider(handle: number, query: string, token: CancellationToken): Promise; $provideChatTitle(handle: number, context: IChatAgentHistoryEntryDto[], token: CancellationToken): Promise; $provideChatSummary(handle: number, context: IChatAgentHistoryEntryDto[], token: CancellationToken): Promise; $releaseSession(sessionResource: UriComponents): void; $detectChatParticipant(handle: number, request: Dto, context: { history: IChatAgentHistoryEntryDto[] }, options: { participants: IChatParticipantMetadata[]; location: ChatAgentLocation }, token: CancellationToken): Promise; $provideRelatedFiles(handle: number, request: Dto, token: CancellationToken): Promise[] | undefined>; $provideCustomAgents(handle: number, options: ICustomAgentQueryOptions, token: CancellationToken): Promise[] | undefined>; $setRequestTools(requestId: string, tools: UserSelectedTools): void; } export interface IChatParticipantMetadata { participant: string; command?: string; disambiguation: { category: string; description: string; examples: string[] }[]; } export interface IChatParticipantDetectionResult { participant: string; command?: string; } export interface IToolDataDto { id: string; toolReferenceName?: string; legacyToolReferenceFullNames?: readonly string[]; tags?: readonly string[]; displayName: string; userDescription?: string; modelDescription: string; source: Dto; inputSchema?: IJSONSchema; } export interface MainThreadLanguageModelToolsShape extends IDisposable { $getTools(): Promise[]>; $acceptToolProgress(callId: string, progress: IToolProgressStep): void; $invokeTool(dto: Dto, token?: CancellationToken): Promise | SerializableObjectWithBuffers>>; $countTokensForInvocation(callId: string, input: string, token: CancellationToken): Promise; $registerTool(id: string): void; $unregisterTool(name: string): void; } export type IChatRequestVariableValueDto = Dto; export interface ExtHostLanguageModelToolsShape { $onDidChangeTools(tools: IToolDataDto[]): void; $invokeTool(dto: Dto, token: CancellationToken): Promise | SerializableObjectWithBuffers>>; $countTokensForInvocation(callId: string, input: string, token: CancellationToken): Promise; $prepareToolInvocation(toolId: string, context: IToolInvocationPreparationContext, token: CancellationToken): Promise; } export interface MainThreadUrlsShape extends IDisposable { $registerUriHandler(handle: number, extensionId: ExtensionIdentifier, extensionDisplayName: string): Promise; $unregisterUriHandler(handle: number): Promise; $createAppUri(uri: UriComponents): Promise; } export interface IChatResponseProgressFileTreeData { label: string; uri: URI; children?: IChatResponseProgressFileTreeData[]; } export type IDocumentContextDto = { uri: UriComponents; version: number; ranges: IRange[]; }; export type IChatProgressDto = | Dto> | IChatTaskDto | IChatNotebookEditDto | IChatExternalEditsDto | IChatResponseClearToPreviousToolInvocationDto; export interface ExtHostUrlsShape { $handleExternalUri(handle: number, uri: UriComponents): Promise; } export interface MainThreadUriOpenersShape extends IDisposable { $registerUriOpener(id: string, schemes: readonly string[], extensionId: ExtensionIdentifier, label: string): Promise; $unregisterUriOpener(id: string): Promise; } export interface ExtHostUriOpenersShape { $canOpenUri(id: string, uri: UriComponents, token: CancellationToken): Promise; $openUri(id: string, context: { resolvedUri: UriComponents; sourceUri: UriComponents }, token: CancellationToken): Promise; } export interface MainThreadChatOutputRendererShape extends IDisposable { $registerChatOutputRenderer(viewType: string, extensionId: ExtensionIdentifier, extensionLocation: UriComponents): void; $unregisterChatOutputRenderer(viewType: string): void; } export interface ExtHostChatOutputRendererShape { $renderChatOutput(viewType: string, mime: string, valueData: VSBuffer, webviewHandle: string, token: CancellationToken): Promise; } export interface MainThreadProfileContentHandlersShape { $registerProfileContentHandler(id: string, name: string, description: string | undefined, extensionId: string): Promise; $unregisterProfileContentHandler(id: string): Promise; } export interface ExtHostProfileContentHandlersShape { $saveProfile(id: string, name: string, content: string, token: CancellationToken): Promise | null>; $readProfile(id: string, idOrUri: string | UriComponents, token: CancellationToken): Promise; } export interface ITextSearchComplete { limitHit?: boolean; message?: TextSearchCompleteMessage | TextSearchCompleteMessage[]; } export interface MainThreadWorkspaceShape extends IDisposable { $startFileSearch(includeFolder: UriComponents | null, options: IFileQueryBuilderOptions, token: CancellationToken): Promise; $startTextSearch(query: search.IPatternInfo, folder: UriComponents | null, options: ITextQueryBuilderOptions, requestId: number, token: CancellationToken): Promise; $checkExists(folders: readonly UriComponents[], includes: string[], token: CancellationToken): Promise; $save(uri: UriComponents, options: { saveAs: boolean }): Promise; $saveAll(includeUntitled?: boolean): Promise; $updateWorkspaceFolders(extensionName: string, index: number, deleteCount: number, workspaceFoldersToAdd: { uri: UriComponents; name?: string }[]): Promise; $resolveProxy(url: string): Promise; $lookupAuthorization(authInfo: AuthInfo): Promise; $lookupKerberosAuthorization(url: string): Promise; $loadCertificates(): Promise; $requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise; $registerEditSessionIdentityProvider(handle: number, scheme: string): void; $unregisterEditSessionIdentityProvider(handle: number): void; $registerCanonicalUriProvider(handle: number, scheme: string): void; $unregisterCanonicalUriProvider(handle: number): void; $resolveDecoding(resource: UriComponents | undefined, options?: { encoding?: string }): Promise<{ preferredEncoding: string; guessEncoding: boolean; candidateGuessEncodings: string[] }>; $validateDetectedEncoding(resource: UriComponents | undefined, detectedEncoding: string, options?: { encoding?: string }): Promise; $resolveEncoding(resource: UriComponents | undefined, options?: { encoding?: string }): Promise<{ encoding: string; addBOM: boolean }>; } export interface IFileChangeDto { resource: UriComponents; type: files.FileChangeType; } export interface MainThreadFileSystemShape extends IDisposable { $registerFileSystemProvider(handle: number, scheme: string, capabilities: files.FileSystemProviderCapabilities, readonlyMessage?: IMarkdownString): Promise; $unregisterProvider(handle: number): void; $onFileSystemChange(handle: number, resource: IFileChangeDto[]): void; $stat(resource: UriComponents): Promise; $readdir(resource: UriComponents): Promise<[string, files.FileType][]>; $readFile(resource: UriComponents): Promise; $writeFile(resource: UriComponents, content: VSBuffer): Promise; $rename(resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $copy(resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $mkdir(resource: UriComponents): Promise; $delete(resource: UriComponents, opts: files.IFileDeleteOptions): Promise; $ensureActivation(scheme: string): Promise; } export interface MainThreadFileSystemEventServiceShape extends IDisposable { $watch(extensionId: string, session: number, resource: UriComponents, opts: files.IWatchOptions, correlate: boolean): void; $unwatch(session: number): void; } export interface MainThreadLabelServiceShape extends IDisposable { $registerResourceLabelFormatter(handle: number, formatter: ResourceLabelFormatter): void; $unregisterResourceLabelFormatter(handle: number): void; } export interface MainThreadSearchShape extends IDisposable { $registerFileSearchProvider(handle: number, scheme: string): void; $registerAITextSearchProvider(handle: number, scheme: string): void; $registerTextSearchProvider(handle: number, scheme: string): void; $unregisterProvider(handle: number): void; $handleFileMatch(handle: number, session: number, data: UriComponents[]): void; $handleTextMatch(handle: number, session: number, data: search.IRawFileMatch2[]): void; $handleKeywordResult(handle: number, session: number, data: AISearchKeyword): void; $handleTelemetry(eventName: string, data: any): void; } export interface MainThreadShareShape extends IDisposable { $registerShareProvider(handle: number, selector: IDocumentFilterDto[], id: string, label: string, priority: number): void; $unregisterShareProvider(handle: number): void; } export interface MainThreadTaskShape extends IDisposable { $createTaskId(task: tasks.ITaskDTO): Promise; $registerTaskProvider(handle: number, type: string): Promise; $unregisterTaskProvider(handle: number): Promise; $fetchTasks(filter?: tasks.ITaskFilterDTO): Promise; $getTaskExecution(value: tasks.ITaskHandleDTO | tasks.ITaskDTO): Promise; $executeTask(task: tasks.ITaskHandleDTO | tasks.ITaskDTO): Promise; $terminateTask(id: string): Promise; $registerTaskSystem(scheme: string, info: tasks.ITaskSystemInfoDTO): void; $customExecutionComplete(id: string, result?: number): Promise; $registerSupportedExecutions(custom?: boolean, shell?: boolean, process?: boolean): Promise; } export interface MainThreadExtensionServiceShape extends IDisposable { $getExtension(extensionId: string): Promise | undefined>; $activateExtension(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise; $onWillActivateExtension(extensionId: ExtensionIdentifier): Promise; $onDidActivateExtension(extensionId: ExtensionIdentifier, codeLoadingTime: number, activateCallTime: number, activateResolvedTime: number, activationReason: ExtensionActivationReason): void; $onExtensionActivationError(extensionId: ExtensionIdentifier, error: SerializedError, missingExtensionDependency: MissingExtensionDependency | null): Promise; $onExtensionRuntimeError(extensionId: ExtensionIdentifier, error: SerializedError): void; $setPerformanceMarks(marks: performance.PerformanceMark[]): Promise; $asBrowserUri(uri: UriComponents): Promise; } export interface SCMProviderFeatures { hasArtifactProvider?: boolean; hasHistoryProvider?: boolean; hasQuickDiffProvider?: boolean; quickDiffLabel?: string; hasSecondaryQuickDiffProvider?: boolean; secondaryQuickDiffLabel?: string; count?: number; commitTemplate?: string; acceptInputCommand?: languages.Command; actionButton?: SCMActionButtonDto | null; statusBarCommands?: ICommandDto[]; contextValue?: string; } export interface SCMActionButtonDto { command: ICommandDto & { shortTitle?: string }; secondaryCommands?: ICommandDto[][]; enabled: boolean; } export interface SCMGroupFeatures { hideWhenEmpty?: boolean; contextValue?: string; } export type SCMRawResource = [ number /*handle*/, UriComponents /*resourceUri*/, [UriComponents | ThemeIcon | undefined, UriComponents | ThemeIcon | undefined] /*icons: light, dark*/, string /*tooltip*/, boolean /*strike through*/, boolean /*faded*/, string /*context value*/, ICommandDto | undefined /*command*/, UriComponents | undefined /* multiFileDiffEditorOriginalUri */, UriComponents | undefined /* multiFileDiffEditorModifiedUri */, ]; export type SCMRawResourceSplice = [ number /* start */, number /* delete count */, SCMRawResource[] ]; export type SCMRawResourceSplices = [ number, /*handle*/ SCMRawResourceSplice[] ]; export interface SCMHistoryItemRefDto { readonly id: string; readonly name: string; readonly revision?: string; readonly category?: string; readonly description?: string; readonly icon?: IconPathDto; } export interface SCMHistoryItemRefsChangeEventDto { readonly added: readonly SCMHistoryItemRefDto[]; readonly modified: readonly SCMHistoryItemRefDto[]; readonly removed: readonly SCMHistoryItemRefDto[]; readonly silent: boolean; } export interface SCMHistoryItemDto { readonly id: string; readonly parentIds: string[]; readonly subject: string; readonly message: string; readonly displayId?: string; readonly author?: string; readonly authorIcon?: IconPathDto; readonly authorEmail?: string; readonly timestamp?: number; readonly statistics?: { readonly files: number; readonly insertions: number; readonly deletions: number; }; readonly references?: SCMHistoryItemRefDto[]; readonly tooltip?: IMarkdownString | Array | undefined; } export interface SCMHistoryItemChangeDto { readonly uri: UriComponents; readonly originalUri: UriComponents | undefined; readonly modifiedUri: UriComponents | undefined; } export interface SCMArtifactGroupDto { readonly id: string; readonly name: string; readonly icon?: UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon; readonly supportsFolders?: boolean; } export interface SCMArtifactDto { readonly id: string; readonly name: string; readonly description?: string; readonly icon?: UriComponents | { light: UriComponents; dark: UriComponents } | ThemeIcon; readonly timestamp?: number; readonly command?: ICommandDto; } export interface MainThreadSCMShape extends IDisposable { $registerSourceControl(handle: number, parentHandle: number | undefined, id: string, label: string, rootUri: UriComponents | undefined, iconPath: IconPathDto | undefined, inputBoxDocumentUri: UriComponents): Promise; $updateSourceControl(handle: number, features: SCMProviderFeatures): Promise; $unregisterSourceControl(handle: number): Promise; $registerGroups(sourceControlHandle: number, groups: [number /*handle*/, string /*id*/, string /*label*/, SCMGroupFeatures, /* multiDiffEditorEnableViewChanges */ boolean][], splices: SCMRawResourceSplices[]): Promise; $updateGroup(sourceControlHandle: number, handle: number, features: SCMGroupFeatures): Promise; $updateGroupLabel(sourceControlHandle: number, handle: number, label: string): Promise; $unregisterGroup(sourceControlHandle: number, handle: number): Promise; $spliceResourceStates(sourceControlHandle: number, splices: SCMRawResourceSplices[]): Promise; $setInputBoxValue(sourceControlHandle: number, value: string): Promise; $setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): Promise; $setInputBoxEnablement(sourceControlHandle: number, enabled: boolean): Promise; $setInputBoxVisibility(sourceControlHandle: number, visible: boolean): Promise; $showValidationMessage(sourceControlHandle: number, message: string | IMarkdownString, type: InputValidationType): Promise; $setValidationProviderIsEnabled(sourceControlHandle: number, enabled: boolean): Promise; $onDidChangeHistoryProviderCurrentHistoryItemRefs(sourceControlHandle: number, historyItemRef?: SCMHistoryItemRefDto, historyItemRemoteRef?: SCMHistoryItemRefDto, historyItemBaseRef?: SCMHistoryItemRefDto): Promise; $onDidChangeHistoryProviderHistoryItemRefs(sourceControlHandle: number, historyItemRefs: SCMHistoryItemRefsChangeEventDto): Promise; $onDidChangeArtifacts(sourceControlHandle: number, groups: string[]): Promise; } export interface MainThreadQuickDiffShape extends IDisposable { $registerQuickDiffProvider(handle: number, selector: IDocumentFilterDto[], id: string, label: string, rootUri: UriComponents | undefined): Promise; $unregisterQuickDiffProvider(handle: number): Promise; } export type DebugSessionUUID = string; export interface IDebugConfiguration { type: string; name: string; request: string; [key: string]: any; } export interface IStartDebuggingOptions { parentSessionID?: DebugSessionUUID; lifecycleManagedByParent?: boolean; repl?: IDebugSessionReplMode; noDebug?: boolean; compact?: boolean; suppressDebugToolbar?: boolean; suppressDebugStatusbar?: boolean; suppressDebugView?: boolean; suppressSaveBeforeStart?: boolean; testRun?: IDebugTestRunReference; } export interface MainThreadDebugServiceShape extends IDisposable { $registerDebugTypes(debugTypes: string[]): void; $sessionCached(sessionID: string): void; $acceptDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void; $acceptDAError(handle: number, name: string, message: string, stack: string | undefined): void; $acceptDAExit(handle: number, code: number | undefined, signal: string | undefined): void; $registerDebugConfigurationProvider(type: string, triggerKind: DebugConfigurationProviderTriggerKind, hasProvideMethod: boolean, hasResolveMethod: boolean, hasResolve2Method: boolean, handle: number): Promise; $registerDebugAdapterDescriptorFactory(type: string, handle: number): Promise; $unregisterDebugConfigurationProvider(handle: number): void; $unregisterDebugAdapterDescriptorFactory(handle: number): void; $startDebugging(folder: UriComponents | undefined, nameOrConfig: string | IDebugConfiguration, options: IStartDebuggingOptions): Promise; $stopDebugging(sessionId: DebugSessionUUID | undefined): Promise; $setDebugSessionName(id: DebugSessionUUID, name: string): void; $customDebugAdapterRequest(id: DebugSessionUUID, command: string, args: any): Promise; $getDebugProtocolBreakpoint(id: DebugSessionUUID, breakpoinId: string): Promise; $appendDebugConsole(value: string): void; $registerBreakpoints(breakpoints: Array): Promise; $unregisterBreakpoints(breakpointIds: string[], functionBreakpointIds: string[], dataBreakpointIds: string[]): Promise; $registerDebugVisualizer(extensionId: string, id: string): void; $unregisterDebugVisualizer(extensionId: string, id: string): void; $registerDebugVisualizerTree(treeId: string, canEdit: boolean): void; $unregisterDebugVisualizerTree(treeId: string): void; } export interface IOpenUriOptions { readonly allowTunneling?: boolean; readonly allowContributedOpeners?: boolean | string; } export interface MainThreadWindowShape extends IDisposable { $getInitialState(): Promise<{ isFocused: boolean; isActive: boolean }>; $openUri(uri: UriComponents, uriString: string | undefined, options: IOpenUriOptions): Promise; $asExternalUri(uri: UriComponents, options: IOpenUriOptions): Promise; } export enum CandidatePortSource { None = 0, Process = 1, Output = 2, Hybrid = 3 } export interface PortAttributesSelector { portRange?: [number, number] | number; commandPattern?: RegExp; } export interface MainThreadTunnelServiceShape extends IDisposable { $openTunnel(tunnelOptions: TunnelOptions, source: string | undefined): Promise; $closeTunnel(remote: { host: string; port: number }): Promise; $getTunnels(): Promise; $setTunnelProvider(features: TunnelProviderFeatures | undefined, enablePortsView: boolean): Promise; $hasTunnelProvider(): Promise; $setRemoteTunnelService(processId: number): Promise; $setCandidateFilter(): Promise; $onFoundNewCandidates(candidates: CandidatePort[]): Promise; $setCandidatePortSource(source: CandidatePortSource): Promise; $registerPortsAttributesProvider(selector: PortAttributesSelector, providerHandle: number): Promise; $unregisterPortsAttributesProvider(providerHandle: number): Promise; } export interface MainThreadTimelineShape extends IDisposable { $registerTimelineProvider(provider: TimelineProviderDescriptor): void; $unregisterTimelineProvider(source: string): void; $emitTimelineChangeEvent(e: TimelineChangeEvent | undefined): void; } export interface HoverWithId extends languages.Hover { /** * Id of the hover */ id: number; } // -- extension host export interface ICommandMetadataDto { /** * NOTE: Please use an ILocalizedString. string is in the type for backcompat for now. * A short summary of what the command does. This will be used in: * - API commands * - when showing keybindings that have no other UX * - when searching for commands in the Command Palette */ readonly description: ILocalizedString | string; readonly args?: ReadonlyArray<{ readonly name: string; readonly isOptional?: boolean; readonly description?: string; }>; readonly returns?: string; } export interface ICodeMapperRequestDto extends Dto { requestId: string; } export interface ExtHostCodeMapperShape { $mapCode(handle: number, request: ICodeMapperRequestDto, token: CancellationToken): Promise; } export interface ExtHostCommandsShape { $executeContributedCommand(id: string, ...args: any[]): Promise; $getContributedCommandMetadata(): Promise<{ [id: string]: string | ICommandMetadataDto }>; } export interface ExtHostConfigurationShape { $initializeConfiguration(data: IConfigurationInitData): void; $acceptConfigurationChanged(data: IConfigurationInitData, change: IConfigurationChange): void; } export interface ExtHostDiagnosticsShape { $acceptMarkersChange(data: [UriComponents, IMarkerData[]][]): void; } export interface ExtHostDocumentContentProvidersShape { $provideTextDocumentContent(handle: number, uri: UriComponents): Promise; } export interface IModelAddedData { uri: UriComponents; versionId: number; lines: string[]; EOL: string; languageId: string; isDirty: boolean; encoding: string; } export interface ExtHostDocumentsShape { $acceptModelLanguageChanged(strURL: UriComponents, newLanguageId: string): void; $acceptModelSaved(strURL: UriComponents): void; $acceptDirtyStateChanged(strURL: UriComponents, isDirty: boolean): void; $acceptEncodingChanged(strURL: UriComponents, encoding: string): void; $acceptModelChanged(strURL: UriComponents, e: ISerializedModelContentChangedEvent, isDirty: boolean): void; } export interface ExtHostDocumentSaveParticipantShape { $participateInSave(resource: UriComponents, reason: SaveReason): Promise; } export interface ITextEditorAddData { id: string; documentUri: UriComponents; options: IResolvedTextEditorConfiguration; selections: ISelection[]; visibleRanges: IRange[]; editorPosition: EditorGroupColumn | undefined; } export interface ITextEditorPositionData { [id: string]: EditorGroupColumn; } export type ITextEditorChange = [ originalStartLineNumber: number, originalEndLineNumberExclusive: number, modifiedStartLineNumber: number, modifiedEndLineNumberExclusive: number ]; export interface ITextEditorDiffInformation { readonly documentVersion: number; readonly original: UriComponents | undefined; readonly modified: UriComponents; readonly changes: readonly ITextEditorChange[]; } export interface IEditorPropertiesChangeData { options: IResolvedTextEditorConfiguration | null; selections: ISelectionChangeEvent | null; visibleRanges: IRange[] | null; } export interface ISelectionChangeEvent { selections: Selection[]; source?: string; } export interface ExtHostEditorsShape { $acceptEditorPropertiesChanged(id: string, props: IEditorPropertiesChangeData): void; $acceptEditorPositionData(data: ITextEditorPositionData): void; $acceptEditorDiffInformation(id: string, diffInformation: ITextEditorDiffInformation[] | undefined): void; } export interface IDocumentsAndEditorsDelta { removedDocuments?: UriComponents[]; addedDocuments?: IModelAddedData[]; removedEditors?: string[]; addedEditors?: ITextEditorAddData[]; newActiveEditor?: string | null; } export interface ExtHostDocumentsAndEditorsShape { $acceptDocumentsAndEditorsDelta(delta: IDocumentsAndEditorsDelta): void; } export interface IDataTransferFileDTO { readonly id: string; readonly name: string; readonly uri?: UriComponents; } export interface DataTransferItemDTO { id: string; readonly asString: string; readonly fileData: IDataTransferFileDTO | undefined; readonly uriListData?: ReadonlyArray; } export interface DataTransferDTO { items: Array; } export interface CheckboxUpdate { treeItemHandle: string; newState: boolean; } export interface ExtHostTreeViewsShape { /** * To reduce what is sent on the wire: * w * x * y * z * * for [x,y] returns * [[1,z]], where the inner array is [original index, ...children] */ $getChildren(treeViewId: string, treeItemHandles?: string[]): Promise<(number | ITreeItem)[][] | undefined>; $handleDrop(destinationViewId: string, requestId: number, treeDataTransfer: DataTransferDTO, targetHandle: string | undefined, token: CancellationToken, operationUuid?: string, sourceViewId?: string, sourceTreeItemHandles?: string[]): Promise; $handleDrag(sourceViewId: string, sourceTreeItemHandles: string[], operationUuid: string, token: CancellationToken): Promise; $setExpanded(treeViewId: string, treeItemHandle: string, expanded: boolean): void; $setSelectionAndFocus(treeViewId: string, selectionHandles: string[], focusHandle: string): void; $setVisible(treeViewId: string, visible: boolean): void; $changeCheckboxState(treeViewId: string, checkboxUpdates: CheckboxUpdate[]): void; $hasResolve(treeViewId: string): Promise; $resolve(treeViewId: string, treeItemHandle: string, token: CancellationToken): Promise; } export interface ExtHostWorkspaceShape { $initializeWorkspace(workspace: IWorkspaceData | null, trusted: boolean): void; $acceptWorkspaceData(workspace: IWorkspaceData | null): void; $handleTextSearchResult(result: search.IRawFileMatch2, requestId: number): void; $onDidGrantWorkspaceTrust(): void; $getEditSessionIdentifier(folder: UriComponents, token: CancellationToken): Promise; $provideEditSessionIdentityMatch(folder: UriComponents, identity1: string, identity2: string, token: CancellationToken): Promise; $onWillCreateEditSessionIdentity(folder: UriComponents, token: CancellationToken, timeout: number): Promise; $provideCanonicalUri(uri: UriComponents, targetScheme: string, token: CancellationToken): Promise; } export interface ExtHostFileSystemInfoShape { $acceptProviderInfos(uri: UriComponents, capabilities: number | null): void; } export interface ExtHostFileSystemShape { $stat(handle: number, resource: UriComponents): Promise; $readdir(handle: number, resource: UriComponents): Promise<[string, files.FileType][]>; $readFile(handle: number, resource: UriComponents): Promise; $writeFile(handle: number, resource: UriComponents, content: VSBuffer, opts: files.IFileWriteOptions): Promise; $rename(handle: number, resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $copy(handle: number, resource: UriComponents, target: UriComponents, opts: files.IFileOverwriteOptions): Promise; $mkdir(handle: number, resource: UriComponents): Promise; $delete(handle: number, resource: UriComponents, opts: files.IFileDeleteOptions): Promise; $watch(handle: number, session: number, resource: UriComponents, opts: files.IWatchOptions): void; $unwatch(handle: number, session: number): void; $open(handle: number, resource: UriComponents, opts: files.IFileOpenOptions): Promise; $close(handle: number, fd: number): Promise; $read(handle: number, fd: number, pos: number, length: number): Promise; $write(handle: number, fd: number, pos: number, data: VSBuffer): Promise; } export interface ExtHostLabelServiceShape { $registerResourceLabelFormatter(formatter: ResourceLabelFormatter): IDisposable; } export interface ExtHostAuthenticationShape { $getSessions(id: string, scopes: string[] | undefined, options: IAuthenticationGetSessionsOptions): Promise>; $createSession(id: string, scopes: string[], options: IAuthenticationCreateSessionOptions): Promise; $getSessionsFromChallenges(id: string, constraint: IAuthenticationConstraint, options: IAuthenticationGetSessionsOptions): Promise>; $createSessionFromChallenges(id: string, constraint: IAuthenticationConstraint, options: IAuthenticationCreateSessionOptions): Promise; $removeSession(id: string, sessionId: string): Promise; $onDidChangeAuthenticationSessions(id: string, label: string, extensionIdFilter?: string[]): Promise; $onDidUnregisterAuthenticationProvider(id: string): Promise; $registerDynamicAuthProvider(authorizationServer: UriComponents, serverMetadata: IAuthorizationServerMetadata, resource?: IAuthorizationProtectedResourceMetadata, clientId?: string, clientSecret?: string, initialTokens?: (IAuthorizationTokenResponse & { created_at: number })[]): Promise; $onDidChangeDynamicAuthProviderTokens(authProviderId: string, clientId: string, tokens?: (IAuthorizationTokenResponse & { created_at: number })[]): Promise; } export interface ExtHostAiRelatedInformationShape { $provideAiRelatedInformation(handle: number, query: string, token: CancellationToken): Promise; } export interface MainThreadAiRelatedInformationShape { $getAiRelatedInformation(query: string, types: RelatedInformationType[]): Promise; $registerAiRelatedInformationProvider(handle: number, type: RelatedInformationType): void; $unregisterAiRelatedInformationProvider(handle: number): void; } export interface ExtHostAiSettingsSearchShape { $startSearch(handle: number, query: string, option: AiSettingsSearchProviderOptions, token: CancellationToken): Promise; } export interface MainThreadAiSettingsSearchShape { $registerAiSettingsSearchProvider(handle: number): void; $unregisterAiSettingsSearchProvider(handle: number): void; $handleSearchResult(handle: number, result: AiSettingsSearchResult): void; } export interface ExtHostAiEmbeddingVectorShape { $provideAiEmbeddingVector(handle: number, strings: string[], token: CancellationToken): Promise; } export interface MainThreadAiEmbeddingVectorShape { $registerAiEmbeddingVectorProvider(model: string, handle: number): void; $unregisterAiEmbeddingVectorProvider(handle: number): void; } export interface ExtHostSecretStateShape { $onDidChangePassword(e: { extensionId: string; key: string }): Promise; } export interface ExtHostSearchShape { $enableExtensionHostSearch(): void; $getAIName(handle: number): Promise; $provideFileSearchResults(handle: number, session: number, query: search.IRawQuery, token: CancellationToken): Promise; $provideAITextSearchResults(handle: number, session: number, query: search.IRawAITextQuery, token: CancellationToken): Promise; $provideTextSearchResults(handle: number, session: number, query: search.IRawTextQuery, token: CancellationToken): Promise; $clearCache(cacheKey: string): Promise; } export interface ExtHostExtensionServiceShape { $resolveAuthority(remoteAuthority: string, resolveAttempt: number): Promise>; /** * Returns `null` if no resolver for `remoteAuthority` is found. */ $getCanonicalURI(remoteAuthority: string, uri: UriComponents): Promise; $startExtensionHost(extensionsDelta: IExtensionDescriptionDelta): Promise; $extensionTestsExecute(): Promise; $activateByEvent(activationEvent: string, activationKind: ActivationKind): Promise; $activate(extensionId: ExtensionIdentifier, reason: ExtensionActivationReason): Promise; $setRemoteEnvironment(env: { [key: string]: string | null }): Promise; $updateRemoteConnectionData(connectionData: IRemoteConnectionData): Promise; $deltaExtensions(extensionsDelta: IExtensionDescriptionDelta): Promise; $test_latency(n: number): Promise; $test_up(b: VSBuffer): Promise; $test_down(size: number): Promise; } export interface FileSystemEvents { session?: number; created: UriComponents[]; changed: UriComponents[]; deleted: UriComponents[]; } export interface SourceTargetPair { source?: UriComponents; target: UriComponents; } export interface IWillRunFileOperationParticipation { edit: IWorkspaceEditDto; extensionNames: string[]; } export interface ExtHostFileSystemEventServiceShape { $onFileEvent(events: FileSystemEvents): void; $onWillRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[], timeout: number, token: CancellationToken): Promise; $onDidRunFileOperation(operation: files.FileOperation, files: readonly SourceTargetPair[]): void; } export interface ExtHostLanguagesShape { $acceptLanguageIds(ids: string[]): void; } export interface ExtHostHeapServiceShape { $onGarbageCollection(ids: number[]): void; } export interface IRawColorInfo { color: [number, number, number, number]; range: IRange; } export class IdObject { _id?: number; private static _n = 0; static mixin(object: T): T & IdObject { // eslint-disable-next-line local/code-no-any-casts (object)._id = IdObject._n++; // eslint-disable-next-line local/code-no-any-casts return object; } } export const enum ISuggestDataDtoField { label = 'a', kind = 'b', detail = 'c', documentation = 'd', sortText = 'e', filterText = 'f', preselect = 'g', insertText = 'h', insertTextRules = 'i', range = 'j', commitCharacters = 'k', additionalTextEdits = 'l', kindModifier = 'm', commandIdent = 'n', commandId = 'o', commandArguments = 'p', } export interface ISuggestDataDto { [ISuggestDataDtoField.label]: string | languages.CompletionItemLabel; [ISuggestDataDtoField.kind]?: languages.CompletionItemKind; [ISuggestDataDtoField.detail]?: string; [ISuggestDataDtoField.documentation]?: string | IMarkdownString; [ISuggestDataDtoField.sortText]?: string; [ISuggestDataDtoField.filterText]?: string; [ISuggestDataDtoField.preselect]?: true; [ISuggestDataDtoField.insertText]?: string; [ISuggestDataDtoField.insertTextRules]?: languages.CompletionItemInsertTextRule; [ISuggestDataDtoField.range]?: IRange | { insert: IRange; replace: IRange }; [ISuggestDataDtoField.commitCharacters]?: string; [ISuggestDataDtoField.additionalTextEdits]?: ISingleEditOperation[]; [ISuggestDataDtoField.kindModifier]?: languages.CompletionItemTag[]; // Command [ISuggestDataDtoField.commandIdent]?: string; [ISuggestDataDtoField.commandId]?: string; [ISuggestDataDtoField.commandArguments]?: any[]; // not-standard x?: ChainedCacheId; } export const enum ISuggestResultDtoField { defaultRanges = 'a', completions = 'b', isIncomplete = 'c', duration = 'd', } export interface ISuggestResultDto { [ISuggestResultDtoField.defaultRanges]: { insert: IRange; replace: IRange }; [ISuggestResultDtoField.completions]: ISuggestDataDto[]; [ISuggestResultDtoField.isIncomplete]: undefined | true; [ISuggestResultDtoField.duration]: number; x?: number; } export interface ISignatureHelpDto { id: CacheId; signatures: languages.SignatureInformation[]; activeSignature: number; activeParameter: number; } export interface ISignatureHelpContextDto { readonly triggerKind: languages.SignatureHelpTriggerKind; readonly triggerCharacter: string | undefined; readonly isRetrigger: boolean; readonly activeSignatureHelp: ISignatureHelpDto | undefined; } export type IInlayHintDto = CachedSessionItem>; export type IInlayHintsDto = CachedSession<{ hints: IInlayHintDto[] }>; export type ILocationDto = Dto; export type ILocationLinkDto = Dto; export type IWorkspaceSymbolDto = CachedSessionItem>; export type IWorkspaceSymbolsDto = CachedSession<{ symbols: IWorkspaceSymbolDto[] }>; export interface IWorkspaceEditEntryMetadataDto { needsConfirmation: boolean; label: string; description?: string; iconPath?: IconPathDto; } export interface IChatNotebookEditDto { uri: UriComponents; edits: ICellEditOperationDto[]; kind: 'notebookEdit'; done?: boolean; } export interface IChatResponseClearToPreviousToolInvocationDto { kind: 'clearToPreviousToolInvocation'; reason: ChatResponseClearToPreviousToolInvocationReason; } export type ICellEditOperationDto = notebookCommon.ICellMetadataEdit | notebookCommon.IDocumentMetadataEdit | { editType: notebookCommon.CellEditType.Replace; index: number; count: number; cells: NotebookCellDataDto[]; }; export type IWorkspaceCellEditDto = Dto> & { cellEdit: ICellEditOperationDto }; export type IWorkspaceFileEditDto = Dto< Omit & { options?: Omit & { contents?: { type: 'base64'; value: string } | { type: 'dataTransferItem'; id: string } }; }>; export type IWorkspaceTextEditDto = Dto; export interface IWorkspaceEditDto { edits: Array; } export type ICommandDto = { $ident?: string } & languages.Command; export interface ICodeActionDto { cacheId?: ChainedCacheId; title: string; edit?: IWorkspaceEditDto; diagnostics?: Dto; command?: ICommandDto; kind?: string; isPreferred?: boolean; isAI?: boolean; disabled?: string; ranges?: IRange[]; } export interface ICodeActionListDto { cacheId: CacheId; actions: ReadonlyArray; } export interface ICodeActionProviderMetadataDto { readonly providedKinds?: readonly string[]; readonly documentation?: ReadonlyArray<{ readonly kind: string; readonly command: ICommandDto }>; } export type CacheId = number; export type ChainedCacheId = [CacheId, CacheId]; type CachedSessionItem = T & { cacheId?: ChainedCacheId }; type CachedSession = T & { cacheId?: CacheId }; export type ILinksListDto = CachedSession<{ links: ILinkDto[] }>; export type ILinkDto = CachedSessionItem>; export type ICodeLensListDto = CachedSession<{ lenses: ICodeLensDto[] }>; export type ICodeLensDto = CachedSessionItem>; export type ICallHierarchyItemDto = Dto; export interface IIncomingCallDto { from: ICallHierarchyItemDto; fromRanges: IRange[]; } export interface IOutgoingCallDto { fromRanges: IRange[]; to: ICallHierarchyItemDto; } export interface ILanguageWordDefinitionDto { languageId: string; regexSource: string; regexFlags: string; } export interface ILinkedEditingRangesDto { ranges: IRange[]; wordPattern?: IRegExpDto; } export interface IInlineValueContextDto { frameId: number; stoppedLocation: IRange; } export type ITypeHierarchyItemDto = Dto; export interface IPasteEditProviderMetadataDto { readonly supportsCopy: boolean; readonly supportsPaste: boolean; readonly supportsResolve: boolean; readonly providedPasteEditKinds?: readonly string[]; readonly copyMimeTypes?: readonly string[]; readonly pasteMimeTypes?: readonly string[]; } export interface IDocumentPasteContextDto { readonly only: string | undefined; readonly triggerKind: languages.DocumentPasteTriggerKind; } export interface IPasteEditDto { _cacheId?: ChainedCacheId; title: string; kind: { value: string } | undefined; insertText: string | { snippet: string }; additionalEdit?: IWorkspaceEditDto; yieldTo?: readonly string[]; } export interface IDocumentDropEditProviderMetadata { readonly supportsResolve: boolean; readonly dropMimeTypes: readonly string[]; readonly providedDropKinds?: readonly string[]; } export interface IDocumentDropEditDto { _cacheId?: ChainedCacheId; title: string; kind: string | undefined; insertText: string | { snippet: string }; additionalEdit?: IWorkspaceEditDto; yieldTo?: readonly string[]; } export interface ExtHostLanguageFeaturesShape { $provideDocumentSymbols(handle: number, resource: UriComponents, token: CancellationToken): Promise; $provideCodeLenses(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveCodeLens(handle: number, symbol: ICodeLensDto, token: CancellationToken): Promise; $releaseCodeLenses(handle: number, id: number): void; $provideDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideDeclaration(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideImplementation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideTypeDefinition(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideHover(handle: number, resource: UriComponents, position: IPosition, context: languages.HoverContext<{ id: number }> | undefined, token: CancellationToken): Promise; $releaseHover(handle: number, id: number): void; $provideEvaluatableExpression(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideInlineValues(handle: number, resource: UriComponents, range: IRange, context: languages.InlineValueContext, token: CancellationToken): Promise; $provideDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideMultiDocumentHighlights(handle: number, resource: UriComponents, position: IPosition, otherModels: UriComponents[], token: CancellationToken): Promise | undefined>; $provideLinkedEditingRanges(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideReferences(handle: number, resource: UriComponents, position: IPosition, context: languages.ReferenceContext, token: CancellationToken): Promise; $provideCodeActions(handle: number, resource: UriComponents, rangeOrSelection: IRange | ISelection, context: languages.CodeActionContext, token: CancellationToken): Promise; $resolveCodeAction(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<{ edit?: IWorkspaceEditDto; command?: ICommandDto }>; $releaseCodeActions(handle: number, cacheId: number): void; $prepareDocumentPaste(handle: number, uri: UriComponents, ranges: readonly IRange[], dataTransfer: DataTransferDTO, token: CancellationToken): Promise; $providePasteEdits(handle: number, requestId: number, uri: UriComponents, ranges: IRange[], dataTransfer: DataTransferDTO, context: IDocumentPasteContextDto, token: CancellationToken): Promise; $resolvePasteEdit(handle: number, id: ChainedCacheId, token: CancellationToken): Promise<{ insertText?: string; additionalEdit?: IWorkspaceEditDto }>; $releasePasteEdits(handle: number, cacheId: number): void; $provideDocumentFormattingEdits(handle: number, resource: UriComponents, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideDocumentRangeFormattingEdits(handle: number, resource: UriComponents, range: IRange, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideDocumentRangesFormattingEdits(handle: number, resource: UriComponents, range: IRange[], options: languages.FormattingOptions, token: CancellationToken): Promise; $provideOnTypeFormattingEdits(handle: number, resource: UriComponents, position: IPosition, ch: string, options: languages.FormattingOptions, token: CancellationToken): Promise; $provideWorkspaceSymbols(handle: number, search: string, token: CancellationToken): Promise; $resolveWorkspaceSymbol(handle: number, symbol: IWorkspaceSymbolDto, token: CancellationToken): Promise; $releaseWorkspaceSymbols(handle: number, id: number): void; $provideRenameEdits(handle: number, resource: UriComponents, position: IPosition, newName: string, token: CancellationToken): Promise; $resolveRenameLocation(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $supportsAutomaticNewSymbolNamesTriggerKind(handle: number): Promise; $provideNewSymbolNames(handle: number, resource: UriComponents, range: IRange, triggerKind: languages.NewSymbolNameTriggerKind, token: CancellationToken): Promise; $provideDocumentSemanticTokens(handle: number, resource: UriComponents, previousResultId: number, token: CancellationToken): Promise; $releaseDocumentSemanticTokens(handle: number, semanticColoringResultId: number): void; $provideDocumentRangeSemanticTokens(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise; $provideCompletionItems(handle: number, resource: UriComponents, position: IPosition, context: languages.CompletionContext, token: CancellationToken): Promise; $resolveCompletionItem(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseCompletionItems(handle: number, id: number): void; $provideInlineCompletions(handle: number, resource: UriComponents, position: IPosition, context: languages.InlineCompletionContext, token: CancellationToken): Promise; $handleInlineCompletionDidShow(handle: number, pid: number, idx: number, updatedInsertText: string): void; $handleInlineCompletionPartialAccept(handle: number, pid: number, idx: number, acceptedCharacters: number, info: languages.PartialAcceptInfo): void; $handleInlineCompletionEndOfLifetime(handle: number, pid: number, idx: number, reason: languages.InlineCompletionEndOfLifeReason<{ pid: number; idx: number }>): void; $handleInlineCompletionRejection(handle: number, pid: number, idx: number): void; $freeInlineCompletionsList(handle: number, pid: number, reason: languages.InlineCompletionsDisposeReason): void; $acceptInlineCompletionsUnificationState(state: IInlineCompletionsUnificationState): void; $handleInlineCompletionSetCurrentModelId(handle: number, modelId: string): void; $provideSignatureHelp(handle: number, resource: UriComponents, position: IPosition, context: languages.SignatureHelpContext, token: CancellationToken): Promise; $releaseSignatureHelp(handle: number, id: number): void; $provideInlayHints(handle: number, resource: UriComponents, range: IRange, token: CancellationToken): Promise; $resolveInlayHint(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseInlayHints(handle: number, id: number): void; $provideDocumentLinks(handle: number, resource: UriComponents, token: CancellationToken): Promise; $resolveDocumentLink(handle: number, id: ChainedCacheId, token: CancellationToken): Promise; $releaseDocumentLinks(handle: number, id: number): void; $provideDocumentColors(handle: number, resource: UriComponents, token: CancellationToken): Promise; $provideColorPresentations(handle: number, resource: UriComponents, colorInfo: IRawColorInfo, token: CancellationToken): Promise; $provideFoldingRanges(handle: number, resource: UriComponents, context: languages.FoldingContext, token: CancellationToken): Promise; $provideSelectionRanges(handle: number, resource: UriComponents, positions: IPosition[], token: CancellationToken): Promise; $prepareCallHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideCallHierarchyIncomingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $provideCallHierarchyOutgoingCalls(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $releaseCallHierarchy(handle: number, sessionId: string): void; $setWordDefinitions(wordDefinitions: ILanguageWordDefinitionDto[]): void; $prepareTypeHierarchy(handle: number, resource: UriComponents, position: IPosition, token: CancellationToken): Promise; $provideTypeHierarchySupertypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $provideTypeHierarchySubtypes(handle: number, sessionId: string, itemId: string, token: CancellationToken): Promise; $releaseTypeHierarchy(handle: number, sessionId: string): void; $provideDocumentOnDropEdits(handle: number, requestId: number, resource: UriComponents, position: IPosition, dataTransferDto: DataTransferDTO, token: CancellationToken): Promise; $releaseDocumentOnDropEdits(handle: number, cacheId: number): void; } export interface ExtHostQuickOpenShape { $onItemSelected(handle: number): void; $validateInput(input: string): Promise; $onDidChangeActive(sessionId: number, handles: number[]): void; $onDidChangeSelection(sessionId: number, handles: number[]): void; $onDidAccept(sessionId: number): void; $onDidChangeValue(sessionId: number, value: string): void; $onDidTriggerButton(sessionId: number, handle: number, checked?: boolean): void; $onDidTriggerItemButton(sessionId: number, itemHandle: number, buttonHandle: number): void; $onDidHide(sessionId: number): void; } export interface ExtHostTelemetryShape { $initializeTelemetryLevel(level: TelemetryLevel, supportsTelemetry: boolean, productConfig?: { usage: boolean; error: boolean }): void; $onDidChangeTelemetryLevel(level: TelemetryLevel): void; } export interface ITerminalLinkDto { /** The ID of the link to enable activation and disposal. */ id: number; /** The startIndex of the link in the line. */ startIndex: number; /** The length of the link in the line. */ length: number; /** The descriptive label for what the link does when activated. */ label?: string; } export interface ITerminalDimensionsDto { columns: number; rows: number; } type SingleOrMany = T[] | T; export interface ITerminalQuickFixTerminalCommandDto { terminalCommand: string; shouldExecute?: boolean; } export interface ITerminalQuickFixOpenerDto { uri: UriComponents; } export type TerminalQuickFix = ITerminalQuickFixTerminalCommandDto | ITerminalQuickFixOpenerDto | ICommandDto; export interface TerminalCommandMatchResultDto { commandLine: string; commandLineMatch: RegExpMatchArray; outputMatch?: { regexMatch: RegExpMatchArray; outputLines: string[]; }; } export interface ITerminalCommandDto { commandLine: string | undefined; cwd: URI | string | undefined; exitCode: number | undefined; output: string | undefined; } export interface ITerminalCompletionContextDto { commandLine: string; cursorIndex: number; } export interface ITerminalCompletionItemDto { label: string | CompletionItemLabel; detail?: string; documentation?: string | IMarkdownString; icon?: ThemeIcon | undefined; kind?: number | undefined; isFile?: boolean | undefined; isDirectory?: boolean | undefined; isKeyword?: boolean | undefined; replacementRange: readonly [number, number]; } export interface ITerminalCompletionProvider { id: string; shellTypes?: TerminalShellType[]; provideCompletions(value: string, cursorPosition: number, token: CancellationToken): Promise | undefined>; triggerCharacters?: string[]; isBuiltin?: boolean; } /** * Represents a collection of {@link CompletionItem completion items} to be presented * in the editor. */ export class TerminalCompletionListDto { /** * Resources should be shown in the completions list */ resourceOptions?: TerminalCompletionResourceOptionsDto; /** * The completion items. */ items: T[]; /** * Creates a new completion list. * * @param items The completion items. * @param isIncomplete The list is not complete. */ constructor(items?: T[], resourceOptions?: TerminalCompletionResourceOptionsDto) { this.items = items ?? []; this.resourceOptions = resourceOptions; } } export interface TerminalCompletionResourceOptionsDto { showFiles?: boolean; showDirectories?: boolean; globPattern?: string | IRelativePattern; cwd: UriComponents; pathSeparator: string; } export interface ExtHostTerminalServiceShape { $acceptTerminalClosed(id: number, exitCode: number | undefined, exitReason: TerminalExitReason): void; $acceptTerminalOpened(id: number, extHostTerminalId: string | undefined, name: string, shellLaunchConfig: IShellLaunchConfigDto): void; $acceptActiveTerminalChanged(id: number | null): void; $acceptTerminalProcessId(id: number, processId: number): void; $acceptTerminalProcessData(id: number, data: string): void; $acceptDidExecuteCommand(id: number, command: ITerminalCommandDto): void; $acceptTerminalTitleChange(id: number, name: string): void; $acceptTerminalDimensions(id: number, cols: number, rows: number): void; $acceptTerminalMaximumDimensions(id: number, cols: number, rows: number): void; $acceptTerminalInteraction(id: number): void; $acceptTerminalSelection(id: number, selection: string | undefined): void; $acceptTerminalShellType(id: number, shellType: TerminalShellType | undefined): void; $startExtensionTerminal(id: number, initialDimensions: ITerminalDimensionsDto | undefined): Promise; $acceptProcessAckDataEvent(id: number, charCount: number): void; $acceptProcessInput(id: number, data: string): void; $acceptProcessResize(id: number, cols: number, rows: number): void; $acceptProcessShutdown(id: number, immediate: boolean): void; $acceptProcessRequestInitialCwd(id: number): void; $acceptProcessRequestCwd(id: number): void; $acceptProcessRequestLatency(id: number): Promise; $provideLinks(id: number, line: string): Promise; $activateLink(id: number, linkId: number): void; $initEnvironmentVariableCollections(collections: [string, ISerializableEnvironmentVariableCollection][]): void; $acceptDefaultProfile(profile: ITerminalProfile, automationProfile: ITerminalProfile): void; $createContributedProfileTerminal(id: string, options: ICreateContributedTerminalProfileOptions): Promise; $provideTerminalQuickFixes(id: string, matchResult: TerminalCommandMatchResultDto, token: CancellationToken): Promise | undefined>; $provideTerminalCompletions(id: string, options: ITerminalCompletionContextDto, token: CancellationToken): Promise; } export interface ExtHostTerminalShellIntegrationShape { $shellIntegrationChange(instanceId: number, supportsExecuteCommandApi: boolean): void; $shellExecutionStart(instanceId: number, supportsExecuteCommandApi: boolean, commandLineValue: string, commandLineConfidence: TerminalShellExecutionCommandLineConfidence, isTrusted: boolean, cwd: string | undefined): void; $shellExecutionEnd(instanceId: number, commandLineValue: string, commandLineConfidence: TerminalShellExecutionCommandLineConfidence, isTrusted: boolean, exitCode: number | undefined): void; $shellExecutionData(instanceId: number, data: string): void; $shellEnvChange(instanceId: number, shellEnvKeys: string[], shellEnvValues: string[], isTrusted: boolean): void; $cwdChange(instanceId: number, cwd: string | undefined): void; $closeTerminal(instanceId: number): void; } export interface ExtHostSCMShape { $provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise; $provideSecondaryOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise; $onInputBoxValueChange(sourceControlHandle: number, value: string): void; $executeResourceCommand(sourceControlHandle: number, groupHandle: number, handle: number, preserveFocus: boolean): Promise; $validateInput(sourceControlHandle: number, value: string, cursorPosition: number): Promise<[string | IMarkdownString, number] | undefined>; $setSelectedSourceControl(selectedSourceControlHandle: number | undefined): Promise; $provideHistoryItemRefs(sourceControlHandle: number, historyItemRefs: string[] | undefined, token: CancellationToken): Promise; $provideHistoryItems(sourceControlHandle: number, options: ISCMHistoryOptions, token: CancellationToken): Promise; $provideHistoryItemChanges(sourceControlHandle: number, historyItemId: string, historyItemParentId: string | undefined, token: CancellationToken): Promise; $resolveHistoryItem(sourceControlHandle: number, historyItemId: string, token: CancellationToken): Promise; $resolveHistoryItemChatContext(sourceControlHandle: number, historyItemId: string, token: CancellationToken): Promise; $resolveHistoryItemChangeRangeChatContext(sourceControlHandle: number, historyItemId: string, historyItemParentId: string, path: string, token: CancellationToken): Promise; $resolveHistoryItemRefsCommonAncestor(sourceControlHandle: number, historyItemRefs: string[], token: CancellationToken): Promise; $provideArtifactGroups(sourceControlHandle: number, token: CancellationToken): Promise; $provideArtifacts(sourceControlHandle: number, group: string, token: CancellationToken): Promise; } export interface ExtHostQuickDiffShape { $provideOriginalResource(sourceControlHandle: number, uri: UriComponents, token: CancellationToken): Promise; } export interface ExtHostShareShape { $provideShare(handle: number, shareableItem: IShareableItemDto, token: CancellationToken): Promise; } export interface ExtHostTaskShape { $provideTasks(handle: number, validTypes: { [key: string]: boolean }): Promise; $resolveTask(handle: number, taskDTO: tasks.ITaskDTO): Promise; $onDidStartTask(execution: tasks.ITaskExecutionDTO, terminalId: number, resolvedDefinition: tasks.ITaskDefinitionDTO): void; $onDidStartTaskProcess(value: tasks.ITaskProcessStartedDTO): void; $onDidEndTaskProcess(value: tasks.ITaskProcessEndedDTO): void; $OnDidEndTask(execution: tasks.ITaskExecutionDTO): void; $onDidStartTaskProblemMatchers(status: tasks.ITaskProblemMatcherStartedDto): void; $onDidEndTaskProblemMatchers(status: tasks.ITaskProblemMatcherEndedDto): void; $resolveVariables(workspaceFolder: UriComponents, toResolve: { process?: { name: string; cwd?: string }; variables: string[] }): Promise<{ process?: string; variables: { [key: string]: string } }>; $jsonTasksSupported(): Promise; $findExecutable(command: string, cwd?: string, paths?: string[]): Promise; } export interface IBreakpointDto { type: string; id?: string; enabled: boolean; condition?: string; hitCondition?: string; logMessage?: string; mode?: string; } export interface IFunctionBreakpointDto extends IBreakpointDto { type: 'function'; functionName: string; mode?: string; } export interface IDataBreakpointDto extends IBreakpointDto { type: 'data'; dataId: string; canPersist: boolean; label: string; accessTypes?: DebugProtocol.DataBreakpointAccessType[]; accessType: DebugProtocol.DataBreakpointAccessType; mode?: string; } export interface ISourceBreakpointDto extends IBreakpointDto { type: 'source'; uri: UriComponents; line: number; character: number; } export interface IBreakpointsDeltaDto { added?: Array; removed?: string[]; changed?: Array; } export interface ISourceMultiBreakpointDto { type: 'sourceMulti'; uri: UriComponents; lines: { id: string; enabled: boolean; condition?: string; hitCondition?: string; logMessage?: string; line: number; character: number; mode?: string; }[]; } export interface IDebugSessionFullDto { id: DebugSessionUUID; type: string; name: string; parent: DebugSessionUUID | undefined; folderUri: UriComponents | undefined; configuration: IConfig; } export type IDebugSessionDto = IDebugSessionFullDto | DebugSessionUUID; export interface IThreadFocusDto { kind: 'thread'; sessionId: string; threadId: number; } export interface IStackFrameFocusDto { kind: 'stackFrame'; sessionId: string; threadId: number; frameId: number; } export interface ExtHostDebugServiceShape { $substituteVariables(folder: UriComponents | undefined, config: IConfig): Promise; $runInTerminal(args: DebugProtocol.RunInTerminalRequestArguments, sessionId: string): Promise; $startDASession(handle: number, session: IDebugSessionDto): Promise; $stopDASession(handle: number): Promise; $sendDAMessage(handle: number, message: DebugProtocol.ProtocolMessage): void; $resolveDebugConfiguration(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise; $resolveDebugConfigurationWithSubstitutedVariables(handle: number, folder: UriComponents | undefined, debugConfiguration: IConfig, token: CancellationToken): Promise; $provideDebugConfigurations(handle: number, folder: UriComponents | undefined, token: CancellationToken): Promise; $provideDebugAdapter(handle: number, session: IDebugSessionDto): Promise>; $acceptDebugSessionStarted(session: IDebugSessionDto): void; $acceptDebugSessionTerminated(session: IDebugSessionDto): void; $acceptDebugSessionActiveChanged(session: IDebugSessionDto | undefined): void; $acceptDebugSessionCustomEvent(session: IDebugSessionDto, event: any): void; $acceptBreakpointsDelta(delta: IBreakpointsDeltaDto): void; $acceptDebugSessionNameChanged(session: IDebugSessionDto, name: string): void; $acceptStackFrameFocus(focus: IThreadFocusDto | IStackFrameFocusDto | undefined): void; $provideDebugVisualizers(extensionId: string, id: string, context: IDebugVisualizationContext, token: CancellationToken): Promise; $resolveDebugVisualizer(id: number, token: CancellationToken): Promise; $executeDebugVisualizerCommand(id: number): Promise; $disposeDebugVisualizers(ids: number[]): void; $getVisualizerTreeItem(treeId: string, element: IDebugVisualizationContext): Promise; $getVisualizerTreeItemChildren(treeId: string, element: number): Promise; $editVisualizerTreeItem(element: number, value: string): Promise; $disposeVisualizedTree(element: number): void; } export interface DecorationRequest { readonly id: number; readonly uri: UriComponents; } export type DecorationData = [boolean, string, string | ThemeIcon, ThemeColor]; export type DecorationReply = { [id: number]: DecorationData }; export interface ExtHostDecorationsShape { $provideDecorations(handle: number, requests: DecorationRequest[], token: CancellationToken): Promise; } export interface ExtHostWindowShape { $onDidChangeWindowFocus(value: boolean): void; $onDidChangeWindowActive(value: boolean): void; $onDidChangeActiveNativeWindowHandle(handle: string | undefined): void; } export interface ExtHostLogLevelServiceShape { $setLogLevel(level: LogLevel, resource?: UriComponents): void; } export interface MainThreadLoggerShape { $log(file: UriComponents, messages: [LogLevel, string][]): void; $flush(file: UriComponents): void; $createLogger(file: UriComponents, options?: ILoggerOptions): Promise; $registerLogger(logger: UriDto): Promise; $deregisterLogger(resource: UriComponents): Promise; $setVisibility(resource: UriComponents, visible: boolean): Promise; } export interface ExtHostOutputServiceShape { $setVisibleChannel(channelId: string | null): void; } export interface ExtHostProgressShape { $acceptProgressCanceled(handle: number): void; } export interface ExtHostCommentsShape { $createCommentThreadTemplate(commentControllerHandle: number, uriComponents: UriComponents, range: IRange | undefined, editorId?: string): Promise; $updateCommentThreadTemplate(commentControllerHandle: number, threadHandle: number, range: IRange): Promise; $updateCommentThread(commentControllerHandle: number, threadHandle: number, changes: CommentThreadChanges): Promise; $deleteCommentThread(commentControllerHandle: number, commentThreadHandle: number): void; $provideCommentingRanges(commentControllerHandle: number, uriComponents: UriComponents, token: CancellationToken): Promise<{ ranges: IRange[]; fileComments: boolean } | undefined>; $toggleReaction(commentControllerHandle: number, threadHandle: number, uri: UriComponents, comment: languages.Comment, reaction: languages.CommentReaction): Promise; $setActiveComment(controllerHandle: number, commentInfo: { commentThreadHandle: number; uniqueIdInThread?: number } | undefined): Promise; } export interface INotebookSelectionChangeEvent { selections: ICellRange[]; } export interface INotebookVisibleRangesEvent { ranges: ICellRange[]; } export interface INotebookEditorPropertiesChangeData { visibleRanges?: INotebookVisibleRangesEvent; selections?: INotebookSelectionChangeEvent; } export interface INotebookDocumentPropertiesChangeData { metadata?: notebookCommon.NotebookDocumentMetadata; } export interface INotebookModelAddedData { uri: UriComponents; versionId: number; cells: NotebookCellDto[]; viewType: string; metadata?: notebookCommon.NotebookDocumentMetadata; } export interface INotebookEditorAddData { id: string; documentUri: UriComponents; selections: ICellRange[]; visibleRanges: ICellRange[]; viewColumn?: number; viewType: string; } export interface INotebookDocumentsAndEditorsDelta { removedDocuments?: UriComponents[]; addedDocuments?: INotebookModelAddedData[]; removedEditors?: string[]; addedEditors?: INotebookEditorAddData[]; newActiveEditor?: string | null; visibleEditors?: string[]; } export interface NotebookOutputItemDto { readonly mime: string; readonly valueBytes: VSBuffer; } export interface NotebookOutputDto { items: NotebookOutputItemDto[]; outputId: string; metadata?: Record; } export interface NotebookCellDataDto { source: string; language: string; mime: string | undefined; cellKind: notebookCommon.CellKind; outputs: NotebookOutputDto[]; metadata?: notebookCommon.NotebookCellMetadata; internalMetadata?: notebookCommon.NotebookCellInternalMetadata; } export interface NotebookDataDto { readonly cells: NotebookCellDataDto[]; readonly metadata: notebookCommon.NotebookDocumentMetadata; } export interface NotebookCellDto { handle: number; uri: UriComponents; eol: string; source: string[]; language: string; mime?: string; cellKind: notebookCommon.CellKind; outputs: NotebookOutputDto[]; metadata?: notebookCommon.NotebookCellMetadata; internalMetadata?: notebookCommon.NotebookCellInternalMetadata; } export type INotebookPartialFileStatsWithMetadata = Omit; export interface ExtHostNotebookShape extends ExtHostNotebookDocumentsAndEditorsShape { $provideNotebookCellStatusBarItems(handle: number, uri: UriComponents, index: number, token: CancellationToken): Promise; $releaseNotebookCellStatusBarItems(id: number): void; $dataToNotebook(handle: number, data: VSBuffer, token: CancellationToken): Promise>; $notebookToData(handle: number, data: SerializableObjectWithBuffers, token: CancellationToken): Promise; $saveNotebook(handle: number, uri: UriComponents, versionId: number, options: files.IWriteFileOptions, token: CancellationToken): Promise; $searchInNotebooks(handle: number, textQuery: search.ITextQuery, viewTypeFileTargets: NotebookPriorityInfo[], otherViewTypeFileTargets: NotebookPriorityInfo[], token: CancellationToken): Promise<{ results: IRawClosedNotebookFileMatch[]; limitHit: boolean }>; } export interface ExtHostNotebookDocumentSaveParticipantShape { $participateInSave(resource: UriComponents, reason: SaveReason, token: CancellationToken): Promise; } export interface ExtHostNotebookRenderersShape { $postRendererMessage(editorId: string, rendererId: string, message: unknown): void; } export interface ExtHostNotebookDocumentsAndEditorsShape { $acceptDocumentAndEditorsDelta(delta: SerializableObjectWithBuffers): void; } export type NotebookRawContentEventDto = // notebookCommon.NotebookCellsInitializeEvent | { readonly kind: notebookCommon.NotebookCellsChangeType.ModelChange; readonly changes: notebookCommon.NotebookCellTextModelSplice[]; } | { readonly kind: notebookCommon.NotebookCellsChangeType.Move; readonly index: number; readonly length: number; readonly newIdx: number; } | { readonly kind: notebookCommon.NotebookCellsChangeType.Output; readonly index: number; readonly outputs: NotebookOutputDto[]; } | { readonly kind: notebookCommon.NotebookCellsChangeType.OutputItem; readonly index: number; readonly outputId: string; readonly outputItems: NotebookOutputItemDto[]; readonly append: boolean; } | notebookCommon.NotebookCellsChangeLanguageEvent | notebookCommon.NotebookCellsChangeMimeEvent | notebookCommon.NotebookCellsChangeMetadataEvent | notebookCommon.NotebookCellsChangeInternalMetadataEvent // | notebookCommon.NotebookDocumentChangeMetadataEvent | notebookCommon.NotebookCellContentChangeEvent // | notebookCommon.NotebookDocumentUnknownChangeEvent ; export type NotebookCellsChangedEventDto = { readonly rawEvents: NotebookRawContentEventDto[]; readonly versionId: number; }; export interface ExtHostNotebookDocumentsShape { $acceptModelChanged(uriComponents: UriComponents, event: SerializableObjectWithBuffers, isDirty: boolean, newMetadata?: notebookCommon.NotebookDocumentMetadata): void; $acceptDirtyStateChanged(uriComponents: UriComponents, isDirty: boolean): void; $acceptModelSaved(uriComponents: UriComponents): void; } export type INotebookEditorViewColumnInfo = Record; export interface ExtHostNotebookEditorsShape { $acceptEditorPropertiesChanged(id: string, data: INotebookEditorPropertiesChangeData): void; $acceptEditorViewColumns(data: INotebookEditorViewColumnInfo): void; } export interface ExtHostNotebookKernelsShape { $acceptNotebookAssociation(handle: number, uri: UriComponents, value: boolean): void; $executeCells(handle: number, uri: UriComponents, handles: number[]): Promise; $cancelCells(handle: number, uri: UriComponents, handles: number[]): Promise; $acceptKernelMessageFromRenderer(handle: number, editorId: string, message: any): void; $provideKernelSourceActions(handle: number, token: CancellationToken): Promise; $provideVariables(handle: number, requestId: string, notebookUri: UriComponents, parentId: number | undefined, kind: 'named' | 'indexed', start: number, token: CancellationToken): Promise; } export interface ExtHostInteractiveShape { $willAddInteractiveDocument(uri: UriComponents, eol: string, languageId: string, notebookUri: UriComponents): void; $willRemoveInteractiveDocument(uri: UriComponents, notebookUri: UriComponents): void; } export interface ExtHostStorageShape { $acceptValue(shared: boolean, extensionId: string, value: string): void; } export interface ExtHostThemingShape { $onColorThemeChange(themeType: string): void; } export interface MainThreadThemingShape extends IDisposable { } export interface MainThreadLocalizationShape extends IDisposable { $fetchBuiltInBundleUri(id: string, language: string): Promise; $fetchBundleContents(uriComponents: UriComponents): Promise; } export interface TunnelDto { remoteAddress: { port: number; host: string }; localAddress: { port: number; host: string } | string; public: boolean; privacy: TunnelPrivacyId | string; protocol: string | undefined; } export interface ExtHostTunnelServiceShape { $forwardPort(tunnelOptions: TunnelOptions, tunnelCreationOptions: TunnelCreationOptions): Promise; $closeTunnel(remote: { host: string; port: number }, silent?: boolean): Promise; $onDidTunnelsChange(): Promise; $registerCandidateFinder(enable: boolean): Promise; $applyCandidateFilter(candidates: CandidatePort[]): Promise; $providePortAttributes(handles: number[], ports: number[], pid: number | undefined, commandline: string | undefined, cancellationToken: CancellationToken): Promise; } export interface ExtHostTimelineShape { $getTimeline(source: string, uri: UriComponents, options: TimelineOptions, token: CancellationToken): Promise | undefined>; } export const enum ExtHostTestingResource { Workspace, TextDocument } export interface ExtHostTestingShape { $runControllerTests(req: IStartControllerTests[], token: CancellationToken): Promise<{ error?: string }[]>; $startContinuousRun(req: ICallProfileRunHandler[], token: CancellationToken): Promise<{ error?: string }[]>; $cancelExtensionTestRun(runId: string | undefined, taskId: string | undefined): void; /** Handles a diff of tests, as a result of a subscribeToDiffs() call */ $acceptDiff(diff: TestsDiffOp.Serialized[]): void; /** Expands a test item's children, by the given number of levels. */ $expandTest(testId: string, levels: number): Promise; /** Requests coverage details for a test run. Errors if not available. */ $getCoverageDetails(coverageId: string, testId: string | undefined, token: CancellationToken): Promise; /** Disposes resources associated with a test run. */ $disposeRun(runId: string): void; /** Configures a test run config. */ $configureRunProfile(controllerId: string, configId: number): void; /** Asks the controller to refresh its tests */ $refreshTests(controllerId: string, token: CancellationToken): Promise; /** Ensures any pending test diffs are flushed */ $syncTests(): Promise; /** Sets the active test run profiles */ $setDefaultRunProfiles(profiles: Record): void; $getTestsRelatedToCode(uri: UriComponents, position: IPosition, token: CancellationToken): Promise; $getCodeRelatedToTest(testId: string, token: CancellationToken): Promise; // --- test results: /** Publishes that a test run finished. */ $publishTestResults(results: ISerializedTestResults[]): void; /** Requests followup actions for a test (failure) message */ $provideTestFollowups(req: TestMessageFollowupRequest, token: CancellationToken): Promise; /** Actions a followup actions for a test (failure) message */ $executeTestFollowup(id: number): Promise; /** Disposes followup actions for a test (failure) message */ $disposeTestFollowups(id: number[]): void; } export interface IStartMcpOptions { launch: McpServerLaunch.Serialized; defaultCwd?: UriComponents; errorOnUserInteraction?: boolean; } export interface ExtHostMcpShape { $substituteVariables(workspaceFolder: UriComponents | undefined, value: McpServerLaunch.Serialized): Promise; $resolveMcpLaunch(collectionId: string, label: string): Promise; $startMcp(id: number, opts: IStartMcpOptions): void; $stopMcp(id: number): void; $sendMessage(id: number, message: string): void; $waitForInitialCollectionProviders(): Promise; } export interface IMcpAuthenticationDetails { authorizationServer: UriComponents; authorizationServerMetadata: IAuthorizationServerMetadata; resourceMetadata: IAuthorizationProtectedResourceMetadata | undefined; scopes: string[] | undefined; } export interface IMcpAuthenticationOptions { errorOnUserInteraction?: boolean; forceNewRegistration?: boolean; } export interface MainThreadMcpShape { $onDidChangeState(id: number, state: McpConnectionState): void; $onDidPublishLog(id: number, level: LogLevel, log: string): void; $onDidReceiveMessage(id: number, message: string): void; $upsertMcpCollection(collection: McpCollectionDefinition.FromExtHost, servers: McpServerDefinition.Serialized[]): void; $deleteMcpCollection(collectionId: string): void; $getTokenFromServerMetadata(id: number, authDetails: IMcpAuthenticationDetails, options?: IMcpAuthenticationOptions): Promise; $getTokenForProviderId(id: number, providerId: string, scopes: string[], options?: IMcpAuthenticationOptions): Promise; } export interface MainThreadDataChannelsShape extends IDisposable { } export interface ExtHostDataChannelsShape { $onDidReceiveData(channelId: string, data: unknown): void; } export interface ExtHostLocalizationShape { getMessage(extensionId: string, details: IStringDetails): string; getBundle(extensionId: string): { [key: string]: string } | undefined; getBundleUri(extensionId: string): URI | undefined; initializeLocalizedMessages(extension: IExtensionDescription): Promise; } export interface IStringDetails { message: string; args?: Record; comment?: string | string[]; } export interface ITestControllerPatch { label?: string; capabilities?: TestControllerCapability; } export interface MainThreadTestingShape { // --- test lifecycle: /** Registers that there's a test controller with the given ID */ $registerTestController(controllerId: string, label: string, capability: TestControllerCapability): void; /** Updates the label of an existing test controller. */ $updateController(controllerId: string, patch: ITestControllerPatch): void; /** Diposes of the test controller with the given ID */ $unregisterTestController(controllerId: string): void; /** Requests tests published to VS Code. */ $subscribeToDiffs(): void; /** Stops requesting tests published to VS Code. */ $unsubscribeFromDiffs(): void; /** Publishes that new tests were available on the given source. */ $publishDiff(controllerId: string, diff: TestsDiffOp.Serialized[]): void; /** Gets coverage details from a test result. */ $getCoverageDetails(resultId: string, taskIndex: number, uri: UriComponents, token: CancellationToken): Promise; // --- test run configurations: /** Called when a new test run configuration is available */ $publishTestRunProfile(config: ITestRunProfile): void; /** Updates an existing test run configuration */ $updateTestRunConfig(controllerId: string, configId: number, update: Partial): void; /** Removes a previously-published test run config */ $removeTestProfile(controllerId: string, configId: number): void; // --- test run handling: /** Request by an extension to run tests. */ $runTests(req: ResolvedTestRunRequest, token: CancellationToken): Promise; /** * Adds tests to the run. The tests are given in descending depth. The first * item will be a previously-known test, or a test root. */ $addTestsToRun(controllerId: string, runId: string, tests: ITestItem.Serialized[]): void; /** Updates the state of a test run in the given run. */ $updateTestStateInRun(runId: string, taskId: string, testId: string, state: TestResultState, duration?: number): void; /** Appends a message to a test in the run. */ $appendTestMessagesInRun(runId: string, taskId: string, testId: string, messages: ITestMessage.Serialized[]): void; /** Appends raw output to the test run.. */ $appendOutputToRun(runId: string, taskId: string, output: VSBuffer, location?: ILocationDto, testId?: string): void; /** Triggered when coverage is added to test results. */ $appendCoverage(runId: string, taskId: string, coverage: IFileCoverage.Serialized): void; /** Signals a task in a test run started. */ $startedTestRunTask(runId: string, task: ITestRunTask): void; /** Signals a task in a test run ended. */ $finishedTestRunTask(runId: string, taskId: string): void; /** Start a new extension-provided test run. */ $startedExtensionTestRun(req: ExtensionRunTestsRequest): void; /** Signals that an extension-provided test run finished. */ $finishedExtensionTestRun(runId: string): void; /** Marks a test (or controller) as retired in all results. */ $markTestRetired(testIds: string[] | undefined): void; } export type ChatStatusItemDto = { id: string; title: string | { label: string; link: string }; description: string; detail: string | undefined; }; export interface MainThreadChatStatusShape { $setEntry(id: string, entry: ChatStatusItemDto): void; $disposeEntry(id: string): void; } export type IChatSessionHistoryItemDto = { id?: string; type: 'request'; prompt: string; participant: string; command?: string; variableData?: Dto; } | { type: 'response'; parts: IChatProgressDto[]; participant: string; }; export interface ChatSessionOptionUpdateDto { readonly optionId: string; readonly value: string | IChatSessionProviderOptionItem | undefined; } export interface ChatSessionOptionUpdateDto2 { readonly optionId: string; readonly value: string | IChatSessionProviderOptionItem; } export interface ChatSessionDto { id: string; resource: UriComponents; history: Array; hasActiveResponseCallback: boolean; hasRequestHandler: boolean; supportsInterruption: boolean; options?: Record; } export interface IChatSessionProviderOptions { optionGroups?: IChatSessionProviderOptionGroup[]; } export interface MainThreadChatSessionsShape extends IDisposable { $registerChatSessionItemProvider(handle: number, chatSessionType: string): void; $unregisterChatSessionItemProvider(handle: number): void; $onDidChangeChatSessionItems(handle: number): void; $onDidCommitChatSessionItem(handle: number, original: UriComponents, modified: UriComponents): void; $registerChatSessionContentProvider(handle: number, chatSessionScheme: string): void; $unregisterChatSessionContentProvider(handle: number): void; $onDidChangeChatSessionOptions(handle: number, sessionResource: UriComponents, updates: ReadonlyArray): void; $handleProgressChunk(handle: number, sessionResource: UriComponents, requestId: string, chunks: (IChatProgressDto | [IChatProgressDto, number])[]): Promise; $handleAnchorResolve(handle: number, sessionResource: UriComponents, requestId: string, requestHandle: string, anchor: Dto): void; $handleProgressComplete(handle: number, sessionResource: UriComponents, requestId: string): void; } export interface ExtHostChatSessionsShape { $provideChatSessionItems(providerHandle: number, token: CancellationToken): Promise[]>; $provideNewChatSessionItem(providerHandle: number, options: { request: IChatAgentRequest; metadata?: any }, token: CancellationToken): Promise>; $provideChatSessionContent(providerHandle: number, sessionResource: UriComponents, token: CancellationToken): Promise; $interruptChatSessionActiveResponse(providerHandle: number, sessionResource: UriComponents, requestId: string): Promise; $disposeChatSessionContent(providerHandle: number, sessionResource: UriComponents): Promise; $invokeChatSessionRequestHandler(providerHandle: number, sessionResource: UriComponents, request: IChatAgentRequest, history: any[], token: CancellationToken): Promise; $provideChatSessionProviderOptions(providerHandle: number, token: CancellationToken): Promise; $provideHandleOptionsChange(providerHandle: number, sessionResource: UriComponents, updates: ReadonlyArray, token: CancellationToken): Promise; } // --- proxy identifiers export const MainContext = { MainThreadAuthentication: createProxyIdentifier('MainThreadAuthentication'), MainThreadBulkEdits: createProxyIdentifier('MainThreadBulkEdits'), MainThreadLanguageModels: createProxyIdentifier('MainThreadLanguageModels'), MainThreadEmbeddings: createProxyIdentifier('MainThreadEmbeddings'), MainThreadChatAgents2: createProxyIdentifier('MainThreadChatAgents2'), MainThreadCodeMapper: createProxyIdentifier('MainThreadCodeMapper'), MainThreadLanguageModelTools: createProxyIdentifier('MainThreadChatSkills'), MainThreadClipboard: createProxyIdentifier('MainThreadClipboard'), MainThreadCommands: createProxyIdentifier('MainThreadCommands'), MainThreadComments: createProxyIdentifier('MainThreadComments'), MainThreadConfiguration: createProxyIdentifier('MainThreadConfiguration'), MainThreadConsole: createProxyIdentifier('MainThreadConsole'), MainThreadDebugService: createProxyIdentifier('MainThreadDebugService'), MainThreadDecorations: createProxyIdentifier('MainThreadDecorations'), MainThreadDiagnostics: createProxyIdentifier('MainThreadDiagnostics'), MainThreadDialogs: createProxyIdentifier('MainThreadDiaglogs'), MainThreadDocuments: createProxyIdentifier('MainThreadDocuments'), MainThreadDocumentContentProviders: createProxyIdentifier('MainThreadDocumentContentProviders'), MainThreadTextEditors: createProxyIdentifier('MainThreadTextEditors'), MainThreadEditorInsets: createProxyIdentifier('MainThreadEditorInsets'), MainThreadEditorTabs: createProxyIdentifier('MainThreadEditorTabs'), MainThreadErrors: createProxyIdentifier('MainThreadErrors'), MainThreadTreeViews: createProxyIdentifier('MainThreadTreeViews'), MainThreadDownloadService: createProxyIdentifier('MainThreadDownloadService'), MainThreadLanguageFeatures: createProxyIdentifier('MainThreadLanguageFeatures'), MainThreadLanguages: createProxyIdentifier('MainThreadLanguages'), MainThreadLogger: createProxyIdentifier('MainThreadLogger'), MainThreadMessageService: createProxyIdentifier('MainThreadMessageService'), MainThreadOutputService: createProxyIdentifier('MainThreadOutputService'), MainThreadProgress: createProxyIdentifier('MainThreadProgress'), MainThreadQuickDiff: createProxyIdentifier('MainThreadQuickDiff'), MainThreadQuickOpen: createProxyIdentifier('MainThreadQuickOpen'), MainThreadStatusBar: createProxyIdentifier('MainThreadStatusBar'), MainThreadSecretState: createProxyIdentifier('MainThreadSecretState'), MainThreadStorage: createProxyIdentifier('MainThreadStorage'), MainThreadSpeech: createProxyIdentifier('MainThreadSpeechProvider'), MainThreadTelemetry: createProxyIdentifier('MainThreadTelemetry'), MainThreadTerminalService: createProxyIdentifier('MainThreadTerminalService'), MainThreadTerminalShellIntegration: createProxyIdentifier('MainThreadTerminalShellIntegration'), MainThreadWebviews: createProxyIdentifier('MainThreadWebviews'), MainThreadWebviewPanels: createProxyIdentifier('MainThreadWebviewPanels'), MainThreadWebviewViews: createProxyIdentifier('MainThreadWebviewViews'), MainThreadCustomEditors: createProxyIdentifier('MainThreadCustomEditors'), MainThreadUrls: createProxyIdentifier('MainThreadUrls'), MainThreadUriOpeners: createProxyIdentifier('MainThreadUriOpeners'), MainThreadProfileContentHandlers: createProxyIdentifier('MainThreadProfileContentHandlers'), MainThreadWorkspace: createProxyIdentifier('MainThreadWorkspace'), MainThreadFileSystem: createProxyIdentifier('MainThreadFileSystem'), MainThreadFileSystemEventService: createProxyIdentifier('MainThreadFileSystemEventService'), MainThreadExtensionService: createProxyIdentifier('MainThreadExtensionService'), MainThreadSCM: createProxyIdentifier('MainThreadSCM'), MainThreadSearch: createProxyIdentifier('MainThreadSearch'), MainThreadShare: createProxyIdentifier('MainThreadShare'), MainThreadTask: createProxyIdentifier('MainThreadTask'), MainThreadWindow: createProxyIdentifier('MainThreadWindow'), MainThreadLabelService: createProxyIdentifier('MainThreadLabelService'), MainThreadNotebook: createProxyIdentifier('MainThreadNotebook'), MainThreadNotebookDocuments: createProxyIdentifier('MainThreadNotebookDocumentsShape'), MainThreadNotebookEditors: createProxyIdentifier('MainThreadNotebookEditorsShape'), MainThreadNotebookKernels: createProxyIdentifier('MainThreadNotebookKernels'), MainThreadNotebookRenderers: createProxyIdentifier('MainThreadNotebookRenderers'), MainThreadInteractive: createProxyIdentifier('MainThreadInteractive'), MainThreadTheming: createProxyIdentifier('MainThreadTheming'), MainThreadTunnelService: createProxyIdentifier('MainThreadTunnelService'), MainThreadManagedSockets: createProxyIdentifier('MainThreadManagedSockets'), MainThreadTimeline: createProxyIdentifier('MainThreadTimeline'), MainThreadTesting: createProxyIdentifier('MainThreadTesting'), MainThreadLocalization: createProxyIdentifier('MainThreadLocalizationShape'), MainThreadMcp: createProxyIdentifier('MainThreadMcpShape'), MainThreadAiRelatedInformation: createProxyIdentifier('MainThreadAiRelatedInformation'), MainThreadAiEmbeddingVector: createProxyIdentifier('MainThreadAiEmbeddingVector'), MainThreadChatStatus: createProxyIdentifier('MainThreadChatStatus'), MainThreadAiSettingsSearch: createProxyIdentifier('MainThreadAiSettingsSearch'), MainThreadDataChannels: createProxyIdentifier('MainThreadDataChannels'), MainThreadChatSessions: createProxyIdentifier('MainThreadChatSessions'), MainThreadChatOutputRenderer: createProxyIdentifier('MainThreadChatOutputRenderer'), MainThreadChatContext: createProxyIdentifier('MainThreadChatContext'), }; export const ExtHostContext = { ExtHostCodeMapper: createProxyIdentifier('ExtHostCodeMapper'), ExtHostCommands: createProxyIdentifier('ExtHostCommands'), ExtHostConfiguration: createProxyIdentifier('ExtHostConfiguration'), ExtHostDiagnostics: createProxyIdentifier('ExtHostDiagnostics'), ExtHostDebugService: createProxyIdentifier('ExtHostDebugService'), ExtHostDecorations: createProxyIdentifier('ExtHostDecorations'), ExtHostDocumentsAndEditors: createProxyIdentifier('ExtHostDocumentsAndEditors'), ExtHostDocuments: createProxyIdentifier('ExtHostDocuments'), ExtHostDocumentContentProviders: createProxyIdentifier('ExtHostDocumentContentProviders'), ExtHostDocumentSaveParticipant: createProxyIdentifier('ExtHostDocumentSaveParticipant'), ExtHostEditors: createProxyIdentifier('ExtHostEditors'), ExtHostTreeViews: createProxyIdentifier('ExtHostTreeViews'), ExtHostFileSystem: createProxyIdentifier('ExtHostFileSystem'), ExtHostFileSystemInfo: createProxyIdentifier('ExtHostFileSystemInfo'), ExtHostFileSystemEventService: createProxyIdentifier('ExtHostFileSystemEventService'), ExtHostLanguages: createProxyIdentifier('ExtHostLanguages'), ExtHostLanguageFeatures: createProxyIdentifier('ExtHostLanguageFeatures'), ExtHostQuickOpen: createProxyIdentifier('ExtHostQuickOpen'), ExtHostQuickDiff: createProxyIdentifier('ExtHostQuickDiff'), ExtHostStatusBar: createProxyIdentifier('ExtHostStatusBar'), ExtHostShare: createProxyIdentifier('ExtHostShare'), ExtHostExtensionService: createProxyIdentifier('ExtHostExtensionService'), ExtHostLogLevelServiceShape: createProxyIdentifier('ExtHostLogLevelServiceShape'), ExtHostTerminalService: createProxyIdentifier('ExtHostTerminalService'), ExtHostTerminalShellIntegration: createProxyIdentifier('ExtHostTerminalShellIntegration'), ExtHostSCM: createProxyIdentifier('ExtHostSCM'), ExtHostSearch: createProxyIdentifier('ExtHostSearch'), ExtHostTask: createProxyIdentifier('ExtHostTask'), ExtHostWorkspace: createProxyIdentifier('ExtHostWorkspace'), ExtHostWindow: createProxyIdentifier('ExtHostWindow'), ExtHostWebviews: createProxyIdentifier('ExtHostWebviews'), ExtHostWebviewPanels: createProxyIdentifier('ExtHostWebviewPanels'), ExtHostCustomEditors: createProxyIdentifier('ExtHostCustomEditors'), ExtHostWebviewViews: createProxyIdentifier('ExtHostWebviewViews'), ExtHostEditorInsets: createProxyIdentifier('ExtHostEditorInsets'), ExtHostEditorTabs: createProxyIdentifier('ExtHostEditorTabs'), ExtHostProgress: createProxyIdentifier('ExtHostProgress'), ExtHostComments: createProxyIdentifier('ExtHostComments'), ExtHostSecretState: createProxyIdentifier('ExtHostSecretState'), ExtHostStorage: createProxyIdentifier('ExtHostStorage'), ExtHostUrls: createProxyIdentifier('ExtHostUrls'), ExtHostUriOpeners: createProxyIdentifier('ExtHostUriOpeners'), ExtHostChatOutputRenderer: createProxyIdentifier('ExtHostChatOutputRenderer'), ExtHostProfileContentHandlers: createProxyIdentifier('ExtHostProfileContentHandlers'), ExtHostOutputService: createProxyIdentifier('ExtHostOutputService'), ExtHostLabelService: createProxyIdentifier('ExtHostLabelService'), ExtHostNotebook: createProxyIdentifier('ExtHostNotebook'), ExtHostNotebookDocuments: createProxyIdentifier('ExtHostNotebookDocuments'), ExtHostNotebookEditors: createProxyIdentifier('ExtHostNotebookEditors'), ExtHostNotebookKernels: createProxyIdentifier('ExtHostNotebookKernels'), ExtHostNotebookRenderers: createProxyIdentifier('ExtHostNotebookRenderers'), ExtHostNotebookDocumentSaveParticipant: createProxyIdentifier('ExtHostNotebookDocumentSaveParticipant'), ExtHostInteractive: createProxyIdentifier('ExtHostInteractive'), ExtHostChatAgents2: createProxyIdentifier('ExtHostChatAgents'), ExtHostLanguageModelTools: createProxyIdentifier('ExtHostChatSkills'), ExtHostChatProvider: createProxyIdentifier('ExtHostChatProvider'), ExtHostChatContext: createProxyIdentifier('ExtHostChatContext'), ExtHostSpeech: createProxyIdentifier('ExtHostSpeech'), ExtHostEmbeddings: createProxyIdentifier('ExtHostEmbeddings'), ExtHostAiRelatedInformation: createProxyIdentifier('ExtHostAiRelatedInformation'), ExtHostAiEmbeddingVector: createProxyIdentifier('ExtHostAiEmbeddingVector'), ExtHostAiSettingsSearch: createProxyIdentifier('ExtHostAiSettingsSearch'), ExtHostTheming: createProxyIdentifier('ExtHostTheming'), ExtHostTunnelService: createProxyIdentifier('ExtHostTunnelService'), ExtHostManagedSockets: createProxyIdentifier('ExtHostManagedSockets'), ExtHostAuthentication: createProxyIdentifier('ExtHostAuthentication'), ExtHostTimeline: createProxyIdentifier('ExtHostTimeline'), ExtHostTesting: createProxyIdentifier('ExtHostTesting'), ExtHostTelemetry: createProxyIdentifier('ExtHostTelemetry'), ExtHostLocalization: createProxyIdentifier('ExtHostLocalization'), ExtHostMcp: createProxyIdentifier('ExtHostMcp'), ExtHostDataChannels: createProxyIdentifier('ExtHostDataChannels'), ExtHostChatSessions: createProxyIdentifier('ExtHostChatSessions'), };