@codingame/monaco-vscode-telemetry-service-override 32.0.2 → 33.0.9

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.
Files changed (48) hide show
  1. package/index.js +2 -0
  2. package/package.json +3 -3
  3. package/vscode/src/vs/platform/telemetry/common/telemetryLogAppender.js +1 -1
  4. package/vscode/src/vs/platform/telemetry/common/telemetryService.js +21 -21
  5. package/vscode/src/vs/workbench/contrib/bracketPairColorizer2Telemetry/browser/bracketPairColorizer2Telemetry.contribution.d.ts +1 -0
  6. package/vscode/src/vs/workbench/contrib/bracketPairColorizer2Telemetry/browser/bracketPairColorizer2Telemetry.contribution.js +34 -0
  7. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/aiContributionFeature.d.ts +15 -0
  8. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/aiContributionFeature.js +97 -0
  9. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsChart.d.ts +24 -0
  10. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsChart.js +236 -0
  11. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsFeature.d.ts +24 -0
  12. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsFeature.js +213 -0
  13. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsStatusBar.d.ts +27 -0
  14. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/aiStatsStatusBar.js +250 -0
  15. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editStats/media.css +127 -0
  16. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editTelemetry.contribution.d.ts +1 -0
  17. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editTelemetry.contribution.js +75 -0
  18. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editTelemetryContribution.d.ts +8 -0
  19. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/editTelemetryContribution.js +82 -0
  20. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/annotatedDocuments.d.ts +30 -0
  21. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/annotatedDocuments.js +79 -0
  22. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/documentWithAnnotatedEdits.d.ts +128 -0
  23. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/documentWithAnnotatedEdits.js +297 -0
  24. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/observableWorkspace.d.ts +31 -0
  25. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/observableWorkspace.js +66 -0
  26. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/utils.d.ts +9 -0
  27. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/utils.js +47 -0
  28. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/vscodeObservableWorkspace.d.ts +26 -0
  29. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/helpers/vscodeObservableWorkspace.js +84 -0
  30. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/settingIds.d.ts +2 -0
  31. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/settingIds.js +6 -0
  32. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/settings.d.ts +3 -0
  33. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/settings.js +7 -0
  34. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/arcTelemetryReporter.d.ts +37 -0
  35. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/arcTelemetryReporter.js +80 -0
  36. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/arcTelemetrySender.d.ts +20 -0
  37. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/arcTelemetrySender.js +173 -0
  38. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editSourceTrackingFeature.d.ts +23 -0
  39. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editSourceTrackingFeature.js +232 -0
  40. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editSourceTrackingImpl.d.ts +48 -0
  41. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editSourceTrackingImpl.js +292 -0
  42. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editTracker.d.ts +41 -0
  43. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/editTracker.js +99 -0
  44. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/scmAdapter.d.ts +18 -0
  45. package/vscode/src/vs/workbench/contrib/editTelemetry/browser/telemetry/scmAdapter.js +44 -0
  46. package/vscode/src/vs/workbench/contrib/editTelemetry/common/arcTracker.d.ts +29 -0
  47. package/vscode/src/vs/workbench/contrib/editTelemetry/common/arcTracker.js +64 -0
  48. package/vscode/src/vs/workbench/contrib/telemetry/browser/telemetry.contribution.js +1 -1
