@theia/ai-core 1.59.0 → 1.60.0-next.47

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 (53) hide show
  1. package/lib/browser/agent-preferences.d.ts +4 -0
  2. package/lib/browser/agent-preferences.d.ts.map +1 -0
  3. package/lib/browser/agent-preferences.js +74 -0
  4. package/lib/browser/agent-preferences.js.map +1 -0
  5. package/lib/browser/ai-activation-service.d.ts +1 -0
  6. package/lib/browser/ai-activation-service.d.ts.map +1 -1
  7. package/lib/browser/ai-activation-service.js +12 -2
  8. package/lib/browser/ai-activation-service.js.map +1 -1
  9. package/lib/browser/ai-core-command-contribution.d.ts +8 -0
  10. package/lib/browser/ai-core-command-contribution.d.ts.map +1 -0
  11. package/lib/browser/ai-core-command-contribution.js +44 -0
  12. package/lib/browser/ai-core-command-contribution.js.map +1 -0
  13. package/lib/browser/ai-core-frontend-module.d.ts.map +1 -1
  14. package/lib/browser/ai-core-frontend-module.js +8 -1
  15. package/lib/browser/ai-core-frontend-module.js.map +1 -1
  16. package/lib/browser/index.d.ts +1 -0
  17. package/lib/browser/index.d.ts.map +1 -1
  18. package/lib/browser/index.js +1 -0
  19. package/lib/browser/index.js.map +1 -1
  20. package/lib/browser/prompttemplate-contribution.d.ts.map +1 -1
  21. package/lib/browser/prompttemplate-contribution.js +4 -4
  22. package/lib/browser/prompttemplate-contribution.js.map +1 -1
  23. package/lib/common/prompt-service.d.ts +42 -1
  24. package/lib/common/prompt-service.d.ts.map +1 -1
  25. package/lib/common/prompt-service.js +68 -24
  26. package/lib/common/prompt-service.js.map +1 -1
  27. package/lib/common/prompt-service.spec.js +59 -1
  28. package/lib/common/prompt-service.spec.js.map +1 -1
  29. package/lib/common/prompt-variable-contribution.d.ts +16 -0
  30. package/lib/common/prompt-variable-contribution.d.ts.map +1 -0
  31. package/lib/common/prompt-variable-contribution.js +122 -0
  32. package/lib/common/prompt-variable-contribution.js.map +1 -0
  33. package/lib/common/variable-service.d.ts +26 -4
  34. package/lib/common/variable-service.d.ts.map +1 -1
  35. package/lib/common/variable-service.js +77 -16
  36. package/lib/common/variable-service.js.map +1 -1
  37. package/lib/common/variable-service.spec.d.ts +2 -0
  38. package/lib/common/variable-service.spec.d.ts.map +1 -0
  39. package/lib/common/variable-service.spec.js +237 -0
  40. package/lib/common/variable-service.spec.js.map +1 -0
  41. package/package.json +9 -9
  42. package/src/browser/agent-preferences.ts +74 -0
  43. package/src/browser/ai-activation-service.ts +13 -2
  44. package/src/browser/ai-core-command-contribution.ts +37 -0
  45. package/src/browser/ai-core-frontend-module.ts +10 -2
  46. package/src/browser/ai-settings-service.ts +1 -1
  47. package/src/browser/index.ts +1 -0
  48. package/src/browser/prompttemplate-contribution.ts +4 -4
  49. package/src/common/prompt-service.spec.ts +68 -1
  50. package/src/common/prompt-service.ts +109 -24
  51. package/src/common/prompt-variable-contribution.ts +138 -0
  52. package/src/common/variable-service.spec.ts +289 -0
  53. package/src/common/variable-service.ts +110 -13
