@forestadmin/ai-proxy 1.12.1 → 1.12.4

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/errors.d.ts CHANGED
@@ -64,6 +64,9 @@ export declare class McpError extends UnprocessableError {
64
64
  export declare class McpConnectionError extends McpError {
65
65
  constructor(message: string);
66
66
  }
67
+ export declare class McpLoadTimeoutError extends McpError {
68
+ constructor(serverName: string, timeoutMs: number);
69
+ }
67
70
  export declare class McpConflictError extends McpError {
68
71
  constructor(entityName: string);
69
72
  }
package/dist/errors.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * This allows the agent's error middleware to map them to their natural HTTP status codes.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.McpConfigError = exports.McpConflictError = exports.McpConnectionError = exports.McpError = exports.AIToolNotFoundError = exports.AIToolUnprocessableError = exports.AINotConfiguredError = exports.AIForbiddenError = exports.AIUnauthorizedError = exports.AITooManyRequestsError = exports.AIProviderUnavailableError = exports.AIProviderError = exports.AINotFoundError = exports.AIModelNotSupportedError = exports.AIBadRequestError = void 0;
7
+ exports.McpConfigError = exports.McpConflictError = exports.McpLoadTimeoutError = exports.McpConnectionError = exports.McpError = exports.AIToolNotFoundError = exports.AIToolUnprocessableError = exports.AINotConfiguredError = exports.AIForbiddenError = exports.AIUnauthorizedError = exports.AITooManyRequestsError = exports.AIProviderUnavailableError = exports.AIProviderError = exports.AINotFoundError = exports.AIModelNotSupportedError = exports.AIBadRequestError = void 0;
8
8
  // eslint-disable-next-line max-classes-per-file
9
9
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
10
10
  class AIBadRequestError extends datasource_toolkit_1.BadRequestError {
@@ -115,6 +115,13 @@ class McpConnectionError extends McpError {
115
115
  }
116
116
  }
117
117
  exports.McpConnectionError = McpConnectionError;
118
+ class McpLoadTimeoutError extends McpError {
119
+ constructor(serverName, timeoutMs) {
120
+ super(`Timeout: MCP server "${serverName}" did not return its tools within ${timeoutMs}ms`);
121
+ this.name = 'McpLoadTimeoutError';
122
+ }
123
+ }
124
+ exports.McpLoadTimeoutError = McpLoadTimeoutError;
118
125
  class McpConflictError extends McpError {
119
126
  constructor(entityName) {
120
127
  super(`"${entityName}" already exists for your project`);
@@ -129,4 +136,4 @@ class McpConfigError extends McpError {
129
136
  }
130
137
  }
131
138
  exports.McpConfigError = McpConfigError;
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxnREFBZ0Q7QUFDaEQsd0VBUXlDO0FBRXpDLE1BQWEsaUJBQWtCLFNBQVEsb0NBQWU7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBTEQsOENBS0M7QUFFRCxNQUFhLHdCQUF5QixTQUFRLGlCQUFpQjtJQUM3RCxZQUFZLEtBQWE7UUFDdkIsS0FBSyxDQUNILFVBQVUsS0FBSyw4RUFBOEUsQ0FDOUYsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBUEQsNERBT0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsa0NBQWE7SUFDaEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBTEQsMENBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBSXJELFlBQVksUUFBZ0IsRUFBRSxPQUEyQjtRQUN2RCxLQUFLLENBQUMsdUJBQXVCLFFBQVEsS0FBSyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxPQUFPLEVBQUUsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFWRCwwQ0FVQztBQUVELE1BQWEsMEJBQTJC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
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxnREFBZ0Q7QUFDaEQsd0VBUXlDO0FBRXpDLE1BQWEsaUJBQWtCLFNBQVEsb0NBQWU7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBTEQsOENBS0M7QUFFRCxNQUFhLHdCQUF5QixTQUFRLGlCQUFpQjtJQUM3RCxZQUFZLEtBQWE7UUFDdkIsS0FBSyxDQUNILFVBQVUsS0FBSyw4RUFBOEUsQ0FDOUYsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBUEQsNERBT0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsa0NBQWE7SUFDaEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBTEQsMENBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBSXJELFlBQVksUUFBZ0IsRUFBRSxPQUEyQjtRQUN2RCxLQUFLLENBQUMsdUJBQXVCLFFBQVEsS0FBSyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxPQUFPLEVBQUUsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFWRCwwQ0FVQztBQUVELE1BQWEsMEJBQTJC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
@@ -7,6 +7,7 @@ exports.classifyMcpLoadError = classifyMcpLoadError;
7
7
  // re-consent cannot resolve, so it is left to surface as an ordinary failure. The MCP SDK / HTTP
8
8
  // transport reports failures in several shapes (a numeric status field, or only a message string),
9
9
  // so the checks walk the cause chain and inspect both structured status and the message text.
10
+ const errors_1 = require("./errors");
10
11
  const AUTH_STATUSES = new Set([401]);
11
12
  const AUTH_PATTERN = /\b401\b|unauthorized/i;
12
13
  const CONNECTION_PATTERN = /econnrefused|econnreset|etimedout|enotfound|eai_again|fetch failed|network|socket|timeout|connect/i;
@@ -45,9 +46,12 @@ function isMcpAuthError(error) {
45
46
  });
46
47
  }
