import { IDisposable } from "../../../../base/common/lifecycle.js"; import { IObservable } from "../../../../base/common/observable.js"; import { IStorageSourceFilter } from "./aiCustomizationWorkspaceService.js"; import { IHarnessDescriptor } from "./customizationHarnessService.js"; import { PromptsType } from "./promptSyntax/promptTypes.js"; export declare const ICustomizationHarnessService: import("../../../../platform/instantiation/common/instantiation.js").ServiceIdentifier; /** * Service that manages the active customization harness and provides * per-type storage source filters based on the selected harness. * * The default (core) registration exposes a single "VS Code" harness * that shows all storage sources. The sessions window overrides this * to provide CLI-scoped harnesses. */ export interface ICustomizationHarnessService { readonly _serviceBrand: undefined; /** * The currently active harness. */ readonly activeHarness: IObservable; /** * All harnesses available in this window. * When only one harness is available the UI should hide the toggle. */ readonly availableHarnesses: IObservable; /** * Changes the active harness. The new id must be present in * `availableHarnesses`. */ setActiveHarness(id: string): void; /** * Convenience: returns the storage source filter for the active harness * and the given customization type. */ getStorageSourceFilter(type: PromptsType): IStorageSourceFilter; /** * Returns the descriptor of the currently active harness. */ getActiveDescriptor(): IHarnessDescriptor; /** * Registers an external harness contributed by an extension. * The harness appears in the UI toggle alongside static harnesses. * Returns a disposable that removes the harness when disposed. */ registerExternalHarness(descriptor: IHarnessDescriptor): IDisposable; }