@@ -1 +1 @@
1
- {"version":3,"file":"variable-service.js","sourceRoot":"","sources":["../../src/common/variable-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"variable-service.js","sourceRoot":"","sources":["../../src/common/variable-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=variable-service.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-service.spec.d.ts","sourceRoot":"","sources":["../../src/common/variable-service.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,237 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2024 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const sinon = require("sinon");
19
+ const core_1 = require("@theia/core");
20
+ const chai_1 = require("chai");
21
+ const variable_service_1 = require("./variable-service");
22
+ describe('DefaultAIVariableService', () => {
23
+ let variableService;
24
+ let contributionProvider;
25
+ let logger;
26
+ const varA = {
27
+ id: 'provider.a',
28
+ name: 'a',
29
+ description: 'Variable A'
30
+ };
31
+ const varB = {
32
+ id: 'provider.b',
33
+ name: 'b',
34
+ description: 'Variable B'
35
+ };
36
+ const varC = {
37
+ id: 'provider.c',
38
+ name: 'c',
39
+ description: 'Variable C'
40
+ };
41
+ const varD = {
42
+ id: 'provider.d',
43
+ name: 'd',
44
+ description: 'Variable D'
45
+ };
46
+ // Create resolvers for our variables
47
+ const resolverA = {
48
+ canResolve: sinon.stub().returns(1),
49
+ resolve: async (_request, _context, resolveDependency) => {
50
+ var _a, _b;
51
+ if (resolveDependency) {
52
+ // Variable A depends on both B and C
53
+ const dependencyB = await resolveDependency({ variable: varB });
54
+ const dependencyC = await resolveDependency({ variable: varC });
55
+ return {
56
+ variable: varA,
57
+ value: `A resolved with B: ${(_a = dependencyB === null || dependencyB === void 0 ? void 0 : dependencyB.value) !== null && _a !== void 0 ? _a : 'undefined'} and C: ${(_b = dependencyC === null || dependencyC === void 0 ? void 0 : dependencyC.value) !== null && _b !== void 0 ? _b : 'undefined'}`,
58
+ allResolvedDependencies: [
59
+ ...(dependencyB ? [dependencyB] : []),
60
+ ...(dependencyC ? [dependencyC] : [])
61
+ ]
62
+ };
63
+ }
64
+ return { variable: varA, value: 'A value' };
65
+ }
66
+ };
67
+ const resolverB = {
68
+ canResolve: sinon.stub().returns(1),
69
+ resolve: async (_request, _context, resolveDependency) => {
70
+ var _a;
71
+ if (resolveDependency) {
72
+ // Variable B depends on A, creating a cycle
73
+ const dependencyA = await resolveDependency({ variable: varA });
74
+ return {
75
+ variable: varB,
76
+ value: `B resolved with A: ${(_a = dependencyA === null || dependencyA === void 0 ? void 0 : dependencyA.value) !== null && _a !== void 0 ? _a : 'undefined (cycle detected)'}`,
77
+ allResolvedDependencies: dependencyA ? [dependencyA] : []
78
+ };
79
+ }
80
+ return { variable: varB, value: 'B value' };
81
+ }
82
+ };
83
+ const resolverC = {
84
+ canResolve: sinon.stub().returns(1),
85
+ resolve: async (_request, _context, resolveDependency) => {
86
+ var _a, _b;
87
+ if (resolveDependency) {
88
+ // Variable C depends on D with two different arguments
89
+ const dependencyD1 = await resolveDependency({ variable: varD, arg: 'arg1' });
90
+ const dependencyD2 = await resolveDependency({ variable: varD, arg: 'arg2' });
91
+ return {
92
+ variable: varC,
93
+ value: `C resolved with D(arg1): ${(_a = dependencyD1 === null || dependencyD1 === void 0 ? void 0 : dependencyD1.value) !== null && _a !== void 0 ? _a : 'undefined'} and D(arg2): ${(_b = dependencyD2 === null || dependencyD2 === void 0 ? void 0 : dependencyD2.value) !== null && _b !== void 0 ? _b : 'undefined'}`,
94
+ allResolvedDependencies: [
95
+ ...(dependencyD1 ? [dependencyD1] : []),
96
+ ...(dependencyD2 ? [dependencyD2] : [])
97
+ ]
98
+ };
99
+ }
100
+ return { variable: varC, value: 'C value' };
101
+ }
102
+ };
103
+ const resolverD = {
104
+ canResolve: sinon.stub().returns(1),
105
+ resolve: async (request) => {
106
+ const arg = request.arg;
107
+ return {
108
+ variable: varD,
109
+ value: arg ? `D value with ${arg}` : 'D value'
110
+ };
111
+ }
112
+ };
113
+ beforeEach(() => {
114
+ // Create stub for the contribution provider
115
+ contributionProvider = {
116
+ getContributions: sinon.stub().returns([])
117
+ };
118
+ // Create stub for logger
119
+ logger = sinon.createStubInstance(core_1.Logger);
120
+ // Create the service under test
121
+ variableService = new variable_service_1.DefaultAIVariableService(contributionProvider, logger);
122
+ // Register the variables and resolvers
123
+ variableService.registerResolver(varA, resolverA);
124
+ variableService.registerResolver(varB, resolverB);
125
+ variableService.registerResolver(varC, resolverC);
126
+ variableService.registerResolver(varD, resolverD);
127
+ });
128
+ describe('resolveVariable', () => {
129
+ it('should handle recursive variable resolution and detect cycles', async () => {
130
+ // Try to resolve variable A, which has a cycle with B and also depends on C which depends on D
131
+ const result = await variableService.resolveVariable('a', {});
132
+ // Verify the result
133
+ (0, chai_1.expect)(result).to.not.be.undefined;
134
+ (0, chai_1.expect)(result.variable).to.deep.equal(varA);
135
+ // The value should contain B's value (with a cycle detection) and C's value
136
+ (0, chai_1.expect)(result.value).to.include('B resolved with A: undefined (cycle detected)');
137
+ (0, chai_1.expect)(result.value).to.include('C resolved with D(arg1): D value with arg1 and D(arg2): D value with arg2');
138
+ // Verify that we logged a warning about the cycle
139
+ (0, chai_1.expect)(logger.warn.calledOnce).to.be.true;
140
+ (0, chai_1.expect)(logger.warn.firstCall.args[0]).to.include('Cycle detected for variable: a');
141
+ // Verify dependencies are tracked
142
+ (0, chai_1.expect)(result.allResolvedDependencies).to.have.lengthOf(2);
143
+ // Find the B dependency and verify it doesn't have A in its dependencies (due to cycle detection)
144
+ const bDependency = result.allResolvedDependencies.find(d => d.variable.name === 'b');
145
+ (0, chai_1.expect)(bDependency).to.not.be.undefined;
146
+ (0, chai_1.expect)(bDependency.allResolvedDependencies).to.be.empty;
147
+ // Find the C dependency and its D dependencies
148
+ const cDependency = result.allResolvedDependencies.find(d => d.variable.name === 'c');
149
+ (0, chai_1.expect)(cDependency).to.not.be.undefined;
150
+ (0, chai_1.expect)(cDependency.value).to.equal('C resolved with D(arg1): D value with arg1 and D(arg2): D value with arg2');
151
+ (0, chai_1.expect)(cDependency.allResolvedDependencies).to.have.lengthOf(2);
152
+ const dDependency1 = cDependency.allResolvedDependencies[0];
153
+ (0, chai_1.expect)(dDependency1.variable.name).to.equal('d');
154
+ (0, chai_1.expect)(dDependency1.value).to.equal('D value with arg1');
155
+ const dDependency2 = cDependency.allResolvedDependencies[1];
156
+ (0, chai_1.expect)(dDependency2.variable.name).to.equal('d');
157
+ (0, chai_1.expect)(dDependency2.value).to.equal('D value with arg2');
158
+ });
159
+ it('should handle variables with a simple chain of dependencies', async () => {
160
+ // Variable C depends on D with two different arguments
161
+ const result = await variableService.resolveVariable('c', {});
162
+ (0, chai_1.expect)(result).to.not.be.undefined;
163
+ (0, chai_1.expect)(result.variable).to.deep.equal(varC);
164
+ (0, chai_1.expect)(result.value).to.equal('C resolved with D(arg1): D value with arg1 and D(arg2): D value with arg2');
165
+ // Verify dependency chain
166
+ (0, chai_1.expect)(result.allResolvedDependencies).to.have.lengthOf(2);
167
+ const dDependency1 = result.allResolvedDependencies[0];
168
+ (0, chai_1.expect)(dDependency1.variable.name).to.equal('d');
169
+ (0, chai_1.expect)(dDependency1.value).to.equal('D value with arg1');
170
+ const dDependency2 = result.allResolvedDependencies[1];
171
+ (0, chai_1.expect)(dDependency2.variable.name).to.equal('d');
172
+ (0, chai_1.expect)(dDependency2.value).to.equal('D value with arg2');
173
+ });
174
+ it('should handle variables without dependencies', async () => {
175
+ // D has no dependencies
176
+ const result = await variableService.resolveVariable('d', {});
177
+ (0, chai_1.expect)(result).to.not.be.undefined;
178
+ (0, chai_1.expect)(result.variable).to.deep.equal(varD);
179
+ (0, chai_1.expect)(result.value).to.equal('D value');
180
+ (0, chai_1.expect)(result.allResolvedDependencies).to.be.undefined;
181
+ });
182
+ it('should handle variables with arguments', async () => {
183
+ // Test D with an argument
184
+ const result = await variableService.resolveVariable({ variable: 'd', arg: 'test-arg' }, {}, undefined);
185
+ (0, chai_1.expect)(result).to.not.be.undefined;
186
+ (0, chai_1.expect)(result.variable).to.deep.equal(varD);
187
+ (0, chai_1.expect)(result.value).to.equal('D value with test-arg');
188
+ (0, chai_1.expect)(result.allResolvedDependencies).to.be.undefined;
189
+ });
190
+ it('should return undefined for non-existent variables', async () => {
191
+ const result = await variableService.resolveVariable('nonexistent', {});
192
+ (0, chai_1.expect)(result).to.be.undefined;
193
+ });
194
+ it('should properly populate cache when resolving variables with dependencies', async () => {
195
+ // Create a cache to pass into the resolver
196
+ const cache = (0, variable_service_1.createAIResolveVariableCache)();
197
+ // Resolve variable A, which depends on B and C, and C depends on D with two arguments
198
+ const result = await variableService.resolveVariable('a', {}, cache);
199
+ // Verify that the result is correct
200
+ (0, chai_1.expect)(result).to.not.be.undefined;
201
+ (0, chai_1.expect)(result.variable).to.deep.equal(varA);
202
+ // Verify that the cache has entries for all variables
203
+ (0, chai_1.expect)(cache.size).to.equal(5); // A, B, C, D(arg1), and D(arg2)
204
+ // Verify that all variables have entries in the cache
205
+ (0, chai_1.expect)(cache.has('a:')).to.be.true; // 'a:' key format is variableName + separator + arg (empty in this case)
206
+ (0, chai_1.expect)(cache.has('b:')).to.be.true;
207
+ (0, chai_1.expect)(cache.has('c:')).to.be.true;
208
+ (0, chai_1.expect)(cache.has('d:arg1')).to.be.true;
209
+ (0, chai_1.expect)(cache.has('d:arg2')).to.be.true;
210
+ // Verify that all promises in the cache are resolved
211
+ for (const entry of cache.values()) {
212
+ const resolvedVar = await entry.promise;
213
+ (0, chai_1.expect)(resolvedVar).to.not.be.undefined;
214
+ (0, chai_1.expect)(entry.inProgress).to.be.false;
215
+ }
216
+ // Check specific variable results from cache
217
+ const aEntry = cache.get('a:');
218
+ const aResult = await aEntry.promise;
219
+ (0, chai_1.expect)(aResult.variable.name).to.equal('a');
220
+ const bEntry = cache.get('b:');
221
+ const bResult = await bEntry.promise;
222
+ (0, chai_1.expect)(bResult.variable.name).to.equal('b');
223
+ const cEntry = cache.get('c:');
224
+ const cResult = await cEntry.promise;
225
+ (0, chai_1.expect)(cResult.variable.name).to.equal('c');
226
+ const dEntry1 = cache.get('d:arg1');
227
+ const dResult1 = await dEntry1.promise;
228
+ (0, chai_1.expect)(dResult1.variable.name).to.equal('d');
229
+ (0, chai_1.expect)(dResult1.value).to.equal('D value with arg1');
230
+ const dEntry2 = cache.get('d:arg2');
231
+ const dResult2 = await dEntry2.promise;
232
+ (0, chai_1.expect)(dResult2.variable.name).to.equal('d');
233
+ (0, chai_1.expect)(dResult2.value).to.equal('D value with arg2');
234
+ });
235
+ });
236
+ });
237
+ //# sourceMappingURL=variable-service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-service.spec.js","sourceRoot":"","sources":["../../src/common/variable-service.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@theia/ai-core",
3
- "version": "1.59.0",
3
+ "version": "1.60.0-next.47+9332521b9",
4
4
  "description": "Theia - AI Core",
5
5
  "dependencies": {
6
- "@theia/core": "1.59.0",
7
- "@theia/editor": "1.59.0",
8
- "@theia/filesystem": "1.59.0",
9
- "@theia/monaco": "1.59.0",
6
+ "@theia/core": "1.60.0-next.47+9332521b9",
7
+ "@theia/editor": "1.60.0-next.47+9332521b9",
8
+ "@theia/filesystem": "1.60.0-next.47+9332521b9",
9
+ "@theia/monaco": "1.60.0-next.47+9332521b9",
10
10
  "@theia/monaco-editor-core": "1.96.302",
11
- "@theia/output": "1.59.0",
12
- "@theia/variable-resolver": "1.59.0",
13
- "@theia/workspace": "1.59.0",
11
+ "@theia/output": "1.60.0-next.47+9332521b9",
12
+ "@theia/variable-resolver": "1.60.0-next.47+9332521b9",
13
+ "@theia/workspace": "1.60.0-next.47+9332521b9",
14
14
  "@types/js-yaml": "^4.0.9",
15
15
  "js-yaml": "^4.1.0",
16
16
  "minimatch": "^5.1.0",
@@ -57,5 +57,5 @@
57
57
  "nyc": {
58
58
  "extends": "../../configs/nyc.json"
59
59
  },
60
- "gitHead": "21358137e41342742707f660b8e222f940a27652"
60
+ "gitHead": "9332521b9aa74bf534d45968905d37e30a13c3b5"
61
61
  }
@@ -0,0 +1,74 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { nls } from '@theia/core';
18
+ import { PreferenceSchema } from '@theia/core/lib/browser/preferences/preference-contribution';
19
+
20
+ export const AGENT_SETTINGS_PREF = 'ai-features.agentSettings';
21
+
22
+ export const AgentSettingsPreferenceSchema: PreferenceSchema = {
23
+ type: 'object',
24
+ properties: {
25
+ [AGENT_SETTINGS_PREF]: {
26
+ type: 'object',
27
+ title: nls.localize('theia/ai/agents/title', 'Agent Settings'),
28
+ hidden: true,
29
+ markdownDescription: nls.localize('theia/ai/agents/mdDescription', 'Configure agent settings such as enabling or disabling specific agents, configuring prompts and \
30
+ selecting LLMs.'),
31
+ additionalProperties: {
32
+ type: 'object',
33
+ properties: {
34
+ enable: {
35
+ type: 'boolean',
36
+ title: nls.localize('theia/ai/agents/enable/title', 'Enable Agent'),
37
+ markdownDescription: nls.localize('theia/ai/agents/enable/mdDescription', 'Specifies whether the agent should be enabled (true) or disabled (false).'),
38
+ default: true
39
+ },
40
+ languageModelRequirements: {
41
+ type: 'array',
42
+ title: nls.localize('theia/ai/agents/languageModelRequirements/title', 'Language Model Requirements'),
43
+ markdownDescription: nls.localize('theia/ai/agents/languageModelRequirements/mdDescription', 'Specifies the used language models for this agent.'),
44
+ items: {
45
+ type: 'object',
46
+ properties: {
47
+ purpose: {
48
+ type: 'string',
49
+ title: nls.localize('theia/ai/agents/languageModelRequirements/purpose/title', 'Purpose'),
50
+ markdownDescription: nls.localize('theia/ai/agents/languageModelRequirements/purpose/mdDescription', 'The purpose for which this language model is used.')
51
+ },
52
+ identifier: {
53
+ type: 'string',
54
+ title: nls.localize('theia/ai/agents/languageModelRequirements/identifier/title', 'Identifier'),
55
+ markdownDescription: nls.localize('theia/ai/agents/languageModelRequirements/identifier/mdDescription', 'The identifier of the language model to be used.')
56
+ }
57
+ },
58
+ required: ['purpose', 'identifier']
59
+ }
60
+ },
61
+ selectedVariants: {
62
+ type: 'object',
63
+ title: nls.localize('theia/ai/agents/selectedVariants/title', 'Selected Variants'),
64
+ markdownDescription: nls.localize('theia/ai/agents/selectedVariants/mdDescription', 'Specifies the currently selected prompt variants for this agent.'),
65
+ additionalProperties: {
66
+ type: 'string'
67
+ }
68
+ }
69
+ },
70
+ required: ['languageModelRequirements']
71
+ }
72
+ }
73
+ }
74
+ };
@@ -44,12 +44,23 @@ export class AIActivationService implements FrontendApplicationContribution {
44
44
  return this.isAiEnabledKey.get() ?? false;
45
45
  }
46
46
 
47
+ protected updateEnableValue(value: boolean): void {
48
+ if (value !== this.isAiEnabledKey.get()) {
49
+ this.isAiEnabledKey.set(value);
50
+ this.onDidChangeAIEnabled.fire(value);
51
+ }
52
+ }
53
+
47
54
  initialize(): MaybePromise<void> {
48
55
  this.isAiEnabledKey = this.contextKeyService.createKey(ENABLE_AI_CONTEXT_KEY, false);
56
+ // make sure we don't miss once preferences are ready
57
+ this.preferenceService.ready.then(() => {
58
+ const enableValue = this.preferenceService.get<boolean>(PREFERENCE_NAME_ENABLE_AI, false);
59
+ this.updateEnableValue(enableValue);
60
+ });
49
61
  this.preferenceService.onPreferenceChanged(e => {
50
62
  if (e.preferenceName === PREFERENCE_NAME_ENABLE_AI) {
51
- this.isAiEnabledKey.set(e.newValue);
52
- this.onDidChangeAIEnabled.fire(e.newValue);
63
+ this.updateEnableValue(e.newValue);
53
64
  }
54
65
  });
55
66
  }
@@ -0,0 +1,37 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { Command, CommandContribution, CommandRegistry } from '@theia/core';
18
+ import { CommonCommands, codicon } from '@theia/core/lib/browser';
19
+ import { AICommandHandlerFactory } from './ai-command-handler-factory';
20
+ import { injectable, inject } from '@theia/core/shared/inversify';
21
+
22
+ export const AI_SHOW_SETTINGS_COMMAND: Command = Command.toLocalizedCommand({
23
+ id: 'ai-chat-ui.show-settings',
24
+ label: 'Show AI Settings',
25
+ iconClass: codicon('settings-gear'),
26
+ });
27
+
28
+ @injectable()
29
+ export class AiCoreCommandContribution implements CommandContribution {
30
+ @inject(AICommandHandlerFactory) protected readonly handlerFactory: AICommandHandlerFactory;
31
+
32
+ registerCommands(commands: CommandRegistry): void {
33
+ commands.registerCommand(AI_SHOW_SETTINGS_COMMAND, this.handlerFactory({
34
+ execute: () => commands.executeCommand(CommonCommands.OPEN_PREFERENCES.id, 'ai-features'),
35
+ }));
36
+ }
37
+ }
@@ -42,12 +42,13 @@ import {
42
42
  LanguageModelDelegateClientImpl,
43
43
  } from './frontend-language-model-registry';
44
44
 
45
- import { FrontendApplicationContribution } from '@theia/core/lib/browser';
45
+ import { FrontendApplicationContribution, PreferenceContribution } from '@theia/core/lib/browser';
46
46
  import { TabBarToolbarContribution } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
47
47
  import { LanguageGrammarDefinitionContribution } from '@theia/monaco/lib/browser/textmate';
48
48
 
49
49
  import { AICoreFrontendApplicationContribution } from './ai-core-frontend-application-contribution';
50
50
  import { bindAICorePreferences } from './ai-core-preferences';
51
+ import { AgentSettingsPreferenceSchema } from './agent-preferences';
51
52
  import { AISettingsServiceImpl } from './ai-settings-service';
52
53
  import { FrontendPromptCustomizationServiceImpl } from './frontend-prompt-customization-service';
53
54
  import { DefaultFrontendVariableService, FrontendVariableService } from './frontend-variable-service';
@@ -60,6 +61,8 @@ import { AIActivationService } from './ai-activation-service';
60
61
  import { AgentService, AgentServiceImpl } from '../common/agent-service';
61
62
  import { AICommandHandlerFactory } from './ai-command-handler-factory';
62
63
  import { AISettingsService } from '../common/settings-service';
64
+ import { AiCoreCommandContribution } from './ai-core-command-contribution';
65
+ import { PromptVariableContribution } from '../common/prompt-variable-contribution';
63
66
 
64
67
  export default new ContainerModule(bind => {
65
68
  bindContributionProvider(bind, LanguageModelProvider);
@@ -88,6 +91,7 @@ export default new ContainerModule(bind => {
88
91
  .inSingletonScope();
89
92
 
90
93
  bindAICorePreferences(bind);
94
+ bind(PreferenceContribution).toConstantValue({ schema: AgentSettingsPreferenceSchema });
91
95
 
92
96
  bind(FrontendPromptCustomizationServiceImpl).toSelf().inSingletonScope();
93
97
  bind(PromptCustomizationService).toService(FrontendPromptCustomizationServiceImpl);
@@ -109,6 +113,7 @@ export default new ContainerModule(bind => {
109
113
  bind(TheiaVariableContribution).toSelf().inSingletonScope();
110
114
  bind(AIVariableContribution).toService(TheiaVariableContribution);
111
115
 
116
+ bind(AIVariableContribution).to(PromptVariableContribution).inSingletonScope();
112
117
  bind(AIVariableContribution).to(TodayVariableContribution).inSingletonScope();
113
118
  bind(AIVariableContribution).to(FileVariableContribution).inSingletonScope();
114
119
  bind(AIVariableContribution).to(AgentsVariableContribution).inSingletonScope();
@@ -129,7 +134,10 @@ export default new ContainerModule(bind => {
129
134
  execute: (...args: unknown[]) => handler.execute(...args),
130
135
  isEnabled: (...args: unknown[]) => activationService.isActive && (handler.isEnabled?.(...args) ?? true),
131
136
  isVisible: (...args: unknown[]) => activationService.isActive && (handler.isVisible?.(...args) ?? true),
132
- isToggled: (...args: unknown[]) => handler.isToggled?.(...args) ?? false
137
+ isToggled: handler.isToggled
133
138
  };
134
139
  });
140
+
141
+ bind(AiCoreCommandContribution).toSelf().inSingletonScope();
142
+ bind(CommandContribution).toService(AiCoreCommandContribution);
135
143
  });
@@ -16,7 +16,7 @@
16
16
  import { DisposableCollection, Emitter, Event } from '@theia/core';
17
17
  import { PreferenceScope, PreferenceService } from '@theia/core/lib/browser';
18
18
  import { inject, injectable } from '@theia/core/shared/inversify';
19
- import { JSONObject } from '@theia/core/shared/@phosphor/coreutils';
19
+ import { JSONObject } from '@theia/core/shared/@lumino/coreutils';
20
20
  import { AISettings, AISettingsService, AgentSettings } from '../common';
21
21
 
22
22
  @injectable()
@@ -25,3 +25,4 @@ export * from './frontend-variable-service';
25
25
  export * from './prompttemplate-contribution';
26
26
  export * from './theia-variable-contribution';
27
27
  export * from './frontend-variable-service';
28
+ export * from './ai-core-command-contribution';
@@ -30,19 +30,19 @@ const PROMPT_TEMPLATE_TEXTMATE_SCOPE = 'source.prompttemplate';
30
30
 
31
31
  export const PROMPT_TEMPLATE_EXTENSION = '.prompttemplate';
32
32
 
33
- export const DISCARD_PROMPT_TEMPLATE_CUSTOMIZATIONS: Command = {
33
+ export const DISCARD_PROMPT_TEMPLATE_CUSTOMIZATIONS: Command = Command.toLocalizedCommand({
34
34
  id: 'theia-ai-prompt-template:discard',
35
35
  iconClass: codicon('discard'),
36
36
  category: 'Theia AI Prompt Templates'
37
- };
37
+ }, '', 'theia/ai/core/prompts/category');
38
38
 
39
39
  // TODO this command is mainly for testing purposes
40
- export const SHOW_ALL_PROMPTS_COMMAND: Command = {
40
+ export const SHOW_ALL_PROMPTS_COMMAND: Command = Command.toLocalizedCommand({
41
41
  id: 'theia-ai-prompt-template:show-prompts-command',
42
42
  label: 'Show all prompts',
43
43
  iconClass: codicon('beaker'),
44
44
  category: 'Theia AI Prompt Templates',
45
- };
45
+ }, 'theia/ai/core/showAllPrompts/label', 'theia/ai/core/prompts/category');
46
46
 
47
47
  @injectable()
48
48
  export class PromptTemplateContribution implements LanguageGrammarDefinitionContribution, CommandContribution, TabBarToolbarContribution {