@theia/ai-core 1.72.0-next.50 → 1.72.0-next.52
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/file-variable-contribution.d.ts.map +1 -1
- package/lib/browser/file-variable-contribution.js +17 -2
- package/lib/browser/file-variable-contribution.js.map +1 -1
- package/lib/browser/frontend-prompt-customization-service.d.ts +11 -1
- package/lib/browser/frontend-prompt-customization-service.d.ts.map +1 -1
- package/lib/browser/frontend-prompt-customization-service.js +44 -3
- package/lib/browser/frontend-prompt-customization-service.js.map +1 -1
- package/lib/browser/frontend-prompt-customization-service.spec.d.ts +1 -1
- package/lib/browser/frontend-prompt-customization-service.spec.d.ts.map +1 -1
- package/lib/browser/frontend-prompt-customization-service.spec.js +129 -0
- package/lib/browser/frontend-prompt-customization-service.spec.js.map +1 -1
- package/lib/browser/open-editors-variable-contribution.d.ts +1 -1
- package/lib/browser/open-editors-variable-contribution.d.ts.map +1 -1
- package/lib/browser/open-editors-variable-contribution.js +2 -4
- package/lib/browser/open-editors-variable-contribution.js.map +1 -1
- package/lib/browser/skill-service.d.ts +1 -1
- package/lib/browser/skill-service.d.ts.map +1 -1
- package/lib/browser/skill-service.js +5 -9
- package/lib/browser/skill-service.js.map +1 -1
- package/lib/browser/theia-variable-contribution.d.ts.map +1 -1
- package/lib/browser/theia-variable-contribution.js +8 -10
- package/lib/browser/theia-variable-contribution.js.map +1 -1
- package/package.json +9 -9
- package/src/browser/file-variable-contribution.ts +21 -2
- package/src/browser/frontend-prompt-customization-service.spec.ts +199 -0
- package/src/browser/frontend-prompt-customization-service.ts +48 -4
- package/src/browser/open-editors-variable-contribution.ts +4 -5
- package/src/browser/skill-service.ts +5 -9
- package/src/browser/theia-variable-contribution.ts +8 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-editors-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/open-editors-variable-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sCAAgD;AAChD,4DAAkE;AAClE,uDAA0D;AAC1D,0DAAgE;AAInD,QAAA,qBAAqB,GAAe;IAC7C,EAAE,EAAE,aAAa;IACjB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,
|
|
1
|
+
{"version":3,"file":"open-editors-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/open-editors-variable-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,sCAAgD;AAChD,4DAAkE;AAClE,uDAA0D;AAC1D,0DAAgE;AAInD,QAAA,qBAAqB,GAAe;IAC7C,EAAE,EAAE,aAAa;IACjB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EACrE,iHAAiH,CAAC;IACtH,IAAI,EAAE,aAAa;CACtB,CAAC;AAEW,QAAA,2BAA2B,GAAe;IACnD,EAAE,EAAE,kBAAkB;IACtB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oDAAoD,EAAE,+EAA+E,CAAC;IAChK,IAAI,EAAE,KAAK;CACd,CAAC;AAGK,IAAM,+BAA+B,GAArC,MAAM,+BAA+B;IAQxC,iBAAiB,CAAC,OAA0B;QACxC,OAAO,CAAC,gBAAgB,CAAC,6BAAqB,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,CAAC,gBAAgB,CAAC,mCAA2B,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,OAAoC,EAAE,QAA2B;QACxE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,6BAAqB,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzI,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,QAA2B;QAC3E,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,6BAAqB,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,EAAE,CAAC;YACrH,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjD,OAAO;YACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,SAAS;SACnB,CAAC;IACN,CAAC;IAES,uBAAuB;QAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,+CAA+C;QAC/C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC;YAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC;YACpC,IAAI,GAAG,EAAE,CAAC;gBACN,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;gBACxD,IAAI,YAAY,EAAE,CAAC;oBACf,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;gBACxC,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAES,wBAAwB,CAAC,GAAQ;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;CACJ,CAAA;AAjDY,0EAA+B;AAGrB;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;sEAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;yEAAC;0CAN7C,+BAA+B;IAD3C,IAAA,sBAAU,GAAE;GACA,+BAA+B,CAiD3C"}
|
|
@@ -37,7 +37,7 @@ export declare class DefaultSkillService implements SkillService {
|
|
|
37
37
|
getSkill(name: string): Skill | undefined;
|
|
38
38
|
protected scheduleUpdate(): void;
|
|
39
39
|
protected update(): Promise<void>;
|
|
40
|
-
protected
|
|
40
|
+
protected getWorkspaceSkillsDirectoryPaths(): string[];
|
|
41
41
|
protected getDefaultSkillsDirectoryPath(): Promise<string>;
|
|
42
42
|
protected processSkillDirectoryWithParentWatching(directoryPath: string, skills: Map<string, Skill>, disposables: DisposableCollection, watchedDirectories: Set<string>, parentWatchers: Map<string, string>): Promise<void>;
|
|
43
43
|
protected processConfiguredSkillDirectory(directoryPath: string, skills: Map<string, Skill>, disposables: DisposableCollection, watchedDirectories: Set<string>): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAqC,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,KAAK,EAA+E,MAAM,iBAAiB,CAAC;AAKrH,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,MAAM,WAAW,YAAY;IACzB,gCAAgC;IAChC,SAAS,IAAI,KAAK,EAAE,CAAC;IAErB,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IAE1C,qCAAqC;IACrC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEtC,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,qBACa,mBAAoB,YAAW,YAAY;IAEpD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAGlD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAI5C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGnC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAG1D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,SAAS,CAAC,MAAM,qBAA4B;IAC5C,SAAS,CAAC,SAAS,uBAA8B;IACjD,SAAS,CAAC,kBAAkB,cAAqB;IACjD,SAAS,CAAC,cAAc,sBAA6B;IAErD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,gBAAuB;IAChE,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAqC;IAC1E,SAAS,CAAC,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAExD,SAAS,CAAC,qBAAqB,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IAE3E,SAAS,CAAC,MAAM,iBAAwB;IACxC,IAAI,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzB;IAGD,SAAS,CAAC,IAAI,IAAI,IAAI;IAkEtB,SAAS,IAAI,KAAK,EAAE;IAIpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAIzC,SAAS,CAAC,cAAc,IAAI,IAAI;cAUhB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA6DvC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"skill-service.d.ts","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -124,7 +124,7 @@ let DefaultSkillService = class DefaultSkillService {
|
|
|
124
124
|
this.toDispose.dispose();
|
|
125
125
|
const newDisposables = new core_1.DisposableCollection();
|
|
126
126
|
const newSkills = new Map();
|
|
127
|
-
const
|
|
127
|
+
const workspaceSkillsDirs = this.getWorkspaceSkillsDirectoryPaths();
|
|
128
128
|
const homeDirUri = await this.envVariablesServer.getHomeDirUri();
|
|
129
129
|
const homePath = new core_1.URI(homeDirUri).path.fsPath();
|
|
130
130
|
const configuredDirectories = (this.preferences[ai_core_preferences_1.PREFERENCE_NAME_SKILL_DIRECTORIES] ?? [])
|
|
@@ -132,7 +132,7 @@ let DefaultSkillService = class DefaultSkillService {
|
|
|
132
132
|
const defaultSkillsDir = await this.getDefaultSkillsDirectoryPath();
|
|
133
133
|
const newWatchedDirectories = new Set();
|
|
134
134
|
const newParentWatchers = new Map();
|
|
135
|
-
|
|
135
|
+
for (const workspaceSkillsDir of workspaceSkillsDirs) {
|
|
136
136
|
await this.processSkillDirectoryWithParentWatching(workspaceSkillsDir, newSkills, newDisposables, newWatchedDirectories, newParentWatchers);
|
|
137
137
|
}
|
|
138
138
|
for (const configuredDir of configuredDirectories) {
|
|
@@ -154,13 +154,9 @@ let DefaultSkillService = class DefaultSkillService {
|
|
|
154
154
|
this.parentWatchers = newParentWatchers;
|
|
155
155
|
this.onSkillsChangedEmitter.fire();
|
|
156
156
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return undefined;
|
|
161
|
-
}
|
|
162
|
-
// Use primary workspace root
|
|
163
|
-
return roots[0].resource.resolve('.prompts/skills').path.fsPath();
|
|
157
|
+
getWorkspaceSkillsDirectoryPaths() {
|
|
158
|
+
return this.workspaceService.tryGetRoots()
|
|
159
|
+
.map(root => root.resource.resolve('.prompts/skills').path.fsPath());
|
|
164
160
|
}
|
|
165
161
|
async getDefaultSkillsDirectoryPath() {
|
|
166
162
|
const configDirUri = await this.envVariablesServer.getConfigDirUri();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-service.js","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAwF;AACxF,sEAA+D;AAC/D,sCAAiF;AACjF,sDAAmD;AACnD,wEAA0E;AAC1E,6EAAyE;AAEzE,0DAAgE;AAChE,uEAAqG;AACrG,2CAAqH;AAErH,6DAA6D;AAC7D,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAEjB,QAAA,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAgB5C,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAAzB;QAiBO,WAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;QAClC,cAAS,GAAG,IAAI,2BAAoB,EAAE,CAAC;QACvC,uBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,mBAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;QAElC,2BAAsB,GAAG,IAAI,cAAO,EAAQ,CAAC;QACvD,oBAAe,GAAgB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAKhE,WAAM,GAAG,IAAI,uBAAQ,EAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"skill-service.js","sourceRoot":"","sources":["../../src/browser/skill-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAIrG,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9J;;GAEG;AACH,UAAU,eAAe;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBACa,yBAA0B,YAAW,sBAAsB,EAAE,kBAAkB;IAExF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAY;IAGhD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC;IAIjE,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"theia-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AAIrG,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE9J;;GAEG;AACH,UAAU,eAAe;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,qBACa,yBAA0B,YAAW,sBAAsB,EAAE,kBAAkB;IAExF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAY;IAGhD,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,+BAA+B,CAAC;IAIjE,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CA0CxD;IAEH,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAkCnD,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM;IAYjE,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAU7F,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;CAI3H"}
|
|
@@ -35,41 +35,39 @@ let TheiaVariableContribution = class TheiaVariableContribution {
|
|
|
35
35
|
{
|
|
36
36
|
name: 'currentAbsoluteFilePath',
|
|
37
37
|
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentAbsoluteFilePath', 'The absolute path of the \
|
|
38
|
-
currently opened file.
|
|
38
|
+
currently opened file.')
|
|
39
39
|
}
|
|
40
40
|
]],
|
|
41
41
|
['selectedText', [
|
|
42
42
|
{
|
|
43
43
|
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentSelectedText', 'The plain text that is currently selected in the \
|
|
44
|
-
opened file. This excludes the information where the content is coming from.
|
|
45
|
-
(relative to the current workspace).')
|
|
44
|
+
opened file. This excludes the information where the content is coming from.')
|
|
46
45
|
}
|
|
47
46
|
]],
|
|
48
47
|
['currentText', [
|
|
49
48
|
{
|
|
50
49
|
name: 'currentFileContent',
|
|
51
50
|
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentFileContent', 'The plain content of the \
|
|
52
|
-
currently opened file. This excludes the information where the content is coming from.
|
|
53
|
-
(relative to the current workspace).')
|
|
51
|
+
currently opened file. This excludes the information where the content is coming from.')
|
|
54
52
|
}
|
|
55
53
|
]],
|
|
56
54
|
['relativeFile', [
|
|
57
55
|
{
|
|
58
56
|
name: 'currentRelativeFilePath',
|
|
59
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeFilePath', 'The relative path of the \
|
|
60
|
-
currently opened file.')
|
|
57
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeFilePath', 'The workspace-relative path of the \
|
|
58
|
+
currently opened file (e.g., my-project/src/index.ts).')
|
|
61
59
|
},
|
|
62
60
|
{
|
|
63
61
|
name: '_f',
|
|
64
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/dotRelativePath', 'Short reference to the relative path of the \
|
|
62
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/dotRelativePath', 'Short reference to the workspace-relative path of the \
|
|
65
63
|
currently opened file (\'currentRelativeFilePath\').')
|
|
66
64
|
}
|
|
67
65
|
]],
|
|
68
66
|
['relativeFileDirname', [
|
|
69
67
|
{
|
|
70
68
|
name: 'currentRelativeDirPath',
|
|
71
|
-
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeDirPath', 'The relative path of the directory \
|
|
72
|
-
containing the currently opened file.')
|
|
69
|
+
description: nls_1.nls.localize('theia/ai/core/variable-contribution/currentRelativeDirPath', 'The workspace-relative path of the directory \
|
|
70
|
+
containing the currently opened file (e.g., my-project/src).')
|
|
73
71
|
}
|
|
74
72
|
]],
|
|
75
73
|
['lineNumber', [{}]],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theia-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,mGAAqG;AACrG,uHAAiH;AACjH,oDAAiD;AACjD,4DAAkE;AAClE,kEAAiG;AAWjG;;GAEG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QAaH,oFAAoF;QACpF,qDAAqD;QAC3C,sBAAiB,GAAmC,IAAI,GAAG,CAAC;YAClE,CAAC,MAAM,EAAE;oBACL;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EAAE;
|
|
1
|
+
{"version":3,"file":"theia-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/theia-variable-contribution.ts"],"names":[],"mappings":";;;;;AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;AAChF,mGAAqG;AACrG,uHAAiH;AACjH,oDAAiD;AACjD,4DAAkE;AAClE,kEAAiG;AAWjG;;GAEG;AAEI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAA/B;QAaH,oFAAoF;QACpF,qDAAqD;QAC3C,sBAAiB,GAAmC,IAAI,GAAG,CAAC;YAClE,CAAC,MAAM,EAAE;oBACL;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EAAE;uCAClE,CAAC;qBAC3B;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,yDAAyD,EAAE;6FACR,CAAC;qBACjF;iBACJ,CAAC;YACF,CAAC,aAAa,EAAE;oBACZ;wBACI,IAAI,EAAE,oBAAoB;wBAC1B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,wDAAwD,EAAE;uGACG,CAAC;qBAC3F;iBACJ,CAAC;YACF,CAAC,cAAc,EAAE;oBACb;wBACI,IAAI,EAAE,yBAAyB;wBAC/B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,6DAA6D,EAAE;uEAClC,CAAC;qBAC3D;oBACD;wBACI,IAAI,EAAE,IAAI;wBACV,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,qDAAqD,EAAE;qEAC5B,CAAC;qBACzD;iBACJ,CAAC;YACF,CAAC,qBAAqB,EAAE;oBACpB;wBACI,IAAI,EAAE,wBAAwB;wBAC9B,WAAW,EAAE,SAAG,CAAC,QAAQ,CAAC,4DAA4D,EAAE;6EAC3B,CAAC;qBACjE;iBACJ,CAAC;YACF,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;SAC5B,CAAC,CAAC;IA8DP,CAAC;;aArH2B,iBAAY,GAAG,QAAQ,AAAX,CAAY;IAyDhD,iBAAiB,CAAC,OAA0B;QACxC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3D,8GAA8G;YAC9G,+FAA+F;YAC/F,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBACpD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7C,OAAO,CAAC,gDAAgD;gBAC5D,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAE,CAAC;gBAE5D,0CAA0C;gBAC1C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAC5F,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW;wBACnG,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;4BAChF,CAAC,CAAC,SAAG,CAAC,QAAQ,CAAC,qDAAqD,EACpE,uBAAuB,EACvB,wEAAiC,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;oBAElE,uFAAuF;oBACvF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,MAAM,EAAE,GAAG,GAAG,2BAAyB,CAAC,YAAY,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,EAAE,CAAC;oBAElF,OAAO,CAAC,gBAAgB,CAAC;wBACrB,EAAE;wBACF,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,cAAc;qBAC9B,EAAE,IAAI,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe,CAAC,OAAoC;QAC1D,6FAA6F;QAC7F,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,2BAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAChE,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,2BAAyB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC7E,mDAAmD;YACnD,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAoC,EAAE,OAA0B;QAC7E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,2BAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,CAAC;QACb,CAAC;QACD,yEAAyE;QACzE,6EAA6E;QAC7E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,OAA0B;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACpG,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,CAAC;;AAtHQ,8DAAyB;AAKf;IADlB,IAAA,kBAAM,EAAC,iCAAuB,CAAC;sCACY,iCAAuB;0EAAC;AAGjD;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;mEAAC;AAGnC;IADlB,IAAA,kBAAM,EAAC,4DAA+B,CAAC;sCACP,4DAA+B;+DAAC;oCAXxD,yBAAyB;IADrC,IAAA,sBAAU,GAAE;GACA,yBAAyB,CAuHrC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-core",
|
|
3
|
-
"version": "1.72.0-next.
|
|
3
|
+
"version": "1.72.0-next.52+726081b2a",
|
|
4
4
|
"description": "Theia - AI Core",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/core": "1.72.0-next.
|
|
7
|
-
"@theia/editor": "1.72.0-next.
|
|
8
|
-
"@theia/filesystem": "1.72.0-next.
|
|
9
|
-
"@theia/monaco": "1.72.0-next.
|
|
6
|
+
"@theia/core": "1.72.0-next.52+726081b2a",
|
|
7
|
+
"@theia/editor": "1.72.0-next.52+726081b2a",
|
|
8
|
+
"@theia/filesystem": "1.72.0-next.52+726081b2a",
|
|
9
|
+
"@theia/monaco": "1.72.0-next.52+726081b2a",
|
|
10
10
|
"@theia/monaco-editor-core": "1.108.201",
|
|
11
|
-
"@theia/output": "1.72.0-next.
|
|
12
|
-
"@theia/variable-resolver": "1.72.0-next.
|
|
13
|
-
"@theia/workspace": "1.72.0-next.
|
|
11
|
+
"@theia/output": "1.72.0-next.52+726081b2a",
|
|
12
|
+
"@theia/variable-resolver": "1.72.0-next.52+726081b2a",
|
|
13
|
+
"@theia/workspace": "1.72.0-next.52+726081b2a",
|
|
14
14
|
"@types/js-yaml": "^4.0.9",
|
|
15
15
|
"fast-deep-equal": "^3.1.3",
|
|
16
16
|
"js-yaml": "^4.1.1",
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"nyc": {
|
|
59
59
|
"extends": "../../configs/nyc.json"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "726081b2aa03827611ba4a323da1a6aaf0e9a9b9"
|
|
62
62
|
}
|
|
@@ -71,9 +71,10 @@ export class FileVariableContribution implements AIVariableContribution, AIVaria
|
|
|
71
71
|
|
|
72
72
|
try {
|
|
73
73
|
const content = await this.fileService.readFile(uri);
|
|
74
|
+
const relativePath = this.wsService.getRootPrefixedPath(uri);
|
|
74
75
|
return {
|
|
75
76
|
variable: request.variable,
|
|
76
|
-
value:
|
|
77
|
+
value: relativePath,
|
|
77
78
|
contextValue: content.value.toString(),
|
|
78
79
|
};
|
|
79
80
|
} catch (error) {
|
|
@@ -103,9 +104,26 @@ export class FileVariableContribution implements AIVariableContribution, AIVaria
|
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
protected async makeAbsolute(pathStr: string): Promise<URI | undefined> {
|
|
106
|
-
const
|
|
107
|
+
const normalizedPath = Path.normalizePathSeparator(pathStr);
|
|
108
|
+
const path = new Path(normalizedPath);
|
|
109
|
+
|
|
107
110
|
if (!path.isAbsolute) {
|
|
108
111
|
const workspaceRoots = this.wsService.tryGetRoots();
|
|
112
|
+
|
|
113
|
+
const segments = normalizedPath.split('/');
|
|
114
|
+
if (segments.length > 0) {
|
|
115
|
+
const potentialRootName = segments[0];
|
|
116
|
+
for (const root of workspaceRoots) {
|
|
117
|
+
if (root.resource.path.base === potentialRootName) {
|
|
118
|
+
const restOfPath = segments.slice(1).join('/');
|
|
119
|
+
const uri = restOfPath ? root.resource.resolve(restOfPath) : root.resource;
|
|
120
|
+
if (await this.fileService.exists(uri)) {
|
|
121
|
+
return uri;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
109
127
|
const wsUris = workspaceRoots.map(root => root.resource.resolve(path));
|
|
110
128
|
for (const uri of wsUris) {
|
|
111
129
|
if (await this.fileService.exists(uri)) {
|
|
@@ -113,6 +131,7 @@ export class FileVariableContribution implements AIVariableContribution, AIVaria
|
|
|
113
131
|
}
|
|
114
132
|
}
|
|
115
133
|
}
|
|
134
|
+
|
|
116
135
|
const argUri = new URI(pathStr);
|
|
117
136
|
if (await this.fileService.exists(argUri)) {
|
|
118
137
|
return argUri;
|
|
@@ -14,8 +14,20 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { enableJSDOM } from '@theia/core/lib/browser/test/jsdom';
|
|
18
|
+
|
|
19
|
+
let disableJSDOM = enableJSDOM();
|
|
20
|
+
import { FrontendApplicationConfigProvider } from '@theia/core/lib/browser/frontend-application-config-provider';
|
|
21
|
+
FrontendApplicationConfigProvider.set({});
|
|
22
|
+
|
|
23
|
+
import 'reflect-metadata';
|
|
24
|
+
|
|
17
25
|
import { expect } from 'chai';
|
|
26
|
+
import URI from '@theia/core/lib/common/uri';
|
|
18
27
|
import { parseTemplateWithMetadata, ParsedTemplate } from './prompttemplate-parser';
|
|
28
|
+
import { CustomizationSource, DefaultPromptFragmentCustomizationService } from './frontend-prompt-customization-service';
|
|
29
|
+
|
|
30
|
+
disableJSDOM();
|
|
19
31
|
|
|
20
32
|
describe('Prompt Template Parser', () => {
|
|
21
33
|
|
|
@@ -199,4 +211,191 @@ Template`;
|
|
|
199
211
|
expect(result.metadata?.description).to.be.undefined;
|
|
200
212
|
});
|
|
201
213
|
});
|
|
214
|
+
|
|
215
|
+
describe('DefaultPromptFragmentCustomizationService - addTemplate conflict resolution', () => {
|
|
216
|
+
before(() => disableJSDOM = enableJSDOM());
|
|
217
|
+
after(() => disableJSDOM());
|
|
218
|
+
|
|
219
|
+
interface FragmentEntry {
|
|
220
|
+
id: string;
|
|
221
|
+
template: string;
|
|
222
|
+
sourceUri: string;
|
|
223
|
+
sourceUris: string[];
|
|
224
|
+
priority: number;
|
|
225
|
+
origin: CustomizationSource;
|
|
226
|
+
customizationId: string;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Test subclass that exposes the protected `addTemplate` and `provenanceLabel`
|
|
231
|
+
* methods so we can unit-test conflict resolution without mocking the filesystem.
|
|
232
|
+
*/
|
|
233
|
+
class TestableCustomizationService extends DefaultPromptFragmentCustomizationService {
|
|
234
|
+
// Prevent @postConstruct from running (it touches preferences)
|
|
235
|
+
protected override init(): void { }
|
|
236
|
+
|
|
237
|
+
/** Configure fake workspace roots so provenanceLabel can resolve them. */
|
|
238
|
+
setRoots(rootUris: string[]): void {
|
|
239
|
+
const roots = rootUris.map(r => new URI(r));
|
|
240
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
241
|
+
(this as any).workspaceService = {
|
|
242
|
+
getWorkspaceRootUri(uri: URI): URI | undefined {
|
|
243
|
+
return roots.find(root => uri.toString().startsWith(root.toString()));
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
public testAddTemplate(
|
|
249
|
+
active: Map<string, FragmentEntry>,
|
|
250
|
+
id: string,
|
|
251
|
+
template: string,
|
|
252
|
+
sourceUri: string,
|
|
253
|
+
all: Map<string, FragmentEntry>,
|
|
254
|
+
priority: number,
|
|
255
|
+
origin: CustomizationSource
|
|
256
|
+
): void {
|
|
257
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
258
|
+
(this as any).addTemplate(active, id, template, sourceUri, all, priority, origin);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
public testProvenanceLabel(sourceUri: string): string {
|
|
262
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
263
|
+
return (this as any).provenanceLabel(sourceUri);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
let service: TestableCustomizationService;
|
|
268
|
+
let activeMap: Map<string, FragmentEntry>;
|
|
269
|
+
let allMap: Map<string, FragmentEntry>;
|
|
270
|
+
|
|
271
|
+
beforeEach(() => {
|
|
272
|
+
service = new TestableCustomizationService();
|
|
273
|
+
service.setRoots([
|
|
274
|
+
'file:///rootA',
|
|
275
|
+
'file:///rootB',
|
|
276
|
+
'file:///rootC',
|
|
277
|
+
'file:///home/user/my-project'
|
|
278
|
+
]);
|
|
279
|
+
activeMap = new Map();
|
|
280
|
+
allMap = new Map();
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
it('adds a fragment when no conflict exists', () => {
|
|
284
|
+
const uri = 'file:///rootA/.prompts/project-info.prompttemplate';
|
|
285
|
+
service.testAddTemplate(
|
|
286
|
+
activeMap, 'project-info', 'Content A', uri, allMap, 2, CustomizationSource.FOLDER
|
|
287
|
+
);
|
|
288
|
+
|
|
289
|
+
expect(activeMap.has('project-info')).to.be.true;
|
|
290
|
+
expect(activeMap.get('project-info')!.template).to.equal('Content A');
|
|
291
|
+
expect(activeMap.get('project-info')!.sourceUris).to.deep.equal([uri]);
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
it('higher priority replaces lower priority', () => {
|
|
295
|
+
service.testAddTemplate(
|
|
296
|
+
activeMap, 'project-info', 'Low priority',
|
|
297
|
+
'file:///rootA/.prompts/project-info.prompttemplate', allMap, 1, CustomizationSource.CUSTOMIZED
|
|
298
|
+
);
|
|
299
|
+
service.testAddTemplate(
|
|
300
|
+
activeMap, 'project-info', 'High priority',
|
|
301
|
+
'file:///rootB/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
expect(activeMap.get('project-info')!.template).to.equal('High priority');
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
it('same source URI updates in place', () => {
|
|
308
|
+
const uri = 'file:///rootA/.prompts/project-info.prompttemplate';
|
|
309
|
+
service.testAddTemplate(activeMap, 'project-info', 'Original', uri, allMap, 2, CustomizationSource.FOLDER);
|
|
310
|
+
service.testAddTemplate(activeMap, 'project-info', 'Updated', uri, allMap, 2, CustomizationSource.FOLDER);
|
|
311
|
+
|
|
312
|
+
expect(activeMap.get('project-info')!.template).to.equal('Updated');
|
|
313
|
+
expect(activeMap.get('project-info')!.sourceUris).to.deep.equal([uri]);
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
it('equal priority from different sources concatenates with provenance labels', () => {
|
|
317
|
+
service.testAddTemplate(
|
|
318
|
+
activeMap, 'project-info', 'Content A',
|
|
319
|
+
'file:///rootA/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
320
|
+
);
|
|
321
|
+
service.testAddTemplate(
|
|
322
|
+
activeMap, 'project-info', 'Content B',
|
|
323
|
+
'file:///rootB/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
const entry = activeMap.get('project-info')!;
|
|
327
|
+
expect(entry.sourceUris).to.have.lengthOf(2);
|
|
328
|
+
expect(entry.template).to.contain('Content A');
|
|
329
|
+
expect(entry.template).to.contain('Content B');
|
|
330
|
+
expect(entry.template).to.contain('### rootA');
|
|
331
|
+
expect(entry.template).to.contain('### rootB');
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
it('three-way merge concatenates all sources in order', () => {
|
|
335
|
+
service.testAddTemplate(
|
|
336
|
+
activeMap, 'project-info', 'Content A',
|
|
337
|
+
'file:///rootA/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
338
|
+
);
|
|
339
|
+
service.testAddTemplate(
|
|
340
|
+
activeMap, 'project-info', 'Content B',
|
|
341
|
+
'file:///rootB/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
342
|
+
);
|
|
343
|
+
service.testAddTemplate(
|
|
344
|
+
activeMap, 'project-info', 'Content C',
|
|
345
|
+
'file:///rootC/.prompts/project-info.prompttemplate', allMap, 2, CustomizationSource.FOLDER
|
|
346
|
+
);
|
|
347
|
+
|
|
348
|
+
const entry = activeMap.get('project-info')!;
|
|
349
|
+
expect(entry.sourceUris).to.have.lengthOf(3);
|
|
350
|
+
expect(entry.template).to.contain('### rootA');
|
|
351
|
+
expect(entry.template).to.contain('### rootB');
|
|
352
|
+
expect(entry.template).to.contain('### rootC');
|
|
353
|
+
// Verify ordering: A before B before C
|
|
354
|
+
const idxA = entry.template.indexOf('Content A');
|
|
355
|
+
const idxB = entry.template.indexOf('Content B');
|
|
356
|
+
const idxC = entry.template.indexOf('Content C');
|
|
357
|
+
expect(idxA).to.be.lessThan(idxB);
|
|
358
|
+
expect(idxB).to.be.lessThan(idxC);
|
|
359
|
+
});
|
|
360
|
+
|
|
361
|
+
it('provenanceLabel extracts grandparent directory name from URI', () => {
|
|
362
|
+
// For "file:///home/user/my-project/.prompts/foo.prompttemplate"
|
|
363
|
+
// parent is ".prompts", grandparent is "my-project"
|
|
364
|
+
const label = service.testProvenanceLabel(
|
|
365
|
+
'file:///home/user/my-project/.prompts/foo.prompttemplate'
|
|
366
|
+
);
|
|
367
|
+
expect(label).to.equal('my-project');
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
it('provenanceLabel falls back to parent if grandparent is empty', () => {
|
|
371
|
+
expect(service.testProvenanceLabel('file:///.prompts/foo.prompttemplate'))
|
|
372
|
+
.to.equal('.prompts');
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
it('merged entry preserves primary sourceUri for backwards compatibility', () => {
|
|
376
|
+
const uriA = 'file:///rootA/.prompts/project-info.prompttemplate';
|
|
377
|
+
const uriB = 'file:///rootB/.prompts/project-info.prompttemplate';
|
|
378
|
+
service.testAddTemplate(activeMap, 'project-info', 'Content A', uriA, allMap, 2, CustomizationSource.FOLDER);
|
|
379
|
+
service.testAddTemplate(activeMap, 'project-info', 'Content B', uriB, allMap, 2, CustomizationSource.FOLDER);
|
|
380
|
+
|
|
381
|
+
const entry = activeMap.get('project-info')!;
|
|
382
|
+
// Primary sourceUri should be the first one added
|
|
383
|
+
expect(entry.sourceUri).to.equal(uriA);
|
|
384
|
+
// All sources tracked
|
|
385
|
+
expect(entry.sourceUris).to.deep.equal([uriA, uriB]);
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
it('all map tracks each source independently', () => {
|
|
389
|
+
const uriA = 'file:///rootA/.prompts/project-info.prompttemplate';
|
|
390
|
+
const uriB = 'file:///rootB/.prompts/project-info.prompttemplate';
|
|
391
|
+
service.testAddTemplate(activeMap, 'project-info', 'Content A', uriA, allMap, 2, CustomizationSource.FOLDER);
|
|
392
|
+
service.testAddTemplate(activeMap, 'project-info', 'Content B', uriB, allMap, 2, CustomizationSource.FOLDER);
|
|
393
|
+
|
|
394
|
+
// allCustomizations is keyed by sourceUri, so both should be present
|
|
395
|
+
expect(allMap.has(uriA)).to.be.true;
|
|
396
|
+
expect(allMap.has(uriB)).to.be.true;
|
|
397
|
+
expect(allMap.get(uriA)!.template).to.equal('Content A');
|
|
398
|
+
expect(allMap.get(uriB)!.template).to.equal('Content B');
|
|
399
|
+
});
|
|
400
|
+
});
|
|
202
401
|
});
|
|
@@ -27,6 +27,7 @@ import { EnvVariablesServer } from '@theia/core/lib/common/env-variables';
|
|
|
27
27
|
import { dump, load } from 'js-yaml';
|
|
28
28
|
import { PROMPT_TEMPLATE_EXTENSION } from './prompttemplate-contribution';
|
|
29
29
|
import { parseTemplateWithMetadata, ParsedTemplate } from './prompttemplate-parser';
|
|
30
|
+
import { WorkspaceService } from '@theia/workspace/lib/browser';
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
33
|
* Default template entry for creating custom agents
|
|
@@ -89,9 +90,12 @@ interface PromptFragmentCustomization extends CommandPromptFragmentMetadata {
|
|
|
89
90
|
/** The template content */
|
|
90
91
|
template: string;
|
|
91
92
|
|
|
92
|
-
/** Source URI where this template is stored */
|
|
93
|
+
/** Source URI where this template is stored (first/primary source when merged) */
|
|
93
94
|
sourceUri: string;
|
|
94
95
|
|
|
96
|
+
/** All source URIs when multiple equal-priority sources were merged */
|
|
97
|
+
sourceUris: string[];
|
|
98
|
+
|
|
95
99
|
/** Source type of the customization */
|
|
96
100
|
origin: CustomizationSource;
|
|
97
101
|
|
|
@@ -136,6 +140,9 @@ export class DefaultPromptFragmentCustomizationService implements PromptFragment
|
|
|
136
140
|
@inject(ConfigurableInMemoryResources)
|
|
137
141
|
protected readonly inMemoryResources: ConfigurableInMemoryResources;
|
|
138
142
|
|
|
143
|
+
@inject(WorkspaceService)
|
|
144
|
+
protected readonly workspaceService: WorkspaceService;
|
|
145
|
+
|
|
139
146
|
/** Stores URI strings of template files from directories currently being monitored for changes. */
|
|
140
147
|
protected trackedTemplateURIs = new Set<string>();
|
|
141
148
|
|
|
@@ -240,6 +247,7 @@ export class DefaultPromptFragmentCustomizationService implements PromptFragment
|
|
|
240
247
|
id,
|
|
241
248
|
template,
|
|
242
249
|
sourceUri,
|
|
250
|
+
sourceUris: [sourceUri],
|
|
243
251
|
priority,
|
|
244
252
|
customizationId,
|
|
245
253
|
origin,
|
|
@@ -262,6 +270,16 @@ export class DefaultPromptFragmentCustomizationService implements PromptFragment
|
|
|
262
270
|
const existingEntry = activeCustomizationsCopy.get(id);
|
|
263
271
|
|
|
264
272
|
if (existingEntry) {
|
|
273
|
+
// If the existing entry was merged from multiple sources and we're
|
|
274
|
+
// operating on the live maps (incremental watcher update), a single
|
|
275
|
+
// file change can't reconstruct the merge correctly. Schedule a
|
|
276
|
+
// full rebuild instead. During update() the maps are fresh locals,
|
|
277
|
+
// so this check won't fire.
|
|
278
|
+
if (existingEntry.sourceUris.length > 1 && activeCustomizationsCopy === this.activeCustomizations) {
|
|
279
|
+
this.update();
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
|
|
265
283
|
// If this is an update to the same file (same source URI)
|
|
266
284
|
if (sourceUri && existingEntry.sourceUri === sourceUri) {
|
|
267
285
|
// Update the content while keeping the same priority and source
|
|
@@ -274,9 +292,17 @@ export class DefaultPromptFragmentCustomizationService implements PromptFragment
|
|
|
274
292
|
activeCustomizationsCopy.set(id, customization);
|
|
275
293
|
return;
|
|
276
294
|
} else if (priority === existingEntry.priority) {
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
|
|
295
|
+
// Same priority from different sources: concatenate with provenance labels.
|
|
296
|
+
// Build a new object so we don't mutate the entry shared with allCustomizationsCopy.
|
|
297
|
+
const existingLabel = this.provenanceLabel(existingEntry.sourceUri);
|
|
298
|
+
const newLabel = this.provenanceLabel(sourceUri);
|
|
299
|
+
const mergedTemplate = `### ${existingLabel}\n\n${existingEntry.template}\n\n### ${newLabel}\n\n${template}`;
|
|
300
|
+
const mergedEntry: PromptFragmentCustomization = {
|
|
301
|
+
...existingEntry,
|
|
302
|
+
template: mergedTemplate,
|
|
303
|
+
sourceUris: [...existingEntry.sourceUris, sourceUri],
|
|
304
|
+
};
|
|
305
|
+
activeCustomizationsCopy.set(id, mergedEntry);
|
|
280
306
|
}
|
|
281
307
|
return;
|
|
282
308
|
}
|
|
@@ -298,6 +324,24 @@ export class DefaultPromptFragmentCustomizationService implements PromptFragment
|
|
|
298
324
|
return `${id}_${sourceHash}`;
|
|
299
325
|
}
|
|
300
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Extracts a human-readable provenance label from a source URI.
|
|
329
|
+
* Returns the name of the workspace root that contains the file,
|
|
330
|
+
* falling back to the file's own base name if it is not inside any root.
|
|
331
|
+
*/
|
|
332
|
+
protected provenanceLabel(uri: string): string {
|
|
333
|
+
try {
|
|
334
|
+
const parsed = new URI(uri);
|
|
335
|
+
const rootUri = this.workspaceService.getWorkspaceRootUri(parsed);
|
|
336
|
+
if (rootUri) {
|
|
337
|
+
return rootUri.path.base;
|
|
338
|
+
}
|
|
339
|
+
return parsed.path.dir.base || parsed.path.base || uri;
|
|
340
|
+
} catch {
|
|
341
|
+
return uri;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
|
|
301
345
|
/**
|
|
302
346
|
* Simple hash function to generate a short identifier from a string
|
|
303
347
|
* @param str The string to hash
|
|
@@ -23,7 +23,8 @@ import { AIVariable, ResolvedAIVariable, AIVariableContribution, AIVariableResol
|
|
|
23
23
|
|
|
24
24
|
export const OPEN_EDITORS_VARIABLE: AIVariable = {
|
|
25
25
|
id: 'openEditors',
|
|
26
|
-
description: nls.localize('theia/ai/core/openEditorsVariable/description',
|
|
26
|
+
description: nls.localize('theia/ai/core/openEditorsVariable/description',
|
|
27
|
+
'A comma-separated list of all currently open files as workspace-relative paths (e.g., my-project/src/index.ts).'),
|
|
27
28
|
name: 'openEditors',
|
|
28
29
|
};
|
|
29
30
|
|
|
@@ -80,9 +81,7 @@ export class OpenEditorsVariableContribution implements AIVariableContribution,
|
|
|
80
81
|
return openFiles.join(', ');
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
protected getWorkspaceRelativePath(uri: URI): string
|
|
84
|
-
|
|
85
|
-
const path = workspaceRootUri && workspaceRootUri.path.relative(uri.path);
|
|
86
|
-
return path && path.toString();
|
|
84
|
+
protected getWorkspaceRelativePath(uri: URI): string {
|
|
85
|
+
return this.workspaceService.getRootPrefixedPath(uri);
|
|
87
86
|
}
|
|
88
87
|
}
|