@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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LWludGVncmF0aW9uLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mb3Jlc3QtaW50ZWdyYXRpb24tY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQXNCQSw4REFNQztBQXhCRCxxQ0FBNkM7QUFDN0MsdUVBQTZFO0FBQzdFLHNEQUFpRTtBQUNqRSwyRUFBeUY7QUFDekYsMERBQXlFO0FBQ3pFLHlFQUFtRjtBQUNuRix3REFBcUU7QUFHeEQsUUFBQSx3QkFBd0IsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsV0FBVyxDQUFVLENBQUM7QUFTbkYsU0FBZ0IseUJBQXlCLENBQ3ZDLE1BQXlEO0lBRXpELE9BQU8sQ0FDTCxtQkFBbUIsSUFBSSxNQUFNLElBQUssTUFBa0MsQ0FBQyxpQkFBaUIsS0FBSyxJQUFJLENBQ2hHLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBcUIsdUJBQXVCO0lBSTFDLFlBQVksT0FBa0MsRUFBRSxNQUFlO1FBQzdELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sS0FBSyxHQUFpQixFQUFFLENBQUM7UUFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1lBQ25ELFFBQVEsZUFBZSxFQUFFLENBQUM7Z0JBQ3hCLEtBQUssU0FBUztvQkFDWixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSxlQUFlLEVBQUMsTUFBdUIsQ0FBQyxDQUFDLENBQUM7b0JBQ3hELE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFBLGVBQWEsRUFBQyxNQUFxQixDQUFDLENBQUMsQ0FBQztvQkFDcEQsTUFBTTtnQkFDUixLQUFLLFdBQVc7b0JBQ2QsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsZUFBaUIsRUFBQyxNQUF5QixDQUFDLENBQUMsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUjtvQkFDRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLDRCQUE0QixlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDL0MsUUFBUSxlQUFlLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxTQUFTO29CQUNaLE9BQU8sSUFBQSw2QkFBcUIsRUFBQyxNQUF1QixDQUFDLENBQUM7Z0JBQ3hELEtBQUssT0FBTztvQkFDVixPQUFPLElBQUEsMkJBQW1CLEVBQUMsTUFBcUIsQ0FBQyxDQUFDO2dCQUNwRCxLQUFLLFdBQVc7b0JBQ2QsT0FBTyxJQUFBLCtCQUF1QixFQUFDLE1BQXlCLENBQUMsQ0FBQztnQkFDNUQ7b0JBQ0UsTUFBTSxJQUFJLDBCQUFpQixDQUFDLDRCQUE0QixlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCx3REFBd0Q7SUFDMUQsQ0FBQztDQUNGO0FBckRELDBDQXFEQyJ9
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF5QkEsc0VBS0M7QUEzQkQsZ0ZBQXNEO0FBRXRELDJEQUF3RDtBQUEvQyxzSEFBQSxnQkFBZ0IsT0FBQTtBQUN6Qiw2REFBc0U7QUFBN0QsMElBQUEsT0FBTyxPQUFzQjtBQUV0Qyx5RUFLcUM7QUFKbkMscUlBQUEsd0JBQXdCLE9BQUE7QUFNMUIsd0RBQXNDO0FBQ3RDLGlEQUErQjtBQUMvQiw2Q0FBc0Q7QUFBN0MsMEhBQUEsT0FBTyxPQUFjO0FBQzlCLDJDQUF5QjtBQUN6QiwrQ0FBNkI7QUFDN0IseURBQXVDO0FBQ3ZDLDJDQUF5QjtBQUN6QixrREFBZ0M7QUFDaEMsMERBQXdDO0FBRXhDLFNBQWdCLDZCQUE2QixDQUMzQyxPQUFtQyxFQUNuQyxNQUFlO0lBRWYsT0FBTyw2QkFBaUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELENBQUMifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL2tvbGFyL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBYUEsZ0NBZUM7QUExQkQsc0dBQWdGO0FBQ2hGLDhHQUE2RjtBQUM3Rix3RkFBd0U7QUFDeEUsb0ZBQXFFO0FBQ3JFLG1DQUF5QztBQUN6QyxrRkFBd0Q7QUFNeEQsU0FBd0IsYUFBYSxDQUFDLE1BQW1CO0lBQ3ZELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSxzQkFBYyxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBELE9BQU87UUFDTCxJQUFBLHFDQUE2QixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDL0MsSUFBQSx5Q0FBc0MsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3hELElBQUEsNEJBQTJCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFBLDhCQUE0QixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7S0FDL0MsQ0FBQyxHQUFHLENBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FDTCxJQUFJLDRCQUFnQixDQUFDO1FBQ25CLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLElBQUk7S0FDTCxDQUFDLENBQ0wsQ0FBQztBQUNKLENBQUMifQ==
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL3Nub3dmbGFrZS90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWlCQSxvQ0FlQztBQTlCRCxrRkFBd0Q7QUFDeEQsNEVBQTZEO0FBQzdELDBFQUEyRDtBQUMzRCwwRUFBMkQ7QUFDM0QsbUNBQXVFO0FBV3ZFLFNBQXdCLGlCQUFpQixDQUFDLE1BQXVCO0lBQy9ELE1BQU0sT0FBTyxHQUFHLElBQUEsK0JBQXVCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBQSwyQkFBbUIsRUFBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU5RCxPQUFPO1FBQ0wsSUFBQSx1QkFBc0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3hDLElBQUEsd0JBQXVCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUN6QyxJQUFBLHVCQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO0tBQ2pELENBQUMsR0FBRyxDQUNILElBQUksQ0FBQyxFQUFFLENBQ0wsSUFBSSw0QkFBZ0IsQ0FBQztRQUNuQixRQUFRLEVBQUUsV0FBVztRQUNyQixJQUFJO0tBQ0wsQ0FBQyxDQUNMLENBQUM7QUFDSixDQUFDIn0=
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL3plbmRlc2svdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsa0NBaUJDO0FBaENELDBFQUEyRDtBQUMzRCwwRkFBMEU7QUFDMUUsb0VBQXFEO0FBQ3JELHNGQUFzRTtBQUN0RSxzRUFBdUQ7QUFDdkQsMEVBQTJEO0FBQzNELG1DQUEyQztBQUMzQyxrRkFBd0Q7QUFReEQsU0FBd0IsZUFBZSxDQUFDLE1BQXFCO0lBQzNELE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUV0RCxPQUFPO1FBQ0wsSUFBQSxxQkFBb0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3RDLElBQUEsb0JBQW1CLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUNyQyxJQUFBLDZCQUEyQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDN0MsSUFBQSx1QkFBc0IsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3hDLElBQUEsK0JBQTZCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUMvQyxJQUFBLHVCQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7S0FDekMsQ0FBQyxHQUFHLENBQ0gsSUFBSSxDQUFDLEVBQUUsQ0FDTCxJQUFJLDRCQUFnQixDQUFDO1FBQ25CLFFBQVEsRUFBRSxTQUFTO1FBQ25CLElBQUk7S0FDTCxDQUFDLENBQ0wsQ0FBQztBQUNKLENBQUMifQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZWdyYXRpb25zL3plbmRlc2svdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFpQkEsa0NBa0JDO0FBakNELDBFQUEyRDtBQUMzRCwwRkFBMEU7QUFDMUUsb0VBQXFEO0FBQ3JELHNGQUFzRTtBQUN0RSxzRUFBdUQ7QUFDdkQsMEVBQTJEO0FBQzNELG1DQUEyQztBQUMzQyxrRkFBd0Q7QUFReEQsU0FBd0IsZUFBZSxDQUFDLE1BQXFCLEVBQUUsV0FBb0I7SUFDakYsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFBLHdCQUFnQixFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRELE9BQU87UUFDTCxJQUFBLHFCQUFvQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDdEMsSUFBQSxvQkFBbUIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQ3JDLElBQUEsNkJBQTJCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztRQUM3QyxJQUFBLHVCQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7UUFDeEMsSUFBQSwrQkFBNkIsRUFBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1FBQy9DLElBQUEsdUJBQXNCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztLQUN6QyxDQUFDLEdBQUcsQ0FDSCxJQUFJLENBQUMsRUFBRSxDQUNMLElBQUksNEJBQWdCLENBQUM7UUFDbkIsUUFBUSxFQUFFLFNBQVM7UUFDbkIsV0FBVztRQUNYLElBQUk7S0FDTCxDQUFDLENBQ0wsQ0FBQztBQUNKLENBQUMifQ==
@@ -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: McpServers;
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[]>;
@@ -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]: serverConfig },
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({ tool, sourceId: name }));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3AtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMERBQStEO0FBRS9ELHFDQUE4QztBQUM5QyxzRkFBMkQ7QUFVM0QsTUFBcUIsU0FBUztJQUk1QixZQUFZLE1BQXdCLEVBQUUsTUFBZTtRQUhwQyxlQUFVLEdBQXlDLEVBQUUsQ0FBQztRQUlyRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQiw2REFBNkQ7UUFDN0Qsc0RBQXNEO1FBQ3RELE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLG1DQUFvQixDQUFDO2dCQUMvQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRTtnQkFDcEMsR0FBRyxNQUFNO2FBQ1YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixNQUFNLEtBQUssR0FBMEIsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUE0QyxFQUFFLENBQUM7UUFFM0QsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FDbkMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLGdDQUFtQixDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMxRCxDQUFDO2dCQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztZQUMvQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLDJCQUEyQixJQUFJLEVBQUUsRUFBRSxLQUFjLENBQUMsQ0FBQztnQkFDMUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQWMsRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7UUFFRixzREFBc0Q7UUFDdEQsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNuRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQ1gsT0FBTyxFQUNQLDZCQUE2QixNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sR0FBRztnQkFDbEYsa0JBQWtCLFlBQVksRUFBRSxDQUNuQyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUM3RSxDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSwyQkFBa0IsQ0FBRSxLQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekQsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3ZCLENBQUM7WUFBQyxPQUFPLFlBQVksRUFBRSxDQUFDO2dCQUN0Qiw0RUFBNEU7Z0JBQzVFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsWUFBcUIsQ0FBQyxDQUFDO1lBQ3hGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdEYscUVBQXFFO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLE9BQU87YUFDckIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUM3RCxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBRXhELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNYLE9BQU8sRUFDUCxzQ0FBc0MsSUFBSSxFQUFFLEVBQzNDLE1BQWdDLENBQUMsTUFBTSxDQUN6QyxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQ1gsT0FBTyxFQUNQLG1CQUFtQixRQUFRLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLG9CQUFvQjtnQkFDdEUsb0NBQW9DLENBQ3ZDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBM0ZELDRCQTJGQyJ9
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3AtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMERBQStEO0FBRS9ELHFDQUE4QztBQUM5QyxzRkFBMkQ7QUFZM0QsTUFBcUIsU0FBUztJQUs1QixZQUFZLE1BQXdCLEVBQUUsTUFBZTtRQUpwQyxlQUFVLEdBQXlDLEVBQUUsQ0FBQztRQUN0RCx1QkFBa0IsR0FBdUMsRUFBRSxDQUFDO1FBSTNFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLDZEQUE2RDtRQUM3RCxzREFBc0Q7UUFDdEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxNQUFNLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFlBQ1osQ0FBQztZQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQzVDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxtQ0FBb0IsQ0FBQztnQkFDL0MsVUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUF1QixFQUFFO2dCQUMvQyxHQUFHLE1BQU07YUFDVixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sS0FBSyxHQUEwQixFQUFFLENBQUM7UUFDeEMsTUFBTSxNQUFNLEdBQTRDLEVBQUUsQ0FBQztRQUUzRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFB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
@@ -4,6 +4,7 @@ export default class McpServerRemoteTool<ToolType = unknown> extends RemoteTool
4
4
  constructor(options: {
5
5
  tool: StructuredToolInterface<ToolType>;
6
6
  sourceId?: string;
7
+ mcpServerId?: string;
7
8
  });
