@theia/ai-code-completion 1.55.0-next.37 → 1.55.0-next.67
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-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-code-completion-frontend-module.js +3 -1
- package/lib/browser/ai-code-completion-frontend-module.js.map +1 -1
- 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 +7 -4
- package/lib/browser/ai-code-completion-preference.js.map +1 -1
- package/lib/browser/ai-code-frontend-application-contribution.d.ts +3 -2
- package/lib/browser/ai-code-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/ai-code-frontend-application-contribution.js +15 -3
- package/lib/browser/ai-code-frontend-application-contribution.js.map +1 -1
- package/lib/common/code-completion-agent.d.ts.map +1 -1
- package/lib/common/code-completion-agent.js +5 -8
- package/lib/common/code-completion-agent.js.map +1 -1
- package/package.json +8 -8
- package/src/browser/ai-code-completion-frontend-module.ts +4 -2
- package/src/browser/ai-code-completion-preference.ts +6 -3
- package/src/browser/ai-code-frontend-application-contribution.ts +19 -9
- package/src/common/code-completion-agent.ts +6 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-completion-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAQ/D,
|
|
1
|
+
{"version":3,"file":"ai-code-completion-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAQ/D,wBAaG"}
|
|
@@ -32,7 +32,9 @@ exports.default = new inversify_1.ContainerModule(bind => {
|
|
|
32
32
|
bind(code_completion_agent_1.CodeCompletionAgent).toService(code_completion_agent_1.CodeCompletionAgentImpl);
|
|
33
33
|
bind(ai_core_1.Agent).toService(code_completion_agent_1.CodeCompletionAgentImpl);
|
|
34
34
|
bind(ai_code_inline_completion_provider_1.AICodeInlineCompletionsProvider).toSelf().inSingletonScope();
|
|
35
|
-
bind(
|
|
35
|
+
bind(ai_code_frontend_application_contribution_1.AIFrontendApplicationContribution).toSelf().inSingletonScope();
|
|
36
|
+
bind(browser_1.FrontendApplicationContribution).to(ai_code_frontend_application_contribution_1.AIFrontendApplicationContribution);
|
|
37
|
+
bind(browser_1.KeybindingContribution).toService(ai_code_frontend_application_contribution_1.AIFrontendApplicationContribution);
|
|
36
38
|
bind(browser_1.PreferenceContribution).toConstantValue({ schema: ai_code_completion_preference_1.AICodeCompletionPreferencesSchema });
|
|
37
39
|
});
|
|
38
40
|
//# sourceMappingURL=ai-code-completion-frontend-module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-code-completion-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.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,sCAAsC;AACtC,4DAA+D;AAC/D,2EAA+F;AAC/F,2GAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"ai-code-completion-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.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,sCAAsC;AACtC,4DAA+D;AAC/D,2EAA+F;AAC/F,2GAAgG;AAChG,qDAA0H;AAC1H,4CAAuC;AACvC,mFAAoF;AACpF,6FAAuF;AAEvF,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,cAAO,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAU,cAAO,CAAC,CAAC;QACzD,OAAO,YAAY,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;IAC/D,IAAI,CAAC,+CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,eAAK,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC/C,IAAI,CAAC,oEAA+B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClE,IAAI,CAAC,6EAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,6EAAiC,CAAC,CAAC;IAC5E,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,6EAAiC,CAAC,CAAC;IAC1E,IAAI,CAAC,gCAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,iEAAiC,EAAE,CAAC,CAAC;AAChG,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
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_AUTOMATIC_ENABLE = "ai-features.codeCompletion.automaticCodeCompletion";
|
|
3
4
|
export declare const PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = "ai-features.codeCompletion.excludedFileExtensions";
|
|
4
5
|
export declare const AICodeCompletionPreferencesSchema: PreferenceSchema;
|
|
5
6
|
//# 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;AAClG,eAAO,MAAM,6CAA6C,sDAAsD,CAAC;AAEjH,eAAO,MAAM,iCAAiC,EAAE,
|
|
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,0CAA0C,uDAAuD,CAAC;AAC/G,eAAO,MAAM,6CAA6C,sDAAsD,CAAC;AAEjH,eAAO,MAAM,iCAAiC,EAAE,gBAqB/C,CAAC"}
|
|
@@ -15,18 +15,21 @@
|
|
|
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_EXCLUDED_EXTENSIONS = exports.PREF_AI_INLINE_COMPLETION_ENABLE = void 0;
|
|
18
|
+
exports.AICodeCompletionPreferencesSchema = exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = exports.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE = 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_AUTOMATIC_ENABLE = 'ai-features.codeCompletion.automaticCodeCompletion';
|
|
21
22
|
exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = 'ai-features.codeCompletion.excludedFileExtensions';
|
|
22
23
|
exports.AICodeCompletionPreferencesSchema = {
|
|
23
24
|
type: 'object',
|
|
24
25
|
properties: {
|
|
25
|
-
[exports.
|
|
26
|
+
[exports.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE]: {
|
|
26
27
|
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
27
28
|
type: 'boolean',
|
|
28
|
-
description: '
|
|
29
|
-
|
|
29
|
+
description: 'Automatically trigger AI completions inline within any (Monaco) editor while editing.\
|
|
30
|
+
\n\
|
|
31
|
+
Alternativly, you can manually trigger the code via the command "Trigger Inline Suggestion" or the default shortcut "SHIFT+Space".',
|
|
32
|
+
default: true
|
|
30
33
|
},
|
|
31
34
|
[exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS]: {
|
|
32
35
|
title: 'Excluded File Extensions',
|
|
@@ -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;AACrF,QAAA,6CAA6C,GAAG,mDAAmD,CAAC;AAEpG,QAAA,iCAAiC,GAAqB;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,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,0CAA0C,GAAG,oDAAoD,CAAC;AAClG,QAAA,6CAA6C,GAAG,mDAAmD,CAAC;AAEpG,QAAA,iCAAiC,GAAqB;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,kDAA0C,CAAC,EAAE;YAC1C,KAAK,EAAE,+CAAyB;YAChC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE;;+IAEsH;YACnI,OAAO,EAAE,IAAI;SAChB;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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
|
|
1
|
+
import { FrontendApplicationContribution, KeybindingContribution, KeybindingRegistry, PreferenceService } from '@theia/core/lib/browser';
|
|
2
2
|
import { AIActivationService } from '@theia/ai-core/lib/browser';
|
|
3
3
|
import { Disposable } from '@theia/core';
|
|
4
|
-
export declare class AIFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
4
|
+
export declare class AIFrontendApplicationContribution implements FrontendApplicationContribution, KeybindingContribution {
|
|
5
5
|
private inlineCodeCompletionProvider;
|
|
6
6
|
protected readonly preferenceService: PreferenceService;
|
|
7
7
|
protected readonly activationService: AIActivationService;
|
|
8
8
|
private toDispose;
|
|
9
9
|
onDidInitializeLayout(): void;
|
|
10
10
|
protected handlePreferences(): void;
|
|
11
|
+
registerKeybindings(keybindings: KeybindingRegistry): void;
|
|
11
12
|
protected handleInlineCompletions(): Disposable;
|
|
12
13
|
}
|
|
13
14
|
//# 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;
|
|
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,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEzI,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,qBACa,iCAAkC,YAAW,+BAA+B,EAAE,sBAAsB;IAE7G,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;IAmBnC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAQ1D,SAAS,CAAC,uBAAuB,IAAI,UAAU;CA0BlD"}
|
|
@@ -24,6 +24,7 @@ const browser_2 = require("@theia/ai-core/lib/browser");
|
|
|
24
24
|
const core_1 = require("@theia/core");
|
|
25
25
|
const ai_code_inline_completion_provider_1 = require("./ai-code-inline-completion-provider");
|
|
26
26
|
const ai_code_completion_preference_1 = require("./ai-code-completion-preference");
|
|
27
|
+
const languages_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/languages");
|
|
27
28
|
let AIFrontendApplicationContribution = class AIFrontendApplicationContribution {
|
|
28
29
|
constructor() {
|
|
29
30
|
this.toDispose = new Map();
|
|
@@ -38,7 +39,8 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
|
|
|
38
39
|
this.toDispose.set('inlineCompletions', handler());
|
|
39
40
|
this.preferenceService.onPreferenceChanged(event => {
|
|
40
41
|
var _a;
|
|
41
|
-
if (event.preferenceName === ai_code_completion_preference_1.
|
|
42
|
+
if (event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE
|
|
43
|
+
|| event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS) {
|
|
42
44
|
(_a = this.toDispose.get('inlineCompletions')) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
43
45
|
this.toDispose.set('inlineCompletions', handler());
|
|
44
46
|
}
|
|
@@ -49,14 +51,24 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
|
|
|
49
51
|
this.toDispose.set('inlineCompletions', handler());
|
|
50
52
|
});
|
|
51
53
|
}
|
|
54
|
+
registerKeybindings(keybindings) {
|
|
55
|
+
keybindings.registerKeybinding({
|
|
56
|
+
command: 'editor.action.inlineSuggest.trigger',
|
|
57
|
+
keybinding: 'Shift+Space',
|
|
58
|
+
when: '!editorReadonly && editorTextFocus'
|
|
59
|
+
});
|
|
60
|
+
}
|
|
52
61
|
handleInlineCompletions() {
|
|
53
|
-
|
|
54
|
-
if (!enable) {
|
|
62
|
+
if (!this.activationService.isActive) {
|
|
55
63
|
return core_1.Disposable.NULL;
|
|
56
64
|
}
|
|
65
|
+
const automatic = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE, true);
|
|
57
66
|
const excludedExtensions = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS, []);
|
|
58
67
|
return monaco.languages.registerInlineCompletionsProvider({ scheme: 'file' }, {
|
|
59
68
|
provideInlineCompletions: (model, position, context, token) => {
|
|
69
|
+
if (!automatic && context.triggerKind === languages_1.InlineCompletionTriggerKind.Automatic) {
|
|
70
|
+
return { items: [] };
|
|
71
|
+
}
|
|
60
72
|
const fileName = model.uri.toString();
|
|
61
73
|
if (excludedExtensions.some(ext => fileName.endsWith(ext))) {
|
|
62
74
|
return { items: [] };
|
|
@@ -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,
|
|
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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-completion-agent.d.ts","sourceRoot":"","sources":["../../src/common/code-completion-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"code-completion-agent.d.ts","sourceRoot":"","sources":["../../src/common/code-completion-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,KAAK,EAAE,sBAAsB,EAAE,6BAA6B,EAC5D,qBAAqB,EAAwB,wBAAwB,EAAE,aAAa,EAAE,cAAc,EACvG,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AAEpD,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAoB,SAAQ,KAAK;IAC9C,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAC/E,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;CACnJ;AAED,qBACa,uBAAwB,YAAW,mBAAmB;IACzD,wBAAwB,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EACjD,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAChC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAiF1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1B,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,EAAE,SAAqB;IACvB,IAAI,SAAqB;IACzB,WAAW,SAC2E;IACtF,eAAe,EAAE,cAAc,EAAE,CAW/B;IACF,yBAAyB,EAAE,wBAAwB,EAAE,CAKnD;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,CAKvD;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACxC"}
|
|
@@ -94,17 +94,15 @@ Only return the exact replacement for [[MARKER]] to complete the snippet.`,
|
|
|
94
94
|
const request = {
|
|
95
95
|
messages: [{ type: 'text', actor: 'user', query: prompt }],
|
|
96
96
|
};
|
|
97
|
-
|
|
97
|
+
if (token.isCancellationRequested) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
this.recordingService.recordRequest({
|
|
98
101
|
agentId: this.id,
|
|
99
102
|
sessionId,
|
|
100
|
-
timestamp: Date.now(),
|
|
101
103
|
requestId,
|
|
102
104
|
request: prompt,
|
|
103
|
-
};
|
|
104
|
-
if (token.isCancellationRequested) {
|
|
105
|
-
return undefined;
|
|
106
|
-
}
|
|
107
|
-
this.recordingService.recordRequest(requestEntry);
|
|
105
|
+
});
|
|
108
106
|
const response = await languageModel.request(request, token);
|
|
109
107
|
if (token.isCancellationRequested) {
|
|
110
108
|
return undefined;
|
|
@@ -116,7 +114,6 @@ Only return the exact replacement for [[MARKER]] to complete the snippet.`,
|
|
|
116
114
|
this.recordingService.recordResponse({
|
|
117
115
|
agentId: this.id,
|
|
118
116
|
sessionId,
|
|
119
|
-
timestamp: Date.now(),
|
|
120
117
|
requestId,
|
|
121
118
|
response: completionText,
|
|
122
119
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-completion-agent.js","sourceRoot":"","sources":["../../src/common/code-completion-agent.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,sDAGmC;AACnC,sCAAoD;AACpD,4DAAyE;AAG5D,QAAA,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAO1D,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAA7B;
|
|
1
|
+
{"version":3,"file":"code-completion-agent.js","sourceRoot":"","sources":["../../src/common/code-completion-agent.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.67+8664face6",
|
|
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.67+8664face6",
|
|
7
|
+
"@theia/core": "1.55.0-next.67+8664face6",
|
|
8
|
+
"@theia/filesystem": "1.55.0-next.67+8664face6",
|
|
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.67+8664face6",
|
|
11
|
+
"@theia/workspace": "1.55.0-next.67+8664face6",
|
|
12
12
|
"minimatch": "^5.1.0",
|
|
13
13
|
"tslib": "^2.6.2"
|
|
14
14
|
},
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
"watch": "theiaext watch"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@theia/ext-scripts": "1.
|
|
49
|
+
"@theia/ext-scripts": "1.55.0"
|
|
50
50
|
},
|
|
51
51
|
"nyc": {
|
|
52
52
|
"extends": "../../configs/nyc.json"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "8664face680c050b8d544a381645259b6821a634"
|
|
55
55
|
}
|
|
@@ -18,7 +18,7 @@ import { ILogger } from '@theia/core';
|
|
|
18
18
|
import { ContainerModule } from '@theia/core/shared/inversify';
|
|
19
19
|
import { CodeCompletionAgent, CodeCompletionAgentImpl } from '../common/code-completion-agent';
|
|
20
20
|
import { AIFrontendApplicationContribution } from './ai-code-frontend-application-contribution';
|
|
21
|
-
import { FrontendApplicationContribution, PreferenceContribution } from '@theia/core/lib/browser';
|
|
21
|
+
import { FrontendApplicationContribution, KeybindingContribution, PreferenceContribution } from '@theia/core/lib/browser';
|
|
22
22
|
import { Agent } from '@theia/ai-core';
|
|
23
23
|
import { AICodeCompletionPreferencesSchema } from './ai-code-completion-preference';
|
|
24
24
|
import { AICodeInlineCompletionsProvider } from './ai-code-inline-completion-provider';
|
|
@@ -32,6 +32,8 @@ export default new ContainerModule(bind => {
|
|
|
32
32
|
bind(CodeCompletionAgent).toService(CodeCompletionAgentImpl);
|
|
33
33
|
bind(Agent).toService(CodeCompletionAgentImpl);
|
|
34
34
|
bind(AICodeInlineCompletionsProvider).toSelf().inSingletonScope();
|
|
35
|
-
bind(
|
|
35
|
+
bind(AIFrontendApplicationContribution).toSelf().inSingletonScope();
|
|
36
|
+
bind(FrontendApplicationContribution).to(AIFrontendApplicationContribution);
|
|
37
|
+
bind(KeybindingContribution).toService(AIFrontendApplicationContribution);
|
|
36
38
|
bind(PreferenceContribution).toConstantValue({ schema: AICodeCompletionPreferencesSchema });
|
|
37
39
|
});
|
|
@@ -18,16 +18,19 @@ 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_AUTOMATIC_ENABLE = 'ai-features.codeCompletion.automaticCodeCompletion';
|
|
21
22
|
export const PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = 'ai-features.codeCompletion.excludedFileExtensions';
|
|
22
23
|
|
|
23
24
|
export const AICodeCompletionPreferencesSchema: PreferenceSchema = {
|
|
24
25
|
type: 'object',
|
|
25
26
|
properties: {
|
|
26
|
-
[
|
|
27
|
+
[PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE]: {
|
|
27
28
|
title: AI_CORE_PREFERENCES_TITLE,
|
|
28
29
|
type: 'boolean',
|
|
29
|
-
description: '
|
|
30
|
-
|
|
30
|
+
description: 'Automatically trigger AI completions inline within any (Monaco) editor while editing.\
|
|
31
|
+
\n\
|
|
32
|
+
Alternativly, you can manually trigger the code via the command "Trigger Inline Suggestion" or the default shortcut "SHIFT+Space".',
|
|
33
|
+
default: true
|
|
31
34
|
},
|
|
32
35
|
[PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS]: {
|
|
33
36
|
title: 'Excluded File Extensions',
|
|
@@ -16,15 +16,16 @@
|
|
|
16
16
|
|
|
17
17
|
import * as monaco from '@theia/monaco-editor-core';
|
|
18
18
|
|
|
19
|
-
import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
|
|
19
|
+
import { FrontendApplicationContribution, KeybindingContribution, KeybindingRegistry, PreferenceService } from '@theia/core/lib/browser';
|
|
20
20
|
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 {
|
|
24
|
+
import { PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE, PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS } from './ai-code-completion-preference';
|
|
25
|
+
import { InlineCompletionTriggerKind } from '@theia/monaco-editor-core/esm/vs/editor/common/languages';
|
|
25
26
|
|
|
26
27
|
@injectable()
|
|
27
|
-
export class AIFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
28
|
+
export class AIFrontendApplicationContribution implements FrontendApplicationContribution, KeybindingContribution {
|
|
28
29
|
@inject(AICodeInlineCompletionsProvider)
|
|
29
30
|
private inlineCodeCompletionProvider: AICodeInlineCompletionsProvider;
|
|
30
31
|
|
|
@@ -48,7 +49,8 @@ export class AIFrontendApplicationContribution implements FrontendApplicationCon
|
|
|
48
49
|
this.toDispose.set('inlineCompletions', handler());
|
|
49
50
|
|
|
50
51
|
this.preferenceService.onPreferenceChanged(event => {
|
|
51
|
-
if (event.preferenceName ===
|
|
52
|
+
if (event.preferenceName === PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE
|
|
53
|
+
|| event.preferenceName === PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS) {
|
|
52
54
|
this.toDispose.get('inlineCompletions')?.dispose();
|
|
53
55
|
this.toDispose.set('inlineCompletions', handler());
|
|
54
56
|
}
|
|
@@ -60,21 +62,29 @@ export class AIFrontendApplicationContribution implements FrontendApplicationCon
|
|
|
60
62
|
});
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
registerKeybindings(keybindings: KeybindingRegistry): void {
|
|
66
|
+
keybindings.registerKeybinding({
|
|
67
|
+
command: 'editor.action.inlineSuggest.trigger',
|
|
68
|
+
keybinding: 'Shift+Space',
|
|
69
|
+
when: '!editorReadonly && editorTextFocus'
|
|
70
|
+
});
|
|
71
|
+
}
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
protected handleInlineCompletions(): Disposable {
|
|
74
|
+
if (!this.activationService.isActive) {
|
|
67
75
|
return Disposable.NULL;
|
|
68
76
|
}
|
|
69
|
-
|
|
77
|
+
const automatic = this.preferenceService.get<boolean>(PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE, true);
|
|
70
78
|
const excludedExtensions = this.preferenceService.get<string[]>(PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS, []);
|
|
71
79
|
|
|
72
80
|
return monaco.languages.registerInlineCompletionsProvider(
|
|
73
81
|
{ scheme: 'file' },
|
|
74
82
|
{
|
|
75
83
|
provideInlineCompletions: (model, position, context, token) => {
|
|
84
|
+
if (!automatic && context.triggerKind === InlineCompletionTriggerKind.Automatic) {
|
|
85
|
+
return { items: [] };
|
|
86
|
+
}
|
|
76
87
|
const fileName = model.uri.toString();
|
|
77
|
-
|
|
78
88
|
if (excludedExtensions.some(ext => fileName.endsWith(ext))) {
|
|
79
89
|
return { items: [] };
|
|
80
90
|
}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
17
|
import {
|
|
18
|
-
Agent, AgentSpecificVariables,
|
|
18
|
+
Agent, AgentSpecificVariables, CommunicationRecordingService, getTextOfResponse,
|
|
19
19
|
LanguageModelRegistry, LanguageModelRequest, LanguageModelRequirement, PromptService, PromptTemplate
|
|
20
20
|
} from '@theia/ai-core/lib/common';
|
|
21
21
|
import { generateUuid, ILogger } from '@theia/core';
|
|
@@ -84,17 +84,15 @@ export class CodeCompletionAgentImpl implements CodeCompletionAgent {
|
|
|
84
84
|
const request: LanguageModelRequest = {
|
|
85
85
|
messages: [{ type: 'text', actor: 'user', query: prompt }],
|
|
86
86
|
};
|
|
87
|
-
|
|
87
|
+
if (token.isCancellationRequested) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
this.recordingService.recordRequest({
|
|
88
91
|
agentId: this.id,
|
|
89
92
|
sessionId,
|
|
90
|
-
timestamp: Date.now(),
|
|
91
93
|
requestId,
|
|
92
94
|
request: prompt,
|
|
93
|
-
};
|
|
94
|
-
if (token.isCancellationRequested) {
|
|
95
|
-
return undefined;
|
|
96
|
-
}
|
|
97
|
-
this.recordingService.recordRequest(requestEntry);
|
|
95
|
+
});
|
|
98
96
|
const response = await languageModel.request(request, token);
|
|
99
97
|
if (token.isCancellationRequested) {
|
|
100
98
|
return undefined;
|
|
@@ -106,7 +104,6 @@ export class CodeCompletionAgentImpl implements CodeCompletionAgent {
|
|
|
106
104
|
this.recordingService.recordResponse({
|
|
107
105
|
agentId: this.id,
|
|
108
106
|
sessionId,
|
|
109
|
-
timestamp: Date.now(),
|
|
110
107
|
requestId,
|
|
111
108
|
response: completionText,
|
|
112
109
|
});
|