@codingame/monaco-vscode-chat-service-override 25.1.2 → 26.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 +24 -3
- package/package.json +5 -5
- package/vscode/src/vs/platform/browserElements/common/browserElements.d.ts +23 -3
- package/vscode/src/vs/platform/browserElements/common/browserElements.js +13 -6
- package/vscode/src/vs/platform/domWidget/browser/domWidget.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatAccessibilityService.js +42 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.d.ts +14 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatResponseAccessibleView.js +218 -74
- package/vscode/src/vs/workbench/contrib/chat/browser/accessibility/chatTerminalOutputAccessibleView.js +6 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityActions.js +14 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAccessibilityHelp.js +165 -168
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatAgentRecommendationActions.js +27 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCodeblockActions.js +141 -140
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatContextActions.js +189 -121
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCopyActions.js +14 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.d.ts +60 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatCustomizationDiagnosticsAction.js +435 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatDeveloperActions.js +28 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatFileTreeActions.js +10 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatGettingStarted.js +37 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatImportExport.js +54 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatLanguageModelActions.js +73 -34
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatMoveActions.js +71 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatNewActions.js +151 -89
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatPromptNavigationActions.js +12 -15
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatQuickInputActions.js +39 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolActions.js +90 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatToolPicker.js +263 -143
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/chatTransfer.js +4 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/actions/codeBlockOperations.js +188 -126
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessions.contribution.js +37 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.d.ts +21 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsActions.js +392 -226
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsPicker.js +31 -27
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsQuickAccess.js +25 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsService.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjection.js +13 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.d.ts +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionActions.js +83 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionProjectionService.js +319 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentSessionsExperiments.contribution.js +215 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.d.ts +179 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/agentTitleBarStatusWidget.js +951 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agentsessionprojection.css +20 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/agenttitlebarstatuswidget.css +388 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/media/unifiedQuickAccess.css +195 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.d.ts +120 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccess.js +394 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.d.ts +38 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/experiments/unifiedQuickAccessActions.js +95 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.d.ts +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/localAgentSessionsProvider.js +31 -29
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatAttachmentResolveService.js +49 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/chatVariables.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/media/simpleBrowserOverlay.css +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/attachments/simpleBrowserEditorOverlay.js +188 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chat.contribution.js +1012 -639
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCheckpointTimelineImpl.js +256 -151
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingCodeEditorIntegration.js +182 -101
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.d.ts +79 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingDeletedFileEntry.js +193 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorAccessibility.js +9 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.d.ts +68 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingExplanationModelManager.js +253 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.d.ts +4 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedDocumentEntry.js +69 -50
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.d.ts +3 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedFileEntry.js +52 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.d.ts +5 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingModifiedNotebookEntry.js +274 -155
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingOperations.js +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.d.ts +2 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingServiceImpl.js +130 -104
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.d.ts +12 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSession.js +385 -160
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingSessionStorage.js +53 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelChangeService.js +112 -75
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingTextModelContentProviders.js +19 -10
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditorController.css +31 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingModifiedNotebookSnapshot.js +39 -17
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNewNotebookContentEdits.js +10 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookCellEntry.js +25 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookEditorIntegration.js +265 -203
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/chatEditingNotebookFileSystemProvider.js +29 -26
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/helpers.js +114 -60
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/notebookCellChanges.js +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/notebook/overlayToolbarDecorator.js +44 -30
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagement.contribution.js +119 -45
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditor.js +152 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatManagementEditorInput.js +12 -8
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.d.ts +51 -31
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsViewModel.js +323 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.d.ts +4 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatModelsWidget.js +653 -401
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/chatUsageWidget.js +52 -40
- package/vscode/src/vs/workbench/contrib/chat/browser/chatManagement/media/chatModelsWidget.css +22 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.d.ts +5 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatOutputItemRenderer.js +43 -28
- package/vscode/src/vs/workbench/contrib/chat/browser/chatParticipant.contribution.js +182 -136
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.d.ts +33 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatRepoInfo.js +548 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupContributions.js +222 -138
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.d.ts +3 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupController.js +151 -113
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupProviders.js +453 -217
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/chatSetupRunner.js +162 -88
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSetup/media/chatSetup.css +2 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.d.ts +0 -2
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatus.js +1 -13
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusDashboard.js +309 -233
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusEntry.js +55 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/chatStatus/chatStatusItemService.js +3 -1
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatTipService.js +109 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/chatWindowNotifier.js +35 -23
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.d.ts +9 -4
- package/vscode/src/vs/workbench/contrib/chat/browser/contextContrib/chatContextService.js +73 -33
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.d.ts +47 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/languageModelsConfigurationService.js +333 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/chatModeActions.js +39 -25
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionContribution.js +9 -5
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptCodingAgentActionOverlay.js +23 -20
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptFileActions.js +2 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptToolsCodeLensProvider.js +20 -16
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/promptUrlHandler.js +65 -57
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/runPromptAction.js +48 -36
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/saveAsPromptFileActions.js +20 -12
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/promptSyntax/skillActions.js +52 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsConfirmationService.js +155 -159
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.d.ts +24 -14
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/languageModelToolsService.js +521 -246
- package/vscode/src/vs/workbench/contrib/chat/browser/tools/toolSetsContribution.js +107 -76
- package/vscode/src/vs/workbench/contrib/chat/browser/viewsWelcome/chatViewsWelcomeHandler.js +28 -24
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatMarkdownAnchorService.js +10 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatContentParts/toolInvocationParts/chatToolOutputStateCache.js +57 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatLayoutService.js +4 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/chatWidgetService.js +56 -44
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.d.ts +0 -3
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/chatStatusWidget.js +37 -47
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatEditorInputContentProvider.js +5 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.d.ts +10 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputCompletions.js +1284 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.js +179 -125
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorHover.js +9 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widget/input/editor/editorHoverWrapper.js +7 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/chatQuick.js +96 -78
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/editor/chatEditor.js +58 -53
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.d.ts +25 -11
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewPane.js +484 -292
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.d.ts +1 -6
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/chatViewTitleControl.js +65 -92
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewPane.css +16 -19
- package/vscode/src/vs/workbench/contrib/chat/browser/widgetHosts/viewPane/media/chatViewTitleControl.css +1 -0
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.d.ts +9 -1
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceImpl.js +331 -189
- package/vscode/src/vs/workbench/contrib/chat/common/chatService/chatServiceTelemetry.js +81 -93
- package/vscode/src/vs/workbench/contrib/chat/common/ignoredFiles.js +1 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.d.ts +5 -3
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatModelStore.js +6 -7
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.d.ts +36 -8
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatProgressTypes/chatToolInvocation.js +169 -31
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.d.ts +6 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionOperationLog.js +141 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.d.ts +6 -4
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatSessionStore.js +218 -144
- package/vscode/src/vs/workbench/contrib/chat/common/model/chatTransferService.js +20 -10
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.d.ts +109 -0
- package/vscode/src/vs/workbench/contrib/chat/common/model/objectMutationLog.js +349 -0
- package/vscode/src/vs/workbench/contrib/chat/common/participants/chatSlashCommands.js +9 -8
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.d.ts +9 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/chatPromptFilesContribution.js +139 -36
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/PromptHeaderDefinitionProvider.js +3 -6
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptBodyAutocompletion.js +64 -51
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptCodeActions.js +49 -34
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptDocumentSemanticTokensProvider.js +21 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHeaderAutocompletion.js +125 -97
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptHovers.js +91 -131
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptLinkProvider.js +8 -5
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/languageProviders/promptValidator.js +488 -222
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/promptFileContributions.js +32 -12
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.d.ts +58 -13
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/service/promptsServiceImpl.js +717 -200
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.d.ts +79 -18
- package/vscode/src/vs/workbench/contrib/chat/common/promptSyntax/utils/promptFilesLocator.js +371 -130
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.d.ts +0 -1
- package/vscode/src/vs/workbench/contrib/chat/common/tools/chatTodoListService.js +3 -7
- package/vscode/src/vs/workbench/contrib/chat/common/voiceChatService.js +79 -61
- package/vscode/src/vs/workbench/contrib/chat/common/widget/chatResponseResourceFileSystemProvider.js +27 -21
- package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/aiEditTelemetry/aiEditTelemetryServiceImpl.js +7 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChat.contribution.js +26 -32
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibilityHelp.js +2 -2
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.d.ts +8 -60
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatActions.js +115 -426
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.d.ts +15 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatDefaultModel.js +127 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatNotebook.js +1 -37
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.d.ts +16 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionService.js +21 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.d.ts +51 -0
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatSessionServiceImpl.js +334 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/mcp/browser/mcpPromptArgumentPick.js +424 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.d.ts +4 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/contrib/chat/notebookChatUtils.js +58 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.d.ts +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/cellChatActions.js +195 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebook.chat.contribution.js +368 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.d.ts +2 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/controller/chat/notebookChatContext.js +7 -0
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/notebook/browser/diff/inlineDiff/notebookModifiedCellDecorator.js +1 -1
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/browser/remoteCodingAgents.contribution.js +23 -25
- package/vscode/src/vs/workbench/contrib/remoteCodingAgents/common/remoteCodingAgentsService.js +7 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibilityHelp.js +34 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatAccessibleView.js +8 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatActions.js +103 -95
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatController.js +28 -16
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatEnabler.js +4 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.d.ts +12 -8
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatService.js +65 -54
- package/vscode/src/vs/workbench/contrib/terminalContrib/chat/browser/terminalChatWidget.js +86 -60
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/alternativeRecommendation.js +13 -26
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/commandFileWriteParser.d.ts +24 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.d.ts +26 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/commandParsers/sedFileWriteParser.js +142 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/basicExecuteStrategy.js +56 -46
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/executeStrategy.js +63 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/noneExecuteStrategy.js +35 -30
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/richExecuteStrategy.js +44 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/executeStrategy/strategyHelpers.js +3 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/outputHelpers.js +3 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalHelpers.js +70 -50
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/runInTerminalToolTelemetry.js +26 -394
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/taskHelpers.js +85 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/terminal.chatAgentTools.contribution.js +68 -27
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/toolTerminalCreator.js +67 -45
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/awaitTerminalTool.js +106 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.d.ts +2 -2
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/commandLineAutoApprover.js +177 -97
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/autoApprove/npmScriptAutoApprover.js +136 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAnalyzer.d.ts +2 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineAutoApproveAnalyzer.js +128 -112
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineFileWriteAnalyzer.js +51 -49
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineAnalyzer/commandLineSandboxAnalyzer.js +25 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/commandLinePresenter.d.ts +41 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/nodeCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/pythonCommandLinePresenter.js +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.d.ts +19 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/rubyCommandLinePresenter.js +44 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLinePresenter/sandboxedCommandLinePresenter.js +21 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineCdPrefixRewriter.js +5 -14
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLinePreventHistoryRewriter.js +2 -4
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineRewriter.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.d.ts +8 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/commandLineRewriter/commandLineSandboxRewriter.js +29 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalLastCommandTool.js +30 -31
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalOutputTool.js +16 -17
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/getTerminalSelectionTool.js +19 -20
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.d.ts +11 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/killTerminalTool.js +58 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.d.ts +31 -3
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/outputMonitor.js +325 -199
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.d.ts +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/monitoring/types.js +1 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalConfirmationTool.js +33 -38
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.d.ts +45 -5
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/runInTerminalTool.js +746 -456
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/createAndRunTaskTool.js +145 -98
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/getTaskOutputTool.js +88 -37
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/runTaskTool.js +120 -51
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/task/taskHelpers.js +25 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.d.ts +5 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/terminalCommandArtifactCollector.js +58 -12
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.d.ts +12 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/tools/toolIds.js +17 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.d.ts +8 -1
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/browser/treeSitterCommandParser.js +47 -28
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.d.ts +37 -0
- package/vscode/src/vs/workbench/contrib/terminalContrib/chatAgentTools/common/terminalSandboxService.js +171 -0
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.d.ts +0 -58
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsControl.js +0 -213
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.d.ts +0 -39
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsFilter.js +0 -243
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.d.ts +0 -7
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsOpener.js +0 -41
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.d.ts +0 -166
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/agentSessionsViewer.js +0 -607
- package/vscode/src/vs/workbench/contrib/chat/browser/agentSessions/media/agentsessionsviewer.css +0 -255
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.d.ts +0 -46
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorActions.js +0 -396
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.d.ts +0 -9
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingEditorOverlay.js +0 -379
- package/vscode/src/vs/workbench/contrib/chat/browser/chatEditing/media/chatEditingEditorOverlay.css +0 -117
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.d.ts +0 -141
- package/vscode/src/vs/workbench/contrib/chat/browser/chatSessions/chatSessions.contribution.js +0 -961
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.d.ts +0 -36
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsContribution.js +0 -447
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.d.ts +0 -6
- package/vscode/src/vs/workbench/contrib/chat/common/tools/languageModelToolsParametersSchema.js +0 -251
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.d.ts +0 -10
- package/vscode/src/vs/workbench/contrib/inlineChat/browser/inlineChatAccessibleView.js +0 -42
|
@@ -34,10 +34,20 @@ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/v
|
|
|
34
34
|
import { ObservablePromise } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/promise';
|
|
35
35
|
import { constObservable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/constObservable';
|
|
36
36
|
|
|
37
|
-
const START_REQUEST_EPOCH =
|
|
38
|
-
const STOP_ID_EPOCH_PREFIX =
|
|
37
|
+
const START_REQUEST_EPOCH = "$$start";
|
|
38
|
+
const STOP_ID_EPOCH_PREFIX = "__epoch_";
|
|
39
39
|
let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl {
|
|
40
|
-
constructor(
|
|
40
|
+
constructor(
|
|
41
|
+
chatSessionResource,
|
|
42
|
+
_delegate,
|
|
43
|
+
_notebookEditorModelResolverService,
|
|
44
|
+
_notebookService,
|
|
45
|
+
_instantiationService,
|
|
46
|
+
_modelService,
|
|
47
|
+
_textModelService,
|
|
48
|
+
_editorWorkerService,
|
|
49
|
+
_configurationService
|
|
50
|
+
) {
|
|
41
51
|
this.chatSessionResource = chatSessionResource;
|
|
42
52
|
this._delegate = _delegate;
|
|
43
53
|
this._notebookEditorModelResolverService = _notebookEditorModelResolverService;
|
|
@@ -50,7 +60,9 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
50
60
|
this._epochCounter = 0;
|
|
51
61
|
this._checkpoints = observableValue(this, []);
|
|
52
62
|
this._currentEpoch = observableValue(this, 0);
|
|
53
|
-
this._operations = observableValueOpts({
|
|
63
|
+
this._operations = observableValueOpts({
|
|
64
|
+
equalsFn: () => false
|
|
65
|
+
}, []);
|
|
54
66
|
this._fileBaselines = ( new Map());
|
|
55
67
|
this._refCountedDiffs = ( new Map());
|
|
56
68
|
this._willUndoToCheckpoint = derived(reader => {
|
|
@@ -90,7 +102,10 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
90
102
|
const nextCheckpoint = nextOperation && checkpoints.find(op => op.epoch > nextOperation.epoch);
|
|
91
103
|
const currentCheckpoint = findLast(checkpoints, cp => cp.epoch < currentEpoch);
|
|
92
104
|
if (currentCheckpoint && nextOperation && currentCheckpoint.requestId !== nextOperation.requestId) {
|
|
93
|
-
const startOfNextRequestIdx = findLastIdx(
|
|
105
|
+
const startOfNextRequestIdx = findLastIdx(
|
|
106
|
+
checkpoints,
|
|
107
|
+
(cp, i) => cp.undoStopId === undefined && (checkpoints[i - 1]?.requestId === currentCheckpoint.requestId)
|
|
108
|
+
);
|
|
94
109
|
const startOfNextRequest = startOfNextRequestIdx === -1 ? undefined : checkpoints[startOfNextRequestIdx];
|
|
95
110
|
if (startOfNextRequest && nextOperation.requestId !== startOfNextRequest.requestId) {
|
|
96
111
|
const requestAfterTheNext = findFirst(checkpoints, op => op.undoStopId === undefined, startOfNextRequestIdx + 1);
|
|
@@ -102,7 +117,9 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
102
117
|
return Math.min(nextCheckpoint?.epoch || Infinity, (maxEncounteredEpoch + 1));
|
|
103
118
|
});
|
|
104
119
|
this.canRedo = ( this._willRedoToEpoch.map(e => !!e));
|
|
105
|
-
this.requestDisablement = derivedOpts({
|
|
120
|
+
this.requestDisablement = derivedOpts({
|
|
121
|
+
equalsFn: (a, b) => equals(a, b, equals$1)
|
|
122
|
+
}, reader => {
|
|
106
123
|
const currentEpoch = this._currentEpoch.read(reader);
|
|
107
124
|
const operations = this._operations.read(reader);
|
|
108
125
|
const checkpoints = this._checkpoints.read(reader);
|
|
@@ -115,7 +132,11 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
115
132
|
const stopDisablingAtEpoch = Math.max(lastAppliedOperation, lastAppliedRequest);
|
|
116
133
|
const disablement = ( new Map());
|
|
117
134
|
for (let i = checkpoints.length - 1; i >= 0; i--) {
|
|
118
|
-
const {
|
|
135
|
+
const {
|
|
136
|
+
undoStopId,
|
|
137
|
+
requestId,
|
|
138
|
+
epoch
|
|
139
|
+
} = checkpoints[i];
|
|
119
140
|
if (epoch <= stopDisablingAtEpoch) {
|
|
120
141
|
break;
|
|
121
142
|
}
|
|
@@ -123,9 +144,12 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
123
144
|
disablement.set(requestId, undoStopId);
|
|
124
145
|
}
|
|
125
146
|
}
|
|
126
|
-
return ( [...disablement].map(([requestId, afterUndoStop]) => ({
|
|
147
|
+
return ( [...disablement].map(([requestId, afterUndoStop]) => ({
|
|
148
|
+
requestId,
|
|
149
|
+
afterUndoStop
|
|
150
|
+
})));
|
|
127
151
|
});
|
|
128
|
-
this.createCheckpoint(undefined, undefined,
|
|
152
|
+
this.createCheckpoint(undefined, undefined, "Initial State", "Starting point before any edits");
|
|
129
153
|
}
|
|
130
154
|
createCheckpoint(requestId, undoStopId, label, description) {
|
|
131
155
|
const existingCheckpoints = this._checkpoints.get();
|
|
@@ -133,7 +157,10 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
133
157
|
if (existing) {
|
|
134
158
|
return existing.checkpointId;
|
|
135
159
|
}
|
|
136
|
-
const {
|
|
160
|
+
const {
|
|
161
|
+
checkpoints,
|
|
162
|
+
operations
|
|
163
|
+
} = this._getVisibleOperationsAndCheckpoints();
|
|
137
164
|
const checkpointId = generateUuid();
|
|
138
165
|
const epoch = this.incrementEpoch();
|
|
139
166
|
checkpoints.push({
|
|
@@ -170,8 +197,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
170
197
|
}
|
|
171
198
|
if (targetCheckpoint.undoStopId === undefined) {
|
|
172
199
|
return this._navigateToEpoch(targetCheckpoint.epoch + 1, targetCheckpoint.epoch);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
200
|
+
} else {
|
|
175
201
|
return this._navigateToEpoch(targetCheckpoint.epoch + 1);
|
|
176
202
|
}
|
|
177
203
|
}
|
|
@@ -193,7 +219,11 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
193
219
|
return this._epochCounter++;
|
|
194
220
|
}
|
|
195
221
|
recordFileOperation(operation) {
|
|
196
|
-
const {
|
|
222
|
+
const {
|
|
223
|
+
currentEpoch,
|
|
224
|
+
checkpoints,
|
|
225
|
+
operations
|
|
226
|
+
} = this._getVisibleOperationsAndCheckpoints();
|
|
197
227
|
if (operation.epoch < currentEpoch) {
|
|
198
228
|
throw ( new Error(
|
|
199
229
|
`Cannot record operation at epoch ${operation.epoch} when current epoch is ${currentEpoch}`
|
|
@@ -234,17 +264,16 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
234
264
|
let toEpoch;
|
|
235
265
|
if (stopId?.startsWith(STOP_ID_EPOCH_PREFIX)) {
|
|
236
266
|
toEpoch = Number(stopId.slice(STOP_ID_EPOCH_PREFIX.length));
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
267
|
+
} else {
|
|
239
268
|
toEpoch = this._checkpoints.get().find(c => c.requestId === requestId && c.undoStopId === stopId)?.epoch;
|
|
240
269
|
}
|
|
241
270
|
const fileURI = this._getTimelineCanonicalUriForPath(contentURI);
|
|
242
271
|
if (!toEpoch || !fileURI) {
|
|
243
|
-
return
|
|
272
|
+
return "";
|
|
244
273
|
}
|
|
245
274
|
const baseline = await this._findBestBaselineForFile(fileURI, toEpoch, requestId);
|
|
246
275
|
if (!baseline) {
|
|
247
|
-
return
|
|
276
|
+
return "";
|
|
248
277
|
}
|
|
249
278
|
const operations = this._getFileOperationsInRange(fileURI, baseline.epoch, toEpoch);
|
|
250
279
|
const replayed = await this._replayOperations(baseline, operations);
|
|
@@ -291,11 +320,11 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
291
320
|
if (!targetCheckpoint) {
|
|
292
321
|
throw ( new Error(`Checkpoint for epoch ${targetEpoch} not found`));
|
|
293
322
|
}
|
|
294
|
-
const baseline = await this._findBestBaselineForFile(uri, targetEpoch, targetCheckpoint.requestId ||
|
|
323
|
+
const baseline = await this._findBestBaselineForFile(uri, targetEpoch, targetCheckpoint.requestId || "");
|
|
295
324
|
if (!baseline) {
|
|
296
325
|
return {
|
|
297
326
|
exists: false,
|
|
298
|
-
uri
|
|
327
|
+
uri
|
|
299
328
|
};
|
|
300
329
|
}
|
|
301
330
|
const operations = this._getFileOperationsInRange(uri, baseline.epoch, targetEpoch);
|
|
@@ -307,7 +336,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
307
336
|
currentEpoch: this._currentEpoch.get(),
|
|
308
337
|
fileBaselines: [...this._fileBaselines],
|
|
309
338
|
operations: this._operations.get(),
|
|
310
|
-
epochCounter: this._epochCounter
|
|
339
|
+
epochCounter: this._epochCounter
|
|
311
340
|
};
|
|
312
341
|
}
|
|
313
342
|
restoreFromState(state, tx) {
|
|
@@ -325,10 +354,14 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
325
354
|
return checkpoints.find(c => c.requestId === requestId && c.undoStopId === undoStopId)?.checkpointId;
|
|
326
355
|
}
|
|
327
356
|
async _reconstructAllFileContents(targetEpoch, filesToReconstruct) {
|
|
328
|
-
await Promise.all(( Array.from(filesToReconstruct).map(async
|
|
357
|
+
await Promise.all(( Array.from(filesToReconstruct).map(async uri => {
|
|
329
358
|
const reconstructedState = await this._reconstructFileState(uri, targetEpoch);
|
|
330
359
|
if (reconstructedState.exists) {
|
|
331
|
-
await this._delegate.setContents(
|
|
360
|
+
await this._delegate.setContents(
|
|
361
|
+
reconstructedState.uri,
|
|
362
|
+
reconstructedState.content,
|
|
363
|
+
reconstructedState.telemetryInfo
|
|
364
|
+
);
|
|
332
365
|
}
|
|
333
366
|
})));
|
|
334
367
|
}
|
|
@@ -349,7 +382,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
349
382
|
requestId: operation.requestId,
|
|
350
383
|
content: operation.initialContent,
|
|
351
384
|
epoch: operation.epoch,
|
|
352
|
-
telemetryInfo: operation.telemetryInfo
|
|
385
|
+
telemetryInfo: operation.telemetryInfo
|
|
353
386
|
};
|
|
354
387
|
}
|
|
355
388
|
if (operation.type === FileOperationType.Rename && isEqual(operation.newUri, uri)) {
|
|
@@ -362,10 +395,10 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
362
395
|
return {
|
|
363
396
|
uri: uri,
|
|
364
397
|
epoch: operation.epoch,
|
|
365
|
-
content: replayed.exists ? replayed.content :
|
|
398
|
+
content: replayed.exists ? replayed.content : "",
|
|
366
399
|
requestId: operation.requestId,
|
|
367
400
|
telemetryInfo: prev.telemetryInfo,
|
|
368
|
-
notebookViewType: replayed.exists ? replayed.notebookViewType : undefined
|
|
401
|
+
notebookViewType: replayed.exists ? replayed.notebookViewType : undefined
|
|
369
402
|
};
|
|
370
403
|
}
|
|
371
404
|
if (currentRequestId && operation.requestId !== currentRequestId) {
|
|
@@ -381,9 +414,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
381
414
|
_getFileOperationsInRange(uri, fromEpoch, toEpoch) {
|
|
382
415
|
return this._operations.get().filter(op => {
|
|
383
416
|
const cellUri = CellUri.parse(op.uri);
|
|
384
|
-
return op.epoch >= fromEpoch &&
|
|
385
|
-
op.epoch < toEpoch &&
|
|
386
|
-
(isEqual(op.uri, uri) || (cellUri && isEqual(cellUri.notebook, uri)));
|
|
417
|
+
return op.epoch >= fromEpoch && op.epoch < toEpoch && (isEqual(op.uri, uri) || (cellUri && isEqual(cellUri.notebook, uri)));
|
|
387
418
|
}).sort((a, b) => a.epoch - b.epoch);
|
|
388
419
|
}
|
|
389
420
|
async _replayOperations(baseline, operations) {
|
|
@@ -391,7 +422,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
391
422
|
exists: true,
|
|
392
423
|
content: baseline.content,
|
|
393
424
|
uri: baseline.uri,
|
|
394
|
-
telemetryInfo: baseline.telemetryInfo
|
|
425
|
+
telemetryInfo: baseline.telemetryInfo
|
|
395
426
|
};
|
|
396
427
|
if (baseline.notebookViewType) {
|
|
397
428
|
currentState.notebook = await this._notebookEditorModelResolverService.createUntitledNotebookTextModel(baseline.notebookViewType);
|
|
@@ -411,7 +442,8 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
411
442
|
}
|
|
412
443
|
async _applyOperationToState(state, operation, telemetryInfo) {
|
|
413
444
|
switch (operation.type) {
|
|
414
|
-
|
|
445
|
+
case FileOperationType.Create:
|
|
446
|
+
{
|
|
415
447
|
if (state.exists && state.notebook) {
|
|
416
448
|
state.notebook.dispose();
|
|
417
449
|
}
|
|
@@ -428,35 +460,42 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
428
460
|
uri: operation.uri,
|
|
429
461
|
telemetryInfo,
|
|
430
462
|
notebookViewType: operation.notebookViewType,
|
|
431
|
-
notebook
|
|
463
|
+
notebook
|
|
432
464
|
};
|
|
433
465
|
}
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
466
|
+
case FileOperationType.Delete:
|
|
467
|
+
if (state.exists && state.notebook) {
|
|
468
|
+
state.notebook.dispose();
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
exists: false,
|
|
472
|
+
uri: operation.uri
|
|
473
|
+
};
|
|
474
|
+
case FileOperationType.Rename:
|
|
475
|
+
return {
|
|
476
|
+
...state,
|
|
477
|
+
uri: operation.newUri
|
|
478
|
+
};
|
|
479
|
+
case FileOperationType.TextEdit:
|
|
480
|
+
{
|
|
448
481
|
if (!state.exists) {
|
|
449
|
-
throw ( new Error(
|
|
482
|
+
throw ( new Error("Cannot apply text edits to non-existent file"));
|
|
450
483
|
}
|
|
451
484
|
const nbCell = operation.cellIndex !== undefined && state.notebook?.cells.at(operation.cellIndex);
|
|
452
485
|
if (nbCell) {
|
|
453
486
|
const newContent = this._applyTextEditsToContent(nbCell.getValue(), operation.edits);
|
|
454
487
|
state.notebook.applyEdits([{
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
488
|
+
editType: CellEditType.Replace,
|
|
489
|
+
index: operation.cellIndex,
|
|
490
|
+
count: 1,
|
|
491
|
+
cells: [{
|
|
492
|
+
cellKind: nbCell.cellKind,
|
|
493
|
+
language: nbCell.language,
|
|
494
|
+
mime: nbCell.language,
|
|
495
|
+
source: newContent,
|
|
496
|
+
outputs: nbCell.outputs
|
|
497
|
+
}]
|
|
498
|
+
}], true, undefined, () => undefined, undefined);
|
|
460
499
|
return state;
|
|
461
500
|
}
|
|
462
501
|
return {
|
|
@@ -464,17 +503,17 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
464
503
|
content: this._applyTextEditsToContent(state.content, operation.edits)
|
|
465
504
|
};
|
|
466
505
|
}
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
506
|
+
case FileOperationType.NotebookEdit:
|
|
507
|
+
if (!state.exists) {
|
|
508
|
+
throw ( new Error("Cannot apply notebook edits to non-existent file"));
|
|
509
|
+
}
|
|
510
|
+
if (!state.notebook) {
|
|
511
|
+
throw ( new Error("Cannot apply notebook edits to non-notebook file"));
|
|
512
|
+
}
|
|
513
|
+
state.notebook.applyEdits(operation.cellEdits.slice(), true, undefined, () => undefined, undefined);
|
|
514
|
+
return state;
|
|
515
|
+
default:
|
|
516
|
+
assertNever();
|
|
478
517
|
}
|
|
479
518
|
}
|
|
480
519
|
async _applyFileSystemOperations(fromEpoch, toEpoch) {
|
|
@@ -482,8 +521,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
482
521
|
const operations = this._operations.get().filter(op => {
|
|
483
522
|
if (isMovingForward) {
|
|
484
523
|
return op.epoch >= fromEpoch && op.epoch < toEpoch;
|
|
485
|
-
}
|
|
486
|
-
else {
|
|
524
|
+
} else {
|
|
487
525
|
return op.epoch < fromEpoch && op.epoch >= toEpoch;
|
|
488
526
|
}
|
|
489
527
|
}).sort((a, b) => isMovingForward ? a.epoch - b.epoch : b.epoch - a.epoch);
|
|
@@ -495,49 +533,55 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
495
533
|
}
|
|
496
534
|
async _applyFileSystemOperation(operation, isMovingForward, urisToRestore) {
|
|
497
535
|
switch (operation.type) {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
break;
|
|
534
|
-
default:
|
|
535
|
-
assertNever();
|
|
536
|
+
case FileOperationType.Create:
|
|
537
|
+
if (isMovingForward) {
|
|
538
|
+
await this._delegate.createFile(operation.uri, operation.initialContent);
|
|
539
|
+
urisToRestore.add(operation.uri);
|
|
540
|
+
} else {
|
|
541
|
+
await this._delegate.deleteFile(operation.uri);
|
|
542
|
+
urisToRestore.delete(operation.uri);
|
|
543
|
+
}
|
|
544
|
+
break;
|
|
545
|
+
case FileOperationType.Delete:
|
|
546
|
+
if (isMovingForward) {
|
|
547
|
+
await this._delegate.deleteFile(operation.uri);
|
|
548
|
+
urisToRestore.delete(operation.uri);
|
|
549
|
+
} else {
|
|
550
|
+
await this._delegate.createFile(operation.uri, operation.finalContent);
|
|
551
|
+
urisToRestore.add(operation.uri);
|
|
552
|
+
}
|
|
553
|
+
break;
|
|
554
|
+
case FileOperationType.Rename:
|
|
555
|
+
if (isMovingForward) {
|
|
556
|
+
await this._delegate.renameFile(operation.oldUri, operation.newUri);
|
|
557
|
+
urisToRestore.delete(operation.oldUri);
|
|
558
|
+
urisToRestore.add(operation.newUri);
|
|
559
|
+
} else {
|
|
560
|
+
await this._delegate.renameFile(operation.newUri, operation.oldUri);
|
|
561
|
+
urisToRestore.delete(operation.newUri);
|
|
562
|
+
urisToRestore.add(operation.oldUri);
|
|
563
|
+
}
|
|
564
|
+
break;
|
|
565
|
+
case FileOperationType.TextEdit:
|
|
566
|
+
case FileOperationType.NotebookEdit:
|
|
567
|
+
urisToRestore.add(CellUri.parse(operation.uri)?.notebook ?? operation.uri);
|
|
568
|
+
break;
|
|
569
|
+
default:
|
|
570
|
+
assertNever();
|
|
536
571
|
}
|
|
537
572
|
}
|
|
538
573
|
_applyTextEditsToContent(content, edits) {
|
|
539
|
-
const makeModel = (uri, contents) => this._instantiationService.createInstance(
|
|
540
|
-
|
|
574
|
+
const makeModel = (uri, contents) => this._instantiationService.createInstance(
|
|
575
|
+
TextModel,
|
|
576
|
+
contents,
|
|
577
|
+
"",
|
|
578
|
+
this._modelService.getCreationOptions("", uri, true),
|
|
579
|
+
uri
|
|
580
|
+
);
|
|
581
|
+
const tempUri = ( URI.from({
|
|
582
|
+
scheme: "temp",
|
|
583
|
+
path: `/temp-${Date.now()}.txt`
|
|
584
|
+
}));
|
|
541
585
|
const model = makeModel(tempUri, content);
|
|
542
586
|
try {
|
|
543
587
|
model.applyEdits(( edits.map(edit => ({
|
|
@@ -550,38 +594,48 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
550
594
|
text: edit.text
|
|
551
595
|
}))));
|
|
552
596
|
return model.getValue();
|
|
553
|
-
}
|
|
554
|
-
finally {
|
|
597
|
+
} finally {
|
|
555
598
|
model.dispose();
|
|
556
599
|
}
|
|
557
600
|
}
|
|
558
601
|
getEntryDiffBetweenStops(uri, requestId, stopId) {
|
|
559
|
-
const epochs = derivedOpts({
|
|
602
|
+
const epochs = derivedOpts({
|
|
603
|
+
equalsFn: (a, b) => a.start === b.start && a.end === b.end
|
|
604
|
+
}, reader => {
|
|
560
605
|
const checkpoints = this._checkpoints.read(reader);
|
|
561
606
|
const startIndex = checkpoints.findIndex(c => c.requestId === requestId && c.undoStopId === stopId);
|
|
562
|
-
return {
|
|
607
|
+
return {
|
|
608
|
+
start: checkpoints[startIndex],
|
|
609
|
+
end: checkpoints[startIndex + 1]
|
|
610
|
+
};
|
|
563
611
|
});
|
|
564
612
|
return this._getEntryDiffBetweenEpochs(uri, `s\0${requestId}\0${stopId}`, epochs);
|
|
565
613
|
}
|
|
566
614
|
_getRequestEpochBounds(startRequestId, stopRequestId) {
|
|
567
|
-
return derivedOpts({
|
|
615
|
+
return derivedOpts({
|
|
616
|
+
equalsFn: (a, b) => a.start === b.start && a.end === b.end
|
|
617
|
+
}, reader => {
|
|
568
618
|
const checkpoints = this._checkpoints.read(reader);
|
|
569
619
|
const startIndex = checkpoints.findIndex(c => c.requestId === startRequestId);
|
|
570
620
|
const start = startIndex === -1 ? checkpoints[0] : checkpoints[startIndex];
|
|
571
621
|
let end;
|
|
572
622
|
if (stopRequestId === undefined) {
|
|
573
623
|
end = findFirst(checkpoints, c => c.requestId !== startRequestId, startIndex + 1);
|
|
624
|
+
} else {
|
|
625
|
+
end = checkpoints.find(c => c.requestId === stopRequestId) || findFirst(checkpoints, c => c.requestId !== startRequestId, startIndex + 1) || checkpoints[checkpoints.length - 1];
|
|
574
626
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
}
|
|
580
|
-
return { start, end };
|
|
627
|
+
return {
|
|
628
|
+
start,
|
|
629
|
+
end
|
|
630
|
+
};
|
|
581
631
|
});
|
|
582
632
|
}
|
|
583
633
|
getEntryDiffBetweenRequests(uri, startRequestId, stopRequestId) {
|
|
584
|
-
return this._getEntryDiffBetweenEpochs(
|
|
634
|
+
return this._getEntryDiffBetweenEpochs(
|
|
635
|
+
uri,
|
|
636
|
+
`r\0${startRequestId}\0${stopRequestId}`,
|
|
637
|
+
this._getRequestEpochBounds(startRequestId, stopRequestId)
|
|
638
|
+
);
|
|
585
639
|
}
|
|
586
640
|
_getEntryDiffBetweenEpochs(uri, cacheKey, epochs) {
|
|
587
641
|
const key = `${( uri.toString())}\0${cacheKey}`;
|
|
@@ -593,38 +647,55 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
593
647
|
return obs;
|
|
594
648
|
}
|
|
595
649
|
_getEntryDiffBetweenEpochsInner(uri, epochs, onLastObserverRemoved) {
|
|
596
|
-
const modelRefsPromise = derived(this,
|
|
597
|
-
const {
|
|
650
|
+
const modelRefsPromise = derived(this, reader => {
|
|
651
|
+
const {
|
|
652
|
+
start,
|
|
653
|
+
end
|
|
654
|
+
} = epochs.read(reader);
|
|
598
655
|
if (!start) {
|
|
599
656
|
return undefined;
|
|
600
657
|
}
|
|
601
658
|
const store = reader.store.add(( new DisposableStore()));
|
|
602
|
-
const originalURI = this.getContentURIAtStop(
|
|
603
|
-
|
|
659
|
+
const originalURI = this.getContentURIAtStop(
|
|
660
|
+
start.requestId || START_REQUEST_EPOCH,
|
|
661
|
+
uri,
|
|
662
|
+
STOP_ID_EPOCH_PREFIX + start.epoch
|
|
663
|
+
);
|
|
664
|
+
const modifiedURI = this.getContentURIAtStop(
|
|
665
|
+
end?.requestId || start.requestId || START_REQUEST_EPOCH,
|
|
666
|
+
uri,
|
|
667
|
+
STOP_ID_EPOCH_PREFIX + (end?.epoch || Number.MAX_SAFE_INTEGER)
|
|
668
|
+
);
|
|
604
669
|
const promise = Promise.all([
|
|
605
670
|
this._textModelService.createModelReference(originalURI),
|
|
606
|
-
this._textModelService.createModelReference(modifiedURI)
|
|
671
|
+
this._textModelService.createModelReference(modifiedURI)
|
|
607
672
|
]).then(refs => {
|
|
608
673
|
if (store.isDisposed) {
|
|
609
674
|
refs.forEach(r => r.dispose());
|
|
610
|
-
}
|
|
611
|
-
else {
|
|
675
|
+
} else {
|
|
612
676
|
refs.forEach(r => store.add(r));
|
|
613
677
|
}
|
|
614
678
|
return {
|
|
615
679
|
refs: ( refs.map(r => ({
|
|
616
680
|
model: r.object.textEditorModel,
|
|
617
|
-
onChange: observableSignalFromEvent(
|
|
681
|
+
onChange: observableSignalFromEvent(
|
|
682
|
+
this,
|
|
683
|
+
r.object.textEditorModel.onDidChangeContent.bind(r.object.textEditorModel)
|
|
684
|
+
)
|
|
618
685
|
}))),
|
|
619
|
-
isFinal: !!end
|
|
686
|
+
isFinal: !!end
|
|
687
|
+
};
|
|
688
|
+
}).catch(error => {
|
|
689
|
+
return {
|
|
690
|
+
refs: [],
|
|
691
|
+
isFinal: true,
|
|
692
|
+
error
|
|
620
693
|
};
|
|
621
|
-
}).catch((error) => {
|
|
622
|
-
return { refs: [], isFinal: true, error };
|
|
623
694
|
});
|
|
624
695
|
return {
|
|
625
696
|
originalURI,
|
|
626
697
|
modifiedURI,
|
|
627
|
-
promise: ( new ObservablePromise(promise))
|
|
698
|
+
promise: ( new ObservablePromise(promise))
|
|
628
699
|
};
|
|
629
700
|
});
|
|
630
701
|
const diff = derived(reader => {
|
|
@@ -632,19 +703,41 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
632
703
|
if (!modelsData) {
|
|
633
704
|
return;
|
|
634
705
|
}
|
|
635
|
-
const {
|
|
706
|
+
const {
|
|
707
|
+
originalURI,
|
|
708
|
+
modifiedURI,
|
|
709
|
+
promise
|
|
710
|
+
} = modelsData;
|
|
636
711
|
const promiseData = promise?.promiseResult.read(reader);
|
|
637
712
|
if (!promiseData?.data) {
|
|
638
|
-
return {
|
|
713
|
+
return {
|
|
714
|
+
originalURI,
|
|
715
|
+
modifiedURI,
|
|
716
|
+
promise: undefined
|
|
717
|
+
};
|
|
639
718
|
}
|
|
640
|
-
const {
|
|
719
|
+
const {
|
|
720
|
+
refs,
|
|
721
|
+
isFinal,
|
|
722
|
+
error
|
|
723
|
+
} = promiseData.data;
|
|
641
724
|
if (error) {
|
|
642
|
-
return {
|
|
725
|
+
return {
|
|
726
|
+
originalURI,
|
|
727
|
+
modifiedURI,
|
|
728
|
+
promise: ( new ObservablePromise(Promise.resolve(emptySessionEntryDiff(originalURI, modifiedURI))))
|
|
729
|
+
};
|
|
643
730
|
}
|
|
644
731
|
refs.forEach(m => m.onChange.read(reader));
|
|
645
|
-
return {
|
|
732
|
+
return {
|
|
733
|
+
originalURI,
|
|
734
|
+
modifiedURI,
|
|
735
|
+
promise: ( new ObservablePromise(this._computeDiff(originalURI, modifiedURI, !!isFinal)))
|
|
736
|
+
};
|
|
646
737
|
});
|
|
647
|
-
return derivedOpts({
|
|
738
|
+
return derivedOpts({
|
|
739
|
+
onLastObserverRemoved
|
|
740
|
+
}, reader => {
|
|
648
741
|
const result = diff.read(reader);
|
|
649
742
|
if (!result) {
|
|
650
743
|
return undefined;
|
|
@@ -656,11 +749,18 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
656
749
|
if (promised?.error) {
|
|
657
750
|
return emptySessionEntryDiff(result.originalURI, result.modifiedURI);
|
|
658
751
|
}
|
|
659
|
-
return {
|
|
752
|
+
return {
|
|
753
|
+
...emptySessionEntryDiff(result.originalURI, result.modifiedURI),
|
|
754
|
+
isBusy: true
|
|
755
|
+
};
|
|
660
756
|
});
|
|
661
757
|
}
|
|
662
758
|
_computeDiff(originalUri, modifiedUri, isFinal) {
|
|
663
|
-
return this._editorWorkerService.computeDiff(originalUri, modifiedUri, {
|
|
759
|
+
return this._editorWorkerService.computeDiff(originalUri, modifiedUri, {
|
|
760
|
+
ignoreTrimWhitespace: false,
|
|
761
|
+
computeMoves: false,
|
|
762
|
+
maxComputationTimeMs: 3000
|
|
763
|
+
}, "advanced").then(diff => {
|
|
664
764
|
const entryDiff = {
|
|
665
765
|
originalURI: originalUri,
|
|
666
766
|
modifiedURI: modifiedUri,
|
|
@@ -669,7 +769,7 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
669
769
|
quitEarly: !diff || diff.quitEarly,
|
|
670
770
|
added: 0,
|
|
671
771
|
removed: 0,
|
|
672
|
-
isBusy: false
|
|
772
|
+
isBusy: false
|
|
673
773
|
};
|
|
674
774
|
if (diff) {
|
|
675
775
|
for (const change of diff.changes) {
|
|
@@ -695,7 +795,9 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
695
795
|
}
|
|
696
796
|
getDiffsForFilesInRequest(requestId) {
|
|
697
797
|
const boundsObservable = this._getRequestEpochBounds(requestId);
|
|
698
|
-
const startEpochs = derivedOpts({
|
|
798
|
+
const startEpochs = derivedOpts({
|
|
799
|
+
equalsFn: mapsStrictEqualIgnoreOrder
|
|
800
|
+
}, reader => {
|
|
699
801
|
const uris = ( new ResourceMap());
|
|
700
802
|
for (const value of ( this._fileBaselines.values())) {
|
|
701
803
|
if (value.requestId === requestId) {
|
|
@@ -735,7 +837,10 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
735
837
|
const uris = startEpochs.read(reader);
|
|
736
838
|
const diffs = [];
|
|
737
839
|
for (const [uri, epoch] of uris) {
|
|
738
|
-
const obs = prevDiffs.get(uri) ?? this._getEntryDiffBetweenEpochs(uri, `e\0${epoch}\0${endCheckpoint?.epoch}`, constObservable({
|
|
840
|
+
const obs = prevDiffs.get(uri) ?? this._getEntryDiffBetweenEpochs(uri, `e\0${epoch}\0${endCheckpoint?.epoch}`, constObservable({
|
|
841
|
+
start: checkpoints.findLast(cp => cp.epoch <= epoch) || firstCheckpoint,
|
|
842
|
+
end: endCheckpoint
|
|
843
|
+
}));
|
|
739
844
|
prevDiffs.set(uri, obs);
|
|
740
845
|
diffs.push(obs);
|
|
741
846
|
}
|
|
@@ -746,10 +851,15 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
746
851
|
}));
|
|
747
852
|
}
|
|
748
853
|
getDiffsForFilesInSession() {
|
|
749
|
-
const startEpochs = derivedOpts({
|
|
854
|
+
const startEpochs = derivedOpts({
|
|
855
|
+
equalsFn: mapsStrictEqualIgnoreOrder
|
|
856
|
+
}, reader => {
|
|
750
857
|
const uris = ( new ResourceMap());
|
|
751
858
|
for (const baseline of ( this._fileBaselines.values())) {
|
|
752
|
-
uris.set(
|
|
859
|
+
uris.set(
|
|
860
|
+
baseline.uri,
|
|
861
|
+
Math.min(baseline.epoch, uris.get(baseline.uri) ?? Number.MAX_SAFE_INTEGER)
|
|
862
|
+
);
|
|
753
863
|
}
|
|
754
864
|
for (const operation of this._operations.read(reader)) {
|
|
755
865
|
if (operation.type === FileOperationType.Create) {
|
|
@@ -770,18 +880,13 @@ let ChatEditingCheckpointTimelineImpl = class ChatEditingCheckpointTimelineImpl
|
|
|
770
880
|
added += diff.added;
|
|
771
881
|
removed += diff.removed;
|
|
772
882
|
}
|
|
773
|
-
return {
|
|
883
|
+
return {
|
|
884
|
+
added,
|
|
885
|
+
removed
|
|
886
|
+
};
|
|
774
887
|
});
|
|
775
888
|
}
|
|
776
889
|
};
|
|
777
|
-
ChatEditingCheckpointTimelineImpl = ( __decorate([
|
|
778
|
-
( __param(2, INotebookEditorModelResolverService)),
|
|
779
|
-
( __param(3, INotebookService)),
|
|
780
|
-
( __param(4, IInstantiationService)),
|
|
781
|
-
( __param(5, IModelService)),
|
|
782
|
-
( __param(6, ITextModelService)),
|
|
783
|
-
( __param(7, IEditorWorkerService)),
|
|
784
|
-
( __param(8, IConfigurationService))
|
|
785
|
-
], ChatEditingCheckpointTimelineImpl));
|
|
890
|
+
ChatEditingCheckpointTimelineImpl = ( __decorate([( __param(2, INotebookEditorModelResolverService)), ( __param(3, INotebookService)), ( __param(4, IInstantiationService)), ( __param(5, IModelService)), ( __param(6, ITextModelService)), ( __param(7, IEditorWorkerService)), ( __param(8, IConfigurationService))], ChatEditingCheckpointTimelineImpl));
|
|
786
891
|
|
|
787
892
|
export { ChatEditingCheckpointTimelineImpl };
|