@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.
- package/README.md +1 -0
- package/data/prompttemplate.tmLanguage.json +3 -0
- package/package.json +9 -9
- package/src/browser/frontend-language-model-alias-registry.ts +11 -11
- package/src/common/agent-service.ts +6 -6
- package/src/common/prompt-service.ts +6 -2
- package/lib/browser/agent-completion-notification-service.d.ts +0 -69
- package/lib/browser/agent-completion-notification-service.d.ts.map +0 -1
- package/lib/browser/agent-completion-notification-service.js +0 -187
- package/lib/browser/agent-completion-notification-service.js.map +0 -1
- package/lib/browser/ai-activation-service.d.ts +0 -31
- package/lib/browser/ai-activation-service.d.ts.map +0 -1
- package/lib/browser/ai-activation-service.js +0 -56
- package/lib/browser/ai-activation-service.js.map +0 -1
- package/lib/browser/ai-command-handler-factory.d.ts +0 -4
- package/lib/browser/ai-command-handler-factory.d.ts.map +0 -1
- package/lib/browser/ai-command-handler-factory.js +0 -20
- package/lib/browser/ai-command-handler-factory.js.map +0 -1
- package/lib/browser/ai-core-command-contribution.d.ts +0 -8
- package/lib/browser/ai-core-command-contribution.d.ts.map +0 -1
- package/lib/browser/ai-core-command-contribution.js +0 -44
- package/lib/browser/ai-core-command-contribution.js.map +0 -1
- package/lib/browser/ai-core-frontend-application-contribution.d.ts +0 -10
- package/lib/browser/ai-core-frontend-application-contribution.d.ts.map +0 -1
- package/lib/browser/ai-core-frontend-application-contribution.js +0 -46
- package/lib/browser/ai-core-frontend-application-contribution.js.map +0 -1
- package/lib/browser/ai-core-frontend-module.d.ts +0 -4
- package/lib/browser/ai-core-frontend-module.d.ts.map +0 -1
- package/lib/browser/ai-core-frontend-module.js +0 -137
- package/lib/browser/ai-core-frontend-module.js.map +0 -1
- package/lib/browser/ai-settings-service.d.ts +0 -16
- package/lib/browser/ai-settings-service.d.ts.map +0 -1
- package/lib/browser/ai-settings-service.js +0 -78
- package/lib/browser/ai-settings-service.js.map +0 -1
- package/lib/browser/ai-variable-uri-label-provider.d.ts +0 -17
- package/lib/browser/ai-variable-uri-label-provider.d.ts.map +0 -1
- package/lib/browser/ai-variable-uri-label-provider.js +0 -85
- package/lib/browser/ai-variable-uri-label-provider.js.map +0 -1
- package/lib/browser/ai-view-contribution.d.ts +0 -14
- package/lib/browser/ai-view-contribution.d.ts.map +0 -1
- package/lib/browser/ai-view-contribution.js +0 -87
- package/lib/browser/ai-view-contribution.js.map +0 -1
- package/lib/browser/file-variable-contribution.d.ts +0 -23
- package/lib/browser/file-variable-contribution.d.ts.map +0 -1
- package/lib/browser/file-variable-contribution.js +0 -114
- package/lib/browser/file-variable-contribution.js.map +0 -1
- package/lib/browser/frontend-language-model-alias-registry.d.ts +0 -31
- package/lib/browser/frontend-language-model-alias-registry.d.ts.map +0 -1
- package/lib/browser/frontend-language-model-alias-registry.js +0 -170
- package/lib/browser/frontend-language-model-alias-registry.js.map +0 -1
- package/lib/browser/frontend-language-model-registry.d.ts +0 -49
- package/lib/browser/frontend-language-model-registry.d.ts.map +0 -1
- package/lib/browser/frontend-language-model-registry.js +0 -387
- package/lib/browser/frontend-language-model-registry.js.map +0 -1
- package/lib/browser/frontend-language-model-registry.spec.d.ts +0 -2
- package/lib/browser/frontend-language-model-registry.spec.d.ts.map +0 -1
- package/lib/browser/frontend-language-model-registry.spec.js +0 -248
- package/lib/browser/frontend-language-model-registry.spec.js.map +0 -1
- package/lib/browser/frontend-language-model-service.d.ts +0 -10
- package/lib/browser/frontend-language-model-service.d.ts.map +0 -1
- package/lib/browser/frontend-language-model-service.js +0 -66
- package/lib/browser/frontend-language-model-service.js.map +0 -1
- package/lib/browser/frontend-prompt-customization-service.d.ts +0 -271
- package/lib/browser/frontend-prompt-customization-service.d.ts.map +0 -1
- package/lib/browser/frontend-prompt-customization-service.js +0 -869
- package/lib/browser/frontend-prompt-customization-service.js.map +0 -1
- package/lib/browser/frontend-prompt-customization-service.spec.d.ts +0 -2
- package/lib/browser/frontend-prompt-customization-service.spec.d.ts.map +0 -1
- package/lib/browser/frontend-prompt-customization-service.spec.js +0 -127
- package/lib/browser/frontend-prompt-customization-service.spec.js.map +0 -1
- package/lib/browser/frontend-variable-service.d.ts +0 -61
- package/lib/browser/frontend-variable-service.d.ts.map +0 -1
- package/lib/browser/frontend-variable-service.js +0 -165
- package/lib/browser/frontend-variable-service.js.map +0 -1
- package/lib/browser/index.d.ts +0 -20
- package/lib/browser/index.d.ts.map +0 -1
- package/lib/browser/index.js +0 -38
- package/lib/browser/index.js.map +0 -1
- package/lib/browser/open-editors-variable-contribution.d.ts +0 -17
- package/lib/browser/open-editors-variable-contribution.d.ts.map +0 -1
- package/lib/browser/open-editors-variable-contribution.js +0 -84
- package/lib/browser/open-editors-variable-contribution.js.map +0 -1
- package/lib/browser/os-notification-service.d.ts +0 -96
- package/lib/browser/os-notification-service.d.ts.map +0 -1
- package/lib/browser/os-notification-service.js +0 -222
- package/lib/browser/os-notification-service.js.map +0 -1
- package/lib/browser/prompttemplate-contribution.d.ts +0 -29
- package/lib/browser/prompttemplate-contribution.d.ts.map +0 -1
- package/lib/browser/prompttemplate-contribution.js +0 -243
- package/lib/browser/prompttemplate-contribution.js.map +0 -1
- package/lib/browser/prompttemplate-parser.d.ts +0 -36
- package/lib/browser/prompttemplate-parser.d.ts.map +0 -1
- package/lib/browser/prompttemplate-parser.js +0 -94
- package/lib/browser/prompttemplate-parser.js.map +0 -1
- package/lib/browser/theia-variable-contribution.d.ts +0 -26
- package/lib/browser/theia-variable-contribution.d.ts.map +0 -1
- package/lib/browser/theia-variable-contribution.js +0 -146
- package/lib/browser/theia-variable-contribution.js.map +0 -1
- package/lib/browser/token-usage-frontend-service-impl.d.ts +0 -25
- package/lib/browser/token-usage-frontend-service-impl.d.ts.map +0 -1
- package/lib/browser/token-usage-frontend-service-impl.js +0 -138
- package/lib/browser/token-usage-frontend-service-impl.js.map +0 -1
- package/lib/browser/token-usage-frontend-service.d.ts +0 -33
- package/lib/browser/token-usage-frontend-service.d.ts.map +0 -1
- package/lib/browser/token-usage-frontend-service.js +0 -23
- package/lib/browser/token-usage-frontend-service.js.map +0 -1
- package/lib/browser/window-blink-service.d.ts +0 -41
- package/lib/browser/window-blink-service.d.ts.map +0 -1
- package/lib/browser/window-blink-service.js +0 -174
- package/lib/browser/window-blink-service.js.map +0 -1
- package/lib/common/agent-preferences.d.ts +0 -4
- package/lib/common/agent-preferences.d.ts.map +0 -1
- package/lib/common/agent-preferences.js +0 -84
- package/lib/common/agent-preferences.js.map +0 -1
- package/lib/common/agent-service.d.ts +0 -66
- package/lib/common/agent-service.d.ts.map +0 -1
- package/lib/common/agent-service.js +0 -104
- package/lib/common/agent-service.js.map +0 -1
- package/lib/common/agent.d.ts +0 -72
- package/lib/common/agent.d.ts.map +0 -1
- package/lib/common/agent.js +0 -20
- package/lib/common/agent.js.map +0 -1
- package/lib/common/agents-variable-contribution.d.ts +0 -19
- package/lib/common/agents-variable-contribution.d.ts.map +0 -1
- package/lib/common/agents-variable-contribution.js +0 -57
- package/lib/common/agents-variable-contribution.js.map +0 -1
- package/lib/common/ai-core-preferences.d.ts +0 -48
- package/lib/common/ai-core-preferences.d.ts.map +0 -1
- package/lib/common/ai-core-preferences.js +0 -204
- package/lib/common/ai-core-preferences.js.map +0 -1
- package/lib/common/ai-variable-resource.d.ts +0 -18
- package/lib/common/ai-variable-resource.d.ts.map +0 -1
- package/lib/common/ai-variable-resource.js +0 -103
- package/lib/common/ai-variable-resource.js.map +0 -1
- package/lib/common/configurable-in-memory-resources.d.ts +0 -47
- package/lib/common/configurable-in-memory-resources.d.ts.map +0 -1
- package/lib/common/configurable-in-memory-resources.js +0 -154
- package/lib/common/configurable-in-memory-resources.js.map +0 -1
- package/lib/common/index.d.ts +0 -22
- package/lib/common/index.d.ts.map +0 -1
- package/lib/common/index.js +0 -40
- package/lib/common/index.js.map +0 -1
- package/lib/common/language-model-alias.d.ts +0 -58
- package/lib/common/language-model-alias.d.ts.map +0 -1
- package/lib/common/language-model-alias.js +0 -20
- package/lib/common/language-model-alias.js.map +0 -1
- package/lib/common/language-model-delegate.d.ts +0 -25
- package/lib/common/language-model-delegate.d.ts.map +0 -1
- package/lib/common/language-model-delegate.js +0 -26
- package/lib/common/language-model-delegate.js.map +0 -1
- package/lib/common/language-model-interaction-model.d.ts +0 -74
- package/lib/common/language-model-interaction-model.d.ts.map +0 -1
- package/lib/common/language-model-interaction-model.js +0 -3
- package/lib/common/language-model-interaction-model.js.map +0 -1
- package/lib/common/language-model-service.d.ts +0 -38
- package/lib/common/language-model-service.d.ts.map +0 -1
- package/lib/common/language-model-service.js +0 -128
- package/lib/common/language-model-service.js.map +0 -1
- package/lib/common/language-model-util.d.ts +0 -17
- package/lib/common/language-model-util.d.ts.map +0 -1
- package/lib/common/language-model-util.js +0 -82
- package/lib/common/language-model-util.js.map +0 -1
- package/lib/common/language-model.d.ts +0 -285
- package/lib/common/language-model.d.ts.map +0 -1
- package/lib/common/language-model.js +0 -248
- package/lib/common/language-model.js.map +0 -1
- package/lib/common/language-model.spec.d.ts +0 -2
- package/lib/common/language-model.spec.d.ts.map +0 -1
- package/lib/common/language-model.spec.js +0 -62
- package/lib/common/language-model.spec.js.map +0 -1
- package/lib/common/notification-types.d.ts +0 -7
- package/lib/common/notification-types.d.ts.map +0 -1
- package/lib/common/notification-types.js +0 -29
- package/lib/common/notification-types.js.map +0 -1
- package/lib/common/prompt-service-util.d.ts +0 -8
- package/lib/common/prompt-service-util.d.ts.map +0 -1
- package/lib/common/prompt-service-util.js +0 -34
- package/lib/common/prompt-service-util.js.map +0 -1
- package/lib/common/prompt-service.d.ts +0 -466
- package/lib/common/prompt-service.d.ts.map +0 -1
- package/lib/common/prompt-service.js +0 -653
- package/lib/common/prompt-service.js.map +0 -1
- package/lib/common/prompt-service.spec.d.ts +0 -2
- package/lib/common/prompt-service.spec.d.ts.map +0 -1
- package/lib/common/prompt-service.spec.js +0 -431
- package/lib/common/prompt-service.spec.js.map +0 -1
- package/lib/common/prompt-text.d.ts +0 -8
- package/lib/common/prompt-text.d.ts.map +0 -1
- package/lib/common/prompt-text.js +0 -27
- package/lib/common/prompt-text.js.map +0 -1
- package/lib/common/prompt-variable-contribution.d.ts +0 -18
- package/lib/common/prompt-variable-contribution.d.ts.map +0 -1
- package/lib/common/prompt-variable-contribution.js +0 -207
- package/lib/common/prompt-variable-contribution.js.map +0 -1
- package/lib/common/prompt-variable-contribution.spec.d.ts +0 -2
- package/lib/common/prompt-variable-contribution.spec.d.ts.map +0 -1
- package/lib/common/prompt-variable-contribution.spec.js +0 -163
- package/lib/common/prompt-variable-contribution.spec.js.map +0 -1
- package/lib/common/protocol.d.ts +0 -25
- package/lib/common/protocol.d.ts.map +0 -1
- package/lib/common/protocol.js +0 -22
- package/lib/common/protocol.js.map +0 -1
- package/lib/common/settings-service.d.ts +0 -29
- package/lib/common/settings-service.d.ts.map +0 -1
- package/lib/common/settings-service.js +0 -5
- package/lib/common/settings-service.js.map +0 -1
- package/lib/common/today-variable-contribution.d.ts +0 -17
- package/lib/common/today-variable-contribution.d.ts.map +0 -1
- package/lib/common/today-variable-contribution.js +0 -68
- package/lib/common/today-variable-contribution.js.map +0 -1
- package/lib/common/token-usage-service.d.ts +0 -43
- package/lib/common/token-usage-service.d.ts.map +0 -1
- package/lib/common/token-usage-service.js +0 -20
- package/lib/common/token-usage-service.js.map +0 -1
- package/lib/common/tool-invocation-registry.d.ts +0 -66
- package/lib/common/tool-invocation-registry.d.ts.map +0 -1
- package/lib/common/tool-invocation-registry.js +0 -101
- package/lib/common/tool-invocation-registry.js.map +0 -1
- package/lib/common/variable-service.d.ts +0 -172
- package/lib/common/variable-service.d.ts.map +0 -1
- package/lib/common/variable-service.js +0 -287
- package/lib/common/variable-service.js.map +0 -1
- package/lib/common/variable-service.spec.d.ts +0 -2
- package/lib/common/variable-service.spec.d.ts.map +0 -1
- package/lib/common/variable-service.spec.js +0 -237
- package/lib/common/variable-service.spec.js.map +0 -1
- package/lib/node/ai-core-backend-module.d.ts +0 -4
- package/lib/node/ai-core-backend-module.d.ts.map +0 -1
- package/lib/node/ai-core-backend-module.js +0 -65
- package/lib/node/ai-core-backend-module.js.map +0 -1
- package/lib/node/backend-language-model-registry.d.ts +0 -13
- package/lib/node/backend-language-model-registry.d.ts.map +0 -1
- package/lib/node/backend-language-model-registry.js +0 -68
- package/lib/node/backend-language-model-registry.js.map +0 -1
- package/lib/node/language-model-frontend-delegate.d.ts +0 -18
- package/lib/node/language-model-frontend-delegate.d.ts.map +0 -1
- package/lib/node/language-model-frontend-delegate.js +0 -109
- package/lib/node/language-model-frontend-delegate.js.map +0 -1
- package/lib/node/token-usage-service-impl.d.ts +0 -23
- package/lib/node/token-usage-service-impl.d.ts.map +0 -1
- package/lib/node/token-usage-service-impl.js +0 -78
- package/lib/node/token-usage-service-impl.js.map +0 -1
- package/lib/node/tool-request-parameters.spec.d.ts +0 -2
- package/lib/node/tool-request-parameters.spec.d.ts.map +0 -1
- package/lib/node/tool-request-parameters.spec.js +0 -116
- 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 +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
|