@codingame/monaco-vscode-chat-service-override 17.2.1 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +7 -4
- package/package.json +36 -30
- package/vscode/src/vs/base/common/objectCache.d.ts +2 -2
- package/vscode/src/vs/base/common/objectCache.js +3 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +10 -0
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +40 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +158 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +13 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +256 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +234 -572
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +29 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +107 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +344 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +84 -37
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.d.ts +18 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.js +137 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatModeActions.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatModeActions.js +54 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.js +40 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.d.ts +15 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.js +171 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.js +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +176 -69
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +15 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +22 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +35 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +80 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +11 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +12 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +13 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +15 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +3 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +10 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +18 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +118 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +46 -48
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.d.ts +49 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +379 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +31 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +382 -152
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +99 -56
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +11 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +9 -21
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +18 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +95 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +92 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/media/github.svg +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/google.svg +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +10 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.js +111 -111
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js +36 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.d.ts +5 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js +91 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/errors.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.d.ts +1 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/utils/createPromptFile.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +348 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.d.ts +30 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatResponseResourceFileSystemProvider.js +93 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +46 -36
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.js +21 -11
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.js +6 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.js +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.js +1 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkProvider.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptPathAutocompletion.js +5 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.d.ts +3 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +21 -10
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +111 -124
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +22 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +159 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.d.ts +15 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.js +2 -14
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +198 -33
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +7 -7
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +28 -18
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.js +0 -73
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.d.ts +0 -29
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.js +0 -74
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.d.ts +0 -14
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.js +0 -40
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.js +0 -40
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.js +0 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.js +0 -68
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/types.d.ts +0 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.d.ts +0 -19
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.js +0 -121
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.d.ts +0 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.js +0 -13
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js
CHANGED
|
@@ -14,7 +14,7 @@ import { AccessibleDiffViewer } from '@codingame/monaco-vscode-api/vscode/vs/edi
|
|
|
14
14
|
import { RenderOptions, LineSource, renderLines } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines';
|
|
15
15
|
import { diffAddDecoration, diffWholeLineAddDecoration, diffDeleteDecoration } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/widget/diffEditor/registrations.contribution';
|
|
16
16
|
import { EditorOption } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/config/editorOptions';
|
|
17
|
-
import { LineRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/lineRange';
|
|
17
|
+
import { LineRange } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/lineRange';
|
|
18
18
|
import { Position } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/position';
|
|
19
19
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
20
20
|
import { Selection } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/selection';
|
|
@@ -28,17 +28,18 @@ import { MenuWorkbenchToolBar, HiddenItemStrategy } from '@codingame/monaco-vsco
|
|
|
28
28
|
import { MenuId } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
29
29
|
import { TextEditorSelectionRevealType } from '@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor';
|
|
30
30
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
31
|
-
import
|
|
31
|
+
import '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
|
|
32
32
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
33
|
-
import { overviewRulerModifiedForeground, minimapGutterModifiedBackground, overviewRulerAddedForeground, minimapGutterAddedBackground, overviewRulerDeletedForeground, minimapGutterDeletedBackground } from '@codingame/monaco-vscode-
|
|
33
|
+
import { overviewRulerModifiedForeground, minimapGutterModifiedBackground, overviewRulerAddedForeground, minimapGutterAddedBackground, overviewRulerDeletedForeground, minimapGutterDeletedBackground } from '@codingame/monaco-vscode-f338ac19-278c-5fe1-bec8-b588de04a788-common/vscode/vs/workbench/contrib/scm/common/quickDiff';
|
|
34
34
|
import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
|
|
35
|
-
import
|
|
35
|
+
import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
36
36
|
import { isTextDiffEditorForEntry } from './chatEditing.js';
|
|
37
37
|
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
38
|
-
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/
|
|
39
|
-
import { autorun
|
|
40
|
-
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/derived';
|
|
41
|
-
import { constObservable
|
|
38
|
+
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
39
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
40
|
+
import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
41
|
+
import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/constObservable';
|
|
42
|
+
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
42
43
|
|
|
43
44
|
var ChatEditingCodeEditorIntegration_1, DiffHunkWidget_1;
|
|
44
45
|
registerCss(chatEditorController);
|
|
@@ -145,15 +146,15 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
|
|
|
145
146
|
this._accessibilitySignalsService.playSignal(AccessibilitySignal.diffLineModified, { source: 'chatEditingEditor.cursorPositionChanged' });
|
|
146
147
|
}
|
|
147
148
|
}));
|
|
148
|
-
this._store.add(
|
|
149
|
+
this._store.add(autorun(r => {
|
|
149
150
|
const visible = this._accessibleDiffViewVisible.read(r);
|
|
150
151
|
if (!visible || !enabledObs.read(r)) {
|
|
151
152
|
return;
|
|
152
153
|
}
|
|
153
154
|
const accessibleDiffWidget = ( new AccessibleDiffViewContainer());
|
|
154
155
|
_editor.addOverlayWidget(accessibleDiffWidget);
|
|
155
|
-
store.add(toDisposable(() => _editor.removeOverlayWidget(accessibleDiffWidget)));
|
|
156
|
-
store.add(instantiationService.createInstance(AccessibleDiffViewer, accessibleDiffWidget.getDomNode(), enabledObs, (visible, tx) => this._accessibleDiffViewVisible.set(visible, tx), constObservable(true), ( codeEditorObs.layoutInfo.map((v, r) => v.width)), ( codeEditorObs.layoutInfo.map((v, r) => v.height)), ( documentDiffInfo.map(diff => diff.changes.slice())), instantiationService.createInstance(AccessibleDiffViewerModel, documentDiffInfo, _editor)));
|
|
156
|
+
r.store.add(toDisposable(() => _editor.removeOverlayWidget(accessibleDiffWidget)));
|
|
157
|
+
r.store.add(instantiationService.createInstance(AccessibleDiffViewer, accessibleDiffWidget.getDomNode(), enabledObs, (visible, tx) => this._accessibleDiffViewVisible.set(visible, tx), constObservable(true), ( codeEditorObs.layoutInfo.map((v, r) => v.width)), ( codeEditorObs.layoutInfo.map((v, r) => v.height)), ( documentDiffInfo.map(diff => diff.changes.slice())), instantiationService.createInstance(AccessibleDiffViewerModel, documentDiffInfo, _editor)));
|
|
157
158
|
}));
|
|
158
159
|
let actualOptions;
|
|
159
160
|
const restoreActualOptions = () => {
|
|
@@ -448,7 +449,7 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
|
|
|
448
449
|
const targetRange = decorations[newIndex];
|
|
449
450
|
const targetPosition = next ? targetRange.getStartPosition() : targetRange.getEndPosition();
|
|
450
451
|
this._editor.setPosition(targetPosition);
|
|
451
|
-
this._editor.revealPositionInCenter(
|
|
452
|
+
this._editor.revealPositionInCenter(targetRange.getStartPosition().delta(-1));
|
|
452
453
|
this._editor.focus();
|
|
453
454
|
return true;
|
|
454
455
|
}
|
|
@@ -506,30 +507,15 @@ let ChatEditingCodeEditorIntegration = class ChatEditingCodeEditorIntegration {
|
|
|
506
507
|
options: { selection },
|
|
507
508
|
label: defaultAgentName
|
|
508
509
|
? ( localize(
|
|
509
|
-
|
|
510
|
+
4758,
|
|
510
511
|
'{0} (changes from {1})',
|
|
511
512
|
basename(this._entry.modifiedURI),
|
|
512
513
|
defaultAgentName
|
|
513
514
|
))
|
|
514
|
-
: ( localize(
|
|
515
|
+
: ( localize(4759, '{0} (changes from chat)', basename(this._entry.modifiedURI)))
|
|
515
516
|
});
|
|
516
517
|
if (diffEditor && diffEditor.input) {
|
|
517
518
|
diffEditor.getControl()?.setSelection(selection);
|
|
518
|
-
const d = autorun(r => {
|
|
519
|
-
const state = this._entry.state.read(r);
|
|
520
|
-
if (state === ModifiedFileEntryState.Accepted || state === ModifiedFileEntryState.Rejected) {
|
|
521
|
-
d.dispose();
|
|
522
|
-
const editorIdents = [];
|
|
523
|
-
for (const candidate of this._editorService.getEditors(EditorsOrder.MOST_RECENTLY_ACTIVE)) {
|
|
524
|
-
if (isDiffEditorInput(candidate.editor)
|
|
525
|
-
&& isEqual(candidate.editor.original.resource, this._entry.originalURI)
|
|
526
|
-
&& isEqual(candidate.editor.modified.resource, this._entry.modifiedURI)) {
|
|
527
|
-
editorIdents.push(candidate);
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
this._editorService.closeEditors(editorIdents);
|
|
531
|
-
}
|
|
532
|
-
});
|
|
533
519
|
}
|
|
534
520
|
}
|
|
535
521
|
else {
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js
CHANGED
|
@@ -6,8 +6,8 @@ import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/plat
|
|
|
6
6
|
import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
|
|
7
7
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
8
8
|
import { IChatEditingService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService.service';
|
|
9
|
-
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/
|
|
10
|
-
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
|
|
9
|
+
import { observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
10
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
11
11
|
|
|
12
12
|
let ChatEditingEditorAccessibility = class ChatEditingEditorAccessibility {
|
|
13
13
|
static { this.ID = 'chat.edits.accessibilty'; }
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Codicon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/codi
|
|
|
4
4
|
import { Action2, MenuId, registerAction2, MenuRegistry } from '@codingame/monaco-vscode-api/vscode/vs/platform/actions/common/actions';
|
|
5
5
|
import { KeybindingWeight } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybindingsRegistry';
|
|
6
6
|
import { KeyMod, KeyCode } from '@codingame/monaco-vscode-api/vscode/vs/base/common/keyCodes';
|
|
7
|
-
import { CHAT_CATEGORY } from '@codingame/monaco-vscode-
|
|
7
|
+
import { CHAT_CATEGORY } from '@codingame/monaco-vscode-3a35f433-1297-5707-ab58-c261b8180e6d-common/vscode/vs/workbench/contrib/chat/browser/actions/chatActions';
|
|
8
8
|
import { ctxReviewModeEnabled, ctxHasEditorModification, ctxIsGlobalEditingSession, ctxHasRequestInProgress } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorContextKeys';
|
|
9
9
|
import { ContextKeyExpr } from '@codingame/monaco-vscode-api/vscode/vs/platform/contextkey/common/contextkey';
|
|
10
10
|
import { EditorContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/editorContextKeys';
|
|
@@ -20,7 +20,7 @@ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/pl
|
|
|
20
20
|
import { ActiveEditorContext } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/contextkeys';
|
|
21
21
|
import { EditorResourceAccessor, SideBySideEditor, TEXT_DIFF_EDITOR_ID } from '@codingame/monaco-vscode-api/vscode/vs/workbench/common/editor';
|
|
22
22
|
import { ChatContextKeys } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatContextKeys';
|
|
23
|
-
import { NOTEBOOK_CELL_LIST_FOCUSED } from '@codingame/monaco-vscode-
|
|
23
|
+
import { NOTEBOOK_CELL_LIST_FOCUSED, NOTEBOOK_EDITOR_FOCUSED } from '@codingame/monaco-vscode-c87fff3a-2aa9-52ab-ba4d-17e8d1e5e185-common/vscode/vs/workbench/contrib/notebook/common/notebookContextKeys';
|
|
24
24
|
|
|
25
25
|
class ChatEditingEditorAction extends Action2 {
|
|
26
26
|
constructor(desc) {
|
|
@@ -54,8 +54,8 @@ class NavigateAction extends ChatEditingEditorAction {
|
|
|
54
54
|
? 'chatEditor.action.navigateNext'
|
|
55
55
|
: 'chatEditor.action.navigatePrevious',
|
|
56
56
|
title: next
|
|
57
|
-
? ( localize2(
|
|
58
|
-
: ( localize2(
|
|
57
|
+
? ( localize2(4760, 'Go to Next Chat Edit'))
|
|
58
|
+
: ( localize2(4761, 'Go to Previous Chat Edit')),
|
|
59
59
|
icon: next ? Codicon.arrowDown : Codicon.arrowUp,
|
|
60
60
|
precondition: ( ContextKeyExpr.and(ChatContextKeys.enabled, ctxHasEditorModification)),
|
|
61
61
|
keybinding: {
|
|
@@ -127,25 +127,25 @@ class KeepOrUndoAction extends ChatEditingEditorAction {
|
|
|
127
127
|
super({
|
|
128
128
|
id,
|
|
129
129
|
title: _keep
|
|
130
|
-
? ( localize2(
|
|
131
|
-
: ( localize2(
|
|
130
|
+
? ( localize2(4762, 'Keep Chat Edits'))
|
|
131
|
+
: ( localize2(4763, 'Undo Chat Edits')),
|
|
132
132
|
shortTitle: _keep
|
|
133
|
-
? ( localize2(
|
|
134
|
-
: ( localize2(
|
|
133
|
+
? ( localize2(4764, 'Keep'))
|
|
134
|
+
: ( localize2(4765, 'Undo')),
|
|
135
135
|
tooltip: _keep
|
|
136
|
-
? ( localize2(
|
|
137
|
-
: ( localize2(
|
|
136
|
+
? ( localize2(4766, 'Keep Chat Edits in this File'))
|
|
137
|
+
: ( localize2(4767, 'Undo Chat Edits in this File')),
|
|
138
138
|
precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
|
|
139
139
|
icon: _keep
|
|
140
140
|
? Codicon.check
|
|
141
141
|
: Codicon.discard,
|
|
142
142
|
f1: true,
|
|
143
143
|
keybinding: {
|
|
144
|
-
when: EditorContextKeys.focus,
|
|
145
|
-
weight: KeybindingWeight.WorkbenchContrib,
|
|
144
|
+
when: ( ContextKeyExpr.or(EditorContextKeys.focus, NOTEBOOK_EDITOR_FOCUSED)),
|
|
145
|
+
weight: KeybindingWeight.WorkbenchContrib + 10,
|
|
146
146
|
primary: _keep
|
|
147
|
-
? KeyMod.CtrlCmd | KeyCode.
|
|
148
|
-
: KeyMod.CtrlCmd | KeyCode.
|
|
147
|
+
? KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyY
|
|
148
|
+
: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyN,
|
|
149
149
|
},
|
|
150
150
|
menu: {
|
|
151
151
|
id: MenuId.ChatEditingEditorContent,
|
|
@@ -184,7 +184,7 @@ class AcceptRejectHunkAction extends ChatEditingEditorAction {
|
|
|
184
184
|
constructor(_accept) {
|
|
185
185
|
super({
|
|
186
186
|
id: _accept ? 'chatEditor.action.acceptHunk' : 'chatEditor.action.undoHunk',
|
|
187
|
-
title: _accept ? ( localize2(
|
|
187
|
+
title: _accept ? ( localize2(4768, 'Keep this Change')) : ( localize2(4769, 'Undo this Change')),
|
|
188
188
|
precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
|
|
189
189
|
icon: _accept ? Codicon.check : Codicon.discard,
|
|
190
190
|
f1: true,
|
|
@@ -192,8 +192,8 @@ class AcceptRejectHunkAction extends ChatEditingEditorAction {
|
|
|
192
192
|
when: ( ContextKeyExpr.or(EditorContextKeys.focus, NOTEBOOK_CELL_LIST_FOCUSED)),
|
|
193
193
|
weight: KeybindingWeight.WorkbenchContrib + 1,
|
|
194
194
|
primary: _accept
|
|
195
|
-
? KeyMod.CtrlCmd |
|
|
196
|
-
: KeyMod.CtrlCmd |
|
|
195
|
+
? KeyMod.CtrlCmd | KeyCode.KeyY
|
|
196
|
+
: KeyMod.CtrlCmd | KeyCode.KeyN
|
|
197
197
|
},
|
|
198
198
|
menu: {
|
|
199
199
|
id: MenuId.ChatEditingEditorHunk,
|
|
@@ -215,7 +215,7 @@ class ToggleDiffAction extends ChatEditingEditorAction {
|
|
|
215
215
|
constructor() {
|
|
216
216
|
super({
|
|
217
217
|
id: 'chatEditor.action.toggleDiff',
|
|
218
|
-
title: ( localize2(
|
|
218
|
+
title: ( localize2(4770, 'Toggle Diff Editor for Chat Edits')),
|
|
219
219
|
category: CHAT_CATEGORY,
|
|
220
220
|
toggled: {
|
|
221
221
|
condition: ( ContextKeyExpr.or(EditorContextKeys.inDiffEditor, ( ActiveEditorContext.isEqualTo(TEXT_DIFF_EDITOR_ID)))),
|
|
@@ -247,7 +247,7 @@ class ToggleAccessibleDiffViewAction extends ChatEditingEditorAction {
|
|
|
247
247
|
constructor() {
|
|
248
248
|
super({
|
|
249
249
|
id: 'chatEditor.action.showAccessibleDiffView',
|
|
250
|
-
title: ( localize2(
|
|
250
|
+
title: ( localize2(4771, 'Show Accessible Diff View for Chat Edits')),
|
|
251
251
|
f1: true,
|
|
252
252
|
precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
|
|
253
253
|
keybinding: {
|
|
@@ -265,7 +265,7 @@ class ReviewChangesAction extends ChatEditingEditorAction {
|
|
|
265
265
|
constructor() {
|
|
266
266
|
super({
|
|
267
267
|
id: 'chatEditor.action.reviewChanges',
|
|
268
|
-
title: ( localize2(
|
|
268
|
+
title: ( localize2(4772, "Review")),
|
|
269
269
|
precondition: ( ContextKeyExpr.and(ctxHasEditorModification, ( ctxHasRequestInProgress.negate()))),
|
|
270
270
|
menu: [{
|
|
271
271
|
id: MenuId.ChatEditingEditorContent,
|
|
@@ -283,7 +283,7 @@ class MultiDiffAcceptDiscardAction extends Action2 {
|
|
|
283
283
|
constructor(accept) {
|
|
284
284
|
super({
|
|
285
285
|
id: accept ? 'chatEditing.multidiff.acceptAllFiles' : 'chatEditing.multidiff.discardAllFiles',
|
|
286
|
-
title: accept ? ( localize(
|
|
286
|
+
title: accept ? ( localize(4773, 'Keep All Edits')) : ( localize(4774, 'Undo All Edits')),
|
|
287
287
|
icon: accept ? Codicon.check : Codicon.discard,
|
|
288
288
|
menu: {
|
|
289
289
|
when: ( ContextKeyExpr.equals('resourceScheme', CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME)),
|
|
@@ -344,7 +344,7 @@ function registerChatEditorActions() {
|
|
|
344
344
|
MenuRegistry.appendMenuItem(MenuId.ChatEditingEditorContent, {
|
|
345
345
|
command: {
|
|
346
346
|
id: navigationBearingFakeActionId,
|
|
347
|
-
title: ( localize(
|
|
347
|
+
title: ( localize(4775, "Navigation Status")),
|
|
348
348
|
precondition: ( ContextKeyExpr.false()),
|
|
349
349
|
},
|
|
350
350
|
group: 'navigate',
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js
CHANGED
|
@@ -29,17 +29,21 @@ import { renderIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/
|
|
|
29
29
|
import { ThemeIcon } from '@codingame/monaco-vscode-api/vscode/vs/base/common/themables';
|
|
30
30
|
import { equals } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
|
|
31
31
|
import { renderStringAsPlaintext } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/markdownRenderer';
|
|
32
|
-
import {
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
32
|
+
import { IKeybindingService } from '@codingame/monaco-vscode-api/vscode/vs/platform/keybinding/common/keybinding.service';
|
|
33
|
+
import { observableFromEventOpts, observableFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableFromEvent';
|
|
34
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
35
|
+
import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
|
|
36
|
+
import { derived, derivedOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
|
|
37
|
+
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
38
|
+
import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
|
|
36
39
|
|
|
37
40
|
registerCss(chatEditingEditorOverlay);
|
|
38
41
|
let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
39
|
-
constructor(_editor, _chatService, _instaService) {
|
|
42
|
+
constructor(_editor, _chatService, _keybindingService, _instaService) {
|
|
40
43
|
super();
|
|
41
44
|
this._editor = _editor;
|
|
42
45
|
this._chatService = _chatService;
|
|
46
|
+
this._keybindingService = _keybindingService;
|
|
43
47
|
this._instaService = _instaService;
|
|
44
48
|
this._showStore = this._store.add(( new DisposableStore()));
|
|
45
49
|
this._session = observableValue(this, undefined);
|
|
@@ -48,14 +52,9 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
48
52
|
this._domNode = document.createElement('div');
|
|
49
53
|
this._domNode.classList.add('chat-editor-overlay-widget');
|
|
50
54
|
this._isBusy = derived(r => {
|
|
55
|
+
const entry = this._entry.read(r);
|
|
51
56
|
const session = this._session.read(r);
|
|
52
|
-
|
|
53
|
-
const lastResponse = chatModel
|
|
54
|
-
? observableFromEvent(this, chatModel.onDidChange, () => chatModel.getRequests().at(-1)?.response).read(r)
|
|
55
|
-
: undefined;
|
|
56
|
-
return lastResponse
|
|
57
|
-
? observableFromEvent(this, lastResponse.onDidChange, () => !lastResponse.isPendingConfirmation && !lastResponse.isComplete).read(r)
|
|
58
|
-
: false;
|
|
57
|
+
return entry?.waitsForLastEdits.read(r) ?? !session?.isGlobalEditingSession;
|
|
59
58
|
});
|
|
60
59
|
const requestMessage = derived(r => {
|
|
61
60
|
const session = this._session.read(r);
|
|
@@ -65,10 +64,10 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
65
64
|
}
|
|
66
65
|
const response = this._entry.read(r)?.lastModifyingResponse.read(r);
|
|
67
66
|
if (!response) {
|
|
68
|
-
return { message: ( localize(
|
|
67
|
+
return { message: ( localize(4781, "Working...")) };
|
|
69
68
|
}
|
|
70
69
|
if (response.isPaused.read(r)) {
|
|
71
|
-
return { message: ( localize(
|
|
70
|
+
return { message: ( localize(4782, "Paused")), paused: true };
|
|
72
71
|
}
|
|
73
72
|
const lastPart = observableFromEventOpts({ equalsFn: equals }, response.onDidChange, () => response.response.value)
|
|
74
73
|
.read(r)
|
|
@@ -81,7 +80,7 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
81
80
|
return { message: lastPart.content };
|
|
82
81
|
}
|
|
83
82
|
else {
|
|
84
|
-
return { message: ( localize(
|
|
83
|
+
return { message: ( localize(4781, "Working...")) };
|
|
85
84
|
}
|
|
86
85
|
});
|
|
87
86
|
const progressNode = document.createElement('div');
|
|
@@ -158,10 +157,10 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
158
157
|
const { changeCount, activeIdx } = that._navigationBearings.read(r);
|
|
159
158
|
if (changeCount > 0) {
|
|
160
159
|
const n = activeIdx === -1 ? '1' : `${activeIdx + 1}`;
|
|
161
|
-
this.label.innerText = ( localize(
|
|
160
|
+
this.label.innerText = ( localize(4783, "{0} of {1}", n, changeCount));
|
|
162
161
|
}
|
|
163
162
|
else {
|
|
164
|
-
this.label.innerText = ( localize(
|
|
163
|
+
this.label.innerText = ( localize(4784, "—"));
|
|
165
164
|
}
|
|
166
165
|
this.updateTooltip();
|
|
167
166
|
}));
|
|
@@ -173,21 +172,21 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
173
172
|
}
|
|
174
173
|
let result;
|
|
175
174
|
if (changeCount === 1 && entriesCount === 1) {
|
|
176
|
-
result = ( localize(
|
|
175
|
+
result = ( localize(4785, "1 change in 1 file"));
|
|
177
176
|
}
|
|
178
177
|
else if (changeCount === 1) {
|
|
179
|
-
result = ( localize(
|
|
178
|
+
result = ( localize(4786, "1 change in {0} files", entriesCount));
|
|
180
179
|
}
|
|
181
180
|
else if (entriesCount === 1) {
|
|
182
|
-
result = ( localize(
|
|
181
|
+
result = ( localize(4787, "{0} changes in 1 file", changeCount));
|
|
183
182
|
}
|
|
184
183
|
else {
|
|
185
|
-
result = ( localize(
|
|
184
|
+
result = ( localize(4788, "{0} changes in {1} files", changeCount, entriesCount));
|
|
186
185
|
}
|
|
187
186
|
if (!that._isBusy.get()) {
|
|
188
187
|
return result;
|
|
189
188
|
}
|
|
190
|
-
return localize(
|
|
189
|
+
return localize(4789, "{0} - Working...", result);
|
|
191
190
|
}
|
|
192
191
|
});
|
|
193
192
|
}
|
|
@@ -227,6 +226,17 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
227
226
|
get actionRunner() {
|
|
228
227
|
return super.actionRunner;
|
|
229
228
|
}
|
|
229
|
+
getTooltip() {
|
|
230
|
+
const value = super.getTooltip();
|
|
231
|
+
if (!value) {
|
|
232
|
+
return value;
|
|
233
|
+
}
|
|
234
|
+
const kb = that._keybindingService.lookupKeybinding(this.action.id);
|
|
235
|
+
if (!kb) {
|
|
236
|
+
return value;
|
|
237
|
+
}
|
|
238
|
+
return localize(4790, "{0} ({1})", value, kb.getLabel());
|
|
239
|
+
}
|
|
230
240
|
});
|
|
231
241
|
}
|
|
232
242
|
return undefined;
|
|
@@ -244,7 +254,8 @@ let ChatEditorOverlayWidget = class ChatEditorOverlayWidget extends Disposable {
|
|
|
244
254
|
};
|
|
245
255
|
ChatEditorOverlayWidget = ( __decorate([
|
|
246
256
|
( __param(1, IChatService)),
|
|
247
|
-
( __param(2,
|
|
257
|
+
( __param(2, IKeybindingService)),
|
|
258
|
+
( __param(3, IInstantiationService))
|
|
248
259
|
], ChatEditorOverlayWidget));
|
|
249
260
|
let ChatEditingOverlayController = class ChatEditingOverlayController {
|
|
250
261
|
constructor(container, group, instaService, chatService, chatEditingService, inlineChatService) {
|
|
@@ -291,12 +302,7 @@ let ChatEditingOverlayController = class ChatEditingOverlayController {
|
|
|
291
302
|
return false;
|
|
292
303
|
}
|
|
293
304
|
const chatModel = chatService.getSession(session.chatSessionId);
|
|
294
|
-
|
|
295
|
-
const response = lastResponse.read(r);
|
|
296
|
-
if (!response) {
|
|
297
|
-
return false;
|
|
298
|
-
}
|
|
299
|
-
return observableFromEvent(this, response.onDidChange, () => !response.isComplete && !response.isPendingConfirmation).read(r);
|
|
305
|
+
return chatModel.requestInProgressObs.read(r);
|
|
300
306
|
});
|
|
301
307
|
this._store.add(autorun(r => {
|
|
302
308
|
const data = sessionAndEntry.read(r);
|
|
@@ -29,6 +29,7 @@ export declare class ChatEditingModifiedDocumentEntry extends AbstractChatEditin
|
|
|
29
29
|
private readonly _accessibilitySignalService;
|
|
30
30
|
private static readonly _lastEditDecorationOptions;
|
|
31
31
|
private static readonly _pendingEditDecorationOptions;
|
|
32
|
+
private static readonly _atomicEditDecorationOptions;
|
|
32
33
|
readonly initialContent: string;
|
|
33
34
|
private readonly originalModel;
|
|
34
35
|
private readonly modifiedModel;
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { addDisposableListener, getWindow } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/dom';
|
|
3
4
|
import { assert } from '@codingame/monaco-vscode-api/vscode/vs/base/common/assert';
|
|
4
|
-
import { RunOnceScheduler } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
5
|
+
import { RunOnceScheduler, DeferredPromise, timeout } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
5
6
|
import { toDisposable, MutableDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
7
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
7
8
|
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
@@ -9,7 +10,7 @@ import { themeColorFromId } from '@codingame/monaco-vscode-api/vscode/vs/base/co
|
|
|
9
10
|
import { assertType } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
|
|
10
11
|
import { getCodeEditor } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/editorBrowser';
|
|
11
12
|
import { EditOperation } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/editOperation';
|
|
12
|
-
import {
|
|
13
|
+
import { StringEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit';
|
|
13
14
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
14
15
|
import { nullDocumentDiff } from '../../../../../editor/common/diff/documentDiffProvider.js';
|
|
15
16
|
import { TextEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
|
|
@@ -17,11 +18,11 @@ import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/
|
|
|
17
18
|
import { OverviewRulerLane, MinimapPosition } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
|
|
18
19
|
import { SingleModelEditStackElement } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/editStack';
|
|
19
20
|
import { ModelDecorationOptions, createTextBufferFactoryFromSnapshot } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModel';
|
|
20
|
-
import {
|
|
21
|
+
import { offsetEditFromContentChanges, offsetEditToEditOperations, offsetEditFromLineRangeMapping } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelStringEdit';
|
|
21
22
|
import { IEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service';
|
|
22
23
|
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
23
24
|
import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
|
|
24
|
-
import {
|
|
25
|
+
import { TextModelEditReason } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEditReason';
|
|
25
26
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
26
27
|
import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
|
|
27
28
|
import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
|
|
@@ -50,8 +51,9 @@ import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/c
|
|
|
50
51
|
import { ChatEditingCodeEditorIntegration } from './chatEditingCodeEditorIntegration.js';
|
|
51
52
|
import { AbstractChatEditingModifiedFileEntry, pendingRewriteMinimap } from './chatEditingModifiedFileEntry.js';
|
|
52
53
|
import { ChatEditingTextModelContentProvider, ChatEditingSnapshotTextModelContentProvider } from './chatEditingTextModelContentProviders.js';
|
|
53
|
-
import { observableValue
|
|
54
|
-
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
|
|
54
|
+
import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
|
|
55
|
+
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
56
|
+
import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
|
|
55
57
|
|
|
56
58
|
var ChatEditingModifiedDocumentEntry_1;
|
|
57
59
|
let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry extends AbstractChatEditingModifiedFileEntry {
|
|
@@ -75,13 +77,22 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
75
77
|
color: themeColorFromId(pendingRewriteMinimap)
|
|
76
78
|
}
|
|
77
79
|
}); }
|
|
80
|
+
static { this._atomicEditDecorationOptions = ModelDecorationOptions.register({
|
|
81
|
+
isWholeLine: true,
|
|
82
|
+
description: 'chat-atomic-edit',
|
|
83
|
+
className: 'chat-editing-atomic-edit',
|
|
84
|
+
minimap: {
|
|
85
|
+
position: MinimapPosition.Inline,
|
|
86
|
+
color: themeColorFromId(pendingRewriteMinimap)
|
|
87
|
+
}
|
|
88
|
+
}); }
|
|
78
89
|
constructor(resourceRef, _multiDiffEntryDelegate, telemetryInfo, kind, initialContent, markerService, modelService, textModelService, languageService, configService, fileConfigService, chatService, _editorWorkerService, _textFileService, fileService, undoRedoService, instantiationService, _accessibilitySignalService) {
|
|
79
90
|
super(resourceRef.object.textEditorModel.uri, telemetryInfo, kind, configService, fileConfigService, chatService, fileService, undoRedoService, instantiationService);
|
|
80
91
|
this._multiDiffEntryDelegate = _multiDiffEntryDelegate;
|
|
81
92
|
this._editorWorkerService = _editorWorkerService;
|
|
82
93
|
this._textFileService = _textFileService;
|
|
83
94
|
this._accessibilitySignalService = _accessibilitySignalService;
|
|
84
|
-
this._edit =
|
|
95
|
+
this._edit = StringEdit.empty;
|
|
85
96
|
this._isEditFromUs = false;
|
|
86
97
|
this._allEditsAreFromUs = true;
|
|
87
98
|
this._diffOperationIds = 0;
|
|
@@ -111,11 +122,11 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
111
122
|
}));
|
|
112
123
|
const resourceFilter = this._register(( new MutableDisposable()));
|
|
113
124
|
this._register(autorun(r => {
|
|
114
|
-
const inProgress = this.
|
|
125
|
+
const inProgress = this._waitsForLastEdits.read(r);
|
|
115
126
|
if (inProgress) {
|
|
116
127
|
const res = this._lastModifyingResponseObs.read(r);
|
|
117
128
|
const req = res && res.session.getRequests().find(value => value.id === res.requestId);
|
|
118
|
-
resourceFilter.value = markerService.installResourceFilter(this.modifiedURI, req?.message.text || ( localize(
|
|
129
|
+
resourceFilter.value = markerService.installResourceFilter(this.modifiedURI, req?.message.text || ( localize(4791, "Chat Edits")));
|
|
119
130
|
}
|
|
120
131
|
else {
|
|
121
132
|
resourceFilter.clear();
|
|
@@ -167,7 +178,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
167
178
|
this._clearCurrentEditLineDecoration();
|
|
168
179
|
}
|
|
169
180
|
_mirrorEdits(event) {
|
|
170
|
-
const edit =
|
|
181
|
+
const edit = offsetEditFromContentChanges(event.changes);
|
|
171
182
|
if (this._isEditFromUs) {
|
|
172
183
|
const e_sum = this._edit;
|
|
173
184
|
const e_ai = edit;
|
|
@@ -181,7 +192,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
181
192
|
this._edit = e_ai.compose(e_user);
|
|
182
193
|
}
|
|
183
194
|
else {
|
|
184
|
-
const edits =
|
|
195
|
+
const edits = offsetEditToEditOperations(e_user_r, this.originalModel);
|
|
185
196
|
this.originalModel.applyEdits(edits);
|
|
186
197
|
this._edit = e_ai.tryRebase(e_user_r);
|
|
187
198
|
}
|
|
@@ -201,34 +212,71 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
201
212
|
}
|
|
202
213
|
_createUndoRedoElement(response) {
|
|
203
214
|
const request = response.session.getRequests().find(req => req.id === response.requestId);
|
|
204
|
-
const label = request?.message.text ? ( localize(
|
|
215
|
+
const label = request?.message.text ? ( localize(4792, "Chat Edit: '{0}'", request.message.text)) : ( localize(4793, "Chat Edit"));
|
|
205
216
|
return ( new SingleModelEditStackElement(label, 'chat.edit', this.modifiedModel, null));
|
|
206
217
|
}
|
|
207
218
|
async acceptAgentEdits(resource, textEdits, isLastEdits, responseModel) {
|
|
208
219
|
assertType(textEdits.every(TextEdit.isTextEdit), 'INVALID args, can only handle text edits');
|
|
209
220
|
assert(isEqual(resource, this.modifiedURI), ' INVALID args, can only edit THIS document');
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
221
|
+
const isAtomicEdits = textEdits.length > 0 && isLastEdits;
|
|
222
|
+
let rewriteRatio = 0;
|
|
223
|
+
if (isAtomicEdits) {
|
|
224
|
+
const minimalEdits = (await this._editorWorkerService.computeMoreMinimalEdits(this.modifiedModel.uri, textEdits)) ?? textEdits;
|
|
225
|
+
const ops = ( minimalEdits.map(TextEdit.asEditOperation));
|
|
226
|
+
const undoEdits = this._applyEdits(ops);
|
|
227
|
+
if (undoEdits.length > 0) {
|
|
228
|
+
let range;
|
|
229
|
+
for (let i = 0; i < undoEdits.length; i++) {
|
|
230
|
+
const op = undoEdits[i];
|
|
231
|
+
if (!range) {
|
|
232
|
+
range = Range.lift(op.range);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
range = Range.plusRange(range, op.range);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (range) {
|
|
239
|
+
const defer = ( new DeferredPromise());
|
|
240
|
+
const listener = addDisposableListener(getWindow(undefined), 'animationend', e => {
|
|
241
|
+
if (e.animationName === 'kf-chat-editing-atomic-edit') {
|
|
242
|
+
defer.complete();
|
|
243
|
+
listener.dispose();
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
this._editDecorations = this.modifiedModel.deltaDecorations(this._editDecorations, [{
|
|
247
|
+
options: ChatEditingModifiedDocumentEntry_1._atomicEditDecorationOptions,
|
|
248
|
+
range
|
|
249
|
+
}]);
|
|
250
|
+
await Promise.any([defer.p, timeout(500)]);
|
|
251
|
+
listener.dispose();
|
|
252
|
+
}
|
|
217
253
|
}
|
|
218
|
-
];
|
|
219
|
-
if (maxLineNumber > 0) {
|
|
220
|
-
newDecorations.push({
|
|
221
|
-
options: ChatEditingModifiedDocumentEntry_1._lastEditDecorationOptions,
|
|
222
|
-
range: ( new Range(maxLineNumber, 1, maxLineNumber, Number.MAX_SAFE_INTEGER))
|
|
223
|
-
});
|
|
224
254
|
}
|
|
225
|
-
|
|
255
|
+
else {
|
|
256
|
+
const ops = ( textEdits.map(TextEdit.asEditOperation));
|
|
257
|
+
const undoEdits = this._applyEdits(ops);
|
|
258
|
+
const maxLineNumber = undoEdits.reduce((max, op) => Math.max(max, op.range.startLineNumber), 0);
|
|
259
|
+
rewriteRatio = Math.min(1, maxLineNumber / this.modifiedModel.getLineCount());
|
|
260
|
+
const newDecorations = [
|
|
261
|
+
{
|
|
262
|
+
options: ChatEditingModifiedDocumentEntry_1._pendingEditDecorationOptions,
|
|
263
|
+
range: ( new Range(maxLineNumber + 1, 1, Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER))
|
|
264
|
+
}
|
|
265
|
+
];
|
|
266
|
+
if (maxLineNumber > 0) {
|
|
267
|
+
newDecorations.push({
|
|
268
|
+
options: ChatEditingModifiedDocumentEntry_1._lastEditDecorationOptions,
|
|
269
|
+
range: ( new Range(maxLineNumber, 1, maxLineNumber, Number.MAX_SAFE_INTEGER))
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
this._editDecorations = this.modifiedModel.deltaDecorations(this._editDecorations, newDecorations);
|
|
273
|
+
}
|
|
226
274
|
transaction((tx) => {
|
|
275
|
+
this._waitsForLastEdits.set(!isLastEdits, tx);
|
|
276
|
+
this._stateObs.set(ModifiedFileEntryState.Modified, tx);
|
|
227
277
|
if (!isLastEdits) {
|
|
228
|
-
this._stateObs.set(ModifiedFileEntryState.Modified, tx);
|
|
229
278
|
this._isCurrentlyBeingModifiedByObs.set(responseModel, tx);
|
|
230
|
-
|
|
231
|
-
this._rewriteRatioObs.set(Math.min(1, maxLineNumber / lineCount), tx);
|
|
279
|
+
this._rewriteRatioObs.set(rewriteRatio, tx);
|
|
232
280
|
}
|
|
233
281
|
else {
|
|
234
282
|
this._resetEditsState(tx);
|
|
@@ -284,7 +332,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
284
332
|
this._isEditFromUs = true;
|
|
285
333
|
try {
|
|
286
334
|
let result = [];
|
|
287
|
-
|
|
335
|
+
TextModelEditReason.editWithReason(( new TextModelEditReason({ source: 'Chat.applyEdits' })), () => {
|
|
288
336
|
this.modifiedModel.pushEditOperations(null, edits, (undoEdits) => {
|
|
289
337
|
result = undoEdits;
|
|
290
338
|
return null;
|
|
@@ -326,7 +374,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
326
374
|
if (this.modifiedModel.getVersionId() === docVersionNow && this.originalModel.getVersionId() === snapshotVersionNow) {
|
|
327
375
|
const diff2 = diff ?? nullDocumentDiff;
|
|
328
376
|
this._diffInfo.set(diff2, undefined);
|
|
329
|
-
this._edit =
|
|
377
|
+
this._edit = offsetEditFromLineRangeMapping(this.originalModel, this.modifiedModel, diff2.changes);
|
|
330
378
|
return diff2;
|
|
331
379
|
}
|
|
332
380
|
return undefined;
|
|
@@ -334,7 +382,7 @@ let ChatEditingModifiedDocumentEntry = class ChatEditingModifiedDocumentEntry ex
|
|
|
334
382
|
async _doAccept(tx) {
|
|
335
383
|
this.originalModel.setValue(this.modifiedModel.createSnapshot());
|
|
336
384
|
this._diffInfo.set(nullDocumentDiff, tx);
|
|
337
|
-
this._edit =
|
|
385
|
+
this._edit = StringEdit.empty;
|
|
338
386
|
await this._collapse(tx);
|
|
339
387
|
const config = this._fileConfigService.getAutoSaveConfiguration(this.modifiedURI);
|
|
340
388
|
if (!config.autoSave || !this._textFileService.isDirty(this.modifiedURI)) {
|