8
9
  }
9
10
  //# sourceMappingURL=mcp-server-remote-tool.d.ts.map
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLXNlcnZlci1yZW1vdGUtdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3Atc2VydmVyLXJlbW90ZS10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZ0VBQXVDO0FBRXZDLE1BQXFCLG1CQUF3QyxTQUFRLHFCQUFVO0lBQzdFLFlBQVksT0FBdUU7UUFDakYsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBSkQsc0NBSUMifQ==
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLXNlcnZlci1yZW1vdGUtdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3Atc2VydmVyLXJlbW90ZS10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZ0VBQXVDO0FBRXZDLE1BQXFCLG1CQUF3QyxTQUFRLHFCQUFVO0lBQzdFLFlBQVksT0FJWDtRQUNDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7Q0FDRjtBQVJELHNDQVFDIn0=
@@ -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
  }
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLXRvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVtb3RlLXRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUE4QixVQUFVO0lBS3RDLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZix5RUFBeUU7UUFDekUsc0VBQXNFO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRjtBQXBCRCw2QkFvQkMifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLXRvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVtb3RlLXRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUE4QixVQUFVO0lBUXRDLFlBQVksT0FLWDtRQUNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUF6QkQsNkJBeUJDIn0=
@@ -4,6 +4,7 @@ export default class ServerRemoteTool<ToolType = unknown> extends RemoteTool {
4
4
  constructor(options: {
5
5
  tool: StructuredToolInterface<ToolType>;
6
6
  sourceId?: string;
7
+ mcpServerId?: string;
7
8
  });
8
9
  }
