Path: blob/main/extensions/copilot/src/extension/inlineEdits/vscode-node/parts/inlineEditLogger.ts
13405 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 { InlineEditRequestLogContext } from '../../../../platform/inlineEdits/common/inlineEditLogContext';6import { IRequestLogger, LoggedRequestKind } from '../../../../platform/requestLogger/common/requestLogger';7import { Disposable } from '../../../../util/vs/base/common/lifecycle';89export class InlineEditLogger extends Disposable {10private readonly _requests: InlineEditRequestLogContext[] = [];1112constructor(13@IRequestLogger private readonly _requestLogger: IRequestLogger,14) {15super();16}1718/**19* Add a live log entry that appears immediately in the tree with dynamic content.20* Content and icon are resolved on-demand from the logContext, and the entry21* refreshes automatically as the logContext state changes.22*/23addLive(request: InlineEditRequestLogContext): void {24this._requestLogger.addEntry({25type: LoggedRequestKind.MarkdownContentRequest,26debugName: request.getDebugName(),27icon: () => request.getIcon(),28startTimeMs: request.time,29markdownContent: () => request.toLogDocument(),30onDidChange: request.onDidChange,31isVisible: () => request.includeInLogTree,32});33this._pushRequest(request);34}3536private _pushRequest(request: InlineEditRequestLogContext): void {37this._requests.push(request);38if (this._requests.length > 100) {39this._requests.shift();40}41}4243public getRequestById(requestId: number): InlineEditRequestLogContext | undefined {44return this._requests.find(request => request.requestId === requestId);45}46}474849