@theia/ai-core 1.67.0-next.13 → 1.67.0-next.56

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 (246) hide show
  1. package/README.md +1 -0
  2. package/data/prompttemplate.tmLanguage.json +3 -0
  3. package/package.json +9 -9
  4. package/src/browser/frontend-language-model-alias-registry.ts +11 -11
  5. package/src/common/agent-service.ts +6 -6
  6. package/src/common/prompt-service.ts +6 -2
  7. package/lib/browser/agent-completion-notification-service.d.ts +0 -69
  8. package/lib/browser/agent-completion-notification-service.d.ts.map +0 -1
  9. package/lib/browser/agent-completion-notification-service.js +0 -187
  10. package/lib/browser/agent-completion-notification-service.js.map +0 -1
  11. package/lib/browser/ai-activation-service.d.ts +0 -31
  12. package/lib/browser/ai-activation-service.d.ts.map +0 -1
  13. package/lib/browser/ai-activation-service.js +0 -56
  14. package/lib/browser/ai-activation-service.js.map +0 -1
  15. package/lib/browser/ai-command-handler-factory.d.ts +0 -4
  16. package/lib/browser/ai-command-handler-factory.d.ts.map +0 -1
  17. package/lib/browser/ai-command-handler-factory.js +0 -20
  18. package/lib/browser/ai-command-handler-factory.js.map +0 -1
  19. package/lib/browser/ai-core-command-contribution.d.ts +0 -8
  20. package/lib/browser/ai-core-command-contribution.d.ts.map +0 -1
  21. package/lib/browser/ai-core-command-contribution.js +0 -44
  22. package/lib/browser/ai-core-command-contribution.js.map +0 -1
  23. package/lib/browser/ai-core-frontend-application-contribution.d.ts +0 -10
  24. package/lib/browser/ai-core-frontend-application-contribution.d.ts.map +0 -1
  25. package/lib/browser/ai-core-frontend-application-contribution.js +0 -46
  26. package/lib/browser/ai-core-frontend-application-contribution.js.map +0 -1
  27. package/lib/browser/ai-core-frontend-module.d.ts +0 -4
  28. package/lib/browser/ai-core-frontend-module.d.ts.map +0 -1
  29. package/lib/browser/ai-core-frontend-module.js +0 -137
  30. package/lib/browser/ai-core-frontend-module.js.map +0 -1
  31. package/lib/browser/ai-settings-service.d.ts +0 -16
  32. package/lib/browser/ai-settings-service.d.ts.map +0 -1
  33. package/lib/browser/ai-settings-service.js +0 -78
  34. package/lib/browser/ai-settings-service.js.map +0 -1
  35. package/lib/browser/ai-variable-uri-label-provider.d.ts +0 -17
  36. package/lib/browser/ai-variable-uri-label-provider.d.ts.map +0 -1
  37. package/lib/browser/ai-variable-uri-label-provider.js +0 -85
  38. package/lib/browser/ai-variable-uri-label-provider.js.map +0 -1
  39. package/lib/browser/ai-view-contribution.d.ts +0 -14
  40. package/lib/browser/ai-view-contribution.d.ts.map +0 -1
  41. package/lib/browser/ai-view-contribution.js +0 -87
  42. package/lib/browser/ai-view-contribution.js.map +0 -1
  43. package/lib/browser/file-variable-contribution.d.ts +0 -23
  44. package/lib/browser/file-variable-contribution.d.ts.map +0 -1
  45. package/lib/browser/file-variable-contribution.js +0 -114
  46. package/lib/browser/file-variable-contribution.js.map +0 -1
  47. package/lib/browser/frontend-language-model-alias-registry.d.ts +0 -31
  48. package/lib/browser/frontend-language-model-alias-registry.d.ts.map +0 -1
  49. package/lib/browser/frontend-language-model-alias-registry.js +0 -170
  50. package/lib/browser/frontend-language-model-alias-registry.js.map +0 -1
  51. package/lib/browser/frontend-language-model-registry.d.ts +0 -49
  52. package/lib/browser/frontend-language-model-registry.d.ts.map +0 -1
  53. package/lib/browser/frontend-language-model-registry.js +0 -387
  54. package/lib/browser/frontend-language-model-registry.js.map +0 -1
  55. package/lib/browser/frontend-language-model-registry.spec.d.ts +0 -2
  56. package/lib/browser/frontend-language-model-registry.spec.d.ts.map +0 -1
  57. package/lib/browser/frontend-language-model-registry.spec.js +0 -248
  58. package/lib/browser/frontend-language-model-registry.spec.js.map +0 -1
  59. package/lib/browser/frontend-language-model-service.d.ts +0 -10
  60. package/lib/browser/frontend-language-model-service.d.ts.map +0 -1
  61. package/lib/browser/frontend-language-model-service.js +0 -66
  62. package/lib/browser/frontend-language-model-service.js.map +0 -1
  63. package/lib/browser/frontend-prompt-customization-service.d.ts +0 -271
  64. package/lib/browser/frontend-prompt-customization-service.d.ts.map +0 -1
  65. package/lib/browser/frontend-prompt-customization-service.js +0 -869
  66. package/lib/browser/frontend-prompt-customization-service.js.map +0 -1
  67. package/lib/browser/frontend-prompt-customization-service.spec.d.ts +0 -2
  68. package/lib/browser/frontend-prompt-customization-service.spec.d.ts.map +0 -1
  69. package/lib/browser/frontend-prompt-customization-service.spec.js +0 -127
  70. package/lib/browser/frontend-prompt-customization-service.spec.js.map +0 -1
  71. package/lib/browser/frontend-variable-service.d.ts +0 -61
  72. package/lib/browser/frontend-variable-service.d.ts.map +0 -1
  73. package/lib/browser/frontend-variable-service.js +0 -165
  74. package/lib/browser/frontend-variable-service.js.map +0 -1
  75. package/lib/browser/index.d.ts +0 -20
  76. package/lib/browser/index.d.ts.map +0 -1
  77. package/lib/browser/index.js +0 -38
  78. package/lib/browser/index.js.map +0 -1
  79. package/lib/browser/open-editors-variable-contribution.d.ts +0 -17
  80. package/lib/browser/open-editors-variable-contribution.d.ts.map +0 -1
  81. package/lib/browser/open-editors-variable-contribution.js +0 -84
  82. package/lib/browser/open-editors-variable-contribution.js.map +0 -1
  83. package/lib/browser/os-notification-service.d.ts +0 -96
  84. package/lib/browser/os-notification-service.d.ts.map +0 -1
  85. package/lib/browser/os-notification-service.js +0 -222
  86. package/lib/browser/os-notification-service.js.map +0 -1
  87. package/lib/browser/prompttemplate-contribution.d.ts +0 -29
  88. package/lib/browser/prompttemplate-contribution.d.ts.map +0 -1
  89. package/lib/browser/prompttemplate-contribution.js +0 -243
  90. package/lib/browser/prompttemplate-contribution.js.map +0 -1
  91. package/lib/browser/prompttemplate-parser.d.ts +0 -36
  92. package/lib/browser/prompttemplate-parser.d.ts.map +0 -1
  93. package/lib/browser/prompttemplate-parser.js +0 -94
  94. package/lib/browser/prompttemplate-parser.js.map +0 -1
  95. package/lib/browser/theia-variable-contribution.d.ts +0 -26
  96. package/lib/browser/theia-variable-contribution.d.ts.map +0 -1
  97. package/lib/browser/theia-variable-contribution.js +0 -146
  98. package/lib/browser/theia-variable-contribution.js.map +0 -1
  99. package/lib/browser/token-usage-frontend-service-impl.d.ts +0 -25
  100. package/lib/browser/token-usage-frontend-service-impl.d.ts.map +0 -1
  101. package/lib/browser/token-usage-frontend-service-impl.js +0 -138
  102. package/lib/browser/token-usage-frontend-service-impl.js.map +0 -1
  103. package/lib/browser/token-usage-frontend-service.d.ts +0 -33
  104. package/lib/browser/token-usage-frontend-service.d.ts.map +0 -1
  105. package/lib/browser/token-usage-frontend-service.js +0 -23
  106. package/lib/browser/token-usage-frontend-service.js.map +0 -1
  107. package/lib/browser/window-blink-service.d.ts +0 -41
  108. package/lib/browser/window-blink-service.d.ts.map +0 -1
  109. package/lib/browser/window-blink-service.js +0 -174
  110. package/lib/browser/window-blink-service.js.map +0 -1
  111. package/lib/common/agent-preferences.d.ts +0 -4
  112. package/lib/common/agent-preferences.d.ts.map +0 -1
  113. package/lib/common/agent-preferences.js +0 -84
  114. package/lib/common/agent-preferences.js.map +0 -1
  115. package/lib/common/agent-service.d.ts +0 -66
  116. package/lib/common/agent-service.d.ts.map +0 -1
  117. package/lib/common/agent-service.js +0 -104
  118. package/lib/common/agent-service.js.map +0 -1
  119. package/lib/common/agent.d.ts +0 -72
  120. package/lib/common/agent.d.ts.map +0 -1
  121. package/lib/common/agent.js +0 -20
  122. package/lib/common/agent.js.map +0 -1
  123. package/lib/common/agents-variable-contribution.d.ts +0 -19
  124. package/lib/common/agents-variable-contribution.d.ts.map +0 -1
  125. package/lib/common/agents-variable-contribution.js +0 -57
  126. package/lib/common/agents-variable-contribution.js.map +0 -1
  127. package/lib/common/ai-core-preferences.d.ts +0 -48
  128. package/lib/common/ai-core-preferences.d.ts.map +0 -1
  129. package/lib/common/ai-core-preferences.js +0 -204
  130. package/lib/common/ai-core-preferences.js.map +0 -1
  131. package/lib/common/ai-variable-resource.d.ts +0 -18
  132. package/lib/common/ai-variable-resource.d.ts.map +0 -1
  133. package/lib/common/ai-variable-resource.js +0 -103
  134. package/lib/common/ai-variable-resource.js.map +0 -1
  135. package/lib/common/configurable-in-memory-resources.d.ts +0 -47
  136. package/lib/common/configurable-in-memory-resources.d.ts.map +0 -1
  137. package/lib/common/configurable-in-memory-resources.js +0 -154
  138. package/lib/common/configurable-in-memory-resources.js.map +0 -1
  139. package/lib/common/index.d.ts +0 -22
  140. package/lib/common/index.d.ts.map +0 -1
  141. package/lib/common/index.js +0 -40
  142. package/lib/common/index.js.map +0 -1
  143. package/lib/common/language-model-alias.d.ts +0 -58
  144. package/lib/common/language-model-alias.d.ts.map +0 -1
  145. package/lib/common/language-model-alias.js +0 -20
  146. package/lib/common/language-model-alias.js.map +0 -1
  147. package/lib/common/language-model-delegate.d.ts +0 -25
  148. package/lib/common/language-model-delegate.d.ts.map +0 -1
  149. package/lib/common/language-model-delegate.js +0 -26
  150. package/lib/common/language-model-delegate.js.map +0 -1
  151. package/lib/common/language-model-interaction-model.d.ts +0 -74
  152. package/lib/common/language-model-interaction-model.d.ts.map +0 -1
  153. package/lib/common/language-model-interaction-model.js +0 -3
  154. package/lib/common/language-model-interaction-model.js.map +0 -1
  155. package/lib/common/language-model-service.d.ts +0 -38
  156. package/lib/common/language-model-service.d.ts.map +0 -1
  157. package/lib/common/language-model-service.js +0 -128
  158. package/lib/common/language-model-service.js.map +0 -1
  159. package/lib/common/language-model-util.d.ts +0 -17
  160. package/lib/common/language-model-util.d.ts.map +0 -1
  161. package/lib/common/language-model-util.js +0 -82
  162. package/lib/common/language-model-util.js.map +0 -1
  163. package/lib/common/language-model.d.ts +0 -285
  164. package/lib/common/language-model.d.ts.map +0 -1
  165. package/lib/common/language-model.js +0 -248
  166. package/lib/common/language-model.js.map +0 -1
  167. package/lib/common/language-model.spec.d.ts +0 -2
  168. package/lib/common/language-model.spec.d.ts.map +0 -1
  169. package/lib/common/language-model.spec.js +0 -62
  170. package/lib/common/language-model.spec.js.map +0 -1
  171. package/lib/common/notification-types.d.ts +0 -7
  172. package/lib/common/notification-types.d.ts.map +0 -1
  173. package/lib/common/notification-types.js +0 -29
  174. package/lib/common/notification-types.js.map +0 -1
  175. package/lib/common/prompt-service-util.d.ts +0 -8
  176. package/lib/common/prompt-service-util.d.ts.map +0 -1
  177. package/lib/common/prompt-service-util.js +0 -34
  178. package/lib/common/prompt-service-util.js.map +0 -1
  179. package/lib/common/prompt-service.d.ts +0 -466
  180. package/lib/common/prompt-service.d.ts.map +0 -1
  181. package/lib/common/prompt-service.js +0 -653
  182. package/lib/common/prompt-service.js.map +0 -1
  183. package/lib/common/prompt-service.spec.d.ts +0 -2
  184. package/lib/common/prompt-service.spec.d.ts.map +0 -1
  185. package/lib/common/prompt-service.spec.js +0 -431
  186. package/lib/common/prompt-service.spec.js.map +0 -1
  187. package/lib/common/prompt-text.d.ts +0 -8
  188. package/lib/common/prompt-text.d.ts.map +0 -1
  189. package/lib/common/prompt-text.js +0 -27
  190. package/lib/common/prompt-text.js.map +0 -1
  191. package/lib/common/prompt-variable-contribution.d.ts +0 -18
  192. package/lib/common/prompt-variable-contribution.d.ts.map +0 -1
  193. package/lib/common/prompt-variable-contribution.js +0 -207
  194. package/lib/common/prompt-variable-contribution.js.map +0 -1
  195. package/lib/common/prompt-variable-contribution.spec.d.ts +0 -2
  196. package/lib/common/prompt-variable-contribution.spec.d.ts.map +0 -1
  197. package/lib/common/prompt-variable-contribution.spec.js +0 -163
  198. package/lib/common/prompt-variable-contribution.spec.js.map +0 -1
  199. package/lib/common/protocol.d.ts +0 -25
  200. package/lib/common/protocol.d.ts.map +0 -1
  201. package/lib/common/protocol.js +0 -22
  202. package/lib/common/protocol.js.map +0 -1
  203. package/lib/common/settings-service.d.ts +0 -29
  204. package/lib/common/settings-service.d.ts.map +0 -1
  205. package/lib/common/settings-service.js +0 -5
  206. package/lib/common/settings-service.js.map +0 -1
  207. package/lib/common/today-variable-contribution.d.ts +0 -17
  208. package/lib/common/today-variable-contribution.d.ts.map +0 -1
  209. package/lib/common/today-variable-contribution.js +0 -68
  210. package/lib/common/today-variable-contribution.js.map +0 -1
  211. package/lib/common/token-usage-service.d.ts +0 -43
  212. package/lib/common/token-usage-service.d.ts.map +0 -1
  213. package/lib/common/token-usage-service.js +0 -20
  214. package/lib/common/token-usage-service.js.map +0 -1
  215. package/lib/common/tool-invocation-registry.d.ts +0 -66
  216. package/lib/common/tool-invocation-registry.d.ts.map +0 -1
  217. package/lib/common/tool-invocation-registry.js +0 -101
  218. package/lib/common/tool-invocation-registry.js.map +0 -1
  219. package/lib/common/variable-service.d.ts +0 -172
  220. package/lib/common/variable-service.d.ts.map +0 -1
  221. package/lib/common/variable-service.js +0 -287
  222. package/lib/common/variable-service.js.map +0 -1
  223. package/lib/common/variable-service.spec.d.ts +0 -2
  224. package/lib/common/variable-service.spec.d.ts.map +0 -1
  225. package/lib/common/variable-service.spec.js +0 -237
  226. package/lib/common/variable-service.spec.js.map +0 -1
  227. package/lib/node/ai-core-backend-module.d.ts +0 -4
  228. package/lib/node/ai-core-backend-module.d.ts.map +0 -1
  229. package/lib/node/ai-core-backend-module.js +0 -65
  230. package/lib/node/ai-core-backend-module.js.map +0 -1
  231. package/lib/node/backend-language-model-registry.d.ts +0 -13
  232. package/lib/node/backend-language-model-registry.d.ts.map +0 -1
  233. package/lib/node/backend-language-model-registry.js +0 -68
  234. package/lib/node/backend-language-model-registry.js.map +0 -1
  235. package/lib/node/language-model-frontend-delegate.d.ts +0 -18
  236. package/lib/node/language-model-frontend-delegate.d.ts.map +0 -1
  237. package/lib/node/language-model-frontend-delegate.js +0 -109
  238. package/lib/node/language-model-frontend-delegate.js.map +0 -1
  239. package/lib/node/token-usage-service-impl.d.ts +0 -23
  240. package/lib/node/token-usage-service-impl.d.ts.map +0 -1
  241. package/lib/node/token-usage-service-impl.js +0 -78
  242. package/lib/node/token-usage-service-impl.js.map +0 -1
  243. package/lib/node/tool-request-parameters.spec.d.ts +0 -2
  244. package/lib/node/tool-request-parameters.spec.d.ts.map +0 -1
  245. package/lib/node/tool-request-parameters.spec.js +0 -116
  246. package/lib/node/tool-request-parameters.spec.js.map +0 -1
