@vscode/chat-lib 0.0.1 → 0.0.3
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/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts +2 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js +70 -28
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts +4 -3
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js +85 -109
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.js.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.d.ts.map +1 -1
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js +14 -6
- package/dist/src/_internal/extension/prompt/node/chatMLFetcher.js.map +1 -1
- package/dist/src/_internal/extension/xtab/common/promptCrafting.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/common/promptCrafting.js +6 -5
- package/dist/src/_internal/extension/xtab/common/promptCrafting.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts +1 -0
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js +44 -42
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
- package/dist/src/_internal/platform/authentication/node/copilotTokenManager.d.ts.map +1 -1
- package/dist/src/_internal/platform/authentication/node/copilotTokenManager.js +8 -4
- package/dist/src/_internal/platform/authentication/node/copilotTokenManager.js.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +8 -0
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.js +11 -3
- package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/capiClient.d.ts +1 -1
- package/dist/src/_internal/platform/endpoint/common/capiClient.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/capiClient.js +2 -2
- package/dist/src/_internal/platform/endpoint/common/capiClient.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts +4 -0
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +7 -0
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/capiClientImpl.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/capiClientImpl.js +1 -1
- package/dist/src/_internal/platform/endpoint/node/capiClientImpl.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js +10 -4
- package/dist/src/_internal/platform/endpoint/node/responsesApi.js.map +1 -1
- package/dist/src/_internal/platform/env/common/envService.d.ts +5 -0
- package/dist/src/_internal/platform/env/common/envService.d.ts.map +1 -1
- package/dist/src/_internal/platform/env/common/envService.js +2 -1
- package/dist/src/_internal/platform/env/common/envService.js.map +1 -1
- package/dist/src/_internal/platform/env/common/nullEnvService.d.ts +3 -0
- package/dist/src/_internal/platform/env/common/nullEnvService.d.ts.map +1 -1
- package/dist/src/_internal/platform/env/common/nullEnvService.js +8 -1
- package/dist/src/_internal/platform/env/common/nullEnvService.js.map +1 -1
- package/dist/src/_internal/platform/github/common/githubService.d.ts +3 -3
- package/dist/src/_internal/platform/github/common/githubService.d.ts.map +1 -1
- package/dist/src/_internal/platform/github/common/githubService.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts +0 -3
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js +0 -5
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetcherService.d.ts +2 -1
- package/dist/src/_internal/platform/networking/common/fetcherService.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/fetcherService.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.js.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/nullExperimentationService.d.ts +7 -0
- package/dist/src/_internal/platform/telemetry/common/nullExperimentationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/nullExperimentationService.js +1 -0
- package/dist/src/_internal/platform/telemetry/common/nullExperimentationService.js.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetry.d.ts +1 -0
- package/dist/src/_internal/platform/telemetry/common/telemetry.d.ts.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetry.js.map +1 -1
- package/dist/src/_internal/util/common/test/shims/chatTypes.d.ts +8 -0
- package/dist/src/_internal/util/common/test/shims/chatTypes.d.ts.map +1 -1
- package/dist/src/_internal/util/common/test/shims/chatTypes.js +19 -1
- package/dist/src/_internal/util/common/test/shims/chatTypes.js.map +1 -1
- package/dist/src/_internal/util/common/test/shims/enums.d.ts +6 -0
- package/dist/src/_internal/util/common/test/shims/enums.d.ts.map +1 -1
- package/dist/src/_internal/util/common/test/shims/enums.js +8 -1
- package/dist/src/_internal/util/common/test/shims/enums.js.map +1 -1
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.d.ts.map +1 -1
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.js +9 -1
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.js.map +1 -1
- package/dist/src/_internal/vscodeTypes.d.ts +5 -0
- package/dist/src/_internal/vscodeTypes.d.ts.map +1 -1
- package/dist/src/_internal/vscodeTypes.js +6 -1
- package/dist/src/_internal/vscodeTypes.js.map +1 -1
- package/dist/src/main.d.ts +15 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +73 -13
- package/dist/src/main.js.map +1 -1
- package/dist/src/package.json +70 -31
- package/package.json +7 -9
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/fragments.d.ts +0 -42
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/fragments.d.ts.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/fragments.js +0 -125
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/fragments.js.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/implementation.d.ts +0 -60
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/implementation.d.ts.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/implementation.js +0 -416
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/implementation.js.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/projectedText.d.ts +0 -30
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/projectedText.d.ts.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/projectedText.js +0 -64
- package/dist/src/_internal/extension/prompts/node/inline/summarizedDocument/projectedText.js.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/visualization.d.ts +0 -26
- package/dist/src/_internal/extension/prompts/node/inline/visualization.d.ts.map +0 -1
- package/dist/src/_internal/extension/prompts/node/inline/visualization.js +0 -41
- package/dist/src/_internal/extension/prompts/node/inline/visualization.js.map +0 -1
- package/dist/src/_internal/platform/editing/common/abstractText.d.ts +0 -58
- package/dist/src/_internal/platform/editing/common/abstractText.d.ts.map +0 -1
- package/dist/src/_internal/platform/editing/common/abstractText.js +0 -129
- package/dist/src/_internal/platform/editing/common/abstractText.js.map +0 -1
- package/dist/src/_internal/platform/parser/node/nodes.d.ts +0 -93
- package/dist/src/_internal/platform/parser/node/nodes.d.ts.map +0 -1
- package/dist/src/_internal/platform/parser/node/nodes.js +0 -133
- package/dist/src/_internal/platform/parser/node/nodes.js.map +0 -1
- package/dist/src/_internal/platform/telemetry/common/nullTelemetryService.d.ts +0 -18
- package/dist/src/_internal/platform/telemetry/common/nullTelemetryService.d.ts.map +0 -1
- package/dist/src/_internal/platform/telemetry/common/nullTelemetryService.js +0 -50
- package/dist/src/_internal/platform/telemetry/common/nullTelemetryService.js.map +0 -1
- package/dist/src/_internal/util/common/arrays.d.ts +0 -18
- package/dist/src/_internal/util/common/arrays.d.ts.map +0 -1
- package/dist/src/_internal/util/common/arrays.js +0 -80
- package/dist/src/_internal/util/common/arrays.js.map +0 -1
- package/src/_internal/extension/byok/node/openAIEndpoint.ts +0 -171
- package/src/_internal/extension/common/constants.ts +0 -90
- package/src/_internal/extension/inlineEdits/common/delayer.ts +0 -108
- package/src/_internal/extension/inlineEdits/common/editRebase.ts +0 -268
- package/src/_internal/extension/inlineEdits/common/ghNearbyNesProvider.tsx +0 -163
- package/src/_internal/extension/inlineEdits/common/nearbyCursorInlineEditProvider.ts +0 -225
- package/src/_internal/extension/inlineEdits/common/rejectionCollector.ts +0 -164
- package/src/_internal/extension/inlineEdits/node/debugRecorder.ts +0 -205
- package/src/_internal/extension/inlineEdits/node/importFiltering.ts +0 -25
- package/src/_internal/extension/inlineEdits/node/nesConfigs.ts +0 -12
- package/src/_internal/extension/inlineEdits/node/nextEditCache.ts +0 -278
- package/src/_internal/extension/inlineEdits/node/nextEditProvider.ts +0 -778
- package/src/_internal/extension/inlineEdits/node/nextEditProviderTelemetry.ts +0 -983
- package/src/_internal/extension/inlineEdits/node/nextEditResult.ts +0 -40
- package/src/_internal/extension/prompt/common/importStatement.ts +0 -25
- package/src/_internal/extension/prompt/node/chatMLFetcher.ts +0 -706
- package/src/_internal/extension/prompts/node/inline/summarizedDocument/fragments.ts +0 -146
- package/src/_internal/extension/prompts/node/inline/summarizedDocument/implementation.ts +0 -527
- package/src/_internal/extension/prompts/node/inline/summarizedDocument/projectedText.ts +0 -76
- package/src/_internal/extension/prompts/node/inline/visualization.ts +0 -65
- package/src/_internal/extension/vscode.proposed.activeComment.d.ts +0 -23
- package/src/_internal/extension/vscode.proposed.aiRelatedInformation.d.ts +0 -49
- package/src/_internal/extension/vscode.proposed.aiSettingsSearch.d.ts +0 -31
- package/src/_internal/extension/vscode.proposed.aiTextSearchProvider.d.ts +0 -41
- package/src/_internal/extension/vscode.proposed.authLearnMore.d.ts +0 -16
- package/src/_internal/extension/vscode.proposed.chatBinaryReferenceData.d.ts +0 -41
- package/src/_internal/extension/vscode.proposed.chatEditing.d.ts +0 -29
- package/src/_internal/extension/vscode.proposed.chatParticipantAdditions.d.ts +0 -636
- package/src/_internal/extension/vscode.proposed.chatParticipantPrivate.d.ts +0 -276
- package/src/_internal/extension/vscode.proposed.chatProvider.d.ts +0 -62
- package/src/_internal/extension/vscode.proposed.chatReadonlyPromptReference.d.ts +0 -17
- package/src/_internal/extension/vscode.proposed.chatReferenceDiagnostic.d.ts +0 -23
- package/src/_internal/extension/vscode.proposed.chatSessionsProvider.d.ts +0 -218
- package/src/_internal/extension/vscode.proposed.chatStatusItem.d.ts +0 -61
- package/src/_internal/extension/vscode.proposed.codeActionAI.d.ts +0 -16
- package/src/_internal/extension/vscode.proposed.commentReveal.d.ts +0 -32
- package/src/_internal/extension/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts +0 -8
- package/src/_internal/extension/vscode.proposed.contribCommentsViewThreadMenus.d.ts +0 -6
- package/src/_internal/extension/vscode.proposed.contribSourceControlInputBoxMenu.d.ts +0 -7
- package/src/_internal/extension/vscode.proposed.dataChannels.d.ts +0 -19
- package/src/_internal/extension/vscode.proposed.defaultChatParticipant.d.ts +0 -52
- package/src/_internal/extension/vscode.proposed.documentFiltersExclusive.d.ts +0 -13
- package/src/_internal/extension/vscode.proposed.embeddings.d.ts +0 -33
- package/src/_internal/extension/vscode.proposed.extensionsAny.d.ts +0 -40
- package/src/_internal/extension/vscode.proposed.findFiles2.d.ts +0 -125
- package/src/_internal/extension/vscode.proposed.findTextInFiles.d.ts +0 -104
- package/src/_internal/extension/vscode.proposed.findTextInFiles2.d.ts +0 -144
- package/src/_internal/extension/vscode.proposed.inlineCompletionsAdditions.d.ts +0 -202
- package/src/_internal/extension/vscode.proposed.interactive.d.ts +0 -11
- package/src/_internal/extension/vscode.proposed.languageModelCapabilities.d.ts +0 -25
- package/src/_internal/extension/vscode.proposed.languageModelDataPart.d.ts +0 -163
- package/src/_internal/extension/vscode.proposed.languageModelSystem.d.ts +0 -17
- package/src/_internal/extension/vscode.proposed.languageModelThinkingPart.d.ts +0 -49
- package/src/_internal/extension/vscode.proposed.languageModelToolResultAudience.d.ts +0 -36
- package/src/_internal/extension/vscode.proposed.mappedEditsProvider.d.ts +0 -110
- package/src/_internal/extension/vscode.proposed.newSymbolNamesProvider.d.ts +0 -47
- package/src/_internal/extension/vscode.proposed.readonlyMessage.d.ts +0 -14
- package/src/_internal/extension/vscode.proposed.resolvers.d.ts +0 -475
- package/src/_internal/extension/vscode.proposed.scmInputBoxValueProvider.d.ts +0 -25
- package/src/_internal/extension/vscode.proposed.taskProblemMatcherStatus.d.ts +0 -42
- package/src/_internal/extension/vscode.proposed.terminalDataWriteEvent.d.ts +0 -32
- package/src/_internal/extension/vscode.proposed.terminalExecuteCommandEvent.d.ts +0 -48
- package/src/_internal/extension/vscode.proposed.terminalQuickFixProvider.d.ts +0 -87
- package/src/_internal/extension/vscode.proposed.terminalSelection.d.ts +0 -16
- package/src/_internal/extension/vscode.proposed.testObserver.d.ts +0 -199
- package/src/_internal/extension/vscode.proposed.textDocumentChangeReason.d.ts +0 -30
- package/src/_internal/extension/vscode.proposed.textSearchProvider.d.ts +0 -281
- package/src/_internal/extension/vscode.proposed.textSearchProvider2.d.ts +0 -297
- package/src/_internal/extension/xtab/common/promptCrafting.ts +0 -670
- package/src/_internal/extension/xtab/node/xtabEndpoint.ts +0 -102
- package/src/_internal/extension/xtab/node/xtabProvider.ts +0 -976
- package/src/_internal/extension/xtab/node/xtabUtils.ts +0 -62
- package/src/_internal/platform/authentication/common/authentication.ts +0 -309
- package/src/_internal/platform/authentication/common/copilotToken.ts +0 -300
- package/src/_internal/platform/authentication/common/copilotTokenManager.ts +0 -59
- package/src/_internal/platform/authentication/common/copilotTokenStore.ts +0 -40
- package/src/_internal/platform/authentication/common/staticGitHubAuthenticationService.ts +0 -96
- package/src/_internal/platform/authentication/node/copilotTokenManager.ts +0 -303
- package/src/_internal/platform/chat/common/chatMLFetcher.ts +0 -124
- package/src/_internal/platform/chat/common/chatQuotaService.ts +0 -63
- package/src/_internal/platform/chat/common/chatQuotaServiceImpl.ts +0 -96
- package/src/_internal/platform/chat/common/commonTypes.ts +0 -353
- package/src/_internal/platform/chat/common/conversationOptions.ts +0 -16
- package/src/_internal/platform/chat/common/globalStringUtils.ts +0 -54
- package/src/_internal/platform/chat/common/interactionService.ts +0 -35
- package/src/_internal/platform/configuration/common/configurationService.ts +0 -803
- package/src/_internal/platform/configuration/common/defaultsOnlyConfigurationService.ts +0 -39
- package/src/_internal/platform/configuration/common/jsonSchema.ts +0 -139
- package/src/_internal/platform/configuration/common/validator.ts +0 -242
- package/src/_internal/platform/diff/common/diffService.ts +0 -41
- package/src/_internal/platform/diff/common/diffWorker.ts +0 -83
- package/src/_internal/platform/diff/node/diffServiceImpl.ts +0 -85
- package/src/_internal/platform/editing/common/abstractText.ts +0 -177
- package/src/_internal/platform/editing/common/notebookDocumentSnapshot.ts +0 -122
- package/src/_internal/platform/editing/common/positionOffsetTransformer.ts +0 -202
- package/src/_internal/platform/editing/common/textDocumentSnapshot.ts +0 -274
- package/src/_internal/platform/endpoint/common/capiClient.ts +0 -37
- package/src/_internal/platform/endpoint/common/chatModelCapabilities.ts +0 -115
- package/src/_internal/platform/endpoint/common/domainService.ts +0 -27
- package/src/_internal/platform/endpoint/common/endpointProvider.ts +0 -104
- package/src/_internal/platform/endpoint/common/endpointTypes.ts +0 -12
- package/src/_internal/platform/endpoint/common/licenseAgreement.ts +0 -11
- package/src/_internal/platform/endpoint/common/statefulMarkerContainer.tsx +0 -85
- package/src/_internal/platform/endpoint/common/thinkingDataContainer.tsx +0 -44
- package/src/_internal/platform/endpoint/node/capiClientImpl.ts +0 -18
- package/src/_internal/platform/endpoint/node/chatEndpoint.ts +0 -435
- package/src/_internal/platform/endpoint/node/domainServiceImpl.ts +0 -80
- package/src/_internal/platform/endpoint/node/proxyXtabEndpoint.ts +0 -43
- package/src/_internal/platform/endpoint/node/responsesApi.ts +0 -326
- package/src/_internal/platform/env/common/envService.ts +0 -134
- package/src/_internal/platform/env/common/nullEnvService.ts +0 -68
- package/src/_internal/platform/env/common/packagejson.ts +0 -49
- package/src/_internal/platform/git/common/gitExtensionService.ts +0 -21
- package/src/_internal/platform/git/common/nullGitExtensionService.ts +0 -20
- package/src/_internal/platform/git/vscode/git.d.ts +0 -414
- package/src/_internal/platform/github/common/githubAPI.ts +0 -44
- package/src/_internal/platform/github/common/githubService.ts +0 -87
- package/src/_internal/platform/github/common/nullOctokitServiceImpl.ts +0 -21
- package/src/_internal/platform/ignore/common/ignoreService.ts +0 -72
- package/src/_internal/platform/inlineCompletions/common/api.ts +0 -198
- package/src/_internal/platform/inlineEdits/common/dataTypes/diagnosticData.ts +0 -32
- package/src/_internal/platform/inlineEdits/common/dataTypes/documentId.ts +0 -52
- package/src/_internal/platform/inlineEdits/common/dataTypes/edit.ts +0 -165
- package/src/_internal/platform/inlineEdits/common/dataTypes/editUtils.ts +0 -74
- package/src/_internal/platform/inlineEdits/common/dataTypes/fetchCancellationError.ts +0 -14
- package/src/_internal/platform/inlineEdits/common/dataTypes/languageContext.ts +0 -107
- package/src/_internal/platform/inlineEdits/common/dataTypes/languageId.ts +0 -14
- package/src/_internal/platform/inlineEdits/common/dataTypes/permutation.ts +0 -69
- package/src/_internal/platform/inlineEdits/common/dataTypes/rootedLineEdit.ts +0 -49
- package/src/_internal/platform/inlineEdits/common/dataTypes/textEditLength.ts +0 -74
- package/src/_internal/platform/inlineEdits/common/dataTypes/textEditLengthHelper/combineTextEditInfos.ts +0 -132
- package/src/_internal/platform/inlineEdits/common/dataTypes/textEditLengthHelper/length.ts +0 -184
- package/src/_internal/platform/inlineEdits/common/dataTypes/textEditLengthHelper/textEditInfo.ts +0 -32
- package/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.ts +0 -89
- package/src/_internal/platform/inlineEdits/common/debugRecorderBookmark.ts +0 -10
- package/src/_internal/platform/inlineEdits/common/editReason.ts +0 -134
- package/src/_internal/platform/inlineEdits/common/inlineEditLogContext.ts +0 -490
- package/src/_internal/platform/inlineEdits/common/observableGit.ts +0 -49
- package/src/_internal/platform/inlineEdits/common/observableWorkspace.ts +0 -239
- package/src/_internal/platform/inlineEdits/common/responseProcessor.ts +0 -249
- package/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.ts +0 -468
- package/src/_internal/platform/inlineEdits/common/statelessNextEditProviders.ts +0 -59
- package/src/_internal/platform/inlineEdits/common/utils/observable.ts +0 -54
- package/src/_internal/platform/inlineEdits/common/utils/stringifyChatMessages.ts +0 -29
- package/src/_internal/platform/inlineEdits/common/utils/utils.ts +0 -56
- package/src/_internal/platform/inlineEdits/common/workspaceEditTracker/historyContextProvider.ts +0 -60
- package/src/_internal/platform/inlineEdits/common/workspaceEditTracker/nesHistoryContextProvider.ts +0 -353
- package/src/_internal/platform/inlineEdits/common/workspaceEditTracker/nesXtabHistoryTracker.ts +0 -176
- package/src/_internal/platform/languageContextProvider/common/languageContextProviderService.ts +0 -25
- package/src/_internal/platform/languageContextProvider/common/nullLanguageContextProviderService.ts +0 -38
- package/src/_internal/platform/languageServer/common/languageContextService.ts +0 -186
- package/src/_internal/platform/languages/common/languageDiagnosticsService.ts +0 -67
- package/src/_internal/platform/languages/common/testLanguageDiagnosticsService.ts +0 -28
- package/src/_internal/platform/log/common/logService.ts +0 -232
- package/src/_internal/platform/nesFetch/common/completionsAPI.ts +0 -78
- package/src/_internal/platform/nesFetch/common/completionsFetchService.ts +0 -118
- package/src/_internal/platform/nesFetch/common/responseStream.ts +0 -151
- package/src/_internal/platform/nesFetch/node/completionsFetchServiceImpl.ts +0 -236
- package/src/_internal/platform/nesFetch/node/streamTransformer.ts +0 -95
- package/src/_internal/platform/networking/common/fetch.ts +0 -349
- package/src/_internal/platform/networking/common/fetcherService.ts +0 -84
- package/src/_internal/platform/networking/common/networking.ts +0 -442
- package/src/_internal/platform/networking/common/openai.ts +0 -273
- package/src/_internal/platform/networking/node/chatStream.ts +0 -137
- package/src/_internal/platform/networking/node/stream.ts +0 -749
- package/src/_internal/platform/notebook/common/alternativeContent.ts +0 -89
- package/src/_internal/platform/notebook/common/alternativeContentFormat.ts +0 -10
- package/src/_internal/platform/notebook/common/alternativeContentProvider.json.ts +0 -262
- package/src/_internal/platform/notebook/common/alternativeContentProvider.text.ts +0 -243
- package/src/_internal/platform/notebook/common/alternativeContentProvider.ts +0 -41
- package/src/_internal/platform/notebook/common/alternativeContentProvider.xml.ts +0 -205
- package/src/_internal/platform/notebook/common/alternativeNotebookDocument.ts +0 -155
- package/src/_internal/platform/notebook/common/helpers.ts +0 -212
- package/src/_internal/platform/notebook/common/notebookService.ts +0 -43
- package/src/_internal/platform/openai/node/fetch.ts +0 -596
- package/src/_internal/platform/parser/node/nodes.ts +0 -190
- package/src/_internal/platform/requestLogger/node/nullRequestLogger.ts +0 -26
- package/src/_internal/platform/requestLogger/node/requestLogger.ts +0 -383
- package/src/_internal/platform/simulationTestContext/common/simulationTestContext.ts +0 -29
- package/src/_internal/platform/snippy/common/snippyService.ts +0 -25
- package/src/_internal/platform/telemetry/common/nullExperimentationService.ts +0 -64
- package/src/_internal/platform/telemetry/common/nullTelemetryService.ts +0 -53
- package/src/_internal/platform/telemetry/common/telemetry.ts +0 -215
- package/src/_internal/platform/telemetry/common/telemetryData.ts +0 -205
- package/src/_internal/platform/thinking/common/thinking.ts +0 -61
- package/src/_internal/platform/thinking/common/thinkingUtils.ts +0 -57
- package/src/_internal/platform/tokenizer/node/parseTikTokens.ts +0 -23
- package/src/_internal/platform/tokenizer/node/tikTokenizerImpl.ts +0 -74
- package/src/_internal/platform/tokenizer/node/tikTokenizerWorker.ts +0 -24
- package/src/_internal/platform/tokenizer/node/tokenizer.ts +0 -357
- package/src/_internal/platform/workspace/common/workspaceService.ts +0 -226
- package/src/_internal/platform/workspaceRecorder/common/workspaceLog.ts +0 -118
- package/src/_internal/util/common/anomalyDetection.ts +0 -112
- package/src/_internal/util/common/arrays.ts +0 -81
- package/src/_internal/util/common/async.ts +0 -155
- package/src/_internal/util/common/cache.ts +0 -183
- package/src/_internal/util/common/crypto.ts +0 -41
- package/src/_internal/util/common/errors.ts +0 -22
- package/src/_internal/util/common/globals.d.ts +0 -12
- package/src/_internal/util/common/imageUtils.ts +0 -154
- package/src/_internal/util/common/languages.ts +0 -940
- package/src/_internal/util/common/notebooks.ts +0 -286
- package/src/_internal/util/common/result.ts +0 -71
- package/src/_internal/util/common/services.ts +0 -43
- package/src/_internal/util/common/test/shims/chatTypes.ts +0 -448
- package/src/_internal/util/common/test/shims/editing.ts +0 -233
- package/src/_internal/util/common/test/shims/enums.ts +0 -61
- package/src/_internal/util/common/test/shims/l10n.ts +0 -37
- package/src/_internal/util/common/test/shims/newSymbolName.ts +0 -23
- package/src/_internal/util/common/test/shims/terminal.ts +0 -33
- package/src/_internal/util/common/test/shims/vscodeTypesShim.ts +0 -115
- package/src/_internal/util/common/time.ts +0 -31
- package/src/_internal/util/common/tokenizer.ts +0 -30
- package/src/_internal/util/common/tracing.ts +0 -52
- package/src/_internal/util/common/types.ts +0 -33
- package/src/_internal/util/common/variableLengthQuantity.ts +0 -40
- package/src/_internal/util/node/worker.ts +0 -130
- package/src/_internal/util/vs/base/common/arrays.ts +0 -926
- package/src/_internal/util/vs/base/common/arraysFind.ts +0 -206
- package/src/_internal/util/vs/base/common/assert.ts +0 -89
- package/src/_internal/util/vs/base/common/async.ts +0 -2582
- package/src/_internal/util/vs/base/common/buffer.ts +0 -501
- package/src/_internal/util/vs/base/common/cache.ts +0 -122
- package/src/_internal/util/vs/base/common/cancellation.ts +0 -150
- package/src/_internal/util/vs/base/common/charCode.ts +0 -452
- package/src/_internal/util/vs/base/common/codicons.ts +0 -66
- package/src/_internal/util/vs/base/common/codiconsLibrary.ts +0 -618
- package/src/_internal/util/vs/base/common/codiconsUtil.ts +0 -30
- package/src/_internal/util/vs/base/common/collections.ts +0 -156
- package/src/_internal/util/vs/base/common/diff/diff.ts +0 -1317
- package/src/_internal/util/vs/base/common/diff/diffChange.ts +0 -62
- package/src/_internal/util/vs/base/common/equals.ts +0 -148
- package/src/_internal/util/vs/base/common/errors.ts +0 -342
- package/src/_internal/util/vs/base/common/event.ts +0 -1782
- package/src/_internal/util/vs/base/common/extpath.ts +0 -425
- package/src/_internal/util/vs/base/common/filters.ts +0 -928
- package/src/_internal/util/vs/base/common/functional.ts +0 -34
- package/src/_internal/util/vs/base/common/glob.ts +0 -839
- package/src/_internal/util/vs/base/common/hash.ts +0 -326
- package/src/_internal/util/vs/base/common/htmlContent.ts +0 -212
- package/src/_internal/util/vs/base/common/iconLabels.ts +0 -118
- package/src/_internal/util/vs/base/common/iterator.ts +0 -196
- package/src/_internal/util/vs/base/common/lazy.ts +0 -59
- package/src/_internal/util/vs/base/common/lifecycle.ts +0 -845
- package/src/_internal/util/vs/base/common/linkedList.ts +0 -144
- package/src/_internal/util/vs/base/common/map.ts +0 -954
- package/src/_internal/util/vs/base/common/marshallingIds.ts +0 -35
- package/src/_internal/util/vs/base/common/mime.ts +0 -136
- package/src/_internal/util/vs/base/common/naturalLanguage/korean.ts +0 -425
- package/src/_internal/util/vs/base/common/network.ts +0 -429
- package/src/_internal/util/vs/base/common/numbers.ts +0 -166
- package/src/_internal/util/vs/base/common/objects.ts +0 -242
- package/src/_internal/util/vs/base/common/observable.ts +0 -10
- package/src/_internal/util/vs/base/common/observableInternal/base.ts +0 -208
- package/src/_internal/util/vs/base/common/observableInternal/changeTracker.ts +0 -96
- package/src/_internal/util/vs/base/common/observableInternal/commonFacade/cancellation.ts +0 -9
- package/src/_internal/util/vs/base/common/observableInternal/commonFacade/deps.ts +0 -12
- package/src/_internal/util/vs/base/common/observableInternal/debugLocation.ts +0 -88
- package/src/_internal/util/vs/base/common/observableInternal/debugName.ts +0 -150
- package/src/_internal/util/vs/base/common/observableInternal/experimental/utils.ts +0 -62
- package/src/_internal/util/vs/base/common/observableInternal/index.ts +0 -61
- package/src/_internal/util/vs/base/common/observableInternal/logging/consoleObservableLogger.ts +0 -388
- package/src/_internal/util/vs/base/common/observableInternal/logging/debugger/debuggerApi.d.ts +0 -154
- package/src/_internal/util/vs/base/common/observableInternal/logging/debugger/debuggerRpc.ts +0 -80
- package/src/_internal/util/vs/base/common/observableInternal/logging/debugger/devToolsLogger.ts +0 -485
- package/src/_internal/util/vs/base/common/observableInternal/logging/debugger/rpc.ts +0 -103
- package/src/_internal/util/vs/base/common/observableInternal/logging/debugger/utils.ts +0 -69
- package/src/_internal/util/vs/base/common/observableInternal/logging/logging.ts +0 -133
- package/src/_internal/util/vs/base/common/observableInternal/map.ts +0 -81
- package/src/_internal/util/vs/base/common/observableInternal/observables/baseObservable.ts +0 -172
- package/src/_internal/util/vs/base/common/observableInternal/observables/constObservable.ts +0 -44
- package/src/_internal/util/vs/base/common/observableInternal/observables/derived.ts +0 -190
- package/src/_internal/util/vs/base/common/observableInternal/observables/derivedImpl.ts +0 -445
- package/src/_internal/util/vs/base/common/observableInternal/observables/lazyObservableValue.ts +0 -154
- package/src/_internal/util/vs/base/common/observableInternal/observables/observableFromEvent.ts +0 -174
- package/src/_internal/util/vs/base/common/observableInternal/observables/observableSignal.ts +0 -67
- package/src/_internal/util/vs/base/common/observableInternal/observables/observableSignalFromEvent.ts +0 -62
- package/src/_internal/util/vs/base/common/observableInternal/observables/observableValue.ts +0 -131
- package/src/_internal/util/vs/base/common/observableInternal/observables/observableValueOpts.ts +0 -37
- package/src/_internal/util/vs/base/common/observableInternal/reactions/autorun.ts +0 -188
- package/src/_internal/util/vs/base/common/observableInternal/reactions/autorunImpl.ts +0 -256
- package/src/_internal/util/vs/base/common/observableInternal/set.ts +0 -78
- package/src/_internal/util/vs/base/common/observableInternal/transaction.ts +0 -115
- package/src/_internal/util/vs/base/common/observableInternal/utils/promise.ts +0 -129
- package/src/_internal/util/vs/base/common/observableInternal/utils/runOnChange.ts +0 -65
- package/src/_internal/util/vs/base/common/observableInternal/utils/utils.ts +0 -281
- package/src/_internal/util/vs/base/common/observableInternal/utils/utilsCancellation.ts +0 -101
- package/src/_internal/util/vs/base/common/observableInternal/utils/valueWithChangeEvent.ts +0 -31
- package/src/_internal/util/vs/base/common/path.ts +0 -1591
- package/src/_internal/util/vs/base/common/platform.ts +0 -282
- package/src/_internal/util/vs/base/common/process.ts +0 -78
- package/src/_internal/util/vs/base/common/resources.ts +0 -446
- package/src/_internal/util/vs/base/common/sequence.ts +0 -36
- package/src/_internal/util/vs/base/common/sseParser.ts +0 -247
- package/src/_internal/util/vs/base/common/stopwatch.ts +0 -43
- package/src/_internal/util/vs/base/common/stream.ts +0 -792
- package/src/_internal/util/vs/base/common/strings.ts +0 -1364
- package/src/_internal/util/vs/base/common/symbols.ts +0 -11
- package/src/_internal/util/vs/base/common/themables.ts +0 -106
- package/src/_internal/util/vs/base/common/types.ts +0 -345
- package/src/_internal/util/vs/base/common/uint.ts +0 -61
- package/src/_internal/util/vs/base/common/uri.ts +0 -752
- package/src/_internal/util/vs/base/common/uuid.ts +0 -72
- package/src/_internal/util/vs/base-common.d.ts +0 -42
- package/src/_internal/util/vs/editor/common/core/editOperation.ts +0 -62
- package/src/_internal/util/vs/editor/common/core/edits/edit.ts +0 -399
- package/src/_internal/util/vs/editor/common/core/edits/lineEdit.ts +0 -414
- package/src/_internal/util/vs/editor/common/core/edits/stringEdit.ts +0 -568
- package/src/_internal/util/vs/editor/common/core/edits/textEdit.ts +0 -411
- package/src/_internal/util/vs/editor/common/core/position.ts +0 -186
- package/src/_internal/util/vs/editor/common/core/range.ts +0 -519
- package/src/_internal/util/vs/editor/common/core/ranges/lineRange.ts +0 -416
- package/src/_internal/util/vs/editor/common/core/ranges/offsetRange.ts +0 -275
- package/src/_internal/util/vs/editor/common/core/text/abstractText.ts +0 -127
- package/src/_internal/util/vs/editor/common/core/text/positionToOffset.ts +0 -26
- package/src/_internal/util/vs/editor/common/core/text/positionToOffsetImpl.ts +0 -144
- package/src/_internal/util/vs/editor/common/core/text/textLength.ts +0 -150
- package/src/_internal/util/vs/editor/common/core/wordHelper.ts +0 -177
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/diffAlgorithm.ts +0 -210
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/dynamicProgrammingDiffing.ts +0 -109
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/algorithms/myersDiffAlgorithm.ts +0 -178
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/computeMovedLines.ts +0 -331
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer.ts +0 -273
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/heuristicSequenceOptimizations.ts +0 -475
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/lineSequence.ts +0 -47
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/linesSliceCharSequence.ts +0 -248
- package/src/_internal/util/vs/editor/common/diff/defaultLinesDiffComputer/utils.ts +0 -76
- package/src/_internal/util/vs/editor/common/diff/legacyLinesDiffComputer.ts +0 -693
- package/src/_internal/util/vs/editor/common/diff/linesDiffComputer.ts +0 -61
- package/src/_internal/util/vs/editor/common/diff/rangeMapping.ts +0 -418
- package/src/_internal/util/vs/editor/common/model/prefixSumComputer.ts +0 -304
- package/src/_internal/util/vs/nls.messages.ts +0 -21
- package/src/_internal/util/vs/nls.ts +0 -243
- package/src/_internal/util/vs/platform/instantiation/common/descriptors.ts +0 -23
- package/src/_internal/util/vs/platform/instantiation/common/graph.ts +0 -113
- package/src/_internal/util/vs/platform/instantiation/common/instantiation.ts +0 -127
- package/src/_internal/util/vs/platform/instantiation/common/instantiationService.ts +0 -483
- package/src/_internal/util/vs/platform/instantiation/common/serviceCollection.ts +0 -34
- package/src/_internal/util/vs/vscode-globals-nls.d.ts +0 -42
- package/src/_internal/util/vs/vscode-globals-product.d.ts +0 -35
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/diagnostic.ts +0 -109
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/es5ClassCompat.ts +0 -34
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/location.ts +0 -51
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/markdownString.ts +0 -83
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/notebooks.ts +0 -296
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/position.ts +0 -195
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/range.ts +0 -167
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/selection.ts +0 -94
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/snippetString.ts +0 -103
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/snippetTextEdit.ts +0 -44
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/symbolInformation.ts +0 -89
- package/src/_internal/util/vs/workbench/api/common/extHostTypes/textEdit.ts +0 -99
- package/src/_internal/vscodeTypes.ts +0 -100
- package/src/main.ts +0 -207
- package/src/package.json +0 -4063
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
import { DocumentId } from '../../../platform/inlineEdits/common/dataTypes/documentId';
|
|
7
|
-
import { IObservableDocument, ObservableWorkspace } from '../../../platform/inlineEdits/common/observableWorkspace';
|
|
8
|
-
import { autorunWithChanges } from '../../../platform/inlineEdits/common/utils/observable';
|
|
9
|
-
import { createTracer, ITracer } from '../../../util/common/tracing';
|
|
10
|
-
import { Disposable, IDisposable, toDisposable } from '../../../util/vs/base/common/lifecycle';
|
|
11
|
-
import { mapObservableArrayCached } from '../../../util/vs/base/common/observable';
|
|
12
|
-
import { StringEdit, StringReplacement } from '../../../util/vs/editor/common/core/edits/stringEdit';
|
|
13
|
-
import { StringText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
14
|
-
|
|
15
|
-
export class RejectionCollector extends Disposable {
|
|
16
|
-
private readonly _garbageCollector = this._register(new LRUGarbageCollector(20));
|
|
17
|
-
private readonly _documentCaches = new Map<DocumentId, DocumentRejectionTracker>();
|
|
18
|
-
private readonly _tracer: ITracer;
|
|
19
|
-
|
|
20
|
-
constructor(
|
|
21
|
-
public readonly workspace: ObservableWorkspace,
|
|
22
|
-
trace: (s: string) => void,
|
|
23
|
-
) {
|
|
24
|
-
super();
|
|
25
|
-
|
|
26
|
-
this._tracer = createTracer(['NES', 'RejectionCollector'], trace);
|
|
27
|
-
|
|
28
|
-
mapObservableArrayCached(this, workspace.openDocuments, (doc, store) => {
|
|
29
|
-
const state = new DocumentRejectionTracker(doc, this._garbageCollector, this._tracer);
|
|
30
|
-
this._documentCaches.set(state.doc.id, state);
|
|
31
|
-
|
|
32
|
-
store.add(autorunWithChanges(this, {
|
|
33
|
-
value: doc.value,
|
|
34
|
-
selection: doc.selection,
|
|
35
|
-
languageId: doc.languageId,
|
|
36
|
-
}, (data) => {
|
|
37
|
-
for (const edit of data.value.changes) {
|
|
38
|
-
state.handleEdit(edit, data.value.value);
|
|
39
|
-
}
|
|
40
|
-
}));
|
|
41
|
-
|
|
42
|
-
store.add(toDisposable(() => {
|
|
43
|
-
this._documentCaches.delete(doc.id);
|
|
44
|
-
}));
|
|
45
|
-
}).recomputeInitiallyAndOnChange(this._store);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
public reject(docId: DocumentId, edit: StringReplacement): void {
|
|
49
|
-
const docCache = this._documentCaches.get(docId);
|
|
50
|
-
if (!docCache) {
|
|
51
|
-
this._tracer.trace(`Rejecting, no document cache: ${edit}`);
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const e = edit.removeCommonSuffixAndPrefix(docCache.doc.value.get().value);
|
|
55
|
-
this._tracer.trace(`Rejecting: ${e}`);
|
|
56
|
-
docCache.reject(e);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public isRejected(docId: DocumentId, edit: StringReplacement): boolean {
|
|
60
|
-
const docCache = this._documentCaches.get(docId);
|
|
61
|
-
if (!docCache) {
|
|
62
|
-
this._tracer.trace(`Checking rejection, no document cache: ${edit}`);
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
const e = edit.removeCommonSuffixAndPrefix(docCache.doc.value.get().value);
|
|
66
|
-
const isRejected = docCache.isRejected(e);
|
|
67
|
-
this._tracer.trace(`Checking rejection, ${isRejected ? 'rejected' : 'not rejected'}: ${e}`);
|
|
68
|
-
return isRejected;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
public clear() {
|
|
72
|
-
this._garbageCollector.clear();
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
class DocumentRejectionTracker {
|
|
77
|
-
private readonly _rejectedEdits = new Set<RejectedEdit>();
|
|
78
|
-
|
|
79
|
-
constructor(
|
|
80
|
-
public readonly doc: IObservableDocument,
|
|
81
|
-
private readonly _garbageCollector: LRUGarbageCollector,
|
|
82
|
-
private readonly _tracer: ITracer,
|
|
83
|
-
) {
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public handleEdit(edit: StringEdit, currentContent: StringText): void {
|
|
87
|
-
for (const r of [...this._rejectedEdits]) {
|
|
88
|
-
r.handleEdit(edit, currentContent); // this can remove the rejected edit from the set
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
public reject(edit: StringReplacement): void {
|
|
93
|
-
if (this.isRejected(edit)) {
|
|
94
|
-
// already tracked
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const r = new RejectedEdit(edit.toEdit(), () => {
|
|
98
|
-
this._tracer.trace(`Evicting: ${edit}`);
|
|
99
|
-
this._rejectedEdits.delete(r);
|
|
100
|
-
});
|
|
101
|
-
this._rejectedEdits.add(r);
|
|
102
|
-
this._garbageCollector.put(r);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
public isRejected(edit: StringReplacement): boolean {
|
|
106
|
-
for (const r of this._rejectedEdits) {
|
|
107
|
-
if (r.isRejected(edit)) {
|
|
108
|
-
return true;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
class RejectedEdit implements IDisposable {
|
|
116
|
-
constructor(
|
|
117
|
-
private _edit: StringEdit,
|
|
118
|
-
private readonly _onDispose: () => void,
|
|
119
|
-
) { }
|
|
120
|
-
|
|
121
|
-
public handleEdit(edit: StringEdit, currentContent: StringText): void {
|
|
122
|
-
const d = this._edit.tryRebase(edit);
|
|
123
|
-
if (d) {
|
|
124
|
-
this._edit = d.removeCommonSuffixAndPrefix(currentContent.value);
|
|
125
|
-
} else {
|
|
126
|
-
this.dispose();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
public isRejected(edit: StringReplacement): boolean {
|
|
131
|
-
return this._edit.equals(edit.toEdit());
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
public dispose(): void {
|
|
135
|
-
this._onDispose();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
class LRUGarbageCollector implements IDisposable {
|
|
140
|
-
private _disposables: IDisposable[] = [];
|
|
141
|
-
|
|
142
|
-
constructor(
|
|
143
|
-
private _maxSize: number,
|
|
144
|
-
) {
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
put(disposable: IDisposable): void {
|
|
148
|
-
this._disposables.push(disposable);
|
|
149
|
-
if (this._disposables.length > this._maxSize) {
|
|
150
|
-
this._disposables.shift()!.dispose();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
public clear(): void {
|
|
155
|
-
for (const d of this._disposables) {
|
|
156
|
-
d.dispose();
|
|
157
|
-
}
|
|
158
|
-
this._disposables = [];
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public dispose(): void {
|
|
162
|
-
this.clear();
|
|
163
|
-
}
|
|
164
|
-
}
|
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
import { DocumentId } from '../../../platform/inlineEdits/common/dataTypes/documentId';
|
|
7
|
-
import { serializeStringEdit } from '../../../platform/inlineEdits/common/dataTypes/editUtils';
|
|
8
|
-
import { LanguageId } from '../../../platform/inlineEdits/common/dataTypes/languageId';
|
|
9
|
-
import { DebugRecorderBookmark } from '../../../platform/inlineEdits/common/debugRecorderBookmark';
|
|
10
|
-
import { ObservableWorkspace } from '../../../platform/inlineEdits/common/observableWorkspace';
|
|
11
|
-
import { autorunWithChanges } from '../../../platform/inlineEdits/common/utils/observable';
|
|
12
|
-
import { Instant, now } from '../../../platform/inlineEdits/common/utils/utils';
|
|
13
|
-
import { ISerializedOffsetRange, LogEntry } from '../../../platform/workspaceRecorder/common/workspaceLog';
|
|
14
|
-
import { compareBy, numberComparator } from '../../../util/vs/base/common/arrays';
|
|
15
|
-
import { Disposable, toDisposable } from '../../../util/vs/base/common/lifecycle';
|
|
16
|
-
import { Schemas } from '../../../util/vs/base/common/network';
|
|
17
|
-
import { mapObservableArrayCached } from '../../../util/vs/base/common/observableInternal';
|
|
18
|
-
import { relative } from '../../../util/vs/base/common/path';
|
|
19
|
-
import { URI } from '../../../util/vs/base/common/uri';
|
|
20
|
-
import { generateUuid } from '../../../util/vs/base/common/uuid';
|
|
21
|
-
import { StringEdit } from '../../../util/vs/editor/common/core/edits/stringEdit';
|
|
22
|
-
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
23
|
-
import { StringText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
24
|
-
|
|
25
|
-
export class DebugRecorder extends Disposable {
|
|
26
|
-
private _id: number = 0;
|
|
27
|
-
private readonly _documentHistories = new Map<DocumentId, DocumentHistory>();
|
|
28
|
-
|
|
29
|
-
private _workspaceRoot: URI | undefined;
|
|
30
|
-
|
|
31
|
-
constructor(
|
|
32
|
-
private readonly _workspace: ObservableWorkspace,
|
|
33
|
-
private readonly getNow = now
|
|
34
|
-
) {
|
|
35
|
-
super();
|
|
36
|
-
|
|
37
|
-
mapObservableArrayCached(this, this._workspace.openDocuments, (doc, store) => {
|
|
38
|
-
const root = this._workspace.getWorkspaceRoot(doc.id);
|
|
39
|
-
if (!root) {
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (!this._workspaceRoot) {
|
|
43
|
-
this._workspaceRoot = root;
|
|
44
|
-
} else {
|
|
45
|
-
if (this._workspaceRoot.toString() !== root.toString()) {
|
|
46
|
-
// document is from a different root -> ignore
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const state = new DocumentHistory(root, doc.id, doc.value.get().value, this._id++, doc.languageId.get(), () => this.getTimestamp());
|
|
52
|
-
this._documentHistories.set(state.docId, state);
|
|
53
|
-
|
|
54
|
-
store.add(autorunWithChanges(this, {
|
|
55
|
-
value: doc.value,
|
|
56
|
-
selection: doc.selection,
|
|
57
|
-
languageId: doc.languageId,
|
|
58
|
-
}, (data) => {
|
|
59
|
-
if (data.languageId.changes.length > 0) {
|
|
60
|
-
state.languageId = data.languageId.value;
|
|
61
|
-
}
|
|
62
|
-
for (const edit of data.value.changes) {
|
|
63
|
-
state.handleEdit(edit);
|
|
64
|
-
}
|
|
65
|
-
if (data.selection.changes.length > 0) {
|
|
66
|
-
state.handleSelections(data.selection.value);
|
|
67
|
-
}
|
|
68
|
-
}));
|
|
69
|
-
|
|
70
|
-
store.add(toDisposable(() => {
|
|
71
|
-
// We might want to soft-delete the document
|
|
72
|
-
this._documentHistories.delete(doc.id);
|
|
73
|
-
}));
|
|
74
|
-
}, d => d.id).recomputeInitiallyAndOnChange(this._store);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
private _lastTimestamp: number | undefined;
|
|
78
|
-
public getTimestamp(): number {
|
|
79
|
-
let newTimestamp = this.getNow();
|
|
80
|
-
if (this._lastTimestamp !== undefined && newTimestamp <= this._lastTimestamp) { // we want total ordering on the events
|
|
81
|
-
newTimestamp = this._lastTimestamp + 1;
|
|
82
|
-
}
|
|
83
|
-
this._lastTimestamp = newTimestamp;
|
|
84
|
-
return newTimestamp;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
public getRecentLog(bookmark: DebugRecorderBookmark | undefined = undefined): LogEntry[] | undefined {
|
|
88
|
-
if (!this._workspaceRoot) { // possible if the open file doesn't belong to a workspace
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const log: {
|
|
93
|
-
entry: LogEntry;
|
|
94
|
-
sortTime: number;
|
|
95
|
-
}[] = [];
|
|
96
|
-
|
|
97
|
-
log.push({ entry: { documentType: 'workspaceRecording@1.0', kind: 'header', repoRootUri: this._workspaceRoot.toString(), time: this.getNow(), uuid: generateUuid() }, sortTime: 0 });
|
|
98
|
-
|
|
99
|
-
for (const doc of this._documentHistories.values()) {
|
|
100
|
-
log.push(...doc.getDocumentLog(bookmark));
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
log.sort(compareBy(e => e.sortTime, numberComparator));
|
|
104
|
-
|
|
105
|
-
return log.map(l => l.entry);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public createBookmark(): DebugRecorderBookmark {
|
|
109
|
-
return new DebugRecorderBookmark(this.getNow());
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
class DocumentHistory {
|
|
114
|
-
private _baseValue: StringText;
|
|
115
|
-
/**
|
|
116
|
-
* Stores edits and selection changes in the order they happened.
|
|
117
|
-
*/
|
|
118
|
-
private _edits: ({
|
|
119
|
-
kind: 'edit';
|
|
120
|
-
edit: StringEdit;
|
|
121
|
-
instant: Instant;
|
|
122
|
-
} | {
|
|
123
|
-
kind: 'selections';
|
|
124
|
-
selections: readonly OffsetRange[];
|
|
125
|
-
instant: Instant;
|
|
126
|
-
})[] = [];
|
|
127
|
-
|
|
128
|
-
public readonly creationTime: number;
|
|
129
|
-
private _baseValueTime: number;
|
|
130
|
-
|
|
131
|
-
constructor(
|
|
132
|
-
public readonly workspaceUri: URI,
|
|
133
|
-
public readonly docId: DocumentId,
|
|
134
|
-
initialValue: string,
|
|
135
|
-
public readonly id: number,
|
|
136
|
-
public languageId: LanguageId,
|
|
137
|
-
private readonly getNow: () => Instant
|
|
138
|
-
) {
|
|
139
|
-
this._baseValue = new StringText(initialValue);
|
|
140
|
-
this.creationTime = this.getNow();
|
|
141
|
-
this._baseValueTime = this.creationTime;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public handleSelections(selections: readonly OffsetRange[]): void {
|
|
145
|
-
this._edits.push({ kind: 'selections', selections, instant: this.getNow() });
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
public handleEdit(edit: StringEdit): void {
|
|
149
|
-
if (edit.isEmpty()) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
this._edits.push({ kind: 'edit', edit, instant: this.getNow() });
|
|
154
|
-
|
|
155
|
-
this.cleanUpHistory();
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
public cleanUpHistory(): void {
|
|
159
|
-
const minuteMs = 60 * 1000;
|
|
160
|
-
const earliestTime = this.getNow() - 10 * minuteMs;
|
|
161
|
-
while (this._edits.length > 0 && this._edits[0].instant < earliestTime) {
|
|
162
|
-
const edit = this._edits.shift()!;
|
|
163
|
-
if (edit.kind === 'selections') {
|
|
164
|
-
continue; // we drop selection changes
|
|
165
|
-
}
|
|
166
|
-
this._baseValue = edit.edit.applyOnText(this._baseValue);
|
|
167
|
-
this._baseValueTime = edit.instant;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
private readonly relativePath = (() => {
|
|
172
|
-
const basePath = relative(this.workspaceUri.path, this.docId.path);
|
|
173
|
-
return this.docId.toUri().scheme === Schemas.vscodeNotebookCell ? `${basePath}#${this.docId.fragment}` : basePath;
|
|
174
|
-
})();
|
|
175
|
-
|
|
176
|
-
getDocumentLog(bookmark: DebugRecorderBookmark | undefined): { entry: LogEntry; sortTime: number }[] {
|
|
177
|
-
this.cleanUpHistory();
|
|
178
|
-
|
|
179
|
-
if (this._edits.length === 0) {
|
|
180
|
-
return [];
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
const log: { entry: LogEntry; sortTime: number }[] = [];
|
|
184
|
-
log.push({ entry: { kind: 'documentEncountered', id: this.id, relativePath: this.relativePath, time: this.creationTime }, sortTime: this.creationTime });
|
|
185
|
-
let docVersion = 1;
|
|
186
|
-
log.push({ entry: { kind: 'setContent', id: this.id, v: docVersion, content: this._baseValue.value, time: this._baseValueTime }, sortTime: this._baseValueTime });
|
|
187
|
-
log.push({ entry: { kind: 'opened', id: this.id, time: this._baseValueTime }, sortTime: this._baseValueTime });
|
|
188
|
-
|
|
189
|
-
for (const editOrSelectionChange of this._edits) {
|
|
190
|
-
if (bookmark && editOrSelectionChange.instant > bookmark.timeMs) {
|
|
191
|
-
// only considers edits that happened before the bookmark
|
|
192
|
-
break;
|
|
193
|
-
}
|
|
194
|
-
docVersion++;
|
|
195
|
-
if (editOrSelectionChange.kind === 'selections') {
|
|
196
|
-
const serializedOffsetRange: ISerializedOffsetRange[] = editOrSelectionChange.selections.map(s => [s.start, s.endExclusive]);
|
|
197
|
-
log.push({ entry: { kind: 'selectionChanged', id: this.id, selection: serializedOffsetRange, time: editOrSelectionChange.instant }, sortTime: editOrSelectionChange.instant });
|
|
198
|
-
} else {
|
|
199
|
-
log.push({ entry: { kind: 'changed', id: this.id, v: docVersion, edit: serializeStringEdit(editOrSelectionChange.edit), time: editOrSelectionChange.instant }, sortTime: editOrSelectionChange.instant });
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
return log;
|
|
204
|
-
}
|
|
205
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
import { StatelessNextEditDocument } from '../../../platform/inlineEdits/common/statelessNextEditProvider';
|
|
7
|
-
import { coalesce } from '../../../util/vs/base/common/arrays';
|
|
8
|
-
import { LineReplacement } from '../../../util/vs/editor/common/core/edits/lineEdit';
|
|
9
|
-
import { isImportStatement } from '../../prompt/common/importStatement';
|
|
10
|
-
|
|
11
|
-
export class IgnoreImportChangesAspect {
|
|
12
|
-
public static isImportChange(edit: LineReplacement, languageId: string, lines: string[]): boolean {
|
|
13
|
-
return edit.newLines.some(l => isImportStatement(l, languageId)) || getOldLines(edit, lines).some(l => isImportStatement(l, languageId));
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public static filterEdit(resultDocument: StatelessNextEditDocument, singleEdits: readonly LineReplacement[]): readonly LineReplacement[] {
|
|
17
|
-
const languageId = resultDocument.languageId;
|
|
18
|
-
const filteredEdits = singleEdits.filter(e => !IgnoreImportChangesAspect.isImportChange(e, languageId, resultDocument.documentLinesBeforeEdit));
|
|
19
|
-
return filteredEdits;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function getOldLines(edit: LineReplacement, lines: string[]): string[] {
|
|
24
|
-
return coalesce(edit.lineRange.mapToLineArray<string | undefined>(l => lines[l - 1]));
|
|
25
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
export interface INesConfigs {
|
|
7
|
-
isAsyncCompletions: boolean;
|
|
8
|
-
isRevisedCacheStrategy: boolean;
|
|
9
|
-
isCacheTracksRejections: boolean;
|
|
10
|
-
isRecentlyShownCacheEnabled: boolean;
|
|
11
|
-
debounceUseCoreRequestTime: boolean;
|
|
12
|
-
}
|
|
@@ -1,278 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
|
|
6
|
-
import { DocumentId } from '../../../platform/inlineEdits/common/dataTypes/documentId';
|
|
7
|
-
import { IObservableDocument, ObservableWorkspace } from '../../../platform/inlineEdits/common/observableWorkspace';
|
|
8
|
-
import { autorunWithChanges } from '../../../platform/inlineEdits/common/utils/observable';
|
|
9
|
-
import { ILogService } from '../../../platform/log/common/logService';
|
|
10
|
-
import { LRUCache } from '../../../util/common/cache';
|
|
11
|
-
import { createTracer, ITracer } from '../../../util/common/tracing';
|
|
12
|
-
import { Disposable, toDisposable } from '../../../util/vs/base/common/lifecycle';
|
|
13
|
-
import { mapObservableArrayCached } from '../../../util/vs/base/common/observableInternal';
|
|
14
|
-
import { AnnotatedStringReplacement, StringEdit, StringReplacement } from '../../../util/vs/editor/common/core/edits/stringEdit';
|
|
15
|
-
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
16
|
-
import { StringText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
17
|
-
import { checkEditConsistency, EditDataWithIndex, tryRebase } from '../common/editRebase';
|
|
18
|
-
import { INesConfigs } from './nesConfigs';
|
|
19
|
-
import { NextEditFetchRequest } from './nextEditProvider';
|
|
20
|
-
|
|
21
|
-
export interface CachedEdit {
|
|
22
|
-
docId: DocumentId;
|
|
23
|
-
documentBeforeEdit: StringText;
|
|
24
|
-
editWindow?: OffsetRange;
|
|
25
|
-
edit?: StringReplacement;
|
|
26
|
-
edits?: StringReplacement[];
|
|
27
|
-
detailedEdits: AnnotatedStringReplacement<EditDataWithIndex>[][];
|
|
28
|
-
userEditSince?: StringEdit;
|
|
29
|
-
rebaseFailed?: boolean;
|
|
30
|
-
rejected?: boolean;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* When caching multiple edits, this is the order in which they were applied.
|
|
34
|
-
*/
|
|
35
|
-
subsequentN?: number;
|
|
36
|
-
source: NextEditFetchRequest;
|
|
37
|
-
cacheTime: number;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export type CachedOrRebasedEdit = CachedEdit & { rebasedEdit?: StringReplacement; rebasedEditIndex?: number };
|
|
41
|
-
|
|
42
|
-
export class NextEditCache extends Disposable {
|
|
43
|
-
private readonly _documentCaches = new Map<DocumentId, DocumentEditCache>();
|
|
44
|
-
private readonly _sharedCache = new LRUCache<CachedEdit>(50);
|
|
45
|
-
|
|
46
|
-
constructor(
|
|
47
|
-
public readonly workspace: ObservableWorkspace,
|
|
48
|
-
private readonly _logService: ILogService,
|
|
49
|
-
) {
|
|
50
|
-
super();
|
|
51
|
-
|
|
52
|
-
mapObservableArrayCached(this, workspace.openDocuments, (doc, store) => {
|
|
53
|
-
const state = new DocumentEditCache(this, doc.id, doc, this._sharedCache, this._logService);
|
|
54
|
-
this._documentCaches.set(state.docId, state);
|
|
55
|
-
|
|
56
|
-
store.add(autorunWithChanges(this, {
|
|
57
|
-
value: doc.value,
|
|
58
|
-
}, (data) => {
|
|
59
|
-
for (const edit of data.value.changes) {
|
|
60
|
-
if (!edit.isEmpty()) {
|
|
61
|
-
state.handleEdit(edit);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}));
|
|
65
|
-
|
|
66
|
-
store.add(toDisposable(() => {
|
|
67
|
-
this._documentCaches.delete(doc.id);
|
|
68
|
-
}));
|
|
69
|
-
}).recomputeInitiallyAndOnChange(this._store);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
public setKthNextEdit(docId: DocumentId, documentContents: StringText, editWindow: OffsetRange | undefined, nextEdit: StringReplacement, subsequentN: number, nextEdits: StringReplacement[] | undefined, userEditSince: StringEdit | undefined, source: NextEditFetchRequest): CachedEdit | undefined {
|
|
73
|
-
const docCache = this._documentCaches.get(docId);
|
|
74
|
-
if (!docCache) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
return docCache.setKthNextEdit(documentContents, editWindow, nextEdit, nextEdits, userEditSince, subsequentN, source);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
public setNoNextEdit(docId: DocumentId, documentContents: StringText, editWindow: OffsetRange | undefined, source: NextEditFetchRequest, nesConfigs: INesConfigs) {
|
|
81
|
-
const docCache = this._documentCaches.get(docId);
|
|
82
|
-
if (!docCache) {
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
docCache.setNoNextEdit(documentContents, editWindow, source, nesConfigs);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
public lookupNextEdit(docId: DocumentId, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[], nesConfigs: INesConfigs): CachedOrRebasedEdit | undefined {
|
|
89
|
-
const docCache = this._documentCaches.get(docId);
|
|
90
|
-
if (!docCache) {
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
return docCache.lookupNextEdit(currentDocumentContents, currentSelection, nesConfigs);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
public tryRebaseCacheEntry(cachedEdit: CachedEdit, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[], nesConfigs: INesConfigs): CachedOrRebasedEdit | undefined {
|
|
97
|
-
const docCache = this._documentCaches.get(cachedEdit.docId);
|
|
98
|
-
if (!docCache) {
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
return docCache.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection, nesConfigs);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
public rejectedNextEdit(requestId: string): void {
|
|
105
|
-
this._sharedCache.getValues()
|
|
106
|
-
.filter(v => v.source.headerRequestId === requestId)
|
|
107
|
-
.forEach(v => v.rejected = true);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
public isRejectedNextEdit(docId: DocumentId, currentDocumentContents: StringText, edit: StringReplacement, nesConfigs: INesConfigs) {
|
|
111
|
-
const docCache = this._documentCaches.get(docId);
|
|
112
|
-
if (!docCache) {
|
|
113
|
-
return false;
|
|
114
|
-
}
|
|
115
|
-
return docCache.isRejectedNextEdit(currentDocumentContents, edit, nesConfigs);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
public evictedCachedEdit(cachedEdit: CachedEdit) {
|
|
119
|
-
const docCache = this._documentCaches.get(cachedEdit.docId);
|
|
120
|
-
if (docCache) {
|
|
121
|
-
docCache.evictedCachedEdit(cachedEdit);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
public clear() {
|
|
126
|
-
this._documentCaches.forEach(cache => cache.clear());
|
|
127
|
-
this._sharedCache.clear();
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
class DocumentEditCache {
|
|
132
|
-
|
|
133
|
-
private readonly _trackedCachedEdits: CachedEdit[] = [];
|
|
134
|
-
private _tracer: ITracer;
|
|
135
|
-
|
|
136
|
-
constructor(
|
|
137
|
-
private readonly _nextEditCache: NextEditCache,
|
|
138
|
-
public readonly docId: DocumentId,
|
|
139
|
-
private readonly _doc: IObservableDocument,
|
|
140
|
-
private readonly _sharedCache: LRUCache<CachedEdit>,
|
|
141
|
-
private readonly _logService: ILogService,
|
|
142
|
-
) {
|
|
143
|
-
this._tracer = createTracer(['NES', 'DocumentEditCache'], (s) => this._logService.trace(s));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
public handleEdit(edit: StringEdit): void {
|
|
147
|
-
const tracer = this._tracer.sub('handleEdit');
|
|
148
|
-
for (const cachedEdit of this._trackedCachedEdits) {
|
|
149
|
-
if (cachedEdit.userEditSince) {
|
|
150
|
-
cachedEdit.userEditSince = cachedEdit.userEditSince.compose(edit);
|
|
151
|
-
cachedEdit.rebaseFailed = false;
|
|
152
|
-
if (!checkEditConsistency(cachedEdit.documentBeforeEdit.value, cachedEdit.userEditSince, this._doc.value.get().value, tracer)) {
|
|
153
|
-
cachedEdit.userEditSince = undefined;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
public evictedCachedEdit(cachedEdit: CachedEdit) {
|
|
160
|
-
const index = this._trackedCachedEdits.indexOf(cachedEdit);
|
|
161
|
-
if (index !== -1) {
|
|
162
|
-
this._trackedCachedEdits.splice(index, 1);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
public clear() {
|
|
167
|
-
this._trackedCachedEdits.length = 0;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
public setKthNextEdit(documentContents: StringText, editWindow: OffsetRange | undefined, nextEdit: StringReplacement, nextEdits: StringReplacement[] | undefined, userEditSince: StringEdit | undefined, subsequentN: number, source: NextEditFetchRequest): CachedEdit {
|
|
171
|
-
const key = this._getKey(documentContents.value);
|
|
172
|
-
const cachedEdit: CachedEdit = { docId: this.docId, edit: nextEdit, edits: nextEdits, detailedEdits: [], userEditSince, subsequentN, source, documentBeforeEdit: documentContents, editWindow, cacheTime: Date.now() };
|
|
173
|
-
if (userEditSince) {
|
|
174
|
-
if (!checkEditConsistency(cachedEdit.documentBeforeEdit.value, userEditSince, this._doc.value.get().value, this._tracer.sub('setKthNextEdit'))) {
|
|
175
|
-
cachedEdit.userEditSince = undefined;
|
|
176
|
-
} else {
|
|
177
|
-
this._trackedCachedEdits.unshift(cachedEdit);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
const existing = this._sharedCache.get(key);
|
|
181
|
-
if (existing) {
|
|
182
|
-
this.evictedCachedEdit(existing);
|
|
183
|
-
}
|
|
184
|
-
const evicted = this._sharedCache.put(key, cachedEdit);
|
|
185
|
-
if (evicted) {
|
|
186
|
-
this._nextEditCache.evictedCachedEdit(evicted[1]);
|
|
187
|
-
}
|
|
188
|
-
return cachedEdit;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
public setNoNextEdit(documentContents: StringText, editWindow: OffsetRange | undefined, source: NextEditFetchRequest, nesConfigs: INesConfigs) {
|
|
192
|
-
const key = this._getKey(documentContents.value);
|
|
193
|
-
const cachedEdit: CachedEdit = { docId: this.docId, edits: [], detailedEdits: [], source, documentBeforeEdit: documentContents, editWindow, cacheTime: Date.now() };
|
|
194
|
-
const existing = this._sharedCache.get(key);
|
|
195
|
-
if (existing) {
|
|
196
|
-
this.evictedCachedEdit(existing);
|
|
197
|
-
}
|
|
198
|
-
const evicted = this._sharedCache.put(key, cachedEdit);
|
|
199
|
-
if (evicted) {
|
|
200
|
-
this._nextEditCache.evictedCachedEdit(evicted[1]);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
public lookupNextEdit(currentDocumentContents: StringText, currentSelection: readonly OffsetRange[], nesConfigs: INesConfigs): CachedOrRebasedEdit | undefined {
|
|
205
|
-
// TODO@chrmarti: Update entries i > 1 with user edits and edit window and start tracking.
|
|
206
|
-
const key = this._getKey(currentDocumentContents.value);
|
|
207
|
-
const cachedEdit = this._sharedCache.get(key);
|
|
208
|
-
if (cachedEdit) {
|
|
209
|
-
const editWindow = cachedEdit.editWindow;
|
|
210
|
-
const cursorRange = currentSelection[0];
|
|
211
|
-
if (editWindow && cursorRange && !editWindow.containsRange(cursorRange)) {
|
|
212
|
-
return undefined;
|
|
213
|
-
}
|
|
214
|
-
return cachedEdit;
|
|
215
|
-
}
|
|
216
|
-
if (!nesConfigs.isRevisedCacheStrategy) {
|
|
217
|
-
return undefined;
|
|
218
|
-
}
|
|
219
|
-
for (const cachedEdit of this._trackedCachedEdits) {
|
|
220
|
-
const rebased = this.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection, nesConfigs);
|
|
221
|
-
if (rebased) {
|
|
222
|
-
return rebased;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return undefined;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
public tryRebaseCacheEntry(cachedEdit: CachedEdit, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[], nesConfigs: INesConfigs) {
|
|
229
|
-
const tracer = this._tracer.sub('tryRebaseCacheEntry');
|
|
230
|
-
if (cachedEdit.userEditSince && !cachedEdit.rebaseFailed) {
|
|
231
|
-
const originalEdits = cachedEdit.edits || (cachedEdit.edit ? [cachedEdit.edit] : []);
|
|
232
|
-
const res = tryRebase(cachedEdit.documentBeforeEdit.value, cachedEdit.editWindow, originalEdits, cachedEdit.detailedEdits, cachedEdit.userEditSince, currentDocumentContents.value, currentSelection, 'strict', tracer, nesConfigs);
|
|
233
|
-
if (res === 'rebaseFailed') {
|
|
234
|
-
cachedEdit.rebaseFailed = true;
|
|
235
|
-
} else if (res === 'inconsistentEdits' || res === 'error') {
|
|
236
|
-
cachedEdit.userEditSince = undefined;
|
|
237
|
-
} else if (res === 'outsideEditWindow') {
|
|
238
|
-
// miss
|
|
239
|
-
} else if (res.length) {
|
|
240
|
-
if (!cachedEdit.rejected && this.isRejectedNextEdit(currentDocumentContents, res[0].rebasedEdit, nesConfigs)) {
|
|
241
|
-
cachedEdit.rejected = true;
|
|
242
|
-
}
|
|
243
|
-
return { ...cachedEdit, ...res[0] };
|
|
244
|
-
} else if (!originalEdits.length) {
|
|
245
|
-
return cachedEdit; // cached 'no edits'
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
return undefined;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
public isRejectedNextEdit(currentDocumentContents: StringText, edit: StringReplacement, nesConfigs: INesConfigs) {
|
|
252
|
-
const tracer = this._tracer.sub('isRejectedNextEdit');
|
|
253
|
-
const resultEdit = edit.removeCommonSuffixAndPrefix(currentDocumentContents.value);
|
|
254
|
-
for (const rejectedEdit of this._trackedCachedEdits.filter(edit => edit.rejected)) {
|
|
255
|
-
if (!rejectedEdit.userEditSince) {
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
const edits = rejectedEdit.edits || (rejectedEdit.edit ? [rejectedEdit.edit] : []);
|
|
259
|
-
if (!edits.length) {
|
|
260
|
-
continue; // cached 'no edits'
|
|
261
|
-
}
|
|
262
|
-
const rejectedEdits = tryRebase(rejectedEdit.documentBeforeEdit.value, undefined, edits, rejectedEdit.detailedEdits, rejectedEdit.userEditSince, currentDocumentContents.value, [], 'lenient', tracer, nesConfigs);
|
|
263
|
-
if (typeof rejectedEdits === 'string') {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
const rejected = rejectedEdits.some(rejected => rejected.rebasedEdit.removeCommonSuffixAndPrefix(currentDocumentContents.value).equals(resultEdit));
|
|
267
|
-
if (rejected) {
|
|
268
|
-
tracer.trace('Found rejected edit that matches current edit');
|
|
269
|
-
return true;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return false;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
private _getKey(val: string): string {
|
|
276
|
-
return JSON.stringify([this.docId.uri, val]);
|
|
277
|
-
}
|
|
278
|
-
}
|