@codingame/monaco-vscode-chat-service-override 20.5.0 → 21.0.1
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 +15 -7
- package/package.json +38 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +56 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatClearActions.js +18 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +52 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContext.js +28 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +19 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +15 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +11 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +10 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatSessionActions.js +433 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +17 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +7 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +205 -551
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +7 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +52 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +277 -163
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAttachmentResolveService.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +20 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +17 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +11 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +32 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +22 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +47 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +33 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTimeline.js +74 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +19 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +23 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatLayoutService.js +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +36 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/chatPasteProviders.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.d.ts +37 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.contribution.js +238 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +23 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +257 -148
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +126 -77
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +2 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +3 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +55 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +13 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +130 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-dark.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/apple-light.svg +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +5 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/attachInstructionsAction.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/newPromptFileActions.js +39 -35
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptName.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/askForPromptSourceFolder.js +18 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/pickers/promptFilePickers.js +12 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +8 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveToPromptAction.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +14 -14
- 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 +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +7 -4
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +4 -8
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +153 -168
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.d.ts +127 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceTelemetry.js +111 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatTodoListService.js +6 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +66 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +143 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +12 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.d.ts +8 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderDiagnosticsProvider.js +41 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderHovers.js +55 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkDiagnosticsProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/basePromptParser.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/headerBase.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/applyTo.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/string.js +5 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/mode.js +3 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/tools.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/promptHeader.js +8 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/topError.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +4 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +11 -5
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +28 -28
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +1 -1
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +54 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +4 -4
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +33 -31
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +9 -9
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.d.ts +1 -3
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +9 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +16 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +20 -18
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +11 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.d.ts +1 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +1 -6
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.d.ts +16 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandLineAutoApprover.js +84 -25
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandSimplifier.js +55 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +15 -7
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +72 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +8 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +19 -9
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +7 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +85 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.d.ts +35 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +448 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/subCommands.js +30 -77
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.d.ts +62 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +174 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +75 -10
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +15 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +81 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.js → tools/getTerminalOutputTool.js} +5 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +59 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +57 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +452 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +45 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +23 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/utils.js +31 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.d.ts → tools/runInTerminalTool.d.ts} +11 -13
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{runInTerminalTool.js → tools/runInTerminalTool.js} +282 -133
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/createAndRunTaskTool.js +51 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/getTaskOutputTool.d.ts +6 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +117 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.d.ts +3 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{task → tools/task}/runTaskTool.js +54 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +36 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminal.chatAgentTools.js +8 -0
- package/vscode/src/vs/base/common/policy.d.ts +0 -41
- package/vscode/src/vs/base/common/policy.js +0 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.d.ts +0 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions.js +0 -738
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSessions.css +0 -42
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.d.ts +0 -67
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptPathAutocompletion.js +0 -167
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.d.ts +0 -23
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/promptHeader/metadata/base/enum.js +0 -63
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.d.ts +0 -55
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/bufferOutputPolling.js +0 -163
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/getTaskOutputTool.js +0 -88
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.d.ts +0 -35
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task/taskHelpers.js +0 -80
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/task.chatAgentTools.contribution.js +0 -40
- /package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/{getTerminalOutputTool.d.ts → tools/getTerminalOutputTool.d.ts} +0 -0
|
@@ -8,6 +8,7 @@ import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/ite
|
|
|
8
8
|
import { Disposable, dispose, DisposableStore, toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
9
|
import { LinkedList } from '@codingame/monaco-vscode-api/vscode/vs/base/common/linkedList';
|
|
10
10
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
11
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
11
12
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
12
13
|
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
13
14
|
import { compare } from '@codingame/monaco-vscode-api/vscode/vs/base/common/strings';
|
|
@@ -32,7 +33,7 @@ import { IMultiDiffSourceResolverService } from '@codingame/monaco-vscode-api/vs
|
|
|
32
33
|
import { CellUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
33
34
|
import { INotebookService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookService.service';
|
|
34
35
|
import { IChatAgentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatAgents.service';
|
|
35
|
-
import {
|
|
36
|
+
import { chatEditingAgentSupportsReadonlyReferencesContextKey, ChatEditingSessionState, ModifiedFileEntryState, CHAT_EDITING_MULTI_DIFF_SOURCE_RESOLVER_SCHEME, parseChatMultiDiffUri, chatEditingResourceContextKey, inChatEditingSessionContextKey } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
36
37
|
import { isCellTextEditOperation } from '@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel';
|
|
37
38
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
38
39
|
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
@@ -64,7 +65,7 @@ let ChatEditingService = class ChatEditingService extends Disposable {
|
|
|
64
65
|
this._register(decorationsService.registerDecorationsProvider(_instantiationService.createInstance(ChatDecorationsProvider, this.editingSessionsObs)));
|
|
65
66
|
this._register(multiDiffSourceResolverService.registerResolver(_instantiationService.createInstance(ChatEditingMultiDiffSourceResolver, this.editingSessionsObs)));
|
|
66
67
|
this._register(textModelService.registerTextModelContentProvider(ChatEditingTextModelContentProvider.scheme, _instantiationService.createInstance(ChatEditingTextModelContentProvider, this)));
|
|
67
|
-
this._register(textModelService.registerTextModelContentProvider(chatEditingSnapshotScheme, _instantiationService.createInstance(ChatEditingSnapshotTextModelContentProvider, this)));
|
|
68
|
+
this._register(textModelService.registerTextModelContentProvider(Schemas.chatEditingSnapshotScheme, _instantiationService.createInstance(ChatEditingSnapshotTextModelContentProvider, this)));
|
|
68
69
|
this._register(this._chatService.onDidDisposeSession((e) => {
|
|
69
70
|
if (e.reason === 'cleared') {
|
|
70
71
|
this.getEditingSession(e.sessionId)?.stop();
|
|
@@ -97,7 +98,7 @@ let ChatEditingService = class ChatEditingService extends Disposable {
|
|
|
97
98
|
}
|
|
98
99
|
e.join(storageTask, {
|
|
99
100
|
id: 'join.chatEditingSession',
|
|
100
|
-
label: ( localize(
|
|
101
|
+
label: ( localize(5053, "Saving chat edits history"))
|
|
101
102
|
});
|
|
102
103
|
}));
|
|
103
104
|
}
|
|
@@ -196,9 +197,6 @@ let ChatEditingService = class ChatEditingService extends Disposable {
|
|
|
196
197
|
for (const remaining of editsSeen) {
|
|
197
198
|
remaining?.streaming.complete();
|
|
198
199
|
}
|
|
199
|
-
if (responseModel.result?.errorDetails && !responseModel.result.errorDetails.responseIsIncomplete) {
|
|
200
|
-
session.restoreSnapshot(responseModel.requestId, undefined);
|
|
201
|
-
}
|
|
202
200
|
editsSeen.length = 0;
|
|
203
201
|
editedFilesExist.clear();
|
|
204
202
|
editorListener.dispose();
|
|
@@ -328,7 +326,7 @@ let ChatDecorationsProvider = class ChatDecorationsProvider extends Disposable {
|
|
|
328
326
|
super();
|
|
329
327
|
this._sessions = _sessions;
|
|
330
328
|
this._chatAgentService = _chatAgentService;
|
|
331
|
-
this.label = ( localize(
|
|
329
|
+
this.label = ( localize(5054, "Chat Editing"));
|
|
332
330
|
this._currentEntries = derived(this, (r) => {
|
|
333
331
|
const sessions = this._sessions.read(r);
|
|
334
332
|
if (!sessions) {
|
|
@@ -368,7 +366,7 @@ let ChatDecorationsProvider = class ChatDecorationsProvider extends Disposable {
|
|
|
368
366
|
return {
|
|
369
367
|
weight: 1000,
|
|
370
368
|
letter: Codicon.diffModified,
|
|
371
|
-
tooltip: defaultAgentName ? ( localize(
|
|
369
|
+
tooltip: defaultAgentName ? ( localize(5055, "Pending changes from {0}", defaultAgentName)) : ( localize(5056, "Pending changes from chat")),
|
|
372
370
|
bubble: true
|
|
373
371
|
};
|
|
374
372
|
}
|
|
@@ -51,6 +51,7 @@ export declare class ChatEditingSession extends Disposable implements IChatEditi
|
|
|
51
51
|
storeState(): Promise<void>;
|
|
52
52
|
private _ensurePendingSnapshot;
|
|
53
53
|
getEntryDiffBetweenStops(uri: URI, requestId: string | undefined, stopId: string | undefined): IObservable<import("@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService").IEditSessionEntryDiff | undefined>;
|
|
54
|
+
getEntryDiffBetweenRequests(uri: URI, startRequestId: string, stopRequestId: string): IObservable<import("@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService").IEditSessionEntryDiff | undefined>;
|
|
54
55
|
createSnapshot(requestId: string, undoStop: string | undefined, makeEmpty?: boolean): void;
|
|
55
56
|
private _createSnapshot;
|
|
56
57
|
getSnapshot(requestId: string, undoStop: string | undefined, snapshotUri: URI): ISnapshotEntry | undefined;
|
|
@@ -26,6 +26,7 @@ import { CellUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contri
|
|
|
26
26
|
import { INotebookService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookService.service';
|
|
27
27
|
import { ChatEditingSessionState, ModifiedFileEntryState, getMultiDiffSourceUri, ChatEditKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
28
28
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
29
|
+
import { ChatAgentLocation } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/constants';
|
|
29
30
|
import { ChatEditingModifiedDocumentEntry } from './chatEditingModifiedDocumentEntry.js';
|
|
30
31
|
import { AbstractChatEditingModifiedFileEntry } from './chatEditingModifiedFileEntry.js';
|
|
31
32
|
import { ChatEditingModifiedNotebookEntry } from './chatEditingModifiedNotebookEntry.js';
|
|
@@ -36,6 +37,11 @@ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/com
|
|
|
36
37
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
|
|
37
38
|
import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
|
|
38
39
|
|
|
40
|
+
var NotExistBehavior;
|
|
41
|
+
(function (NotExistBehavior) {
|
|
42
|
+
NotExistBehavior[NotExistBehavior["Create"] = 0] = "Create";
|
|
43
|
+
NotExistBehavior[NotExistBehavior["Abort"] = 1] = "Abort";
|
|
44
|
+
})(NotExistBehavior || (NotExistBehavior = {}));
|
|
39
45
|
class ThrottledSequencer extends Sequencer {
|
|
40
46
|
constructor(_minDuration, _maxOverallDelay) {
|
|
41
47
|
super();
|
|
@@ -180,6 +186,9 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
180
186
|
getEntryDiffBetweenStops(uri, requestId, stopId) {
|
|
181
187
|
return this._timeline.getEntryDiffBetweenStops(uri, requestId, stopId);
|
|
182
188
|
}
|
|
189
|
+
getEntryDiffBetweenRequests(uri, startRequestId, stopRequestId) {
|
|
190
|
+
return this._timeline.getEntryDiffBetweenRequests(uri, startRequestId, stopRequestId);
|
|
191
|
+
}
|
|
183
192
|
createSnapshot(requestId, undoStop, makeEmpty = undoStop !== undefined) {
|
|
184
193
|
this._timeline.pushSnapshot(requestId, undoStop, makeEmpty ? ChatEditingTimeline.createEmptySnapshot(undoStop) : this._createSnapshot(requestId, undoStop));
|
|
185
194
|
}
|
|
@@ -235,10 +244,12 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
235
244
|
}
|
|
236
245
|
const entriesArr = [];
|
|
237
246
|
for (const snapshotEntry of ( entries.values())) {
|
|
238
|
-
const entry = await this._getOrCreateModifiedFileEntry(snapshotEntry.resource, snapshotEntry.telemetryInfo);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
247
|
+
const entry = await this._getOrCreateModifiedFileEntry(snapshotEntry.resource, restoreResolvedToDisk ? NotExistBehavior.Create : NotExistBehavior.Abort, snapshotEntry.telemetryInfo);
|
|
248
|
+
if (entry) {
|
|
249
|
+
const restoreToDisk = snapshotEntry.state === ModifiedFileEntryState.Modified || restoreResolvedToDisk;
|
|
250
|
+
await entry.restoreFromSnapshot(snapshotEntry, restoreToDisk);
|
|
251
|
+
entriesArr.push(entry);
|
|
252
|
+
}
|
|
242
253
|
}
|
|
243
254
|
this._entriesObs.set(entriesArr, undefined);
|
|
244
255
|
}
|
|
@@ -286,7 +297,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
286
297
|
}
|
|
287
298
|
const input = MultiDiffEditorInput.fromResourceMultiDiffEditorInput({
|
|
288
299
|
multiDiffSource: getMultiDiffSourceUri(this, previousChanges),
|
|
289
|
-
label: ( localize(
|
|
300
|
+
label: ( localize(5057, "Suggested Edits"))
|
|
290
301
|
}, this._instantiationService);
|
|
291
302
|
this._editorPane = await this._editorGroupsService.activeGroup.openEditor(input, { pinned: true, activation: EditorActivation.ACTIVATE });
|
|
292
303
|
}
|
|
@@ -394,7 +405,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
394
405
|
}
|
|
395
406
|
}
|
|
396
407
|
async _acceptStreamingEditsStart(responseModel, undoStop, resource) {
|
|
397
|
-
const entry = await this._getOrCreateModifiedFileEntry(resource, this._getTelemetryInfoForModel(responseModel));
|
|
408
|
+
const entry = await this._getOrCreateModifiedFileEntry(resource, NotExistBehavior.Create, this._getTelemetryInfoForModel(responseModel));
|
|
398
409
|
transaction((tx) => {
|
|
399
410
|
this._state.set(ChatEditingSessionState.StreamingEdits, tx);
|
|
400
411
|
entry.acceptStreamingEditsStart(responseModel, tx);
|
|
@@ -402,16 +413,28 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
402
413
|
});
|
|
403
414
|
}
|
|
404
415
|
async _acceptEdits(resource, textEdits, isLastEdits, responseModel) {
|
|
405
|
-
const entry = await this._getOrCreateModifiedFileEntry(resource, this._getTelemetryInfoForModel(responseModel));
|
|
416
|
+
const entry = await this._getOrCreateModifiedFileEntry(resource, NotExistBehavior.Create, this._getTelemetryInfoForModel(responseModel));
|
|
406
417
|
await entry.acceptAgentEdits(resource, textEdits, isLastEdits, responseModel);
|
|
407
418
|
}
|
|
408
419
|
_getTelemetryInfoForModel(responseModel) {
|
|
409
420
|
return new class {
|
|
410
421
|
get agentId() { return responseModel.agent?.id; }
|
|
422
|
+
get modelId() { return responseModel.request?.modelId; }
|
|
423
|
+
get modeId() { return responseModel.request?.modeInfo?.modeId; }
|
|
411
424
|
get command() { return responseModel.slashCommand?.name; }
|
|
412
425
|
get sessionId() { return responseModel.session.sessionId; }
|
|
413
426
|
get requestId() { return responseModel.requestId; }
|
|
414
427
|
get result() { return responseModel.result; }
|
|
428
|
+
get applyCodeBlockSuggestionId() { return responseModel.request?.modeInfo?.applyCodeBlockSuggestionId; }
|
|
429
|
+
get feature() {
|
|
430
|
+
if (responseModel.session.initialLocation === ChatAgentLocation.Panel) {
|
|
431
|
+
return 'sideBarChat';
|
|
432
|
+
}
|
|
433
|
+
else if (responseModel.session.initialLocation === ChatAgentLocation.Editor) {
|
|
434
|
+
return 'inlineChat';
|
|
435
|
+
}
|
|
436
|
+
return responseModel.session.initialLocation;
|
|
437
|
+
}
|
|
415
438
|
};
|
|
416
439
|
}
|
|
417
440
|
async _resolve(requestId, undoStop, resource) {
|
|
@@ -426,7 +449,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
426
449
|
this._timeline.ensureEditInUndoStopMatches(requestId, undoStop, entry, true, undefined);
|
|
427
450
|
return entry.acceptStreamingEditsEnd();
|
|
428
451
|
}
|
|
429
|
-
async _getOrCreateModifiedFileEntry(resource, telemetryInfo) {
|
|
452
|
+
async _getOrCreateModifiedFileEntry(resource, ifNotExists, telemetryInfo) {
|
|
430
453
|
resource = CellUri.parse(resource)?.notebook ?? resource;
|
|
431
454
|
const existingEntry = this._entriesObs.get().find(e => isEqual(e.modifiedURI, resource));
|
|
432
455
|
if (existingEntry) {
|
|
@@ -439,10 +462,17 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
439
462
|
const existingExternalEntry = this._lookupExternalEntry(resource);
|
|
440
463
|
if (existingExternalEntry) {
|
|
441
464
|
entry = existingExternalEntry;
|
|
465
|
+
if (telemetryInfo.requestId !== entry.telemetryInfo.requestId) {
|
|
466
|
+
entry.updateTelemetryInfo(telemetryInfo);
|
|
467
|
+
}
|
|
442
468
|
}
|
|
443
469
|
else {
|
|
444
470
|
const initialContent = this._initialFileContents.get(resource);
|
|
445
|
-
|
|
471
|
+
const maybeEntry = await this._createModifiedFileEntry(resource, telemetryInfo, ifNotExists, initialContent);
|
|
472
|
+
if (!maybeEntry) {
|
|
473
|
+
return undefined;
|
|
474
|
+
}
|
|
475
|
+
entry = maybeEntry;
|
|
446
476
|
if (!initialContent) {
|
|
447
477
|
this._initialFileContents.set(resource, entry.initialContent);
|
|
448
478
|
}
|
|
@@ -461,11 +491,10 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
461
491
|
this._entriesObs.set(entriesArr, undefined);
|
|
462
492
|
return entry;
|
|
463
493
|
}
|
|
464
|
-
async _createModifiedFileEntry(resource, telemetryInfo,
|
|
494
|
+
async _createModifiedFileEntry(resource, telemetryInfo, ifNotExists, initialContent) {
|
|
465
495
|
const multiDiffEntryDelegate = { collapse: (transaction) => this._collapse(resource, transaction) };
|
|
466
|
-
const chatKind = mustExist ? ChatEditKind.Created : ChatEditKind.Modified;
|
|
467
496
|
const notebookUri = CellUri.parse(resource)?.notebook || resource;
|
|
468
|
-
|
|
497
|
+
const doCreate = async (chatKind) => {
|
|
469
498
|
if (this._notebookService.hasSupportedNotebooks(notebookUri)) {
|
|
470
499
|
return await ChatEditingModifiedNotebookEntry.create(notebookUri, multiDiffEntryDelegate, telemetryInfo, chatKind, initialContent, this._instantiationService);
|
|
471
500
|
}
|
|
@@ -473,10 +502,13 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
473
502
|
const ref = await this._textModelService.createModelReference(resource);
|
|
474
503
|
return this._instantiationService.createInstance(ChatEditingModifiedDocumentEntry, ref, multiDiffEntryDelegate, telemetryInfo, chatKind, initialContent);
|
|
475
504
|
}
|
|
505
|
+
};
|
|
506
|
+
try {
|
|
507
|
+
return await doCreate(ChatEditKind.Modified);
|
|
476
508
|
}
|
|
477
509
|
catch (err) {
|
|
478
|
-
if (
|
|
479
|
-
|
|
510
|
+
if (ifNotExists === NotExistBehavior.Abort) {
|
|
511
|
+
return undefined;
|
|
480
512
|
}
|
|
481
513
|
await this._bulkEditService.apply({ edits: [{ newResource: resource }] });
|
|
482
514
|
this._editorService.openEditor({ resource, options: { inactive: true, preserveFocus: true, pinned: true } });
|
|
@@ -484,7 +516,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
484
516
|
return await ChatEditingModifiedNotebookEntry.create(resource, multiDiffEntryDelegate, telemetryInfo, ChatEditKind.Created, initialContent, this._instantiationService);
|
|
485
517
|
}
|
|
486
518
|
else {
|
|
487
|
-
return
|
|
519
|
+
return await doCreate(ChatEditKind.Created);
|
|
488
520
|
}
|
|
489
521
|
}
|
|
490
522
|
}
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js
CHANGED
|
@@ -65,7 +65,17 @@ let ChatEditingSessionStorage = class ChatEditingSessionStorage {
|
|
|
65
65
|
current: await getFileContent(entry.currentHash),
|
|
66
66
|
state: entry.state,
|
|
67
67
|
snapshotUri: ( URI.parse(entry.snapshotUri)),
|
|
68
|
-
telemetryInfo: {
|
|
68
|
+
telemetryInfo: {
|
|
69
|
+
requestId: entry.telemetryInfo.requestId,
|
|
70
|
+
agentId: entry.telemetryInfo.agentId,
|
|
71
|
+
command: entry.telemetryInfo.command,
|
|
72
|
+
sessionId: this.chatSessionId,
|
|
73
|
+
result: undefined,
|
|
74
|
+
modelId: entry.telemetryInfo.modelId,
|
|
75
|
+
modeId: entry.telemetryInfo.modeId,
|
|
76
|
+
applyCodeBlockSuggestionId: entry.telemetryInfo.applyCodeBlockSuggestionId,
|
|
77
|
+
feature: entry.telemetryInfo.feature,
|
|
78
|
+
}
|
|
69
79
|
};
|
|
70
80
|
};
|
|
71
81
|
try {
|
|
@@ -167,7 +177,7 @@ let ChatEditingSessionStorage = class ChatEditingSessionStorage {
|
|
|
167
177
|
currentHash: await addFileContent(entry.current),
|
|
168
178
|
state: entry.state,
|
|
169
179
|
snapshotUri: ( entry.snapshotUri.toString()),
|
|
170
|
-
telemetryInfo: { requestId: entry.telemetryInfo.requestId, agentId: entry.telemetryInfo.agentId, command: entry.telemetryInfo.command }
|
|
180
|
+
telemetryInfo: { requestId: entry.telemetryInfo.requestId, agentId: entry.telemetryInfo.agentId, command: entry.telemetryInfo.command, modelId: entry.telemetryInfo.modelId, modeId: entry.telemetryInfo.modeId }
|
|
171
181
|
};
|
|
172
182
|
};
|
|
173
183
|
try {
|
|
@@ -9,11 +9,15 @@ import { IAccessibilitySignalService } from "@codingame/monaco-vscode-api/vscode
|
|
|
9
9
|
import { ICellEditOperation } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon";
|
|
10
10
|
import { ModifiedFileEntryState } from "@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService";
|
|
11
11
|
import { IChatResponseModel } from "@codingame/monaco-vscode-c2deffc4-ad68-5e63-8f95-9b89e0fc6898-common/vscode/vs/workbench/contrib/chat/common/chatModel";
|
|
12
|
-
type
|
|
13
|
-
|
|
12
|
+
type affectedLines = {
|
|
13
|
+
linesAdded: number;
|
|
14
|
+
linesRemoved: number;
|
|
14
15
|
lineCount: number;
|
|
15
16
|
hasRemainingEdits: boolean;
|
|
16
17
|
};
|
|
18
|
+
type acceptedOrRejectedLines = affectedLines & {
|
|
19
|
+
state: "accepted" | "rejected";
|
|
20
|
+
};
|
|
17
21
|
export declare class ChatEditingTextModelChangeService extends Disposable {
|
|
18
22
|
private readonly originalModel;
|
|
19
23
|
private readonly modifiedModel;
|
|
@@ -51,6 +55,8 @@ export declare class ChatEditingTextModelChangeService extends Disposable {
|
|
|
51
55
|
readonly onDidUserEditModel: import("@codingame/monaco-vscode-api/vscode/vs/base/common/event").Event<void>;
|
|
52
56
|
private _originalToModifiedEdit;
|
|
53
57
|
private lineChangeCount;
|
|
58
|
+
private linesAdded;
|
|
59
|
+
private linesRemoved;
|
|
54
60
|
constructor(originalModel: ITextModel, modifiedModel: ITextModel, state: IObservable<ModifiedFileEntryState>, _editorWorkerService: IEditorWorkerService, _accessibilitySignalService: IAccessibilitySignalService);
|
|
55
61
|
private updateLineChangeCount;
|
|
56
62
|
clearCurrentEditLineDecoration(): void;
|
|
@@ -13,7 +13,7 @@ import { EditOperation } from '@codingame/monaco-vscode-api/vscode/vs/editor/com
|
|
|
13
13
|
import { StringEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit';
|
|
14
14
|
import { Range } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/range';
|
|
15
15
|
import { nullDocumentDiff } from '../../../../../editor/common/diff/documentDiffProvider.js';
|
|
16
|
-
import { TextEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
|
|
16
|
+
import { TextEdit, VersionedExtensionId } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages';
|
|
17
17
|
import { OverviewRulerLane, MinimapPosition } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model';
|
|
18
18
|
import { ModelDecorationOptions } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModel';
|
|
19
19
|
import { offsetEditFromContentChanges, offsetEditToEditOperations, offsetEditFromLineRangeMapping } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelStringEdit';
|
|
@@ -85,9 +85,9 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
85
85
|
};
|
|
86
86
|
}));
|
|
87
87
|
}
|
|
88
|
-
notifyHunkAction(state,
|
|
89
|
-
if (lineCount > 0) {
|
|
90
|
-
this._didAcceptOrRejectLines.fire({ state,
|
|
88
|
+
notifyHunkAction(state, affectedLines) {
|
|
89
|
+
if (affectedLines.lineCount > 0) {
|
|
90
|
+
this._didAcceptOrRejectLines.fire({ state, ...affectedLines });
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
constructor(originalModel, modifiedModel, state, _editorWorkerService, _accessibilitySignalService) {
|
|
@@ -114,6 +114,8 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
114
114
|
this.onDidUserEditModel = this._didUserEditModel.event;
|
|
115
115
|
this._originalToModifiedEdit = StringEdit.empty;
|
|
116
116
|
this.lineChangeCount = 0;
|
|
117
|
+
this.linesAdded = 0;
|
|
118
|
+
this.linesRemoved = 0;
|
|
117
119
|
this._register(this.modifiedModel.onDidChangeContent(e => {
|
|
118
120
|
this._mirrorEdits(e);
|
|
119
121
|
}));
|
|
@@ -124,9 +126,13 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
124
126
|
}
|
|
125
127
|
updateLineChangeCount(diff) {
|
|
126
128
|
this.lineChangeCount = 0;
|
|
129
|
+
this.linesAdded = 0;
|
|
130
|
+
this.linesRemoved = 0;
|
|
127
131
|
for (const change of diff.changes) {
|
|
128
132
|
const modifiedRange = change.modified.endLineNumberExclusive - change.modified.startLineNumber;
|
|
133
|
+
this.linesAdded += Math.max(0, modifiedRange);
|
|
129
134
|
const originalRange = change.original.endLineNumberExclusive - change.original.startLineNumber;
|
|
135
|
+
this.linesRemoved += Math.max(0, originalRange);
|
|
130
136
|
this.lineChangeCount += Math.max(modifiedRange, originalRange);
|
|
131
137
|
}
|
|
132
138
|
}
|
|
@@ -145,7 +151,18 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
145
151
|
let rewriteRatio = 0;
|
|
146
152
|
const sessionId = responseModel.session.sessionId;
|
|
147
153
|
const request = responseModel.session.getRequests().at(-1);
|
|
148
|
-
const
|
|
154
|
+
const languageId = this.modifiedModel.getLanguageId();
|
|
155
|
+
const agent = responseModel.agent;
|
|
156
|
+
const extensionId = VersionedExtensionId.tryCreate(agent?.extensionId.value, agent?.extensionVersion);
|
|
157
|
+
const source = EditSources.chatApplyEdits({
|
|
158
|
+
modelId: request?.modelId,
|
|
159
|
+
requestId: request?.id,
|
|
160
|
+
sessionId: sessionId,
|
|
161
|
+
languageId,
|
|
162
|
+
mode: request?.modeInfo?.modeId,
|
|
163
|
+
extensionId,
|
|
164
|
+
codeBlockSuggestionId: request?.modeInfo?.applyCodeBlockSuggestionId,
|
|
165
|
+
});
|
|
149
166
|
if (isAtomicEdits) {
|
|
150
167
|
const minimalEdits = (await this._editorWorkerService.computeMoreMinimalEdits(this.modifiedModel.uri, textEdits)) ?? textEdits;
|
|
151
168
|
const ops = ( minimalEdits.map(TextEdit.asEditOperation));
|
|
@@ -218,13 +235,13 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
218
235
|
}
|
|
219
236
|
}
|
|
220
237
|
keep() {
|
|
221
|
-
this.notifyHunkAction('accepted', this.lineChangeCount, false);
|
|
238
|
+
this.notifyHunkAction('accepted', { linesAdded: this.linesAdded, linesRemoved: this.linesRemoved, lineCount: this.lineChangeCount, hasRemainingEdits: false });
|
|
222
239
|
this.originalModel.setValue(this.modifiedModel.createSnapshot());
|
|
223
240
|
this._diffInfo.set(nullDocumentDiff, undefined);
|
|
224
241
|
this._originalToModifiedEdit = StringEdit.empty;
|
|
225
242
|
}
|
|
226
243
|
undo() {
|
|
227
|
-
this.notifyHunkAction('rejected', this.lineChangeCount, false);
|
|
244
|
+
this.notifyHunkAction('rejected', { linesAdded: this.linesAdded, linesRemoved: this.linesRemoved, lineCount: this.lineChangeCount, hasRemainingEdits: false });
|
|
228
245
|
this.modifiedModel.pushStackElement();
|
|
229
246
|
this._applyEdits([(EditOperation.replace(this.modifiedModel.getFullModelRange(), this.originalModel.getValue()))], EditSources.chatUndoEdits());
|
|
230
247
|
this.modifiedModel.pushStackElement();
|
|
@@ -309,12 +326,20 @@ let ChatEditingTextModelChangeService = class ChatEditingTextModelChangeService
|
|
|
309
326
|
const myDiffOperationId = ++this._diffOperationIds;
|
|
310
327
|
await Promise.resolve(this._diffOperation);
|
|
311
328
|
const previousCount = this.lineChangeCount;
|
|
329
|
+
const previousAdded = this.linesAdded;
|
|
330
|
+
const previousRemoved = this.linesRemoved;
|
|
312
331
|
if (this._diffOperationIds === myDiffOperationId) {
|
|
313
332
|
const thisDiffOperation = this._updateDiffInfo();
|
|
314
333
|
this._diffOperation = thisDiffOperation;
|
|
315
334
|
await thisDiffOperation;
|
|
316
335
|
if (notifyAction) {
|
|
317
|
-
|
|
336
|
+
const affectedLines = {
|
|
337
|
+
linesAdded: previousAdded - this.linesAdded,
|
|
338
|
+
linesRemoved: previousRemoved - this.linesRemoved,
|
|
339
|
+
lineCount: previousCount - this.lineChangeCount,
|
|
340
|
+
hasRemainingEdits: this.lineChangeCount > 0
|
|
341
|
+
};
|
|
342
|
+
this.notifyHunkAction(notifyAction, affectedLines);
|
|
318
343
|
}
|
|
319
344
|
}
|
|
320
345
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
|
+
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
3
4
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
4
5
|
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
5
|
-
import { chatEditingSnapshotScheme } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
6
6
|
|
|
7
7
|
var ChatEditingTextModelContentProvider_1;
|
|
8
8
|
let ChatEditingTextModelContentProvider = class ChatEditingTextModelContentProvider {
|
|
9
9
|
static { ChatEditingTextModelContentProvider_1 = this; }
|
|
10
|
-
static { this.scheme =
|
|
10
|
+
static { this.scheme = Schemas.chatEditingModel; }
|
|
11
11
|
static getFileURI(chatSessionId, documentId, path) {
|
|
12
12
|
return ( URI.from({
|
|
13
13
|
scheme: ChatEditingTextModelContentProvider_1.scheme,
|
|
@@ -39,7 +39,7 @@ ChatEditingTextModelContentProvider = ChatEditingTextModelContentProvider_1 = (
|
|
|
39
39
|
let ChatEditingSnapshotTextModelContentProvider = class ChatEditingSnapshotTextModelContentProvider {
|
|
40
40
|
static getSnapshotFileURI(chatSessionId, requestId, undoStop, path) {
|
|
41
41
|
return ( URI.from({
|
|
42
|
-
scheme: chatEditingSnapshotScheme,
|
|
42
|
+
scheme: Schemas.chatEditingSnapshotScheme,
|
|
43
43
|
path,
|
|
44
44
|
query: JSON.stringify({ sessionId: chatSessionId, requestId: requestId ?? '', undoStop: undoStop ?? '' }),
|
|
45
45
|
}));
|
|
@@ -96,4 +96,7 @@ export declare class ChatEditingTimeline {
|
|
|
96
96
|
private _entryDiffBetweenTextStops;
|
|
97
97
|
private _createDiffBetweenStopsObservable;
|
|
98
98
|
getEntryDiffBetweenStops(uri: URI, requestId: string | undefined, stopId: string | undefined): IObservable<IEditSessionEntryDiff | undefined>;
|
|
99
|
+
getEntryDiffBetweenRequests(uri: URI, startRequestId: string, stopRequestId: string): IObservable<IEditSessionEntryDiff | undefined>;
|
|
100
|
+
private _computeDiff;
|
|
101
|
+
private _getFirstSnapshotForUriAfterRequest;
|
|
99
102
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
2
|
import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
|
|
3
3
|
import { equals, binarySearch2 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arrays';
|
|
4
|
-
import { equals as equals$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
|
|
5
4
|
import { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
|
|
6
5
|
import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
|
|
7
|
-
import { DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
6
|
+
import { DisposableStore, thenRegisterOrDispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
8
7
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
8
|
+
import { equals as equals$1 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
|
|
9
9
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
10
10
|
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
11
11
|
import { IEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service';
|
|
@@ -239,23 +239,7 @@ let ChatEditingTimeline = class ChatEditingTimeline {
|
|
|
239
239
|
return ( new ObservablePromise(diffService.computeDiff()));
|
|
240
240
|
}
|
|
241
241
|
const ignoreTrimWhitespace = this._ignoreTrimWhitespaceObservable.read(reader);
|
|
242
|
-
const promise = this.
|
|
243
|
-
const entryDiff = {
|
|
244
|
-
originalURI: refs[0].object.textEditorModel.uri,
|
|
245
|
-
modifiedURI: refs[1].object.textEditorModel.uri,
|
|
246
|
-
identical: !!diff?.identical,
|
|
247
|
-
quitEarly: !diff || diff.quitEarly,
|
|
248
|
-
added: 0,
|
|
249
|
-
removed: 0,
|
|
250
|
-
};
|
|
251
|
-
if (diff) {
|
|
252
|
-
for (const change of diff.changes) {
|
|
253
|
-
entryDiff.removed += change.original.endLineNumberExclusive - change.original.startLineNumber;
|
|
254
|
-
entryDiff.added += change.modified.endLineNumberExclusive - change.modified.startLineNumber;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return entryDiff;
|
|
258
|
-
});
|
|
242
|
+
const promise = this._computeDiff(refs[0].object.textEditorModel.uri, refs[1].object.textEditorModel.uri, ignoreTrimWhitespace);
|
|
259
243
|
return ( new ObservablePromise(promise));
|
|
260
244
|
});
|
|
261
245
|
}
|
|
@@ -308,6 +292,77 @@ let ChatEditingTimeline = class ChatEditingTimeline {
|
|
|
308
292
|
return observable;
|
|
309
293
|
}
|
|
310
294
|
}
|
|
295
|
+
getEntryDiffBetweenRequests(uri, startRequestId, stopRequestId) {
|
|
296
|
+
const snapshotUris = derivedOpts({ equalsFn: (a, b) => equals(a, b, isEqual) }, reader => {
|
|
297
|
+
const history = this._linearHistory.read(reader);
|
|
298
|
+
const firstSnapshotUri = this._getFirstSnapshotForUriAfterRequest(history, uri, startRequestId, true);
|
|
299
|
+
const lastSnapshotUri = this._getFirstSnapshotForUriAfterRequest(history, uri, stopRequestId, false);
|
|
300
|
+
return [firstSnapshotUri, lastSnapshotUri];
|
|
301
|
+
});
|
|
302
|
+
const modelRefs = derived((reader) => {
|
|
303
|
+
const snapshots = snapshotUris.read(reader);
|
|
304
|
+
const firstSnapshotUri = snapshots[0];
|
|
305
|
+
const lastSnapshotUri = snapshots[1];
|
|
306
|
+
if (!firstSnapshotUri || !lastSnapshotUri) {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
const store = ( new DisposableStore());
|
|
310
|
+
reader.store.add(store);
|
|
311
|
+
const referencesPromise = Promise.all(( [firstSnapshotUri, lastSnapshotUri].map(u => {
|
|
312
|
+
return thenRegisterOrDispose(this._textModelService.createModelReference(u), store);
|
|
313
|
+
})));
|
|
314
|
+
return ( new ObservablePromise(referencesPromise));
|
|
315
|
+
});
|
|
316
|
+
const diff = derived((reader) => {
|
|
317
|
+
const references = modelRefs.read(reader)?.promiseResult.read(reader);
|
|
318
|
+
const refs = references?.data;
|
|
319
|
+
if (!refs) {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
const ignoreTrimWhitespace = this._ignoreTrimWhitespaceObservable.read(reader);
|
|
323
|
+
const promise = this._computeDiff(refs[0].object.textEditorModel.uri, refs[1].object.textEditorModel.uri, ignoreTrimWhitespace);
|
|
324
|
+
return ( new ObservablePromise(promise));
|
|
325
|
+
});
|
|
326
|
+
return derived(reader => {
|
|
327
|
+
return diff.read(reader)?.promiseResult.read(reader)?.data || undefined;
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
_computeDiff(originalUri, modifiedUri, ignoreTrimWhitespace) {
|
|
331
|
+
return this._editorWorkerService.computeDiff(originalUri, modifiedUri, { ignoreTrimWhitespace, computeMoves: false, maxComputationTimeMs: 3000 }, 'advanced').then((diff) => {
|
|
332
|
+
const entryDiff = {
|
|
333
|
+
originalURI: originalUri,
|
|
334
|
+
modifiedURI: modifiedUri,
|
|
335
|
+
identical: !!diff?.identical,
|
|
336
|
+
quitEarly: !diff || diff.quitEarly,
|
|
337
|
+
added: 0,
|
|
338
|
+
removed: 0,
|
|
339
|
+
};
|
|
340
|
+
if (diff) {
|
|
341
|
+
for (const change of diff.changes) {
|
|
342
|
+
entryDiff.removed += change.original.endLineNumberExclusive - change.original.startLineNumber;
|
|
343
|
+
entryDiff.added += change.modified.endLineNumberExclusive - change.modified.startLineNumber;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return entryDiff;
|
|
347
|
+
});
|
|
348
|
+
}
|
|
349
|
+
_getFirstSnapshotForUriAfterRequest(history, uri, requestId, inclusive) {
|
|
350
|
+
const requestIndex = history.findIndex(s => s.requestId === requestId);
|
|
351
|
+
if (requestIndex === -1) {
|
|
352
|
+
return undefined;
|
|
353
|
+
}
|
|
354
|
+
const processedIndex = requestIndex + (inclusive ? 0 : 1);
|
|
355
|
+
for (let i = processedIndex; i < history.length; i++) {
|
|
356
|
+
const snapshot = history[i];
|
|
357
|
+
for (const stop of snapshot.stops) {
|
|
358
|
+
const entry = stop.entries.get(uri);
|
|
359
|
+
if (entry) {
|
|
360
|
+
return entry.snapshotUri;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return uri;
|
|
365
|
+
}
|
|
311
366
|
};
|
|
312
367
|
ChatEditingTimeline = ChatEditingTimeline_1 = ( __decorate([
|
|
313
368
|
( __param(0, IEditorWorkerService)),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { VSBuffer, encodeBase64, decodeBase64 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/buffer';
|
|
3
3
|
import { filter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/objects';
|
|
4
4
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
5
|
-
import { SnapshotContext } from '@codingame/monaco-vscode-
|
|
5
|
+
import { SnapshotContext } from '@codingame/monaco-vscode-bba55be6-41a2-50cd-a3cc-8bafa35bfa89-common/vscode/vs/workbench/services/workingCopy/common/fileWorkingCopy';
|
|
6
6
|
import { NotebookCellTextModel } from '@codingame/monaco-vscode-e28ac690-06d5-5ee9-92d1-02df70296354-common/vscode/vs/workbench/contrib/notebook/common/model/notebookCellTextModel';
|
|
7
7
|
import { NotebookSetting, CellEditType } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
8
8
|
|
|
@@ -553,12 +553,12 @@ let ChatEditingNotebookEditorWidgetIntegration = class ChatEditingNotebookEditor
|
|
|
553
553
|
modified: { resource: this._entry.modifiedURI },
|
|
554
554
|
label: defaultAgentName
|
|
555
555
|
? ( localize(
|
|
556
|
-
|
|
556
|
+
5058,
|
|
557
557
|
'{0} (changes from {1})',
|
|
558
558
|
basename(this._entry.modifiedURI),
|
|
559
559
|
defaultAgentName
|
|
560
560
|
))
|
|
561
|
-
: ( localize(
|
|
561
|
+
: ( localize(5059, '{0} (changes from chat)', basename(this._entry.modifiedURI)))
|
|
562
562
|
};
|
|
563
563
|
await this._editorService.openEditor(diffInput);
|
|
564
564
|
}
|