Path: blob/main/src/vs/sessions/contrib/agentFeedback/browser/nullAgentFeedbackService.contribution.ts
13401 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Emitter } from '../../../../base/common/event.js';6import { Disposable } from '../../../../base/common/lifecycle.js';7import { URI } from '../../../../base/common/uri.js';8import { IRange } from '../../../../editor/common/core/range.js';9import { InstantiationType, registerSingleton } from '../../../../platform/instantiation/common/extensions.js';10import { IAgentFeedback, IAgentFeedbackChangeEvent, IAgentFeedbackNavigationBearing, IAgentFeedbackService, INavigableSessionComment } from './agentFeedbackService.js';11import { IAgentFeedbackContext } from './agentFeedbackEditorUtils.js';12import { ICodeReviewSuggestion } from '../../codeReview/browser/codeReviewService.js';1314/**15* No-op implementation of {@link IAgentFeedbackService} used on web,16* where the full agent feedback UI (editor overlay, hover, attachments)17* is not wired up. The changes view model still depends on the service18* being registered, so we expose a service that reports no feedback.19*/20class NullAgentFeedbackService extends Disposable implements IAgentFeedbackService {2122declare readonly _serviceBrand: undefined;2324readonly onDidChangeFeedback = this._register(new Emitter<IAgentFeedbackChangeEvent>()).event;25readonly onDidChangeNavigation = this._register(new Emitter<URI>()).event;2627addFeedback(sessionResource: URI, resourceUri: URI, range: IRange, text: string, _suggestion?: ICodeReviewSuggestion, _context?: IAgentFeedbackContext, _sourcePRReviewCommentId?: string): IAgentFeedback {28return {29id: '',30text,31resourceUri,32range,33sessionResource,34};35}3637removeFeedback(_sessionResource: URI, _feedbackId: string): void { }38updateFeedback(_sessionResource: URI, _feedbackId: string, _text: string): void { }39getFeedback(_sessionResource: URI): readonly IAgentFeedback[] { return []; }40getMostRecentSessionForResource(_resourceUri: URI): URI | undefined { return undefined; }41async revealFeedback(_sessionResource: URI, _feedbackId: string): Promise<void> { }42async revealSessionComment(): Promise<void> { }43getNextFeedback(): IAgentFeedback | undefined { return undefined; }44getNextNavigableItem<T extends INavigableSessionComment>(): T | undefined { return undefined; }45setNavigationAnchor(): void { }46getNavigationBearing(_sessionResource: URI): IAgentFeedbackNavigationBearing { return { activeIdx: -1, totalCount: 0 }; }47clearFeedback(): void { }48async addFeedbackAndSubmit(): Promise<void> { }49}5051registerSingleton(IAgentFeedbackService, NullAgentFeedbackService, InstantiationType.Delayed);525354