@theia/ai-core 1.69.0-next.52 → 1.69.0-next.55

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 (35) hide show
  1. package/lib/browser/ai-core-frontend-module.d.ts.map +1 -1
  2. package/lib/browser/ai-core-frontend-module.js +2 -0
  3. package/lib/browser/ai-core-frontend-module.js.map +1 -1
  4. package/lib/common/capability-utils.d.ts +52 -0
  5. package/lib/common/capability-utils.d.ts.map +1 -0
  6. package/lib/common/capability-utils.js +53 -0
  7. package/lib/common/capability-utils.js.map +1 -0
  8. package/lib/common/capability-utils.spec.d.ts +2 -0
  9. package/lib/common/capability-utils.spec.d.ts.map +1 -0
  10. package/lib/common/capability-utils.spec.js +225 -0
  11. package/lib/common/capability-utils.spec.js.map +1 -0
  12. package/lib/common/capability-variable-contribution.d.ts +15 -0
  13. package/lib/common/capability-variable-contribution.d.ts.map +1 -0
  14. package/lib/common/capability-variable-contribution.js +147 -0
  15. package/lib/common/capability-variable-contribution.js.map +1 -0
  16. package/lib/common/capability-variable-contribution.spec.d.ts +2 -0
  17. package/lib/common/capability-variable-contribution.spec.d.ts.map +1 -0
  18. package/lib/common/capability-variable-contribution.spec.js +195 -0
  19. package/lib/common/capability-variable-contribution.spec.js.map +1 -0
  20. package/lib/common/index.d.ts +1 -0
  21. package/lib/common/index.d.ts.map +1 -1
  22. package/lib/common/index.js +1 -0
  23. package/lib/common/index.js.map +1 -1
  24. package/lib/common/prompt-service.d.ts +3 -2
  25. package/lib/common/prompt-service.d.ts.map +1 -1
  26. package/lib/common/prompt-service.js +10 -2
  27. package/lib/common/prompt-service.js.map +1 -1
  28. package/package.json +9 -9
  29. package/src/browser/ai-core-frontend-module.ts +2 -0
  30. package/src/common/capability-utils.spec.ts +265 -0
  31. package/src/common/capability-utils.ts +96 -0
  32. package/src/common/capability-variable-contribution.spec.ts +316 -0
  33. package/src/common/capability-variable-contribution.ts +180 -0
  34. package/src/common/index.ts +1 -0
  35. package/src/common/prompt-service.ts +13 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ai-core-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAgE/D,wBAgHG"}
1
+ {"version":3,"file":"ai-core-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAiE/D,wBAiHG"}
@@ -45,6 +45,7 @@ const skill_service_1 = require("./skill-service");
45
45
  const skill_prompt_coordinator_1 = require("./skill-prompt-coordinator");
46
46
  const ai_core_command_contribution_1 = require("./ai-core-command-contribution");
47
47
  const prompt_variable_contribution_1 = require("../common/prompt-variable-contribution");
48
+ const capability_variable_contribution_1 = require("../common/capability-variable-contribution");
48
49
  const language_model_service_1 = require("../common/language-model-service");
49
50
  const frontend_language_model_service_1 = require("./frontend-language-model-service");
50
51
  const token_usage_frontend_service_1 = require("./token-usage-frontend-service");
