@forestadmin/ai-proxy 1.10.1 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-client.d.ts +20 -0
- package/dist/ai-client.js +58 -0
- package/dist/create-base-chat-model.d.ts +4 -0
- package/dist/create-base-chat-model.js +19 -0
- package/dist/forest-integration-client.d.ts +1 -0
- package/dist/forest-integration-client.js +5 -5
- package/dist/get-ai-configuration.d.ts +4 -0
- package/dist/get-ai-configuration.js +18 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +10 -2
- package/dist/integrations/kolar/tools.d.ts +1 -1
- package/dist/integrations/kolar/tools.js +3 -2
- package/dist/integrations/snowflake/tools.d.ts +1 -1
- package/dist/integrations/snowflake/tools.js +3 -2
- package/dist/integrations/zendesk/tools.d.ts +1 -1
- package/dist/integrations/zendesk/tools.js +3 -2
- package/dist/mcp-client.d.ts +5 -2
- package/dist/mcp-client.js +10 -3
- package/dist/mcp-server-remote-tool.d.ts +1 -0
- package/dist/mcp-server-remote-tool.js +1 -1
- package/dist/remote-tool.d.ts +2 -0
- package/dist/remote-tool.js +2 -1
- package/dist/server-remote-tool.d.ts +1 -0
- package/dist/server-remote-tool.js +1 -1
- package/dist/supported-models.js +2 -1
- package/dist/validate-ai-configurations.d.ts +3 -0
- package/dist/validate-ai-configurations.js +16 -0
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AiConfiguration } from './provider';
|
|
2
|
+
import type RemoteTool from './remote-tool';
|
|
3
|
+
import type { ToolConfig } from './tool-provider-factory';
|
|
4
|
+
import type { Logger } from '@forestadmin/datasource-toolkit';
|
|
5
|
+
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
6
|
+
export declare class AiClient {
|
|
7
|
+
private readonly aiConfigurations;
|
|
8
|
+
private readonly logger?;
|
|
9
|
+
private readonly modelCache;
|
|
10
|
+
private toolProviders;
|
|
11
|
+
constructor(params?: {
|
|
12
|
+
aiConfigurations?: AiConfiguration[];
|
|
13
|
+
logger?: Logger;
|
|
14
|
+
});
|
|
15
|
+
getModel(aiName?: string): BaseChatModel;
|
|
16
|
+
loadRemoteTools(configs: Record<string, ToolConfig>): Promise<RemoteTool[]>;
|
|
17
|
+
closeConnections(): Promise<void>;
|
|
18
|
+
private disposeToolProviders;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ai-client.d.ts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AiClient = void 0;
|
|
7
|
+
const create_base_chat_model_1 = require("./create-base-chat-model");
|
|
8
|
+
const errors_1 = require("./errors");
|
|
9
|
+
const get_ai_configuration_1 = __importDefault(require("./get-ai-configuration"));
|
|
10
|
+
const tool_provider_factory_1 = require("./tool-provider-factory");
|
|
11
|
+
const validate_ai_configurations_1 = __importDefault(require("./validate-ai-configurations"));
|
|
12
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
13
|
+
class AiClient {
|
|
14
|
+
constructor(params) {
|
|
15
|
+
this.modelCache = new Map();
|
|
16
|
+
this.toolProviders = [];
|
|
17
|
+
this.aiConfigurations = params?.aiConfigurations ?? [];
|
|
18
|
+
this.logger = params?.logger;
|
|
19
|
+
(0, validate_ai_configurations_1.default)(this.aiConfigurations);
|
|
20
|
+
}
|
|
21
|
+
getModel(aiName) {
|
|
22
|
+
const config = (0, get_ai_configuration_1.default)(this.aiConfigurations, aiName, this.logger);
|
|
23
|
+
if (!config)
|
|
24
|
+
throw new errors_1.AINotConfiguredError();
|
|
25
|
+
const cached = this.modelCache.get(config.name);
|
|
26
|
+
if (cached)
|
|
27
|
+
return cached;
|
|
28
|
+
const model = (0, create_base_chat_model_1.createBaseChatModel)(config);
|
|
29
|
+
this.modelCache.set(config.name, model);
|
|
30
|
+
return model;
|
|
31
|
+
}
|
|
32
|
+
async loadRemoteTools(configs) {
|
|
33
|
+
await this.disposeToolProviders('Error closing previous remote tool connection');
|
|
34
|
+
const providers = (0, tool_provider_factory_1.createToolProviders)(configs, this.logger);
|
|
35
|
+
const toolsByProvider = await Promise.all(providers.map(p => p.loadTools()));
|
|
36
|
+
this.toolProviders = providers;
|
|
37
|
+
return toolsByProvider.flat();
|
|
38
|
+
}
|
|
39
|
+
async closeConnections() {
|
|
40
|
+
await this.disposeToolProviders('Error during remote tool connection cleanup');
|
|
41
|
+
}
|
|
42
|
+
async disposeToolProviders(errorMessage) {
|
|
43
|
+
if (this.toolProviders.length === 0)
|
|
44
|
+
return;
|
|
45
|
+
const providers = this.toolProviders;
|
|
46
|
+
this.toolProviders = [];
|
|
47
|
+
const results = await Promise.allSettled(providers.map(p => p.dispose()));
|
|
48
|
+
results.forEach(result => {
|
|
49
|
+
if (result.status === 'rejected') {
|
|
50
|
+
const { reason } = result;
|
|
51
|
+
const err = reason instanceof Error ? reason : new Error(String(reason));
|
|
52
|
+
this.logger?.('Error', errorMessage, err);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.AiClient = AiClient;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FpLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFPQSxxRUFBK0Q7QUFDL0QscUNBQWdEO0FBQ2hELGtGQUF3RDtBQUN4RCxtRUFBOEQ7QUFDOUQsOEZBQW9FO0FBRXBFLHdEQUF3RDtBQUN4RCxNQUFhLFFBQVE7SUFNbkIsWUFBWSxNQUFrRTtRQUg3RCxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUM7UUFDdkQsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBR3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLEVBQUUsZ0JBQWdCLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLE1BQU0sQ0FBQztRQUU3QixJQUFBLG9DQUF3QixFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxRQUFRLENBQUMsTUFBZTtRQUN0QixNQUFNLE1BQU0sR0FBRyxJQUFBLDhCQUFrQixFQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxNQUFNO1lBQUUsTUFBTSxJQUFJLDZCQUFvQixFQUFFLENBQUM7UUFFOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELElBQUksTUFBTTtZQUFFLE9BQU8sTUFBTSxDQUFDO1FBRTFCLE1BQU0sS0FBSyxHQUFHLElBQUEsNENBQW1CLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZSxDQUFDLE9BQW1DO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLCtDQUErQyxDQUFDLENBQUM7UUFFakYsTUFBTSxTQUFTLEdBQUcsSUFBQSwyQ0FBbUIsRUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sZUFBZSxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUUvQixPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CLENBQUMsWUFBb0I7UUFDckQsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTztRQUU1QyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUxRSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3ZCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQztnQkFDMUIsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDekUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBeERELDRCQXdEQyJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AiConfiguration } from './provider';
|
|
2
|
+
import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
3
|
+
export declare function createBaseChatModel(config: AiConfiguration): BaseChatModel;
|
|
4
|
+
//# sourceMappingURL=create-base-chat-model.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBaseChatModel = createBaseChatModel;
|
|
4
|
+
const anthropic_1 = require("@langchain/anthropic");
|
|
5
|
+
const openai_1 = require("@langchain/openai");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
// eslint-disable-next-line import/prefer-default-export
|
|
8
|
+
function createBaseChatModel(config) {
|
|
9
|
+
if (config.provider === 'openai') {
|
|
10
|
+
const { provider, name, ...opts } = config;
|
|
11
|
+
return new openai_1.ChatOpenAI({ maxRetries: 0, ...opts });
|
|
12
|
+
}
|
|
13
|
+
if (config.provider === 'anthropic') {
|
|
14
|
+
const { provider, name, model, ...opts } = config;
|
|
15
|
+
return new anthropic_1.ChatAnthropic({ maxRetries: 0, ...opts, model });
|
|
16
|
+
}
|
|
17
|
+
throw new errors_1.AIBadRequestError(`Unsupported AI provider '${config.provider}'.`);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWJhc2UtY2hhdC1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGUtYmFzZS1jaGF0LW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBU0Esa0RBZ0JDO0FBdEJELG9EQUFxRDtBQUNyRCw4Q0FBK0M7QUFFL0MscUNBQTZDO0FBRTdDLHdEQUF3RDtBQUN4RCxTQUFnQixtQkFBbUIsQ0FBQyxNQUF1QjtJQUN6RCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDakMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUM7UUFFM0MsT0FBTyxJQUFJLG1CQUFVLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUVsRCxPQUFPLElBQUkseUJBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsTUFBTSxJQUFJLDBCQUFpQixDQUN6Qiw0QkFBNkIsTUFBK0IsQ0FBQyxRQUFRLElBQUksQ0FDMUUsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -8,6 +8,7 @@ export type CustomConfig = ZendeskConfig | KolarConfig | SnowflakeConfig;
|
|
|
8
8
|
export declare const FOREST_INTEGRATION_NAMES: readonly ["Zendesk", "Kolar", "Snowflake"];
|
|
9
9
|
export type ForestIntegrationName = (typeof FOREST_INTEGRATION_NAMES)[number];
|
|
10
10
|
export interface ForestIntegrationConfig {
|
|
11
|
+
id?: string;
|
|
11
12
|
integrationName: ForestIntegrationName;
|
|
12
13
|
config: CustomConfig;
|
|
13
14
|
isForestConnector: true;
|
|
@@ -23,16 +23,16 @@ class ForestIntegrationClient {
|
|
|
23
23
|
}
|
|
24
24
|
async loadTools() {
|
|
25
25
|
const tools = [];
|
|
26
|
-
this.configs.forEach(({ integrationName, config }) => {
|
|
26
|
+
this.configs.forEach(({ id: mcpServerId, integrationName, config }) => {
|
|
27
27
|
switch (integrationName) {
|
|
28
28
|
case 'Zendesk':
|
|
29
|
-
tools.push(...(0, tools_3.default)(config));
|
|
29
|
+
tools.push(...(0, tools_3.default)(config, mcpServerId));
|
|
30
30
|
break;
|
|
31
31
|
case 'Kolar':
|
|
32
|
-
tools.push(...(0, tools_1.default)(config));
|
|
32
|
+
tools.push(...(0, tools_1.default)(config, mcpServerId));
|
|
33
33
|
break;
|
|
34
34
|
case 'Snowflake':
|
|
35
|
-
tools.push(...(0, tools_2.default)(config));
|
|
35
|
+
tools.push(...(0, tools_2.default)(config, mcpServerId));
|
|
36
36
|
break;
|
|
37
37
|
default:
|
|
38
38
|
this.logger?.('Warn', `Unsupported integration: ${integrationName}`);
|
|
@@ -60,4 +60,4 @@ class ForestIntegrationClient {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
exports.default = ForestIntegrationClient;
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWludGVncmF0aW9uLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3Jlc3QtaW50ZWdyYXRpb24tY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXVCQSw4REFNQztBQXpCRCxxQ0FBNkM7QUFDN0MsdUVBQTZFO0FBQzdFLHNEQUFpRTtBQUNqRSwyRUFBeUY7QUFDekYsMERBQXlFO0FBQ3pFLHlFQUFtRjtBQUNuRix3REFBcUU7QUFHeEQsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFVbkYsU0FBZ0IseUJBQXlCLENBQ3ZDLE1BQXlEO0lBRXpELE9BQU8sQ0FDTCxtQkFBbUIsSUFBSSxNQUFNLElBQUssTUFBa0MsQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQ2hHLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBcUIsdUJBQXVCO0lBSTFDLFlBQVksT0FBa0MsRUFBRSxNQUFlO1FBQzdELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sS0FBSyxHQUFpQixFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDcEUsUUFBUSxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxTQUFTO29CQUNaLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLGVBQWUsRUFBQyxNQUF1QixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JFLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLGVBQWEsRUFBQyxNQUFxQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQ2pFLE1BQU07Z0JBQ1IsS0FBSyxXQUFXO29CQUNkLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLGVBQWlCLEVBQUMsTUFBeUIsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO29CQUN6RSxNQUFNO2dCQUNSO29CQUNFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsNEJBQTRCLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDekUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWU7UUFDbkIsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUMvQyxRQUFRLGVBQWUsRUFBRSxDQUFDO2dCQUN4QixLQUFLLFNBQVM7b0JBQ1osT0FBTyxJQUFBLDZCQUFxQixFQUFDLE1BQXVCLENBQUMsQ0FBQztnQkFDeEQsS0FBSyxPQUFPO29CQUNWLE9BQU8sSUFBQSwyQkFBbUIsRUFBQyxNQUFxQixDQUFDLENBQUM7Z0JBQ3BELEtBQUssV0FBVztvQkFDZCxPQUFPLElBQUEsK0JBQXVCLEVBQUMsTUFBeUIsQ0FBQyxDQUFDO2dCQUM1RDtvQkFDRSxNQUFNLElBQUksMEJBQWlCLENBQUMsNEJBQTRCLGVBQWUsRUFBRSxDQUFDLENBQUM7WUFDL0UsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLHdEQUF3RDtJQUMxRCxDQUFDO0NBQ0Y7QUFyREQsMENBcURDIn0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AiConfiguration } from './provider';
|
|
2
|
+
import type { Logger } from '@forestadmin/datasource-toolkit';
|
|
3
|
+
export default function getAiConfiguration(aiConfigurations: AiConfiguration[], aiName?: string, logger?: Logger): AiConfiguration | null;
|
|
4
|
+
//# sourceMappingURL=get-ai-configuration.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = getAiConfiguration;
|
|
4
|
+
function getAiConfiguration(aiConfigurations, aiName, logger) {
|
|
5
|
+
if (aiConfigurations.length === 0)
|
|
6
|
+
return null;
|
|
7
|
+
if (aiName) {
|
|
8
|
+
const config = aiConfigurations.find(c => c.name === aiName);
|
|
9
|
+
if (!config) {
|
|
10
|
+
const fallback = aiConfigurations[0];
|
|
11
|
+
logger?.('Warn', `AI configuration '${aiName}' not found. Falling back to '${fallback.name}' (provider: ${fallback.provider}, model: ${fallback.model})`);
|
|
12
|
+
return fallback;
|
|
13
|
+
}
|
|
14
|
+
return config;
|
|
15
|
+
}
|
|
16
|
+
return aiConfigurations[0];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFpLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LWFpLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxxQ0F3QkM7QUF4QkQsU0FBd0Isa0JBQWtCLENBQ3hDLGdCQUFtQyxFQUNuQyxNQUFlLEVBQ2YsTUFBZTtJQUVmLElBQUksZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUUvQyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztRQUU3RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLEVBQUUsQ0FDTixNQUFNLEVBQ04scUJBQXFCLE1BQU0saUNBQWlDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixRQUFRLENBQUMsUUFBUSxZQUFZLFFBQVEsQ0FBQyxLQUFLLEdBQUcsQ0FDeEksQ0FBQztZQUVGLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDIn0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { ToolConfig } from './tool-provider-factory';
|
|
2
2
|
import type { Logger } from '@forestadmin/datasource-toolkit';
|
|
3
3
|
export { createAiProvider } from './create-ai-provider';
|
|
4
|
+
export { createBaseChatModel } from './create-base-chat-model';
|
|
4
5
|
export { default as ProviderDispatcher } from './provider-dispatcher';
|
|
5
6
|
export { FOREST_INTEGRATION_NAMES, ForestIntegrationConfig, CustomConfig, ForestIntegrationName, } from './forest-integration-client';
|
|
6
7
|
export * from './provider-dispatcher';
|
|
8
|
+
export * from './ai-client';
|
|
7
9
|
export * from './remote-tools';
|
|
8
10
|
export { default as RemoteTool } from './remote-tool';
|
|
9
11
|
export * from './router';
|
|
@@ -13,4 +15,9 @@ export * from './errors';
|
|
|
13
15
|
export * from './tool-provider';
|
|
14
16
|
export * from './tool-provider-factory';
|
|
15
17
|
export declare function validToolConfigurationOrThrow(configs: Record<string, ToolConfig>, logger?: Logger): Promise<true>;
|
|
18
|
+
export type { BaseChatModel } from '@langchain/core/language_models/chat_models';
|
|
19
|
+
export type { BaseMessage } from '@langchain/core/messages';
|
|
20
|
+
export { HumanMessage, SystemMessage } from '@langchain/core/messages';
|
|
21
|
+
export type { StructuredToolInterface } from '@langchain/core/tools';
|
|
22
|
+
export { DynamicStructuredTool } from '@langchain/core/tools';
|
|
16
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -17,16 +17,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.RemoteTool = exports.FOREST_INTEGRATION_NAMES = exports.ProviderDispatcher = exports.createAiProvider = void 0;
|
|
20
|
+
exports.DynamicStructuredTool = exports.SystemMessage = exports.HumanMessage = exports.RemoteTool = exports.FOREST_INTEGRATION_NAMES = exports.ProviderDispatcher = exports.createBaseChatModel = exports.createAiProvider = void 0;
|
|
21
21
|
exports.validToolConfigurationOrThrow = validToolConfigurationOrThrow;
|
|
22
22
|
const tool_source_checker_1 = __importDefault(require("./tool-source-checker"));
|
|
23
23
|
var create_ai_provider_1 = require("./create-ai-provider");
|
|
24
24
|
Object.defineProperty(exports, "createAiProvider", { enumerable: true, get: function () { return create_ai_provider_1.createAiProvider; } });
|
|
25
|
+
var create_base_chat_model_1 = require("./create-base-chat-model");
|
|
26
|
+
Object.defineProperty(exports, "createBaseChatModel", { enumerable: true, get: function () { return create_base_chat_model_1.createBaseChatModel; } });
|
|
25
27
|
var provider_dispatcher_1 = require("./provider-dispatcher");
|
|
26
28
|
Object.defineProperty(exports, "ProviderDispatcher", { enumerable: true, get: function () { return __importDefault(provider_dispatcher_1).default; } });
|
|
27
29
|
var forest_integration_client_1 = require("./forest-integration-client");
|
|
28
30
|
Object.defineProperty(exports, "FOREST_INTEGRATION_NAMES", { enumerable: true, get: function () { return forest_integration_client_1.FOREST_INTEGRATION_NAMES; } });
|
|
29
31
|
__exportStar(require("./provider-dispatcher"), exports);
|
|
32
|
+
__exportStar(require("./ai-client"), exports);
|
|
30
33
|
__exportStar(require("./remote-tools"), exports);
|
|
31
34
|
var remote_tool_1 = require("./remote-tool");
|
|
32
35
|
Object.defineProperty(exports, "RemoteTool", { enumerable: true, get: function () { return __importDefault(remote_tool_1).default; } });
|
|
@@ -39,4 +42,9 @@ __exportStar(require("./tool-provider-factory"), exports);
|
|
|
39
42
|
function validToolConfigurationOrThrow(configs, logger) {
|
|
40
43
|
return tool_source_checker_1.default.check(configs, logger);
|
|
41
44
|
}
|
|
42
|
-
|
|
45
|
+
var messages_1 = require("@langchain/core/messages");
|
|
46
|
+
Object.defineProperty(exports, "HumanMessage", { enumerable: true, get: function () { return messages_1.HumanMessage; } });
|
|
47
|
+
Object.defineProperty(exports, "SystemMessage", { enumerable: true, get: function () { return messages_1.SystemMessage; } });
|
|
48
|
+
var tools_1 = require("@langchain/core/tools");
|
|
49
|
+
Object.defineProperty(exports, "DynamicStructuredTool", { enumerable: true, get: function () { return tools_1.DynamicStructuredTool; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQkEsc0VBS0M7QUE3QkQsZ0ZBQXNEO0FBRXRELDJEQUF3RDtBQUEvQyxzSEFBQSxnQkFBZ0IsT0FBQTtBQUN6QixtRUFBK0Q7QUFBdEQsNkhBQUEsbUJBQW1CLE9BQUE7QUFDNUIsNkRBQXNFO0FBQTdELDBJQUFBLE9BQU8sT0FBc0I7QUFFdEMseUVBS3FDO0FBSm5DLHFJQUFBLHdCQUF3QixPQUFBO0FBTTFCLHdEQUFzQztBQUN0Qyw4Q0FBNEI7QUFDNUIsaURBQStCO0FBQy9CLDZDQUFzRDtBQUE3QywwSEFBQSxPQUFPLE9BQWM7QUFDOUIsMkNBQXlCO0FBQ3pCLCtDQUE2QjtBQUM3Qix5REFBdUM7QUFDdkMsMkNBQXlCO0FBQ3pCLGtEQUFnQztBQUNoQywwREFBd0M7QUFFeEMsU0FBZ0IsNkJBQTZCLENBQzNDLE9BQW1DLEVBQ25DLE1BQWU7SUFFZixPQUFPLDZCQUFpQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQUlELHFEQUF1RTtBQUE5RCx3R0FBQSxZQUFZLE9BQUE7QUFBRSx5R0FBQSxhQUFhLE9BQUE7QUFFcEMsK0NBQThEO0FBQXJELDhHQUFBLHFCQUFxQixPQUFBIn0=
|
|
@@ -2,5 +2,5 @@ import type RemoteTool from '../../remote-tool';
|
|
|
2
2
|
export interface KolarConfig {
|
|
3
3
|
apiKey: string;
|
|
4
4
|
}
|
|
5
|
-
export default function getKolarTools(config: KolarConfig): RemoteTool[];
|
|
5
|
+
export default function getKolarTools(config: KolarConfig, mcpServerId?: string): RemoteTool[];
|
|
6
6
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -10,7 +10,7 @@ const get_screening_result_1 = __importDefault(require("./tools/get-screening-re
|
|
|
10
10
|
const screen_transaction_1 = __importDefault(require("./tools/screen-transaction"));
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
12
|
const server_remote_tool_1 = __importDefault(require("../../server-remote-tool"));
|
|
13
|
-
function getKolarTools(config) {
|
|
13
|
+
function getKolarTools(config, mcpServerId) {
|
|
14
14
|
const { baseUrl, headers } = (0, utils_1.getKolarConfig)(config);
|
|
15
15
|
return [
|
|
16
16
|
(0, create_merchant_application_1.default)(headers, baseUrl),
|
|
@@ -19,7 +19,8 @@ function getKolarTools(config) {
|
|
|
19
19
|
(0, get_screening_result_1.default)(headers, baseUrl),
|
|
20
20
|
].map(tool => new server_remote_tool_1.default({
|
|
21
21
|
sourceId: 'kolar',
|
|
22
|
+
mcpServerId,
|
|
22
23
|
tool,
|
|
23
24
|
}));
|
|
24
25
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL2tvbGFyL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsZ0NBZ0JDO0FBM0JELHNHQUFnRjtBQUNoRiw4R0FBNkY7QUFDN0Ysd0ZBQXdFO0FBQ3hFLG9GQUFxRTtBQUNyRSxtQ0FBeUM7QUFDekMsa0ZBQXdEO0FBTXhELFNBQXdCLGFBQWEsQ0FBQyxNQUFtQixFQUFFLFdBQW9CO0lBQzdFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBELE9BQU87UUFDTCxJQUFBLHFDQUE2QixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDL0MsSUFBQSx5Q0FBc0MsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3hELElBQUEsNEJBQTJCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFBLDhCQUE0QixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7S0FDL0MsQ0FBQyxHQUFHLENBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FDTCxJQUFJLDRCQUFnQixDQUFDO1FBQ25CLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFdBQVc7UUFDWCxJQUFJO0tBQ0wsQ0FBQyxDQUNMLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -7,5 +7,5 @@ export interface SnowflakeConfig {
|
|
|
7
7
|
defaultSchema?: string;
|
|
8
8
|
defaultRole?: string;
|
|
9
9
|
}
|
|
10
|
-
export default function getSnowflakeTools(config: SnowflakeConfig): RemoteTool[];
|
|
10
|
+
export default function getSnowflakeTools(config: SnowflakeConfig, mcpServerId?: string): RemoteTool[];
|
|
11
11
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -9,7 +9,7 @@ const cortex_analyst_1 = __importDefault(require("./tools/cortex-analyst"));
|
|
|
9
9
|
const cortex_search_1 = __importDefault(require("./tools/cortex-search"));
|
|
10
10
|
const execute_query_1 = __importDefault(require("./tools/execute-query"));
|
|
11
11
|
const utils_1 = require("./utils");
|
|
12
|
-
function getSnowflakeTools(config) {
|
|
12
|
+
function getSnowflakeTools(config, mcpServerId) {
|
|
13
13
|
const headers = (0, utils_1.getSnowflakeAuthHeaders)(config);
|
|
14
14
|
const baseUrl = (0, utils_1.getSnowflakeBaseUrl)(config.accountIdentifier);
|
|
15
15
|
return [
|
|
@@ -18,7 +18,8 @@ function getSnowflakeTools(config) {
|
|
|
18
18
|
(0, execute_query_1.default)(headers, baseUrl, config),
|
|
19
19
|
].map(tool => new server_remote_tool_1.default({
|
|
20
20
|
sourceId: 'snowflake',
|
|
21
|
+
mcpServerId,
|
|
21
22
|
tool,
|
|
22
23
|
}));
|
|
23
24
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL3Nub3dmbGFrZS90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSxvQ0FtQkM7QUFsQ0Qsa0ZBQXdEO0FBQ3hELDRFQUE2RDtBQUM3RCwwRUFBMkQ7QUFDM0QsMEVBQTJEO0FBQzNELG1DQUF1RTtBQVd2RSxTQUF3QixpQkFBaUIsQ0FDdkMsTUFBdUIsRUFDdkIsV0FBb0I7SUFFcEIsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBdUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFBLDJCQUFtQixFQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRTlELE9BQU87UUFDTCxJQUFBLHVCQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDeEMsSUFBQSx3QkFBdUIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3pDLElBQUEsdUJBQXNCLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7S0FDakQsQ0FBQyxHQUFHLENBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FDTCxJQUFJLDRCQUFnQixDQUFDO1FBQ25CLFFBQVEsRUFBRSxXQUFXO1FBQ3JCLFdBQVc7UUFDWCxJQUFJO0tBQ0wsQ0FBQyxDQUNMLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -4,5 +4,5 @@ export interface ZendeskConfig {
|
|
|
4
4
|
email: string;
|
|
5
5
|
apiToken: string;
|
|
6
6
|
}
|
|
7
|
-
export default function getZendeskTools(config: ZendeskConfig): RemoteTool[];
|
|
7
|
+
export default function getZendeskTools(config: ZendeskConfig, mcpServerId?: string): RemoteTool[];
|
|
8
8
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -12,7 +12,7 @@ const get_tickets_1 = __importDefault(require("./tools/get-tickets"));
|
|
|
12
12
|
const update_ticket_1 = __importDefault(require("./tools/update-ticket"));
|
|
13
13
|
const utils_1 = require("./utils");
|
|
14
14
|
const server_remote_tool_1 = __importDefault(require("../../server-remote-tool"));
|
|
15
|
-
function getZendeskTools(config) {
|
|
15
|
+
function getZendeskTools(config, mcpServerId) {
|
|
16
16
|
const { baseUrl, headers } = (0, utils_1.getZendeskConfig)(config);
|
|
17
17
|
return [
|
|
18
18
|
(0, get_tickets_1.default)(headers, baseUrl),
|
|
@@ -23,7 +23,8 @@ function getZendeskTools(config) {
|
|
|
23
23
|
(0, update_ticket_1.default)(headers, baseUrl),
|
|
24
24
|
].map(tool => new server_remote_tool_1.default({
|
|
25
25
|
sourceId: 'zendesk',
|
|
26
|
+
mcpServerId,
|
|
26
27
|
tool,
|
|
27
28
|
}));
|
|
28
29
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL3plbmRlc2svdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsa0NBa0JDO0FBakNELDBFQUEyRDtBQUMzRCwwRkFBMEU7QUFDMUUsb0VBQXFEO0FBQ3JELHNGQUFzRTtBQUN0RSxzRUFBdUQ7QUFDdkQsMEVBQTJEO0FBQzNELG1DQUEyQztBQUMzQyxrRkFBd0Q7QUFReEQsU0FBd0IsZUFBZSxDQUFDLE1BQXFCLEVBQUUsV0FBb0I7SUFDakYsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFBLHdCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTCxJQUFBLHFCQUFvQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDdEMsSUFBQSxvQkFBbUIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3JDLElBQUEsNkJBQTJCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFBLHVCQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDeEMsSUFBQSwrQkFBNkIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQy9DLElBQUEsdUJBQXNCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztLQUN6QyxDQUFDLEdBQUcsQ0FDSCxJQUFJLENBQUMsRUFBRSxDQUNMLElBQUksNEJBQWdCLENBQUM7UUFDbkIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsV0FBVztRQUNYLElBQUk7S0FDTCxDQUFDLENBQ0wsQ0FBQztBQUNKLENBQUMifQ==
|
package/dist/mcp-client.d.ts
CHANGED
|
@@ -3,12 +3,15 @@ import type { Logger } from '@forestadmin/datasource-toolkit';
|
|
|
3
3
|
import { MultiServerMCPClient } from '@langchain/mcp-adapters';
|
|
4
4
|
import McpServerRemoteTool from './mcp-server-remote-tool';
|
|
5
5
|
export type McpServers = MultiServerMCPClient['config']['mcpServers'];
|
|
6
|
-
export type McpServerConfig = MultiServerMCPClient['config']['mcpServers'][string]
|
|
6
|
+
export type McpServerConfig = MultiServerMCPClient['config']['mcpServers'][string] & {
|
|
7
|
+
id?: string;
|
|
8
|
+
};
|
|
7
9
|
export type McpConfiguration = {
|
|
8
|
-
configs:
|
|
10
|
+
configs: Record<string, McpServerConfig>;
|
|
9
11
|
} & Omit<MultiServerMCPClient['config'], 'mcpServers'>;
|
|
10
12
|
export default class McpClient implements ToolProvider {
|
|
11
13
|
private readonly mcpClients;
|
|
14
|
+
private readonly mcpServerIdsByName;
|
|
12
15
|
private readonly logger?;
|
|
13
16
|
constructor(config: McpConfiguration, logger?: Logger);
|
|
14
17
|
loadTools(): Promise<McpServerRemoteTool[]>;
|
package/dist/mcp-client.js
CHANGED
|
@@ -9,12 +9,15 @@ const mcp_server_remote_tool_1 = __importDefault(require("./mcp-server-remote-to
|
|
|
9
9
|
class McpClient {
|
|
10
10
|
constructor(config, logger) {
|
|
11
11
|
this.mcpClients = {};
|
|
12
|
+
this.mcpServerIdsByName = {};
|
|
12
13
|
this.logger = logger;
|
|
13
14
|
// split the config into several clients to be more resilient
|
|
14
15
|
// if a mcp server is down, the others will still work
|
|
15
16
|
Object.entries(config.configs).forEach(([name, serverConfig]) => {
|
|
17
|
+
const { id: mcpServerId, ...rest } = serverConfig;
|
|
18
|
+
this.mcpServerIdsByName[name] = mcpServerId;
|
|
16
19
|
this.mcpClients[name] = new mcp_adapters_1.MultiServerMCPClient({
|
|
17
|
-
mcpServers: { [name]:
|
|
20
|
+
mcpServers: { [name]: rest },
|
|
18
21
|
...config,
|
|
19
22
|
});
|
|
20
23
|
});
|
|
@@ -25,7 +28,11 @@ class McpClient {
|
|
|
25
28
|
await Promise.all(Object.entries(this.mcpClients).map(async ([name, client]) => {
|
|
26
29
|
try {
|
|
27
30
|
const loadedTools = (await client.getTools()) ?? [];
|
|
28
|
-
const extendedTools = loadedTools.map(tool => new mcp_server_remote_tool_1.default({
|
|
31
|
+
const extendedTools = loadedTools.map(tool => new mcp_server_remote_tool_1.default({
|
|
32
|
+
tool,
|
|
33
|
+
sourceId: name,
|
|
34
|
+
mcpServerId: this.mcpServerIdsByName[name],
|
|
35
|
+
}));
|
|
29
36
|
tools.push(...extendedTools);
|
|
30
37
|
}
|
|
31
38
|
catch (error) {
|
|
@@ -76,4 +83,4 @@ class McpClient {
|
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
85
|
exports.default = McpClient;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3AtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMERBQStEO0FBRS9ELHFDQUE4QztBQUM5QyxzRkFBMkQ7QUFZM0QsTUFBcUIsU0FBUztJQUs1QixZQUFZLE1BQXdCLEVBQUUsTUFBZTtRQUpwQyxlQUFVLEdBQXlDLEVBQUUsQ0FBQztRQUN0RCx1QkFBa0IsR0FBdUMsRUFBRSxDQUFDO1FBSTNFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLDZEQUE2RDtRQUM3RCxzREFBc0Q7UUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFlBQ1osQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxtQ0FBb0IsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUF1QixFQUFFO2dCQUMvQyxHQUFHLE1BQU07YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sS0FBSyxHQUEwQixFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFB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
|
|
@@ -10,4 +10,4 @@ class McpServerRemoteTool extends remote_tool_1.default {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
exports.default = McpServerRemoteTool;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLXNlcnZlci1yZW1vdGUtdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3Atc2VydmVyLXJlbW90ZS10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZ0VBQXVDO0FBRXZDLE1BQXFCLG1CQUF3QyxTQUFRLHFCQUFVO0lBQzdFLFlBQVksT0FJWDtRQUNDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQVJELHNDQVFDIn0=
|
package/dist/remote-tool.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ export default abstract class RemoteTool<ToolType = unknown> {
|
|
|
3
3
|
base: StructuredToolInterface<ToolType>;
|
|
4
4
|
sourceId: string;
|
|
5
5
|
sourceType: string;
|
|
6
|
+
mcpServerId?: string;
|
|
6
7
|
constructor(options: {
|
|
7
8
|
tool: StructuredToolInterface<ToolType>;
|
|
8
9
|
sourceId?: string;
|
|
9
10
|
sourceType?: string;
|
|
11
|
+
mcpServerId?: string;
|
|
10
12
|
});
|
|
11
13
|
get sanitizedName(): string;
|
|
12
14
|
}
|
package/dist/remote-tool.js
CHANGED
|
@@ -5,6 +5,7 @@ class RemoteTool {
|
|
|
5
5
|
this.base = options.tool;
|
|
6
6
|
this.sourceId = options.sourceId;
|
|
7
7
|
this.sourceType = options.sourceType;
|
|
8
|
+
this.mcpServerId = options.mcpServerId;
|
|
8
9
|
}
|
|
9
10
|
get sanitizedName() {
|
|
10
11
|
// OpenAI function names must be alphanumeric and can contain underscores
|
|
@@ -13,4 +14,4 @@ class RemoteTool {
|
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
exports.default = RemoteTool;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLXRvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVtb3RlLXRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUE4QixVQUFVO0lBUXRDLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUF6QkQsNkJBeUJDIn0=
|
|
@@ -10,4 +10,4 @@ class ServerRemoteTool extends remote_tool_1.default {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
exports.default = ServerRemoteTool;
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXJlbW90ZS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci1yZW1vdGUtdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGdFQUF1QztBQUV2QyxNQUFxQixnQkFBcUMsU0FBUSxxQkFBVTtJQUMxRSxZQUFZLE9BSVg7UUFDQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFSRCxtQ0FRQyJ9
|
package/dist/supported-models.js
CHANGED
|
@@ -65,6 +65,7 @@ const ANTHROPIC_UNSUPPORTED_MODELS = [
|
|
|
65
65
|
'claude-3-7-sonnet-20250219', // EOL 2026-02-19
|
|
66
66
|
'claude-opus-4-20250514', // Requires streaming (non-streaming times out)
|
|
67
67
|
'claude-opus-4-1-20250805', // Requires streaming (non-streaming times out)
|
|
68
|
+
'claude-fable-5', // Always-on thinking (rejects 'disabled'; proxy drops required thinking blocks)
|
|
68
69
|
];
|
|
69
70
|
function isAnthropicModelSupported(model) {
|
|
70
71
|
return !ANTHROPIC_UNSUPPORTED_MODELS.includes(model);
|
|
@@ -75,4 +76,4 @@ function isModelSupportingTools(model, provider) {
|
|
|
75
76
|
return isAnthropicModelSupported(model);
|
|
76
77
|
return isOpenAIModelSupported(model);
|
|
77
78
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3J0ZWQtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0ZBLHlDQUlDO0FBMUZELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxnQkFBZ0I7SUFDaEIsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxjQUFjO0lBQ2QsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztJQUNMLGdFQUFnRTtJQUNoRSxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSiwwQkFBMEI7SUFDMUIsUUFBUTtJQUNSLFNBQVM7SUFDVCxLQUFLO0lBQ0wsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixTQUFTLEVBQUUsMENBQTBDO0lBQ3JELGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxvRUFBb0U7SUFDcEUsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsV0FBVztJQUNYLGlFQUFpRTtJQUNqRSxNQUFNO0lBQ04sZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLGtCQUFrQixFQUFFLHlDQUF5QztDQUM5RCxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFeEUsU0FBUyxzQkFBc0IsQ0FBQyxLQUFhO0lBQzNDLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVELE1BQU0sY0FBYyxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLGNBQWM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVqQyxNQUFNLGFBQWEsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FDN0QsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FDaEQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUNuRSxDQUFDO0lBRUYsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyx5QkFBeUIsRUFBRSxpQkFBaUI7SUFDNUMsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLHlCQUF5QixFQUFFLGlEQUFpRDtJQUM1RSw0QkFBNEIsRUFBRSxpQkFBaUI7SUFDL0Msd0JBQXdCLEVBQUUsK0NBQStDO0lBQ3pFLDBCQUEwQixFQUFFLCtDQUErQztJQUMzRSxnQkFBZ0IsRUFBRSxnRkFBZ0Y7Q0FDbkcsQ0FBQztBQUVGLFNBQVMseUJBQXlCLENBQUMsS0FBYTtJQUM5QyxPQUFPLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxnRkFBZ0Y7QUFFaEYsU0FBd0Isc0JBQXNCLENBQUMsS0FBYSxFQUFFLFFBQXFCO0lBQ2pGLElBQUksUUFBUSxLQUFLLFdBQVc7UUFBRSxPQUFPLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXRFLE9BQU8sc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = validateAiConfigurations;
|
|
7
|
+
const errors_1 = require("./errors");
|
|
8
|
+
const supported_models_1 = __importDefault(require("./supported-models"));
|
|
9
|
+
function validateAiConfigurations(aiConfigurations) {
|
|
10
|
+
for (const config of aiConfigurations) {
|
|
11
|
+
if (!(0, supported_models_1.default)(config.model, config.provider)) {
|
|
12
|
+
throw new errors_1.AIModelNotSupportedError(config.model);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUtYWktY29uZmlndXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmFsaWRhdGUtYWktY29uZmlndXJhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFLQSwyQ0FNQztBQVRELHFDQUFvRDtBQUNwRCwwRUFBd0Q7QUFFeEQsU0FBd0Isd0JBQXdCLENBQUMsZ0JBQW1DO0lBQ2xGLEtBQUssTUFBTSxNQUFNLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBQSwwQkFBc0IsRUFBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzNELE1BQU0sSUFBSSxpQ0FBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
|