@theia/ai-core 1.60.0-next.47 → 1.60.1
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 +4 -0
- package/lib/browser/ai-core-frontend-module.js.map +1 -1
- package/lib/browser/ai-core-preferences.d.ts +22 -8
- package/lib/browser/ai-core-preferences.d.ts.map +1 -1
- package/lib/browser/ai-core-preferences.js +90 -10
- package/lib/browser/ai-core-preferences.js.map +1 -1
- package/lib/browser/frontend-language-model-registry.d.ts.map +1 -1
- package/lib/browser/frontend-language-model-registry.js +1 -1
- package/lib/browser/frontend-language-model-registry.js.map +1 -1
- package/lib/browser/frontend-language-model-service.d.ts +10 -0
- package/lib/browser/frontend-language-model-service.d.ts.map +1 -0
- package/lib/browser/frontend-language-model-service.js +66 -0
- package/lib/browser/frontend-language-model-service.js.map +1 -0
- package/lib/browser/frontend-prompt-customization-service.d.ts +99 -2
- package/lib/browser/frontend-prompt-customization-service.d.ts.map +1 -1
- package/lib/browser/frontend-prompt-customization-service.js +245 -23
- package/lib/browser/frontend-prompt-customization-service.js.map +1 -1
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/prompttemplate-contribution.d.ts +4 -0
- package/lib/browser/prompttemplate-contribution.d.ts.map +1 -1
- package/lib/browser/prompttemplate-contribution.js +61 -2
- package/lib/browser/prompttemplate-contribution.js.map +1 -1
- package/lib/browser/theia-variable-contribution.d.ts +9 -4
- package/lib/browser/theia-variable-contribution.d.ts.map +1 -1
- package/lib/browser/theia-variable-contribution.js +67 -38
- package/lib/browser/theia-variable-contribution.js.map +1 -1
- package/lib/common/communication-recording-service.d.ts +8 -7
- package/lib/common/communication-recording-service.d.ts.map +1 -1
- package/lib/common/communication-recording-service.js.map +1 -1
- 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/language-model-service.d.ts +15 -0
- package/lib/common/language-model-service.d.ts.map +1 -0
- package/lib/common/language-model-service.js +51 -0
- package/lib/common/language-model-service.js.map +1 -0
- package/lib/common/language-model-util.d.ts.map +1 -1
- package/lib/common/language-model-util.js +1 -2
- package/lib/common/language-model-util.js.map +1 -1
- package/lib/common/language-model.d.ts +56 -15
- package/lib/common/language-model.d.ts.map +1 -1
- package/lib/common/language-model.js +27 -2
- package/lib/common/language-model.js.map +1 -1
- package/lib/common/tool-invocation-registry.d.ts +3 -0
- package/lib/common/tool-invocation-registry.d.ts.map +1 -1
- package/lib/common/tool-invocation-registry.js +7 -1
- package/lib/common/tool-invocation-registry.js.map +1 -1
- package/lib/common/variable-service.d.ts +1 -1
- package/lib/common/variable-service.d.ts.map +1 -1
- package/lib/common/variable-service.js.map +1 -1
- package/package.json +10 -10
- package/src/browser/ai-core-frontend-module.ts +4 -0
- package/src/browser/ai-core-preferences.ts +106 -15
- package/src/browser/frontend-language-model-registry.ts +2 -1
- package/src/browser/frontend-language-model-service.ts +67 -0
- package/src/browser/frontend-prompt-customization-service.ts +348 -27
- package/src/browser/index.ts +1 -0
- package/src/browser/prompttemplate-contribution.ts +80 -3
- package/src/browser/theia-variable-contribution.ts +81 -40
- package/src/common/communication-recording-service.ts +9 -7
- package/src/common/index.ts +1 -0
- package/src/common/language-model-service.ts +59 -0
- package/src/common/language-model-util.ts +9 -2
- package/src/common/language-model.ts +72 -15
- package/src/common/tool-invocation-registry.ts +7 -2
- package/src/common/variable-service.ts +2 -1
|
@@ -36,8 +36,21 @@ const templateEntry = {
|
|
|
36
36
|
};
|
|
37
37
|
let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationServiceImpl {
|
|
38
38
|
constructor() {
|
|
39
|
+
/** Stores URI strings of template files from directories currently being monitored for changes. */
|
|
39
40
|
this.trackedTemplateURIs = new Set();
|
|
40
|
-
|
|
41
|
+
/** Contains the currently active templates, mapped by template ID. */
|
|
42
|
+
this.effectiveTemplates = new Map();
|
|
43
|
+
/** Tracks all loaded templates, including overridden ones, mapped by source URI. */
|
|
44
|
+
this.allLoadedTemplates = new Map();
|
|
45
|
+
/** Stores additional directory paths for loading template files. */
|
|
46
|
+
this.additionalTemplateDirs = new Set();
|
|
47
|
+
/** Contains file extensions that identify prompt template files. */
|
|
48
|
+
this.templateExtensions = new Set([prompttemplate_contribution_1.PROMPT_TEMPLATE_EXTENSION]);
|
|
49
|
+
/** Stores specific file paths that should be treated as templates. */
|
|
50
|
+
this.templateFiles = new Set();
|
|
51
|
+
/** Maps URI strings to WatchedFileInfo objects for individually watched template files. */
|
|
52
|
+
this.watchedFiles = new Map();
|
|
53
|
+
/** Collection of disposable resources for cleanup when the service updates or is disposed. */
|
|
41
54
|
this.toDispose = new core_1.DisposableCollection();
|
|
42
55
|
this.onDidChangePromptEmitter = new core_1.Emitter();
|
|
43
56
|
this.onDidChangePrompt = this.onDidChangePromptEmitter.event;
|
|
@@ -45,6 +58,8 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
45
58
|
this.onDidChangeCustomAgents = this.onDidChangeCustomAgentsEmitter.event;
|
|
46
59
|
}
|
|
47
60
|
init() {
|
|
61
|
+
// Ensure PROMPT_TEMPLATE_EXTENSION is always included in templateExtensions as a default
|
|
62
|
+
this.templateExtensions.add(prompttemplate_contribution_1.PROMPT_TEMPLATE_EXTENSION);
|
|
48
63
|
this.preferences.onPreferenceChanged(event => {
|
|
49
64
|
if (event.preferenceName === ai_core_preferences_1.PREFERENCE_NAME_PROMPT_TEMPLATES) {
|
|
50
65
|
this.update();
|
|
@@ -54,12 +69,157 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
54
69
|
}
|
|
55
70
|
async update() {
|
|
56
71
|
this.toDispose.dispose();
|
|
57
|
-
// we need to assign
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
72
|
+
// we need to assign local variables, so that updates running in parallel don't interfere with each other
|
|
73
|
+
const templatesMap = new Map();
|
|
74
|
+
const trackedURIs = new Set();
|
|
75
|
+
const loadedTemplates = new Map();
|
|
76
|
+
const watchedFilesMap = new Map();
|
|
77
|
+
// Process in order of priority (lowest to highest)
|
|
78
|
+
// First process the main template directory (lowest priority)
|
|
61
79
|
const templateURI = await this.getTemplatesDirectoryURI();
|
|
62
|
-
this.
|
|
80
|
+
await this.processTemplateDirectory(templatesMap, trackedURIs, loadedTemplates, templateURI, 1 /* TemplatePriority.GLOBAL_TEMPLATE_DIR */);
|
|
81
|
+
// Process additional template directories (medium priority)
|
|
82
|
+
for (const dirPath of this.additionalTemplateDirs) {
|
|
83
|
+
const dirURI = core_1.URI.fromFilePath(dirPath);
|
|
84
|
+
await this.processTemplateDirectory(templatesMap, trackedURIs, loadedTemplates, dirURI, 2 /* TemplatePriority.ADDITIONAL_TEMPLATE_DIR */);
|
|
85
|
+
}
|
|
86
|
+
// Process specific template files (highest priority)
|
|
87
|
+
await this.processTemplateFiles(templatesMap, trackedURIs, loadedTemplates, watchedFilesMap);
|
|
88
|
+
this.effectiveTemplates = templatesMap;
|
|
89
|
+
this.trackedTemplateURIs = trackedURIs;
|
|
90
|
+
this.allLoadedTemplates = loadedTemplates;
|
|
91
|
+
this.watchedFiles = watchedFilesMap;
|
|
92
|
+
this.onDidChangeCustomAgentsEmitter.fire();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Adds a template to the templates map, handling conflicts based on priority
|
|
96
|
+
* @param templatesMap The map to add the template to
|
|
97
|
+
* @param id The template ID
|
|
98
|
+
* @param content The template content
|
|
99
|
+
* @param priority The template priority
|
|
100
|
+
* @param sourceUri The URI of the source file (used to distinguish updates from conflicts)
|
|
101
|
+
* @param loadedTemplates The map to track all loaded templates
|
|
102
|
+
*/
|
|
103
|
+
addTemplate(templatesMap, id, content, priority, sourceUri, loadedTemplates) {
|
|
104
|
+
// Always add to loadedTemplates to keep track of all templates including overridden ones
|
|
105
|
+
if (sourceUri) {
|
|
106
|
+
loadedTemplates.set(sourceUri, { id, content, priority, sourceUri });
|
|
107
|
+
}
|
|
108
|
+
const existingEntry = templatesMap.get(id);
|
|
109
|
+
if (existingEntry) {
|
|
110
|
+
// If this is an update to the same file (same source URI)
|
|
111
|
+
if (sourceUri && existingEntry.sourceUri === sourceUri) {
|
|
112
|
+
// Update the content while keeping the same priority and source
|
|
113
|
+
templatesMap.set(id, { id, content, priority, sourceUri });
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// If the new template has higher priority, replace the existing one
|
|
117
|
+
if (priority > existingEntry.priority) {
|
|
118
|
+
templatesMap.set(id, { id, content, priority, sourceUri });
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
else if (priority === existingEntry.priority) {
|
|
122
|
+
// There is a conflict with the same priority, we ignore the new template
|
|
123
|
+
const conflictSourceUri = existingEntry.sourceUri ? ` (Existing source: ${existingEntry.sourceUri}, New source: ${sourceUri})` : '';
|
|
124
|
+
console.warn(`Template conflict detected for ID '${id}' with equal priority.${conflictSourceUri}`);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// No conflict at all, add the template
|
|
129
|
+
templatesMap.set(id, { id, content, priority, sourceUri });
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Removes a template from the templates map based on the source URI and fires change event.
|
|
133
|
+
* Also checks for any lower-priority templates with the same ID that might need to be loaded.
|
|
134
|
+
* @param sourceUri The URI of the source file being removed
|
|
135
|
+
* @param loadedTemplates The map of all loaded templates
|
|
136
|
+
*/
|
|
137
|
+
removeTemplateBySourceUri(sourceUri, loadedTemplates) {
|
|
138
|
+
// Get the template entry from loadedTemplates
|
|
139
|
+
const removedTemplate = loadedTemplates.get(sourceUri);
|
|
140
|
+
if (!removedTemplate) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const templateId = removedTemplate.id;
|
|
144
|
+
loadedTemplates.delete(sourceUri);
|
|
145
|
+
// If the template is in the active templates map, we check if there is another template previously conflicting with it
|
|
146
|
+
const activeTemplate = this.effectiveTemplates.get(templateId);
|
|
147
|
+
if (activeTemplate && activeTemplate.sourceUri === sourceUri) {
|
|
148
|
+
this.effectiveTemplates.delete(templateId);
|
|
149
|
+
// Find any lower-priority templates with the same ID that were previously ignored
|
|
150
|
+
const lowerPriorityTemplates = Array.from(loadedTemplates.values())
|
|
151
|
+
.filter(t => t.id === templateId)
|
|
152
|
+
.sort((a, b) => b.priority - a.priority); // Sort by priority (highest first)
|
|
153
|
+
// If there are any lower-priority templates, add the highest priority one
|
|
154
|
+
if (lowerPriorityTemplates.length > 0) {
|
|
155
|
+
const highestRemainingTemplate = lowerPriorityTemplates[0];
|
|
156
|
+
this.effectiveTemplates.set(templateId, highestRemainingTemplate);
|
|
157
|
+
}
|
|
158
|
+
this.onDidChangePromptEmitter.fire(templateId);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Process the template files specified by path, watching for changes
|
|
163
|
+
* and loading their content into the templates map
|
|
164
|
+
*/
|
|
165
|
+
async processTemplateFiles(templatesMap, trackedURIs, loadedTemplates, watchedFilesMap) {
|
|
166
|
+
for (const filePath of this.templateFiles) {
|
|
167
|
+
const fileURI = core_1.URI.fromFilePath(filePath);
|
|
168
|
+
const templateId = this.getTemplateIdFromFilePath(filePath);
|
|
169
|
+
const uriString = fileURI.toString();
|
|
170
|
+
watchedFilesMap.set(uriString, { uri: fileURI, templateId });
|
|
171
|
+
this.toDispose.push(this.fileService.watch(fileURI, { recursive: false, excludes: [] }));
|
|
172
|
+
if (await this.fileService.exists(fileURI)) {
|
|
173
|
+
trackedURIs.add(uriString);
|
|
174
|
+
const fileContent = await this.fileService.read(fileURI);
|
|
175
|
+
this.addTemplate(templatesMap, templateId, fileContent.value, 3 /* TemplatePriority.TEMPLATE_FILE */, uriString, loadedTemplates);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
this.toDispose.push(this.fileService.onDidFilesChange(async (event) => {
|
|
179
|
+
// Handle deleted files
|
|
180
|
+
for (const deletedFile of event.getDeleted()) {
|
|
181
|
+
const fileUriString = deletedFile.resource.toString();
|
|
182
|
+
const fileInfo = this.watchedFiles.get(fileUriString);
|
|
183
|
+
if (fileInfo) {
|
|
184
|
+
this.removeTemplateBySourceUri(fileUriString, loadedTemplates);
|
|
185
|
+
this.trackedTemplateURIs.delete(fileUriString);
|
|
186
|
+
this.onDidChangePromptEmitter.fire(fileInfo.templateId);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// Handle updated files
|
|
190
|
+
for (const updatedFile of event.getUpdated()) {
|
|
191
|
+
const fileUriString = updatedFile.resource.toString();
|
|
192
|
+
const fileInfo = this.watchedFiles.get(fileUriString);
|
|
193
|
+
if (fileInfo) {
|
|
194
|
+
const fileContent = await this.fileService.read(fileInfo.uri);
|
|
195
|
+
this.addTemplate(this.effectiveTemplates, fileInfo.templateId, fileContent.value, 3 /* TemplatePriority.TEMPLATE_FILE */, fileUriString, loadedTemplates);
|
|
196
|
+
this.onDidChangePromptEmitter.fire(fileInfo.templateId);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Handle newly created files
|
|
200
|
+
for (const addedFile of event.getAdded()) {
|
|
201
|
+
const fileUriString = addedFile.resource.toString();
|
|
202
|
+
const fileInfo = this.watchedFiles.get(fileUriString);
|
|
203
|
+
if (fileInfo) {
|
|
204
|
+
const fileContent = await this.fileService.read(fileInfo.uri);
|
|
205
|
+
this.addTemplate(this.effectiveTemplates, fileInfo.templateId, fileContent.value, 3 /* TemplatePriority.TEMPLATE_FILE */, fileUriString, loadedTemplates);
|
|
206
|
+
this.trackedTemplateURIs.add(fileUriString);
|
|
207
|
+
this.onDidChangePromptEmitter.fire(fileInfo.templateId);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Extract a template ID from a file path
|
|
214
|
+
* @param filePath The path to the template file
|
|
215
|
+
* @returns A template ID derived from the file name
|
|
216
|
+
*/
|
|
217
|
+
getTemplateIdFromFilePath(filePath) {
|
|
218
|
+
const uri = core_1.URI.fromFilePath(filePath);
|
|
219
|
+
return this.removePromptTemplateSuffix(uri.path.name);
|
|
220
|
+
}
|
|
221
|
+
async processTemplateDirectory(templatesMap, trackedURIs, loadedTemplates, dirURI, priority) {
|
|
222
|
+
this.toDispose.push(this.fileService.watch(dirURI, { recursive: true, excludes: [] }));
|
|
63
223
|
this.toDispose.push(this.fileService.onDidFilesChange(async (event) => {
|
|
64
224
|
if (event.changes.some(change => change.resource.toString().endsWith('customAgents.yml'))) {
|
|
65
225
|
this.onDidChangeCustomAgentsEmitter.fire();
|
|
@@ -69,7 +229,7 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
69
229
|
if (this.trackedTemplateURIs.has(deletedFile.resource.toString())) {
|
|
70
230
|
this.trackedTemplateURIs.delete(deletedFile.resource.toString());
|
|
71
231
|
const templateId = this.removePromptTemplateSuffix(deletedFile.resource.path.name);
|
|
72
|
-
|
|
232
|
+
this.removeTemplateBySourceUri(deletedFile.resource.toString(), loadedTemplates);
|
|
73
233
|
this.onDidChangePromptEmitter.fire(templateId);
|
|
74
234
|
}
|
|
75
235
|
}
|
|
@@ -78,26 +238,26 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
78
238
|
if (this.trackedTemplateURIs.has(updatedFile.resource.toString())) {
|
|
79
239
|
const fileContent = await this.fileService.read(updatedFile.resource);
|
|
80
240
|
const templateId = this.removePromptTemplateSuffix(updatedFile.resource.path.name);
|
|
81
|
-
|
|
241
|
+
this.addTemplate(this.effectiveTemplates, templateId, fileContent.value, priority, updatedFile.resource.toString(), loadedTemplates);
|
|
82
242
|
this.onDidChangePromptEmitter.fire(templateId);
|
|
83
243
|
}
|
|
84
244
|
}
|
|
85
245
|
// check new templates
|
|
86
246
|
for (const addedFile of event.getAdded()) {
|
|
87
|
-
if (addedFile.resource.parent.toString() ===
|
|
247
|
+
if (addedFile.resource.parent.toString() === dirURI.toString() &&
|
|
248
|
+
this.isPromptTemplateExtension(addedFile.resource.path.ext)) {
|
|
88
249
|
this.trackedTemplateURIs.add(addedFile.resource.toString());
|
|
89
250
|
const fileContent = await this.fileService.read(addedFile.resource);
|
|
90
251
|
const templateId = this.removePromptTemplateSuffix(addedFile.resource.path.name);
|
|
91
|
-
|
|
252
|
+
this.addTemplate(this.effectiveTemplates, templateId, fileContent.value, priority, addedFile.resource.toString(), loadedTemplates);
|
|
92
253
|
this.onDidChangePromptEmitter.fire(templateId);
|
|
93
254
|
}
|
|
94
255
|
}
|
|
95
256
|
}));
|
|
96
|
-
this.
|
|
97
|
-
if (!(await this.fileService.exists(templateURI))) {
|
|
257
|
+
if (!(await this.fileService.exists(dirURI))) {
|
|
98
258
|
return;
|
|
99
259
|
}
|
|
100
|
-
const stat = await this.fileService.resolve(
|
|
260
|
+
const stat = await this.fileService.resolve(dirURI);
|
|
101
261
|
if (stat.children === undefined) {
|
|
102
262
|
return;
|
|
103
263
|
}
|
|
@@ -106,14 +266,74 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
106
266
|
continue;
|
|
107
267
|
}
|
|
108
268
|
const fileURI = file.resource;
|
|
109
|
-
if (fileURI.path.ext
|
|
110
|
-
|
|
269
|
+
if (this.isPromptTemplateExtension(fileURI.path.ext)) {
|
|
270
|
+
trackedURIs.add(fileURI.toString());
|
|
111
271
|
const fileContent = await this.fileService.read(fileURI);
|
|
112
272
|
const templateId = this.removePromptTemplateSuffix(file.name);
|
|
113
|
-
|
|
273
|
+
this.addTemplate(templatesMap, templateId, fileContent.value, priority, fileURI.toString(), loadedTemplates);
|
|
114
274
|
this.onDidChangePromptEmitter.fire(templateId);
|
|
115
275
|
}
|
|
116
276
|
}
|
|
277
|
+
this.onDidChangeCustomAgentsEmitter.fire();
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Checks if the given file extension is registered as a prompt template extension
|
|
281
|
+
* @param extension The file extension including the leading dot (e.g., '.prompttemplate')
|
|
282
|
+
* @returns True if the extension is registered as a prompt template extension
|
|
283
|
+
*/
|
|
284
|
+
isPromptTemplateExtension(extension) {
|
|
285
|
+
return this.templateExtensions.has(extension);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Gets the list of additional template directories that are being watched.
|
|
289
|
+
* @returns Array of directory paths
|
|
290
|
+
*/
|
|
291
|
+
getAdditionalTemplateDirectories() {
|
|
292
|
+
return Array.from(this.additionalTemplateDirs);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Gets the list of file extensions that are considered prompt templates.
|
|
296
|
+
* @returns Array of file extensions including the leading dot (e.g., '.prompttemplate')
|
|
297
|
+
*/
|
|
298
|
+
getTemplateFileExtensions() {
|
|
299
|
+
return Array.from(this.templateExtensions);
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Gets the list of specific template files that are being watched.
|
|
303
|
+
* @returns Array of file paths
|
|
304
|
+
*/
|
|
305
|
+
getTemplateFiles() {
|
|
306
|
+
return Array.from(this.templateFiles);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Updates multiple configuration properties at once, triggering only a single update process.
|
|
310
|
+
*
|
|
311
|
+
* @param properties An object containing the properties to update
|
|
312
|
+
* @returns Promise that resolves when the update is complete
|
|
313
|
+
*/
|
|
314
|
+
async updateConfiguration(properties) {
|
|
315
|
+
if (properties.directoryPaths !== undefined) {
|
|
316
|
+
this.additionalTemplateDirs.clear();
|
|
317
|
+
for (const path of properties.directoryPaths) {
|
|
318
|
+
this.additionalTemplateDirs.add(path);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (properties.extensions !== undefined) {
|
|
322
|
+
this.templateExtensions.clear();
|
|
323
|
+
for (const ext of properties.extensions) {
|
|
324
|
+
this.templateExtensions.add(ext);
|
|
325
|
+
}
|
|
326
|
+
// Always include the default PROMPT_TEMPLATE_EXTENSION
|
|
327
|
+
this.templateExtensions.add(prompttemplate_contribution_1.PROMPT_TEMPLATE_EXTENSION);
|
|
328
|
+
}
|
|
329
|
+
if (properties.filePaths !== undefined) {
|
|
330
|
+
this.templateFiles.clear();
|
|
331
|
+
for (const path of properties.filePaths) {
|
|
332
|
+
this.templateFiles.add(path);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
// Only run the update process once, no matter how many properties were changed
|
|
336
|
+
await this.update();
|
|
117
337
|
}
|
|
118
338
|
async getTemplatesDirectoryURI() {
|
|
119
339
|
const templatesFolder = this.preferences[ai_core_preferences_1.PREFERENCE_NAME_PROMPT_TEMPLATES];
|
|
@@ -127,20 +347,22 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
127
347
|
return (await this.getTemplatesDirectoryURI()).resolve(`${templateId}${prompttemplate_contribution_1.PROMPT_TEMPLATE_EXTENSION}`);
|
|
128
348
|
}
|
|
129
349
|
removePromptTemplateSuffix(filename) {
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
350
|
+
for (const ext of this.templateExtensions) {
|
|
351
|
+
if (filename.endsWith(ext)) {
|
|
352
|
+
return filename.slice(0, -ext.length);
|
|
353
|
+
}
|
|
133
354
|
}
|
|
134
355
|
return filename;
|
|
135
356
|
}
|
|
136
357
|
isPromptTemplateCustomized(id) {
|
|
137
|
-
return this.
|
|
358
|
+
return this.effectiveTemplates.has(id);
|
|
138
359
|
}
|
|
139
360
|
getCustomizedPromptTemplate(id) {
|
|
140
|
-
|
|
361
|
+
const entry = this.effectiveTemplates.get(id);
|
|
362
|
+
return entry ? entry.content : undefined;
|
|
141
363
|
}
|
|
142
364
|
getCustomPromptTemplateIDs() {
|
|
143
|
-
return Array.from(this.
|
|
365
|
+
return Array.from(this.effectiveTemplates.keys());
|
|
144
366
|
}
|
|
145
367
|
async editTemplate(id, defaultContent) {
|
|
146
368
|
const editorUri = await this.getTemplateURI(id);
|
|
@@ -158,7 +380,7 @@ let FrontendPromptCustomizationServiceImpl = class FrontendPromptCustomizationSe
|
|
|
158
380
|
}
|
|
159
381
|
getTemplateIDFromURI(uri) {
|
|
160
382
|
const id = this.removePromptTemplateSuffix(uri.path.name);
|
|
161
|
-
if (this.
|
|
383
|
+
if (this.effectiveTemplates.has(id)) {
|
|
162
384
|
return id;
|
|
163
385
|
}
|
|
164
386
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-prompt-customization-service.js","sourceRoot":"","sources":["../../src/browser/frontend-prompt-customization-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frontend-prompt-customization-service.js","sourceRoot":"","sources":["../../src/browser/frontend-prompt-customization-service.ts"],"names":[],"mappings":"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"}
|
package/lib/browser/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export * from './prompttemplate-contribution';
|
|
|
10
10
|
export * from './theia-variable-contribution';
|
|
11
11
|
export * from './frontend-variable-service';
|
|
12
12
|
export * from './ai-core-command-contribution';
|
|
13
|
+
export * from '../common/language-model-service';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAgBA,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC"}
|
package/lib/browser/index.js
CHANGED
|
@@ -28,4 +28,5 @@ tslib_1.__exportStar(require("./prompttemplate-contribution"), exports);
|
|
|
28
28
|
tslib_1.__exportStar(require("./theia-variable-contribution"), exports);
|
|
29
29
|
tslib_1.__exportStar(require("./frontend-variable-service"), exports);
|
|
30
30
|
tslib_1.__exportStar(require("./ai-core-command-contribution"), exports);
|
|
31
|
+
tslib_1.__exportStar(require("../common/language-model-service"), exports);
|
|
31
32
|
//# sourceMappingURL=index.js.map
|
package/lib/browser/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.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,kEAAwC;AACxC,sFAA4D;AAC5D,oEAA0C;AAC1C,gEAAsC;AACtC,gEAAsC;AACtC,iEAAuC;AACvC,6EAAmD;AACnD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,sEAA4C;AAC5C,yEAA+C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.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,kEAAwC;AACxC,sFAA4D;AAC5D,oEAA0C;AAC1C,gEAAsC;AACtC,gEAAsC;AACtC,iEAAuC;AACvC,6EAAmD;AACnD,sEAA4C;AAC5C,wEAA8C;AAC9C,wEAA8C;AAC9C,sEAA4C;AAC5C,yEAA+C;AAC/C,2EAAiD"}
|
|
@@ -6,6 +6,7 @@ import { Widget } from '@theia/core/lib/browser';
|
|
|
6
6
|
import { EditorWidget } from '@theia/editor/lib/browser';
|
|
7
7
|
import { PromptCustomizationService, ToolInvocationRegistry } from '../common';
|
|
8
8
|
import { ProviderResult } from '@theia/monaco-editor-core/esm/vs/editor/common/languages';
|
|
9
|
+
import { AIVariableService } from '../common/variable-service';
|
|
9
10
|
export declare const PROMPT_TEMPLATE_EXTENSION = ".prompttemplate";
|
|
10
11
|
export declare const DISCARD_PROMPT_TEMPLATE_CUSTOMIZATIONS: Command;
|
|
11
12
|
export declare const SHOW_ALL_PROMPTS_COMMAND: Command;
|
|
@@ -14,9 +15,12 @@ export declare class PromptTemplateContribution implements LanguageGrammarDefini
|
|
|
14
15
|
private readonly messageService;
|
|
15
16
|
protected readonly customizationService: PromptCustomizationService;
|
|
16
17
|
protected readonly toolInvocationRegistry: ToolInvocationRegistry;
|
|
18
|
+
protected readonly variableService: AIVariableService;
|
|
17
19
|
readonly config: monaco.languages.LanguageConfiguration;
|
|
18
20
|
registerTextmateLanguage(registry: TextmateRegistry): void;
|
|
19
21
|
provideFunctionCompletions(model: monaco.editor.ITextModel, position: monaco.Position): ProviderResult<monaco.languages.CompletionList>;
|
|
22
|
+
provideVariableCompletions(model: monaco.editor.ITextModel, position: monaco.Position): ProviderResult<monaco.languages.CompletionList>;
|
|
23
|
+
provideVariableWithArgCompletions(model: monaco.editor.ITextModel, position: monaco.Position): Promise<monaco.languages.CompletionList>;
|
|
20
24
|
getCompletionRange(model: monaco.editor.ITextModel, position: monaco.Position, triggerCharacters: string): monaco.Range | undefined;
|
|
21
25
|
private getSuggestions;
|
|
22
26
|
registerCommands(commands: CommandRegistry): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompttemplate-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/prompttemplate-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgD,qCAAqC,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3J,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEjH,OAAO,EAAW,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAoB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"prompttemplate-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/prompttemplate-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAgD,qCAAqC,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3J,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAuB,MAAM,aAAa,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEjH,OAAO,EAAW,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAoB,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAA6B,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAC1G,OAAO,EAAE,cAAc,EAAE,MAAM,0DAA0D,CAAC;AAC1F,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAK/D,eAAO,MAAM,yBAAyB,oBAAoB,CAAC;AAE3D,eAAO,MAAM,sCAAsC,EAAE,OAIb,CAAC;AAGzC,eAAO,MAAM,wBAAwB,EAAE,OAKmC,CAAC;AAE3E,qBACa,0BAA2B,YAAW,qCAAqC,EAAE,mBAAmB,EAAE,yBAAyB;IAGpI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAG9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAGhD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAEtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAoBjD;IAEN,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IA6C1D,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAavI,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IAajI,iCAAiC,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;IA2C7I,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,SAAS;IAwBnI,OAAO,CAAC,cAAc;IAwBtB,gBAAgB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAYjD,SAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAOzD,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO;cAWnC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5D,OAAO,CAAC,cAAc;IAOtB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;CAO9D"}
|
|
@@ -23,6 +23,7 @@ const core_1 = require("@theia/core");
|
|
|
23
23
|
const browser_1 = require("@theia/core/lib/browser");
|
|
24
24
|
const browser_2 = require("@theia/editor/lib/browser");
|
|
25
25
|
const common_1 = require("../common");
|
|
26
|
+
const variable_service_1 = require("../common/variable-service");
|
|
26
27
|
const PROMPT_TEMPLATE_LANGUAGE_ID = 'theia-ai-prompt-template';
|
|
27
28
|
const PROMPT_TEMPLATE_TEXTMATE_SCOPE = 'source.prompttemplate';
|
|
28
29
|
exports.PROMPT_TEMPLATE_EXTENSION = '.prompttemplate';
|
|
@@ -43,15 +44,21 @@ let PromptTemplateContribution = class PromptTemplateContribution {
|
|
|
43
44
|
this.config = {
|
|
44
45
|
'brackets': [
|
|
45
46
|
['${', '}'],
|
|
46
|
-
['~{', '}']
|
|
47
|
+
['~{', '}'],
|
|
48
|
+
['{{', '}}'],
|
|
49
|
+
['{{{', '}}}']
|
|
47
50
|
],
|
|
48
51
|
'autoClosingPairs': [
|
|
49
52
|
{ 'open': '${', 'close': '}' },
|
|
50
53
|
{ 'open': '~{', 'close': '}' },
|
|
54
|
+
{ 'open': '{{', 'close': '}}' },
|
|
55
|
+
{ 'open': '{{{', 'close': '}}}' }
|
|
51
56
|
],
|
|
52
57
|
'surroundingPairs': [
|
|
53
58
|
{ 'open': '${', 'close': '}' },
|
|
54
|
-
{ 'open': '~{', 'close': '}' }
|
|
59
|
+
{ 'open': '~{', 'close': '}' },
|
|
60
|
+
{ 'open': '{{', 'close': '}}' },
|
|
61
|
+
{ 'open': '{{{', 'close': '}}}' }
|
|
55
62
|
]
|
|
56
63
|
};
|
|
57
64
|
}
|
|
@@ -72,6 +79,16 @@ let PromptTemplateContribution = class PromptTemplateContribution {
|
|
|
72
79
|
triggerCharacters: ['{'],
|
|
73
80
|
provideCompletionItems: (model, position, _context, _token) => this.provideFunctionCompletions(model, position),
|
|
74
81
|
});
|
|
82
|
+
monaco.languages.registerCompletionItemProvider(PROMPT_TEMPLATE_LANGUAGE_ID, {
|
|
83
|
+
// Monaco only supports single character trigger characters
|
|
84
|
+
triggerCharacters: ['{'],
|
|
85
|
+
provideCompletionItems: (model, position, _context, _token) => this.provideVariableCompletions(model, position),
|
|
86
|
+
});
|
|
87
|
+
monaco.languages.registerCompletionItemProvider(PROMPT_TEMPLATE_LANGUAGE_ID, {
|
|
88
|
+
// Monaco only supports single character trigger characters
|
|
89
|
+
triggerCharacters: ['{', ':'],
|
|
90
|
+
provideCompletionItems: (model, position, _context, _token) => this.provideVariableWithArgCompletions(model, position),
|
|
91
|
+
});
|
|
75
92
|
const textmateGrammar = require('../../data/prompttemplate.tmLanguage.json');
|
|
76
93
|
const grammarDefinitionProvider = {
|
|
77
94
|
getGrammarDefinition: function () {
|
|
@@ -87,6 +104,44 @@ let PromptTemplateContribution = class PromptTemplateContribution {
|
|
|
87
104
|
provideFunctionCompletions(model, position) {
|
|
88
105
|
return this.getSuggestions(model, position, '~{', this.toolInvocationRegistry.getAllFunctions(), monaco.languages.CompletionItemKind.Function, tool => tool.id, tool => tool.name, tool => { var _a; return (_a = tool.description) !== null && _a !== void 0 ? _a : ''; });
|
|
89
106
|
}
|
|
107
|
+
provideVariableCompletions(model, position) {
|
|
108
|
+
return this.getSuggestions(model, position, '{{', this.variableService.getVariables(), monaco.languages.CompletionItemKind.Variable, variable => { var _a; return ((_a = variable.args) === null || _a === void 0 ? void 0 : _a.some(arg => !arg.isOptional)) ? variable.name + common_1.PromptText.VARIABLE_SEPARATOR_CHAR : variable.name; }, variable => variable.name, variable => { var _a; return (_a = variable.description) !== null && _a !== void 0 ? _a : ''; });
|
|
109
|
+
}
|
|
110
|
+
async provideVariableWithArgCompletions(model, position) {
|
|
111
|
+
// Get the text of the current line up to the cursor position
|
|
112
|
+
const textUntilPosition = model.getValueInRange({
|
|
113
|
+
startLineNumber: position.lineNumber,
|
|
114
|
+
startColumn: 1,
|
|
115
|
+
endLineNumber: position.lineNumber,
|
|
116
|
+
endColumn: position.column,
|
|
117
|
+
});
|
|
118
|
+
// Regex that captures the variable name in contexts like {{, {{{, {{varname, {{{varname, {{varname:, or {{{varname:
|
|
119
|
+
const variableRegex = /(?:\{\{\{|\{\{)([\w-]+)?(?::)?/;
|
|
120
|
+
const match = textUntilPosition.match(variableRegex);
|
|
121
|
+
if (!match) {
|
|
122
|
+
return { suggestions: [] };
|
|
123
|
+
}
|
|
124
|
+
const currentVariableName = match[1];
|
|
125
|
+
const hasColonSeparator = textUntilPosition.includes(`${currentVariableName}:`);
|
|
126
|
+
const variables = this.variableService.getVariables();
|
|
127
|
+
const suggestions = [];
|
|
128
|
+
for (const variable of variables) {
|
|
129
|
+
// If we have a variable:arg pattern, only process the matching variable
|
|
130
|
+
if (hasColonSeparator && variable.name !== currentVariableName) {
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
const provider = await this.variableService.getArgumentCompletionProvider(variable.name);
|
|
134
|
+
if (provider) {
|
|
135
|
+
const items = await provider(model, position, '{');
|
|
136
|
+
if (items) {
|
|
137
|
+
suggestions.push(...items.map(item => ({
|
|
138
|
+
...item
|
|
139
|
+
})));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return { suggestions };
|
|
144
|
+
}
|
|
90
145
|
getCompletionRange(model, position, triggerCharacters) {
|
|
91
146
|
// Check if the characters before the current position are the trigger characters
|
|
92
147
|
const lineContent = model.getLineContent(position.lineNumber);
|
|
@@ -201,6 +256,10 @@ tslib_1.__decorate([
|
|
|
201
256
|
(0, inversify_1.inject)(common_1.ToolInvocationRegistry),
|
|
202
257
|
tslib_1.__metadata("design:type", Object)
|
|
203
258
|
], PromptTemplateContribution.prototype, "toolInvocationRegistry", void 0);
|
|
259
|
+
tslib_1.__decorate([
|
|
260
|
+
(0, inversify_1.inject)(variable_service_1.AIVariableService),
|
|
261
|
+
tslib_1.__metadata("design:type", Object)
|
|
262
|
+
], PromptTemplateContribution.prototype, "variableService", void 0);
|
|
204
263
|
exports.PromptTemplateContribution = PromptTemplateContribution = tslib_1.__decorate([
|
|
205
264
|
(0, inversify_1.injectable)()
|
|
206
265
|
], PromptTemplateContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompttemplate-contribution.js","sourceRoot":"","sources":["../../src/browser/prompttemplate-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,4DAAkE;AAElE,oDAAoD;AACpD,sCAAiG;AAGjG,qDAA0D;AAC1D,uDAA2E;AAC3E,
|
|
1
|
+
{"version":3,"file":"prompttemplate-contribution.js","sourceRoot":"","sources":["../../src/browser/prompttemplate-contribution.ts"],"names":[],"mappings":"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"}
|