@codingame/monaco-vscode-chat-service-override 16.1.0 → 17.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 +6 -6
- package/package.json +30 -27
- package/vscode/src/vs/base/common/objectCache.d.ts +1 -1
- package/vscode/src/vs/base/common/objectCache.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +41 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +16 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.d.ts +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +410 -443
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +1 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +3 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +9 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +9 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.d.ts +4 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +32 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatAttachInstructionsAction.js +61 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatRunPromptAction.js +159 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/chatSaveToPromptAction.js +140 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.d.ts +32 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/promptFilePickers.js +244 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/attachInstructions.js +30 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/dialogs/askToSelectPrompt/utils/runPrompt.js +12 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/promptActions/index.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +171 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatContentParts/chatMarkdownAnchorService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEdinputInputContentProvider.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +48 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +5 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +46 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +118 -123
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +45 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +12 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +48 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +53 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +32 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +9 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +80 -268
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts +36 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +214 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookDiff.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +26 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +7 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +186 -106
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +129 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/simpleBrowserEditorOverlay.js +313 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.d.ts +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditor.js +12 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.d.ts +0 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +42 -181
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatQuick.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatResponseAccessibleView.js +15 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.d.ts +2 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup.js +484 -384
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus.js +187 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatusItemService.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.d.ts +3 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/chatVariables.js +8 -52
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.d.ts +53 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatViewPane.js +264 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/codeBlockContextProviderService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorContrib.js +28 -22
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/contrib/chatInputEditorHover.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelToolsService.js +41 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatEditingEditorOverlay.css +8 -32
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatSetup.css +2 -18
- package/vscode/src/vs/workbench/contrib/chat/browser/media/chatStatus.css +20 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/media/simpleBrowserOverlay.css +67 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/attachInstructionsCommand.js +73 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/createPromptCommand.js +82 -67
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.d.ts +4 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptName.js +44 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/createPromptCommand/dialogs/askForPromptSourceFolder.js +24 -14
- 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.js +2 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +6 -6
- package/vscode/src/vs/workbench/contrib/chat/common/chatCodeMapperService.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.d.ts +7 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatProgressTypes/chatToolInvocation.js +14 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.d.ts +8 -7
- package/vscode/src/vs/workbench/contrib/chat/common/chatServiceImpl.js +84 -80
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatSessionStore.js +3 -3
- package/vscode/src/vs/workbench/contrib/chat/common/chatSlashCommands.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.d.ts +5 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatTransferService.js +27 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/configMigration.js +62 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.d.ts +3 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/index.js +16 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/index.js +17 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.d.ts +29 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterDecoration.js +74 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/frontMatterMarkerDecoration.js +40 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/decorationBase.js +40 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/index.js +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.d.ts +23 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/reactiveDecorationBase.js +68 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/decorations/utils/types.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/promptDecorationsProvider.js +121 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.d.ts +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/decorationsProvider/types.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptHeaderDiagnosticsProvider.js +62 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/promptLinkDiagnosticsProvider.js +65 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptLinkProvider.js +3 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptPathAutocompletion.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptPathAutocompletion.js +14 -19
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceBase.js +22 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.d.ts +17 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contributions/languageFeatures/providers/providerInstanceManagerBase.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/parsers/textModelPromptParser.js +8 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.d.ts +17 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsService.js +223 -21
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +5 -4
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +28 -22
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/treeUtils.js +25 -0
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +20 -31
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +15 -12
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatCurrentLine.js +12 -12
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +3 -3
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +2 -2
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.d.ts +0 -2
- package/vscode/src/vs/workbench/services/workspaces/common/workspaceUtils.js +1 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/chatAttachPromptAction.js +0 -54
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/askToSelectPrompt.d.ts +0 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/askToSelectPrompt.js +0 -79
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/constants.js +0 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/attachPrompts.js +0 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPlaceholderText.js +0 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.d.ts +0 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/createPromptPickItem.js +0 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.d.ts +0 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAttachPromptAction/dialogs/askToSelectPrompt/utils/handleButtonClick.js +0 -49
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/usePromptCommand.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/contributions/usePromptCommand.js +0 -80
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/constants.js +0 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.d.ts +0 -21
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/contentProviders/textModelContentsProvider.js +0 -64
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageFeatures/promptLinkDiagnosticsProvider.js +0 -117
- /package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/{languageFeatures → contributions/languageFeatures/providers}/promptLinkProvider.d.ts +0 -0
|
@@ -1,55 +1,47 @@
|
|
|
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 { findLast } from '@codingame/monaco-vscode-api/vscode/vs/base/common/arraysFind';
|
|
4
5
|
import { Sequencer, timeout, SequencerByKey, DeferredPromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
|
|
5
|
-
import {
|
|
6
|
+
import { CancellationToken } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
6
7
|
import { BugIndicatingError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
|
|
7
8
|
import { Emitter } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
8
|
-
import { StringSHA1 } from '@codingame/monaco-vscode-api/vscode/vs/base/common/hash';
|
|
9
9
|
import { Iterable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/iterator';
|
|
10
10
|
import { Disposable, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
11
11
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
12
12
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
|
|
13
|
-
import { isEqual
|
|
14
|
-
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
13
|
+
import { isEqual } from '@codingame/monaco-vscode-api/vscode/vs/base/common/resources';
|
|
15
14
|
import { IBulkEditService } from '@codingame/monaco-vscode-api/vscode/vs/editor/browser/services/bulkEditService.service';
|
|
16
|
-
import { OffsetEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/offsetEdit';
|
|
17
15
|
import { ILanguageService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/languages/language.service';
|
|
18
16
|
import { IEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service';
|
|
19
17
|
import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
|
|
20
18
|
import { ITextModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/resolverService.service';
|
|
21
19
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
20
|
+
import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
|
|
21
|
+
import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
|
|
22
22
|
import { IConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/configuration/common/configuration.service';
|
|
23
23
|
import { EditorActivation } from '@codingame/monaco-vscode-api/vscode/vs/platform/editor/common/editor';
|
|
24
|
-
import { IEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service';
|
|
25
|
-
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
26
24
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
27
|
-
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
28
25
|
import { observableConfigValue } from '@codingame/monaco-vscode-api/vscode/vs/platform/observable/common/platformObservableUtils';
|
|
29
|
-
import {
|
|
30
|
-
import { DiffEditorInput } from '@codingame/monaco-vscode-fdf643f9-94dd-5510-b97a-408abf26ad92-common/vscode/vs/workbench/common/editor/diffEditorInput';
|
|
26
|
+
import { DiffEditorInput } from '@codingame/monaco-vscode-9c72783f-914c-50be-b9ef-da16356d81a8-common/vscode/vs/workbench/common/editor/diffEditorInput';
|
|
31
27
|
import { IEditorGroupsService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorGroupsService.service';
|
|
32
28
|
import { IEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/editor/common/editorService.service';
|
|
33
29
|
import { MultiDiffEditorInput } from '@codingame/monaco-vscode-1cc4ea0a-c5b6-54ed-bb60-078a99119b55-common/vscode/vs/workbench/contrib/multiDiffEditor/browser/multiDiffEditorInput';
|
|
30
|
+
import { CellUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
34
31
|
import { INotebookService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookService.service';
|
|
35
|
-
import { ChatEditingSessionState,
|
|
32
|
+
import { ChatEditingSessionState, ModifiedFileEntryState, getMultiDiffSourceUri, ChatEditKind } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatEditingService';
|
|
36
33
|
import { IChatService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/chat/common/chatService.service';
|
|
37
|
-
import { AbstractChatEditingModifiedFileEntry } from './chatEditingModifiedFileEntry.js';
|
|
38
34
|
import { ChatEditingModifiedDocumentEntry } from './chatEditingModifiedDocumentEntry.js';
|
|
39
|
-
import {
|
|
40
|
-
import { CellUri } from '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/notebook/common/notebookCommon';
|
|
35
|
+
import { AbstractChatEditingModifiedFileEntry } from './chatEditingModifiedFileEntry.js';
|
|
41
36
|
import { ChatEditingModifiedNotebookEntry } from './chatEditingModifiedNotebookEntry.js';
|
|
42
|
-
import {
|
|
37
|
+
import { ChatEditingSessionStorage } from './chatEditingSessionStorage.js';
|
|
38
|
+
import { ChatEditingTextModelContentProvider } from './chatEditingTextModelContentProviders.js';
|
|
43
39
|
import { ChatEditingModifiedNotebookDiff } from './notebook/chatEditingModifiedNotebookDiff.js';
|
|
44
|
-
import { AccessibilitySignal } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService';
|
|
45
|
-
import { IAccessibilitySignalService } from '@codingame/monaco-vscode-api/vscode/vs/platform/accessibilitySignal/browser/accessibilitySignalService.service';
|
|
46
40
|
import { observableValue, asyncTransaction, transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/base';
|
|
47
41
|
import { derived, derivedWithStore, derivedOpts } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/derived';
|
|
48
42
|
import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/autorun';
|
|
49
|
-
import { ObservablePromise } from '@codingame/monaco-vscode-
|
|
43
|
+
import { ObservablePromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/promise';
|
|
50
44
|
|
|
51
|
-
const STORAGE_CONTENTS_FOLDER = 'contents';
|
|
52
|
-
const STORAGE_STATE_FILE = 'state.json';
|
|
53
45
|
const POST_EDIT_STOP_ID = 'd19944f6-f46c-4e17-911b-79a8e843c7c0';
|
|
54
46
|
class ThrottledSequencer extends Sequencer {
|
|
55
47
|
constructor(_minDuration, _maxOverallDelay) {
|
|
@@ -105,6 +97,33 @@ function getCurrentAndNextStop(requestId, stopId, history) {
|
|
|
105
97
|
}
|
|
106
98
|
return { current, next };
|
|
107
99
|
}
|
|
100
|
+
function getFirstAndLastStop(uri, history) {
|
|
101
|
+
let firstStopWithUri;
|
|
102
|
+
for (const snapshot of history) {
|
|
103
|
+
const stop = snapshot.stops.find(s => ( s.entries.has(uri)));
|
|
104
|
+
if (stop) {
|
|
105
|
+
firstStopWithUri = stop;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
let lastStopWithUri;
|
|
110
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
111
|
+
const snapshot = history[i];
|
|
112
|
+
if (snapshot.postEdit?.has(uri)) {
|
|
113
|
+
lastStopWithUri = snapshot.postEdit;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
const stop = findLast(snapshot.stops, s => ( s.entries.has(uri)));
|
|
117
|
+
if (stop) {
|
|
118
|
+
lastStopWithUri = stop.entries;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (!firstStopWithUri || !lastStopWithUri) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
return { current: firstStopWithUri.entries, next: lastStopWithUri };
|
|
126
|
+
}
|
|
108
127
|
let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
109
128
|
get entries() {
|
|
110
129
|
this._assertNotDisposed();
|
|
@@ -113,10 +132,6 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
113
132
|
get state() {
|
|
114
133
|
return this._state;
|
|
115
134
|
}
|
|
116
|
-
get onDidChange() {
|
|
117
|
-
this._assertNotDisposed();
|
|
118
|
-
return this._onDidChange.event;
|
|
119
|
-
}
|
|
120
135
|
get onDidDispose() {
|
|
121
136
|
this._assertNotDisposed();
|
|
122
137
|
return this._onDidDispose.event;
|
|
@@ -143,7 +158,6 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
143
158
|
this._linearHistoryIndex = observableValue(this, 0);
|
|
144
159
|
this._initialFileContents = ( new ResourceMap());
|
|
145
160
|
this._entriesObs = observableValue(this, []);
|
|
146
|
-
this._workingSet = ( new ResourceMap());
|
|
147
161
|
this.canUndo = derived((r) => {
|
|
148
162
|
if (this.state.read(r) !== ChatEditingSessionState.Idle) {
|
|
149
163
|
return false;
|
|
@@ -158,11 +172,11 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
158
172
|
const linearHistoryIndex = this._linearHistoryIndex.read(r);
|
|
159
173
|
return linearHistoryIndex < getMaxHistoryIndex(this._linearHistory.read(r));
|
|
160
174
|
});
|
|
161
|
-
this._onDidChange = this._register(( new Emitter()));
|
|
162
175
|
this._onDidDispose = ( new Emitter());
|
|
163
176
|
this._diffsBetweenStops = ( new Map());
|
|
164
|
-
this.
|
|
177
|
+
this._fullDiffs = ( new Map());
|
|
165
178
|
this._streamingEditLocks = ( new SequencerByKey());
|
|
179
|
+
this._ignoreTrimWhitespaceObservable = observableConfigValue('diffEditor.ignoreTrimWhitespace', true, this._configurationService);
|
|
166
180
|
}
|
|
167
181
|
async init() {
|
|
168
182
|
const restoredSessionState = await this._instantiationService.createInstance(ChatEditingSessionStorage, this.chatSessionId).restoreState();
|
|
@@ -186,7 +200,6 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
186
200
|
entries.forEach(entry => {
|
|
187
201
|
entry.state.read(reader);
|
|
188
202
|
});
|
|
189
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.WorkingSet);
|
|
190
203
|
}));
|
|
191
204
|
}
|
|
192
205
|
_getEntry(uri) {
|
|
@@ -243,7 +256,8 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
243
256
|
return ( new ObservablePromise(promise));
|
|
244
257
|
});
|
|
245
258
|
return derived((reader) => {
|
|
246
|
-
const
|
|
259
|
+
const refs2 = modelRefsPromise.read(reader)?.promiseResult.read(reader);
|
|
260
|
+
const refs = refs2?.data;
|
|
247
261
|
if (!refs) {
|
|
248
262
|
return;
|
|
249
263
|
}
|
|
@@ -277,7 +291,9 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
277
291
|
const entries = derivedOpts({
|
|
278
292
|
equalsFn: (a, b) => snapshotsEqualForDiff(a?.before, b?.before) && snapshotsEqualForDiff(a?.after, b?.after),
|
|
279
293
|
}, reader => {
|
|
280
|
-
const stops =
|
|
294
|
+
const stops = requestId ?
|
|
295
|
+
getCurrentAndNextStop(requestId, stopId, this._linearHistory.read(reader)) :
|
|
296
|
+
getFirstAndLastStop(uri, this._linearHistory.read(reader));
|
|
281
297
|
if (!stops) {
|
|
282
298
|
return undefined;
|
|
283
299
|
}
|
|
@@ -301,19 +317,27 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
301
317
|
});
|
|
302
318
|
}
|
|
303
319
|
getEntryDiffBetweenStops(uri, requestId, stopId) {
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
320
|
+
if (requestId) {
|
|
321
|
+
const key = `${uri}\0${requestId}\0${stopId}`;
|
|
322
|
+
let observable = this._diffsBetweenStops.get(key);
|
|
323
|
+
if (!observable) {
|
|
324
|
+
observable = this._createDiffBetweenStopsObservable(uri, requestId, stopId);
|
|
325
|
+
this._diffsBetweenStops.set(key, observable);
|
|
326
|
+
}
|
|
327
|
+
return observable;
|
|
309
328
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
329
|
+
else {
|
|
330
|
+
const key = ( uri.toString());
|
|
331
|
+
let observable = this._fullDiffs.get(key);
|
|
332
|
+
if (!observable) {
|
|
333
|
+
observable = this._createDiffBetweenStopsObservable(uri, requestId, stopId);
|
|
334
|
+
this._fullDiffs.set(key, observable);
|
|
335
|
+
}
|
|
336
|
+
return observable;
|
|
316
337
|
}
|
|
338
|
+
}
|
|
339
|
+
createSnapshot(requestId, undoStop, makeEmpty = undoStop !== undefined) {
|
|
340
|
+
const snapshot = makeEmpty ? this._createEmptySnapshot(undoStop) : this._createSnapshot(requestId, undoStop);
|
|
317
341
|
const linearHistoryPtr = this._linearHistoryIndex.get();
|
|
318
342
|
const newLinearHistory = [];
|
|
319
343
|
for (const entry of this._linearHistory.get()) {
|
|
@@ -337,15 +361,19 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
337
361
|
this._linearHistoryIndex.set(last.startIndex + last.stops.length, tx);
|
|
338
362
|
});
|
|
339
363
|
}
|
|
364
|
+
_createEmptySnapshot(undoStop) {
|
|
365
|
+
return {
|
|
366
|
+
stopId: undoStop,
|
|
367
|
+
entries: ( new ResourceMap()),
|
|
368
|
+
};
|
|
369
|
+
}
|
|
340
370
|
_createSnapshot(requestId, undoStop) {
|
|
341
|
-
const workingSet = ( new ResourceMap(this._workingSet));
|
|
342
371
|
const entries = ( new ResourceMap());
|
|
343
372
|
for (const entry of this._entriesObs.get()) {
|
|
344
373
|
entries.set(entry.modifiedURI, entry.createSnapshot(requestId, undoStop));
|
|
345
374
|
}
|
|
346
375
|
return {
|
|
347
376
|
stopId: undoStop,
|
|
348
|
-
workingSet,
|
|
349
377
|
entries,
|
|
350
378
|
};
|
|
351
379
|
}
|
|
@@ -387,8 +415,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
387
415
|
await this._restoreSnapshot(pendingSnapshot, undefined);
|
|
388
416
|
}
|
|
389
417
|
}
|
|
390
|
-
async _restoreSnapshot({
|
|
391
|
-
this._workingSet = ( new ResourceMap(workingSet));
|
|
418
|
+
async _restoreSnapshot({ entries }, tx, restoreResolvedToDisk = true) {
|
|
392
419
|
for (const entry of this._entriesObs.get()) {
|
|
393
420
|
const snapshotEntry = entries.get(entry.modifiedURI);
|
|
394
421
|
if (!snapshotEntry) {
|
|
@@ -399,13 +426,13 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
399
426
|
const entriesArr = [];
|
|
400
427
|
for (const snapshotEntry of ( entries.values())) {
|
|
401
428
|
const entry = await this._getOrCreateModifiedFileEntry(snapshotEntry.resource, snapshotEntry.telemetryInfo);
|
|
402
|
-
const restoreToDisk = snapshotEntry.state ===
|
|
429
|
+
const restoreToDisk = snapshotEntry.state === ModifiedFileEntryState.Modified || restoreResolvedToDisk;
|
|
403
430
|
entry.restoreFromSnapshot(snapshotEntry, restoreToDisk);
|
|
404
431
|
entriesArr.push(entry);
|
|
405
432
|
}
|
|
406
433
|
this._entriesObs.set(entriesArr, tx);
|
|
407
434
|
}
|
|
408
|
-
remove(
|
|
435
|
+
remove(...uris) {
|
|
409
436
|
this._assertNotDisposed();
|
|
410
437
|
let didRemoveUris = false;
|
|
411
438
|
for (const uri of uris) {
|
|
@@ -416,15 +443,10 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
416
443
|
this._entriesObs.set(newEntries, undefined);
|
|
417
444
|
didRemoveUris = true;
|
|
418
445
|
}
|
|
419
|
-
const state = this._workingSet.get(uri);
|
|
420
|
-
if (state !== undefined) {
|
|
421
|
-
didRemoveUris = this._workingSet.delete(uri) || didRemoveUris;
|
|
422
|
-
}
|
|
423
446
|
}
|
|
424
447
|
if (!didRemoveUris) {
|
|
425
448
|
return;
|
|
426
449
|
}
|
|
427
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.WorkingSet);
|
|
428
450
|
}
|
|
429
451
|
_assertNotDisposed() {
|
|
430
452
|
if (this._state.get() === ChatEditingSessionState.Disposed) {
|
|
@@ -445,7 +467,6 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
445
467
|
}
|
|
446
468
|
});
|
|
447
469
|
this._accessibilitySignalService.playSignal(AccessibilitySignal.editsKept, { allowManyInParallel: true });
|
|
448
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.Other);
|
|
449
470
|
}
|
|
450
471
|
async reject(...uris) {
|
|
451
472
|
this._assertNotDisposed();
|
|
@@ -461,9 +482,8 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
461
482
|
}
|
|
462
483
|
});
|
|
463
484
|
this._accessibilitySignalService.playSignal(AccessibilitySignal.editsUndone, { allowManyInParallel: true });
|
|
464
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.Other);
|
|
465
485
|
}
|
|
466
|
-
async show() {
|
|
486
|
+
async show(previousChanges) {
|
|
467
487
|
this._assertNotDisposed();
|
|
468
488
|
if (this._editorPane) {
|
|
469
489
|
if (this._editorPane.isVisible()) {
|
|
@@ -475,8 +495,8 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
475
495
|
}
|
|
476
496
|
}
|
|
477
497
|
const input = MultiDiffEditorInput.fromResourceMultiDiffEditorInput({
|
|
478
|
-
multiDiffSource: getMultiDiffSourceUri(this),
|
|
479
|
-
label: ( localize(
|
|
498
|
+
multiDiffSource: getMultiDiffSourceUri(this, previousChanges),
|
|
499
|
+
label: ( localize(4758, "Suggested Edits"))
|
|
480
500
|
}, this._instantiationService);
|
|
481
501
|
this._editorPane = await this._editorGroupsService.activeGroup.openEditor(input, { pinned: true, activation: EditorActivation.ACTIVATE });
|
|
482
502
|
}
|
|
@@ -637,7 +657,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
637
657
|
}
|
|
638
658
|
if (next) {
|
|
639
659
|
if (stopIndex === snap.stops.length - 1) {
|
|
640
|
-
const postEdit = ( new ResourceMap(snap.postEdit || this.
|
|
660
|
+
const postEdit = ( new ResourceMap(snap.postEdit || this._createEmptySnapshot(undefined).entries));
|
|
641
661
|
if (!snap.postEdit || !entry.equalsSnapshot(postEdit.get(entry.modifiedURI))) {
|
|
642
662
|
postEdit.set(entry.modifiedURI, entry.createSnapshot(requestId, POST_EDIT_STOP_ID));
|
|
643
663
|
const newHistory = history.slice();
|
|
@@ -661,6 +681,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
661
681
|
this._linearHistory.set(newHistory, tx);
|
|
662
682
|
}
|
|
663
683
|
async _acceptEdits(resource, textEdits, isLastEdits, responseModel) {
|
|
684
|
+
this._fullDiffs.delete(( resource.toString()));
|
|
664
685
|
const entry = await this._getOrCreateModifiedFileEntry(resource, this._getTelemetryInfoForModel(responseModel));
|
|
665
686
|
await entry.acceptAgentEdits(resource, textEdits, isLastEdits, responseModel);
|
|
666
687
|
}
|
|
@@ -686,7 +707,6 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
686
707
|
this.ensureEditInUndoStopMatches(requestId, undoStop, entry, true, tx);
|
|
687
708
|
return entry.acceptStreamingEditsEnd(tx);
|
|
688
709
|
});
|
|
689
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.Other);
|
|
690
710
|
}
|
|
691
711
|
async _getOrCreateModifiedFileEntry(resource, telemetryInfo) {
|
|
692
712
|
resource = CellUri.parse(resource)?.notebook ?? resource;
|
|
@@ -712,18 +732,15 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
712
732
|
const listener = entry.onDidDelete(() => {
|
|
713
733
|
const newEntries = this._entriesObs.get().filter(e => !isEqual(e.modifiedURI, entry.modifiedURI));
|
|
714
734
|
this._entriesObs.set(newEntries, undefined);
|
|
715
|
-
this._workingSet.delete(entry.modifiedURI);
|
|
716
735
|
this._editorService.closeEditors(this._editorService.findEditors(entry.modifiedURI));
|
|
717
736
|
if (!existingExternalEntry) {
|
|
718
737
|
entry.dispose();
|
|
719
738
|
}
|
|
720
739
|
this._store.delete(listener);
|
|
721
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.WorkingSet);
|
|
722
740
|
});
|
|
723
741
|
this._store.add(listener);
|
|
724
742
|
const entriesArr = [...this._entriesObs.get(), entry];
|
|
725
743
|
this._entriesObs.set(entriesArr, undefined);
|
|
726
|
-
this._onDidChange.fire(ChatEditingSessionChangeType.WorkingSet);
|
|
727
744
|
return entry;
|
|
728
745
|
}
|
|
729
746
|
async _createModifiedFileEntry(resource, telemetryInfo, mustExist = false, initialContent) {
|
|
@@ -731,7 +748,7 @@ let ChatEditingSession = class ChatEditingSession extends Disposable {
|
|
|
731
748
|
const chatKind = mustExist ? ChatEditKind.Created : ChatEditKind.Modified;
|
|
732
749
|
const notebookUri = CellUri.parse(resource)?.notebook || resource;
|
|
733
750
|
try {
|
|
734
|
-
if (this._notebookService.hasSupportedNotebooks(notebookUri)
|
|
751
|
+
if (this._notebookService.hasSupportedNotebooks(notebookUri)) {
|
|
735
752
|
return await ChatEditingModifiedNotebookEntry.create(notebookUri, multiDiffEntryDelegate, telemetryInfo, chatKind, initialContent, this._instantiationService);
|
|
736
753
|
}
|
|
737
754
|
else {
|
|
@@ -776,210 +793,5 @@ ChatEditingSession = ( __decorate([
|
|
|
776
793
|
( __param(13, IConfigurationService)),
|
|
777
794
|
( __param(14, IAccessibilitySignalService))
|
|
778
795
|
], ChatEditingSession));
|
|
779
|
-
let ChatEditingSessionStorage = class ChatEditingSessionStorage {
|
|
780
|
-
constructor(chatSessionId, _fileService, _environmentService, _logService, _workspaceContextService) {
|
|
781
|
-
this.chatSessionId = chatSessionId;
|
|
782
|
-
this._fileService = _fileService;
|
|
783
|
-
this._environmentService = _environmentService;
|
|
784
|
-
this._logService = _logService;
|
|
785
|
-
this._workspaceContextService = _workspaceContextService;
|
|
786
|
-
}
|
|
787
|
-
_getStorageLocation() {
|
|
788
|
-
const workspaceId = this._workspaceContextService.getWorkspace().id;
|
|
789
|
-
return joinPath(this._environmentService.workspaceStorageHome, workspaceId, 'chatEditingSessions', this.chatSessionId);
|
|
790
|
-
}
|
|
791
|
-
async restoreState() {
|
|
792
|
-
const storageLocation = this._getStorageLocation();
|
|
793
|
-
const fileContents = ( new Map());
|
|
794
|
-
const getFileContent = (hash) => {
|
|
795
|
-
let readPromise = fileContents.get(hash);
|
|
796
|
-
if (!readPromise) {
|
|
797
|
-
readPromise = this._fileService.readFile(joinPath(storageLocation, STORAGE_CONTENTS_FOLDER, hash)).then(content => ( content.value.toString()));
|
|
798
|
-
fileContents.set(hash, readPromise);
|
|
799
|
-
}
|
|
800
|
-
return readPromise;
|
|
801
|
-
};
|
|
802
|
-
const deserializeResourceMap = (resourceMap, deserialize, result) => {
|
|
803
|
-
resourceMap.forEach(([resourceURI, value]) => {
|
|
804
|
-
result.set(( URI.parse(resourceURI)), deserialize(value));
|
|
805
|
-
});
|
|
806
|
-
return result;
|
|
807
|
-
};
|
|
808
|
-
const deserializeSnapshotEntriesDTO = async (dtoEntries) => {
|
|
809
|
-
const entries = ( new ResourceMap());
|
|
810
|
-
for (const entryDTO of dtoEntries) {
|
|
811
|
-
const entry = await deserializeSnapshotEntry(entryDTO);
|
|
812
|
-
entries.set(entry.resource, entry);
|
|
813
|
-
}
|
|
814
|
-
return entries;
|
|
815
|
-
};
|
|
816
|
-
const deserializeChatEditingStopDTO = async (stopDTO) => {
|
|
817
|
-
const entries = await deserializeSnapshotEntriesDTO(stopDTO.entries);
|
|
818
|
-
const workingSet = deserializeResourceMap(stopDTO.workingSet, (value) => value, ( new ResourceMap()));
|
|
819
|
-
return { stopId: 'stopId' in stopDTO ? stopDTO.stopId : undefined, workingSet, entries };
|
|
820
|
-
};
|
|
821
|
-
const normalizeSnapshotDtos = (snapshot) => {
|
|
822
|
-
if ('stops' in snapshot) {
|
|
823
|
-
return snapshot;
|
|
824
|
-
}
|
|
825
|
-
return { requestId: snapshot.requestId, stops: [{ stopId: undefined, entries: snapshot.entries, workingSet: snapshot.workingSet }], postEdit: undefined };
|
|
826
|
-
};
|
|
827
|
-
const deserializeChatEditingSessionSnapshot = async (startIndex, snapshot) => {
|
|
828
|
-
const stops = await Promise.all(( snapshot.stops.map(deserializeChatEditingStopDTO)));
|
|
829
|
-
return { startIndex, requestId: snapshot.requestId, stops, postEdit: snapshot.postEdit && (await deserializeSnapshotEntriesDTO(snapshot.postEdit)) };
|
|
830
|
-
};
|
|
831
|
-
const deserializeSnapshotEntry = async (entry) => {
|
|
832
|
-
return {
|
|
833
|
-
resource: ( URI.parse(entry.resource)),
|
|
834
|
-
languageId: entry.languageId,
|
|
835
|
-
original: await getFileContent(entry.originalHash),
|
|
836
|
-
current: await getFileContent(entry.currentHash),
|
|
837
|
-
originalToCurrentEdit: OffsetEdit.fromJson(entry.originalToCurrentEdit),
|
|
838
|
-
state: entry.state,
|
|
839
|
-
snapshotUri: ( URI.parse(entry.snapshotUri)),
|
|
840
|
-
telemetryInfo: { requestId: entry.telemetryInfo.requestId, agentId: entry.telemetryInfo.agentId, command: entry.telemetryInfo.command, sessionId: this.chatSessionId, result: undefined }
|
|
841
|
-
};
|
|
842
|
-
};
|
|
843
|
-
try {
|
|
844
|
-
const stateFilePath = joinPath(storageLocation, STORAGE_STATE_FILE);
|
|
845
|
-
if (!(await this._fileService.exists(stateFilePath))) {
|
|
846
|
-
this._logService.debug(`chatEditingSession: No editing session state found at ${( stateFilePath.toString())}`);
|
|
847
|
-
return undefined;
|
|
848
|
-
}
|
|
849
|
-
this._logService.debug(`chatEditingSession: Restoring editing session at ${( stateFilePath.toString())}`);
|
|
850
|
-
const stateFileContent = await this._fileService.readFile(stateFilePath);
|
|
851
|
-
const data = JSON.parse(( stateFileContent.value.toString()));
|
|
852
|
-
if (!COMPATIBLE_STORAGE_VERSIONS.includes(data.version)) {
|
|
853
|
-
return undefined;
|
|
854
|
-
}
|
|
855
|
-
let linearHistoryIndex = 0;
|
|
856
|
-
const linearHistory = await Promise.all(( data.linearHistory.map(snapshot => {
|
|
857
|
-
const norm = normalizeSnapshotDtos(snapshot);
|
|
858
|
-
const result = deserializeChatEditingSessionSnapshot(linearHistoryIndex, norm);
|
|
859
|
-
linearHistoryIndex += norm.stops.length;
|
|
860
|
-
return result;
|
|
861
|
-
})));
|
|
862
|
-
const initialFileContents = ( new ResourceMap());
|
|
863
|
-
for (const fileContentDTO of data.initialFileContents) {
|
|
864
|
-
initialFileContents.set(( URI.parse(fileContentDTO[0])), await getFileContent(fileContentDTO[1]));
|
|
865
|
-
}
|
|
866
|
-
const pendingSnapshot = data.pendingSnapshot ? await deserializeChatEditingStopDTO(data.pendingSnapshot) : undefined;
|
|
867
|
-
const recentSnapshot = await deserializeChatEditingStopDTO(data.recentSnapshot);
|
|
868
|
-
return {
|
|
869
|
-
initialFileContents,
|
|
870
|
-
pendingSnapshot,
|
|
871
|
-
recentSnapshot,
|
|
872
|
-
linearHistoryIndex: data.linearHistoryIndex,
|
|
873
|
-
linearHistory
|
|
874
|
-
};
|
|
875
|
-
}
|
|
876
|
-
catch (e) {
|
|
877
|
-
this._logService.error(`Error restoring chat editing session from ${( storageLocation.toString())}`, e);
|
|
878
|
-
}
|
|
879
|
-
return undefined;
|
|
880
|
-
}
|
|
881
|
-
async storeState(state) {
|
|
882
|
-
const storageFolder = this._getStorageLocation();
|
|
883
|
-
const contentsFolder = URI.joinPath(storageFolder, STORAGE_CONTENTS_FOLDER);
|
|
884
|
-
const existingContents = ( new Set());
|
|
885
|
-
try {
|
|
886
|
-
const stat = await this._fileService.resolve(contentsFolder);
|
|
887
|
-
stat.children?.forEach(child => {
|
|
888
|
-
if (child.isFile) {
|
|
889
|
-
existingContents.add(child.name);
|
|
890
|
-
}
|
|
891
|
-
});
|
|
892
|
-
}
|
|
893
|
-
catch (e) {
|
|
894
|
-
try {
|
|
895
|
-
await this._fileService.createFolder(contentsFolder);
|
|
896
|
-
}
|
|
897
|
-
catch (e) {
|
|
898
|
-
this._logService.error(`Error creating chat editing session content folder ${( contentsFolder.toString())}`, e);
|
|
899
|
-
return;
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
const fileContents = ( new Map());
|
|
903
|
-
const addFileContent = (content) => {
|
|
904
|
-
const shaComputer = ( new StringSHA1());
|
|
905
|
-
shaComputer.update(content);
|
|
906
|
-
const sha = shaComputer.digest().substring(0, 7);
|
|
907
|
-
fileContents.set(sha, content);
|
|
908
|
-
return sha;
|
|
909
|
-
};
|
|
910
|
-
const serializeResourceMap = (resourceMap, serialize) => {
|
|
911
|
-
return ( Array.from(resourceMap.entries()).map(([resourceURI, value]) => [( resourceURI.toString()), serialize(value)]));
|
|
912
|
-
};
|
|
913
|
-
const serializeChatEditingSessionStop = (stop) => {
|
|
914
|
-
return {
|
|
915
|
-
stopId: stop.stopId,
|
|
916
|
-
workingSet: serializeResourceMap(stop.workingSet, value => value),
|
|
917
|
-
entries: ( Array.from(( stop.entries.values())).map(serializeSnapshotEntry))
|
|
918
|
-
};
|
|
919
|
-
};
|
|
920
|
-
const serializeChatEditingSessionSnapshot = (snapshot) => {
|
|
921
|
-
return {
|
|
922
|
-
requestId: snapshot.requestId,
|
|
923
|
-
stops: ( snapshot.stops.map(serializeChatEditingSessionStop)),
|
|
924
|
-
postEdit: snapshot.postEdit ? ( Array.from(( snapshot.postEdit.values())).map(serializeSnapshotEntry)) : undefined
|
|
925
|
-
};
|
|
926
|
-
};
|
|
927
|
-
const serializeSnapshotEntry = (entry) => {
|
|
928
|
-
return {
|
|
929
|
-
resource: ( entry.resource.toString()),
|
|
930
|
-
languageId: entry.languageId,
|
|
931
|
-
originalHash: addFileContent(entry.original),
|
|
932
|
-
currentHash: addFileContent(entry.current),
|
|
933
|
-
originalToCurrentEdit: ( entry.originalToCurrentEdit.edits.map(
|
|
934
|
-
edit => ({ pos: edit.replaceRange.start, len: edit.replaceRange.length, txt: edit.newText })
|
|
935
|
-
)),
|
|
936
|
-
state: entry.state,
|
|
937
|
-
snapshotUri: ( entry.snapshotUri.toString()),
|
|
938
|
-
telemetryInfo: { requestId: entry.telemetryInfo.requestId, agentId: entry.telemetryInfo.agentId, command: entry.telemetryInfo.command }
|
|
939
|
-
};
|
|
940
|
-
};
|
|
941
|
-
try {
|
|
942
|
-
const data = {
|
|
943
|
-
version: STORAGE_VERSION,
|
|
944
|
-
sessionId: this.chatSessionId,
|
|
945
|
-
linearHistory: ( state.linearHistory.map(serializeChatEditingSessionSnapshot)),
|
|
946
|
-
linearHistoryIndex: state.linearHistoryIndex,
|
|
947
|
-
initialFileContents: serializeResourceMap(state.initialFileContents, value => addFileContent(value)),
|
|
948
|
-
pendingSnapshot: state.pendingSnapshot ? serializeChatEditingSessionStop(state.pendingSnapshot) : undefined,
|
|
949
|
-
recentSnapshot: serializeChatEditingSessionStop(state.recentSnapshot),
|
|
950
|
-
};
|
|
951
|
-
this._logService.debug(`chatEditingSession: Storing editing session at ${( storageFolder.toString())}: ${fileContents.size} files`);
|
|
952
|
-
for (const [hash, content] of fileContents) {
|
|
953
|
-
if (!( existingContents.has(hash))) {
|
|
954
|
-
await this._fileService.writeFile(joinPath(contentsFolder, hash), VSBuffer.fromString(content));
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
await this._fileService.writeFile(joinPath(storageFolder, STORAGE_STATE_FILE), VSBuffer.fromString(JSON.stringify(data, undefined, 2)));
|
|
958
|
-
}
|
|
959
|
-
catch (e) {
|
|
960
|
-
this._logService.debug(`Error storing chat editing session to ${( storageFolder.toString())}`, e);
|
|
961
|
-
}
|
|
962
|
-
}
|
|
963
|
-
async clearState() {
|
|
964
|
-
const storageFolder = this._getStorageLocation();
|
|
965
|
-
if (await this._fileService.exists(storageFolder)) {
|
|
966
|
-
this._logService.debug(`chatEditingSession: Clearing editing session at ${( storageFolder.toString())}`);
|
|
967
|
-
try {
|
|
968
|
-
await this._fileService.del(storageFolder, { recursive: true });
|
|
969
|
-
}
|
|
970
|
-
catch (e) {
|
|
971
|
-
this._logService.debug(`Error clearing chat editing session from ${( storageFolder.toString())}`, e);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
}
|
|
975
|
-
};
|
|
976
|
-
ChatEditingSessionStorage = ( __decorate([
|
|
977
|
-
( __param(1, IFileService)),
|
|
978
|
-
( __param(2, IEnvironmentService)),
|
|
979
|
-
( __param(3, ILogService)),
|
|
980
|
-
( __param(4, IWorkspaceContextService))
|
|
981
|
-
], ChatEditingSessionStorage));
|
|
982
|
-
const COMPATIBLE_STORAGE_VERSIONS = [1, 2];
|
|
983
|
-
const STORAGE_VERSION = 2;
|
|
984
796
|
|
|
985
797
|
export { ChatEditingSession };
|
package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ResourceMap } from "@codingame/monaco-vscode-api/vscode/vs/base/common/map";
|
|
2
|
+
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
|
+
import { IEnvironmentService } from "@codingame/monaco-vscode-api/vscode/vs/platform/environment/common/environment.service";
|
|
4
|
+
import { IFileService } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service";
|
|
5
|
+
import { ILogService } from "@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service";
|
|
6
|
+
import { IWorkspaceContextService } from "@codingame/monaco-vscode-api/vscode/vs/platform/workspace/common/workspace.service";
|
|
7
|
+
import { ISnapshotEntry } from "./chatEditingModifiedFileEntry.js";
|
|
8
|
+
export interface StoredSessionState {
|
|
9
|
+
readonly initialFileContents: ResourceMap<string>;
|
|
10
|
+
readonly pendingSnapshot?: IChatEditingSessionStop;
|
|
11
|
+
readonly recentSnapshot: IChatEditingSessionStop;
|
|
12
|
+
readonly linearHistoryIndex: number;
|
|
13
|
+
readonly linearHistory: readonly IChatEditingSessionSnapshot[];
|
|
14
|
+
}
|
|
15
|
+
export declare class ChatEditingSessionStorage {
|
|
16
|
+
private readonly chatSessionId;
|
|
17
|
+
private readonly _fileService;
|
|
18
|
+
private readonly _environmentService;
|
|
19
|
+
private readonly _logService;
|
|
20
|
+
private readonly _workspaceContextService;
|
|
21
|
+
constructor(chatSessionId: string, _fileService: IFileService, _environmentService: IEnvironmentService, _logService: ILogService, _workspaceContextService: IWorkspaceContextService);
|
|
22
|
+
protected _getStorageLocation(): URI;
|
|
23
|
+
restoreState(): Promise<StoredSessionState | undefined>;
|
|
24
|
+
storeState(state: StoredSessionState): Promise<void>;
|
|
25
|
+
clearState(): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export interface IChatEditingSessionSnapshot {
|
|
28
|
+
readonly startIndex: number;
|
|
29
|
+
readonly requestId: string | undefined;
|
|
30
|
+
readonly stops: IChatEditingSessionStop[];
|
|
31
|
+
readonly postEdit: ResourceMap<ISnapshotEntry> | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface IChatEditingSessionStop {
|
|
34
|
+
stopId: string | undefined;
|
|
35
|
+
readonly entries: ResourceMap<ISnapshotEntry>;
|
|
36
|
+
}
|