@theia/ai-core 1.61.0-next.8 → 1.61.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.
Files changed (70) hide show
  1. package/lib/browser/ai-core-frontend-module.d.ts.map +1 -1
  2. package/lib/browser/ai-core-frontend-module.js +7 -0
  3. package/lib/browser/ai-core-frontend-module.js.map +1 -1
  4. package/lib/browser/ai-variable-uri-label-provider.d.ts +17 -0
  5. package/lib/browser/ai-variable-uri-label-provider.d.ts.map +1 -0
  6. package/lib/browser/ai-variable-uri-label-provider.js +85 -0
  7. package/lib/browser/ai-variable-uri-label-provider.js.map +1 -0
  8. package/lib/browser/file-variable-contribution.d.ts +9 -3
  9. package/lib/browser/file-variable-contribution.d.ts.map +1 -1
  10. package/lib/browser/file-variable-contribution.js +26 -8
  11. package/lib/browser/file-variable-contribution.js.map +1 -1
  12. package/lib/browser/frontend-prompt-customization-service.d.ts +22 -1
  13. package/lib/browser/frontend-prompt-customization-service.d.ts.map +1 -1
  14. package/lib/browser/frontend-prompt-customization-service.js +63 -25
  15. package/lib/browser/frontend-prompt-customization-service.js.map +1 -1
  16. package/lib/browser/frontend-variable-service.d.ts +28 -4
  17. package/lib/browser/frontend-variable-service.d.ts.map +1 -1
  18. package/lib/browser/frontend-variable-service.js +84 -1
  19. package/lib/browser/frontend-variable-service.js.map +1 -1
  20. package/lib/browser/token-usage-frontend-service-impl.d.ts.map +1 -1
  21. package/lib/browser/token-usage-frontend-service-impl.js +20 -2
  22. package/lib/browser/token-usage-frontend-service-impl.js.map +1 -1
  23. package/lib/browser/token-usage-frontend-service.d.ts +4 -0
  24. package/lib/browser/token-usage-frontend-service.d.ts.map +1 -1
  25. package/lib/browser/token-usage-frontend-service.js.map +1 -1
  26. package/lib/common/ai-variable-resource.d.ts +18 -0
  27. package/lib/common/ai-variable-resource.d.ts.map +1 -0
  28. package/lib/common/ai-variable-resource.js +103 -0
  29. package/lib/common/ai-variable-resource.js.map +1 -0
  30. package/lib/common/configurable-in-memory-resources.d.ts +45 -0
  31. package/lib/common/configurable-in-memory-resources.d.ts.map +1 -0
  32. package/lib/common/configurable-in-memory-resources.js +147 -0
  33. package/lib/common/configurable-in-memory-resources.js.map +1 -0
  34. package/lib/common/index.d.ts +2 -0
  35. package/lib/common/index.d.ts.map +1 -1
  36. package/lib/common/index.js +2 -0
  37. package/lib/common/index.js.map +1 -1
  38. package/lib/common/prompt-service.d.ts +16 -4
  39. package/lib/common/prompt-service.d.ts.map +1 -1
  40. package/lib/common/prompt-service.js +1 -1
  41. package/lib/common/prompt-service.js.map +1 -1
  42. package/lib/common/prompt-variable-contribution.d.ts +2 -1
  43. package/lib/common/prompt-variable-contribution.d.ts.map +1 -1
  44. package/lib/common/prompt-variable-contribution.js +10 -1
  45. package/lib/common/prompt-variable-contribution.js.map +1 -1
  46. package/lib/common/token-usage-service.d.ts +8 -0
  47. package/lib/common/token-usage-service.d.ts.map +1 -1
  48. package/lib/common/variable-service.d.ts +17 -2
  49. package/lib/common/variable-service.d.ts.map +1 -1
  50. package/lib/common/variable-service.js +43 -32
  51. package/lib/common/variable-service.js.map +1 -1
  52. package/lib/node/token-usage-service-impl.d.ts.map +1 -1
  53. package/lib/node/token-usage-service-impl.js +14 -1
  54. package/lib/node/token-usage-service-impl.js.map +1 -1
  55. package/package.json +11 -10
  56. package/src/browser/ai-core-frontend-module.ts +12 -5
  57. package/src/browser/ai-variable-uri-label-provider.ts +66 -0
  58. package/src/browser/file-variable-contribution.ts +34 -14
  59. package/src/browser/frontend-prompt-customization-service.ts +72 -25
  60. package/src/browser/frontend-variable-service.ts +115 -5
  61. package/src/browser/token-usage-frontend-service-impl.ts +27 -2
  62. package/src/browser/token-usage-frontend-service.ts +4 -0
  63. package/src/common/ai-variable-resource.ts +86 -0
  64. package/src/common/configurable-in-memory-resources.ts +156 -0
  65. package/src/common/index.ts +2 -0
  66. package/src/common/prompt-service.ts +14 -4
  67. package/src/common/prompt-variable-contribution.ts +10 -2
  68. package/src/common/token-usage-service.ts +8 -0
  69. package/src/common/variable-service.ts +58 -44
  70. package/src/node/token-usage-service-impl.ts +19 -1
