@theia/ai-code-completion 1.55.0-next.25 → 1.55.0-next.37
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/lib/browser/ai-code-completion-preference.d.ts +1 -0
- package/lib/browser/ai-code-completion-preference.d.ts.map +1 -1
- package/lib/browser/ai-code-completion-preference.js +11 -1
- package/lib/browser/ai-code-completion-preference.js.map +1 -1
- package/lib/browser/ai-code-frontend-application-contribution.d.ts +2 -2
- package/lib/browser/ai-code-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/ai-code-frontend-application-contribution.js +27 -11
- package/lib/browser/ai-code-frontend-application-contribution.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/ai-code-completion-preference.ts +10 -0
- package/src/browser/ai-code-frontend-application-contribution.ts +37 -12
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PreferenceSchema } from '@theia/core/lib/browser/preferences/preference-contribution';
|
|
2
2
|
export declare const PREF_AI_INLINE_COMPLETION_ENABLE = "ai-features.codeCompletion.enableCodeCompletion";
|
|
3
|
+
export declare const PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = "ai-features.codeCompletion.excludedFileExtensions";
|
|
3
4
|
export declare const AICodeCompletionPreferencesSchema: PreferenceSchema;
|
|
4
5
|
//# sourceMappingURL=ai-code-completion-preference.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-completion-preference.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAG/F,eAAO,MAAM,gCAAgC,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-code-completion-preference.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAG/F,eAAO,MAAM,gCAAgC,oDAAoD,CAAC;AAClG,eAAO,MAAM,6CAA6C,sDAAsD,CAAC;AAEjH,eAAO,MAAM,iCAAiC,EAAE,gBAmB/C,CAAC"}
|
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.AICodeCompletionPreferencesSchema = exports.PREF_AI_INLINE_COMPLETION_ENABLE = void 0;
|
|
18
|
+
exports.AICodeCompletionPreferencesSchema = exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = exports.PREF_AI_INLINE_COMPLETION_ENABLE = void 0;
|
|
19
19
|
const ai_core_preferences_1 = require("@theia/ai-core/lib/browser/ai-core-preferences");
|
|
20
20
|
exports.PREF_AI_INLINE_COMPLETION_ENABLE = 'ai-features.codeCompletion.enableCodeCompletion';
|
|
21
|
+
exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = 'ai-features.codeCompletion.excludedFileExtensions';
|
|
21
22
|
exports.AICodeCompletionPreferencesSchema = {
|
|
22
23
|
type: 'object',
|
|
23
24
|
properties: {
|
|
@@ -26,6 +27,15 @@ exports.AICodeCompletionPreferencesSchema = {
|
|
|
26
27
|
type: 'boolean',
|
|
27
28
|
description: 'Enable AI completions inline within any (Monaco) editor.',
|
|
28
29
|
default: false
|
|
30
|
+
},
|
|
31
|
+
[exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS]: {
|
|
32
|
+
title: 'Excluded File Extensions',
|
|
33
|
+
type: 'array',
|
|
34
|
+
description: 'Specify file extensions (e.g., .md, .txt) where AI completions should be disabled.',
|
|
35
|
+
items: {
|
|
36
|
+
type: 'string'
|
|
37
|
+
},
|
|
38
|
+
default: []
|
|
29
39
|
}
|
|
30
40
|
}
|
|
31
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-completion-preference.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,wFAA2F;AAE9E,QAAA,gCAAgC,GAAG,iDAAiD,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-code-completion-preference.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,wFAA2F;AAE9E,QAAA,gCAAgC,GAAG,iDAAiD,CAAC;AACrF,QAAA,6CAA6C,GAAG,mDAAmD,CAAC;AAEpG,QAAA,iCAAiC,GAAqB;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,wCAAgC,CAAC,EAAE;YAChC,KAAK,EAAE,+CAAyB;YAChC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,0DAA0D;YACvE,OAAO,EAAE,KAAK;SACjB;QACD,CAAC,qDAA6C,CAAC,EAAE;YAC7C,KAAK,EAAE,0BAA0B;YACjC,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,oFAAoF;YACjG,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE,EAAE;SACd;KACJ;CACJ,CAAC"}
|
|
@@ -7,7 +7,7 @@ export declare class AIFrontendApplicationContribution implements FrontendApplic
|
|
|
7
7
|
protected readonly activationService: AIActivationService;
|
|
8
8
|
private toDispose;
|
|
9
9
|
onDidInitializeLayout(): void;
|
|
10
|
-
protected
|
|
11
|
-
protected handleInlineCompletions(
|
|
10
|
+
protected handlePreferences(): void;
|
|
11
|
+
protected handleInlineCompletions(): Disposable;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=ai-code-frontend-application-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,qBACa,iCAAkC,YAAW,+BAA+B;IAErF,OAAO,CAAC,4BAA4B,CAAkC;IAGtE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,OAAO,CAAC,SAAS,CAAiC;IAElD,qBAAqB,IAAI,IAAI;IAM7B,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"ai-code-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,qBACa,iCAAkC,YAAW,+BAA+B;IAErF,OAAO,CAAC,4BAA4B,CAAkC;IAGtE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,OAAO,CAAC,SAAS,CAAiC;IAElD,qBAAqB,IAAI,IAAI;IAM7B,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAkBnC,SAAS,CAAC,uBAAuB,IAAI,UAAU;CA0BlD"}
|
|
@@ -30,27 +30,43 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
|
|
|
30
30
|
}
|
|
31
31
|
onDidInitializeLayout() {
|
|
32
32
|
this.preferenceService.ready.then(() => {
|
|
33
|
-
this.
|
|
33
|
+
this.handlePreferences();
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
this.toDispose.set(
|
|
36
|
+
handlePreferences() {
|
|
37
|
+
const handler = () => this.handleInlineCompletions();
|
|
38
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
39
39
|
this.preferenceService.onPreferenceChanged(event => {
|
|
40
40
|
var _a;
|
|
41
|
-
if (event.preferenceName ===
|
|
42
|
-
(_a = this.toDispose.get(
|
|
43
|
-
this.toDispose.set(
|
|
41
|
+
if (event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_ENABLE || event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS) {
|
|
42
|
+
(_a = this.toDispose.get('inlineCompletions')) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
43
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
this.activationService.onDidChangeActiveStatus(change => {
|
|
47
47
|
var _a;
|
|
48
|
-
(_a = this.toDispose.get(
|
|
49
|
-
this.toDispose.set(
|
|
48
|
+
(_a = this.toDispose.get('inlineCompletions')) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
49
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
handleInlineCompletions(
|
|
53
|
-
|
|
52
|
+
handleInlineCompletions() {
|
|
53
|
+
const enable = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_ENABLE, false) && this.activationService.isActive;
|
|
54
|
+
if (!enable) {
|
|
55
|
+
return core_1.Disposable.NULL;
|
|
56
|
+
}
|
|
57
|
+
const excludedExtensions = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS, []);
|
|
58
|
+
return monaco.languages.registerInlineCompletionsProvider({ scheme: 'file' }, {
|
|
59
|
+
provideInlineCompletions: (model, position, context, token) => {
|
|
60
|
+
const fileName = model.uri.toString();
|
|
61
|
+
if (excludedExtensions.some(ext => fileName.endsWith(ext))) {
|
|
62
|
+
return { items: [] };
|
|
63
|
+
}
|
|
64
|
+
return this.inlineCodeCompletionProvider.provideInlineCompletions(model, position, context, token);
|
|
65
|
+
},
|
|
66
|
+
freeInlineCompletions: completions => {
|
|
67
|
+
this.inlineCodeCompletionProvider.freeInlineCompletions(completions);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
54
70
|
}
|
|
55
71
|
};
|
|
56
72
|
exports.AIFrontendApplicationContribution = AIFrontendApplicationContribution;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,oDAAoD;AAEpD,qDAA6F;AAC7F,4DAAkE;AAClE,wDAAiE;AACjE,sCAAyC;AACzC,6FAAuF;AACvF,
|
|
1
|
+
{"version":3,"file":"ai-code-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-code-completion",
|
|
3
|
-
"version": "1.55.0-next.
|
|
3
|
+
"version": "1.55.0-next.37+4e7843ca5",
|
|
4
4
|
"description": "Theia - AI Core",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.55.0-next.
|
|
7
|
-
"@theia/core": "1.55.0-next.
|
|
8
|
-
"@theia/filesystem": "1.55.0-next.
|
|
6
|
+
"@theia/ai-core": "1.55.0-next.37+4e7843ca5",
|
|
7
|
+
"@theia/core": "1.55.0-next.37+4e7843ca5",
|
|
8
|
+
"@theia/filesystem": "1.55.0-next.37+4e7843ca5",
|
|
9
9
|
"@theia/monaco-editor-core": "1.83.101",
|
|
10
|
-
"@theia/output": "1.55.0-next.
|
|
11
|
-
"@theia/workspace": "1.55.0-next.
|
|
10
|
+
"@theia/output": "1.55.0-next.37+4e7843ca5",
|
|
11
|
+
"@theia/workspace": "1.55.0-next.37+4e7843ca5",
|
|
12
12
|
"minimatch": "^5.1.0",
|
|
13
13
|
"tslib": "^2.6.2"
|
|
14
14
|
},
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"nyc": {
|
|
52
52
|
"extends": "../../configs/nyc.json"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "4e7843ca5ce4625e3b4823b9a87debd805906fba"
|
|
55
55
|
}
|
|
@@ -18,6 +18,7 @@ import { PreferenceSchema } from '@theia/core/lib/browser/preferences/preference
|
|
|
18
18
|
import { AI_CORE_PREFERENCES_TITLE } from '@theia/ai-core/lib/browser/ai-core-preferences';
|
|
19
19
|
|
|
20
20
|
export const PREF_AI_INLINE_COMPLETION_ENABLE = 'ai-features.codeCompletion.enableCodeCompletion';
|
|
21
|
+
export const PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = 'ai-features.codeCompletion.excludedFileExtensions';
|
|
21
22
|
|
|
22
23
|
export const AICodeCompletionPreferencesSchema: PreferenceSchema = {
|
|
23
24
|
type: 'object',
|
|
@@ -27,6 +28,15 @@ export const AICodeCompletionPreferencesSchema: PreferenceSchema = {
|
|
|
27
28
|
type: 'boolean',
|
|
28
29
|
description: 'Enable AI completions inline within any (Monaco) editor.',
|
|
29
30
|
default: false
|
|
31
|
+
},
|
|
32
|
+
[PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS]: {
|
|
33
|
+
title: 'Excluded File Extensions',
|
|
34
|
+
type: 'array',
|
|
35
|
+
description: 'Specify file extensions (e.g., .md, .txt) where AI completions should be disabled.',
|
|
36
|
+
items: {
|
|
37
|
+
type: 'string'
|
|
38
|
+
},
|
|
39
|
+
default: []
|
|
30
40
|
}
|
|
31
41
|
}
|
|
32
42
|
};
|
|
@@ -21,7 +21,7 @@ import { inject, injectable } from '@theia/core/shared/inversify';
|
|
|
21
21
|
import { AIActivationService } from '@theia/ai-core/lib/browser';
|
|
22
22
|
import { Disposable } from '@theia/core';
|
|
23
23
|
import { AICodeInlineCompletionsProvider } from './ai-code-inline-completion-provider';
|
|
24
|
-
import { PREF_AI_INLINE_COMPLETION_ENABLE } from './ai-code-completion-preference';
|
|
24
|
+
import { PREF_AI_INLINE_COMPLETION_ENABLE, PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS } from './ai-code-completion-preference';
|
|
25
25
|
|
|
26
26
|
@injectable()
|
|
27
27
|
export class AIFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
@@ -38,27 +38,52 @@ export class AIFrontendApplicationContribution implements FrontendApplicationCon
|
|
|
38
38
|
|
|
39
39
|
onDidInitializeLayout(): void {
|
|
40
40
|
this.preferenceService.ready.then(() => {
|
|
41
|
-
this.
|
|
41
|
+
this.handlePreferences();
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
protected
|
|
46
|
-
const
|
|
47
|
-
|
|
45
|
+
protected handlePreferences(): void {
|
|
46
|
+
const handler = () => this.handleInlineCompletions();
|
|
47
|
+
|
|
48
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
48
49
|
|
|
49
50
|
this.preferenceService.onPreferenceChanged(event => {
|
|
50
|
-
if (event.preferenceName ===
|
|
51
|
-
this.toDispose.get(
|
|
52
|
-
this.toDispose.set(
|
|
51
|
+
if (event.preferenceName === PREF_AI_INLINE_COMPLETION_ENABLE || event.preferenceName === PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS) {
|
|
52
|
+
this.toDispose.get('inlineCompletions')?.dispose();
|
|
53
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
53
54
|
}
|
|
54
55
|
});
|
|
56
|
+
|
|
55
57
|
this.activationService.onDidChangeActiveStatus(change => {
|
|
56
|
-
this.toDispose.get(
|
|
57
|
-
this.toDispose.set(
|
|
58
|
+
this.toDispose.get('inlineCompletions')?.dispose();
|
|
59
|
+
this.toDispose.set('inlineCompletions', handler());
|
|
58
60
|
});
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
protected handleInlineCompletions(
|
|
62
|
-
|
|
63
|
+
protected handleInlineCompletions(): Disposable {
|
|
64
|
+
const enable = this.preferenceService.get<boolean>(PREF_AI_INLINE_COMPLETION_ENABLE, false) && this.activationService.isActive;
|
|
65
|
+
|
|
66
|
+
if (!enable) {
|
|
67
|
+
return Disposable.NULL;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const excludedExtensions = this.preferenceService.get<string[]>(PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS, []);
|
|
71
|
+
|
|
72
|
+
return monaco.languages.registerInlineCompletionsProvider(
|
|
73
|
+
{ scheme: 'file' },
|
|
74
|
+
{
|
|
75
|
+
provideInlineCompletions: (model, position, context, token) => {
|
|
76
|
+
const fileName = model.uri.toString();
|
|
77
|
+
|
|
78
|
+
if (excludedExtensions.some(ext => fileName.endsWith(ext))) {
|
|
79
|
+
return { items: [] };
|
|
80
|
+
}
|
|
81
|
+
return this.inlineCodeCompletionProvider.provideInlineCompletions(model, position, context, token);
|
|
82
|
+
},
|
|
83
|
+
freeInlineCompletions: completions => {
|
|
84
|
+
this.inlineCodeCompletionProvider.freeInlineCompletions(completions);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
);
|
|
63
88
|
}
|
|
64
89
|
}
|