@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,268 +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 { SingleEdits } from '../../../platform/inlineEdits/common/dataTypes/edit';
|
|
7
|
-
import * as errors from '../../../util/common/errors';
|
|
8
|
-
import { ITracer } from '../../../util/common/tracing';
|
|
9
|
-
import { AnnotatedStringEdit, AnnotatedStringReplacement, IEditData, StringEdit, StringReplacement, VoidEditData } from '../../../util/vs/editor/common/core/edits/stringEdit';
|
|
10
|
-
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
11
|
-
import { StringText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
12
|
-
import { DefaultLinesDiffComputer } from '../../../util/vs/editor/common/diff/defaultLinesDiffComputer/defaultLinesDiffComputer';
|
|
13
|
-
import { ILinesDiffComputerOptions } from '../../../util/vs/editor/common/diff/linesDiffComputer';
|
|
14
|
-
|
|
15
|
-
const TROUBLESHOOT_EDIT_CONSISTENCY = false;
|
|
16
|
-
|
|
17
|
-
export interface NesRebaseConfigs {
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export class EditDataWithIndex implements IEditData<EditDataWithIndex> {
|
|
21
|
-
constructor(
|
|
22
|
-
public readonly index: number
|
|
23
|
-
) { }
|
|
24
|
-
|
|
25
|
-
join(data: EditDataWithIndex): EditDataWithIndex | undefined {
|
|
26
|
-
if (this.index !== data.index) {
|
|
27
|
-
return undefined;
|
|
28
|
-
}
|
|
29
|
-
return this;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function tryRebase(originalDocument: string, editWindow: OffsetRange | undefined, originalEdits: readonly StringReplacement[], detailedEdits: AnnotatedStringReplacement<EditDataWithIndex>[][], userEditSince: StringEdit, currentDocumentContent: string, currentSelection: readonly OffsetRange[], resolution: 'strict' | 'lenient', tracer: ITracer, nesConfigs: NesRebaseConfigs = {}): { rebasedEdit: StringReplacement; rebasedEditIndex: number }[] | 'outsideEditWindow' | 'rebaseFailed' | 'error' | 'inconsistentEdits' {
|
|
34
|
-
const start = Date.now();
|
|
35
|
-
try {
|
|
36
|
-
return _tryRebase(originalDocument, editWindow, originalEdits, detailedEdits, userEditSince, currentDocumentContent, currentSelection, resolution, tracer, nesConfigs);
|
|
37
|
-
} catch (err) {
|
|
38
|
-
tracer.trace(`Rebase error: ${errors.toString(err)}`);
|
|
39
|
-
return 'error';
|
|
40
|
-
} finally {
|
|
41
|
-
tracer.trace(`Rebase duration: ${Date.now() - start}ms`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function _tryRebase(originalDocument: string, editWindow: OffsetRange | undefined, originalEdits: readonly StringReplacement[], detailedEdits: AnnotatedStringReplacement<EditDataWithIndex>[][], userEditSinceOrig: StringEdit, currentDocumentContent: string, currentSelection: readonly OffsetRange[], resolution: 'strict' | 'lenient', tracer: ITracer, nesConfigs: NesRebaseConfigs) {
|
|
46
|
-
if (!checkEditConsistency(originalDocument, userEditSinceOrig, currentDocumentContent, tracer, true)) {
|
|
47
|
-
return 'inconsistentEdits';
|
|
48
|
-
}
|
|
49
|
-
const userEditSince = userEditSinceOrig.removeCommonSuffixAndPrefix(originalDocument);
|
|
50
|
-
const cursorRange = currentSelection[0];
|
|
51
|
-
if (editWindow && cursorRange) {
|
|
52
|
-
const updatedEditWindow = userEditSince.applyToOffsetRangeOrUndefined(editWindow);
|
|
53
|
-
if (!updatedEditWindow?.containsRange(cursorRange)) {
|
|
54
|
-
return 'outsideEditWindow';
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
if (detailedEdits.length < originalEdits.length) {
|
|
58
|
-
let intermediateDocument = originalDocument;
|
|
59
|
-
for (let index = 0; index < detailedEdits.length; index++) {
|
|
60
|
-
const edit = originalEdits[index];
|
|
61
|
-
intermediateDocument = StringEdit.single(edit).apply(intermediateDocument);
|
|
62
|
-
}
|
|
63
|
-
for (let index = detailedEdits.length; index < originalEdits.length; index++) {
|
|
64
|
-
const edit = originalEdits[index];
|
|
65
|
-
const editData = new EditDataWithIndex(index);
|
|
66
|
-
detailedEdits[index] = computeDiff(edit.replaceRange.substring(intermediateDocument), edit.newText, edit.replaceRange.start, editData, {
|
|
67
|
-
ignoreTrimWhitespace: false,
|
|
68
|
-
computeMoves: false,
|
|
69
|
-
extendToSubwords: true,
|
|
70
|
-
maxComputationTimeMs: 500,
|
|
71
|
-
}) || [new AnnotatedStringReplacement(edit.replaceRange, edit.newText, editData)];
|
|
72
|
-
intermediateDocument = StringEdit.single(edit).apply(intermediateDocument);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const diffedEdit = AnnotatedStringEdit.compose(detailedEdits.map(edits => AnnotatedStringEdit.create(edits)));
|
|
76
|
-
const rebasedEdit = tryRebaseEdits(originalDocument, diffedEdit, userEditSince, resolution, nesConfigs);
|
|
77
|
-
if (!rebasedEdit) {
|
|
78
|
-
return 'rebaseFailed';
|
|
79
|
-
}
|
|
80
|
-
const grouped = rebasedEdit.replacements.reduce((acc, item) => {
|
|
81
|
-
(acc[item.data.index] ||= []).push(item);
|
|
82
|
-
return acc;
|
|
83
|
-
}, [] as (AnnotatedStringReplacement<EditDataWithIndex>[] | undefined)[]);
|
|
84
|
-
const resultEdits: { rebasedEdit: StringReplacement; rebasedEditIndex: number }[] = [];
|
|
85
|
-
for (let index = 0; index < grouped.length; index++) {
|
|
86
|
-
const group = grouped[index];
|
|
87
|
-
if (!group) {
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
const range = OffsetRange.fromTo(group[0].replaceRange.start, group[group.length - 1].replaceRange.endExclusive);
|
|
91
|
-
const newText = group.map((edit, i, a) => {
|
|
92
|
-
if (i > 0) {
|
|
93
|
-
return currentDocumentContent.substring(a[i - 1].replaceRange.endExclusive, edit.replaceRange.start) + edit.newText;
|
|
94
|
-
} else {
|
|
95
|
-
return edit.newText;
|
|
96
|
-
}
|
|
97
|
-
}).join('');
|
|
98
|
-
const resultEdit = StringReplacement.replace(range, newText);
|
|
99
|
-
if (!resultEdit.removeCommonSuffixAndPrefix(currentDocumentContent).isEmpty) {
|
|
100
|
-
resultEdits.push({ rebasedEdit: resultEdit, rebasedEditIndex: index });
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
if (resolution === 'strict' && resultEdits.length > 0 && new SingleEdits(originalEdits).apply(originalDocument) !== StringEdit.create(resultEdits.map(r => r.rebasedEdit)).apply(currentDocumentContent)) {
|
|
104
|
-
tracer.trace('Result consistency check failed.');
|
|
105
|
-
return 'inconsistentEdits';
|
|
106
|
-
}
|
|
107
|
-
return resultEdits;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export function checkEditConsistency(original: string, edit: StringEdit, current: string, tracer: ITracer, enabled = TROUBLESHOOT_EDIT_CONSISTENCY) {
|
|
111
|
-
if (!enabled) {
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
const consistent = edit.apply(original) === current;
|
|
115
|
-
if (!consistent) {
|
|
116
|
-
tracer.trace('Edit consistency check failed.');
|
|
117
|
-
}
|
|
118
|
-
return consistent;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export function tryRebaseStringEdits<T extends IEditData<T>>(content: string, ours: StringEdit, base: StringEdit, resolution: 'strict' | 'lenient', nesConfigs: NesRebaseConfigs = {}): StringEdit | undefined {
|
|
122
|
-
return tryRebaseEdits(content, ours.mapData(r => new VoidEditData()), base, resolution, nesConfigs)?.toStringEdit();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function tryRebaseEdits<T extends IEditData<T>>(content: string, ours: AnnotatedStringEdit<T>, baseOrig: StringEdit, resolution: 'strict' | 'lenient', nesConfigs: NesRebaseConfigs): AnnotatedStringEdit<T> | undefined {
|
|
126
|
-
const base = baseOrig.removeCommonSuffixAndPrefix(content);
|
|
127
|
-
|
|
128
|
-
const newEdits: AnnotatedStringReplacement<T>[] = [];
|
|
129
|
-
|
|
130
|
-
let baseIdx = 0;
|
|
131
|
-
let ourIdx = 0;
|
|
132
|
-
let offset = 0;
|
|
133
|
-
|
|
134
|
-
while (ourIdx < ours.replacements.length || baseIdx < base.replacements.length) {
|
|
135
|
-
// take the edit that starts first
|
|
136
|
-
const baseEdit = base.replacements[baseIdx];
|
|
137
|
-
const ourEdit = ours.replacements[ourIdx];
|
|
138
|
-
|
|
139
|
-
if (!ourEdit) {
|
|
140
|
-
if (resolution === 'strict') {
|
|
141
|
-
// baseEdit does not match but interleaves
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
// We processed all our edits
|
|
145
|
-
break;
|
|
146
|
-
} else if (!baseEdit) {
|
|
147
|
-
// no more edits from base
|
|
148
|
-
newEdits.push(ourEdit.delta(offset));
|
|
149
|
-
ourIdx++;
|
|
150
|
-
} else {
|
|
151
|
-
let ourE = ourEdit;
|
|
152
|
-
if (!ourE.replaceRange.containsRange(baseEdit.replaceRange)) {
|
|
153
|
-
// Try to shift our edit to include the base edit.
|
|
154
|
-
if (ourE.replaceRange.start > baseEdit.replaceRange.start) {
|
|
155
|
-
// Expand our edit to the left to include the base edit.
|
|
156
|
-
const added = content.substring(baseEdit.replaceRange.start, ourE.replaceRange.start);
|
|
157
|
-
const updated = added + ourE.newText;
|
|
158
|
-
// Remove the same text from the right.
|
|
159
|
-
if (updated.endsWith(added)) {
|
|
160
|
-
ourE = new AnnotatedStringReplacement(
|
|
161
|
-
OffsetRange.fromTo(baseEdit.replaceRange.start, ourE.replaceRange.endExclusive - added.length),
|
|
162
|
-
updated.substring(0, updated.length - added.length),
|
|
163
|
-
ourE.data,
|
|
164
|
-
);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
// Skipping the case where there is another edit for now because we might have to merge with it first.
|
|
168
|
-
else if (ourIdx === ours.replacements.length - 1 && ourE.replaceRange.endExclusive < baseEdit.replaceRange.endExclusive) {
|
|
169
|
-
// Expand our edit to the right to include the base edit.
|
|
170
|
-
const added = content.substring(ourE.replaceRange.endExclusive, baseEdit.replaceRange.endExclusive);
|
|
171
|
-
const updated = ourE.newText + added;
|
|
172
|
-
// Remove the same text from the left.
|
|
173
|
-
if (updated.startsWith(added)) {
|
|
174
|
-
ourE = new AnnotatedStringReplacement(
|
|
175
|
-
OffsetRange.fromTo(ourE.replaceRange.start + added.length, baseEdit.replaceRange.endExclusive),
|
|
176
|
-
updated.substring(added.length),
|
|
177
|
-
ourE.data,
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (ourE.replaceRange.intersectsOrTouches(baseEdit.replaceRange)) {
|
|
183
|
-
if (ourE.replaceRange.containsRange(baseEdit.replaceRange) && ourE.newText.length >= baseEdit.newText.length) {
|
|
184
|
-
let delta = 0;
|
|
185
|
-
let ourNewTextOffset = 0;
|
|
186
|
-
let baseE = baseEdit;
|
|
187
|
-
let previousBaseE: StringReplacement | undefined;
|
|
188
|
-
while (baseE && ourE.replaceRange.containsRange(baseE.replaceRange)) {
|
|
189
|
-
ourNewTextOffset = agreementIndexOf(content, ourE, baseE, previousBaseE, ourNewTextOffset, resolution, nesConfigs);
|
|
190
|
-
if (ourNewTextOffset === -1) {
|
|
191
|
-
// Conflicting
|
|
192
|
-
return undefined;
|
|
193
|
-
}
|
|
194
|
-
delta += baseE.newText.length - baseE.replaceRange.length;
|
|
195
|
-
previousBaseE = baseE;
|
|
196
|
-
baseE = base.replacements[++baseIdx];
|
|
197
|
-
}
|
|
198
|
-
newEdits.push(new AnnotatedStringReplacement(
|
|
199
|
-
new OffsetRange(ourE.replaceRange.start + offset, ourE.replaceRange.endExclusive + offset + delta),
|
|
200
|
-
ourE.newText,
|
|
201
|
-
ourE.data,
|
|
202
|
-
));
|
|
203
|
-
ourIdx++;
|
|
204
|
-
offset += delta;
|
|
205
|
-
} else {
|
|
206
|
-
// Conflicting
|
|
207
|
-
return undefined;
|
|
208
|
-
}
|
|
209
|
-
} else if (ourEdit.replaceRange.start < baseEdit.replaceRange.start) {
|
|
210
|
-
// Our edit starts first
|
|
211
|
-
newEdits.push(new AnnotatedStringReplacement(
|
|
212
|
-
ourEdit.replaceRange.delta(offset),
|
|
213
|
-
ourEdit.newText,
|
|
214
|
-
ourEdit.data,
|
|
215
|
-
));
|
|
216
|
-
ourIdx++;
|
|
217
|
-
} else {
|
|
218
|
-
if (resolution === 'strict') {
|
|
219
|
-
// baseEdit does not match but interleaves
|
|
220
|
-
return undefined;
|
|
221
|
-
}
|
|
222
|
-
baseIdx++;
|
|
223
|
-
offset += baseEdit.newText.length - baseEdit.replaceRange.length;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return AnnotatedStringEdit.create(newEdits);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
export const maxAgreementOffset = 10; // If the user's typing is more than this into the suggestion we consider it a miss.
|
|
232
|
-
export const maxImperfectAgreementLength = 5; // If the user's typing is longer than this and the suggestion is not a perfect match we consider it a miss.
|
|
233
|
-
|
|
234
|
-
function agreementIndexOf<T extends IEditData<T>>(content: string, ourE: AnnotatedStringReplacement<T>, baseE: StringReplacement, previousBaseE: StringReplacement | undefined, ourNewTextOffset: number, resolution: 'strict' | 'lenient', nesConfigs: NesRebaseConfigs) {
|
|
235
|
-
const minStart = previousBaseE ? previousBaseE.replaceRange.endExclusive : ourE.replaceRange.start;
|
|
236
|
-
if (minStart < baseE.replaceRange.start) {
|
|
237
|
-
baseE = new StringReplacement(
|
|
238
|
-
OffsetRange.fromTo(minStart, baseE.replaceRange.endExclusive),
|
|
239
|
-
content.substring(minStart, baseE.replaceRange.start) + baseE.newText
|
|
240
|
-
);
|
|
241
|
-
}
|
|
242
|
-
const j = ourE.newText.indexOf(baseE.newText, ourNewTextOffset);
|
|
243
|
-
if (resolution === 'strict' && j > maxAgreementOffset) {
|
|
244
|
-
return -1;
|
|
245
|
-
}
|
|
246
|
-
if (resolution === 'strict' && j > 0 && baseE.newText.length > maxImperfectAgreementLength) {
|
|
247
|
-
return -1;
|
|
248
|
-
}
|
|
249
|
-
return j !== -1 ? j + baseE.newText.length : -1;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
function computeDiff(original: string, modified: string, offset: number, editData: EditDataWithIndex, options: ILinesDiffComputerOptions): AnnotatedStringReplacement<EditDataWithIndex>[] | undefined {
|
|
253
|
-
const originalLines = original.split(/\r\n|\r|\n/);
|
|
254
|
-
const modifiedLines = modified.split(/\r\n|\r|\n/);
|
|
255
|
-
const diffComputer = new DefaultLinesDiffComputer();
|
|
256
|
-
const result = diffComputer.computeDiff(originalLines, modifiedLines, options);
|
|
257
|
-
if (result.hitTimeout) {
|
|
258
|
-
return undefined;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
const originalText = new StringText(original);
|
|
262
|
-
const modifiedText = new StringText(modified);
|
|
263
|
-
return result.changes.map(change => (change.innerChanges || []).map(innerChange => {
|
|
264
|
-
const range = originalText.getTransformer().getOffsetRange(innerChange.originalRange);
|
|
265
|
-
const newText = modifiedText.getValueOfRange(innerChange.modifiedRange);
|
|
266
|
-
return new AnnotatedStringReplacement(range.delta(offset), newText, editData);
|
|
267
|
-
})).flat();
|
|
268
|
-
}
|
|
@@ -1,163 +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 { LineEdit } from '../../../util/vs/editor/common/core/edits/lineEdit';
|
|
8
|
-
import { StringEdit } from '../../../util/vs/editor/common/core/edits/stringEdit';
|
|
9
|
-
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
10
|
-
|
|
11
|
-
const N_GRAM_UNDO_RATIO_TO_FILTER_OUT = 0.7;
|
|
12
|
-
|
|
13
|
-
export function editWouldDeleteWhatWasJustInserted(activeDocument: StatelessNextEditDocument, lineEdit: LineEdit) {
|
|
14
|
-
let edit = lineEdit.toEdit(activeDocument.documentAfterEdits);
|
|
15
|
-
// ! important: reduce it to the minimal set of changes
|
|
16
|
-
edit = edit.normalizeOnSource(activeDocument.documentAfterEdits.value);
|
|
17
|
-
if (!editIsDeletion(edit)) {
|
|
18
|
-
return false;
|
|
19
|
-
}
|
|
20
|
-
// We are deleting something. Is it what was just inserted?
|
|
21
|
-
for (let i = activeDocument.recentEdits.edits.length - 1; i >= 0; i--) {
|
|
22
|
-
const recentEdit = activeDocument.recentEdits.edits[i];
|
|
23
|
-
const rebaseResult = edit.tryRebase(recentEdit);
|
|
24
|
-
if (!rebaseResult) {
|
|
25
|
-
// the edit we want to do cannot be rebased, which indicates that it would interfere with a recent edit
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
edit = rebaseResult;
|
|
29
|
-
}
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function editIsDeletion(edit: StringEdit): boolean {
|
|
34
|
-
const deletedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.replaceRange.length, 0);
|
|
35
|
-
const insertedChars = edit.replacements.reduce((acc, singleEdit) => acc + singleEdit.newText.length, 0);
|
|
36
|
-
return insertedChars === 0 && deletedChars > 0;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Represents information loss/gain (4-grams) via an edit.
|
|
41
|
-
*/
|
|
42
|
-
export class InformationDelta {
|
|
43
|
-
|
|
44
|
-
constructor(
|
|
45
|
-
public readonly inserted: Set<string> = new Set<string>(),
|
|
46
|
-
public readonly deleted: Set<string> = new Set<string>()
|
|
47
|
-
) { }
|
|
48
|
-
|
|
49
|
-
combine(other: InformationDelta) {
|
|
50
|
-
return new InformationDelta(setUnion(this.inserted, other.inserted), setUnion(this.deleted, other.deleted));
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
isUndoneBy(other: InformationDelta) {
|
|
54
|
-
const otherReallyNewInsertions = setMinus(other.inserted, other.deleted);
|
|
55
|
-
const otherReallyDeleted = setMinus(other.deleted, other.inserted);
|
|
56
|
-
|
|
57
|
-
const otherReallyDeletesMyInserts = setIntersectionCount(otherReallyDeleted, this.inserted);
|
|
58
|
-
const otherReallyInsertsMyDeletes = setIntersectionCount(otherReallyNewInsertions, this.deleted);
|
|
59
|
-
|
|
60
|
-
if (otherReallyDeleted.size > 6 && otherReallyDeletesMyInserts / otherReallyDeleted.size > N_GRAM_UNDO_RATIO_TO_FILTER_OUT) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (otherReallyNewInsertions.size > 6 && otherReallyInsertsMyDeletes / otherReallyNewInsertions.size > N_GRAM_UNDO_RATIO_TO_FILTER_OUT) {
|
|
65
|
-
return true;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function getInformationDelta(source: string, edit: StringEdit): InformationDelta {
|
|
73
|
-
const inserted = new Set<string>();
|
|
74
|
-
const deleted = new Set<string>();
|
|
75
|
-
const tryAddDeleted = (deletedRange: OffsetRange | undefined) => {
|
|
76
|
-
if (!deletedRange) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
const deletedText = source.substring(deletedRange.start, deletedRange.endExclusive);
|
|
80
|
-
for (let line of deletedText.split(/\r\n|\r|\n/)) {
|
|
81
|
-
line = line.trim();
|
|
82
|
-
for (const piece of to4grams(line)) {
|
|
83
|
-
deleted.add(piece);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
const tryAddInserted = (insertedText: string) => {
|
|
88
|
-
for (let line of insertedText.split(/\r\n|\r|\n/)) {
|
|
89
|
-
line = line.trim();
|
|
90
|
-
for (const piece of to4grams(line)) {
|
|
91
|
-
inserted.add(piece);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
for (const e of edit.replacements) {
|
|
96
|
-
const e1 = e.removeCommonPrefix(source).removeCommonSuffix(source);
|
|
97
|
-
const e2 = e.removeCommonSuffix(source).removeCommonPrefix(source);
|
|
98
|
-
if (e1.isEmpty) {
|
|
99
|
-
continue;
|
|
100
|
-
}
|
|
101
|
-
tryAddDeleted(e1.replaceRange);
|
|
102
|
-
tryAddDeleted(e2.replaceRange);
|
|
103
|
-
tryAddDeleted(e1.replaceRange.intersect(e2.replaceRange));
|
|
104
|
-
|
|
105
|
-
// tryAddInserted(e1.newText);
|
|
106
|
-
// tryAddInserted(e2.newText);
|
|
107
|
-
// e1 might have a suffix overlap with the prefix of e1
|
|
108
|
-
tryAddInserted(trimOverlap(e1.newText, e2.newText));
|
|
109
|
-
}
|
|
110
|
-
return new InformationDelta(inserted, deleted);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function trimOverlap(stringToEliminateEnd: string, stringToEliminateStart: string): string {
|
|
114
|
-
const length = Math.min(stringToEliminateEnd.length, stringToEliminateStart.length);
|
|
115
|
-
for (let trimLength = 0; trimLength < length; trimLength++) {
|
|
116
|
-
const str1 = stringToEliminateEnd.slice(0, stringToEliminateEnd.length - trimLength);
|
|
117
|
-
const str2 = stringToEliminateStart.slice(trimLength);
|
|
118
|
-
if (str1 === str2) {
|
|
119
|
-
return str1;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return '';
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function to4grams(text: string) {
|
|
126
|
-
const result: string[] = [];
|
|
127
|
-
for (let i = 4; i < text.length; i++) {
|
|
128
|
-
const ngram = text.slice(i - 4, i);
|
|
129
|
-
result.push(ngram);
|
|
130
|
-
}
|
|
131
|
-
return result;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
function setUnion(a: Set<string>, b: Set<string>): Set<string> {
|
|
135
|
-
const result = new Set<string>();
|
|
136
|
-
for (const el of a) {
|
|
137
|
-
result.add(el);
|
|
138
|
-
}
|
|
139
|
-
for (const el of b) {
|
|
140
|
-
result.add(el);
|
|
141
|
-
}
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
function setMinus(a: Set<string>, b: Set<string>): Set<string> {
|
|
146
|
-
const result = new Set<string>();
|
|
147
|
-
for (const el of a) {
|
|
148
|
-
if (!b.has(el)) {
|
|
149
|
-
result.add(el);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return result;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
function setIntersectionCount(a: Set<string>, b: Set<string>): number {
|
|
156
|
-
let result = 0;
|
|
157
|
-
for (const el of a) {
|
|
158
|
-
if (b.has(el)) {
|
|
159
|
-
result++;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
return result;
|
|
163
|
-
}
|
|
@@ -1,225 +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 { ChoiceLogProbs } from '../../../platform/networking/common/openai';
|
|
8
|
-
import { BugIndicatingError } from '../../../util/vs/base/common/errors';
|
|
9
|
-
import { Range } from '../../../util/vs/editor/common/core/range';
|
|
10
|
-
import { OffsetRange, OffsetRangeSet } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Read the selection from the document, otherwise deduce it from the last edit.
|
|
14
|
-
*/
|
|
15
|
-
export function getOrDeduceSelectionFromLastEdit(activeDoc: StatelessNextEditDocument): Range | null {
|
|
16
|
-
const origin = new OffsetRange(0, 0);
|
|
17
|
-
if (activeDoc.lastSelectionInAfterEdit && !activeDoc.lastSelectionInAfterEdit.equals(origin)) {
|
|
18
|
-
return activeDoc.documentAfterEdits.getTransformer().getRange(activeDoc.lastSelectionInAfterEdit);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const selectionRange = deduceSelectionFromLastEdit(activeDoc);
|
|
22
|
-
return selectionRange;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function deduceSelectionFromLastEdit(activeDoc: StatelessNextEditDocument): Range | null {
|
|
26
|
-
const mostRecentEdit = activeDoc.recentEdits.edits.at(-1);
|
|
27
|
-
if (mostRecentEdit === undefined) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const mostRecentSingleEdit = mostRecentEdit.replacements.at(-1);
|
|
32
|
-
if (mostRecentSingleEdit === undefined) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const offsetRange = mostRecentSingleEdit.replaceRange;
|
|
37
|
-
const newText = mostRecentSingleEdit.newText;
|
|
38
|
-
const change = newText.length - offsetRange.length;
|
|
39
|
-
const newOffset = offsetRange.endExclusive + change;
|
|
40
|
-
|
|
41
|
-
const selectionRange = activeDoc.documentAfterEdits.getTransformer().getRange(new OffsetRange(newOffset, newOffset));
|
|
42
|
-
|
|
43
|
-
return selectionRange;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
type Tokens = Token<number>[];
|
|
47
|
-
|
|
48
|
-
export class Token<T> {
|
|
49
|
-
public readonly range: OffsetRange;
|
|
50
|
-
|
|
51
|
-
get id(): string {
|
|
52
|
-
return this.text + '_' + this.range.toString();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
constructor(public readonly text: string, public readonly value: T, offset: number) {
|
|
56
|
-
this.range = new OffsetRange(offset, offset + text.length);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
public equals(other: Token<T>): boolean {
|
|
60
|
-
return this.range.equals(other.range) && this.text === other.text;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
public deltaOffset(offset: number): Token<T> {
|
|
64
|
-
return new Token(this.text, this.value, this.range.start + offset);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export function clipTokensToRange(tokens: Tokens, range: OffsetRange): Tokens {
|
|
69
|
-
return tokens.filter(token => range.intersects(token.range));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function clipTokensToRangeAndAdjustOffsets(tokens: Tokens, range: OffsetRange): Tokens {
|
|
73
|
-
return clipTokensToRange(tokens, range).map(token => token.deltaOffset(-range.start));
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function removeTokensInRangeAndAdjustOffsets(tokens: Tokens, range: OffsetRange): Tokens {
|
|
77
|
-
const adjustedTokens: Tokens = [];
|
|
78
|
-
for (let token of tokens) {
|
|
79
|
-
// remove tokens inside the range
|
|
80
|
-
if (range.containsRange(token.range)) {
|
|
81
|
-
continue;
|
|
82
|
-
}
|
|
83
|
-
// adjust the token offset
|
|
84
|
-
if (token.range.start > range.start) {
|
|
85
|
-
token = token.deltaOffset(-range.length);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
adjustedTokens.push(token);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
return adjustedTokens;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
export function getTokensFromLogProbs(logProbs: ChoiceLogProbs, offset: number): Tokens {
|
|
95
|
-
let acc = offset;
|
|
96
|
-
return logProbs.content.map(tokenContent => {
|
|
97
|
-
const token = new Token(tokenContent.token, tokenContent.logprob, acc);
|
|
98
|
-
acc += token.range.length;
|
|
99
|
-
return token;
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export class LineWithTokens {
|
|
104
|
-
|
|
105
|
-
static stringEquals(a: LineWithTokens, b: LineWithTokens): boolean {
|
|
106
|
-
return a._text === b._text;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
static fromText(text: string, tokens: Tokens | undefined): LineWithTokens[] {
|
|
110
|
-
tokens = tokens ?? [];
|
|
111
|
-
|
|
112
|
-
const lines: LineWithTokens[] = [];
|
|
113
|
-
while (true) {
|
|
114
|
-
const eolIdxWith = text.indexOf('\r\n');
|
|
115
|
-
const eolIdxWithout = text.indexOf('\n');
|
|
116
|
-
const eolIdx = (eolIdxWith === -1 ? eolIdxWithout : (eolIdxWithout === -1 ? eolIdxWith : Math.min(eolIdxWith, eolIdxWithout)));
|
|
117
|
-
const eol = (eolIdxWith !== -1 ? '\r\n' : (eolIdxWithout === -1 ? undefined : '\n'));
|
|
118
|
-
|
|
119
|
-
if (eol === undefined) {
|
|
120
|
-
lines.push(new LineWithTokens(text, tokens, '\n'));
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
const lineLength = eolIdx + eol.length;
|
|
125
|
-
const line = text.substring(0, eolIdx);
|
|
126
|
-
const lineTokensWithBoundary = tokens.filter(t => t.range.start < lineLength && t.range.endExclusive > 0);
|
|
127
|
-
lines.push(new LineWithTokens(line, lineTokensWithBoundary, eol));
|
|
128
|
-
|
|
129
|
-
text = text.substring(lineLength);
|
|
130
|
-
tokens = tokens.map(t => t.deltaOffset(-lineLength)).filter(t => t.range.endExclusive > 0);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
return lines;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
get text(): string { return this._text; }
|
|
137
|
-
get tokens(): Tokens { return this._tokens; }
|
|
138
|
-
get length(): number { return this._text.length; }
|
|
139
|
-
get lengthWithEOL(): number { return this._text.length + this._eol.length; }
|
|
140
|
-
get eol(): '\n' | '\r\n' { return this._eol; }
|
|
141
|
-
|
|
142
|
-
constructor(
|
|
143
|
-
private readonly _text: string,
|
|
144
|
-
private readonly _tokens: Tokens,
|
|
145
|
-
private readonly _eol: '\n' | '\r\n'
|
|
146
|
-
) { }
|
|
147
|
-
|
|
148
|
-
trim() {
|
|
149
|
-
return this.trimStart().trimEnd();
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
trimStart() {
|
|
153
|
-
const lineStartTrimmed = this._text.trimStart();
|
|
154
|
-
const trimmedLength = this._text.length - lineStartTrimmed.length;
|
|
155
|
-
const tokensUpdated = this._tokens.map(t => t.deltaOffset(-trimmedLength)).filter(t => t.range.endExclusive > 0);
|
|
156
|
-
return new LineWithTokens(lineStartTrimmed, tokensUpdated, this._eol);
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
trimEnd() {
|
|
160
|
-
const lineEndTrimmed = this._text.trimEnd();
|
|
161
|
-
const tokensUpdated = this._tokens.filter(t => t.range.start < lineEndTrimmed.length);
|
|
162
|
-
return new LineWithTokens(lineEndTrimmed, tokensUpdated, this._eol);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
substring(start: number, end: number): LineWithTokens {
|
|
166
|
-
const lineSubstring = this._text.substring(start, end);
|
|
167
|
-
const tokensUpdated = this._tokens.map(t => t.deltaOffset(-start)).filter(t => t.range.endExclusive > 0 && t.range.start < lineSubstring.length);
|
|
168
|
-
return new LineWithTokens(lineSubstring, tokensUpdated, this._eol);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
stringEquals(other: LineWithTokens): boolean {
|
|
172
|
-
return LineWithTokens.stringEquals(this, other);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
equals(other: LineWithTokens): boolean {
|
|
176
|
-
return this._text === other.text
|
|
177
|
-
&& this._tokens.length === other.tokens.length
|
|
178
|
-
&& this._tokens.every((t, i) => t.equals(other.tokens[i]));
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
dropTokens(tokens: Tokens): LineWithTokens {
|
|
182
|
-
return new LineWithTokens(this._text, this._tokens.filter(t => !tokens.some(token => t.equals(token))), this._eol);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
findTokens(fn: (token: Token<number>) => boolean): Token<number>[] {
|
|
186
|
-
return this._tokens.filter(fn);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
export function getTokensFromLinesWithTokens(lines: LineWithTokens[]): Tokens {
|
|
191
|
-
let offset = 0;
|
|
192
|
-
|
|
193
|
-
const tokens: Tokens = [];
|
|
194
|
-
for (const line of lines) {
|
|
195
|
-
const textLine = line.text + line.eol;
|
|
196
|
-
tokens.push(...line.tokens.map(t => t.deltaOffset(offset)));
|
|
197
|
-
offset += textLine.length;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
const tokensDeduplicated: Tokens = [];
|
|
201
|
-
const tokensSeen = new Set<string>();
|
|
202
|
-
for (const token of tokens) {
|
|
203
|
-
if (!tokensSeen.has(token.id)) {
|
|
204
|
-
tokensSeen.add(token.id);
|
|
205
|
-
tokensDeduplicated.push(token);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
return tokensDeduplicated;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
export function mergeOffsetRangesAtDistance(ranges: OffsetRange[], distance: number): OffsetRange[] {
|
|
213
|
-
if (distance < 0) {
|
|
214
|
-
throw new BugIndicatingError('Distance must be positive');
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
const rangesGrown = ranges.map(r => new OffsetRange(r.start - distance, r.endExclusive + distance));
|
|
218
|
-
|
|
219
|
-
const set = new OffsetRangeSet();
|
|
220
|
-
for (const range of rangesGrown) {
|
|
221
|
-
set.addRange(range);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return set.ranges.map(r => new OffsetRange(r.start + distance, r.endExclusive - distance));
|
|
225
|
-
}
|