@@ -102,6 +103,7 @@ exports.default = new inversify_1.ContainerModule(bind => {
102
103
  bind(common_1.AIVariableContribution).to(agents_variable_contribution_1.AgentsVariableContribution).inSingletonScope();
103
104
  bind(common_1.AIVariableContribution).to(open_editors_variable_contribution_1.OpenEditorsVariableContribution).inSingletonScope();
104
105
  bind(common_1.AIVariableContribution).to(skills_variable_contribution_1.SkillsVariableContribution).inSingletonScope();
106
+ bind(common_1.AIVariableContribution).to(capability_variable_contribution_1.CapabilityVariableContribution).inSingletonScope();
105
107
  bind(browser_1.FrontendApplicationContribution).to(ai_core_frontend_application_contribution_1.AICoreFrontendApplicationContribution).inSingletonScope();
106
108
  bind(common_1.ToolInvocationRegistry).to(common_1.ToolInvocationRegistryImpl).inSingletonScope();
107
109
  (0, core_1.bindContributionProvider)(bind, common_1.ToolProvider);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-core-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-core-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-core-frontend-module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { AIVariableContext } from './variable-service';
2
+ /**
3
+ * An extended variable resolution context that includes capability override information.
4
+ *
5
+ * This context is used during prompt template resolution to determine which capability
6
+ * fragments should be enabled or disabled, allowing dynamic customization of agent behavior.
7
+ */
8
+ export interface CapabilityAwareContext extends AIVariableContext {
9
+ /**
10
+ * Optional mapping of capability fragment IDs to their enabled/disabled state.
11
+ *
12
+ * When resolving capability variables in prompt templates, this map is consulted
13
+ * to determine whether a capability should be enabled. If a fragment ID is not
14
+ * present in this map, the capability's default state is used.
15
+ */
16
+ capabilityOverrides?: Record<string, boolean>;
17
+ }
18
+ /**
19
+ * Represents a parsed capability variable from a prompt template.
20
+ */
21
+ export interface ParsedCapability {
22
+ /** The fragment ID to resolve when the capability is enabled */
23
+ fragmentId: string;
24
+ /** Whether the capability is enabled by default */
25
+ defaultEnabled: boolean;
26
+ }
27
+ /**
28
+ * Parses capability variables from a prompt template string.
29
+ *
30
+ * Capability variables have the format:
31
+ * - `{{capability:fragment-id}}` (defaults to off)
32
+ * - `{{capability:fragment-id default on}}` or `{{capability:fragment-id default off}}`
33
+ * - `{{{capability:fragment-id}}}` (defaults to off)
34
+ * - `{{{capability:fragment-id default on}}}` or `{{{capability:fragment-id default off}}}`
35
+ *
36
+ * @param template The prompt template string to parse
37
+ * @returns Array of parsed capabilities in the order they appear in the template
38
+ */
39
+ export declare function parseCapabilitiesFromTemplate(template: string): ParsedCapability[];
40
+ /**
41
+ * Parses a capability argument string.
42
+ * Expected formats:
43
+ * - "fragment-id" (defaults to off)
44
+ * - "fragment-id default on" or "fragment-id default off"
45
+ * @param arg The argument string to parse
46
+ * @returns Object with fragmentId and defaultEnabled, or undefined if parsing failed
47
+ */
48
+ export declare function parseCapabilityArgument(arg: string): {
49
+ fragmentId: string;
50
+ defaultEnabled: boolean;
51
+ } | undefined;
52
+ //# sourceMappingURL=capability-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-utils.d.ts","sourceRoot":"","sources":["../../src/common/capability-utils.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC7D;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,cAAc,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAmBlF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAUhH"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCapabilitiesFromTemplate = parseCapabilitiesFromTemplate;
4
+ exports.parseCapabilityArgument = parseCapabilityArgument;
5
+ /**
6
+ * Parses capability variables from a prompt template string.
7
+ *
8
+ * Capability variables have the format:
9
+ * - `{{capability:fragment-id}}` (defaults to off)
10
+ * - `{{capability:fragment-id default on}}` or `{{capability:fragment-id default off}}`
11
+ * - `{{{capability:fragment-id}}}` (defaults to off)
12
+ * - `{{{capability:fragment-id default on}}}` or `{{{capability:fragment-id default off}}}`
13
+ *
14
+ * @param template The prompt template string to parse
15
+ * @returns Array of parsed capabilities in the order they appear in the template
16
+ */
17
+ function parseCapabilitiesFromTemplate(template) {
18
+ const seenFragmentIds = new Set();
19
+ const capabilities = [];
20
+ const regex = /\{{2,3}\s*capability:([^\s}]+)(?:\s+default\s+(on|off))?\s*\}{2,3}/gi;
21
+ let match = regex.exec(template);
22
+ while (match) {
23
+ const fragmentId = match[1];
24
+ if (!seenFragmentIds.has(fragmentId)) {
25
+ seenFragmentIds.add(fragmentId);
26
+ capabilities.push({
27
+ fragmentId,
28
+ defaultEnabled: match[2]?.toLowerCase() === 'on'
29
+ });
30
+ }
31
+ match = regex.exec(template);
32
+ }
33
+ return capabilities;
34
+ }
35
+ /**
36
+ * Parses a capability argument string.
37
+ * Expected formats:
38
+ * - "fragment-id" (defaults to off)
39
+ * - "fragment-id default on" or "fragment-id default off"
40
+ * @param arg The argument string to parse
41
+ * @returns Object with fragmentId and defaultEnabled, or undefined if parsing failed
42
+ */
43
+ function parseCapabilityArgument(arg) {
44
+ const match = arg.trim().match(/^(.+?)(?:\s+default\s+(on|off))?$/i);
45
+ if (!match || !match[1].trim()) {
46
+ return undefined;
47
+ }
48
+ return {
49
+ fragmentId: match[1].trim(),
50
+ defaultEnabled: match[2]?.toLowerCase() === 'on'
51
+ };
52
+ }
53
+ //# sourceMappingURL=capability-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-utils.js","sourceRoot":"","sources":["../../src/common/capability-utils.ts"],"names":[],"mappings":";;AAwDA,sEAmBC;AAUD,0DAUC;AAnDD;;;;;;;;;;;GAWG;AACH,SAAgB,6BAA6B,CAAC,QAAgB;IAC1D,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,YAAY,GAAuB,EAAE,CAAC;IAE5C,MAAM,KAAK,GAAG,sEAAsE,CAAC;IACrF,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO,KAAK,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,YAAY,CAAC,IAAI,CAAC;gBACd,UAAU;gBACV,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI;aACnD,CAAC,CAAC;QACP,CAAC;QACD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,GAAW;IAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACrE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO;QACH,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC3B,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,IAAI;KACnD,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=capability-utils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-utils.spec.d.ts","sourceRoot":"","sources":["../../src/common/capability-utils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 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 chai_1 = require("chai");
19
+ const capability_utils_1 = require("./capability-utils");
20
+ describe('capability-utils', () => {
21
+ describe('parseCapabilitiesFromTemplate', () => {
22
+ it('should parse a capability with default on', () => {
23
+ const template = 'Some text {{capability:feature-one default on}} more text';
24
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
25
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
26
+ (0, chai_1.expect)(result[0]).to.deep.equal({
27
+ fragmentId: 'feature-one',
28
+ defaultEnabled: true
29
+ });
30
+ });
31
+ it('should parse a capability with default off', () => {
32
+ const template = 'Some text {{capability:feature-two default off}} more text';
33
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
34
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
35
+ (0, chai_1.expect)(result[0]).to.deep.equal({
36
+ fragmentId: 'feature-two',
37
+ defaultEnabled: false
38
+ });
39
+ });
40
+ it('should parse multiple capabilities', () => {
41
+ const template = `
42
+ {{capability:feature-a default on}}
43
+ {{capability:feature-b default off}}
44
+ {{capability:feature-c default on}}
45
+ `;
46
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
47
+ (0, chai_1.expect)(result).to.have.lengthOf(3);
48
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('feature-a');
49
+ (0, chai_1.expect)(result[0].defaultEnabled).to.be.true;
50
+ (0, chai_1.expect)(result[1].fragmentId).to.equal('feature-b');
51
+ (0, chai_1.expect)(result[1].defaultEnabled).to.be.false;
52
+ (0, chai_1.expect)(result[2].fragmentId).to.equal('feature-c');
53
+ (0, chai_1.expect)(result[2].defaultEnabled).to.be.true;
54
+ });
55
+ it('should parse triple brace syntax', () => {
56
+ const template = 'Text {{{capability:my-feature default on}}} end';
57
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
58
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
59
+ (0, chai_1.expect)(result[0]).to.deep.equal({
60
+ fragmentId: 'my-feature',
61
+ defaultEnabled: true
62
+ });
63
+ });
64
+ it('should handle mixed brace syntax', () => {
65
+ const template = `
66
+ {{capability:feature-double default on}}
67
+ {{{capability:feature-triple default off}}}
68
+ `;
69
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
70
+ (0, chai_1.expect)(result).to.have.lengthOf(2);
71
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('feature-double');
72
+ (0, chai_1.expect)(result[1].fragmentId).to.equal('feature-triple');
73
+ });
74
+ it('should deduplicate capabilities with same fragmentId', () => {
75
+ const template = `
76
+ {{capability:same-feature default on}}
77
+ {{capability:same-feature default off}}
78
+ `;
79
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
80
+ // Should only return the first occurrence
81
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
82
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('same-feature');
83
+ (0, chai_1.expect)(result[0].defaultEnabled).to.be.true;
84
+ });
85
+ it('should return empty array for template without capabilities', () => {
86
+ const template = 'This is a template with {{variable}} but no capabilities';
87
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
88
+ (0, chai_1.expect)(result).to.have.lengthOf(0);
89
+ });
90
+ it('should handle case-insensitive default on/off', () => {
91
+ const template = `
92
+ {{capability:upper-on default ON}}
93
+ {{capability:upper-off default OFF}}
94
+ {{capability:mixed-on default On}}
95
+ `;
96
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
97
+ (0, chai_1.expect)(result).to.have.lengthOf(3);
98
+ (0, chai_1.expect)(result[0].defaultEnabled).to.be.true;
99
+ (0, chai_1.expect)(result[1].defaultEnabled).to.be.false;
100
+ (0, chai_1.expect)(result[2].defaultEnabled).to.be.true;
101
+ });
102
+ it('should handle whitespace variations', () => {
103
+ const template = `
104
+ {{ capability:spaced-feature default on }}
105
+ {{ capability:another-feature default off }}
106
+ `;
107
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
108
+ (0, chai_1.expect)(result).to.have.lengthOf(2);
109
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('spaced-feature');
110
+ (0, chai_1.expect)(result[1].fragmentId).to.equal('another-feature');
111
+ });
112
+ it('should handle fragment IDs with hyphens', () => {
113
+ const template = '{{capability:my-complex-feature-name default on}}';
114
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
115
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
116
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('my-complex-feature-name');
117
+ });
118
+ it('should handle fragment IDs with underscores', () => {
119
+ const template = '{{capability:my_feature_name default off}}';
120
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
121
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
122
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('my_feature_name');
123
+ });
124
+ it('should default to off when default on/off is omitted', () => {
125
+ const template = '{{capability:implicit-off}}';
126
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
127
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
128
+ (0, chai_1.expect)(result[0]).to.deep.equal({
129
+ fragmentId: 'implicit-off',
130
+ defaultEnabled: false
131
+ });
132
+ });
133
+ it('should handle mixed explicit and implicit defaults', () => {
134
+ const template = `
135
+ {{capability:explicit-on default on}}
136
+ {{capability:implicit-off-feature}}
137
+ {{capability:explicit-off default off}}
138
+ `;
139
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
140
+ (0, chai_1.expect)(result).to.have.lengthOf(3);
141
+ (0, chai_1.expect)(result[0]).to.deep.equal({ fragmentId: 'explicit-on', defaultEnabled: true });
142
+ (0, chai_1.expect)(result[1]).to.deep.equal({ fragmentId: 'implicit-off-feature', defaultEnabled: false });
143
+ (0, chai_1.expect)(result[2]).to.deep.equal({ fragmentId: 'explicit-off', defaultEnabled: false });
144
+ });
145
+ it('should handle triple brace syntax without default', () => {
146
+ const template = '{{{capability:triple-implicit}}}';
147
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
148
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
149
+ (0, chai_1.expect)(result[0]).to.deep.equal({
150
+ fragmentId: 'triple-implicit',
151
+ defaultEnabled: false
152
+ });
153
+ });
154
+ it('should preserve order of first occurrence for duplicates', () => {
155
+ const template = `
156
+ {{capability:first default on}}
157
+ {{capability:second default off}}
158
+ {{capability:first default off}}
159
+ {{capability:third default on}}
160
+ `;
161
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
162
+ (0, chai_1.expect)(result).to.have.lengthOf(3);
163
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('first');
164
+ (0, chai_1.expect)(result[0].defaultEnabled).to.be.true; // First occurrence
165
+ (0, chai_1.expect)(result[1].fragmentId).to.equal('second');
166
+ (0, chai_1.expect)(result[2].fragmentId).to.equal('third');
167
+ });
168
+ it('should return capabilities in the order they appear in template', () => {
169
+ const template = `
170
+ Middle text {{capability:zeta default on}}
171
+ Start {{capability:alpha default off}}
172
+ End {{capability:omega default on}}
173
+ `;
174
+ const result = (0, capability_utils_1.parseCapabilitiesFromTemplate)(template);
175
+ (0, chai_1.expect)(result).to.have.lengthOf(3);
176
+ (0, chai_1.expect)(result[0].fragmentId).to.equal('zeta');
177
+ (0, chai_1.expect)(result[1].fragmentId).to.equal('alpha');
178
+ (0, chai_1.expect)(result[2].fragmentId).to.equal('omega');
179
+ });
180
+ });
181
+ describe('parseCapabilityArgument', () => {
182
+ it('should parse a valid argument with default on', () => {
183
+ const result = (0, capability_utils_1.parseCapabilityArgument)('feature-one default on');
184
+ (0, chai_1.expect)(result).to.deep.equal({ fragmentId: 'feature-one', defaultEnabled: true });
185
+ });
186
+ it('should parse a valid argument with default off', () => {
187
+ const result = (0, capability_utils_1.parseCapabilityArgument)('feature-two default off');
188
+ (0, chai_1.expect)(result).to.deep.equal({ fragmentId: 'feature-two', defaultEnabled: false });
189
+ });
190
+ it('should handle case-insensitive on/off', () => {
191
+ (0, chai_1.expect)((0, capability_utils_1.parseCapabilityArgument)('feat default ON')?.defaultEnabled).to.be.true;
192
+ (0, chai_1.expect)((0, capability_utils_1.parseCapabilityArgument)('feat default OFF')?.defaultEnabled).to.be.false;
193
+ (0, chai_1.expect)((0, capability_utils_1.parseCapabilityArgument)('feat default On')?.defaultEnabled).to.be.true;
194
+ });
195
+ it('should handle whitespace in arguments', () => {
196
+ const result = (0, capability_utils_1.parseCapabilityArgument)(' test-capability default on ');
197
+ (0, chai_1.expect)(result).to.not.be.undefined;
198
+ (0, chai_1.expect)(result.fragmentId).to.equal('test-capability');
199
+ (0, chai_1.expect)(result.defaultEnabled).to.be.true;
200
+ });
201
+ it('should default to off when default on/off is omitted', () => {
202
+ const result = (0, capability_utils_1.parseCapabilityArgument)('feature-only');
203
+ (0, chai_1.expect)(result).to.deep.equal({ fragmentId: 'feature-only', defaultEnabled: false });
204
+ });
205
+ it('should default to off for fragment IDs with hyphens and no default', () => {
206
+ const result = (0, capability_utils_1.parseCapabilityArgument)('my-complex-feature');
207
+ (0, chai_1.expect)(result).to.deep.equal({ fragmentId: 'my-complex-feature', defaultEnabled: false });
208
+ });
209
+ it('should treat incomplete default clause as part of fragment ID', () => {
210
+ // "default" without on/off is not a valid default clause,
211
+ // so the whole string becomes the fragment ID
212
+ const result1 = (0, capability_utils_1.parseCapabilityArgument)('test-capability default');
213
+ (0, chai_1.expect)(result1).to.deep.equal({ fragmentId: 'test-capability default', defaultEnabled: false });
214
+ const result2 = (0, capability_utils_1.parseCapabilityArgument)('test-capability default yes');
215
+ (0, chai_1.expect)(result2).to.deep.equal({ fragmentId: 'test-capability default yes', defaultEnabled: false });
216
+ });
217
+ it('should return undefined for empty string', () => {
218
+ (0, chai_1.expect)((0, capability_utils_1.parseCapabilityArgument)('')).to.be.undefined;
219
+ });
220
+ it('should return undefined for whitespace-only string', () => {
221
+ (0, chai_1.expect)((0, capability_utils_1.parseCapabilityArgument)(' ')).to.be.undefined;
222
+ });
223
+ });
224
+ });
225
+ //# sourceMappingURL=capability-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-utils.spec.js","sourceRoot":"","sources":["../../src/common/capability-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ILogger } from '@theia/core';
2
+ import * as monaco from '@theia/monaco-editor-core';
3
+ import { AIVariable, AIVariableContribution, AIVariableService, AIVariableResolutionRequest, ResolvedAIVariable, AIVariableResolverWithVariableDependencies, AIVariableArg, AIVariableContext } from './variable-service';
4
+ import { PromptService } from './prompt-service';
5
+ import { CapabilityAwareContext } from './capability-utils';
6
+ export declare const CAPABILITY_VARIABLE: AIVariable;
7
+ export declare class CapabilityVariableContribution implements AIVariableContribution, AIVariableResolverWithVariableDependencies {
8
+ protected readonly promptService: PromptService;
9
+ protected logger: ILogger;
10
+ registerVariables(service: AIVariableService): void;
11
+ canResolve(request: AIVariableResolutionRequest, context: AIVariableContext): number;
12
+ resolve(request: AIVariableResolutionRequest, context: CapabilityAwareContext, resolveDependency?: (variable: AIVariableArg) => Promise<ResolvedAIVariable | undefined>): Promise<ResolvedAIVariable | undefined>;
13
+ protected provideArgumentCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position): Promise<monaco.languages.CompletionItem[] | undefined>;
14
+ }
15
+ //# sourceMappingURL=capability-variable-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/common/capability-variable-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EACH,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,2BAA2B,EAC3B,kBAAkB,EAClB,0CAA0C,EAC1C,aAAa,EACb,iBAAiB,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA8B,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,sBAAsB,EAA2B,MAAM,oBAAoB,CAAC;AAErF,eAAO,MAAM,mBAAmB,EAAE,UAWjC,CAAC;AAEF,qBACa,8BAA+B,YAAW,sBAAsB,EAAE,0CAA0C;IAGrH,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1B,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAKnD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAO9E,OAAO,CACT,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,sBAAsB,EAC/B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GACzF,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;cA2D1B,8BAA8B,CAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAC1B,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;CA+C5D"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CapabilityVariableContribution = exports.CAPABILITY_VARIABLE = void 0;
4
+ const tslib_1 = require("tslib");
5
+ // *****************************************************************************
6
+ // Copyright (C) 2026 EclipseSource GmbH.
7
+ //
8
+ // This program and the accompanying materials are made available under the
9
+ // terms of the Eclipse Public License v. 2.0 which is available at
10
+ // http://www.eclipse.org/legal/epl-2.0.
11
+ //
12
+ // This Source Code may also be made available under the following Secondary
13
+ // Licenses when the conditions for such availability set forth in the Eclipse
14
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
15
+ // with the GNU Classpath Exception which is available at
16
+ // https://www.gnu.org/software/classpath/license.html.
17
+ //
18
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
19
+ // *****************************************************************************
20
+ const core_1 = require("@theia/core");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const monaco = require("@theia/monaco-editor-core");
23
+ const prompt_service_1 = require("./prompt-service");
24
+ const prompt_text_1 = require("./prompt-text");
25
+ const capability_utils_1 = require("./capability-utils");
26
+ exports.CAPABILITY_VARIABLE = {
27
+ id: 'capability-provider',
28
+ description: core_1.nls.localize('theia/ai/core/capabilityVariable/description', 'Conditionally resolves prompt fragments based on default on/off setting'),
29
+ name: 'capability',
30
+ args: [
31
+ {
32
+ name: 'fragment-id [default on/off]',
33
+ description: core_1.nls.localize('theia/ai/core/capabilityVariable/argDescription', 'The prompt fragment id, optionally followed by "default on" or "default off" (defaults to off)')
34
+ }
35
+ ]
36
+ };
37
+ let CapabilityVariableContribution = class CapabilityVariableContribution {
38
+ registerVariables(service) {
39
+ service.registerResolver(exports.CAPABILITY_VARIABLE, this);
40
+ service.registerArgumentCompletionProvider(exports.CAPABILITY_VARIABLE, this.provideArgumentCompletionItems.bind(this));
41
+ }
42
+ canResolve(request, context) {
43
+ if (request.variable.name === exports.CAPABILITY_VARIABLE.name) {
44
+ return 1;
45
+ }
46
+ return -1;
47
+ }
48
+ async resolve(request, context, resolveDependency) {
49
+ if (request.variable.name === exports.CAPABILITY_VARIABLE.name) {
50
+ const arg = request.arg?.trim();
51
+ if (arg) {
52
+ const parseResult = (0, capability_utils_1.parseCapabilityArgument)(arg);
53
+ if (!parseResult) {
54
+ this.logger.warn(`Could not parse capability argument '${arg}'. Expected format: 'fragment-id' or 'fragment-id default on/off'.`);
55
+ return {
56
+ variable: request.variable,
57
+ value: '',
58
+ allResolvedDependencies: []
59
+ };
60
+ }
61
+ const { fragmentId, defaultEnabled } = parseResult;
62
+ // Get the enabled state from context overrides, or fall back to the default from the prompt
63
+ const isEnabled = context.capabilityOverrides?.[fragmentId] ?? defaultEnabled;
64
+ this.logger.debug(`Capability '${fragmentId}': enabled=${isEnabled} (override=${context.capabilityOverrides?.[fragmentId]}, default=${defaultEnabled})`);
65
+ // If capability is disabled, return empty string
66
+ if (!isEnabled) {
67
+ this.logger.debug(`Capability '${fragmentId}' is disabled, returning empty string`);
68
+ return {
69
+ variable: request.variable,
70
+ value: '',
71
+ allResolvedDependencies: []
72
+ };
73
+ }
74
+ // Resolve the prompt fragment content (this handles {{variables}} within the fragment)
75
+ const resolvedPrompt = await this.promptService.getResolvedPromptFragmentWithoutFunctions(fragmentId, undefined, context, resolveDependency);
76
+ if (resolvedPrompt) {
77
+ this.logger.debug(`Capability '${fragmentId}' resolved to ${resolvedPrompt.text.length} chars`);
78
+ return {
79
+ variable: request.variable,
80
+ value: resolvedPrompt.text,
81
+ allResolvedDependencies: resolvedPrompt.variables
82
+ };
83
+ }
84
+ this.logger.warn(`Could not find prompt fragment '${fragmentId}' for capability variable.`);
85
+ }
86
+ }
87
+ this.logger.warn(`Could not resolve capability variable '${request.variable.name}' with arg '${request.arg}'. Returning empty string.`);
88
+ return {
89
+ variable: request.variable,
90
+ value: '',
91
+ allResolvedDependencies: []
92
+ };
93
+ }
94
+ async provideArgumentCompletionItems(model, position) {
95
+ const lineContent = model.getLineContent(position.lineNumber);
96
+ // Only provide completions once the variable argument separator is typed
97
+ const triggerCharIndex = lineContent.lastIndexOf(prompt_text_1.PromptText.VARIABLE_SEPARATOR_CHAR, position.column - 1);
98
+ if (triggerCharIndex === -1) {
99
+ return undefined;
100
+ }
101
+ // Check if the text immediately before the trigger is the capability variable
102
+ const requiredVariable = `${prompt_text_1.PromptText.VARIABLE_CHAR}${exports.CAPABILITY_VARIABLE.name}`;
103
+ if (triggerCharIndex < requiredVariable.length ||
104
+ lineContent.substring(triggerCharIndex - requiredVariable.length, triggerCharIndex) !== requiredVariable) {
105
+ return undefined;
106
+ }
107
+ const range = new monaco.Range(position.lineNumber, triggerCharIndex + 2, position.lineNumber, position.column);
108
+ const activePrompts = this.promptService.getActivePromptFragments();
109
+ const completions = [];
110
+ if (activePrompts.length > 0) {
111
+ activePrompts.forEach(prompt => {
112
+ // Add completion for "default on"
113
+ completions.push({
114
+ label: `${prompt.id} default on`,
115
+ kind: (0, prompt_service_1.isCustomizedPromptFragment)(prompt) ? monaco.languages.CompletionItemKind.Enum : monaco.languages.CompletionItemKind.Variable,
116
+ insertText: `${prompt.id} default on`,
117
+ range,
118
+ detail: core_1.nls.localize('theia/ai/core/capabilityVariable/completions/detail/on', 'Capability enabled by default'),
119
+ sortText: `${prompt.id}0`
120
+ });
121
+ // Add completion for "default off"
122
+ completions.push({
123
+ label: `${prompt.id} default off`,
124
+ kind: (0, prompt_service_1.isCustomizedPromptFragment)(prompt) ? monaco.languages.CompletionItemKind.Enum : monaco.languages.CompletionItemKind.Variable,
125
+ insertText: `${prompt.id} default off`,
126
+ range,
127
+ detail: core_1.nls.localize('theia/ai/core/capabilityVariable/completions/detail/off', 'Capability disabled by default'),
128
+ sortText: `${prompt.id}1`
129
+ });
130
+ });
131
+ }
132
+ return completions;
133
+ }
134
+ };
135
+ exports.CapabilityVariableContribution = CapabilityVariableContribution;
136
+ tslib_1.__decorate([
137
+ (0, inversify_1.inject)(prompt_service_1.PromptService),
138
+ tslib_1.__metadata("design:type", Object)
139
+ ], CapabilityVariableContribution.prototype, "promptService", void 0);
140
+ tslib_1.__decorate([
141
+ (0, inversify_1.inject)(core_1.ILogger),
142
+ tslib_1.__metadata("design:type", Object)
143
+ ], CapabilityVariableContribution.prototype, "logger", void 0);
144
+ exports.CapabilityVariableContribution = CapabilityVariableContribution = tslib_1.__decorate([
145
+ (0, inversify_1.injectable)()
146
+ ], CapabilityVariableContribution);
147
+ //# sourceMappingURL=capability-variable-contribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-variable-contribution.js","sourceRoot":"","sources":["../../src/common/capability-variable-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import 'reflect-metadata';
2
+ //# sourceMappingURL=capability-variable-contribution.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-variable-contribution.spec.d.ts","sourceRoot":"","sources":["../../src/common/capability-variable-contribution.spec.ts"],"names":[],"mappings":"AAoBA,OAAO,kBAAkB,CAAC"}