@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.
- package/lib/browser/ai-core-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-core-frontend-module.js +2 -0
- package/lib/browser/ai-core-frontend-module.js.map +1 -1
- package/lib/common/capability-utils.d.ts +52 -0
- package/lib/common/capability-utils.d.ts.map +1 -0
- package/lib/common/capability-utils.js +53 -0
- package/lib/common/capability-utils.js.map +1 -0
- package/lib/common/capability-utils.spec.d.ts +2 -0
- package/lib/common/capability-utils.spec.d.ts.map +1 -0
- package/lib/common/capability-utils.spec.js +225 -0
- package/lib/common/capability-utils.spec.js.map +1 -0
- package/lib/common/capability-variable-contribution.d.ts +15 -0
- package/lib/common/capability-variable-contribution.d.ts.map +1 -0
- package/lib/common/capability-variable-contribution.js +147 -0
- package/lib/common/capability-variable-contribution.js.map +1 -0
- package/lib/common/capability-variable-contribution.spec.d.ts +2 -0
- package/lib/common/capability-variable-contribution.spec.d.ts.map +1 -0
- package/lib/common/capability-variable-contribution.spec.js +195 -0
- package/lib/common/capability-variable-contribution.spec.js.map +1 -0
- package/lib/common/index.d.ts +1 -0
- package/lib/common/index.d.ts.map +1 -1
- package/lib/common/index.js +1 -0
- package/lib/common/index.js.map +1 -1
- package/lib/common/prompt-service.d.ts +3 -2
- package/lib/common/prompt-service.d.ts.map +1 -1
- package/lib/common/prompt-service.js +10 -2
- package/lib/common/prompt-service.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/ai-core-frontend-module.ts +2 -0
- package/src/common/capability-utils.spec.ts +265 -0
- package/src/common/capability-utils.ts +96 -0
- package/src/common/capability-variable-contribution.spec.ts +316 -0
- package/src/common/capability-variable-contribution.ts +180 -0
- package/src/common/index.ts +1 -0
- 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;;
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|