47
48
  function classifyMcpLoadError(error) {
49
+ // Must run before the text patterns: the timeout message contains the user-controlled server name.
50
+ if (error instanceof errors_1.McpLoadTimeoutError)
51
+ return 'connection';
48
52
  if (isMcpAuthError(error))
49
53
  return 'auth';
50
54
  const isConnectionFailure = errorChain(error).some(link => CONNECTION_PATTERN.test(messageOf(link)));
51
55
  return isConnectionFailure ? 'connection' : 'unknown';
52
56
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWF1dGgtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWNwLWF1dGgtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF5Q0Esd0NBU0M7QUFFRCxvREFRQztBQTVERCxtR0FBbUc7QUFDbkcsZ0dBQWdHO0FBQ2hHLGlHQUFpRztBQUNqRyxtR0FBbUc7QUFDbkcsOEZBQThGO0FBQzlGLE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNLFlBQVksR0FBRyx1QkFBdUIsQ0FBQztBQUM3QyxNQUFNLGtCQUFrQixHQUN0QixvR0FBb0csQ0FBQztBQUl2RyxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE1BQU0sU0FBUyxHQUFHLEtBQW1FLENBQUM7SUFFdEYsS0FBSyxNQUFNLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNoRixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFBRSxPQUFPLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLEtBQWM7SUFDL0IsSUFBSSxLQUFLLFlBQVksS0FBSztRQUFFLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNqRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1QyxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxLQUFjO0lBQ2hDLE1BQU0sS0FBSyxHQUFjLEVBQUUsQ0FBQztJQUM1QixJQUFJLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFFN0IsT0FBTyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDaEUsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQixPQUFPLEdBQUksT0FBK0IsQ0FBQyxLQUFLLENBQUM7SUFDbkQsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxLQUFjO0lBQzNDLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsK0ZBQStGO1FBQy9GLGtHQUFrRztRQUNsRyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLElBQUksR0FBRztZQUFFLE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU3RixPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsS0FBYztJQUNqRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUV6QyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDeEQsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUN6QyxDQUFDO0lBRUYsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDeEQsQ0FBQyJ9
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWF1dGgtZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbWNwLWF1dGgtZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyQ0Esd0NBU0M7QUFFRCxvREFXQztBQWpFRCxtR0FBbUc7QUFDbkcsZ0dBQWdHO0FBQ2hHLGlHQUFpRztBQUNqRyxtR0FBbUc7QUFDbkcsOEZBQThGO0FBQzlGLHFDQUErQztBQUUvQyxNQUFNLGFBQWEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckMsTUFBTSxZQUFZLEdBQUcsdUJBQXVCLENBQUM7QUFDN0MsTUFBTSxrQkFBa0IsR0FDdEIsb0dBQW9HLENBQUM7QUFJdkcsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixNQUFNLFNBQVMsR0FBRyxLQUFtRSxDQUFDO0lBRXRGLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDaEYsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQUUsT0FBTyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxLQUFjO0lBQy9CLElBQUksS0FBSyxZQUFZLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDakQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFNUMsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYztJQUNoQyxNQUFNLEtBQUssR0FBYyxFQUFFLENBQUM7SUFDNUIsSUFBSSxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRTdCLE9BQU8sT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ2hFLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEIsT0FBTyxHQUFJLE9BQStCLENBQUMsS0FBSyxDQUFDO0lBQ25ELENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsS0FBYztJQUMzQyxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbkMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxJQUFJLEdBQUc7WUFBRSxPQUFPLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFN0YsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLEtBQWM7SUFDakQsbUdBQW1HO0lBQ25HLElBQUksS0FBSyxZQUFZLDRCQUFtQjtRQUFFLE9BQU8sWUFBWSxDQUFDO0lBRTlELElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBRXpDLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN4RCxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3pDLENBQUM7SUFFRixPQUFPLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4RCxDQUFDIn0=
@@ -3,6 +3,7 @@ import type { Logger } from '@forestadmin/datasource-toolkit';
3
3
  import { MultiServerMCPClient } from '@langchain/mcp-adapters';
4
4
  import { type McpLoadFailureKind } from './mcp-auth-error';
5
5
  import McpServerRemoteTool from './mcp-server-remote-tool';
6
+ export declare const LOAD_TOOLS_TIMEOUT_MS = 15000;
6
7
  export type McpServers = MultiServerMCPClient['config']['mcpServers'];
7
8
  export type McpServerConfig = MultiServerMCPClient['config']['mcpServers'][string] & {
8
9
  id?: string;
@@ -3,10 +3,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.LOAD_TOOLS_TIMEOUT_MS = void 0;
6
7
  const mcp_adapters_1 = require("@langchain/mcp-adapters");
7
8
  const errors_1 = require("./errors");
8
9
  const mcp_auth_error_1 = require("./mcp-auth-error");
9
10
  const mcp_server_remote_tool_1 = __importDefault(require("./mcp-server-remote-tool"));
11
+ // A server that accepts the connection but never answers would otherwise keep getTools() pending
12
+ // forever and hang the whole load (and the caller's request) until the infrastructure cuts it.
13
+ exports.LOAD_TOOLS_TIMEOUT_MS = 15000;
14
+ function loadWithTimeout(loading, serverName, logger) {
15
+ let timer;
16
+ let hasTimedOut = false;
17
+ const timeout = new Promise((_, reject) => {
18
+ timer = setTimeout(() => {
19
+ hasTimedOut = true;
20
+ reject(new errors_1.McpLoadTimeoutError(serverName, exports.LOAD_TOOLS_TIMEOUT_MS));
21
+ }, exports.LOAD_TOOLS_TIMEOUT_MS);
22
+ });
23
+ loading.then(() => {
24
+ if (hasTimedOut) {
25
+ logger?.('Debug', `MCP server "${serverName}" returned its tools after the timeout`);
26
+ }
27
+ }, (error) => {
28
+ if (hasTimedOut) {
29
+ logger?.('Debug', `MCP server "${serverName}" failed after the timeout`, error);
30
+ }
31
+ });
32
+ return Promise.race([loading, timeout]).finally(() => clearTimeout(timer));
33
+ }
10
34
  class McpClient {
11
35
  constructor(config, logger) {
12
36
  this.mcpClients = {};
@@ -31,7 +55,9 @@ class McpClient {
31
55
  const failures = [];
32
56
  await Promise.all(Object.entries(this.mcpClients).map(async ([name, client]) => {
33
57
  try {
34
- const loadedTools = (await client.getTools()) ?? [];
58
+ const startedAt = Date.now();
59
+ const loadedTools = (await loadWithTimeout(client.getTools(), name, this.logger)) ?? [];
60
+ this.logger?.('Debug', `Loaded ${loadedTools.length} tools from MCP server "${name}" in ${Date.now() - startedAt}ms`);
35
61
  const extendedTools = loadedTools.map(tool => new mcp_server_remote_tool_1.default({
36
62
  tool,
37
63
  sourceId: name,
@@ -95,4 +121,4 @@ class McpClient {
95
121
  }
96
122
  }
97
123
  exports.default = McpClient;
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3AtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBR0EsMERBQStEO0FBRS9ELHFDQUE4QztBQUM5QyxxREFBaUY7QUFDakYsc0ZBQTJEO0FBcUIzRCxNQUFxQixTQUFTO0lBSzVCLFlBQVksTUFBd0IsRUFBRSxNQUFlO1FBSnBDLGVBQVUsR0FBeUMsRUFBRSxDQUFDO1FBQ3RELHVCQUFrQixHQUF1QyxFQUFFLENBQUM7UUFJM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsNkRBQTZEO1FBQzdELHNEQUFzRDtRQUN0RCxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsRUFBRSxFQUFFO1lBQzlELE1BQU0sRUFDSixFQUFFLEVBQUUsV0FBVyxFQUNmLFFBQVEsRUFDUixHQUFHLElBQUksRUFDUixHQUFHLFlBQXlELENBQUM7WUFDOUQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksbUNBQW9CLENBQUM7Z0JBQy9DLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBdUIsRUFBRTtnQkFDL0MsR0FBRyxNQUFNO2FBQ1YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0dBQWdHO0lBQ2hHLGdHQUFnRztJQUNoRywyRkFBMkY7SUFDM0YsS0FBSyxDQUFDLHFCQUFxQjtRQUl6QixNQUFNLEtBQUssR0FBMEIsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUEyQixFQUFFLENBQUM7UUFFNUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDcEQsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FDbkMsSUFBSSxDQUFDLEVBQUUsQ0FDTCxJQUFJLGdDQUFtQixDQUFDO29CQUN0QixJQUFJO29CQUNKLFFBQVEsRUFBRSxJQUFJO29CQUNkLFdBQVcsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDO2lCQUMzQyxDQUFDLENBQ0wsQ0FBQztnQkFDRixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7WUFDL0IsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSwyQkFBMkIsSUFBSSxFQUFFLEVBQUUsS0FBYyxDQUFDLENBQUM7Z0JBQzFFLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQ1osTUFBTSxFQUFFLElBQUk7b0JBQ1osV0FBVyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksRUFBRSxJQUFBLHFDQUFvQixFQUFDLEtBQUssQ0FBQztvQkFDakMsS0FBSyxFQUFFLEtBQWM7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsc0RBQXNEO1FBQ3RELElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckYsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNYLE9BQU8sRUFDUCw2QkFBNkIsUUFBUSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUc7Z0JBQ3BGLGtCQUFrQixZQUFZLEVBQUUsQ0FDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsU0FBUztRQUNiLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3BELENBQUM7SUFFRCxLQUFLLENBQUMsZUFBZTtRQUNuQixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FDN0UsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksMkJBQWtCLENBQUUsS0FBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN2QixDQUFDO1lBQUMsT0FBTyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsNEVBQTRFO2dCQUM1RSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLFlBQXFCLENBQUMsQ0FBQztZQUN4RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXRGLHFFQUFxRTtRQUNyRSxNQUFNLFFBQVEsR0FBRyxPQUFPO2FBQ3JCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0QsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQztRQUV4RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7Z0JBQ3BDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FDWCxPQUFPLEVBQ1Asc0NBQXNDLElBQUksRUFBRSxFQUMzQyxNQUFnQyxDQUFDLE1BQU0sQ0FDekMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUNYLE9BQU8sRUFDUCxtQkFBbUIsUUFBUSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxvQkFBb0I7Z0JBQ3RFLG9DQUFvQyxDQUN2QyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7Q0FDRjtBQXRIRCw0QkFzSEMifQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tY3AtY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLDBEQUErRDtBQUUvRCxxQ0FBbUU7QUFDbkUscURBQWlGO0FBQ2pGLHNGQUEyRDtBQUUzRCxpR0FBaUc7QUFDakcsK0ZBQStGO0FBQ2xGLFFBQUEscUJBQXFCLEdBQUcsS0FBTSxDQUFDO0FBRTVDLFNBQVMsZUFBZSxDQUFJLE9BQW1CLEVBQUUsVUFBa0IsRUFBRSxNQUFlO0lBQ2xGLElBQUksS0FBaUMsQ0FBQztJQUN0QyxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDeEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDL0MsS0FBSyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdEIsV0FBVyxHQUFHLElBQUksQ0FBQztZQUNuQixNQUFNLENBQUMsSUFBSSw0QkFBbUIsQ0FBQyxVQUFVLEVBQUUsNkJBQXFCLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsRUFBRSw2QkFBcUIsQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxDQUFDLElBQUksQ0FDVixHQUFHLEVBQUU7UUFDSCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxlQUFlLFVBQVUsd0NBQXdDLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQyxFQUNELENBQUMsS0FBWSxFQUFFLEVBQUU7UUFDZixJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxlQUFlLFVBQVUsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbEYsQ0FBQztJQUNILENBQUMsQ0FDRixDQUFDO0lBRUYsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsT0FB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
@@ -41,6 +41,8 @@ const OPENAI_UNSUPPORTED_PATTERNS = [
41
41
  // Models that only support v1/responses, not v1/chat/completions
42
42
  '-pro',
43
43
  '-deep-research',
44
+ // Deprecated by OpenAI (return 404 on invocation): gpt-5-chat-latest, gpt-5.1-chat-latest
45
+ '-chat-latest',
44
46
  ];
45
47
  const OPENAI_UNSUPPORTED_MODELS = [
46
48
  'us-40-51r-vm-ev3', // Not a chat model (v1/completions only)
@@ -80,4 +82,4 @@ function isModelSupportingTools(model, provider) {
80
82
  return isAnthropicModelSupported(model);
81
83
  return isOpenAIModelSupported(model);
82
84
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3J0ZWQtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBNEZBLHlDQUlDO0FBOUZELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxnQkFBZ0I7SUFDaEIsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxjQUFjO0lBQ2QsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztJQUNMLGdFQUFnRTtJQUNoRSxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSiwwQkFBMEI7SUFDMUIsUUFBUTtJQUNSLFNBQVM7SUFDVCxLQUFLO0lBQ0wsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixTQUFTLEVBQUUsMENBQTBDO0lBQ3JELGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxvRUFBb0U7SUFDcEUsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsV0FBVztJQUNYLGlFQUFpRTtJQUNqRSxNQUFNO0lBQ04sZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLHlCQUF5QixHQUFHO0lBQ2hDLGtCQUFrQixFQUFFLHlDQUF5QztJQUM3RCx5RkFBeUY7SUFDekYsY0FBYztJQUNkLGFBQWE7SUFDYixlQUFlO0NBQ2hCLENBQUM7QUFFRixNQUFNLDBCQUEwQixHQUFHLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV4RSxTQUFTLHNCQUFzQixDQUFDLEtBQWE7SUFDM0MsSUFBSSx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFNUQsTUFBTSxjQUFjLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLElBQUksY0FBYztRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRWpDLE1BQU0sYUFBYSxHQUFHLDJCQUEyQixDQUFDLElBQUksQ0FDcEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUM3RCxDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUNoRCxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQ25FLENBQUM7SUFFRixPQUFPLENBQUMsYUFBYSxJQUFJLFVBQVUsQ0FBQztBQUN0QyxDQUFDO0FBRUQsZ0ZBQWdGO0FBQ2hGLDBEQUEwRDtBQUUxRCxNQUFNLDRCQUE0QixHQUFHO0lBQ25DLHlCQUF5QixFQUFFLGlCQUFpQjtJQUM1QywyQkFBMkIsRUFBRSxpQkFBaUI7SUFDOUMseUJBQXlCLEVBQUUsaURBQWlEO0lBQzVFLDRCQUE0QixFQUFFLGlCQUFpQjtJQUMvQyx3QkFBd0IsRUFBRSwrQ0FBK0M7SUFDekUsMEJBQTBCLEVBQUUsK0NBQStDO0lBQzNFLGdCQUFnQixFQUFFLGdGQUFnRjtDQUNuRyxDQUFDO0FBRUYsU0FBUyx5QkFBeUIsQ0FBQyxLQUFhO0lBQzlDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkQsQ0FBQztBQUVELGdGQUFnRjtBQUVoRixTQUF3QixzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsUUFBcUI7SUFDakYsSUFBSSxRQUFRLEtBQUssV0FBVztRQUFFLE9BQU8seUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdEUsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2QyxDQUFDIn0=
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydGVkLW1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwb3J0ZWQtbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBOEZBLHlDQUlDO0FBaEdELGdGQUFnRjtBQUNoRiwwREFBMEQ7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxnQkFBZ0I7SUFDaEIsT0FBTyxFQUFFLGlEQUFpRDtJQUMxRCxjQUFjO0lBQ2QsU0FBUztJQUNULE9BQU87SUFDUCxTQUFTO0lBQ1QsS0FBSztJQUNMLGdFQUFnRTtJQUNoRSxJQUFJO0lBQ0osSUFBSTtJQUNKLElBQUk7SUFDSiwwQkFBMEI7SUFDMUIsUUFBUTtJQUNSLFNBQVM7SUFDVCxLQUFLO0lBQ0wsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixTQUFTLEVBQUUsMENBQTBDO0lBQ3JELGNBQWMsRUFBRSx1QkFBdUI7SUFDdkMsV0FBVyxFQUFFLDZCQUE2QjtJQUMxQyxjQUFjLEVBQUUsa0NBQWtDO0lBQ2xELFdBQVcsRUFBRSxZQUFZO0lBQ3pCLE1BQU0sRUFBRSxxQkFBcUI7SUFDN0IsT0FBTyxFQUFFLG9CQUFvQjtDQUM5QixDQUFDO0FBRUYsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxvRUFBb0U7SUFDcEUsV0FBVztJQUNYLFFBQVE7SUFDUixhQUFhO0lBQ2IsTUFBTTtJQUNOLFNBQVM7SUFDVCxRQUFRO0lBQ1IsV0FBVztJQUNYLGlFQUFpRTtJQUNqRSxNQUFNO0lBQ04sZ0JBQWdCO0lBQ2hCLDBGQUEwRjtJQUMxRixjQUFjO0NBQ2YsQ0FBQztBQUVGLE1BQU0seUJBQXlCLEdBQUc7SUFDaEMsa0JBQWtCLEVBQUUseUNBQXlDO0lBQzdELHlGQUF5RjtJQUN6RixjQUFjO0lBQ2QsYUFBYTtJQUNiLGVBQWU7Q0FDaEIsQ0FBQztBQUVGLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRXhFLFNBQVMsc0JBQXNCLENBQUMsS0FBYTtJQUMzQyxJQUFJLHlCQUF5QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUU1RCxNQUFNLGNBQWMsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsSUFBSSxjQUFjO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFakMsTUFBTSxhQUFhLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxDQUNwRCxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssS0FBSyxNQUFNLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLENBQzdELENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQ2hELFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FDbkUsQ0FBQztJQUVGLE9BQU8sQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDO0FBQ3RDLENBQUM7QUFFRCxnRkFBZ0Y7QUFDaEYsMERBQTBEO0FBRTFELE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMseUJBQXlCLEVBQUUsaUJBQWlCO0lBQzVDLDJCQUEyQixFQUFFLGlCQUFpQjtJQUM5Qyx5QkFBeUIsRUFBRSxpREFBaUQ7SUFDNUUsNEJBQTRCLEVBQUUsaUJBQWlCO0lBQy9DLHdCQUF3QixFQUFFLCtDQUErQztJQUN6RSwwQkFBMEIsRUFBRSwrQ0FBK0M7SUFDM0UsZ0JBQWdCLEVBQUUsZ0ZBQWdGO0NBQ25HLENBQUM7QUFFRixTQUFTLHlCQUF5QixDQUFDLEtBQWE7SUFDOUMsT0FBTyxDQUFDLDRCQUE0QixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsZ0ZBQWdGO0FBRWhGLFNBQXdCLHNCQUFzQixDQUFDLEtBQWEsRUFBRSxRQUFxQjtJQUNqRixJQUFJLFFBQVEsS0FBSyxXQUFXO1FBQUUsT0FBTyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV0RSxPQUFPLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/ai-proxy",
3
- "version": "1.12.1",
3
+ "version": "1.12.4",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {