chore: WorkingSetEntryState -> ModifiedFileEntryState

This commit is contained in:
Johannes
2025-03-28 16:48:17 +01:00
parent 7d2083ed1d
commit df8ec180bd
20 changed files with 79 additions and 79 deletions
@@ -44,7 +44,7 @@ import { IWorkbenchLayoutService, Parts } from '../../../../services/layout/brow
import { IViewsService } from '../../../../services/views/common/viewsService.js';
import { EXTENSIONS_CATEGORY, IExtensionsWorkbenchService } from '../../../extensions/common/extensions.js';
import { ChatContextKeys } from '../../common/chatContextKeys.js';
import { IChatEditingSession, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { IChatEditingSession, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { ChatEntitlement, ChatSentiment, IChatEntitlementService } from '../../common/chatEntitlementService.js';
import { extractAgentAndCommand } from '../../common/chatParserTypes.js';
import { IChatDetail, IChatService } from '../../common/chatService.js';
@@ -824,7 +824,7 @@ export async function showClearEditingSessionConfirmation(editingSession: IChatE
const title = options?.titleOverride ?? defaultTitle;
const currentEdits = editingSession.entries.get();
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === WorkingSetEntryState.Modified);
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === ModifiedFileEntryState.Modified);
const { result } = await dialogService.prompt({
title,
@@ -857,7 +857,7 @@ export function shouldShowClearEditingSessionConfirmation(editingSession: IChatE
const currentEditCount = currentEdits.length;
if (currentEditCount) {
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === WorkingSetEntryState.Modified);
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === ModifiedFileEntryState.Modified);
return !!undecidedEdits.length;
}
@@ -17,7 +17,7 @@ import { KeybindingWeight } from '../../../../../platform/keybinding/common/keyb
import { IViewsService } from '../../../../services/views/common/viewsService.js';
import { IChatAgentService } from '../../common/chatAgents.js';
import { ChatContextKeyExprs, ChatContextKeys } from '../../common/chatContextKeys.js';
import { WorkingSetEntryState } from '../../common/chatEditingService.js';
import { ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { chatVariableLeader } from '../../common/chatParserTypes.js';
import { IChatService } from '../../common/chatService.js';
import { ChatAgentLocation, ChatConfiguration, ChatMode, validateChatMode } from '../../common/constants.js';
@@ -173,7 +173,7 @@ class ToggleChatModeAction extends Action2 {
}
const currentEdits = context.editingSession.entries.get();
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === WorkingSetEntryState.Modified);
const undecidedEdits = currentEdits.filter((edit) => edit.state.get() === ModifiedFileEntryState.Modified);
if (undecidedEdits.length > 0) {
if (!await handleCurrentEditingSession(context.editingSession, phrase, dialogService)) {
return;
@@ -37,7 +37,7 @@ import { ResourceContextKey } from '../../../../common/contextkeys.js';
import { SETTINGS_AUTHORITY } from '../../../../services/preferences/common/preferences.js';
import { createFileIconThemableTreeContainerScope } from '../../../files/browser/views/explorerView.js';
import { ExplorerFolderContext } from '../../../files/common/files.js';
import { chatEditingWidgetFileStateContextKey, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { chatEditingWidgetFileStateContextKey, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { ChatResponseReferencePartStatusKind, IChatContentReference, IChatWarningMessage } from '../../common/chatService.js';
import { IChatVariablesService } from '../../common/chatVariables.js';
import { IChatRendererContent, IChatResponseViewModel } from '../../common/chatViewModel.js';
@@ -51,7 +51,7 @@ export const $ = dom.$;
export interface IChatReferenceListItem extends IChatContentReference {
title?: string;
description?: string;
state?: WorkingSetEntryState;
state?: ModifiedFileEntryState;
excluded?: boolean;
}
@@ -402,10 +402,10 @@ class CollapsibleListRenderer implements IListRenderer<IChatCollapsibleListItem,
if (data.state !== undefined) {
if (templateData.actionBarContainer) {
if (data.state === WorkingSetEntryState.Modified && !templateData.actionBarContainer.classList.contains('modified')) {
if (data.state === ModifiedFileEntryState.Modified && !templateData.actionBarContainer.classList.contains('modified')) {
templateData.actionBarContainer.classList.add('modified');
templateData.label.element.querySelector('.monaco-icon-name-container')?.classList.add('modified');
} else if (data.state !== WorkingSetEntryState.Modified) {
} else if (data.state !== ModifiedFileEntryState.Modified) {
templateData.actionBarContainer.classList.remove('modified');
templateData.label.element.querySelector('.monaco-icon-name-container')?.classList.remove('modified');
}
@@ -28,7 +28,7 @@ import { GroupsOrder, IEditorGroupsService } from '../../../../services/editor/c
import { IEditorService } from '../../../../services/editor/common/editorService.js';
import { isChatViewTitleActionContext } from '../../common/chatActions.js';
import { ChatContextKeys } from '../../common/chatContextKeys.js';
import { applyingChatEditsFailedContextKey, CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, chatEditingResourceContextKey, chatEditingWidgetFileStateContextKey, decidedChatEditingResourceContextKey, hasAppliedChatEditsContextKey, hasUndecidedChatEditingResourceContextKey, IChatEditingService, IChatEditingSession, WorkingSetEntryRemovalReason, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { applyingChatEditsFailedContextKey, CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, chatEditingResourceContextKey, chatEditingWidgetFileStateContextKey, decidedChatEditingResourceContextKey, hasAppliedChatEditsContextKey, hasUndecidedChatEditingResourceContextKey, IChatEditingService, IChatEditingSession, WorkingSetEntryRemovalReason, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { IChatService } from '../../common/chatService.js';
import { isRequestVM, isResponseVM } from '../../common/chatViewModel.js';
import { ChatAgentLocation, ChatMode } from '../../common/constants.js';
@@ -127,7 +127,7 @@ registerAction2(class RemoveFileFromWorkingSet extends WorkingSetAction {
async runWorkingSetAction(accessor: ServicesAccessor, currentEditingSession: IChatEditingSession, chatWidget: IChatWidget, ...uris: URI[]): Promise<void> {
const dialogService = accessor.get(IDialogService);
const pendingEntries = currentEditingSession.entries.get().filter((entry) => uris.includes(entry.modifiedURI) && entry.state.get() === WorkingSetEntryState.Modified);
const pendingEntries = currentEditingSession.entries.get().filter((entry) => uris.includes(entry.modifiedURI) && entry.state.get() === ModifiedFileEntryState.Modified);
if (pendingEntries.length > 0) {
// Ask for confirmation if there are any pending edits
const file = pendingEntries.length > 1
@@ -168,7 +168,7 @@ registerAction2(class OpenFileInDiffAction extends WorkingSetAction {
icon: Codicon.diffSingle,
menu: [{
id: MenuId.ChatEditingWidgetModifiedFilesToolbar,
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, WorkingSetEntryState.Modified),
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, ModifiedFileEntryState.Modified),
order: 2,
group: 'navigation'
}],
@@ -179,7 +179,7 @@ registerAction2(class OpenFileInDiffAction extends WorkingSetAction {
const editorService = accessor.get(IEditorService);
for (const uri of uris) {
const editedFile = currentEditingSession.getEntry(uri);
if (editedFile?.state.get() === WorkingSetEntryState.Modified) {
if (editedFile?.state.get() === ModifiedFileEntryState.Modified) {
await editorService.openEditor({
original: { resource: URI.from(editedFile.originalURI, true) },
modified: { resource: URI.from(editedFile.modifiedURI, true) },
@@ -205,7 +205,7 @@ registerAction2(class AcceptAction extends WorkingSetAction {
group: 'navigation',
}, {
id: MenuId.ChatEditingWidgetModifiedFilesToolbar,
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, WorkingSetEntryState.Modified),
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, ModifiedFileEntryState.Modified),
order: 0,
group: 'navigation'
}],
@@ -231,7 +231,7 @@ registerAction2(class DiscardAction extends WorkingSetAction {
group: 'navigation',
}, {
id: MenuId.ChatEditingWidgetModifiedFilesToolbar,
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, WorkingSetEntryState.Modified),
when: ContextKeyExpr.equals(chatEditingWidgetFileStateContextKey.key, ModifiedFileEntryState.Modified),
order: 1,
group: 'navigation'
}],
@@ -36,7 +36,7 @@ import { EditorsOrder, IEditorIdentifier, isDiffEditorInput } from '../../../../
import { IEditorService } from '../../../../services/editor/common/editorService.js';
import { overviewRulerModifiedForeground, minimapGutterModifiedBackground, overviewRulerAddedForeground, minimapGutterAddedBackground, overviewRulerDeletedForeground, minimapGutterDeletedBackground } from '../../../scm/common/quickDiff.js';
import { IChatAgentService } from '../../common/chatAgents.js';
import { IModifiedFileEntry, IModifiedFileEntryChangeHunk, IModifiedFileEntryEditorIntegration, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { IModifiedFileEntry, IModifiedFileEntryChangeHunk, IModifiedFileEntryEditorIntegration, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { isTextDiffEditorForEntry } from './chatEditing.js';
import { IEditorDecorationsCollection } from '../../../../../editor/common/editorCommon.js';
import { ChatAgentLocation } from '../../common/constants.js';
@@ -642,7 +642,7 @@ export class ChatEditingCodeEditorIntegration implements IModifiedFileEntryEdito
// close diff editor when entry is decided
const d = autorun(r => {
const state = this._entry.state.read(r);
if (state === WorkingSetEntryState.Accepted || state === WorkingSetEntryState.Rejected) {
if (state === ModifiedFileEntryState.Accepted || state === ModifiedFileEntryState.Rejected) {
d.dispose();
const editorIdents: IEditorIdentifier[] = [];
@@ -13,7 +13,7 @@ import { ctxHasEditorModification, ctxHasRequestInProgress, ctxReviewModeEnabled
import { ContextKeyExpr } from '../../../../../platform/contextkey/common/contextkey.js';
import { EditorContextKeys } from '../../../../../editor/common/editorContextKeys.js';
import { ACTIVE_GROUP, IEditorService } from '../../../../services/editor/common/editorService.js';
import { CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, IChatEditingService, IChatEditingSession, IModifiedFileEntry, IModifiedFileEntryEditorIntegration, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, IChatEditingService, IChatEditingSession, IModifiedFileEntry, IModifiedFileEntryEditorIntegration, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { resolveCommandsContext } from '../../../../browser/parts/editor/editorCommandsContext.js';
import { IListService } from '../../../../../platform/list/browser/listService.js';
import { IEditorGroupsService } from '../../../../services/editor/common/editorGroupsService.js';
@@ -128,7 +128,7 @@ async function openNextOrPreviousChange(accessor: ServicesAccessor, session: ICh
while (true) {
idx = (idx + (next ? 1 : -1) + entries.length) % entries.length;
newEntry = entries[idx];
if (newEntry.state.get() === WorkingSetEntryState.Modified) {
if (newEntry.state.get() === ModifiedFileEntryState.Modified) {
break;
} else if (newEntry === entry) {
return false;
@@ -13,7 +13,7 @@ import { IWorkbenchContribution } from '../../../../common/contributions.js';
import { EditorResourceAccessor, SideBySideEditor } from '../../../../common/editor.js';
import { IEditorGroup, IEditorGroupsService } from '../../../../services/editor/common/editorGroupsService.js';
import { IInlineChatSessionService } from '../../../inlineChat/browser/inlineChatSessionService.js';
import { IChatEditingService, IChatEditingSession, IModifiedFileEntry, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { IChatEditingService, IChatEditingSession, IModifiedFileEntry, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { IChatService } from '../../common/chatService.js';
export const ctxIsGlobalEditingSession = new RawContextKey<boolean>('chatEdits.isGlobalEditingSession', undefined, localize('chat.ctxEditSessionIsGlobal', "The current editor is part of the global edit session"));
@@ -117,7 +117,7 @@ class ContextKeyGroup {
? observableFromEvent(this, chatModel.onDidChange, () => chatModel.requestInProgress)
: constObservable(false);
this._ctxHasEditorModification.set(isInlineChat || entry?.state.read(r) === WorkingSetEntryState.Modified);
this._ctxHasEditorModification.set(isInlineChat || entry?.state.read(r) === ModifiedFileEntryState.Modified);
this._ctxIsGlobalEditingSession.set(session.isGlobalEditingSession);
this._ctxReviewModeEnabled.set(entry ? entry.reviewMode.read(r) : false);
this._ctxHasRequestInProgress.set(
@@ -8,7 +8,7 @@ import { combinedDisposable, DisposableMap, DisposableStore, MutableDisposable,
import { autorun, derived, derivedOpts, IObservable, observableFromEvent, observableSignalFromEvent, observableValue, transaction } from '../../../../../base/common/observable.js';
import { HiddenItemStrategy, MenuWorkbenchToolBar, WorkbenchToolBar } from '../../../../../platform/actions/browser/toolbar.js';
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
import { IChatEditingService, IChatEditingSession, IModifiedFileEntry, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { IChatEditingService, IChatEditingSession, IModifiedFileEntry, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { MenuId } from '../../../../../platform/actions/common/actions.js';
import { ActionViewItem } from '../../../../../base/browser/ui/actionbar/actionViewItems.js';
import { IActionRunner } from '../../../../../base/common/actions.js';
@@ -406,7 +406,7 @@ class ChatEditingOverlayController {
const { session, entry } = data;
if (
entry?.state.read(r) === WorkingSetEntryState.Modified // any entry changing
entry?.state.read(r) === ModifiedFileEntryState.Modified // any entry changing
|| (!session.isGlobalEditingSession && isInProgress.read(r)) // inline chat request
) {
// any session with changes
@@ -40,7 +40,7 @@ import { SaveReason, IEditorPane } from '../../../../common/editor.js';
import { IFilesConfigurationService } from '../../../../services/filesConfiguration/common/filesConfigurationService.js';
import { IResolvedTextFileEditorModel, ITextFileService, stringToSnapshot } from '../../../../services/textfile/common/textfiles.js';
import { ICellEditOperation } from '../../../notebook/common/notebookCommon.js';
import { IModifiedFileEntry, ChatEditKind, WorkingSetEntryState, IModifiedFileEntryEditorIntegration } from '../../common/chatEditingService.js';
import { IModifiedFileEntry, ChatEditKind, ModifiedFileEntryState, IModifiedFileEntryEditorIntegration } from '../../common/chatEditingService.js';
import { IChatResponseModel } from '../../common/chatModel.js';
import { IChatService } from '../../common/chatService.js';
import { ChatEditingCodeEditorIntegration, IDocumentDiff2 } from './chatEditingCodeEditorIntegration.js';
@@ -273,9 +273,9 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie
const didResetToOriginalContent = this.modifiedModel.getValue() === this.initialContent;
const currentState = this._stateObs.get();
switch (currentState) {
case WorkingSetEntryState.Modified:
case ModifiedFileEntryState.Modified:
if (didResetToOriginalContent) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
break;
}
}
@@ -319,7 +319,7 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie
transaction((tx) => {
if (!isLastEdits) {
this._stateObs.set(WorkingSetEntryState.Modified, tx);
this._stateObs.set(ModifiedFileEntryState.Modified, tx);
this._isCurrentlyBeingModifiedByObs.set(responseModel, tx);
const lineCount = this.modifiedModel.getLineCount();
this._rewriteRatioObs.set(Math.min(1, maxLineNumber / lineCount), tx);
@@ -346,7 +346,7 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie
this.originalModel.pushEditOperations(null, edits, _ => null);
await this._updateDiffInfoSeq();
if (this._diffInfo.get().identical) {
this._stateObs.set(WorkingSetEntryState.Accepted, undefined);
this._stateObs.set(ModifiedFileEntryState.Accepted, undefined);
}
this._accessibilitySignalService.playSignal(AccessibilitySignal.editsKept, { allowManyInParallel: true });
return true;
@@ -364,7 +364,7 @@ export class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifie
this.modifiedModel.pushEditOperations(null, edits, _ => null);
await this._updateDiffInfoSeq();
if (this._diffInfo.get().identical) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
}
this._accessibilitySignalService.playSignal(AccessibilitySignal.editsUndone, { allowManyInParallel: true });
return true;
@@ -22,7 +22,7 @@ import { IEditorPane } from '../../../../common/editor.js';
import { IFilesConfigurationService } from '../../../../services/filesConfiguration/common/filesConfigurationService.js';
import { ICellEditOperation } from '../../../notebook/common/notebookCommon.js';
import { IChatAgentResult } from '../../common/chatAgents.js';
import { ChatEditKind, IModifiedFileEntry, IModifiedFileEntryEditorIntegration, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { ChatEditKind, IModifiedFileEntry, IModifiedFileEntryEditorIntegration, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { IChatResponseModel } from '../../common/chatModel.js';
import { IChatService } from '../../common/chatService.js';
@@ -50,8 +50,8 @@ export abstract class AbstractChatEditingModifiedFileEntry extends Disposable im
protected readonly _onDidDelete = this._register(new Emitter<void>());
readonly onDidDelete = this._onDidDelete.event;
protected readonly _stateObs = observableValue<WorkingSetEntryState>(this, WorkingSetEntryState.Attached);
readonly state: IObservable<WorkingSetEntryState> = this._stateObs;
protected readonly _stateObs = observableValue<ModifiedFileEntryState>(this, ModifiedFileEntryState.Attached);
readonly state: IObservable<ModifiedFileEntryState> = this._stateObs;
protected readonly _isCurrentlyBeingModifiedByObs = observableValue<IChatResponseModel | undefined>(this, undefined);
readonly isCurrentlyBeingModifiedBy: IObservable<IChatResponseModel | undefined> = this._isCurrentlyBeingModifiedByObs;
@@ -146,7 +146,7 @@ export abstract class AbstractChatEditingModifiedFileEntry extends Disposable im
const cleanup = autorun(r => {
// reset config when settled
const resetConfig = this.state.read(r) !== WorkingSetEntryState.Modified;
const resetConfig = this.state.read(r) !== ModifiedFileEntryState.Modified;
if (resetConfig) {
this._store.delete(cleanup);
this._reviewModeTempObs.set(undefined, undefined);
@@ -161,13 +161,13 @@ export abstract class AbstractChatEditingModifiedFileEntry extends Disposable im
}
async accept(tx: ITransaction | undefined): Promise<void> {
if (this._stateObs.get() !== WorkingSetEntryState.Modified) {
if (this._stateObs.get() !== ModifiedFileEntryState.Modified) {
// already accepted or rejected
return;
}
await this._doAccept(tx);
this._stateObs.set(WorkingSetEntryState.Accepted, tx);
this._stateObs.set(ModifiedFileEntryState.Accepted, tx);
this._autoAcceptCtrl.set(undefined, tx);
this._notifyAction('accepted');
@@ -176,13 +176,13 @@ export abstract class AbstractChatEditingModifiedFileEntry extends Disposable im
protected abstract _doAccept(tx: ITransaction | undefined): Promise<void>;
async reject(tx: ITransaction | undefined): Promise<void> {
if (this._stateObs.get() !== WorkingSetEntryState.Modified) {
if (this._stateObs.get() !== ModifiedFileEntryState.Modified) {
// already accepted or rejected
return;
}
await this._doReject(tx);
this._stateObs.set(WorkingSetEntryState.Rejected, tx);
this._stateObs.set(ModifiedFileEntryState.Rejected, tx);
this._autoAcceptCtrl.set(undefined, tx);
this._notifyAction('rejected');
}
@@ -309,6 +309,6 @@ export interface ISnapshotEntry {
readonly original: string;
readonly current: string;
readonly originalToCurrentEdit: OffsetEdit;
readonly state: WorkingSetEntryState;
readonly state: ModifiedFileEntryState;
telemetryInfo: IModifiedEntryTelemetryInfo;
}
@@ -43,7 +43,7 @@ import { INotebookEditorModelResolverService } from '../../../notebook/common/no
import { INotebookLoggingService } from '../../../notebook/common/notebookLoggingService.js';
import { INotebookService } from '../../../notebook/common/notebookService.js';
import { INotebookEditorWorkerService } from '../../../notebook/common/services/notebookWorkerService.js';
import { ChatEditKind, IModifiedFileEntryEditorIntegration, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { ChatEditKind, IModifiedFileEntryEditorIntegration, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { IChatResponseModel } from '../../common/chatModel.js';
import { IChatService } from '../../common/chatService.js';
import { AbstractChatEditingModifiedFileEntry, IModifiedEntryTelemetryInfo, ISnapshotEntry } from './chatEditingModifiedFileEntry.js';
@@ -253,11 +253,11 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
// const didResetToOriginalContent = createSnapshot(this.modifiedModel, this.transientOptions, this.configurationService) === this.initialContent;
let didResetToOriginalContent = this.initialContentComparer.isEqual(this.modifiedModel);
const currentState = this._stateObs.get();
if (currentState === WorkingSetEntryState.Rejected) {
if (currentState === ModifiedFileEntryState.Rejected) {
return;
}
if (currentState === WorkingSetEntryState.Modified && didResetToOriginalContent) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
if (currentState === ModifiedFileEntryState.Modified && didResetToOriginalContent) {
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
this.updateCellDiffInfo([], undefined);
return;
}
@@ -394,8 +394,8 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
}
didResetToOriginalContent = this.initialContentComparer.isEqual(this.modifiedModel);
if (currentState === WorkingSetEntryState.Modified && didResetToOriginalContent) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
if (currentState === ModifiedFileEntryState.Modified && didResetToOriginalContent) {
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
this.updateCellDiffInfo([], undefined);
return;
}
@@ -573,7 +573,7 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
transaction((tx) => {
if (!isLastEdits) {
this._stateObs.set(WorkingSetEntryState.Modified, tx);
this._stateObs.set(ModifiedFileEntryState.Modified, tx);
this._isCurrentlyBeingModifiedByObs.set(responseModel, tx);
const newRewriteRation = Math.max(this._rewriteRatioObs.get(), calculateNotebookRewriteRatio(this._cellsDiffInfo.get(), this.originalModel, this.modifiedModel));
this._rewriteRatioObs.set(Math.min(1, newRewriteRation), tx);
@@ -650,7 +650,7 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
private computeStateAfterAcceptingRejectingChanges(accepted: boolean) {
const currentSnapshot = createSnapshot(this.modifiedModel, this.transientOptions, this.configurationService);
if (new SnapshotComparer(currentSnapshot).isEqual(this.originalModel)) {
const state = accepted ? WorkingSetEntryState.Accepted : WorkingSetEntryState.Rejected;
const state = accepted ? ModifiedFileEntryState.Accepted : ModifiedFileEntryState.Rejected;
this._stateObs.set(state, undefined);
}
}
@@ -987,9 +987,9 @@ export class ChatEditingModifiedNotebookEntry extends AbstractChatEditingModifie
}
const cellState = cellEntry.state.read(r);
if (cellState === WorkingSetEntryState.Accepted) {
if (cellState === ModifiedFileEntryState.Accepted) {
this.computeStateAfterAcceptingRejectingChanges(true);
} else if (cellState === WorkingSetEntryState.Rejected) {
} else if (cellState === ModifiedFileEntryState.Rejected) {
this.computeStateAfterAcceptingRejectingChanges(false);
}
}));
@@ -35,7 +35,7 @@ import { IMultiDiffSourceResolver, IMultiDiffSourceResolverService, IResolvedMul
import { CellUri } from '../../../notebook/common/notebookCommon.js';
import { INotebookService } from '../../../notebook/common/notebookService.js';
import { IChatAgentService } from '../../common/chatAgents.js';
import { CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, chatEditingAgentSupportsReadonlyReferencesContextKey, chatEditingResourceContextKey, ChatEditingSessionState, chatEditingSnapshotScheme, IChatEditingService, IChatEditingSession, IChatRelatedFile, IChatRelatedFilesProvider, IModifiedFileEntry, inChatEditingSessionContextKey, IStreamingEdits, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, chatEditingAgentSupportsReadonlyReferencesContextKey, chatEditingResourceContextKey, ChatEditingSessionState, chatEditingSnapshotScheme, IChatEditingService, IChatEditingSession, IChatRelatedFile, IChatRelatedFilesProvider, IModifiedFileEntry, inChatEditingSessionContextKey, IStreamingEdits, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { ChatModel, IChatResponseModel, isCellTextEditOperation } from '../../common/chatModel.js';
import { IChatService } from '../../common/chatService.js';
import { ChatAgentLocation } from '../../common/constants.js';
@@ -394,7 +394,7 @@ class ChatDecorationsProvider extends Disposable implements IDecorationsProvider
private readonly _modifiedUris = derived<URI[]>(this, (r) => {
const uri = this._currentEntries.read(r);
return uri.filter(entry => !entry.isCurrentlyBeingModifiedBy.read(r) && entry.state.read(r) === WorkingSetEntryState.Modified).map(entry => entry.modifiedURI);
return uri.filter(entry => !entry.isCurrentlyBeingModifiedBy.read(r) && entry.state.read(r) === ModifiedFileEntryState.Modified).map(entry => entry.modifiedURI);
});
public readonly onDidChange = Event.any(
@@ -38,7 +38,7 @@ import { IEditorService } from '../../../../services/editor/common/editorService
import { MultiDiffEditor } from '../../../multiDiffEditor/browser/multiDiffEditor.js';
import { MultiDiffEditorInput } from '../../../multiDiffEditor/browser/multiDiffEditorInput.js';
import { INotebookService } from '../../../notebook/common/notebookService.js';
import { ChatEditingSessionChangeType, ChatEditingSessionState, ChatEditKind, getMultiDiffSourceUri, IChatEditingSession, IEditSessionEntryDiff, IModifiedFileEntry, IStreamingEdits, WorkingSetDisplayMetadata, WorkingSetEntryRemovalReason, WorkingSetEntryState } from '../../common/chatEditingService.js';
import { ChatEditingSessionChangeType, ChatEditingSessionState, ChatEditKind, getMultiDiffSourceUri, IChatEditingSession, IEditSessionEntryDiff, IModifiedFileEntry, IStreamingEdits, WorkingSetDisplayMetadata, WorkingSetEntryRemovalReason, ModifiedFileEntryState } from '../../common/chatEditingService.js';
import { IChatRequestDisablement, IChatResponseModel } from '../../common/chatModel.js';
import { IChatService } from '../../common/chatService.js';
import { AbstractChatEditingModifiedFileEntry, IModifiedEntryTelemetryInfo, ISnapshotEntry } from './chatEditingModifiedFileEntry.js';
@@ -382,7 +382,7 @@ export class ChatEditingSession extends Disposable implements IChatEditingSessio
public createSnapshot(requestId: string, undoStop: string | undefined): void {
const snapshot = this._createSnapshot(requestId, undoStop);
for (const [uri, _] of this._workingSet) {
this._workingSet.set(uri, { state: WorkingSetEntryState.Sent });
this._workingSet.set(uri, { state: ModifiedFileEntryState.Sent });
}
const linearHistoryPtr = this._linearHistoryIndex.get();
@@ -486,7 +486,7 @@ export class ChatEditingSession extends Disposable implements IChatEditingSessio
// Restore all entries from the snapshot
for (const snapshotEntry of entries.values()) {
const entry = await this._getOrCreateModifiedFileEntry(snapshotEntry.resource, snapshotEntry.telemetryInfo);
const restoreToDisk = snapshotEntry.state === WorkingSetEntryState.Modified || restoreResolvedToDisk;
const restoreToDisk = snapshotEntry.state === ModifiedFileEntryState.Modified || restoreResolvedToDisk;
entry.restoreFromSnapshot(snapshotEntry, restoreToDisk);
entriesArr.push(entry);
}
@@ -1219,7 +1219,7 @@ interface ISnapshotEntryDTO {
readonly originalHash: string;
readonly currentHash: string;
readonly originalToCurrentEdit: IOffsetEdit;
readonly state: WorkingSetEntryState;
readonly state: ModifiedFileEntryState;
readonly snapshotUri: string;
readonly telemetryInfo: IModifiedEntryTelemetryInfoDTO;
}
@@ -26,7 +26,7 @@ import { editorSelectionBackground } from '../../../../../../platform/theme/comm
import { CellEditState } from '../../../../notebook/browser/notebookBrowser.js';
import { INotebookEditorService } from '../../../../notebook/browser/services/notebookEditorService.js';
import { NotebookCellTextModel } from '../../../../notebook/common/model/notebookCellTextModel.js';
import { WorkingSetEntryState } from '../../../common/chatEditingService.js';
import { ModifiedFileEntryState } from '../../../common/chatEditingService.js';
import { IChatResponseModel } from '../../../common/chatModel.js';
import { pendingRewriteMinimap } from '../chatEditingModifiedFileEntry.js';
@@ -83,8 +83,8 @@ export class ChatEditingNotebookCellEntry extends ObservableDisposable {
private _editDecorations: string[] = [];
private readonly _diffTrimWhitespace: IObservable<boolean>;
protected readonly _stateObs = observableValue<WorkingSetEntryState>(this, WorkingSetEntryState.Modified);
readonly state: IObservable<WorkingSetEntryState> = this._stateObs;
protected readonly _stateObs = observableValue<ModifiedFileEntryState>(this, ModifiedFileEntryState.Modified);
readonly state: IObservable<ModifiedFileEntryState> = this._stateObs;
protected readonly _isCurrentlyBeingModifiedByObs = observableValue<IChatResponseModel | undefined>(this, undefined);
readonly isCurrentlyBeingModifiedBy: IObservable<IChatResponseModel | undefined> = this._isCurrentlyBeingModifiedByObs;
private readonly initialContent: string;
@@ -169,9 +169,9 @@ export class ChatEditingNotebookCellEntry extends ObservableDisposable {
const didResetToOriginalContent = this.modifiedModel.getValue() === this.initialContent;
const currentState = this._stateObs.get();
switch (currentState) {
case WorkingSetEntryState.Modified:
case ModifiedFileEntryState.Modified:
if (didResetToOriginalContent) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
break;
}
}
@@ -212,7 +212,7 @@ export class ChatEditingNotebookCellEntry extends ObservableDisposable {
transaction((tx) => {
if (!isLastEdits) {
this._stateObs.set(WorkingSetEntryState.Modified, tx);
this._stateObs.set(ModifiedFileEntryState.Modified, tx);
this._isCurrentlyBeingModifiedByObs.set(responseModel, tx);
this._maxModifiedLineNumber.set(maxLineNumber, tx);
@@ -257,7 +257,7 @@ export class ChatEditingNotebookCellEntry extends ObservableDisposable {
}
await this._updateDiffInfoSeq();
if (this._diffInfo.get().identical) {
this._stateObs.set(WorkingSetEntryState.Accepted, undefined);
this._stateObs.set(ModifiedFileEntryState.Accepted, undefined);
}
return true;
}
@@ -283,7 +283,7 @@ export class ChatEditingNotebookCellEntry extends ObservableDisposable {
}
await this._updateDiffInfoSeq();
if (this._diffInfo.get().identical) {
this._stateObs.set(WorkingSetEntryState.Rejected, undefined);
this._stateObs.set(ModifiedFileEntryState.Rejected, undefined);
}
return true;
}
@@ -41,7 +41,7 @@ import { IThemeService } from '../../../../platform/theme/common/themeService.js
import { checkModeOption } from '../common/chat.js';
import { IChatAgentCommand, IChatAgentData, IChatAgentService, IChatWelcomeMessageContent, isChatWelcomeMessageContent } from '../common/chatAgents.js';
import { ChatContextKeys } from '../common/chatContextKeys.js';
import { applyingChatEditsFailedContextKey, decidedChatEditingResourceContextKey, hasAppliedChatEditsContextKey, hasUndecidedChatEditingResourceContextKey, IChatEditingService, IChatEditingSession, inChatEditingSessionContextKey, WorkingSetEntryState } from '../common/chatEditingService.js';
import { applyingChatEditsFailedContextKey, decidedChatEditingResourceContextKey, hasAppliedChatEditsContextKey, hasUndecidedChatEditingResourceContextKey, IChatEditingService, IChatEditingSession, inChatEditingSessionContextKey, ModifiedFileEntryState } from '../common/chatEditingService.js';
import { ChatPauseState, IChatModel, IChatRequestVariableEntry, IChatResponseModel } from '../common/chatModel.js';
import { chatAgentLeader, ChatRequestAgentPart, chatSubcommandLeader, formatChatQuestion, IParsedChatRequest } from '../common/chatParserTypes.js';
import { ChatRequestParser } from '../common/chatRequestParser.js';
@@ -276,13 +276,13 @@ export class ChatWidget extends Disposable implements IChatWidget {
return;
}
const entries = currentSession.entries.read(reader);
const decidedEntries = entries.filter(entry => entry.state.read(reader) !== WorkingSetEntryState.Modified);
const decidedEntries = entries.filter(entry => entry.state.read(reader) !== ModifiedFileEntryState.Modified);
return decidedEntries.map(entry => entry.entryId);
}));
this._register(bindContextKey(hasUndecidedChatEditingResourceContextKey, contextKeyService, (reader) => {
const currentSession = this._editingSession.read(reader);
const entries = currentSession?.entries.read(reader) ?? []; // using currentSession here
const decidedEntries = entries.filter(entry => entry.state.read(reader) === WorkingSetEntryState.Modified);
const decidedEntries = entries.filter(entry => entry.state.read(reader) === ModifiedFileEntryState.Modified);
return decidedEntries.length > 0;
}));
this._register(bindContextKey(hasAppliedChatEditsContextKey, contextKeyService, (reader) => {
@@ -65,7 +65,7 @@ export interface IChatRelatedFilesProvider {
}
export interface WorkingSetDisplayMetadata {
state: WorkingSetEntryState;
state: ModifiedFileEntryState;
description?: string;
}
@@ -147,11 +147,11 @@ export const enum WorkingSetEntryRemovalReason {
Programmatic
}
export const enum WorkingSetEntryState {
export const enum ModifiedFileEntryState {
Modified,
Accepted,
Rejected,
Transient, // TODO@joyceerhl remove this
Attached, // TODO@joyceerhl remove this
Sent, // TODO@joyceerhl remove this
}
@@ -222,7 +222,7 @@ export interface IModifiedFileEntry {
readonly lastModifyingRequestId: string;
readonly state: IObservable<WorkingSetEntryState>;
readonly state: IObservable<ModifiedFileEntryState>;
readonly isCurrentlyBeingModifiedBy: IObservable<IChatResponseModel | undefined>;
readonly rewriteRatio: IObservable<number>;
@@ -255,7 +255,7 @@ export const enum ChatEditingSessionState {
export const CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME = 'chat-editing-multi-diff-source';
export const chatEditingWidgetFileStateContextKey = new RawContextKey<WorkingSetEntryState>('chatEditingWidgetFileState', undefined, localize('chatEditingWidgetFileState', "The current state of the file in the chat editing widget"));
export const chatEditingWidgetFileStateContextKey = new RawContextKey<ModifiedFileEntryState>('chatEditingWidgetFileState', undefined, localize('chatEditingWidgetFileState', "The current state of the file in the chat editing widget"));
export const chatEditingAgentSupportsReadonlyReferencesContextKey = new RawContextKey<boolean>('chatEditingAgentSupportsReadonlyReferences', undefined, localize('chatEditingAgentSupportsReadonlyReferences', "Whether the chat editing agent supports readonly references (temporary)"));
export const decidedChatEditingResourceContextKey = new RawContextKey<string[]>('decidedChatEditingResource', []);
export const chatEditingResourceContextKey = new RawContextKey<string | undefined>('chatEditingResource', undefined);
@@ -8,7 +8,7 @@ import { URI } from '../../../../base/common/uri.js';
import { createDecorator } from '../../../../platform/instantiation/common/instantiation.js';
import { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';
import { Memento } from '../../../common/memento.js';
import { WorkingSetEntryState } from './chatEditingService.js';
import { ModifiedFileEntryState } from './chatEditingService.js';
import { IChatRequestVariableEntry } from './chatModel.js';
import { CHAT_PROVIDER_ID } from './chatParticipantContribTypes.js';
import { ChatAgentLocation, ChatMode } from './constants.js';
@@ -22,7 +22,7 @@ export interface IChatHistoryEntry {
export interface IChatInputState {
[key: string]: any;
chatContextAttachments?: ReadonlyArray<IChatRequestVariableEntry>;
chatWorkingSet?: ReadonlyArray<{ uri: URI; state: WorkingSetEntryState }>;
chatWorkingSet?: ReadonlyArray<{ uri: URI; state: ModifiedFileEntryState }>;
chatMode?: ChatMode;
}
@@ -53,7 +53,7 @@ import { EditorBasedInlineChatWidget } from './inlineChatWidget.js';
import { InlineChatZoneWidget } from './inlineChatZoneWidget.js';
import { ChatAgentLocation } from '../../chat/common/constants.js';
import { ChatContextKeys } from '../../chat/common/chatContextKeys.js';
import { IChatEditingService, WorkingSetEntryState } from '../../chat/common/chatEditingService.js';
import { IChatEditingService, ModifiedFileEntryState } from '../../chat/common/chatEditingService.js';
export const enum State {
CREATE_SESSION = 'CREATE_SESSION',
@@ -1403,7 +1403,7 @@ export class InlineChatController2 implements IEditorContribution {
await Event.toPromise(session.editingSession.onDidDispose);
const rejected = session.editingSession.getEntry(uri)?.state.get() === WorkingSetEntryState.Rejected;
const rejected = session.editingSession.getEntry(uri)?.state.get() === ModifiedFileEntryState.Rejected;
return !rejected;
}
@@ -1455,7 +1455,7 @@ export async function reviewEdits(accessor: ServicesAccessor, editor: ICodeEdito
return false;
}
const state = entry.state.read(r);
return state === WorkingSetEntryState.Accepted || state === WorkingSetEntryState.Rejected;
return state === ModifiedFileEntryState.Accepted || state === ModifiedFileEntryState.Rejected;
});
const whenDecided = waitForState(isSettled, Boolean);
@@ -30,7 +30,7 @@ import { ITextFileService } from '../../../services/textfile/common/textfiles.js
import { UntitledTextEditorInput } from '../../../services/untitled/common/untitledTextEditorInput.js';
import { IChatWidgetService } from '../../chat/browser/chat.js';
import { IChatAgentService } from '../../chat/common/chatAgents.js';
import { WorkingSetEntryState } from '../../chat/common/chatEditingService.js';
import { ModifiedFileEntryState } from '../../chat/common/chatEditingService.js';
import { IChatService } from '../../chat/common/chatService.js';
import { ChatAgentLocation } from '../../chat/common/constants.js';
import { CTX_INLINE_CHAT_HAS_AGENT, CTX_INLINE_CHAT_HAS_AGENT2, CTX_INLINE_CHAT_POSSIBLE } from '../common/inlineChat.js';
@@ -361,7 +361,7 @@ export class InlineChatSessionServiceImpl implements IInlineChatSessionService {
const allSettled = entries.every(entry => {
const state = entry.state.read(r);
return (state === WorkingSetEntryState.Accepted || state === WorkingSetEntryState.Rejected)
return (state === ModifiedFileEntryState.Accepted || state === ModifiedFileEntryState.Rejected)
&& !entry.isCurrentlyBeingModifiedBy.read(r);
});
@@ -26,7 +26,7 @@ import { LineRangeMapping } from '../../../../editor/common/diff/rangeMapping.js
import { IDiffEditorModel } from '../../../../editor/common/editorCommon.js';
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
import { IProgressService, ProgressLocation } from '../../../../platform/progress/common/progress.js';
import { IChatEditingService, WorkingSetEntryState } from '../../chat/common/chatEditingService.js';
import { IChatEditingService, ModifiedFileEntryState } from '../../chat/common/chatEditingService.js';
import { Emitter, Event } from '../../../../base/common/event.js';
import { autorun, autorunWithStore } from '../../../../base/common/observable.js';
@@ -358,7 +358,7 @@ export class QuickDiffModel extends Disposable {
// disable dirty diff when doing chat edits
const isBeingModifiedByChatEdits = this._chatEditingService.editingSessionsObs.get()
.some(session => session.getEntry(uri)?.state.get() === WorkingSetEntryState.Modified);
.some(session => session.getEntry(uri)?.state.get() === ModifiedFileEntryState.Modified);
if (isBeingModifiedByChatEdits) {
return Promise.resolve([]);
}