@@ -1,387 +0,0 @@
1
- "use strict";
2
- var FrontendLanguageModelRegistryImpl_1;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.FrontendLanguageModelRegistryImpl = exports.LanguageModelDelegateClientImpl = void 0;
5
- const tslib_1 = require("tslib");
6
- // *****************************************************************************
7
- // Copyright (C) 2025 EclipseSource GmbH.
8
- //
9
- // This program and the accompanying materials are made available under the
10
- // terms of the Eclipse Public License v. 2.0 which is available at
11
- // http://www.eclipse.org/legal/epl-2.0.
12
- //
13
- // This Source Code may also be made available under the following Secondary
14
- // Licenses when the conditions for such availability set forth in the Eclipse
15
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
16
- // with the GNU Classpath Exception which is available at
17
- // https://www.gnu.org/software/classpath/license.html.
18
- //
19
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
20
- // *****************************************************************************
21
- const core_1 = require("@theia/core");
22
- const inversify_1 = require("@theia/core/shared/inversify");
23
- const output_channel_1 = require("@theia/output/lib/browser/output-channel");
24
- const common_1 = require("../common");
25
- let LanguageModelDelegateClientImpl = class LanguageModelDelegateClientImpl {
26
- onLanguageModelUpdated(id) {
27
- this.receiver.onLanguageModelUpdated(id);
28
- }
29
- setReceiver(receiver) {
30
- this.receiver = receiver;
31
- }
32
- send(id, token) {
33
- this.receiver.send(id, token);
34
- }
35
- toolCall(requestId, toolId, args_string) {
36
- return this.receiver.toolCall(requestId, toolId, args_string);
37
- }
38
- error(id, error) {
39
- this.receiver.error(id, error);
40
- }
41
- languageModelAdded(metadata) {
42
- this.receiver.languageModelAdded(metadata);
43
- }
44
- languageModelRemoved(id) {
45
- this.receiver.languageModelRemoved(id);
46
- }
47
- };
48
- exports.LanguageModelDelegateClientImpl = LanguageModelDelegateClientImpl;
49
- exports.LanguageModelDelegateClientImpl = LanguageModelDelegateClientImpl = tslib_1.__decorate([
50
- (0, inversify_1.injectable)()
51
- ], LanguageModelDelegateClientImpl);
52
- let FrontendLanguageModelRegistryImpl = FrontendLanguageModelRegistryImpl_1 = class FrontendLanguageModelRegistryImpl extends common_1.DefaultLanguageModelRegistryImpl {
53
- constructor() {
54
- super(...arguments);
55
- this.streams = new Map();
56
- this.requests = new Map();
57
- }
58
- // called by backend
59
- languageModelAdded(metadata) {
60
- this.addLanguageModels([metadata]);
61
- }
62
- // called by backend
63
- languageModelRemoved(id) {
64
- this.removeLanguageModels([id]);
65
- }
66
- // called by backend when a model is updated
67
- onLanguageModelUpdated(id) {
68
- this.updateLanguageModelFromBackend(id);
69
- }
70
- /**
71
- * Fetch the updated model metadata from the backend and update the registry.
72
- */
73
- async updateLanguageModelFromBackend(id) {
74
- try {
75
- const backendModels = await this.registryDelegate.getLanguageModelDescriptions();
76
- const updated = backendModels.find((m) => m.id === id);
77
- if (updated) {
78
- // Remove the old model and add the updated one
79
- this.removeLanguageModels([id]);
80
- this.addLanguageModels([updated]);
81
- }
82
- }
83
- catch (err) {
84
- this.logger.error('Failed to update language model from backend', err);
85
- }
86
- }
87
- addLanguageModels(models) {
88
- let modelAdded = false;
89
- for (const model of models) {
90
- if (this.languageModels.find(m => m.id === model.id)) {
91
- console.warn(`Tried to add an existing model ${model.id}`);
92
- continue;
93
- }
94
- if (common_1.LanguageModel.is(model)) {
95
- this.languageModels.push(new Proxy(model, languageModelOutputHandler(() => this.outputChannelManager.getChannel(model.id))));
96
- modelAdded = true;
97
- }
98
- else {
99
- this.languageModels.push(new Proxy(this.createFrontendLanguageModel(model), languageModelOutputHandler(() => this.outputChannelManager.getChannel(model.id))));
100
- modelAdded = true;
101
- }
102
- }
103
- if (modelAdded) {
104
- this.changeEmitter.fire({ models: this.languageModels });
105
- }
106
- }
107
- init() {
108
- this.client.setReceiver(this);
109
- const contributions = this.languageModelContributions.getContributions();
110
- const promises = contributions.map(provider => provider());
111
- const backendDescriptions = this.registryDelegate.getLanguageModelDescriptions();
112
- Promise.allSettled([backendDescriptions, ...promises]).then(results => {
113
- const backendDescriptionsResult = results[0];
114
- if (backendDescriptionsResult.status === 'fulfilled') {
115
- this.addLanguageModels(backendDescriptionsResult.value);
116
- }
117
- else {
118
- this.logger.error('Failed to add language models contributed from the backend', backendDescriptionsResult.reason);
119
- }
120
- for (let i = 1; i < results.length; i++) {
121
- // assert that index > 0 contains only language models
122
- const languageModelResult = results[i];
123
- if (languageModelResult.status === 'fulfilled') {
124
- this.addLanguageModels(languageModelResult.value);
125
- }
126
- else {
127
- this.logger.error('Failed to add some language models:', languageModelResult.reason);
128
- }
129
- }
130
- this.markInitialized();
131
- });
132
- }
133
- createFrontendLanguageModel(description) {
134
- return {
135
- ...description,
136
- request: async (request, cancellationToken) => {
137
- const requestId = `${FrontendLanguageModelRegistryImpl_1.requestCounter++}`;
138
- this.requests.set(requestId, request);
139
- cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.onCancellationRequested(() => {
140
- this.providerDelegate.cancel(requestId);
141
- });
142
- const response = await this.providerDelegate.request(description.id, request, requestId, cancellationToken);
143
- if ((0, common_1.isLanguageModelTextResponse)(response) || (0, common_1.isLanguageModelParsedResponse)(response)) {
144
- return response;
145
- }
146
- if ((0, common_1.isLanguageModelStreamResponseDelegate)(response)) {
147
- if (!this.streams.has(response.streamId)) {
148
- const newStreamState = {
149
- id: response.streamId,
150
- tokens: [],
151
- };
152
- this.streams.set(response.streamId, newStreamState);
153
- }
154
- const streamState = this.streams.get(response.streamId);
155
- return {
156
- stream: this.getIterable(streamState),
157
- };
158
- }
159
- this.logger.error(`Received unknown response in frontend for request to language model ${description.id}. Trying to continue without touching the response.`, response);
160
- return response;
161
- },
162
- };
163
- }
164
- async *getIterable(state) {
165
- let current = -1;
166
- while (true) {
167
- if (current < state.tokens.length - 1) {
168
- current++;
169
- const token = state.tokens[current];
170
- if (token === undefined) {
171
- // message is finished
172
- break;
173
- }
174
- if (token !== undefined) {
175
- yield token;
176
- }
177
- }
178
- else {
179
- await new Promise((resolve, reject) => {
180
- state.resolve = resolve;
181
- state.reject = reject;
182
- });
183
- }
184
- }
185
- this.streams.delete(state.id);
186
- }
187
- // called by backend via the "delegate client" with new tokens
188
- send(id, token) {
189
- if (!this.streams.has(id)) {
190
- const newStreamState = {
191
- id,
192
- tokens: [],
193
- };
194
- this.streams.set(id, newStreamState);
195
- }
196
- const streamState = this.streams.get(id);
197
- streamState.tokens.push(token);
198
- if (streamState.resolve) {
199
- streamState.resolve(token);
200
- }
201
- }
202
- // called by backend once tool is invoked
203
- async toolCall(id, toolId, arg_string) {
204
- var _a;
205
- if (!this.requests.has(id)) {
206
- return { error: true, message: `No request found for ID '${id}'. The request may have been cancelled or completed.` };
207
- }
208
- const request = this.requests.get(id);
209
- const tool = (_a = request.tools) === null || _a === void 0 ? void 0 : _a.find(t => t.id === toolId);
210
- if (tool) {
211
- try {
212
- return await tool.handler(arg_string);
213
- }
214
- catch (error) {
215
- const errorMessage = error instanceof Error ? error.message : String(error);
216
- return { error: true, message: `Error executing tool '${toolId}': ${errorMessage}` };
217
- }
218
- ;
219
- }
220
- return { error: true, message: `Tool '${toolId}' not found in the available tools for this request.` };
221
- }
222
- // called by backend via the "delegate client" with the error to use for rejection
223
- error(id, error) {
224
- var _a;
225
- if (!this.streams.has(id)) {
226
- const newStreamState = {
227
- id,
228
- tokens: [],
229
- };
230
- this.streams.set(id, newStreamState);
231
- }
232
- const streamState = this.streams.get(id);
233
- (_a = streamState.reject) === null || _a === void 0 ? void 0 : _a.call(streamState, error);
234
- }
235
- async selectLanguageModels(request) {
236
- var _a, _b, _c;
237
- await this.initialized;
238
- const userSettings = (_b = (_a = (await this.settingsService.getAgentSettings(request.agent))) === null || _a === void 0 ? void 0 : _a.languageModelRequirements) === null || _b === void 0 ? void 0 : _b.find(req => req.purpose === request.purpose);
239
- const identifier = (_c = userSettings === null || userSettings === void 0 ? void 0 : userSettings.identifier) !== null && _c !== void 0 ? _c : request.identifier;
240
- if (identifier) {
241
- const model = await this.getReadyLanguageModel(identifier);
242
- if (model) {
243
- return [model];
244
- }
245
- }
246
- // Previously we returned the default model here, but this is not really transparent for the user so we do not select any model here.
247
- return undefined;
248
- }
249
- async getReadyLanguageModel(idOrAlias) {
250
- await this.aliasRegistry.ready;
251
- const modelIds = this.aliasRegistry.resolveAlias(idOrAlias);
252
- if (modelIds) {
253
- for (const modelId of modelIds) {
254
- const model = await this.getLanguageModel(modelId);
255
- if ((model === null || model === void 0 ? void 0 : model.status.status) === 'ready') {
256
- return model;
257
- }
258
- }
259
- return undefined;
260
- }
261
- const languageModel = await this.getLanguageModel(idOrAlias);
262
- return (languageModel === null || languageModel === void 0 ? void 0 : languageModel.status.status) === 'ready' ? languageModel : undefined;
263
- }
264
- };
265
- exports.FrontendLanguageModelRegistryImpl = FrontendLanguageModelRegistryImpl;
266
- FrontendLanguageModelRegistryImpl.requestCounter = 0;
267
- tslib_1.__decorate([
268
- (0, inversify_1.inject)(common_1.LanguageModelAliasRegistry),
269
- tslib_1.__metadata("design:type", Object)
270
- ], FrontendLanguageModelRegistryImpl.prototype, "aliasRegistry", void 0);
271
- tslib_1.__decorate([
272
- (0, inversify_1.inject)(common_1.LanguageModelRegistryFrontendDelegate),
273
- tslib_1.__metadata("design:type", Object)
274
- ], FrontendLanguageModelRegistryImpl.prototype, "registryDelegate", void 0);
275
- tslib_1.__decorate([
276
- (0, inversify_1.inject)(common_1.LanguageModelFrontendDelegate),
277
- tslib_1.__metadata("design:type", Object)
278
- ], FrontendLanguageModelRegistryImpl.prototype, "providerDelegate", void 0);
279
- tslib_1.__decorate([
280
- (0, inversify_1.inject)(LanguageModelDelegateClientImpl),
281
- tslib_1.__metadata("design:type", LanguageModelDelegateClientImpl)
282
- ], FrontendLanguageModelRegistryImpl.prototype, "client", void 0);
283
- tslib_1.__decorate([
284
- (0, inversify_1.inject)(core_1.ILogger),
285
- tslib_1.__metadata("design:type", Object)
286
- ], FrontendLanguageModelRegistryImpl.prototype, "logger", void 0);
287
- tslib_1.__decorate([
288
- (0, inversify_1.inject)(output_channel_1.OutputChannelManager),
289
- tslib_1.__metadata("design:type", output_channel_1.OutputChannelManager)
290
- ], FrontendLanguageModelRegistryImpl.prototype, "outputChannelManager", void 0);
291
- tslib_1.__decorate([
292
- (0, inversify_1.inject)(common_1.AISettingsService),
293
- tslib_1.__metadata("design:type", Object)
294
- ], FrontendLanguageModelRegistryImpl.prototype, "settingsService", void 0);
295
- tslib_1.__decorate([
296
- (0, inversify_1.postConstruct)(),
297
- tslib_1.__metadata("design:type", Function),
298
- tslib_1.__metadata("design:paramtypes", []),
299
- tslib_1.__metadata("design:returntype", void 0)
300
- ], FrontendLanguageModelRegistryImpl.prototype, "init", null);
301
- exports.FrontendLanguageModelRegistryImpl = FrontendLanguageModelRegistryImpl = FrontendLanguageModelRegistryImpl_1 = tslib_1.__decorate([
302
- (0, inversify_1.injectable)()
303
- ], FrontendLanguageModelRegistryImpl);
304
- const formatJsonWithIndentation = (obj) => {
305
- // eslint-disable-next-line no-null/no-null
306
- const jsonString = JSON.stringify(obj, null, 2);
307
- const lines = jsonString.split('\n');
308
- const formattedLines = [];
309
- lines.forEach(line => {
310
- const subLines = line.split('\\n');
311
- const index = indexOfValue(subLines[0]) + 1;
312
- formattedLines.push(subLines[0]);
313
- const prefix = index > 0 ? ' '.repeat(index) : '';
314
- if (index !== -1) {
315
- for (let i = 1; i < subLines.length; i++) {
316
- formattedLines.push(prefix + subLines[i]);
317
- }
318
- }
319
- });
320
- return formattedLines;
321
- };
322
- const indexOfValue = (jsonLine) => {
323
- const pattern = /"([^"]+)"\s*:\s*/g;
324
- const match = pattern.exec(jsonLine);
325
- return match ? match.index + match[0].length : -1;
326
- };
327
- const languageModelOutputHandler = (outputChannelGetter) => ({
328
- get(target, prop) {
329
- const original = target[prop];
330
- if (prop === 'request' && typeof original === 'function') {
331
- return async function (...args) {
332
- const outputChannel = outputChannelGetter();
333
- outputChannel.appendLine('Sending request:');
334
- const formattedRequest = formatJsonWithIndentation(args[0]);
335
- outputChannel.append(formattedRequest.join('\n'));
336
- if (args[1]) {
337
- args[1] = new Proxy(args[1], {
338
- get(cTarget, cProp) {
339
- if (cProp === 'onCancellationRequested') {
340
- return (...cargs) => cTarget.onCancellationRequested(() => {
341
- outputChannel.appendLine('\nCancel requested', output_channel_1.OutputChannelSeverity.Warning);
342
- cargs[0]();
343
- }, cargs[1], cargs[2]);
344
- }
345
- return cTarget[cProp];
346
- }
347
- });
348
- }
349
- try {
350
- const result = await original.apply(target, args);
351
- if ((0, common_1.isLanguageModelStreamResponse)(result)) {
352
- outputChannel.appendLine('Received a response stream');
353
- const stream = result.stream;
354
- const loggedStream = {
355
- async *[Symbol.asyncIterator]() {
356
- for await (const part of stream) {
357
- outputChannel.append(((0, common_1.isTextResponsePart)(part) && part.content) || '');
358
- yield part;
359
- }
360
- outputChannel.append('\n');
361
- outputChannel.appendLine('End of stream');
362
- },
363
- };
364
- return {
365
- ...result,
366
- stream: loggedStream,
367
- };
368
- }
369
- else {
370
- outputChannel.appendLine('Received a response');
371
- outputChannel.appendLine(JSON.stringify(result));
372
- return result;
373
- }
374
- }
375
- catch (err) {
376
- outputChannel.appendLine('An error occurred');
377
- if (err instanceof Error) {
378
- outputChannel.appendLine(err.message, output_channel_1.OutputChannelSeverity.Error);
379
- }
380
- throw err;
381
- }
382
- };
383
- }
384
- return original;
385
- },
386
- });
387
- //# sourceMappingURL=frontend-language-model-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontend-language-model-registry.js","sourceRoot":"","sources":["../../src/browser/frontend-language-model-registry.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=frontend-language-model-registry.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontend-language-model-registry.spec.d.ts","sourceRoot":"","sources":["../../src/browser/frontend-language-model-registry.spec.ts"],"names":[],"mappings":""}
@@ -1,248 +0,0 @@
1
- "use strict";
2
- // *****************************************************************************
3
- // Copyright (C) 2025 EclipseSource.
4
- //
5
- // This program and the accompanying materials are made available under the
6
- // terms of the Eclipse Public License v. 2.0 which is available at
7
- // http://www.eclipse.org/legal/epl-2.0.
8
- //
9
- // This Source Code may also be made available under the following Secondary
10
- // Licenses when the conditions for such availability set forth in the Eclipse
11
- // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
- // with the GNU Classpath Exception which is available at
13
- // https://www.gnu.org/software/classpath/license.html.
14
- //
15
- // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
- // *****************************************************************************
17
- Object.defineProperty(exports, "__esModule", { value: true });
18
- const jsdom_1 = require("@theia/core/lib/browser/test/jsdom");
19
- let disableJSDOM = (0, jsdom_1.enableJSDOM)();
20
- const frontend_application_config_provider_1 = require("@theia/core/lib/browser/frontend-application-config-provider");
21
- frontend_application_config_provider_1.FrontendApplicationConfigProvider.set({});
22
- const chai_1 = require("chai");
23
- disableJSDOM();
24
- function isErrorObject(obj) {
25
- return !!obj && typeof obj === 'object' && 'error' in obj && 'message' in obj;
26
- }
27
- // This class provides a minimal implementation focused solely on testing the toolCall method.
28
- // We cannot extend FrontendLanguageModelRegistryImpl directly due to issues in the test environment:
29
- // - FrontendLanguageModelRegistryImpl imports dependencies that transitively depend on 'p-queue'
30
- // - p-queue is an ESM-only module that cannot be loaded in the current test environment
31
- class TestableLanguageModelRegistry {
32
- constructor() {
33
- this.requests = new Map();
34
- }
35
- async toolCall(id, toolId, arg_string) {
36
- var _a;
37
- if (!this.requests.has(id)) {
38
- return { error: true, message: `No request found for ID '${id}'. The request may have been cancelled or completed.` };
39
- }
40
- const request = this.requests.get(id);
41
- const tool = (_a = request.tools) === null || _a === void 0 ? void 0 : _a.find(t => t.id === toolId);
42
- if (tool) {
43
- try {
44
- return await tool.handler(arg_string);
45
- }
46
- catch (error) {
47
- const errorMessage = error instanceof Error ? error.message : String(error);
48
- return { error: true, message: `Error executing tool '${toolId}': ${errorMessage}` };
49
- }
50
- ;
51
- }
52
- return { error: true, message: `Tool '${toolId}' not found in the available tools for this request.` };
53
- }
54
- // Test helper method
55
- setRequest(id, request) {
56
- this.requests.set(id, request);
57
- }
58
- }
59
- describe('FrontendLanguageModelRegistryImpl toolCall functionality', () => {
60
- let registry;
61
- before(() => {
62
- disableJSDOM = (0, jsdom_1.enableJSDOM)();
63
- });
64
- after(() => {
65
- disableJSDOM();
66
- });
67
- beforeEach(() => {
68
- registry = new TestableLanguageModelRegistry();
69
- });
70
- describe('toolCall', () => {
71
- it('should return error object when request ID does not exist', async () => {
72
- const result = await registry.toolCall('nonexistent-id', 'test-tool', '{}');
73
- (0, chai_1.expect)(result).to.be.an('object');
74
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
75
- if (isErrorObject(result)) {
76
- (0, chai_1.expect)(result.error).to.be.true;
77
- (0, chai_1.expect)(result.message).to.include('No request found for ID \'nonexistent-id\'');
78
- (0, chai_1.expect)(result.message).to.include('The request may have been cancelled or completed');
79
- }
80
- });
81
- it('should return error object when tool is not found', async () => {
82
- // Set up a request without the requested tool
83
- const requestId = 'test-request-id';
84
- const mockRequest = {
85
- messages: [],
86
- tools: [
87
- {
88
- id: 'different-tool',
89
- name: 'Different Tool',
90
- description: 'A different tool',
91
- parameters: {
92
- type: 'object',
93
- properties: {}
94
- },
95
- handler: () => Promise.resolve('success')
96
- }
97
- ]
98
- };
99
- registry.setRequest(requestId, mockRequest);
100
- const result = await registry.toolCall(requestId, 'nonexistent-tool', '{}');
101
- (0, chai_1.expect)(result).to.be.an('object');
102
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
103
- if (isErrorObject(result)) {
104
- (0, chai_1.expect)(result.error).to.be.true;
105
- (0, chai_1.expect)(result.message).to.include('Tool \'nonexistent-tool\' not found in the available tools for this request');
106
- }
107
- });
108
- it('should call tool handler successfully when tool exists', async () => {
109
- const requestId = 'test-request-id';
110
- const toolId = 'test-tool';
111
- const expectedResult = 'tool execution result';
112
- const mockTool = {
113
- id: toolId,
114
- name: 'Test Tool',
115
- description: 'A test tool',
116
- parameters: {
117
- type: 'object',
118
- properties: {}
119
- },
120
- handler: (args) => Promise.resolve(expectedResult)
121
- };
122
- const mockRequest = {
123
- messages: [],
124
- tools: [mockTool]
125
- };
126
- registry.setRequest(requestId, mockRequest);
127
- const result = await registry.toolCall(requestId, toolId, '{}');
128
- (0, chai_1.expect)(result).to.equal(expectedResult);
129
- });
130
- it('should handle synchronous tool handler errors gracefully', async () => {
131
- const requestId = 'test-request-id';
132
- const toolId = 'error-tool';
133
- const errorMessage = 'Tool execution failed';
134
- const mockTool = {
135
- id: toolId,
136
- name: 'Error Tool',
137
- description: 'A tool that throws an error',
138
- parameters: {
139
- type: 'object',
140
- properties: {}
141
- },
142
- handler: () => {
143
- throw new Error(errorMessage);
144
- }
145
- };
146
- const mockRequest = {
147
- messages: [],
148
- tools: [mockTool]
149
- };
150
- registry.setRequest(requestId, mockRequest);
151
- const result = await registry.toolCall(requestId, toolId, '{}');
152
- (0, chai_1.expect)(result).to.be.an('object');
153
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
154
- if (isErrorObject(result)) {
155
- (0, chai_1.expect)(result.error).to.be.true;
156
- (0, chai_1.expect)(result.message).to.include(`Error executing tool '${toolId}': ${errorMessage}`);
157
- }
158
- });
159
- it('should handle non-Error exceptions gracefully', async () => {
160
- const requestId = 'test-request-id';
161
- const toolId = 'string-error-tool';
162
- const errorMessage = 'String error';
163
- const mockTool = {
164
- id: toolId,
165
- name: 'String Error Tool',
166
- description: 'A tool that throws a string',
167
- parameters: {
168
- type: 'object',
169
- properties: {}
170
- },
171
- handler: () => {
172
- // eslint-disable-next-line no-throw-literal
173
- throw errorMessage;
174
- }
175
- };
176
- const mockRequest = {
177
- messages: [],
178
- tools: [mockTool]
179
- };
180
- registry.setRequest(requestId, mockRequest);
181
- const result = await registry.toolCall(requestId, toolId, '{}');
182
- (0, chai_1.expect)(result).to.be.an('object');
183
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
184
- if (isErrorObject(result)) {
185
- (0, chai_1.expect)(result.error).to.be.true;
186
- (0, chai_1.expect)(result.message).to.include(`Error executing tool '${toolId}': ${errorMessage}`);
187
- }
188
- });
189
- it('should handle asynchronous tool handler errors gracefully', async () => {
190
- const requestId = 'test-request-id';
191
- const toolId = 'async-error-tool';
192
- const errorMessage = 'Async tool execution failed';
193
- const mockTool = {
194
- id: toolId,
195
- name: 'Async Error Tool',
196
- description: 'A tool that returns a rejected promise',
197
- parameters: {
198
- type: 'object',
199
- properties: {}
200
- },
201
- handler: () => Promise.reject(new Error(errorMessage))
202
- };
203
- const mockRequest = {
204
- messages: [],
205
- tools: [mockTool]
206
- };
207
- registry.setRequest(requestId, mockRequest);
208
- const result = await registry.toolCall(requestId, toolId, '{}');
209
- (0, chai_1.expect)(result).to.be.an('object');
210
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
211
- if (isErrorObject(result)) {
212
- (0, chai_1.expect)(result.error).to.be.true;
213
- (0, chai_1.expect)(result.message).to.include(`Error executing tool '${toolId}': ${errorMessage}`);
214
- }
215
- });
216
- it('should handle tool handler with no tools array', async () => {
217
- const requestId = 'test-request-id';
218
- const mockRequest = {
219
- messages: []
220
- // No tools property
221
- };
222
- registry.setRequest(requestId, mockRequest);
223
- const result = await registry.toolCall(requestId, 'any-tool', '{}');
224
- (0, chai_1.expect)(result).to.be.an('object');
225
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
226
- if (isErrorObject(result)) {
227
- (0, chai_1.expect)(result.error).to.be.true;
228
- (0, chai_1.expect)(result.message).to.include('Tool \'any-tool\' not found in the available tools for this request');
229
- }
230
- });
231
- it('should handle tool handler with empty tools array', async () => {
232
- const requestId = 'test-request-id';
233
- const mockRequest = {
234
- messages: [],
235
- tools: []
236
- };
237
- registry.setRequest(requestId, mockRequest);
238
- const result = await registry.toolCall(requestId, 'any-tool', '{}');
239
- (0, chai_1.expect)(result).to.be.an('object');
240
- (0, chai_1.expect)(isErrorObject(result)).to.be.true;
241
- if (isErrorObject(result)) {
242
- (0, chai_1.expect)(result.error).to.be.true;
243
- (0, chai_1.expect)(result.message).to.include('Tool \'any-tool\' not found in the available tools for this request');
244
- }
245
- });
246
- });
247
- });
248
- //# sourceMappingURL=frontend-language-model-registry.spec.js.map