From d5c5b4b540e7fbef2694b7250bacfb5c199ae28c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 10 Jan 2024 16:13:04 +0100 Subject: [PATCH 1/5] refactor: only put dummy services in missing-services --- scripts/vscode.patch | 13 ++ src/missing-services.ts | 245 ++++++++++++++++++++-------- src/service-override/base.ts | 33 ++++ src/service-override/files.ts | 12 +- src/service-override/host.ts | 13 ++ src/service-override/languages.ts | 4 +- src/service-override/output.ts | 4 +- src/service-override/remoteAgent.ts | 4 +- src/service-override/storage.ts | 7 +- src/service-override/workingCopy.ts | 7 +- src/services.ts | 16 +- 11 files changed, 275 insertions(+), 83 deletions(-) create mode 100644 src/service-override/base.ts create mode 100644 src/service-override/host.ts diff --git a/scripts/vscode.patch b/scripts/vscode.patch index f5a1985b..5a542a18 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -2702,6 +2702,19 @@ index e8c8239b35f..9017a971ee5 100644 this._modelOperations = new ModelOperations({ modelJsonLoaderFunc: async () => { const response = await fetch(await this._host.fhr('getModelJsonUri', [])); +diff --git a/src/vs/workbench/services/languageStatus/common/languageStatusService.ts b/src/vs/workbench/services/languageStatus/common/languageStatusService.ts +index e10d2a3ef1e..6dd88102a64 100644 +--- a/src/vs/workbench/services/languageStatus/common/languageStatusService.ts ++++ b/src/vs/workbench/services/languageStatus/common/languageStatusService.ts +@@ -47,7 +47,7 @@ export interface ILanguageStatusService { + } + + +-class LanguageStatusServiceImpl implements ILanguageStatusService { ++export class LanguageStatusServiceImpl implements ILanguageStatusService { + + declare _serviceBrand: undefined; + diff --git a/src/vs/workbench/services/outline/browser/outlineService.ts b/src/vs/workbench/services/outline/browser/outlineService.ts index f4707432371..7c5cdde39cc 100644 --- a/src/vs/workbench/services/outline/browser/outlineService.ts diff --git a/src/missing-services.ts b/src/missing-services.ts index d55ce98e..25ed55f2 100644 --- a/src/missing-services.ts +++ b/src/missing-services.ts @@ -10,10 +10,7 @@ import { IWorkingCopyFileService, WorkingCopyFileService } from 'vs/workbench/se import { IPathService } from 'vs/workbench/services/path/common/pathService' import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions' import { IProductService } from 'vs/platform/product/common/productService' -import { ILanguageStatus, ILanguageStatusService } from 'vs/workbench/services/languageStatus/common/languageStatusService' -import { ITextModel } from 'vs/editor/common/model' -import { LanguageFeatureRegistry } from 'vs/editor/common/languageFeatureRegistry' -import { compare } from 'vs/base/common/strings' +import { ILanguageStatusService } from 'vs/workbench/services/languageStatus/common/languageStatusService' import { IHostService } from 'vs/workbench/services/host/browser/host' import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle' import { ILanguageDetectionService } from 'vs/workbench/services/languageDetection/common/languageDetectionWorkerService' @@ -22,7 +19,6 @@ import { IKeyboardLayoutService } from 'vs/platform/keyboardLayout/common/keyboa import { OS } from 'vs/base/common/platform' import { IEnvironmentService } from 'vs/platform/environment/common/environment' import { IUserDataInitializationService } from 'vs/workbench/services/userData/browser/userDataInit' -import { BrowserHostColorSchemeService } from 'vs/workbench/services/themes/browser/browserHostColorSchemeService' import { IHostColorSchemeService } from 'vs/workbench/services/themes/common/hostColorSchemeService' import { IPreferencesService } from 'vs/workbench/services/preferences/common/preferences' import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey' @@ -34,7 +30,7 @@ import { IUserDataProfileImportExportService, IUserDataProfileService } from 'vs import { UserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfileService' import { ISnippetsService } from 'vs/workbench/contrib/snippets/browser/snippets' import { AbstractLoggerService, ILogger, ILoggerService, LogLevel, NullLogger } from 'vs/platform/log/common/log' -import { IDisposable, Disposable, DisposableStore } from 'vs/base/common/lifecycle' +import { Disposable, DisposableStore, IDisposable } from 'vs/base/common/lifecycle' import { FallbackKeyboardMapper } from 'vs/workbench/services/keybinding/common/fallbackKeyboardMapper' import { ITextMateTokenizationService } from 'vs/workbench/services/textMate/browser/textMateTokenizationFeature' import { IDebugService, IDebugModel, IViewModel, IAdapterManager } from 'vs/workbench/contrib/debug/common/debug' @@ -58,33 +54,26 @@ import { IExtensionsWorkbenchService } from 'vs/workbench/contrib/extensions/com import { EnablementState, IExtensionManagementServerService, IWebExtensionsScannerService, IWorkbenchExtensionEnablementService, IWorkbenchExtensionManagementService } from 'vs/workbench/services/extensionManagement/common/extensionManagement' import { ITunnelService } from 'vs/platform/tunnel/common/tunnel' import { IResolvedWorkingCopyBackup, IWorkingCopyBackupService } from 'vs/workbench/services/workingCopy/common/workingCopyBackup' -import { IWorkingCopyService, WorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService' -import { FilesConfigurationService, IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService' +import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService' +import { IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService' import { IUntitledTextEditorService } from 'vs/workbench/services/untitled/common/untitledTextEditorService' import { IFileDialogService } from 'vs/platform/dialogs/common/dialogs' import { IElevatedFileService } from 'vs/workbench/services/files/common/elevatedFileService' -import { BrowserElevatedFileService } from 'vs/workbench/services/files/browser/elevatedFileService' import { IDecorationsService } from 'vs/workbench/services/decorations/common/decorations' -import { BrowserRequestService } from 'vs/workbench/services/request/browser/requestService' -import { BrowserTextFileService } from 'vs/workbench/services/textfile/browser/browserTextFileService' -import { DecorationsService } from 'vs/workbench/services/decorations/browser/decorationsService' import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService' import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing' -import { JSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditingService' import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces' import { ITextEditorService } from 'vs/workbench/services/textfile/common/textEditorService' import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService' import { AbstractLifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycleService' import { IOutputChannel, IOutputChannelDescriptor, IOutputService } from 'vs/workbench/services/output/common/output' -import { IOutputChannelModelService, OutputChannelModelService } from 'vs/workbench/contrib/output/common/outputChannelModelService' +import { IOutputChannelModelService } from 'vs/workbench/contrib/output/common/outputChannelModelService' import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader' import { IHoverService } from 'vs/workbench/services/hover/browser/hover' import { IExplorerService } from 'vs/workbench/contrib/files/browser/files' -import { ExtensionStorageService, IExtensionStorageService } from 'vs/platform/extensionManagement/common/extensionStorage' +import { IExtensionStorageService } from 'vs/platform/extensionManagement/common/extensionStorage' import { ILanguagePackItem, ILanguagePackService } from 'vs/platform/languagePacks/common/languagePacks' -import { TreeViewsDnDService } from 'vs/editor/common/services/treeViewsDnd' import { ITreeViewsDnDService } from 'vs/editor/common/services/treeViewsDndService' -import { TreeviewsService } from 'vs/workbench/services/views/common/treeViewsService' import { ITreeViewsService } from 'vs/workbench/services/views/browser/treeViewsService' import { IBreadcrumbsService } from 'vs/workbench/browser/parts/editor/breadcrumbs' import { IOutlineService } from 'vs/workbench/services/outline/browser/outline' @@ -109,9 +98,8 @@ import { IReplaceService } from 'vs/workbench/contrib/search/browser/replace' import { ISearchViewModelWorkbenchService } from 'vs/workbench/contrib/search/browser/searchModel' import { INotebookEditorService } from 'vs/workbench/contrib/notebook/browser/services/notebookEditorService' import { INotebookEditorModelResolverService } from 'vs/workbench/contrib/notebook/common/notebookEditorModelResolverService' -import { IWorkingCopyEditorService, WorkingCopyEditorService } from 'vs/workbench/services/workingCopy/common/workingCopyEditorService' -import { IUserActivityService, UserActivityService } from 'vs/workbench/services/userActivity/common/userActivityService' -import { CanonicalUriService } from 'vs/workbench/services/workspaces/common/canonicalUriService' +import { IWorkingCopyEditorService } from 'vs/workbench/services/workingCopy/common/workingCopyEditorService' +import { IUserActivityService } from 'vs/workbench/services/userActivity/common/userActivityService' import { ICanonicalUriService } from 'vs/platform/workspace/common/canonicalUri' import { ExtensionStatusBarEntry, IExtensionStatusBarItemService, StatusBarUpdateKind } from 'vs/workbench/api/browser/statusBarExtensionPoint' import { IWorkbenchAssignmentService } from 'vs/workbench/services/assignment/common/assignmentService' @@ -122,12 +110,11 @@ import { IWebviewWorkbenchService } from 'vs/workbench/contrib/webviewPanel/brow import { IWebview, IWebviewService } from 'vs/workbench/contrib/webview/browser/webview' import { IWebviewViewService } from 'vs/workbench/contrib/webviewView/browser/webviewViewService' import { IRemoteAuthorityResolverService } from 'vs/platform/remote/common/remoteAuthorityResolver' -import { ExternalUriOpenerService, IExternalUriOpenerService } from 'vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService' +import { IExternalUriOpenerService } from 'vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService' import { IAccessibleViewService } from 'vs/workbench/contrib/accessibility/browser/accessibleView' import { IExtension, IBuiltinExtensionsScannerService, IRelaxedExtensionDescription } from 'vs/platform/extensions/common/extensions' import { IExtensionManifestPropertiesService } from 'vs/workbench/services/extensions/common/extensionManifestPropertiesService' import { IRemoteExtensionsScannerService } from 'vs/platform/remote/common/remoteExtensionsScanner' -import { BrowserURLService } from 'vs/workbench/services/url/browser/urlService' import { IURLService } from 'vs/platform/url/common/url' import { IRemoteSocketFactoryService } from 'vs/platform/remote/common/remoteSocketFactoryService' import { IQuickDiffService } from 'vs/workbench/contrib/scm/common/quickDiff' @@ -163,7 +150,6 @@ import { IAiEmbeddingVectorService } from 'vs/workbench/services/aiEmbeddingVect import { ResourceSet } from 'vs/base/common/map' import { DEFAULT_EDITOR_PART_OPTIONS, IEditorGroupView } from 'vs/workbench/browser/parts/editor/editor' import { IMessage, ISignService } from 'vs/platform/sign/common/sign' -import { BrowserHostService } from 'vs/workbench/services/host/browser/browserHostService' import { IBannerService } from 'vs/workbench/services/banner/browser/bannerService' import { IChatAgentService } from 'vs/workbench/contrib/chat/common/chatAgents' import { IActiveLanguagePackService, ILocaleService } from 'vs/workbench/services/localization/common/locale' @@ -194,17 +180,16 @@ import { IInlineChatSessionService } from 'vs/workbench/contrib/inlineChat/brows import { IWalkthroughsService } from 'vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService' import { IFeaturedExtensionsService } from 'vs/workbench/contrib/welcomeGettingStarted/browser/featuredExtensionService' import { IUserDataSyncMachinesService } from 'vs/platform/userDataSync/common/userDataSyncMachines' -import { unsupported } from './tools' import { getBuiltInExtensionTranslationsUris } from './l10n' +import { unsupported } from './tools' -class NullLoggerService extends AbstractLoggerService { +registerSingleton(ILoggerService, class NullLoggerService extends AbstractLoggerService { constructor () { super(LogLevel.Info, URI.file('logs.log')) } protected doCreateLogger (): ILogger { return new NullLogger() } -} -registerSingleton(ILoggerService, NullLoggerService, InstantiationType.Eager) +}, InstantiationType.Eager) registerSingleton(IEditorService, class EditorService implements IEditorService { readonly _serviceBrand = undefined @@ -258,7 +243,32 @@ registerSingleton(IPaneCompositePartService, class PaneCompositePartService impl registerSingleton(IUriIdentityService, UriIdentityService, InstantiationType.Delayed) -registerSingleton(ITextFileService, BrowserTextFileService, InstantiationType.Eager) +registerSingleton(ITextFileService, class TextFileService implements ITextFileService { + _serviceBrand: undefined + get files () { + return unsupported() + } + + get untitled () { + return unsupported() + } + + get encoding () { + return unsupported() + } + + isDirty = unsupported + save = unsupported + saveAs = unsupported + revert = unsupported + read = unsupported + readStream = unsupported + write = unsupported + create = unsupported + getEncodedReadable = unsupported + getDecodedStream = unsupported + dispose = unsupported +}, InstantiationType.Eager) registerSingleton(IFileService, class FileService implements IFileService { readonly _serviceBrand = undefined @@ -539,34 +549,30 @@ registerSingleton(IExtensionTipsService, class ExtensionTipsService implements I getOtherExecutableBasedTips = async () => [] }, InstantiationType.Eager) -registerSingleton(ILanguageStatusService, class LanguageStatusServiceImpl implements ILanguageStatusService { - declare _serviceBrand: undefined - - private readonly _provider = new LanguageFeatureRegistry() - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - readonly onDidChange: Event = this._provider.onDidChange - - addStatus (status: ILanguageStatus): IDisposable { - return this._provider.register(status.selector, status) - } +registerSingleton(ILanguageStatusService, class LanguageStatusService implements ILanguageStatusService { + _serviceBrand: undefined + onDidChange = Event.None + addStatus = unsupported + getLanguageStatus = unsupported +}, InstantiationType.Delayed) - getLanguageStatus (model: ITextModel): ILanguageStatus[] { - return this._provider.ordered(model).sort((a, b) => { - let res = b.severity - a.severity - if (res === 0) { - res = compare(a.source, b.source) - } - if (res === 0) { - res = compare(a.id, b.id) - } - return res - }) - } +registerSingleton(IHostService, class HostService implements IHostService { + _serviceBrand: undefined + onDidChangeFocus = Event.None + hasFocus = false + hadLastFocus = async () => false + focus = unsupported + onDidChangeActiveWindow = Event.None + openWindow = unsupported + toggleFullScreen = unsupported + moveTop = unsupported + getCursorScreenPoint = unsupported + restart = unsupported + reload = unsupported + close = unsupported + withExpectedShutdown = unsupported }, InstantiationType.Eager) -registerSingleton(IHostService, BrowserHostService, InstantiationType.Eager) - registerSingleton(ILifecycleService, class LifecycleService extends AbstractLifecycleService { shutdown = unsupported }, InstantiationType.Eager) @@ -606,7 +612,12 @@ registerSingleton(IUserDataInitializationService, class NullUserDataInitializati async initializeOtherResources (): Promise {} }, InstantiationType.Eager) -registerSingleton(IHostColorSchemeService, BrowserHostColorSchemeService, InstantiationType.Eager) +registerSingleton(IHostColorSchemeService, class HostColorSchemeService implements IHostColorSchemeService { + _serviceBrand: undefined + dark = false + highContrast = false + onDidChangeColorScheme = Event.None +}, InstantiationType.Eager) class PreferencesService implements IPreferencesService { constructor (@IUserDataProfileService protected readonly profileService: IUserDataProfileService) {} @@ -793,7 +804,12 @@ registerSingleton(IDebugService, class DebugService implements IDebugService { runTo = unsupported }, InstantiationType.Eager) -registerSingleton(IRequestService, BrowserRequestService, InstantiationType.Eager) +registerSingleton(IRequestService, class RequestService implements IRequestService { + _serviceBrand: undefined + request = unsupported + resolveProxy = unsupported + loadCertificates = unsupported +}, InstantiationType.Eager) registerSingleton(IWorkspaceTrustRequestService, class WorkspaceTrustRequestService implements IWorkspaceTrustRequestService { _serviceBrand: undefined @@ -1170,7 +1186,20 @@ registerSingleton(ITunnelService, class TunnelService implements ITunnelService isPortPrivileged = () => false }, InstantiationType.Eager) -registerSingleton(IFilesConfigurationService, FilesConfigurationService, InstantiationType.Eager) +registerSingleton(IFilesConfigurationService, class FilesConfigurationService implements IFilesConfigurationService { + _serviceBrand: undefined + onAutoSaveConfigurationChange = Event.None + getAutoSaveConfiguration = unsupported + getAutoSaveMode = unsupported + toggleAutoSave = unsupported + onReadonlyChange = Event.None + isReadonly = unsupported + updateReadonly = unsupported + onFilesAssociationChange = Event.None + isHotExitEnabled = true + hotExitConfiguration = undefined + preventSaveConflicts = unsupported +}, InstantiationType.Eager) registerSingleton(IUntitledTextEditorService, class UntitledTextEditorService implements IUntitledTextEditorService { canDispose = (): true | Promise => true @@ -1213,9 +1242,40 @@ registerSingleton(IWorkingCopyBackupService, class WorkingCopyBackupService impl async discardBackups (): Promise { } }, InstantiationType.Eager) -registerSingleton(IWorkingCopyService, WorkingCopyService, InstantiationType.Eager) -registerSingleton(IDecorationsService, DecorationsService, InstantiationType.Eager) -registerSingleton(IElevatedFileService, BrowserElevatedFileService, InstantiationType.Eager) +registerSingleton(IWorkingCopyService, class WorkingCopyService implements IWorkingCopyService { + _serviceBrand: undefined + onDidRegister = Event.None + onDidUnregister = Event.None + onDidChangeDirty = Event.None + onDidChangeContent = Event.None + onDidSave = Event.None + dirtyCount = 0 + dirtyWorkingCopies = [] + modifiedCount = 0 + modifiedWorkingCopies = [] + hasDirty = false + isDirty = () => false + workingCopies = [] + registerWorkingCopy (): IDisposable { + // ignore + return Disposable.None + } + + has = () => false + get = () => undefined + getAll = () => undefined +}, InstantiationType.Eager) +registerSingleton(IDecorationsService, class DecorationsService implements IDecorationsService { + _serviceBrand: undefined + onDidChangeDecorations = Event.None + registerDecorationsProvider = unsupported + getDecoration = () => undefined +}, InstantiationType.Eager) +registerSingleton(IElevatedFileService, class ElevatedFileService implements IElevatedFileService { + _serviceBrand: undefined + isSupported = () => false + writeFileElevated = unsupported +}, InstantiationType.Eager) registerSingleton(IFileDialogService, class FileDialogService implements IFileDialogService { preferredHome = unsupported _serviceBrand: undefined @@ -1232,7 +1292,10 @@ registerSingleton(IFileDialogService, class FileDialogService implements IFileDi showOpenDialog = unsupported }, InstantiationType.Eager) -registerSingleton(IJSONEditingService, JSONEditingService, InstantiationType.Delayed) +registerSingleton(IJSONEditingService, class JSONEditingService implements IJSONEditingService { + _serviceBrand: undefined + write = unsupported +}, InstantiationType.Delayed) registerSingleton(IWorkspacesService, class WorkspacesService implements IWorkspacesService { _serviceBrand: undefined @@ -1297,7 +1360,10 @@ registerSingleton(IOutputService, class OutputService implements IOutputService onActiveOutputChannel = Event.None }, InstantiationType.Delayed) -registerSingleton(IOutputChannelModelService, OutputChannelModelService, InstantiationType.Delayed) +registerSingleton(IOutputChannelModelService, class OutputChannelModelService implements IOutputChannelModelService { + _serviceBrand: undefined + createOutputChannelModel = unsupported +}, InstantiationType.Delayed) registerSingleton(IExtensionResourceLoaderService, class ExtensionResourceLoaderService implements IExtensionResourceLoaderService { _serviceBrand: undefined readExtensionResource = unsupported @@ -1340,7 +1406,17 @@ registerSingleton(IExplorerService, class ExplorerService implements IExplorerSe registerView = unsupported }, InstantiationType.Delayed) -registerSingleton(IExtensionStorageService, ExtensionStorageService, InstantiationType.Delayed) +registerSingleton(IExtensionStorageService, class ExtensionStorageService implements IExtensionStorageService { + _serviceBrand: undefined + getExtensionState = () => undefined + getExtensionStateRaw = () => undefined + setExtensionState = unsupported + onDidChangeExtensionStorageToSync = Event.None + setKeysForSync = unsupported + getKeysForSync = () => undefined + addToMigrationList = unsupported + getSourceExtensionToMigrate = () => undefined +}, InstantiationType.Delayed) registerSingleton(IGlobalExtensionEnablementService, class GlobalExtensionEnablementService implements IGlobalExtensionEnablementService { _serviceBrand: undefined @@ -1374,8 +1450,17 @@ registerSingleton(ILanguagePackService, class LanguagePackService implements ILa } }, InstantiationType.Delayed) -registerSingleton(ITreeViewsDnDService, TreeViewsDnDService, InstantiationType.Delayed) -registerSingleton(ITreeViewsService, TreeviewsService, InstantiationType.Delayed) +registerSingleton(ITreeViewsDnDService, class TreeViewsDnDService implements ITreeViewsDnDService { + _serviceBrand: undefined + removeDragOperationTransfer = unsupported + addDragOperationTransfer = unsupported +}, InstantiationType.Delayed) +registerSingleton(ITreeViewsService, class TreeviewsService implements ITreeViewsService { + _serviceBrand: undefined + getRenderedTreeElement = unsupported + addRenderedTreeItemElement = unsupported + removeRenderedTreeItemElement = unsupported +}, InstantiationType.Delayed) registerSingleton(IBreadcrumbsService, class BreadcrumbsService implements IBreadcrumbsService { _serviceBrand: undefined @@ -1838,9 +1923,22 @@ registerSingleton(INotebookEditorModelResolverService, class NotebookEditorModel resolve = unsupported }, InstantiationType.Delayed) -registerSingleton(IWorkingCopyEditorService, WorkingCopyEditorService, InstantiationType.Delayed) -registerSingleton(IUserActivityService, UserActivityService, InstantiationType.Delayed) -registerSingleton(ICanonicalUriService, CanonicalUriService, InstantiationType.Delayed) +registerSingleton(IWorkingCopyEditorService, class WorkingCopyEditorService implements IWorkingCopyEditorService { + _serviceBrand: undefined + onDidRegisterHandler = Event.None + registerHandler = () => Disposable.None + findEditor = () => undefined +}, InstantiationType.Delayed) +registerSingleton(IUserActivityService, class UserActivityService implements IUserActivityService { + _serviceBrand: undefined + isActive = false + onDidChangeIsActive = Event.None + markActive = unsupported +}, InstantiationType.Delayed) +registerSingleton(ICanonicalUriService, class CanonicalUriService implements ICanonicalUriService { + _serviceBrand: undefined + registerCanonicalUriProvider = unsupported +}, InstantiationType.Delayed) registerSingleton(IExtensionStatusBarItemService, class ExtensionStatusBarItemService implements IExtensionStatusBarItemService { _serviceBrand: undefined onDidChange = Event.None @@ -1995,7 +2093,11 @@ registerSingleton(IRemoteAuthorityResolverService, class RemoteAuthorityResolver _setCanonicalURIProvider = unsupported }, InstantiationType.Delayed) -registerSingleton(IExternalUriOpenerService, ExternalUriOpenerService, InstantiationType.Delayed) +registerSingleton(IExternalUriOpenerService, class ExternalUriOpenerService implements IExternalUriOpenerService { + _serviceBrand: undefined + registerExternalOpenerProvider = unsupported + getOpener = async () => undefined +}, InstantiationType.Delayed) registerSingleton(IAccessibleViewService, class AccessibleViewService implements IAccessibleViewService { showLastProvider = unsupported @@ -2081,7 +2183,12 @@ registerSingleton(IRemoteExtensionsScannerService, class RemoteExtensionsScanner } }, InstantiationType.Delayed) -registerSingleton(IURLService, BrowserURLService, InstantiationType.Delayed) +registerSingleton(IURLService, class URLService implements IURLService { + _serviceBrand: undefined + create = unsupported + open = async () => false + registerHandler = unsupported +}, InstantiationType.Delayed) registerSingleton(IRemoteSocketFactoryService, class RemoteSocketFactoryService implements IRemoteSocketFactoryService { _serviceBrand: undefined diff --git a/src/service-override/base.ts b/src/service-override/base.ts new file mode 100644 index 00000000..da4f0a32 --- /dev/null +++ b/src/service-override/base.ts @@ -0,0 +1,33 @@ +import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' +import { IRequestService } from 'vs/platform/request/common/request' +import { IDecorationsService } from 'vs/workbench/services/decorations/common/decorations' +import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing' +import { ITreeViewsDnDService } from 'vs/editor/common/services/treeViewsDndService' +import { ITreeViewsService } from 'vs/workbench/services/views/browser/treeViewsService' +import { TreeViewsDnDService } from 'vs/editor/common/services/treeViewsDnd' +import { IURLService } from 'vs/platform/url/common/url' +import { JSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditingService' +import { DecorationsService } from 'vs/workbench/services/decorations/browser/decorationsService' +import { BrowserRequestService } from 'vs/workbench/services/request/browser/requestService' +import { BrowserURLService } from 'vs/workbench/services/url/browser/urlService' +import { TreeviewsService } from 'vs/workbench/services/views/common/treeViewsService' +import { CanonicalUriService } from 'vs/workbench/services/workspaces/common/canonicalUriService' +import { ICanonicalUriService } from 'vs/platform/workspace/common/canonicalUri' +import { IUserActivityService, UserActivityService } from 'vs/workbench/services/userActivity/common/userActivityService' +import { IDownloadService } from 'vs/platform/download/common/download' +import { DownloadService } from 'vs/platform/download/common/downloadService' + +export default function getServiceOverride (): IEditorOverrideServices { + return { + [IRequestService.toString()]: new SyncDescriptor(BrowserRequestService, [], true), + [IDownloadService.toString()]: new SyncDescriptor(DownloadService, [], true), + [IDecorationsService.toString()]: new SyncDescriptor(DecorationsService, [], true), + [IJSONEditingService.toString()]: new SyncDescriptor(JSONEditingService, [], true), + [ITreeViewsDnDService.toString()]: new SyncDescriptor(TreeViewsDnDService, [], true), + [ITreeViewsService.toString()]: new SyncDescriptor(TreeviewsService, [], true), + [IURLService.toString()]: new SyncDescriptor(BrowserURLService, [], true), + [ICanonicalUriService.toString()]: new SyncDescriptor(CanonicalUriService, [], false), + [IUserActivityService.toString()]: new SyncDescriptor(UserActivityService, [], true) + } +} diff --git a/src/service-override/files.ts b/src/service-override/files.ts index 02580dae..f019b8e3 100644 --- a/src/service-override/files.ts +++ b/src/service-override/files.ts @@ -18,8 +18,13 @@ import { IndexedDB } from 'vs/base/browser/indexedDB' import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry' import { BufferLogger } from 'vs/platform/log/common/bufferLog' import { localizeWithPath } from 'vs/nls' -import { logsPath } from '../workbench' +import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles' +import { BrowserTextFileService } from 'vs/workbench/services/textfile/browser/browserTextFileService' +import { FilesConfigurationService, IFilesConfigurationService } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService' +import { BrowserElevatedFileService } from 'vs/workbench/services/files/browser/elevatedFileService' +import { IElevatedFileService } from 'vs/workbench/services/files/common/elevatedFileService' import { checkServicesNotInitialized, registerServiceInitializePreParticipant } from '../lifecycle' +import { logsPath } from '../workbench' abstract class RegisteredFile { private ctime: number @@ -561,7 +566,10 @@ registerServiceInitializePreParticipant(async (accessor) => { export default function getServiceOverride (): IEditorOverrideServices { return { - [IFileService.toString()]: new SyncDescriptor(MemoryFileService, [fileLogger], true) + [IFileService.toString()]: new SyncDescriptor(MemoryFileService, [fileLogger], true), + [ITextFileService.toString()]: new SyncDescriptor(BrowserTextFileService, [], true), + [IFilesConfigurationService.toString()]: new SyncDescriptor(FilesConfigurationService, [], true), + [IElevatedFileService.toString()]: new SyncDescriptor(BrowserElevatedFileService, [], true) } } diff --git a/src/service-override/host.ts b/src/service-override/host.ts new file mode 100644 index 00000000..e0c321cb --- /dev/null +++ b/src/service-override/host.ts @@ -0,0 +1,13 @@ +import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' +import { IHostService } from 'vs/workbench/services/host/browser/host' +import { IHostColorSchemeService } from 'vs/workbench/services/themes/common/hostColorSchemeService' +import { BrowserHostService } from 'vs/workbench/services/host/browser/browserHostService' +import { BrowserHostColorSchemeService } from 'vs/workbench/services/themes/browser/browserHostColorSchemeService' + +export default function getServiceOverride (): IEditorOverrideServices { + return { + [IHostService.toString()]: new SyncDescriptor(BrowserHostService, [], true), + [IHostColorSchemeService.toString()]: new SyncDescriptor(BrowserHostColorSchemeService, [], true) + } +} diff --git a/src/service-override/languages.ts b/src/service-override/languages.ts index dc2e6fed..4e178650 100644 --- a/src/service-override/languages.ts +++ b/src/service-override/languages.ts @@ -7,6 +7,7 @@ import { Registry } from 'vs/platform/registry/common/platform' import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle' import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' import { ILanguageService } from 'vs/editor/common/languages/language' +import { ILanguageStatusService, LanguageStatusServiceImpl } from 'vs/workbench/services/languageStatus/common/languageStatusService' import getFileServiceOverride from './files' export class ExtensionPoints implements IWorkbenchContribution { @@ -22,6 +23,7 @@ Registry.as(WorkbenchExtensions.Workbench).regi export default function getServiceOverride (): IEditorOverrideServices { return { ...getFileServiceOverride(), - [ILanguageService.toString()]: new SyncDescriptor(WorkbenchLanguageService, [], false) + [ILanguageService.toString()]: new SyncDescriptor(WorkbenchLanguageService, [], false), + [ILanguageStatusService.toString()]: new SyncDescriptor(LanguageStatusServiceImpl, [], true) } } diff --git a/src/service-override/output.ts b/src/service-override/output.ts index 961019a1..c2ac0ced 100644 --- a/src/service-override/output.ts +++ b/src/service-override/output.ts @@ -3,6 +3,7 @@ import { LogLevel } from 'vs/platform/log/common/log' import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { OutputService } from 'vs/workbench/contrib/output/browser/outputServices' import { IOutputService } from 'vs/workbench/services/output/common/output' +import { IOutputChannelModelService, OutputChannelModelService } from 'vs/workbench/contrib/output/common/outputChannelModelService' import getLogServiceOverride from './log' import 'vs/workbench/contrib/output/browser/output.contribution' @@ -15,7 +16,8 @@ function getServiceOverride (logLevel?: LogLevel): IEditorOverrideServices function getServiceOverride (logLevel?: LogLevel): IEditorOverrideServices { return { ...getLogServiceOverride(logLevel), - [IOutputService.toString()]: new SyncDescriptor(OutputService, undefined, true) + [IOutputService.toString()]: new SyncDescriptor(OutputService, undefined, true), + [IOutputChannelModelService.toString()]: new SyncDescriptor(OutputChannelModelService, undefined, true) } } diff --git a/src/service-override/remoteAgent.ts b/src/service-override/remoteAgent.ts index 9296911f..9706d932 100644 --- a/src/service-override/remoteAgent.ts +++ b/src/service-override/remoteAgent.ts @@ -12,6 +12,7 @@ import { URI } from 'vs/base/common/uri' import { IFileService } from 'vs/platform/files/common/files' import { ILogService } from 'vs/platform/log/common/log' import { IRemoteExplorerService, RemoteExplorerService } from 'vs/workbench/services/remote/common/remoteExplorerService' +import { ExternalUriOpenerService, IExternalUriOpenerService } from 'vs/workbench/contrib/externalUriOpener/common/externalUriOpenerService' import getEnvironmentServiceOverride from './environment' import { registerServiceInitializePreParticipant } from '../lifecycle' import 'vs/workbench/contrib/remote/common/remote.contribution' @@ -34,6 +35,7 @@ export default function getServiceOverride (connectionToken?: Promise | [IRemoteAgentService.toString()]: new SyncDescriptor(RemoteAgentService, [], true), [IRemoteSocketFactoryService.toString()]: new SyncDescriptor(CustomRemoteSocketFactoryService, [], true), [IRemoteAuthorityResolverService.toString()]: new SyncDescriptor(RemoteAuthorityResolverService, [true, connectionToken, resourceUriProvider]), - [IRemoteExplorerService.toString()]: new SyncDescriptor(RemoteExplorerService, [], true) + [IRemoteExplorerService.toString()]: new SyncDescriptor(RemoteExplorerService, [], true), + [IExternalUriOpenerService.toString()]: new SyncDescriptor(ExternalUriOpenerService, [], true) } } diff --git a/src/service-override/storage.ts b/src/service-override/storage.ts index 66435376..b63f3006 100644 --- a/src/service-override/storage.ts +++ b/src/service-override/storage.ts @@ -10,6 +10,7 @@ import { BrowserStorageService } from 'vs/workbench/services/storage/browser/sto import { ILogService } from 'vs/platform/log/common/log' import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' import { IHostService } from 'vs/workbench/services/host/browser/host' +import { ExtensionStorageService, IExtensionStorageService } from 'vs/platform/extensionManagement/common/extensionStorage' import { registerServiceInitializePreParticipant } from '../lifecycle' import { getWorkspaceIdentifier } from '../workbench' @@ -156,11 +157,13 @@ class InjectedBrowserStorageService extends BrowserStorageService { export default function getStorageServiceOverride (provider?: IStorageProvider): IEditorOverrideServices { if (provider != null) { return { - [IStorageService.toString()]: new SyncDescriptor(ExternalStorageService, [provider], true) + [IStorageService.toString()]: new SyncDescriptor(ExternalStorageService, [provider], true), + [IExtensionStorageService.toString()]: new SyncDescriptor(ExtensionStorageService, [], true) } } else { return { - [IStorageService.toString()]: new SyncDescriptor(InjectedBrowserStorageService, [], true) + [IStorageService.toString()]: new SyncDescriptor(InjectedBrowserStorageService, [], true), + [IExtensionStorageService.toString()]: new SyncDescriptor(ExtensionStorageService, [], true) } } } diff --git a/src/service-override/workingCopy.ts b/src/service-override/workingCopy.ts index 854307c5..0d93c6b4 100644 --- a/src/service-override/workingCopy.ts +++ b/src/service-override/workingCopy.ts @@ -2,11 +2,16 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standalone import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { BrowserWorkingCopyBackupService } from 'vs/workbench/services/workingCopy/browser/workingCopyBackupService' import { IWorkingCopyBackupService } from 'vs/workbench/services/workingCopy/common/workingCopyBackup' +import { IWorkingCopyService, WorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService' +import { IWorkingCopyEditorService, WorkingCopyEditorService } from 'vs/workbench/services/workingCopy/common/workingCopyEditorService' import getFileServiceOverride from './files' export default function getServiceOverride (): IEditorOverrideServices { return { ...getFileServiceOverride(), - [IWorkingCopyBackupService.toString()]: new SyncDescriptor(BrowserWorkingCopyBackupService, [], false) + [IWorkingCopyBackupService.toString()]: new SyncDescriptor(BrowserWorkingCopyBackupService, [], false), + [IWorkingCopyService.toString()]: new SyncDescriptor(WorkingCopyService, [], false), + [IWorkingCopyEditorService.toString()]: new SyncDescriptor(WorkingCopyEditorService, [], false) + } } diff --git a/src/services.ts b/src/services.ts index b6d8d3a6..619add1f 100644 --- a/src/services.ts +++ b/src/services.ts @@ -13,13 +13,15 @@ import { IProductService } from 'vs/platform/product/common/productService' import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle' import { IWorkbenchConstructionOptions } from 'vs/workbench/browser/web.api' import { IProductConfiguration } from 'vs/base/common/product' -import getLayoutServiceOverride from './service-override/layout' -import getEnvironmentServiceOverride from './service-override/environment' -import getExtensionsServiceOverride from './service-override/extensions' -import getFileServiceOverride from './service-override/files' -import getQuickAccessOverride from './service-override/quickaccess' -import { checkServicesNotInitialized, checkServicesReady, serviceInitializedBarrier, serviceInitializedEmitter, startup, waitServicesReady } from './lifecycle' import { initialize as initializeWorkbench } from './workbench' +import { checkServicesNotInitialized, checkServicesReady, serviceInitializedBarrier, serviceInitializedEmitter, startup, waitServicesReady } from './lifecycle' +import getQuickAccessOverride from './service-override/quickaccess' +import getFileServiceOverride from './service-override/files' +import getExtensionsServiceOverride from './service-override/extensions' +import getEnvironmentServiceOverride from './service-override/environment' +import getLayoutServiceOverride from './service-override/layout' +import getHostServiceOverride from './service-override/host' +import getBaseServiceOverride from './service-override/base' export async function initialize (overrides: IEditorOverrideServices, container: HTMLElement = document.body, configuration: IWorkbenchConstructionOptions = {}): Promise { checkServicesNotInitialized() @@ -46,6 +48,8 @@ export async function initialize (overrides: IEditorOverrideServices, container: ...getExtensionsServiceOverride(), ...getFileServiceOverride(), ...getQuickAccessOverride(), + ...getHostServiceOverride(), + ...getBaseServiceOverride(), ...overrides }) From 4e569cdece05856abc50a14b76fee23977832afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 10 Jan 2024 16:13:12 +0100 Subject: [PATCH 2/5] fix: missing services overrides --- scripts/vscode.patch | 26 ++++++++++++++++++++++++++ src/missing-services.ts | 14 ++++++++++++-- src/service-override/debug.ts | 5 ++++- src/service-override/lifecycle.ts | 4 +++- src/service-override/notebook.ts | 5 ++++- src/service-override/terminal.ts | 4 +++- src/service-override/userDataSync.ts | 8 ++++++-- 7 files changed, 58 insertions(+), 8 deletions(-) diff --git a/scripts/vscode.patch b/scripts/vscode.patch index 5a542a18..ffb7eda9 100644 --- a/scripts/vscode.patch +++ b/scripts/vscode.patch @@ -1934,6 +1934,19 @@ index 9c886825943..116cc28ed20 100644 } } +diff --git a/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts b/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts +index 08449bd2cd7..f82ac191725 100644 +--- a/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts ++++ b/src/vs/workbench/contrib/debug/browser/extensionHostDebugService.ts +@@ -19,7 +19,7 @@ import { IBrowserWorkbenchEnvironmentService } from 'vs/workbench/services/envir + import { IHostService } from 'vs/workbench/services/host/browser/host'; + import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; + +-class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient implements IExtensionHostDebugService { ++export class BrowserExtensionHostDebugService extends ExtensionHostDebugChannelClient implements IExtensionHostDebugService { + + private static readonly LAST_EXTENSION_DEVELOPMENT_WORKSPACE_KEY = 'debug.lastExtensionDevelopmentWorkspace'; + diff --git a/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.ts b/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.ts index 295c3fd59cb..d3aa77446b4 100644 --- a/src/vs/workbench/contrib/extensions/browser/abstractRuntimeExtensionsEditor.ts @@ -2814,6 +2827,19 @@ index a77c2db9446..2b9a8c19926 100644 } protected override shouldFlushWhenIdle(): boolean { +diff --git a/src/vs/workbench/services/terminal/common/embedderTerminalService.ts b/src/vs/workbench/services/terminal/common/embedderTerminalService.ts +index 5e322af7a0f..07b4abdd636 100644 +--- a/src/vs/workbench/services/terminal/common/embedderTerminalService.ts ++++ b/src/vs/workbench/services/terminal/common/embedderTerminalService.ts +@@ -52,7 +52,7 @@ export interface IEmbedderTerminalPty { + // setDimensions?(dimensions: TerminalDimensions): void; + } + +-class EmbedderTerminalService implements IEmbedderTerminalService { ++export class EmbedderTerminalService implements IEmbedderTerminalService { + declare _serviceBrand: undefined; + + private readonly _onDidCreateTerminal = new Emitter(); diff --git a/src/vs/workbench/services/textMate/browser/backgroundTokenization/textMateWorkerTokenizerController.ts b/src/vs/workbench/services/textMate/browser/backgroundTokenization/textMateWorkerTokenizerController.ts index 850b58e1e6c..2eb835fa2b6 100644 --- a/src/vs/workbench/services/textMate/browser/backgroundTokenization/textMateWorkerTokenizerController.ts diff --git a/src/missing-services.ts b/src/missing-services.ts index 25ed55f2..c59f7707 100644 --- a/src/missing-services.ts +++ b/src/missing-services.ts @@ -26,7 +26,7 @@ import { StandaloneServices } from 'vs/editor/standalone/browser/standaloneServi import { ICodeEditorService } from 'vs/editor/browser/services/codeEditorService' import { IUserDataProfilesService, toUserDataProfile } from 'vs/platform/userDataProfile/common/userDataProfile' import { IPolicyService } from 'vs/platform/policy/common/policy' -import { IUserDataProfileImportExportService, IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' +import { IUserDataProfileImportExportService, IUserDataProfileManagementService, IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' import { UserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfileService' import { ISnippetsService } from 'vs/workbench/contrib/snippets/browser/snippets' import { AbstractLoggerService, ILogger, ILoggerService, LogLevel, NullLogger } from 'vs/platform/log/common/log' @@ -1484,7 +1484,7 @@ registerSingleton(IUpdateService, class UpdateService implements IUpdateService downloadUpdate = unsupported applyUpdate = unsupported quitAndInstall = unsupported - isLatestVersion = unsupported + isLatestVersion = async () => true _applySpecificUpdate = unsupported }, InstantiationType.Eager) @@ -2925,3 +2925,13 @@ registerSingleton(IUserDataSyncUtilService, class UserDataSyncUtilService implem resolveFormattingOptions = unsupported resolveDefaultIgnoredSettings = unsupported }, InstantiationType.Delayed) + +registerSingleton(IUserDataProfileManagementService, class UserDataProfileManagementService implements IUserDataProfileManagementService { + _serviceBrand: undefined + createAndEnterProfile = unsupported + createAndEnterTransientProfile = unsupported + removeProfile = unsupported + updateProfile = unsupported + switchProfile = unsupported + getBuiltinProfileTemplates = unsupported +}, InstantiationType.Delayed) diff --git a/src/service-override/debug.ts b/src/service-override/debug.ts index f67caf62..10b791de 100644 --- a/src/service-override/debug.ts +++ b/src/service-override/debug.ts @@ -7,6 +7,8 @@ import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeat import { ConfigurationResolverService } from 'vs/workbench/services/configurationResolver/browser/configurationResolverService' import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver' import { IAction } from 'vs/base/common/actions' +import { IExtensionHostDebugService } from 'vs/platform/debug/common/extensionHostDebug' +import { BrowserExtensionHostDebugService } from 'vs/workbench/contrib/debug/browser/extensionHostDebugService' import getLayoutServiceOverride from './layout' import 'vs/workbench/contrib/debug/browser/debug.contribution' @@ -23,6 +25,7 @@ export default function getServiceOverride (): IEditorOverrideServices { ...getLayoutServiceOverride(), [ILanguageFeaturesService.toString()]: new SyncDescriptor(LanguageFeaturesService, [], true), // To restore inlineValuesProvider [IDebugService.toString()]: new SyncDescriptor(DebugService, [], true), - [IConfigurationResolverService.toString()]: new SyncDescriptor(ConfigurationResolverService, [], true) + [IConfigurationResolverService.toString()]: new SyncDescriptor(ConfigurationResolverService, [], true), + [IExtensionHostDebugService.toString()]: new SyncDescriptor(BrowserExtensionHostDebugService, [], true) } } diff --git a/src/service-override/lifecycle.ts b/src/service-override/lifecycle.ts index ba9a8a79..4160cf4e 100644 --- a/src/service-override/lifecycle.ts +++ b/src/service-override/lifecycle.ts @@ -2,9 +2,11 @@ import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standalone import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' import { BrowserLifecycleService } from 'vs/workbench/services/lifecycle/browser/lifecycleService' import { ILifecycleService } from 'vs/workbench/services/lifecycle/common/lifecycle' +import { ITimerService, TimerService } from 'vs/workbench/services/timer/browser/timerService' export default function getServiceOverride (): IEditorOverrideServices { return { - [ILifecycleService.toString()]: new SyncDescriptor(BrowserLifecycleService) + [ILifecycleService.toString()]: new SyncDescriptor(BrowserLifecycleService), + [ITimerService.toString()]: new SyncDescriptor(TimerService) } } diff --git a/src/service-override/notebook.ts b/src/service-override/notebook.ts index 3a5ac41c..34dcf26c 100644 --- a/src/service-override/notebook.ts +++ b/src/service-override/notebook.ts @@ -23,6 +23,8 @@ import { INotebookExecutionStateService } from 'vs/workbench/contrib/notebook/co import { NotebookKernelHistoryService } from 'vs/workbench/contrib/notebook/browser/services/notebookKernelHistoryServiceImpl' import { INotebookLoggingService } from 'vs/workbench/contrib/notebook/common/notebookLoggingService' import { NotebookLoggingService } from 'vs/workbench/contrib/notebook/browser/services/notebookLoggingServiceImpl' +import { INotebookSearchService } from 'vs/workbench/contrib/search/common/notebookSearch' +import { NotebookSearchService } from 'vs/workbench/contrib/search/browser/notebookSearch/notebookSearchService' import 'vs/workbench/contrib/notebook/browser/notebook.contribution' export default function getServiceOverride (): IEditorOverrideServices { @@ -38,6 +40,7 @@ export default function getServiceOverride (): IEditorOverrideServices { [INotebookExecutionStateService.toString()]: new SyncDescriptor(NotebookExecutionStateService, [], true), [INotebookRendererMessagingService.toString()]: new SyncDescriptor(NotebookRendererMessagingService, [], true), [INotebookKeymapService.toString()]: new SyncDescriptor(NotebookKeymapService, [], true), - [INotebookLoggingService.toString()]: new SyncDescriptor(NotebookLoggingService, [], true) + [INotebookLoggingService.toString()]: new SyncDescriptor(NotebookLoggingService, [], true), + [INotebookSearchService.toString()]: new SyncDescriptor(NotebookSearchService, [], true) } } diff --git a/src/service-override/terminal.ts b/src/service-override/terminal.ts index 6cc31df0..ab08b75a 100644 --- a/src/service-override/terminal.ts +++ b/src/service-override/terminal.ts @@ -22,6 +22,7 @@ import { Registry } from 'vs/platform/registry/common/platform' import { IProcessEnvironment } from 'vs/base/common/platform' import { PerformanceMark } from 'vs/base/common/performance' import { DeferredPromise } from 'vs/base/common/async' +import { EmbedderTerminalService, IEmbedderTerminalService } from 'vs/workbench/services/terminal/common/embedderTerminalService' import { unsupported } from '../tools' import 'vs/workbench/contrib/terminal/browser/terminal.contribution' import 'vs/workbench/contrib/terminal/terminal.all' @@ -139,7 +140,8 @@ export default function getServiceOverride (backend?: ITerminalBackend): IEditor [ITerminalLinkProviderService.toString()]: new SyncDescriptor(TerminalLinkProviderService, [], true), [ITerminalProfileResolverService.toString()]: new SyncDescriptor(ElectronTerminalProfileResolverService, [], true), [IEnvironmentVariableService.toString()]: new SyncDescriptor(EnvironmentVariableService, [], true), - [ITerminalQuickFixService.toString()]: new SyncDescriptor(TerminalQuickFixService, [], true) + [ITerminalQuickFixService.toString()]: new SyncDescriptor(TerminalQuickFixService, [], true), + [IEmbedderTerminalService.toString()]: new SyncDescriptor(EmbedderTerminalService, [], true) } } diff --git a/src/service-override/userDataSync.ts b/src/service-override/userDataSync.ts index 7736adf0..6e89144a 100644 --- a/src/service-override/userDataSync.ts +++ b/src/service-override/userDataSync.ts @@ -26,12 +26,14 @@ import { IProductService } from 'vs/platform/product/common/productService' import { IRequestService } from 'vs/platform/request/common/request' import { ILogService } from 'vs/platform/log/common/log' import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity' -import { IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' +import { IUserDataProfileImportExportService, IUserDataProfileManagementService, IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile' import { mark } from 'vs/base/common/performance' import type { WorkspaceService } from 'vs/workbench/services/configuration/browser/configurationService' import { timeout } from 'vs/base/common/async' import { IWorkbenchConfigurationService } from 'vs/workbench/services/configuration/common/configuration' import { UserDataSyncUtilService } from 'vs/workbench/services/userDataSync/common/userDataSyncUtil' +import { UserDataProfileImportExportService } from 'vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService' +import { UserDataProfileManagementService } from 'vs/workbench/services/userDataProfile/browser/userDataProfileManagement' import { registerServiceInitializePostParticipant } from '../lifecycle' function isWorkspaceService (configurationService: IWorkbenchConfigurationService): configurationService is WorkspaceService { @@ -106,6 +108,8 @@ export default function getServiceOverride (): IEditorOverrideServices { [IUserDataSyncLocalStoreService.toString()]: new SyncDescriptor(UserDataSyncLocalStoreService, [], true), [IUserDataSyncWorkbenchService.toString()]: new SyncDescriptor(UserDataSyncWorkbenchService, [], true), [IUserDataInitializationService.toString()]: new SyncDescriptor(InjectedUserDataInitializationService, [], true), - [IUserDataSyncUtilService.toString()]: new SyncDescriptor(UserDataSyncUtilService, [], true) + [IUserDataSyncUtilService.toString()]: new SyncDescriptor(UserDataSyncUtilService, [], true), + [IUserDataProfileImportExportService.toString()]: new SyncDescriptor(UserDataProfileImportExportService, [], true), + [IUserDataProfileManagementService.toString()]: new SyncDescriptor(UserDataProfileManagementService, [], true) } } From c14a54d6177984f5e362f7131e9d006db8c09a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 10 Jan 2024 16:54:09 +0100 Subject: [PATCH 3/5] fix(demo): install new service overrides --- demo/package-lock.json | 106 +++++++++++++++++++++++++++-------------- demo/package.json | 2 + 2 files changed, 71 insertions(+), 37 deletions(-) diff --git a/demo/package-lock.json b/demo/package-lock.json index 123e0aa8..dad75c5e 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -12,6 +12,7 @@ "@codingame/monaco-vscode-accessibility-service-override": "file:../dist/service-override-accessibility", "@codingame/monaco-vscode-audio-cue-service-override": "file:../dist/service-override-audio-cue", "@codingame/monaco-vscode-authentication-service-override": "file:../dist/service-override-authentication", + "@codingame/monaco-vscode-base-service-override": "file:../dist/service-override-base", "@codingame/monaco-vscode-bat-default-extension": "file:../dist/default-extension-bat", "@codingame/monaco-vscode-bulk-edit-service-override": "file:../dist/service-override-bulk-edit", "@codingame/monaco-vscode-chat-service-override": "file:../dist/service-override-chat", @@ -48,6 +49,7 @@ "@codingame/monaco-vscode-gulp-default-extension": "file:../dist/default-extension-gulp", "@codingame/monaco-vscode-handlebars-default-extension": "file:../dist/default-extension-handlebars", "@codingame/monaco-vscode-hlsl-default-extension": "file:../dist/default-extension-hlsl", + "@codingame/monaco-vscode-host-service-override": "file:../dist/service-override-host", "@codingame/monaco-vscode-html-default-extension": "file:../dist/default-extension-html", "@codingame/monaco-vscode-html-language-features-default-extension": "file:../dist/default-extension-html-language-features", "@codingame/monaco-vscode-ini-default-extension": "file:../dist/default-extension-ini", @@ -883,9 +885,11 @@ "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { + "@codingame/monaco-vscode-base-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-environment-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-extensions-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", + "@codingame/monaco-vscode-host-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", "monaco-editor": "0.45.0", @@ -962,6 +966,14 @@ "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, + "../dist/service-override-base": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.45.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, "../dist/service-override-bulk-edit": { "name": "@codingame/monaco-vscode-bulk-edit-service-override", "version": "0.0.0-semantic-release", @@ -985,9 +997,11 @@ "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { + "@codingame/monaco-vscode-base-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-environment-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-extensions-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", + "@codingame/monaco-vscode-host-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", "monaco-editor": "0.45.0", @@ -1062,6 +1076,14 @@ "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, + "../dist/service-override-host": { + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.45.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, "../dist/service-override-keybindings": { "name": "@codingame/monaco-vscode-keybindings-service-override", "version": "0.0.0-semantic-release", @@ -1326,10 +1348,12 @@ "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { + "@codingame/monaco-vscode-base-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-bulk-edit-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-environment-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-extensions-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-files-service-override": "0.0.0-semantic-release", + "@codingame/monaco-vscode-host-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-keybindings-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-layout-service-override": "0.0.0-semantic-release", "@codingame/monaco-vscode-quickaccess-service-override": "0.0.0-semantic-release", @@ -1494,6 +1518,10 @@ "resolved": "../dist/service-override-authentication", "link": true }, + "node_modules/@codingame/monaco-vscode-base-service-override": { + "resolved": "../dist/service-override-base", + "link": true + }, "node_modules/@codingame/monaco-vscode-bat-default-extension": { "resolved": "../dist/default-extension-bat", "link": true @@ -1638,6 +1666,10 @@ "resolved": "../dist/default-extension-hlsl", "link": true }, + "node_modules/@codingame/monaco-vscode-host-service-override": { + "resolved": "../dist/service-override-host", + "link": true + }, "node_modules/@codingame/monaco-vscode-html-default-extension": { "resolved": "../dist/default-extension-html", "link": true @@ -2594,18 +2626,18 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.10.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.4.tgz", - "integrity": "sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==", + "version": "20.10.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.8.tgz", + "integrity": "sha512-f8nQs3cLxbAFc00vEU59yf9UyGUftkPaLGfvbVOIDdx2i1b8epBqj2aNGyP19fiyXWvlmZ7qC1XLjAzw/OKIeA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", "dev": true }, "node_modules/@types/range-parser": { @@ -2645,9 +2677,9 @@ } }, "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", - "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", + "version": "18.19.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.6.tgz", + "integrity": "sha512-X36s5CXMrrJOs2lQCdDF68apW4Rfx9ixYMawlepwmE4Anezv/AV2LSpKD1Ub8DAc+urp5bk0BGZ6NtmBitfnsg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -2681,9 +2713,9 @@ } }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2979,26 +3011,26 @@ } }, "node_modules/docker-modem": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.1.tgz", - "integrity": "sha512-vqrE/nrweCyzmCpVpdFRC41qS+tfTF+IoUKlTZr52O82urbUqdfyJBGWMvT01pYUprWepLr8IkyVTEWJKRTQSg==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz", + "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==", "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", "split-ca": "^1.0.1", - "ssh2": "^1.11.0" + "ssh2": "^1.15.0" }, "engines": { "node": ">= 8.0" } }, "node_modules/dockerode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.0.tgz", - "integrity": "sha512-3LF7/3MPz5+9RsUo91rD0MCcx0yxjC9bnbtgtVjOLKyKxlZSJ7/Kk3OPAgARlwlWHqXwAGYhmkAHYx7IwD0tJQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz", + "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==", "dependencies": { "@balena/dockerignore": "^1.0.2", - "docker-modem": "^5.0.0", + "docker-modem": "^5.0.3", "tar-fs": "~2.0.1" }, "engines": { @@ -3147,9 +3179,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -3594,9 +3626,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -3886,9 +3918,9 @@ "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==" }, "node_modules/ssh2": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.14.0.tgz", - "integrity": "sha512-AqzD1UCqit8tbOKoj6ztDDi1ffJZ2rV2SwlgrVVrHPkV5vWqGJOVp5pmtj18PunkPJAuKQsnInyKV+/Nb2bUnA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", "hasInstallScript": true, "dependencies": { "asn1": "^0.2.6", @@ -3898,8 +3930,8 @@ "node": ">=10.16.0" }, "optionalDependencies": { - "cpu-features": "~0.0.8", - "nan": "^2.17.0" + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "node_modules/statuses": { @@ -3965,9 +3997,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -4143,9 +4175,9 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "engines": { "node": ">=10.0.0" }, diff --git a/demo/package.json b/demo/package.json index aff8568e..85b8036a 100644 --- a/demo/package.json +++ b/demo/package.json @@ -172,6 +172,8 @@ "@codingame/monaco-vscode-yaml-default-extension": "file:../dist/default-extension-yaml", "@codingame/monaco-vscode-welcome-service-override": "file:../dist/service-override-welcome", "@codingame/monaco-vscode-user-data-sync-service-override": "file:../dist/service-override-user-data-sync", + "@codingame/monaco-vscode-base-service-override": "file:../dist/service-override-base", + "@codingame/monaco-vscode-host-service-override": "file:../dist/service-override-host", "ansi-colors": "^4.1.3", "dockerode": "^4.0.0", "express": "^4.18.2", From 951251c812fdc94ed15c700739609539ac707986 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 10 Jan 2024 17:28:10 +0100 Subject: [PATCH 4/5] feat: ai service override --- src/service-override/ai.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/service-override/ai.ts diff --git a/src/service-override/ai.ts b/src/service-override/ai.ts new file mode 100644 index 00000000..200bf80a --- /dev/null +++ b/src/service-override/ai.ts @@ -0,0 +1,12 @@ +import { IEditorOverrideServices } from 'vs/editor/standalone/browser/standaloneServices' +import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors' +import { AiRelatedInformationService } from 'vs/workbench/services/aiRelatedInformation/common/aiRelatedInformationService' +import { IAiRelatedInformationService } from 'vs/workbench/services/aiRelatedInformation/common/aiRelatedInformation' +import { IAiEmbeddingVectorService } from 'vs/workbench/services/aiEmbeddingVector/common/aiEmbeddingVectorService' + +export default function getServiceOverride (): IEditorOverrideServices { + return { + [IAiRelatedInformationService.toString()]: new SyncDescriptor(AiRelatedInformationService, [], true), + [IAiEmbeddingVectorService.toString()]: new SyncDescriptor(AiRelatedInformationService, [], true) + } +} From f1531588276754fe2bcbf0aed5b12264ed71d820 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Wed, 10 Jan 2024 17:37:40 +0100 Subject: [PATCH 5/5] feat(demo): demo ai service override --- demo/package-lock.json | 16 ++++++++++++++++ demo/package.json | 1 + demo/src/features/ai.ts | 34 ++++++++++++++++++++++++++++++++++ demo/src/main.ts | 1 + demo/src/setup.ts | 4 +++- 5 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 demo/src/features/ai.ts diff --git a/demo/package-lock.json b/demo/package-lock.json index dad75c5e..b0e62e21 100644 --- a/demo/package-lock.json +++ b/demo/package-lock.json @@ -10,6 +10,7 @@ "hasInstallScript": true, "dependencies": { "@codingame/monaco-vscode-accessibility-service-override": "file:../dist/service-override-accessibility", + "@codingame/monaco-vscode-ai-service-override": "file:../dist/service-override-ai", "@codingame/monaco-vscode-audio-cue-service-override": "file:../dist/service-override-audio-cue", "@codingame/monaco-vscode-authentication-service-override": "file:../dist/service-override-authentication", "@codingame/monaco-vscode-base-service-override": "file:../dist/service-override-base", @@ -948,6 +949,15 @@ "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" } }, + "../dist/service-override-ai": { + "name": "@codingame/monaco-vscode-ai-service-override", + "version": "0.0.0-semantic-release", + "license": "MIT", + "dependencies": { + "monaco-editor": "0.45.0", + "vscode": "npm:@codingame/monaco-vscode-api@^0.0.0-semantic-release" + } + }, "../dist/service-override-audio-cue": { "name": "@codingame/monaco-vscode-audio-cue-service-override", "version": "0.0.0-semantic-release", @@ -967,6 +977,7 @@ } }, "../dist/service-override-base": { + "name": "@codingame/monaco-vscode-base-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1077,6 +1088,7 @@ } }, "../dist/service-override-host": { + "name": "@codingame/monaco-vscode-host-service-override", "version": "0.0.0-semantic-release", "license": "MIT", "dependencies": { @@ -1510,6 +1522,10 @@ "resolved": "../dist/service-override-accessibility", "link": true }, + "node_modules/@codingame/monaco-vscode-ai-service-override": { + "resolved": "../dist/service-override-ai", + "link": true + }, "node_modules/@codingame/monaco-vscode-audio-cue-service-override": { "resolved": "../dist/service-override-audio-cue", "link": true diff --git a/demo/package.json b/demo/package.json index 85b8036a..8e8e1d41 100644 --- a/demo/package.json +++ b/demo/package.json @@ -174,6 +174,7 @@ "@codingame/monaco-vscode-user-data-sync-service-override": "file:../dist/service-override-user-data-sync", "@codingame/monaco-vscode-base-service-override": "file:../dist/service-override-base", "@codingame/monaco-vscode-host-service-override": "file:../dist/service-override-host", + "@codingame/monaco-vscode-ai-service-override": "file:../dist/service-override-ai", "ansi-colors": "^4.1.3", "dockerode": "^4.0.0", "express": "^4.18.2", diff --git a/demo/src/features/ai.ts b/demo/src/features/ai.ts new file mode 100644 index 00000000..0f6fdd50 --- /dev/null +++ b/demo/src/features/ai.ts @@ -0,0 +1,34 @@ +import { ExtensionHostKind, registerExtension } from 'vscode/extensions' + +const { getApi } = registerExtension({ + name: 'aiDemo', + publisher: 'codingame', + version: '1.0.0', + engines: { + vscode: '*' + }, + contributes: { + commands: [{ + command: 'aiSuggestedCommand', + title: 'This is a command suggested by the AI' + }] + }, + enabledApiProposals: ['aiRelatedInformation'] +}, ExtensionHostKind.LocalProcess) + +const vscode = await getApi() +vscode.commands.registerCommand('aiSuggestedCommand', () => { + void vscode.window.showInformationMessage('Hello', { + detail: 'You just run the AI suggested command', + modal: true + }) +}) +vscode.ai.registerRelatedInformationProvider(vscode.RelatedInformationType.CommandInformation, { + provideRelatedInformation () { + return [{ + type: vscode.RelatedInformationType.CommandInformation, + command: 'aiSuggestedCommand', + weight: 9999 + }] + } +}) diff --git a/demo/src/main.ts b/demo/src/main.ts index 454f907e..11e8d8dc 100644 --- a/demo/src/main.ts +++ b/demo/src/main.ts @@ -20,6 +20,7 @@ import './features/notifications' import './features/terminal' import './features/scm' import './features/testing' +import './features/ai' import '@codingame/monaco-vscode-clojure-default-extension' import '@codingame/monaco-vscode-coffeescript-default-extension' import '@codingame/monaco-vscode-cpp-default-extension' diff --git a/demo/src/setup.ts b/demo/src/setup.ts index 35b0adcb..ea1957fb 100644 --- a/demo/src/setup.ts +++ b/demo/src/setup.ts @@ -48,6 +48,7 @@ import getChatServiceOverride from '@codingame/monaco-vscode-chat-service-overri import getNotebookServiceOverride from '@codingame/monaco-vscode-notebook-service-override' import getWelcomeServiceOverride from '@codingame/monaco-vscode-welcome-service-override' import getUserDataSyncServiceOverride from '@codingame/monaco-vscode-user-data-sync-service-override' +import getAiServiceOverride from '@codingame/monaco-vscode-ai-service-override' import * as monaco from 'monaco-editor' import { registerExtension } from 'vscode/extensions' import { TerminalBackend } from './features/terminal' @@ -152,7 +153,8 @@ await initializeMonacoService({ ...getChatServiceOverride(), ...getNotebookServiceOverride(), ...getWelcomeServiceOverride(), - ...getUserDataSyncServiceOverride() + ...getUserDataSyncServiceOverride(), + ...getAiServiceOverride() }, document.body, { remoteAuthority, enableWorkspaceTrust: true,