@vscode/chat-lib 0.3.1-10 → 0.3.1-12
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/common/userInteractionMonitor.d.ts +52 -8
- package/dist/src/_internal/extension/inlineEdits/common/userInteractionMonitor.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/common/userInteractionMonitor.js +208 -41
- package/dist/src/_internal/extension/inlineEdits/common/userInteractionMonitor.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.d.ts +3 -4
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.js +13 -13
- package/dist/src/_internal/extension/inlineEdits/node/nextEditCache.js.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts +23 -2
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.js +384 -106
- package/dist/src/_internal/extension/inlineEdits/node/nextEditProvider.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 +2 -1
- 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 +2 -0
- package/dist/src/_internal/extension/xtab/common/promptCrafting.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts +33 -2
- package/dist/src/_internal/extension/xtab/node/xtabProvider.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js +209 -31
- package/dist/src/_internal/extension/xtab/node/xtabProvider.js.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabUtils.d.ts +5 -2
- package/dist/src/_internal/extension/xtab/node/xtabUtils.d.ts.map +1 -1
- package/dist/src/_internal/extension/xtab/node/xtabUtils.js +3 -2
- package/dist/src/_internal/extension/xtab/node/xtabUtils.js.map +1 -1
- package/dist/src/_internal/platform/chat/common/commonTypes.d.ts +1 -2
- package/dist/src/_internal/platform/chat/common/commonTypes.d.ts.map +1 -1
- package/dist/src/_internal/platform/chat/common/commonTypes.js +8 -8
- package/dist/src/_internal/platform/chat/common/commonTypes.js.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts +4 -0
- package/dist/src/_internal/platform/configuration/common/configurationService.d.ts.map +1 -1
- package/dist/src/_internal/platform/configuration/common/configurationService.js +4 -0
- package/dist/src/_internal/platform/configuration/common/configurationService.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/common/chatModelCapabilities.js +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js +4 -1
- package/dist/src/_internal/platform/endpoint/node/chatEndpoint.js.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.d.ts.map +1 -1
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js +10 -5
- package/dist/src/_internal/platform/endpoint/node/messagesApi.js.map +1 -1
- package/dist/src/_internal/platform/env/common/envService.d.ts +6 -0
- package/dist/src/_internal/platform/env/common/envService.d.ts.map +1 -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 +4 -0
- package/dist/src/_internal/platform/env/common/nullEnvService.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts +83 -2
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js +203 -1
- package/dist/src/_internal/platform/inlineEdits/common/dataTypes/xtabPromptOptions.js.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts +15 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.d.ts.map +1 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js +18 -1
- package/dist/src/_internal/platform/inlineEdits/common/statelessNextEditProvider.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts +10 -0
- package/dist/src/_internal/platform/networking/common/anthropic.d.ts.map +1 -1
- package/dist/src/_internal/platform/networking/common/anthropic.js +18 -0
- package/dist/src/_internal/platform/networking/common/anthropic.js.map +1 -1
- package/dist/src/_internal/platform/networking/common/networking.d.ts +4 -0
- 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/requestLogger/node/requestLogger.d.ts +4 -0
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.d.ts.map +1 -1
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.js +4 -1
- package/dist/src/_internal/platform/requestLogger/node/requestLogger.js.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetry.d.ts +2 -0
- package/dist/src/_internal/platform/telemetry/common/telemetry.d.ts.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetry.js +1 -0
- package/dist/src/_internal/platform/telemetry/common/telemetry.js.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetryData.d.ts.map +1 -1
- package/dist/src/_internal/platform/telemetry/common/telemetryData.js +3 -0
- package/dist/src/_internal/platform/telemetry/common/telemetryData.js.map +1 -1
- package/dist/src/_internal/util/common/test/shims/themes.d.ts +13 -0
- package/dist/src/_internal/util/common/test/shims/themes.d.ts.map +1 -0
- package/dist/src/_internal/util/common/test/shims/themes.js +27 -0
- package/dist/src/_internal/util/common/test/shims/themes.js.map +1 -0
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.d.ts.map +1 -1
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.js +3 -1
- package/dist/src/_internal/util/common/test/shims/vscodeTypesShim.js.map +1 -1
- package/dist/src/_internal/vscodeTypes.d.ts +1 -0
- package/dist/src/_internal/vscodeTypes.d.ts.map +1 -1
- package/dist/src/_internal/vscodeTypes.js +3 -1
- package/dist/src/_internal/vscodeTypes.js.map +1 -1
- package/dist/src/main.d.ts +2 -1
- package/dist/src/main.d.ts.map +1 -1
- package/dist/src/main.js +1 -0
- package/dist/src/main.js.map +1 -1
- package/dist/src/package.json +14 -4
- package/package.json +2 -2
|
@@ -1,15 +1,62 @@
|
|
|
1
1
|
import { IConfigurationService } from '../../../platform/configuration/common/configurationService';
|
|
2
|
-
import { AggressivenessLevel } from '../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions';
|
|
2
|
+
import { AggressivenessLevel, UserHappinessScoreConfiguration } from '../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions';
|
|
3
|
+
import { ILogService } from '../../../platform/log/common/logService';
|
|
3
4
|
import { IExperimentationService } from '../../../platform/telemetry/common/nullExperimentationService';
|
|
5
|
+
import { ITelemetryService } from '../../../platform/telemetry/common/telemetry';
|
|
4
6
|
import { DelaySession } from './delay';
|
|
7
|
+
export declare enum ActionKind {
|
|
8
|
+
Accepted = "accepted",
|
|
9
|
+
Rejected = "rejected",
|
|
10
|
+
Ignored = "ignored"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Represents a user interaction wrt an inline edit suggestion.
|
|
14
|
+
*/
|
|
15
|
+
export interface NESUserAction {
|
|
16
|
+
time: number;
|
|
17
|
+
kind: ActionKind;
|
|
18
|
+
}
|
|
19
|
+
export declare const MAX_INTERACTIONS_CONSIDERED = 10;
|
|
20
|
+
export declare const MAX_INTERACTIONS_STORED = 30;
|
|
21
|
+
/**
|
|
22
|
+
* Get window of actions with ignored action limiting via window expansion.
|
|
23
|
+
*
|
|
24
|
+
* When ignored limit is reached, skip excess ignored actions but expand window
|
|
25
|
+
* further back to still get MAX_INTERACTIONS_CONSIDERED items.
|
|
26
|
+
*/
|
|
27
|
+
export declare function getWindowWithIgnoredLimit(actions: NESUserAction[], config: UserHappinessScoreConfiguration): NESUserAction[];
|
|
28
|
+
/**
|
|
29
|
+
* Calculate user happiness score from actions.
|
|
30
|
+
* Value between 0 and 1 indicating user happiness.
|
|
31
|
+
* 1 means very happy, 0 means very unhappy.
|
|
32
|
+
*
|
|
33
|
+
* Uses position-weighted scoring with ignored action limiting:
|
|
34
|
+
* - More recent actions have higher weight
|
|
35
|
+
* - Ignored actions can be limited (consecutive or total) to prevent score dilution
|
|
36
|
+
* - Score is adjusted towards neutral (0.5) based on data confidence
|
|
37
|
+
*/
|
|
38
|
+
export declare function getUserHappinessScore(actions: NESUserAction[], config: UserHappinessScoreConfiguration): number;
|
|
5
39
|
export declare class UserInteractionMonitor {
|
|
6
40
|
private readonly _configurationService;
|
|
7
41
|
private readonly _experimentationService;
|
|
8
|
-
private
|
|
9
|
-
private
|
|
10
|
-
|
|
42
|
+
private readonly _logService;
|
|
43
|
+
private readonly _telemetryService;
|
|
44
|
+
/**
|
|
45
|
+
* Used for aggressiveness level calculation.
|
|
46
|
+
* Includes all action types (accepted, rejected, ignored).
|
|
47
|
+
*/
|
|
48
|
+
protected _recentUserActionsForAggressiveness: NESUserAction[];
|
|
49
|
+
/**
|
|
50
|
+
* Used for timing/debounce calculation.
|
|
51
|
+
* Only includes accepted and rejected actions (ignored actions don't affect timing).
|
|
52
|
+
*/
|
|
53
|
+
protected _recentUserActionsForTiming: (NESUserAction & {
|
|
54
|
+
kind: ActionKind.Accepted | ActionKind.Rejected;
|
|
55
|
+
})[];
|
|
56
|
+
constructor(_configurationService: IConfigurationService, _experimentationService: IExperimentationService, _logService: ILogService, _telemetryService: ITelemetryService);
|
|
11
57
|
handleAcceptance(): void;
|
|
12
58
|
handleRejection(): void;
|
|
59
|
+
handleIgnored(): void;
|
|
13
60
|
private _recordUserAction;
|
|
14
61
|
createDelaySession(requestTime: number | undefined): DelaySession;
|
|
15
62
|
private _getExpectedTotalTime;
|
|
@@ -21,10 +68,7 @@ export declare class UserInteractionMonitor {
|
|
|
21
68
|
aggressivenessLevel: AggressivenessLevel;
|
|
22
69
|
userHappinessScore: number | undefined;
|
|
23
70
|
};
|
|
24
|
-
|
|
25
|
-
* Value between 0 and 1 indicating user happiness.
|
|
26
|
-
* 1 means very happy, 0 means very unhappy.
|
|
27
|
-
*/
|
|
71
|
+
protected _getUserHappinessScoreConfiguration(): UserHappinessScoreConfiguration;
|
|
28
72
|
private _getUserHappinessScore;
|
|
29
73
|
}
|
|
30
74
|
//# sourceMappingURL=userInteractionMonitor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userInteractionMonitor.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/common/userInteractionMonitor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"userInteractionMonitor.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/common/userInteractionMonitor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,mBAAmB,EAA0F,+BAA+B,EAAE,MAAM,kEAAkE,CAAC;AAChO,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AACxG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,oBAAY,UAAU;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;CACjB;AAED,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,EAAE,+BAA+B,GACrC,aAAa,EAAE,CAyCjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,aAAa,EAAE,EACxB,MAAM,EAAE,+BAA+B,GACrC,MAAM,CA0DR;AAED,qBAAa,sBAAsB;IAeV,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACpC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAhBtD;;;OAGG;IACH,SAAS,CAAC,mCAAmC,EAAE,aAAa,EAAE,CAAM;IAEpE;;;OAGG;IACH,SAAS,CAAC,2BAA2B,EAAE,CAAC,aAAa,GAAG;QAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;KAAE,CAAC,EAAE,CAAM;gBAG3E,qBAAqB,EAAE,qBAAqB,EAC1C,uBAAuB,EAAE,uBAAuB,EAC5D,WAAW,EAAE,WAAW,EAClB,iBAAiB,EAAE,iBAAiB;IAKlE,gBAAgB,IAAI,IAAI;IAIxB,eAAe,IAAI,IAAI;IAIvB,aAAa,IAAI,IAAI;IAI5B,OAAO,CAAC,iBAAiB;IAgBlB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY;IASxE,OAAO,CAAC,qBAAqB;IAiC7B;;;OAGG;IACI,sBAAsB,IAAI;QAAE,mBAAmB,EAAE,mBAAmB,CAAC;QAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE;IAoBrH,SAAS,CAAC,mCAAmC,IAAI,+BAA+B;IA2BhF,OAAO,CAAC,sBAAsB;CAG9B"}
|
|
@@ -3,41 +3,202 @@
|
|
|
3
3
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
4
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
6
22
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
7
23
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
8
24
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
9
25
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
10
26
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
11
27
|
};
|
|
28
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
+
var ownKeys = function(o) {
|
|
30
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
+
var ar = [];
|
|
32
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
+
return ar;
|
|
34
|
+
};
|
|
35
|
+
return ownKeys(o);
|
|
36
|
+
};
|
|
37
|
+
return function (mod) {
|
|
38
|
+
if (mod && mod.__esModule) return mod;
|
|
39
|
+
var result = {};
|
|
40
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
+
__setModuleDefault(result, mod);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
})();
|
|
12
45
|
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
13
46
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
14
47
|
};
|
|
15
|
-
var UserInteractionMonitor_1;
|
|
16
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.UserInteractionMonitor = void 0;
|
|
49
|
+
exports.UserInteractionMonitor = exports.MAX_INTERACTIONS_STORED = exports.MAX_INTERACTIONS_CONSIDERED = exports.ActionKind = void 0;
|
|
50
|
+
exports.getWindowWithIgnoredLimit = getWindowWithIgnoredLimit;
|
|
51
|
+
exports.getUserHappinessScore = getUserHappinessScore;
|
|
18
52
|
const configurationService_1 = require("../../../platform/configuration/common/configurationService");
|
|
19
53
|
const xtabPromptOptions_1 = require("../../../platform/inlineEdits/common/dataTypes/xtabPromptOptions");
|
|
54
|
+
const logService_1 = require("../../../platform/log/common/logService");
|
|
20
55
|
const nullExperimentationService_1 = require("../../../platform/telemetry/common/nullExperimentationService");
|
|
56
|
+
const telemetry_1 = require("../../../platform/telemetry/common/telemetry");
|
|
57
|
+
const errors = __importStar(require("../../../util/common/errors"));
|
|
21
58
|
const delay_1 = require("./delay");
|
|
59
|
+
var ActionKind;
|
|
60
|
+
(function (ActionKind) {
|
|
61
|
+
ActionKind["Accepted"] = "accepted";
|
|
62
|
+
ActionKind["Rejected"] = "rejected";
|
|
63
|
+
ActionKind["Ignored"] = "ignored";
|
|
64
|
+
})(ActionKind || (exports.ActionKind = ActionKind = {}));
|
|
65
|
+
exports.MAX_INTERACTIONS_CONSIDERED = 10;
|
|
66
|
+
exports.MAX_INTERACTIONS_STORED = 30;
|
|
67
|
+
/**
|
|
68
|
+
* Get window of actions with ignored action limiting via window expansion.
|
|
69
|
+
*
|
|
70
|
+
* When ignored limit is reached, skip excess ignored actions but expand window
|
|
71
|
+
* further back to still get MAX_INTERACTIONS_CONSIDERED items.
|
|
72
|
+
*/
|
|
73
|
+
function getWindowWithIgnoredLimit(actions, config) {
|
|
74
|
+
const { limitConsecutiveIgnored, limitTotalIgnored, ignoredLimit } = config;
|
|
75
|
+
if (!limitConsecutiveIgnored && !limitTotalIgnored) {
|
|
76
|
+
// No limiting - just take last MAX_INTERACTIONS_CONSIDERED
|
|
77
|
+
return actions.slice(-exports.MAX_INTERACTIONS_CONSIDERED);
|
|
78
|
+
}
|
|
79
|
+
const result = [];
|
|
80
|
+
let consecutiveIgnored = 0;
|
|
81
|
+
let totalIgnored = 0;
|
|
82
|
+
// Walk backwards through history
|
|
83
|
+
for (let i = actions.length - 1; i >= 0 && result.length < exports.MAX_INTERACTIONS_CONSIDERED; i--) {
|
|
84
|
+
const action = actions[i];
|
|
85
|
+
if (action.kind === ActionKind.Ignored) {
|
|
86
|
+
let skip = false;
|
|
87
|
+
if (limitConsecutiveIgnored && consecutiveIgnored >= ignoredLimit) {
|
|
88
|
+
skip = true;
|
|
89
|
+
}
|
|
90
|
+
if (limitTotalIgnored && totalIgnored >= ignoredLimit) {
|
|
91
|
+
skip = true;
|
|
92
|
+
}
|
|
93
|
+
if (skip) {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
consecutiveIgnored++;
|
|
97
|
+
totalIgnored++;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
consecutiveIgnored = 0; // Reset consecutive count on accept/reject
|
|
101
|
+
}
|
|
102
|
+
result.push(action);
|
|
103
|
+
}
|
|
104
|
+
// Reverse to get chronological order
|
|
105
|
+
result.reverse();
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Calculate user happiness score from actions.
|
|
110
|
+
* Value between 0 and 1 indicating user happiness.
|
|
111
|
+
* 1 means very happy, 0 means very unhappy.
|
|
112
|
+
*
|
|
113
|
+
* Uses position-weighted scoring with ignored action limiting:
|
|
114
|
+
* - More recent actions have higher weight
|
|
115
|
+
* - Ignored actions can be limited (consecutive or total) to prevent score dilution
|
|
116
|
+
* - Score is adjusted towards neutral (0.5) based on data confidence
|
|
117
|
+
*/
|
|
118
|
+
function getUserHappinessScore(actions, config) {
|
|
119
|
+
if (actions.length === 0) {
|
|
120
|
+
return 0.5; // neutral score when no data
|
|
121
|
+
}
|
|
122
|
+
// Get window of actions with ignored limiting
|
|
123
|
+
const window = getWindowWithIgnoredLimit(actions, config);
|
|
124
|
+
if (window.length === 0) {
|
|
125
|
+
return 0.5; // neutral score when no data after filtering
|
|
126
|
+
}
|
|
127
|
+
// Calculate weighted score
|
|
128
|
+
let weightedScore = 0; // Sum of weighted normalized scores
|
|
129
|
+
let totalWeight = 0; // Sum of weights applied
|
|
130
|
+
let scoredActionCount = 0; // Count of actions that contributed to score
|
|
131
|
+
for (let i = 0; i < window.length; i++) {
|
|
132
|
+
const action = window[i];
|
|
133
|
+
// Skip ignored actions if not included in score calculation
|
|
134
|
+
if (action.kind === ActionKind.Ignored && !config.includeIgnored) {
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
scoredActionCount++;
|
|
138
|
+
// Calculate weight based on position (more recent = higher weight)
|
|
139
|
+
// Position 0 (oldest) has lowest weight, last position has highest weight
|
|
140
|
+
const weight = i + 1;
|
|
141
|
+
// Get score based on action kind from configuration
|
|
142
|
+
let score;
|
|
143
|
+
switch (action.kind) {
|
|
144
|
+
case ActionKind.Accepted:
|
|
145
|
+
score = config.acceptedScore;
|
|
146
|
+
break;
|
|
147
|
+
case ActionKind.Rejected:
|
|
148
|
+
score = config.rejectedScore;
|
|
149
|
+
break;
|
|
150
|
+
case ActionKind.Ignored:
|
|
151
|
+
score = config.ignoredScore;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
// Normalize score to 0-1 range based on accept/reject weights
|
|
155
|
+
const normalized = (score - config.rejectedScore) / (config.acceptedScore - config.rejectedScore);
|
|
156
|
+
weightedScore += normalized * weight;
|
|
157
|
+
totalWeight += weight;
|
|
158
|
+
}
|
|
159
|
+
const rawScore = totalWeight > 0 ? weightedScore / totalWeight : 0.5;
|
|
160
|
+
// Adjust score towards neutral (0.5) when we have fewer data points
|
|
161
|
+
// This prevents extreme scores with limited data
|
|
162
|
+
const dataConfidence = scoredActionCount / exports.MAX_INTERACTIONS_CONSIDERED;
|
|
163
|
+
return 0.5 + (rawScore - 0.5) * dataConfidence;
|
|
164
|
+
}
|
|
22
165
|
let UserInteractionMonitor = class UserInteractionMonitor {
|
|
23
|
-
|
|
24
|
-
static { this.MAX_INTERACTIONS_CONSIDERED = 10; }
|
|
25
|
-
constructor(_configurationService, _experimentationService) {
|
|
166
|
+
constructor(_configurationService, _experimentationService, _logService, _telemetryService) {
|
|
26
167
|
this._configurationService = _configurationService;
|
|
27
168
|
this._experimentationService = _experimentationService;
|
|
28
|
-
this.
|
|
169
|
+
this._logService = _logService;
|
|
170
|
+
this._telemetryService = _telemetryService;
|
|
171
|
+
/**
|
|
172
|
+
* Used for aggressiveness level calculation.
|
|
173
|
+
* Includes all action types (accepted, rejected, ignored).
|
|
174
|
+
*/
|
|
175
|
+
this._recentUserActionsForAggressiveness = [];
|
|
176
|
+
/**
|
|
177
|
+
* Used for timing/debounce calculation.
|
|
178
|
+
* Only includes accepted and rejected actions (ignored actions don't affect timing).
|
|
179
|
+
*/
|
|
180
|
+
this._recentUserActionsForTiming = [];
|
|
29
181
|
}
|
|
30
182
|
// Capture user interactions
|
|
31
183
|
handleAcceptance() {
|
|
32
|
-
this._recordUserAction(
|
|
184
|
+
this._recordUserAction(ActionKind.Accepted);
|
|
33
185
|
}
|
|
34
186
|
handleRejection() {
|
|
35
|
-
this._recordUserAction(
|
|
187
|
+
this._recordUserAction(ActionKind.Rejected);
|
|
188
|
+
}
|
|
189
|
+
handleIgnored() {
|
|
190
|
+
this._recordUserAction(ActionKind.Ignored);
|
|
36
191
|
}
|
|
37
192
|
_recordUserAction(kind) {
|
|
38
|
-
|
|
39
|
-
//
|
|
40
|
-
this.
|
|
193
|
+
const now = Date.now();
|
|
194
|
+
// Always record for aggressiveness calculation
|
|
195
|
+
this._recentUserActionsForAggressiveness.push({ time: now, kind });
|
|
196
|
+
this._recentUserActionsForAggressiveness = this._recentUserActionsForAggressiveness.slice(-exports.MAX_INTERACTIONS_STORED);
|
|
197
|
+
// Only record accepts/rejects for timing calculation
|
|
198
|
+
if (kind !== ActionKind.Ignored) {
|
|
199
|
+
this._recentUserActionsForTiming.push({ time: now, kind });
|
|
200
|
+
this._recentUserActionsForTiming = this._recentUserActionsForTiming.slice(-exports.MAX_INTERACTIONS_CONSIDERED);
|
|
201
|
+
}
|
|
41
202
|
}
|
|
42
203
|
// Creates a DelaySession based on recent user interactions
|
|
43
204
|
createDelaySession(requestTime) {
|
|
@@ -55,14 +216,15 @@ let UserInteractionMonitor = class UserInteractionMonitor {
|
|
|
55
216
|
const now = Date.now();
|
|
56
217
|
let multiplier = 1;
|
|
57
218
|
// Calculate impact of each action with time decay
|
|
58
|
-
|
|
219
|
+
// Uses timing-specific array which only contains accepts/rejects
|
|
220
|
+
for (const action of this._recentUserActionsForTiming) {
|
|
59
221
|
const timeSinceAction = now - action.time;
|
|
60
222
|
if (timeSinceAction > DEBOUNCE_DECAY_TIME_MS) {
|
|
61
223
|
continue;
|
|
62
224
|
}
|
|
63
225
|
// Exponential decay: impact decreases as time passes
|
|
64
226
|
const decayFactor = Math.exp(-timeSinceAction / DEBOUNCE_DECAY_TIME_MS);
|
|
65
|
-
const actionWeight = action.kind ===
|
|
227
|
+
const actionWeight = action.kind === ActionKind.Rejected ? REJECTION_WEIGHT : ACCEPTANCE_WEIGHT;
|
|
66
228
|
multiplier *= 1 + ((actionWeight - 1) * decayFactor);
|
|
67
229
|
}
|
|
68
230
|
let debounceTime = baseDebounceTime * multiplier;
|
|
@@ -81,11 +243,12 @@ let UserInteractionMonitor = class UserInteractionMonitor {
|
|
|
81
243
|
return { aggressivenessLevel: configuredAggressivenessLevel, userHappinessScore: undefined };
|
|
82
244
|
}
|
|
83
245
|
let level;
|
|
84
|
-
const
|
|
85
|
-
|
|
246
|
+
const config = this._getUserHappinessScoreConfiguration();
|
|
247
|
+
const userHappinessScore = this._getUserHappinessScore(config);
|
|
248
|
+
if (userHappinessScore >= config.highThreshold) {
|
|
86
249
|
level = xtabPromptOptions_1.AggressivenessLevel.High;
|
|
87
250
|
}
|
|
88
|
-
else if (userHappinessScore >=
|
|
251
|
+
else if (userHappinessScore >= config.mediumThreshold) {
|
|
89
252
|
level = xtabPromptOptions_1.AggressivenessLevel.Medium;
|
|
90
253
|
}
|
|
91
254
|
else {
|
|
@@ -93,36 +256,40 @@ let UserInteractionMonitor = class UserInteractionMonitor {
|
|
|
93
256
|
}
|
|
94
257
|
return { aggressivenessLevel: level, userHappinessScore };
|
|
95
258
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if (this._recentUserActions.length === 0) {
|
|
102
|
-
return 0.5; // neutral score when no data
|
|
259
|
+
_getUserHappinessScoreConfiguration() {
|
|
260
|
+
const configKey = configurationService_1.ConfigKey.TeamInternal.InlineEditsUserHappinessScoreConfigurationString;
|
|
261
|
+
const configString = this._configurationService.getExperimentBasedConfig(configKey, this._experimentationService);
|
|
262
|
+
if (configString === undefined) {
|
|
263
|
+
return xtabPromptOptions_1.DEFAULT_USER_HAPPINESS_SCORE_CONFIGURATION;
|
|
103
264
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
for (let i = 0; i < this._recentUserActions.length; i++) {
|
|
107
|
-
const action = this._recentUserActions[i];
|
|
108
|
-
// Calculate weight based on position (more recent = higher weight)
|
|
109
|
-
// Position 0 (oldest) has lowest weight, last position has highest weight
|
|
110
|
-
const weight = i + 1;
|
|
111
|
-
// Accepted = 1, Rejected = 0
|
|
112
|
-
const score = action.kind === 'accepted' ? 1 : 0;
|
|
113
|
-
weightedScore += score * weight;
|
|
114
|
-
totalWeight += weight;
|
|
265
|
+
try {
|
|
266
|
+
return (0, xtabPromptOptions_1.parseUserHappinessScoreConfigurationString)(configString);
|
|
115
267
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
268
|
+
catch (e) {
|
|
269
|
+
this._logService.error(e, 'Failed to parse user happiness score configuration, using default config');
|
|
270
|
+
// Log to telemetry when we fail to parse an experimental config, but still offer the default config to avoid disruption.
|
|
271
|
+
/* __GDPR__
|
|
272
|
+
"incorrectNesAdaptiveAggressivenessConfig" : {
|
|
273
|
+
"owner": "bstee615",
|
|
274
|
+
"comment": "Capture if model configuration string is invalid JSON.",
|
|
275
|
+
"configName": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "Name of the configuration that failed to parse." },
|
|
276
|
+
"errorMessage": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "Error message from JSON.parse." },
|
|
277
|
+
"configValue": { "classification": "SystemMetaData", "purpose": "FeatureInsight", "comment": "The invalid JSON string." }
|
|
278
|
+
}
|
|
279
|
+
*/
|
|
280
|
+
this._telemetryService.sendMSFTTelemetryEvent('incorrectNesAdaptiveAggressivenessConfig', { configName: configKey.id, errorMessage: errors.toString(errors.fromUnknown(e)), configValue: configString });
|
|
281
|
+
return xtabPromptOptions_1.DEFAULT_USER_HAPPINESS_SCORE_CONFIGURATION;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
_getUserHappinessScore(config) {
|
|
285
|
+
return getUserHappinessScore(this._recentUserActionsForAggressiveness, config);
|
|
121
286
|
}
|
|
122
287
|
};
|
|
123
288
|
exports.UserInteractionMonitor = UserInteractionMonitor;
|
|
124
|
-
exports.UserInteractionMonitor = UserInteractionMonitor =
|
|
289
|
+
exports.UserInteractionMonitor = UserInteractionMonitor = __decorate([
|
|
125
290
|
__param(0, configurationService_1.IConfigurationService),
|
|
126
|
-
__param(1, nullExperimentationService_1.IExperimentationService)
|
|
291
|
+
__param(1, nullExperimentationService_1.IExperimentationService),
|
|
292
|
+
__param(2, logService_1.ILogService),
|
|
293
|
+
__param(3, telemetry_1.ITelemetryService)
|
|
127
294
|
], UserInteractionMonitor);
|
|
128
295
|
//# sourceMappingURL=userInteractionMonitor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userInteractionMonitor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/common/userInteractionMonitor.ts"],"names":[],"mappings":";AAAA;;;gGAGgG
|
|
1
|
+
{"version":3,"file":"userInteractionMonitor.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/common/userInteractionMonitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { AnnotatedStringReplacement, StringEdit, StringReplacement } from '../..
|
|
|
8
8
|
import { OffsetRange } from '../../../util/vs/editor/common/core/ranges/offsetRange';
|
|
9
9
|
import { StringText } from '../../../util/vs/editor/common/core/text/abstractText';
|
|
10
10
|
import { EditDataWithIndex } from '../common/editRebase';
|
|
11
|
-
import { INesConfigs } from './nesConfigs';
|
|
12
11
|
import { NextEditFetchRequest } from './nextEditProvider';
|
|
13
12
|
export interface CachedEditOpts {
|
|
14
13
|
isFromCursorJump: boolean;
|
|
@@ -43,10 +42,10 @@ export declare class NextEditCache extends Disposable {
|
|
|
43
42
|
constructor(workspace: ObservableWorkspace, _logService: ILogService, configService: IConfigurationService, expService: IExperimentationService);
|
|
44
43
|
setKthNextEdit(docId: DocumentId, documentContents: StringText, editWindow: OffsetRange | undefined, nextEdit: StringReplacement, subsequentN: number, nextEdits: StringReplacement[] | undefined, userEditSince: StringEdit | undefined, source: NextEditFetchRequest, opts: CachedEditOpts): CachedEdit | undefined;
|
|
45
44
|
setNoNextEdit(docId: DocumentId, documentContents: StringText, editWindow: OffsetRange | undefined, source: NextEditFetchRequest): void;
|
|
46
|
-
lookupNextEdit(docId: DocumentId, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[]
|
|
47
|
-
tryRebaseCacheEntry(cachedEdit: CachedEdit, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[]
|
|
45
|
+
lookupNextEdit(docId: DocumentId, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[]): CachedOrRebasedEdit | undefined;
|
|
46
|
+
tryRebaseCacheEntry(cachedEdit: CachedEdit, currentDocumentContents: StringText, currentSelection: readonly OffsetRange[]): CachedOrRebasedEdit | undefined;
|
|
48
47
|
rejectedNextEdit(requestId: string): void;
|
|
49
|
-
isRejectedNextEdit(docId: DocumentId, currentDocumentContents: StringText, edit: StringReplacement
|
|
48
|
+
isRejectedNextEdit(docId: DocumentId, currentDocumentContents: StringText, edit: StringReplacement): boolean;
|
|
50
49
|
evictedCachedEdit(cachedEdit: CachedEdit): void;
|
|
51
50
|
clear(): void;
|
|
52
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextEditCache.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/node/nextEditCache.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAE,MAAM,2DAA2D,CAAC;AACvF,OAAO,EAAuB,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAEpH,OAAO,EAAW,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+DAA+D,CAAC;AAExG,OAAO,EAAE,UAAU,EAAgB,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sDAAsD,CAAC;AACjI,OAAO,EAAE,WAAW,EAAE,MAAM,wDAAwD,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,uDAAuD,CAAC;AACnF,OAAO,EAAwB,iBAAiB,EAAa,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"nextEditCache.d.ts","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/node/nextEditCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,31 +58,31 @@ class NextEditCache extends lifecycle_1.Disposable {
|
|
|
58
58
|
}
|
|
59
59
|
docCache.setNoNextEdit(documentContents, editWindow, source);
|
|
60
60
|
}
|
|
61
|
-
lookupNextEdit(docId, currentDocumentContents, currentSelection
|
|
61
|
+
lookupNextEdit(docId, currentDocumentContents, currentSelection) {
|
|
62
62
|
const docCache = this._documentCaches.get(docId);
|
|
63
63
|
if (!docCache) {
|
|
64
64
|
return undefined;
|
|
65
65
|
}
|
|
66
|
-
return docCache.lookupNextEdit(currentDocumentContents, currentSelection
|
|
66
|
+
return docCache.lookupNextEdit(currentDocumentContents, currentSelection);
|
|
67
67
|
}
|
|
68
|
-
tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection
|
|
68
|
+
tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection) {
|
|
69
69
|
const docCache = this._documentCaches.get(cachedEdit.docId);
|
|
70
70
|
if (!docCache) {
|
|
71
71
|
return undefined;
|
|
72
72
|
}
|
|
73
|
-
return docCache.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection
|
|
73
|
+
return docCache.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection);
|
|
74
74
|
}
|
|
75
75
|
rejectedNextEdit(requestId) {
|
|
76
76
|
this._sharedCache.getValues()
|
|
77
77
|
.filter(v => v.source.headerRequestId === requestId)
|
|
78
78
|
.forEach(v => v.rejected = true);
|
|
79
79
|
}
|
|
80
|
-
isRejectedNextEdit(docId, currentDocumentContents, edit
|
|
80
|
+
isRejectedNextEdit(docId, currentDocumentContents, edit) {
|
|
81
81
|
const docCache = this._documentCaches.get(docId);
|
|
82
82
|
if (!docCache) {
|
|
83
83
|
return false;
|
|
84
84
|
}
|
|
85
|
-
return docCache.isRejectedNextEdit(currentDocumentContents, edit
|
|
85
|
+
return docCache.isRejectedNextEdit(currentDocumentContents, edit);
|
|
86
86
|
}
|
|
87
87
|
evictedCachedEdit(cachedEdit) {
|
|
88
88
|
const docCache = this._documentCaches.get(cachedEdit.docId);
|
|
@@ -159,7 +159,7 @@ class DocumentEditCache {
|
|
|
159
159
|
this._nextEditCache.evictedCachedEdit(evicted[1]);
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
|
-
lookupNextEdit(currentDocumentContents, currentSelection
|
|
162
|
+
lookupNextEdit(currentDocumentContents, currentSelection) {
|
|
163
163
|
// TODO@chrmarti: Update entries i > 1 with user edits and edit window and start tracking.
|
|
164
164
|
const key = this._getKey(currentDocumentContents.value);
|
|
165
165
|
const cachedEdit = this._sharedCache.get(key);
|
|
@@ -172,18 +172,18 @@ class DocumentEditCache {
|
|
|
172
172
|
return cachedEdit;
|
|
173
173
|
}
|
|
174
174
|
for (const cachedEdit of this._trackedCachedEdits) {
|
|
175
|
-
const rebased = this.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection
|
|
175
|
+
const rebased = this.tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection);
|
|
176
176
|
if (rebased) {
|
|
177
177
|
return rebased;
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
return undefined;
|
|
181
181
|
}
|
|
182
|
-
tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection
|
|
182
|
+
tryRebaseCacheEntry(cachedEdit, currentDocumentContents, currentSelection) {
|
|
183
183
|
const logger = this._logger.createSubLogger('tryRebaseCacheEntry');
|
|
184
184
|
if (cachedEdit.userEditSince && !cachedEdit.rebaseFailed) {
|
|
185
185
|
const originalEdits = cachedEdit.edits || (cachedEdit.edit ? [cachedEdit.edit] : []);
|
|
186
|
-
const res = (0, editRebase_1.tryRebase)(cachedEdit.documentBeforeEdit.value, cachedEdit.editWindow, originalEdits, cachedEdit.detailedEdits, cachedEdit.userEditSince, currentDocumentContents.value, currentSelection, 'strict', logger
|
|
186
|
+
const res = (0, editRebase_1.tryRebase)(cachedEdit.documentBeforeEdit.value, cachedEdit.editWindow, originalEdits, cachedEdit.detailedEdits, cachedEdit.userEditSince, currentDocumentContents.value, currentSelection, 'strict', logger);
|
|
187
187
|
if (res === 'rebaseFailed') {
|
|
188
188
|
cachedEdit.rebaseFailed = true;
|
|
189
189
|
}
|
|
@@ -194,7 +194,7 @@ class DocumentEditCache {
|
|
|
194
194
|
// miss
|
|
195
195
|
}
|
|
196
196
|
else if (res.length) {
|
|
197
|
-
if (!cachedEdit.rejected && this.isRejectedNextEdit(currentDocumentContents, res[0].rebasedEdit
|
|
197
|
+
if (!cachedEdit.rejected && this.isRejectedNextEdit(currentDocumentContents, res[0].rebasedEdit)) {
|
|
198
198
|
cachedEdit.rejected = true;
|
|
199
199
|
}
|
|
200
200
|
return { ...cachedEdit, ...res[0] };
|
|
@@ -205,7 +205,7 @@ class DocumentEditCache {
|
|
|
205
205
|
}
|
|
206
206
|
return undefined;
|
|
207
207
|
}
|
|
208
|
-
isRejectedNextEdit(currentDocumentContents, edit
|
|
208
|
+
isRejectedNextEdit(currentDocumentContents, edit) {
|
|
209
209
|
const logger = this._logger.createSubLogger('isRejectedNextEdit');
|
|
210
210
|
const resultEdit = edit.removeCommonSuffixAndPrefix(currentDocumentContents.value);
|
|
211
211
|
for (const rejectedEdit of this._trackedCachedEdits.filter(edit => edit.rejected)) {
|
|
@@ -216,7 +216,7 @@ class DocumentEditCache {
|
|
|
216
216
|
if (!edits.length) {
|
|
217
217
|
continue; // cached 'no edits'
|
|
218
218
|
}
|
|
219
|
-
const rejectedEdits = (0, editRebase_1.tryRebase)(rejectedEdit.documentBeforeEdit.value, undefined, edits, rejectedEdit.detailedEdits, rejectedEdit.userEditSince, currentDocumentContents.value, [], 'lenient', logger
|
|
219
|
+
const rejectedEdits = (0, editRebase_1.tryRebase)(rejectedEdit.documentBeforeEdit.value, undefined, edits, rejectedEdit.detailedEdits, rejectedEdit.userEditSince, currentDocumentContents.value, [], 'lenient', logger);
|
|
220
220
|
if (typeof rejectedEdits === 'string') {
|
|
221
221
|
continue;
|
|
222
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextEditCache.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/node/nextEditCache.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;;;AAEhG,sGAA+G;AAG/G,sFAA2F;AAG3F,sDAAsD;AACtD,sEAAkF;AAClF,wFAA2F;AAI3F,qDAA0F;
|
|
1
|
+
{"version":3,"file":"nextEditCache.js","sourceRoot":"","sources":["../../../../../../src/_internal/extension/inlineEdits/node/nextEditCache.ts"],"names":[],"mappings":"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"}
|