@@ -0,0 +1,297 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { AsyncReader, AsyncReaderEndOfStream } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
4
+ import { CachedFunction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/cache';
5
+ import { Disposable, DisposableStore } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
6
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
7
+ import { AnnotatedStringEdit } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit';
8
+ import { IEditorWorkerService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/editorWorker.service';
9
+ import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
10
+ import { iterateObservableChanges, mapObservableDelta } from './utils.js';
11
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
12
+ import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
13
+
14
+ class DocumentWithSourceAnnotatedEdits extends Disposable {
15
+ constructor(_originalDoc) {
16
+ super();
17
+ this._originalDoc = _originalDoc;
18
+ const v = this.value = observableValue(this, _originalDoc.value.get());
19
+ this._register(runOnChange(this._originalDoc.value, (val, _prevVal, edits) => {
20
+ const eComposed = AnnotatedStringEdit.compose(( edits.map(e => {
21
+ const editSourceData = ( new EditSourceData(e.reason));
22
+ return e.mapData(() => editSourceData);
23
+ })));
24
+ v.set(val, undefined, {
25
+ edit: eComposed
26
+ });
27
+ }));
28
+ }
29
+ waitForQueue() {
30
+ return Promise.resolve();
31
+ }
32
+ }
33
+ class EditSourceData {
34
+ constructor(editSource) {
35
+ this.editSource = editSource;
36
+ this.key = this.editSource.toKey(1);
37
+ this.source = EditSourceBase.create(this.editSource);
38
+ }
39
+ join(data) {
40
+ if (this.editSource !== data.editSource) {
41
+ return undefined;
42
+ }
43
+ return this;
44
+ }
45
+ toEditSourceData() {
46
+ return ( new EditKeySourceData(this.key, this.source, this.editSource));
47
+ }
48
+ }
49
+ class EditKeySourceData {
50
+ constructor(key, source, representative) {
51
+ this.key = key;
52
+ this.source = source;
53
+ this.representative = representative;
54
+ }
55
+ join(data) {
56
+ if (this.key !== data.key) {
57
+ return undefined;
58
+ }
59
+ if (this.source !== data.source) {
60
+ return undefined;
61
+ }
62
+ return this;
63
+ }
64
+ }
65
+ class EditSourceBase {
66
+ static {
67
+ this._cache = ( new CachedFunction({
68
+ getCacheKey: v => ( v.toString())
69
+ }, arg => arg));
70
+ }
71
+ static create(reason) {
72
+ const data = reason.metadata;
73
+ switch (data.source) {
74
+ case "reloadFromDisk":
75
+ return this._cache.get(( new ExternalEditSource()));
76
+ case "inlineCompletionPartialAccept":
77
+ case "inlineCompletionAccept":
78
+ {
79
+ const type = "type" in data ? data.type : undefined;
80
+ if ("$nes" in data && data.$nes) {
81
+ return this._cache.get(( new InlineSuggestEditSource("nes", data.$extensionId ?? "", data.$providerId ?? "", type)));
82
+ }
83
+ return this._cache.get(( new InlineSuggestEditSource("completion", data.$extensionId ?? "", data.$providerId ?? "", type)));
84
+ }
85
+ case "snippet":
86
+ return this._cache.get(( new IdeEditSource("suggest")));
87
+ case "unknown":
88
+ if (!data.name) {
89
+ return this._cache.get(( new UnknownEditSource()));
90
+ }
91
+ switch (data.name) {
92
+ case "formatEditsCommand":
93
+ return this._cache.get(( new IdeEditSource("format")));
94
+ }
95
+ return this._cache.get(( new UnknownEditSource()));
96
+ case "Chat.applyEdits":
97
+ return this._cache.get(( new ChatEditSource("sidebar")));
98
+ case "inlineChat.applyEdits":
99
+ return this._cache.get(( new ChatEditSource("inline")));
100
+ case "cursor":
101
+ return this._cache.get(( new UserEditSource()));
102
+ default:
103
+ return this._cache.get(( new UnknownEditSource()));
104
+ }
105
+ }
106
+ }
107
+ class InlineSuggestEditSource extends EditSourceBase {
108
+ constructor(kind, extensionId, providerId, type) {
109
+ super();
110
+ this.kind = kind;
111
+ this.extensionId = extensionId;
112
+ this.providerId = providerId;
113
+ this.type = type;
114
+ this.category = "ai";
115
+ this.feature = "inlineSuggest";
116
+ }
117
+ toString() {
118
+ return `${this.category}/${this.feature}/${this.kind}/${this.extensionId}/${this.type}`;
119
+ }
120
+ getColor() {
121
+ return "#00ff0033";
122
+ }
123
+ }
124
+ class ChatEditSource extends EditSourceBase {
125
+ constructor(kind) {
126
+ super();
127
+ this.kind = kind;
128
+ this.category = "ai";
129
+ this.feature = "chat";
130
+ }
131
+ toString() {
132
+ return `${this.category}/${this.feature}/${this.kind}`;
133
+ }
134
+ getColor() {
135
+ return "#00ff0066";
136
+ }
137
+ }
138
+ class IdeEditSource extends EditSourceBase {
139
+ constructor(feature) {
140
+ super();
141
+ this.feature = feature;
142
+ this.category = "ide";
143
+ }
144
+ toString() {
145
+ return `${this.category}/${this.feature}`;
146
+ }
147
+ getColor() {
148
+ return this.feature === "format" ? "#0000ff33" : "#80808033";
149
+ }
150
+ }
151
+ class UserEditSource extends EditSourceBase {
152
+ constructor() {
153
+ super();
154
+ this.category = "user";
155
+ }
156
+ toString() {
157
+ return this.category;
158
+ }
159
+ getColor() {
160
+ return "#d3d3d333";
161
+ }
162
+ }
163
+ class ExternalEditSource extends EditSourceBase {
164
+ constructor() {
165
+ super();
166
+ this.category = "external";
167
+ }
168
+ toString() {
169
+ return this.category;
170
+ }
171
+ getColor() {
172
+ return "#009ab254";
173
+ }
174
+ }
175
+ class UnknownEditSource extends EditSourceBase {
176
+ constructor() {
177
+ super();
178
+ this.category = "unknown";
179
+ }
180
+ toString() {
181
+ return this.category;
182
+ }
183
+ getColor() {
184
+ return "#ff000033";
185
+ }
186
+ }
187
+ let CombineStreamedChanges = class CombineStreamedChanges extends Disposable {
188
+ constructor(_originalDoc, _instantiationService) {
189
+ super();
190
+ this._originalDoc = _originalDoc;
191
+ this._instantiationService = _instantiationService;
192
+ this._runStore = this._register(( new DisposableStore()));
193
+ this._runQueue = Promise.resolve();
194
+ this._diffService = this._instantiationService.createInstance(DiffService);
195
+ this.value = this._value = observableValue(this, _originalDoc.value.get());
196
+ this._restart();
197
+ }
198
+ async _restart() {
199
+ this._runStore.clear();
200
+ const iterator = iterateObservableChanges(this._originalDoc.value, this._runStore)[Symbol.asyncIterator]();
201
+ const p = this._runQueue;
202
+ this._runQueue = this._runQueue.then(() => this._run(iterator));
203
+ await p;
204
+ }
205
+ async _run(iterator) {
206
+ const reader = ( new AsyncReader(iterator));
207
+ while (true) {
208
+ let peeked = await reader.peek();
209
+ if (peeked === AsyncReaderEndOfStream) {
210
+ return;
211
+ } else if (isChatEdit(peeked)) {
212
+ const first = peeked;
213
+ let last = first;
214
+ let chatEdit = AnnotatedStringEdit.empty;
215
+ do {
216
+ reader.readBufferedOrThrow();
217
+ last = peeked;
218
+ chatEdit = chatEdit.compose(AnnotatedStringEdit.compose(( peeked.change.map(c => c.edit))));
219
+ const peekedOrUndefined = await reader.peekTimeout(1000);
220
+ if (!peekedOrUndefined) {
221
+ break;
222
+ }
223
+ peeked = peekedOrUndefined;
224
+ } while (peeked !== AsyncReaderEndOfStream && isChatEdit(peeked));
225
+ if (!chatEdit.isEmpty()) {
226
+ const data = chatEdit.replacements[0].data;
227
+ const diffEdit = await this._diffService.computeDiff(first.prevValue.value, last.value.value);
228
+ const edit = diffEdit.mapData(_e => data);
229
+ this._value.set(last.value, undefined, {
230
+ edit
231
+ });
232
+ }
233
+ } else {
234
+ reader.readBufferedOrThrow();
235
+ const e = AnnotatedStringEdit.compose(( peeked.change.map(c => c.edit)));
236
+ this._value.set(peeked.value, undefined, {
237
+ edit: e
238
+ });
239
+ }
240
+ }
241
+ }
242
+ async waitForQueue() {
243
+ await this._originalDoc.waitForQueue();
244
+ await this._restart();
245
+ }
246
+ };
247
+ CombineStreamedChanges = ( __decorate([( __param(1, IInstantiationService))], CombineStreamedChanges));
248
+ let DiffService = class DiffService {
249
+ constructor(_editorWorkerService) {
250
+ this._editorWorkerService = _editorWorkerService;
251
+ }
252
+ async computeDiff(original, modified) {
253
+ const diffEdit = await this._editorWorkerService.computeStringEditFromDiff(original, modified, {
254
+ maxComputationTimeMs: 500
255
+ }, "advanced");
256
+ return diffEdit;
257
+ }
258
+ };
259
+ DiffService = ( __decorate([( __param(0, IEditorWorkerService))], DiffService));
260
+ function isChatEdit(next) {
261
+ return next.change.every(c => c.edit.replacements.every(e => {
262
+ if (e.data.source.category === "ai" && e.data.source.feature === "chat") {
263
+ return true;
264
+ }
265
+ return false;
266
+ }));
267
+ }
268
+ class MinimizeEditsProcessor extends Disposable {
269
+ constructor(_originalDoc) {
270
+ super();
271
+ this._originalDoc = _originalDoc;
272
+ const v = this.value = observableValue(this, _originalDoc.value.get());
273
+ let prevValue = this._originalDoc.value.get().value;
274
+ this._register(runOnChange(this._originalDoc.value, (val, _prevVal, edits) => {
275
+ const eComposed = AnnotatedStringEdit.compose(( edits.map(e => e.edit)));
276
+ const e = eComposed.removeCommonSuffixAndPrefix(prevValue);
277
+ prevValue = val.value;
278
+ v.set(val, undefined, {
279
+ edit: e
280
+ });
281
+ }));
282
+ }
283
+ async waitForQueue() {
284
+ await this._originalDoc.waitForQueue();
285
+ }
286
+ }
287
+ function createDocWithJustReason(docWithAnnotatedEdits, store) {
288
+ const docWithJustReason = {
289
+ value: mapObservableDelta(docWithAnnotatedEdits.value, edit => ({
290
+ edit: edit.edit.mapData(d => d.data.toEditSourceData())
291
+ }), store),
292
+ waitForQueue: () => docWithAnnotatedEdits.waitForQueue()
293
+ };
294
+ return docWithJustReason;
295
+ }
296
+
297
+ export { CombineStreamedChanges, DiffService, DocumentWithSourceAnnotatedEdits, EditKeySourceData, EditSourceBase, EditSourceData, InlineSuggestEditSource, MinimizeEditsProcessor, createDocWithJustReason };
@@ -0,0 +1,31 @@
1
+ import { IObservableWithChange, IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
2
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
3
+ import { StringEdit } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit";
4
+ import { OffsetRange } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/ranges/offsetRange";
5
+ import { StringText } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/text/abstractText";
6
+ import { TextModelEditSource } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEditSource";
7
+ export declare abstract class ObservableWorkspace {
8
+ abstract get documents(): IObservable<readonly IObservableDocument[]>;
9
+ getFirstOpenDocument(): IObservableDocument | undefined;
10
+ getDocument(documentId: URI): IObservableDocument | undefined;
11
+ private _version;
12
+ /**
13
+ * Is fired when any open document changes.
14
+ */
15
+ readonly onDidOpenDocumentChange: IObservableWithChange<number, unknown>;
16
+ readonly lastActiveDocument: IObservable<IObservableDocument | undefined>;
17
+ }
18
+ export interface IObservableDocument {
19
+ readonly uri: URI;
20
+ readonly value: IObservableWithChange<StringText, StringEditWithReason>;
21
+ /**
22
+ * Increases whenever the value changes. Is also used to reference document states from the past.
23
+ */
24
+ readonly version: IObservable<number>;
25
+ readonly languageId: IObservable<string>;
26
+ }
27
+ export declare class StringEditWithReason extends StringEdit {
28
+ readonly reason: TextModelEditSource;
29
+ static replace(range: OffsetRange, newText: string, source?: TextModelEditSource): StringEditWithReason;
30
+ constructor(replacements: StringEdit["replacements"], reason: TextModelEditSource);
31
+ }
@@ -0,0 +1,66 @@
1
+
2
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
3
+ import { StringEdit, StringReplacement } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit';
4
+ import { EditSources } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/textModelEditSource';
5
+ import { derivedHandleChanges, derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
6
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
7
+ import { autorun } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/reactions/autorun';
8
+ import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
9
+
10
+ class ObservableWorkspace {
11
+ constructor() {
12
+ this._version = 0;
13
+ this.onDidOpenDocumentChange = derivedHandleChanges({
14
+ owner: this,
15
+ changeTracker: {
16
+ createChangeSummary: () => ({
17
+ didChange: false
18
+ }),
19
+ handleChange: (ctx, changeSummary) => {
20
+ if (!ctx.didChange(this.documents)) {
21
+ changeSummary.didChange = true;
22
+ }
23
+ return true;
24
+ }
25
+ }
26
+ }, (reader, changeSummary) => {
27
+ const docs = this.documents.read(reader);
28
+ for (const d of docs) {
29
+ d.value.read(reader);
30
+ }
31
+ if (changeSummary.didChange) {
32
+ this._version++;
33
+ }
34
+ return this._version;
35
+ });
36
+ this.lastActiveDocument = derived(reader => {
37
+ const obs = observableValue("lastActiveDocument", undefined);
38
+ reader.store.add(autorun(reader => {
39
+ const docs = this.documents.read(reader);
40
+ for (const d of docs) {
41
+ reader.store.add(runOnChange(d.value, () => {
42
+ obs.set(d, undefined);
43
+ }));
44
+ }
45
+ }));
46
+ return obs;
47
+ }).flatten();
48
+ }
49
+ getFirstOpenDocument() {
50
+ return this.documents.get()[0];
51
+ }
52
+ getDocument(documentId) {
53
+ return this.documents.get().find(d => ( d.uri.toString()) === ( documentId.toString()));
54
+ }
55
+ }
56
+ class StringEditWithReason extends StringEdit {
57
+ static replace(range, newText, source = EditSources.unknown({})) {
58
+ return ( new StringEditWithReason([( new StringReplacement(range, newText))], source));
59
+ }
60
+ constructor(replacements, reason) {
61
+ super(replacements);
62
+ this.reason = reason;
63
+ }
64
+ }
65
+
66
+ export { ObservableWorkspace, StringEditWithReason };
@@ -0,0 +1,9 @@
1
+ import { DisposableStore } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IObservableWithChange, RemoveUndefined } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
+ export declare function sumByCategory<T, TCategory extends string>(items: readonly T[], getValue: (item: T) => number, getCategory: (item: T) => TCategory): Record<TCategory, number | undefined>;
4
+ export declare function mapObservableDelta<T, TDelta, TDeltaNew>(obs: IObservableWithChange<T, TDelta>, mapFn: (value: TDelta) => TDeltaNew, store: DisposableStore): IObservableWithChange<T, TDeltaNew>;
5
+ export declare function iterateObservableChanges<T, TChange>(obs: IObservableWithChange<T, TChange>, store: DisposableStore): AsyncIterable<{
6
+ value: T;
7
+ prevValue: T;
8
+ change: RemoveUndefined<TChange>[];
9
+ }>;
@@ -0,0 +1,47 @@
1
+
2
+ import { AsyncIterableProducer } from '@codingame/monaco-vscode-api/vscode/vs/base/common/async';
3
+ import { toDisposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
4
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
5
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
6
+ import { runOnChange } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/runOnChange';
7
+ import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
8
+
9
+ function sumByCategory(items, getValue, getCategory) {
10
+ return items.reduce((acc, item) => {
11
+ const category = getCategory(item);
12
+ acc[category] = (acc[category] || 0) + getValue(item);
13
+ return acc;
14
+ }, {});
15
+ }
16
+ function mapObservableDelta(obs, mapFn, store) {
17
+ const obsResult = observableValue("mapped", obs.get());
18
+ store.add(runOnChange(obs, (value, _prevValue, changes) => {
19
+ transaction(tx => {
20
+ for (const c of changes) {
21
+ obsResult.set(value, tx, mapFn(c));
22
+ }
23
+ });
24
+ }));
25
+ return obsResult;
26
+ }
27
+ function iterateObservableChanges(obs, store) {
28
+ return new AsyncIterableProducer(e => {
29
+ if (store.isDisposed) {
30
+ return;
31
+ }
32
+ store.add(runOnChange(obs, (value, prevValue, change) => {
33
+ e.emitOne({
34
+ value,
35
+ prevValue,
36
+ change: change
37
+ });
38
+ }));
39
+ return ( new Promise(res => {
40
+ store.add(toDisposable(() => {
41
+ res(undefined);
42
+ }));
43
+ }));
44
+ });
45
+ }
46
+
47
+ export { iterateObservableChanges, mapObservableDelta, sumByCategory };
@@ -0,0 +1,26 @@
1
+ import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IObservable, IObservableWithChange } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
+ import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
4
+ import { StringText } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/text/abstractText";
5
+ import { ITextModel } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/model";
6
+ import { IModelService } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service";
7
+ import { IObservableDocument, ObservableWorkspace, StringEditWithReason } from "./observableWorkspace.js";
8
+ export declare class VSCodeWorkspace extends ObservableWorkspace implements IDisposable {
9
+ private readonly _textModelService;
10
+ private readonly _documents;
11
+ get documents(): IObservable<VSCodeDocument[]>;
12
+ private readonly _store;
13
+ constructor(_textModelService: IModelService);
14
+ dispose(): void;
15
+ }
16
+ export declare class VSCodeDocument extends Disposable implements IObservableDocument {
17
+ readonly textModel: ITextModel;
18
+ get uri(): URI;
19
+ private readonly _value;
20
+ private readonly _version;
21
+ private readonly _languageId;
22
+ get value(): IObservableWithChange<StringText, StringEditWithReason>;
23
+ get version(): IObservable<number>;
24
+ get languageId(): IObservable<string>;
25
+ constructor(textModel: ITextModel);
26
+ }
@@ -0,0 +1,84 @@
1
+
2
+ import { __decorate, __param } from '@codingame/monaco-vscode-api/external/tslib/tslib.es6';
3
+ import { onUnexpectedError } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errors';
4
+ import { DisposableStore, Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
5
+ import '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/index';
6
+ import { isDefined } from '@codingame/monaco-vscode-api/vscode/vs/base/common/types';
7
+ import { StringText } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/core/text/abstractText';
8
+ import { offsetEditFromContentChanges } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/model/textModelStringEdit';
9
+ import { IModelService } from '@codingame/monaco-vscode-api/vscode/vs/editor/common/services/model.service';
10
+ import { ObservableWorkspace, StringEditWithReason } from './observableWorkspace.js';
11
+ import { observableSignalFromEvent } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableSignalFromEvent';
12
+ import { derived } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/derived';
13
+ import { mapObservableArrayCached } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/utils/utils';
14
+ import { observableValue } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/observables/observableValue';
15
+ import { transaction } from '@codingame/monaco-vscode-api/vscode/vs/base/common/observableInternal/transaction';
16
+
17
+ let VSCodeWorkspace = class VSCodeWorkspace extends ObservableWorkspace {
18
+ get documents() {
19
+ return this._documents;
20
+ }
21
+ constructor(_textModelService) {
22
+ super();
23
+ this._textModelService = _textModelService;
24
+ this._store = ( new DisposableStore());
25
+ const onModelAdded = observableSignalFromEvent(this, this._textModelService.onModelAdded);
26
+ const onModelRemoved = observableSignalFromEvent(this, this._textModelService.onModelRemoved);
27
+ const models = derived(this, reader => {
28
+ onModelAdded.read(reader);
29
+ onModelRemoved.read(reader);
30
+ const models = this._textModelService.getModels();
31
+ return models;
32
+ });
33
+ const documents = ( mapObservableArrayCached(this, models, (m, store) => {
34
+ if (m.isTooLargeForSyncing()) {
35
+ return undefined;
36
+ }
37
+ return store.add(( new VSCodeDocument(m)));
38
+ }).recomputeInitiallyAndOnChange(this._store).map(d => d.filter(isDefined)));
39
+ this._documents = documents;
40
+ }
41
+ dispose() {
42
+ this._store.dispose();
43
+ }
44
+ };
45
+ VSCodeWorkspace = ( __decorate([( __param(0, IModelService))], VSCodeWorkspace));
46
+ class VSCodeDocument extends Disposable {
47
+ get uri() {
48
+ return this.textModel.uri;
49
+ }
50
+ get value() {
51
+ return this._value;
52
+ }
53
+ get version() {
54
+ return this._version;
55
+ }
56
+ get languageId() {
57
+ return this._languageId;
58
+ }
59
+ constructor(textModel) {
60
+ super();
61
+ this.textModel = textModel;
62
+ this._value = observableValue(this, ( new StringText(this.textModel.getValue())));
63
+ this._version = observableValue(this, this.textModel.getVersionId());
64
+ this._languageId = observableValue(this, this.textModel.getLanguageId());
65
+ this._register(this.textModel.onDidChangeContent(e => {
66
+ transaction(tx => {
67
+ const edit = offsetEditFromContentChanges(e.changes);
68
+ if (e.detailedReasons.length !== 1) {
69
+ onUnexpectedError(( new Error(`Unexpected number of detailed reasons: ${e.detailedReasons.length}`)));
70
+ }
71
+ const change = ( new StringEditWithReason(edit.replacements, e.detailedReasons[0]));
72
+ this._value.set(( new StringText(this.textModel.getValue())), tx, change);
73
+ this._version.set(this.textModel.getVersionId(), tx);
74
+ });
75
+ }));
76
+ this._register(this.textModel.onDidChangeLanguage(e => {
77
+ transaction(tx => {
78
+ this._languageId.set(this.textModel.getLanguageId(), tx);
79
+ });
80
+ }));
81
+ }
82
+ }
83
+
84
+ export { VSCodeDocument, VSCodeWorkspace };
@@ -0,0 +1,2 @@
1
+ export declare const EDIT_TELEMETRY_SETTING_ID = "telemetry.editStats.enabled";
2
+ export declare const AI_STATS_SETTING_ID = "editor.aiStats.enabled";
@@ -0,0 +1,6 @@
1
+
2
+
3
+ const EDIT_TELEMETRY_SETTING_ID = 'telemetry.editStats.enabled';
4
+ const AI_STATS_SETTING_ID = 'editor.aiStats.enabled';
5
+
6
+ export { AI_STATS_SETTING_ID, EDIT_TELEMETRY_SETTING_ID };
@@ -0,0 +1,3 @@
1
+ export declare const EDIT_TELEMETRY_DETAILS_SETTING_ID = "telemetry.editStats.details.enabled";
2
+ export declare const EDIT_TELEMETRY_SHOW_DECORATIONS = "telemetry.editStats.showDecorations";
3
+ export declare const EDIT_TELEMETRY_SHOW_STATUS_BAR = "telemetry.editStats.showStatusBar";
@@ -0,0 +1,7 @@
1
+
2
+
3
+ const EDIT_TELEMETRY_DETAILS_SETTING_ID = 'telemetry.editStats.details.enabled';
4
+ const EDIT_TELEMETRY_SHOW_DECORATIONS = 'telemetry.editStats.showDecorations';
5
+ const EDIT_TELEMETRY_SHOW_STATUS_BAR = 'telemetry.editStats.showStatusBar';
6
+
7
+ export { EDIT_TELEMETRY_DETAILS_SETTING_ID, EDIT_TELEMETRY_SHOW_DECORATIONS, EDIT_TELEMETRY_SHOW_STATUS_BAR };
@@ -0,0 +1,37 @@
1
+ import { Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
2
+ import { IObservableWithChange, IObservable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/observable";
3
+ import { BaseStringEdit } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/edits/stringEdit";
4
+ import { StringText } from "@codingame/monaco-vscode-api/vscode/vs/editor/common/core/text/abstractText";
5
+ import { ITelemetryService } from "@codingame/monaco-vscode-api/vscode/vs/platform/telemetry/common/telemetry.service";
6
+ import type { ScmRepoAdapter } from "./scmAdapter.js";
7
+ export declare class ArcTelemetryReporter extends Disposable {
8
+ private readonly _timesMs;
9
+ private readonly _documentValueBeforeTrackedEdit;
10
+ private readonly _document;
11
+ private readonly _gitRepo;
12
+ private readonly _trackedEdit;
13
+ private readonly _sendTelemetryEvent;
14
+ private readonly _dispose;
15
+ private readonly _telemetryService;
16
+ private readonly _arcTracker;
17
+ private readonly _initialBranchName;
18
+ private readonly _initialLineCounts;
19
+ constructor(_timesMs: number[], _documentValueBeforeTrackedEdit: StringText, _document: {
20
+ value: IObservableWithChange<StringText, {
21
+ edit: BaseStringEdit;
22
+ }>;
23
+ }, _gitRepo: IObservable<ScmRepoAdapter | undefined>, _trackedEdit: BaseStringEdit, _sendTelemetryEvent: (res: ArcTelemetryReporterData) => void, _dispose: () => void, _telemetryService: ITelemetryService);
24
+ private _reportAfter;
25
+ private _report;
26
+ }
27
+ export interface ArcTelemetryReporterData {
28
+ telemetryService: ITelemetryService;
29
+ timeDelayMs: number;
30
+ didBranchChange: boolean;
31
+ arc: number;
32
+ originalCharCount: number;
33
+ currentLineCount: number;
34
+ currentDeletedLineCount: number;
35
+ originalLineCount: number;
36
+ originalDeletedLineCount: number;
37
+ }