9
10
  //# sourceMappingURL=server-remote-tool.d.ts.map
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXJlbW90ZS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci1yZW1vdGUtdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGdFQUF1QztBQUV2QyxNQUFxQixnQkFBcUMsU0FBUSxxQkFBVTtJQUMxRSxZQUFZLE9BQXVFO1FBQ2pGLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUpELG1DQUlDIn0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXJlbW90ZS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci1yZW1vdGUtdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGdFQUF1QztBQUV2QyxNQUFxQixnQkFBcUMsU0FBUSxxQkFBVTtJQUMxRSxZQUFZLE9BSVg7UUFDQyxLQUFLLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUFSRCxtQ0FRQyJ9
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3J0ZWQtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUZBLHlDQUlDO0FBekZELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxnQkFBZ0I7SUFDaEIsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxjQUFjO0lBQ2QsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztJQUNMLGdFQUFnRTtJQUNoRSxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSiwwQkFBMEI7SUFDMUIsUUFBUTtJQUNSLFNBQVM7SUFDVCxLQUFLO0lBQ0wsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixTQUFTLEVBQUUsMENBQTBDO0lBQ3JELGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxvRUFBb0U7SUFDcEUsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsV0FBVztJQUNYLGlFQUFpRTtJQUNqRSxNQUFNO0lBQ04sZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLGtCQUFrQixFQUFFLHlDQUF5QztDQUM5RCxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFeEUsU0FBUyxzQkFBc0IsQ0FBQyxLQUFhO0lBQzNDLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVELE1BQU0sY0FBYyxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLGNBQWM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVqQyxNQUFNLGFBQWEsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FDN0QsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FDaEQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUNuRSxDQUFDO0lBRUYsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyx5QkFBeUIsRUFBRSxpQkFBaUI7SUFDNUMsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLHlCQUF5QixFQUFFLGlEQUFpRDtJQUM1RSw0QkFBNEIsRUFBRSxpQkFBaUI7SUFDL0Msd0JBQXdCLEVBQUUsK0NBQStDO0lBQ3pFLDBCQUEwQixFQUFFLCtDQUErQztDQUM1RSxDQUFDO0FBRUYsU0FBUyx5QkFBeUIsQ0FBQyxLQUFhO0lBQzlDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELGdGQUFnRjtBQUVoRixTQUF3QixzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsUUFBcUI7SUFDakYsSUFBSSxRQUFRLEtBQUssV0FBVztRQUFFLE9BQU8seUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdEUsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDIn0=
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3J0ZWQtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0ZBLHlDQUlDO0FBMUZELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxnQkFBZ0I7SUFDaEIsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxjQUFjO0lBQ2QsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztJQUNMLGdFQUFnRTtJQUNoRSxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSiwwQkFBMEI7SUFDMUIsUUFBUTtJQUNSLFNBQVM7SUFDVCxLQUFLO0lBQ0wsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixTQUFTLEVBQUUsMENBQTBDO0lBQ3JELGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxvRUFBb0U7SUFDcEUsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsV0FBVztJQUNYLGlFQUFpRTtJQUNqRSxNQUFNO0lBQ04sZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLGtCQUFrQixFQUFFLHlDQUF5QztDQUM5RCxDQUFDO0FBRUYsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFFeEUsU0FBUyxzQkFBc0IsQ0FBQyxLQUFhO0lBQzNDLElBQUkseUJBQXlCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRTVELE1BQU0sY0FBYyxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLGNBQWM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVqQyxNQUFNLGFBQWEsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQ3BELE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsTUFBTSxHQUFHLENBQUMsQ0FDN0QsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLDBCQUEwQixDQUFDLElBQUksQ0FDaEQsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUNuRSxDQUFDO0lBRUYsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVLENBQUM7QUFDdEMsQ0FBQztBQUVELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSw0QkFBNEIsR0FBRztJQUNuQyx5QkFBeUIsRUFBRSxpQkFBaUI7SUFDNUMsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLHlCQUF5QixFQUFFLGlEQUFpRDtJQUM1RSw0QkFBNEIsRUFBRSxpQkFBaUI7SUFDL0Msd0JBQXdCLEVBQUUsK0NBQStDO0lBQ3pFLDBCQUEwQixFQUFFLCtDQUErQztJQUMzRSxnQkFBZ0IsRUFBRSxnRkFBZ0Y7Q0FDbkcsQ0FBQztBQUVGLFNBQVMseUJBQXlCLENBQUMsS0FBYTtJQUM5QyxPQUFPLENBQUMsNEJBQTRCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZELENBQUM7QUFFRCxnRkFBZ0Y7QUFFaEYsU0FBd0Isc0JBQXNCLENBQUMsS0FBYSxFQUFFLFFBQXFCO0lBQ2pGLElBQUksUUFBUSxLQUFLLFdBQVc7UUFBRSxPQUFPLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXRFLE9BQU8sc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkMsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ import type { AiConfiguration } from './provider';
2
+ export default function validateAiConfigurations(aiConfigurations: AiConfiguration[]): void;
3
+ //# sourceMappingURL=validate-ai-configurations.d.ts.map
@@ -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=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/ai-proxy",
3
- "version": "1.10.1",
3
+ "version": "1.11.1",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {