From 309ea689f3436931f2ec678d9f8420b950a83fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Mon, 17 Aug 2026 11:26:55 +0200 Subject: [PATCH 1/2] feat: allow to force storage values --- src/service-override/storage.ts | 45 +++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 13 deletions(-) diff --git a/src/service-override/storage.ts b/src/service-override/storage.ts index b22f0939..897cc978 100644 --- a/src/service-override/storage.ts +++ b/src/service-override/storage.ts @@ -113,6 +113,7 @@ export interface DatabaseFactories { class InjectedBrowserStorageService extends BrowserStorageService { constructor( private fallbackOverride: Record | undefined, + private forcedValues: Record | undefined, private databaseFactories: DatabaseFactories = {}, @IUserDataProfileService userDataProfileService: IUserDataProfileService, @ILogService logService: ILogService, @@ -124,9 +125,12 @@ class InjectedBrowserStorageService extends BrowserStorageService { override get(key: string, scope: StorageScope, fallbackValue: string): string override get(key: string, scope: StorageScope): string | undefined override get(key: string, scope: StorageScope, fallbackValue?: string): string | undefined { - return this.getStorage(scope)?.get( - key, - (this.fallbackOverride?.[key] as string | undefined) ?? fallbackValue + return ( + (this.forcedValues?.[key] as string | undefined) ?? + this.getStorage(scope)?.get( + key, + (this.fallbackOverride?.[key] as string | undefined) ?? fallbackValue + ) ) } @@ -137,27 +141,36 @@ class InjectedBrowserStorageService extends BrowserStorageService { scope: StorageScope, fallbackValue?: boolean ): boolean | undefined { - return this.getStorage(scope)?.getBoolean( - key, - (this.fallbackOverride?.[key] as boolean | undefined) ?? fallbackValue + return ( + (this.forcedValues?.[key] as boolean | undefined) ?? + this.getStorage(scope)?.getBoolean( + key, + (this.fallbackOverride?.[key] as boolean | undefined) ?? fallbackValue + ) ) } override getNumber(key: string, scope: StorageScope, fallbackValue: number): number override getNumber(key: string, scope: StorageScope): number | undefined override getNumber(key: string, scope: StorageScope, fallbackValue?: number): number | undefined { - return this.getStorage(scope)?.getNumber( - key, - (this.fallbackOverride?.[key] as number | undefined) ?? fallbackValue + return ( + (this.forcedValues?.[key] as number | undefined) ?? + this.getStorage(scope)?.getNumber( + key, + (this.fallbackOverride?.[key] as number | undefined) ?? fallbackValue + ) ) } override getObject(key: string, scope: StorageScope, fallbackValue: object): object override getObject(key: string, scope: StorageScope): object | undefined override getObject(key: string, scope: StorageScope, fallbackValue?: object): object | undefined { - return this.getStorage(scope)?.getObject( - key, - (this.fallbackOverride?.[key] as object | undefined) ?? fallbackValue + return ( + (this.forcedValues?.[key] as object | undefined) ?? + this.getStorage(scope)?.getObject( + key, + (this.fallbackOverride?.[key] as object | undefined) ?? fallbackValue + ) ) } @@ -198,6 +211,11 @@ interface StorageServiceParameters { */ fallbackOverride?: Record + /** + * Allows to force the value of some keys + */ + forcedValues?: Record + /** * Allow to override the storage database for a specific scope (application, profile, workspace) */ @@ -206,12 +224,13 @@ interface StorageServiceParameters { export default function getStorageServiceOverride({ fallbackOverride, + forcedValues, databaseFactories }: StorageServiceParameters = {}): IEditorOverrideServices { return { [IStorageService.toString()]: new SyncDescriptor( InjectedBrowserStorageService, - [fallbackOverride, databaseFactories], + [fallbackOverride, forcedValues, databaseFactories], true ), [IExtensionStorageService.toString()]: new SyncDescriptor(ExtensionStorageService, [], true) From 04acf0e3753553c57a8c0ffca71f9285e11d1a4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mangeonjean?= Date: Mon, 17 Aug 2026 11:30:42 +0200 Subject: [PATCH 2/2] fix: add missing export --- src/service-override/chat.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/service-override/chat.ts b/src/service-override/chat.ts index b4a18aa6..5475bb2a 100644 --- a/src/service-override/chat.ts +++ b/src/service-override/chat.ts @@ -43,7 +43,8 @@ import { ChatMarkdownAnchorService } from 'vs/workbench/contrib/chat/browser/wid import { ChatEditingService } from 'vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl' import { ChatEntitlementService, - ChatEntitlement + ChatEntitlement, + type IChatEntitlementContextState } from 'vs/workbench/services/chat/common/chatEntitlementService' import { PromptsService } from 'vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl' import { IChatEntitlementService } from 'vs/workbench/services/chat/common/chatEntitlementService.service' @@ -467,4 +468,4 @@ export default function getServiceOverride({ } } -export { type IDefaultAccount, ChatEntitlement } +export { type IDefaultAccount, ChatEntitlement, type IChatEntitlementContextState }