@@ -15,12 +15,34 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.DefaultFrontendVariableService = exports.FrontendVariableService = void 0;
18
+ exports.DefaultFrontendVariableService = exports.FrontendVariableService = exports.AIVariableCompletionContext = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const core_1 = require("@theia/core");
21
+ const browser_1 = require("@theia/core/lib/browser");
21
22
  const inversify_1 = require("@theia/core/shared/inversify");
22
23
  const common_1 = require("../common");
24
+ const monaco = require("@theia/monaco-editor-core");
23
25
  ;
26
+ var AIVariableCompletionContext;
27
+ (function (AIVariableCompletionContext) {
28
+ function get(variableName, model, position, matchString) {
29
+ const lineContent = model.getLineContent(position.lineNumber);
30
+ const indexOfVariableTrigger = lineContent.lastIndexOf(matchString !== null && matchString !== void 0 ? matchString : common_1.PromptText.VARIABLE_CHAR, position.column - 1);
31
+ // check if there is a variable trigger and no space typed between the variable trigger and the cursor
32
+ if (indexOfVariableTrigger === -1 || lineContent.substring(indexOfVariableTrigger).includes(' ')) {
33
+ return undefined;
34
+ }
35
+ // determine whether we are providing completions before or after the variable argument separator
36
+ const indexOfVariableArgSeparator = lineContent.lastIndexOf(common_1.PromptText.VARIABLE_SEPARATOR_CHAR, position.column - 1);
37
+ const triggerCharIndex = Math.max(indexOfVariableTrigger, indexOfVariableArgSeparator);
38
+ const userInput = lineContent.substring(triggerCharIndex + 1, position.column - 1);
39
+ const range = new monaco.Range(position.lineNumber, triggerCharIndex + 2, position.lineNumber, position.column);
40
+ const matchVariableChar = lineContent[triggerCharIndex] === (matchString ? matchString : common_1.PromptText.VARIABLE_CHAR);
41
+ const prefix = matchVariableChar ? variableName + common_1.PromptText.VARIABLE_SEPARATOR_CHAR : '';
42
+ return { range, userInput, prefix };
43
+ }
44
+ AIVariableCompletionContext.get = get;
45
+ })(AIVariableCompletionContext || (exports.AIVariableCompletionContext = AIVariableCompletionContext = {}));
24
46
  exports.FrontendVariableService = Symbol('FrontendVariableService');
25
47
  let DefaultFrontendVariableService = class DefaultFrontendVariableService extends common_1.DefaultAIVariableService {
26
48
  constructor() {
@@ -51,8 +73,69 @@ let DefaultFrontendVariableService = class DefaultFrontendVariableService extend
51
73
  }
52
74
  return { variables, text };
53
75
  }
76
+ registerOpener(variable, opener) {
77
+ var _a;
78
+ const key = this.getKey(variable.name);
79
+ if (!this.variables.get(key)) {
80
+ this.variables.set(key, variable);
81
+ this.onDidChangeVariablesEmitter.fire();
82
+ }
83
+ const openers = (_a = this.openers.get(key)) !== null && _a !== void 0 ? _a : [];
84
+ openers.push(opener);
85
+ this.openers.set(key, openers);
86
+ return core_1.Disposable.create(() => this.unregisterOpener(variable, opener));
87
+ }
88
+ unregisterOpener(variable, opener) {
89
+ const key = this.getKey(variable.name);
90
+ const registeredOpeners = this.openers.get(key);
91
+ registeredOpeners === null || registeredOpeners === void 0 ? void 0 : registeredOpeners.splice(registeredOpeners.indexOf(opener), 1);
92
+ }
93
+ async getOpener(name, arg, context = {}) {
94
+ var _a;
95
+ const variable = this.getVariable(name);
96
+ return variable && core_1.Prioritizeable.prioritizeAll((_a = this.openers.get(this.getKey(name))) !== null && _a !== void 0 ? _a : [], opener => (async () => opener.canOpen({ variable, arg }, context))().catch(() => 0))
97
+ .then(prioritized => { var _a; return (_a = prioritized.at(0)) === null || _a === void 0 ? void 0 : _a.value; });
98
+ }
99
+ async open(request, context) {
100
+ const { variableName, arg } = this.parseRequest(request);
101
+ const variable = this.getVariable(variableName);
102
+ if (!variable) {
103
+ this.messageService.warn('No variable found for open request.');
104
+ return;
105
+ }
106
+ const opener = await this.getOpener(variableName, arg, context);
107
+ try {
108
+ return opener ? opener.open({ variable, arg }, context !== null && context !== void 0 ? context : {}) : this.openReadonly({ variable, arg }, context);
109
+ }
110
+ catch (err) {
111
+ console.error('Unable to open variable:', err);
112
+ this.messageService.error('Unable to display variable value.');
113
+ }
114
+ }
115
+ async openReadonly(request, context = {}) {
116
+ const resolved = await this.resolveVariable(request, context);
117
+ if (resolved === undefined) {
118
+ this.messageService.warn('Unable to resolve variable.');
119
+ return;
120
+ }
121
+ const resource = this.aiResourceResolver.getOrCreate(request, context, resolved.value);
122
+ await (0, browser_1.open)(this.openerService, resource.uri);
123
+ resource.dispose();
124
+ }
54
125
  };
55
126
  exports.DefaultFrontendVariableService = DefaultFrontendVariableService;
127
+ tslib_1.__decorate([
128
+ (0, inversify_1.inject)(core_1.MessageService),
129
+ tslib_1.__metadata("design:type", core_1.MessageService)
130
+ ], DefaultFrontendVariableService.prototype, "messageService", void 0);
131
+ tslib_1.__decorate([
132
+ (0, inversify_1.inject)(common_1.AIVariableResourceResolver),
133
+ tslib_1.__metadata("design:type", common_1.AIVariableResourceResolver)
134
+ ], DefaultFrontendVariableService.prototype, "aiResourceResolver", void 0);
135
+ tslib_1.__decorate([
136
+ (0, inversify_1.inject)(browser_1.OpenerService),
137
+ tslib_1.__metadata("design:type", Object)
138
+ ], DefaultFrontendVariableService.prototype, "openerService", void 0);
56
139
  exports.DefaultFrontendVariableService = DefaultFrontendVariableService = tslib_1.__decorate([
57
140
  (0, inversify_1.injectable)()
58
141
  ], DefaultFrontendVariableService);
@@ -1 +1 @@
1
- {"version":3,"file":"frontend-variable-service.js","sourceRoot":"","sources":["../../src/browser/frontend-variable-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,sCAAyC;AAEzC,4DAA0D;AAC1D,sCAAwH;AAOvH,CAAC;AAEW,QAAA,uBAAuB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC;AAYlE,IAAM,8BAA8B,GAApC,MAAM,8BAA+B,SAAQ,iCAAwB;IAArE;;QACO,iBAAY,GAAG,IAAI,GAAG,EAAyB,CAAC;IA6B9D,CAAC;IA3BG,OAAO;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,OAA8B;QAC9C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC/B,OAAO,iBAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,qBAAqB,CAAC,OAA8B;QAChD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAgB,EAAE,OAA0B;QAC5D,IAAI,IAAI,GAAuB,SAAS,CAAC;QACzC,MAAM,SAAS,GAAkC,EAAE,CAAC;QACpD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,MAAM,EAAE,CAAC;gBACT,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBACvB,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/B,CAAC;CACJ,CAAA;AA9BY,wEAA8B;yCAA9B,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CA8B1C"}
1
+ {"version":3,"file":"frontend-variable-service.js","sourceRoot":"","sources":["../../src/browser/frontend-variable-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-frontend-service-impl.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,2BAA4B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,QAAQ,CAAC,mBAAmB,0CAAmC;IAE/D,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAI5C;AAED,qBACa,6BAA8B,YAAW,yBAAyB;IAG3E,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,QAAQ,CAAC,mBAAmB,qDAAmC;IAE/D,OAAO,CAAC,eAAe,CAA6B;IAGpD,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAWzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA2C/B"}
1
+ {"version":3,"file":"token-usage-frontend-service-impl.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBACa,2BAA4B,YAAW,uBAAuB;IACvE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,QAAQ,CAAC,mBAAmB,0CAAmC;IAE/D,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAI5C;AAED,qBACa,6BAA8B,YAAW,yBAAyB;IAG3E,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;IAGpE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAExD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwC;IAC7E,QAAQ,CAAC,mBAAmB,qDAAmC;IAE/D,OAAO,CAAC,eAAe,CAA6B;IAGpD,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAWzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAoE/B"}
@@ -73,6 +73,14 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
73
73
  if (existing) {
74
74
  existing.inputTokens += usage.inputTokens;
75
75
  existing.outputTokens += usage.outputTokens;
76
+ // Add cached tokens if they exist
77
+ if (usage.cachedInputTokens !== undefined) {
78
+ existing.cachedInputTokens += usage.cachedInputTokens;
79
+ }
80
+ // Add read cached tokens if they exist
81
+ if (usage.readCachedInputTokens !== undefined) {
82
+ existing.readCachedInputTokens += usage.readCachedInputTokens;
83
+ }
76
84
  // Update last used if this usage is more recent
77
85
  if (!existing.lastUsed || (usage.timestamp && usage.timestamp > existing.lastUsed)) {
78
86
  existing.lastUsed = usage.timestamp;
@@ -82,6 +90,8 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
82
90
  modelMap.set(usage.model, {
83
91
  inputTokens: usage.inputTokens,
84
92
  outputTokens: usage.outputTokens,
93
+ cachedInputTokens: usage.cachedInputTokens || 0,
94
+ readCachedInputTokens: usage.readCachedInputTokens || 0,
85
95
  lastUsed: usage.timestamp
86
96
  });
87
97
  }
@@ -89,12 +99,20 @@ let TokenUsageFrontendServiceImpl = class TokenUsageFrontendServiceImpl {
89
99
  // Convert map to array of model usage data
90
100
  const result = [];
91
101
  for (const [modelId, data] of modelMap.entries()) {
92
- result.push({
102
+ const modelData = {
93
103
  modelId,
94
104
  inputTokens: data.inputTokens,
95
105
  outputTokens: data.outputTokens,
96
106
  lastUsed: data.lastUsed
97
- });
107
+ };
108
+ // Only include cache-related fields if they have non-zero values
109
+ if (data.cachedInputTokens > 0) {
110
+ modelData.cachedInputTokens = data.cachedInputTokens;
111
+ }
112
+ if (data.readCachedInputTokens > 0) {
113
+ modelData.readCachedInputTokens = data.readCachedInputTokens;
114
+ }
115
+ result.push(modelData);
98
116
  }
99
117
  return result;
100
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-frontend-service-impl.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-usage-frontend-service-impl.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service-impl.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,10 @@ export interface ModelTokenUsageData {
9
9
  inputTokens: number;
10
10
  /** Number of output tokens used */
11
11
  outputTokens: number;
12
+ /** Number of input tokens written to cache */
13
+ cachedInputTokens?: number;
14
+ /** Number of input tokens read from cache */
15
+ readCachedInputTokens?: number;
12
16
  /** Date when the model was last used */
13
17
  lastUsed?: Date;
14
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-frontend-service.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACvD"}
1
+ {"version":3,"file":"token-usage-frontend-service.d.ts","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,CAAC,EAAE,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAE3D;;OAEG;IACH,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-usage-frontend-service.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-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;;;AAkBhF;;GAEG;AACU,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
1
+ {"version":3,"file":"token-usage-frontend-service.js","sourceRoot":"","sources":["../../src/browser/token-usage-frontend-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;;;AAsBhF;;GAEG;AACU,QAAA,yBAAyB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { Resource, URI } from '@theia/core';
2
+ import { AIVariableContext, AIVariableResolutionRequest } from './variable-service';
3
+ import { ConfigurableInMemoryResources, ConfigurableMutableReferenceResource } from './configurable-in-memory-resources';
4
+ export declare const AI_VARIABLE_RESOURCE_SCHEME = "ai-variable";
5
+ export declare const NO_CONTEXT_AUTHORITY = "context-free";
6
+ export declare class AIVariableResourceResolver {
7
+ protected readonly inMemoryResources: ConfigurableInMemoryResources;
8
+ protected init(): void;
9
+ protected readonly cache: Map<string, [Resource, AIVariableContext]>;
10
+ getOrCreate(request: AIVariableResolutionRequest, context: AIVariableContext, value: string): ConfigurableMutableReferenceResource;
11
+ protected toUri(request: AIVariableResolutionRequest, context: AIVariableContext): URI;
12
+ protected toAuthority(context: AIVariableContext): string;
13
+ fromUri(uri: URI): {
14
+ variableName: string;
15
+ arg: string | undefined;
16
+ } | undefined;
17
+ }
18
+ //# sourceMappingURL=ai-variable-resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-variable-resource.d.ts","sourceRoot":"","sources":["../../src/common/ai-variable-resource.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAgB,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAEzH,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,eAAO,MAAM,oBAAoB,iBAAiB,CAAC;AAEnD,qBACa,0BAA0B;IACI,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,6BAA6B,CAAC;IAG3G,SAAS,CAAC,IAAI,IAAI,IAAI;IAItB,SAAS,CAAC,QAAQ,CAAC,KAAK,6CAAoD;IAE5E,WAAW,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,oCAAoC;IAalI,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,GAAG;IAUtF,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM;IAezD,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS;CAUnF"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH and others.
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
+ exports.AIVariableResourceResolver = exports.NO_CONTEXT_AUTHORITY = exports.AI_VARIABLE_RESOURCE_SCHEME = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const deepEqual = require("fast-deep-equal");
21
+ const inversify_1 = require("@theia/core/shared/inversify");
22
+ const core_1 = require("@theia/core");
23
+ const stableJsonStringify = require("fast-json-stable-stringify");
24
+ const configurable_in_memory_resources_1 = require("./configurable-in-memory-resources");
25
+ exports.AI_VARIABLE_RESOURCE_SCHEME = 'ai-variable';
26
+ exports.NO_CONTEXT_AUTHORITY = 'context-free';
27
+ let AIVariableResourceResolver = class AIVariableResourceResolver {
28
+ constructor() {
29
+ this.cache = new Map();
30
+ }
31
+ init() {
32
+ this.inMemoryResources.onWillDispose(resource => this.cache.delete(resource.uri.toString()));
33
+ }
34
+ getOrCreate(request, context, value) {
35
+ const uri = this.toUri(request, context);
36
+ try {
37
+ const existing = this.inMemoryResources.resolve(uri);
38
+ existing.update({ contents: value });
39
+ return existing;
40
+ }
41
+ catch { /* No-op */ }
42
+ const fresh = this.inMemoryResources.add(uri, { contents: value, readOnly: true, initiallyDirty: false });
43
+ const key = uri.toString();
44
+ this.cache.set(key, [fresh, context]);
45
+ return fresh;
46
+ }
47
+ toUri(request, context) {
48
+ return core_1.URI.fromComponents({
49
+ scheme: exports.AI_VARIABLE_RESOURCE_SCHEME,
50
+ query: stableJsonStringify({ arg: request.arg, name: request.variable.name }),
51
+ path: '/',
52
+ authority: this.toAuthority(context),
53
+ fragment: ''
54
+ });
55
+ }
56
+ toAuthority(context) {
57
+ try {
58
+ if (deepEqual(context, {})) {
59
+ return exports.NO_CONTEXT_AUTHORITY;
60
+ }
61
+ for (const [resource, cachedContext] of this.cache.values()) {
62
+ if (deepEqual(context, cachedContext)) {
63
+ return resource.uri.authority;
64
+ }
65
+ }
66
+ }
67
+ catch (err) {
68
+ // Mostly that deep equal could overflow the stack, but it should run into === or inequality before that.
69
+ console.warn('Problem evaluating context in AIVariableResourceResolver', err);
70
+ }
71
+ return (0, core_1.generateUuid)();
72
+ }
73
+ fromUri(uri) {
74
+ if (uri.scheme !== exports.AI_VARIABLE_RESOURCE_SCHEME) {
75
+ return undefined;
76
+ }
77
+ try {
78
+ const { name: variableName, arg } = JSON.parse(uri.query);
79
+ return variableName ? {
80
+ variableName,
81
+ arg,
82
+ } : undefined;
83
+ }
84
+ catch {
85
+ return undefined;
86
+ }
87
+ }
88
+ };
89
+ exports.AIVariableResourceResolver = AIVariableResourceResolver;
90
+ tslib_1.__decorate([
91
+ (0, inversify_1.inject)(configurable_in_memory_resources_1.ConfigurableInMemoryResources),
92
+ tslib_1.__metadata("design:type", configurable_in_memory_resources_1.ConfigurableInMemoryResources)
93
+ ], AIVariableResourceResolver.prototype, "inMemoryResources", void 0);
94
+ tslib_1.__decorate([
95
+ (0, inversify_1.postConstruct)(),
96
+ tslib_1.__metadata("design:type", Function),
97
+ tslib_1.__metadata("design:paramtypes", []),
98
+ tslib_1.__metadata("design:returntype", void 0)
99
+ ], AIVariableResourceResolver.prototype, "init", null);
100
+ exports.AIVariableResourceResolver = AIVariableResourceResolver = tslib_1.__decorate([
101
+ (0, inversify_1.injectable)()
102
+ ], AIVariableResourceResolver);
103
+ //# sourceMappingURL=ai-variable-resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-variable-resource.js","sourceRoot":"","sources":["../../src/common/ai-variable-resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { SyncReferenceCollection, Reference, ResourceResolver, Resource, Event, Emitter, URI } from '@theia/core';
2
+ import { MarkdownString } from '@theia/core/lib/common/markdown-rendering';
3
+ export declare class ConfigurableInMemoryResources implements ResourceResolver {
4
+ protected readonly resources: SyncReferenceCollection<string, ConfigurableMutableResource>;
5
+ get onWillDispose(): Event<ConfigurableMutableResource>;
6
+ add(uri: URI, options: ResourceInitializationOptions): ConfigurableMutableReferenceResource;
7
+ update(uri: URI, options: ResourceInitializationOptions): Resource;
8
+ resolve(uri: URI): ConfigurableMutableReferenceResource;
9
+ protected acquire(uri: string): ConfigurableMutableReferenceResource;
10
+ }
11
+ export type ResourceInitializationOptions = Pick<Resource, 'autosaveable' | 'initiallyDirty' | 'readOnly'> & {
12
+ contents?: string | Promise<string>;
13
+ onSave?: Resource['saveContents'];
14
+ };
15
+ export declare class ConfigurableMutableResource implements Resource {
16
+ readonly uri: URI;
17
+ protected options?: ResourceInitializationOptions | undefined;
18
+ protected readonly onDidChangeContentsEmitter: Emitter<void>;
19
+ readonly onDidChangeContents: Event<void>;
20
+ protected fireDidChangeContents(): void;
21
+ protected readonly onDidChangeReadonlyEmitter: Emitter<boolean | MarkdownString>;
22
+ readonly onDidChangeReadOnly: Event<boolean | MarkdownString>;
23
+ constructor(uri: URI, options?: ResourceInitializationOptions | undefined);
24
+ get readOnly(): Resource['readOnly'];
25
+ get autosaveable(): boolean;
26
+ get initiallyDirty(): boolean;
27
+ readContents(): Promise<string>;
28
+ saveContents(contents: string): Promise<void>;
29
+ update(options: ResourceInitializationOptions): void;
30
+ dispose(): void;
31
+ }
32
+ export declare class ConfigurableMutableReferenceResource implements Resource {
33
+ protected reference: Reference<ConfigurableMutableResource>;
34
+ constructor(reference: Reference<ConfigurableMutableResource>);
35
+ get uri(): URI;
36
+ get onDidChangeContents(): Event<void>;
37
+ dispose(): void;
38
+ readContents(): Promise<string>;
39
+ saveContents(contents: string): Promise<void>;
40
+ update(options: ResourceInitializationOptions): void;
41
+ get readOnly(): Resource['readOnly'];
42
+ get initiallyDirty(): boolean;
43
+ get autosaveable(): boolean;
44
+ }
45
+ //# sourceMappingURL=configurable-in-memory-resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurable-in-memory-resources.d.ts","sourceRoot":"","sources":["../../src/common/configurable-in-memory-resources.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,qBAEa,6BAA8B,YAAW,gBAAgB;IAElE,SAAS,CAAC,QAAQ,CAAC,SAAS,+DAA0H;IAEtJ,IAAI,aAAa,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAEtD;IAED,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,GAAG,oCAAoC;IAU3F,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,6BAA6B,GAAG,QAAQ;IAUlE,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,oCAAoC;IAQvD,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,oCAAoC;CAIvE;AAED,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,QAAQ,EAAE,cAAc,GAAG,gBAAgB,GAAG,UAAU,CAAC,GACpG;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAA;CAAE,CAAC;AAEjF,qBAAa,2BAA4B,YAAW,QAAQ;IAU5C,QAAQ,CAAC,GAAG,EAAE,GAAG;IAAE,SAAS,CAAC,OAAO,CAAC;IATjD,SAAS,CAAC,QAAQ,CAAC,0BAA0B,gBAAuB;IACpE,QAAQ,CAAC,mBAAmB,cAAyC;IACrE,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAIvC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,oCAA2C;IACxF,QAAQ,CAAC,mBAAmB,kCAAyC;gBAEhD,GAAG,EAAE,GAAG,EAAY,OAAO,CAAC,2CAA+B;IAEhF,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,CAEnC;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIzB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI;IAYpD,OAAO,IAAI,IAAI;CAGlB;AAED,qBAAa,oCAAqC,YAAW,QAAQ;IACrD,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,2BAA2B,CAAC;gBAAjD,SAAS,EAAE,SAAS,CAAC,2BAA2B,CAAC;IAEvE,IAAI,GAAG,IAAI,GAAG,CAEb;IAED,IAAI,mBAAmB,IAAI,KAAK,CAAC,IAAI,CAAC,CAErC;IAED,OAAO,IAAI,IAAI;IAIf,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAI/B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,IAAI;IAIpD,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,CAEnC;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;CACJ"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclispeSource GmbH and others.
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
+ exports.ConfigurableMutableReferenceResource = exports.ConfigurableMutableResource = exports.ConfigurableInMemoryResources = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ let ConfigurableInMemoryResources = class ConfigurableInMemoryResources {
23
+ constructor() {
24
+ this.resources = new core_1.SyncReferenceCollection(uri => new ConfigurableMutableResource(new core_1.URI(uri)));
25
+ }
26
+ get onWillDispose() {
27
+ return this.resources.onWillDispose;
28
+ }
29
+ add(uri, options) {
30
+ const resourceUri = uri.toString();
31
+ if (this.resources.has(resourceUri)) {
32
+ throw new Error(`Cannot add already existing in-memory resource '${resourceUri}'`);
33
+ }
34
+ const resource = this.acquire(resourceUri);
35
+ resource.update(options);
36
+ return resource;
37
+ }
38
+ update(uri, options) {
39
+ const resourceUri = uri.toString();
40
+ const resource = this.resources.get(resourceUri);
41
+ if (!resource) {
42
+ throw new Error(`Cannot update non-existent in-memory resource '${resourceUri}'`);
43
+ }
44
+ resource.update(options);
45
+ return resource;
46
+ }
47
+ resolve(uri) {
48
+ const uriString = uri.toString();
49
+ if (!this.resources.has(uriString)) {
50
+ throw new Error(`In memory '${uriString}' resource does not exist.`);
51
+ }
52
+ return this.acquire(uriString);
53
+ }
54
+ acquire(uri) {
55
+ const reference = this.resources.acquire(uri);
56
+ return new ConfigurableMutableReferenceResource(reference);
57
+ }
58
+ };
59
+ exports.ConfigurableInMemoryResources = ConfigurableInMemoryResources;
60
+ exports.ConfigurableInMemoryResources = ConfigurableInMemoryResources = tslib_1.__decorate([
61
+ (0, inversify_1.injectable)()
62
+ /** For creating highly configurable in-memory resources */
63
+ ], ConfigurableInMemoryResources);
64
+ class ConfigurableMutableResource {
65
+ fireDidChangeContents() {
66
+ this.onDidChangeContentsEmitter.fire();
67
+ }
68
+ constructor(uri, options) {
69
+ this.uri = uri;
70
+ this.options = options;
71
+ this.onDidChangeContentsEmitter = new core_1.Emitter();
72
+ this.onDidChangeContents = this.onDidChangeContentsEmitter.event;
73
+ this.onDidChangeReadonlyEmitter = new core_1.Emitter();
74
+ this.onDidChangeReadOnly = this.onDidChangeReadonlyEmitter.event;
75
+ }
76
+ get readOnly() {
77
+ var _a;
78
+ return (_a = this.options) === null || _a === void 0 ? void 0 : _a.readOnly;
79
+ }
80
+ get autosaveable() {
81
+ var _a;
82
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.autosaveable) !== false;
83
+ }
84
+ get initiallyDirty() {
85
+ var _a;
86
+ return !!((_a = this.options) === null || _a === void 0 ? void 0 : _a.initiallyDirty);
87
+ }
88
+ readContents() {
89
+ var _a, _b;
90
+ return Promise.resolve((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.contents) !== null && _b !== void 0 ? _b : '');
91
+ }
92
+ async saveContents(contents) {
93
+ var _a, _b;
94
+ await ((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.onSave) === null || _b === void 0 ? void 0 : _b.call(_a, contents));
95
+ this.update({ contents });
96
+ }
97
+ update(options) {
98
+ var _a, _b, _c;
99
+ const didContentsChange = 'contents' in options && options.contents !== ((_a = this.options) === null || _a === void 0 ? void 0 : _a.contents);
100
+ const didReadOnlyChange = 'readOnly' in options && options.readOnly !== ((_b = this.options) === null || _b === void 0 ? void 0 : _b.readOnly);
101
+ this.options = { ...this.options, ...options };
102
+ if (didContentsChange) {
103
+ this.onDidChangeContentsEmitter.fire();
104
+ }
105
+ if (didReadOnlyChange) {
106
+ this.onDidChangeReadonlyEmitter.fire((_c = this.readOnly) !== null && _c !== void 0 ? _c : false);
107
+ }
108
+ }
109
+ dispose() {
110
+ this.onDidChangeContentsEmitter.dispose();
111
+ }
112
+ }
113
+ exports.ConfigurableMutableResource = ConfigurableMutableResource;
114
+ class ConfigurableMutableReferenceResource {
115
+ constructor(reference) {
116
+ this.reference = reference;
117
+ }
118
+ get uri() {
119
+ return this.reference.object.uri;
120
+ }
121
+ get onDidChangeContents() {
122
+ return this.reference.object.onDidChangeContents;
123
+ }
124
+ dispose() {
125
+ this.reference.dispose();
126
+ }
127
+ readContents() {
128
+ return this.reference.object.readContents();
129
+ }
130
+ saveContents(contents) {
131
+ return this.reference.object.saveContents(contents);
132
+ }
133
+ update(options) {
134
+ this.reference.object.update(options);
135
+ }
136
+ get readOnly() {
137
+ return this.reference.object.readOnly;
138
+ }
139
+ get initiallyDirty() {
140
+ return this.reference.object.initiallyDirty;
141
+ }
142
+ get autosaveable() {
143
+ return this.reference.object.autosaveable;
144
+ }
145
+ }
146
+ exports.ConfigurableMutableReferenceResource = ConfigurableMutableReferenceResource;
147
+ //# sourceMappingURL=configurable-in-memory-resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configurable-in-memory-resources.js","sourceRoot":"","sources":["../../src/common/configurable-in-memory-resources.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,6 @@ export * from './variable-service';
15
15
  export * from './settings-service';
16
16
  export * from './language-model-service';
17
17
  export * from './token-usage-service';
18
+ export * from './ai-variable-resource';
19
+ export * from './configurable-in-memory-resources';
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAeA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC"}
@@ -33,4 +33,6 @@ tslib_1.__exportStar(require("./variable-service"), exports);
33
33
  tslib_1.__exportStar(require("./settings-service"), exports);
34
34
  tslib_1.__exportStar(require("./language-model-service"), exports);
35
35
  tslib_1.__exportStar(require("./token-usage-service"), exports);
36
+ tslib_1.__exportStar(require("./ai-variable-resource"), exports);
37
+ tslib_1.__exportStar(require("./configurable-in-memory-resources"), exports);
36
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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;AAChF,0DAAgC;AAChC,kDAAwB;AACxB,yEAA+C;AAC/C,4EAAkD;AAClD,qEAA2C;AAC3C,oEAA0C;AAC1C,gEAAsC;AACtC,2DAAiC;AACjC,2DAAiC;AACjC,gEAAsC;AACtC,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC;AACzC,gEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/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;AAChF,0DAAgC;AAChC,kDAAwB;AACxB,yEAA+C;AAC/C,4EAAkD;AAClD,qEAA2C;AAC3C,oEAA0C;AAC1C,gEAAsC;AACtC,2DAAiC;AACjC,2DAAiC;AACjC,gEAAsC;AACtC,wDAA8B;AAC9B,qDAA2B;AAC3B,wEAA8C;AAC9C,6DAAmC;AACnC,6DAAmC;AACnC,mEAAyC;AACzC,gEAAsC;AACtC,iEAAuC;AACvC,6EAAmD"}
@@ -64,7 +64,7 @@ export interface PromptService {
64
64
  *
65
65
  * @param id the id of the prompt
66
66
  * @param args the object with placeholders, mapping the placeholder key to the value
67
- * @param context the {@link AIVariableContext} to use during variable resolvement
67
+ * @param context the {@link AIVariableContext} to use during variable resolution
68
68
  * @param resolveVariable the variable resolving method. Fall back to using the {@link AIVariableService} if not given.
69
69
  */
70
70
  getPromptFragment(id: string, args?: {
@@ -156,9 +156,21 @@ export interface PromptCustomizationService {
156
156
  */
157
157
  readonly onDidChangeCustomAgents: Event<void>;
158
158
  /**
159
- * Open the custom agent yaml file.
159
+ * Returns all locations of existing customAgents.yml files and potential locations where
160
+ * new customAgents.yml files could be created.
161
+ *
162
+ * @returns An array of objects containing the URI and whether the file exists
163
+ */
164
+ getCustomAgentsLocations(): Promise<{
165
+ uri: URI;
166
+ exists: boolean;
167
+ }[]>;
168
+ /**
169
+ * Opens an existing customAgents.yml file at the given URI, or creates a new one if it doesn't exist.
170
+ *
171
+ * @param uri The URI of the customAgents.yml file to open or create
160
172
  */
161
- openCustomAgentYaml(): void;
173
+ openCustomAgentYaml(uri: URI): Promise<void>;
162
174
  }
163
175
  export declare class PromptServiceImpl implements PromptService {
164
176
  protected readonly settingsService: AISettingsService | undefined;
@@ -182,7 +194,7 @@ export declare class PromptServiceImpl implements PromptService {
182
194
  *
183
195
  * @param template the unresolved template text
184
196
  * @param args the object with placeholders, mapping the placeholder key to the value
185
- * @param context the {@link AIVariableContext} to use during variable resolvement
197
+ * @param context the {@link AIVariableContext} to use during variable resolution
186
198
  * @param resolveVariable the variable resolving method. Fall back to using the {@link AIVariableService} if not given.
187
199
  */
188
200
  protected getVariableAndArgReplacements(template: string, args?: {