@forestadmin/ai-proxy 1.5.2 → 1.6.0

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
@@ -1,12 +1,8 @@
1
1
  /**
2
- * All custom AI errors extend HTTP-status error classes (BadRequestError, NotFoundError,
3
- * UnprocessableError) from datasource-toolkit. This allows the agent's error middleware
4
- * to map them to their natural HTTP status codes automatically.
2
+ * All custom AI errors extend their matching HTTP-status error class from datasource-toolkit.
3
+ * This allows the agent's error middleware to map them to their natural HTTP status codes.
5
4
  */
6
- import { BadRequestError, NotFoundError, UnprocessableError } from '@forestadmin/datasource-toolkit';
7
- export declare class AIError extends UnprocessableError {
8
- constructor(message: string);
9
- }
5
+ import { BadRequestError, ForbiddenError, InternalServerError, NotFoundError, TooManyRequestsError, UnauthorizedError, UnprocessableError } from '@forestadmin/datasource-toolkit';
10
6
  export declare class AIBadRequestError extends BadRequestError {
11
7
  constructor(message: string);
12
8
  }
@@ -16,22 +12,53 @@ export declare class AIModelNotSupportedError extends AIBadRequestError {
16
12
  export declare class AINotFoundError extends NotFoundError {
17
13
  constructor(message: string);
18
14
  }
19
- export declare class AIUnprocessableError extends UnprocessableError {
15
+ export declare class AIProviderError extends UnprocessableError {
16
+ readonly provider: string;
17
+ readonly cause?: Error;
18
+ constructor(provider: string, options?: {
19
+ cause?: Error;
20
+ });
21
+ }
22
+ export declare class AIProviderUnavailableError extends InternalServerError {
23
+ readonly provider: string;
24
+ readonly providerStatusCode: number;
25
+ readonly cause?: Error;
26
+ constructor(provider: string, options: {
27
+ cause?: Error;
28
+ status: number;
29
+ });
30
+ }
31
+ export declare class AITooManyRequestsError extends TooManyRequestsError {
32
+ readonly provider: string;
33
+ readonly cause?: Error;
34
+ constructor(provider: string, options?: {
35
+ cause?: Error;
36
+ });
37
+ }
38
+ export declare class AIUnauthorizedError extends UnauthorizedError {
39
+ readonly provider: string;
40
+ readonly cause?: Error;
41
+ constructor(provider: string, options?: {
42
+ cause?: Error;
43
+ });
44
+ }
45
+ export declare class AIForbiddenError extends ForbiddenError {
46
+ readonly provider: string;
20
47
  readonly cause?: Error;
21
- constructor(message: string, options?: {
48
+ constructor(provider: string, options?: {
22
49
  cause?: Error;
23
50
  });
24
51
  }
25
- export declare class AINotConfiguredError extends AIError {
52
+ export declare class AINotConfiguredError extends UnprocessableError {
26
53
  constructor(message?: string);
27
54
  }
28
- export declare class AIToolUnprocessableError extends AIUnprocessableError {
55
+ export declare class AIToolUnprocessableError extends UnprocessableError {
29
56
  constructor(message: string);
30
57
  }
31
58
  export declare class AIToolNotFoundError extends AINotFoundError {
32
59
  constructor(message: string);
33
60
  }
34
- export declare class McpError extends AIError {
61
+ export declare class McpError extends UnprocessableError {
35
62
  constructor(message: string);
36
63
  }
37
64
  export declare class McpConnectionError extends McpError {
package/dist/errors.js CHANGED
@@ -1,20 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * All custom AI errors extend HTTP-status error classes (BadRequestError, NotFoundError,
4
- * UnprocessableError) from datasource-toolkit. This allows the agent's error middleware
5
- * to map them to their natural HTTP status codes automatically.
3
+ * All custom AI errors extend their matching HTTP-status error class from datasource-toolkit.
4
+ * This allows the agent's error middleware to map them to their natural HTTP status codes.
6
5
  */
7
6
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.McpConfigError = exports.McpConflictError = exports.McpConnectionError = exports.McpError = exports.AIToolNotFoundError = exports.AIToolUnprocessableError = exports.AINotConfiguredError = exports.AIUnprocessableError = exports.AINotFoundError = exports.AIModelNotSupportedError = exports.AIBadRequestError = exports.AIError = void 0;
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;
9
8
  // eslint-disable-next-line max-classes-per-file
10
9
  const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
11
- class AIError extends datasource_toolkit_1.UnprocessableError {
12
- constructor(message) {
13
- super(message);
14
- this.name = 'AIError';
15
- }
16
- }
17
- exports.AIError = AIError;
18
10
  class AIBadRequestError extends datasource_toolkit_1.BadRequestError {
19
11
  constructor(message) {
20
12
  super(message);
@@ -36,23 +28,66 @@ class AINotFoundError extends datasource_toolkit_1.NotFoundError {
36
28
  }
37
29
  }
38
30
  exports.AINotFoundError = AINotFoundError;
39
- class AIUnprocessableError extends datasource_toolkit_1.UnprocessableError {
40
- constructor(message, options) {
41
- super(message);
42
- this.name = 'AIUnprocessableError';
31
+ class AIProviderError extends datasource_toolkit_1.UnprocessableError {
32
+ constructor(provider, options) {
33
+ super(`Error while calling ${provider}: ${options?.cause?.message ?? 'unknown'}`);
34
+ this.name = 'AIProviderError';
35
+ this.provider = provider;
36
+ if (options?.cause)
37
+ this.cause = options.cause;
38
+ }
39
+ }
40
+ exports.AIProviderError = AIProviderError;
41
+ class AIProviderUnavailableError extends datasource_toolkit_1.InternalServerError {
42
+ constructor(provider, options) {
43
+ const causeMessage = options.cause?.message ?? 'unknown';
44
+ super(`${provider} server error (HTTP ${options.status}): ${causeMessage}`);
45
+ this.name = 'AIProviderUnavailableError';
46
+ this.provider = provider;
47
+ this.providerStatusCode = options.status;
48
+ if (options.cause)
49
+ this.cause = options.cause;
50
+ }
51
+ }
52
+ exports.AIProviderUnavailableError = AIProviderUnavailableError;
53
+ class AITooManyRequestsError extends datasource_toolkit_1.TooManyRequestsError {
54
+ constructor(provider, options) {
55
+ super(`${provider} rate limit exceeded: ${options?.cause?.message ?? 'unknown reason'}`);
56
+ this.name = 'AITooManyRequestsError';
57
+ this.provider = provider;
58
+ if (options?.cause)
59
+ this.cause = options.cause;
60
+ }
61
+ }
62
+ exports.AITooManyRequestsError = AITooManyRequestsError;
63
+ class AIUnauthorizedError extends datasource_toolkit_1.UnauthorizedError {
64
+ constructor(provider, options) {
65
+ super(`${provider} authentication failed: ${options?.cause?.message ?? 'check your API key configuration'}`);
66
+ this.name = 'AIUnauthorizedError';
67
+ this.provider = provider;
68
+ if (options?.cause)
69
+ this.cause = options.cause;
70
+ }
71
+ }
72
+ exports.AIUnauthorizedError = AIUnauthorizedError;
73
+ class AIForbiddenError extends datasource_toolkit_1.ForbiddenError {
74
+ constructor(provider, options) {
75
+ super(`${provider} access denied: ${options?.cause?.message ?? 'permission denied'}`);
76
+ this.name = 'AIForbiddenError';
77
+ this.provider = provider;
43
78
  if (options?.cause)
44
79
  this.cause = options.cause;
45
80
  }
46
81
  }
47
- exports.AIUnprocessableError = AIUnprocessableError;
48
- class AINotConfiguredError extends AIError {
82
+ exports.AIForbiddenError = AIForbiddenError;
83
+ class AINotConfiguredError extends datasource_toolkit_1.UnprocessableError {
49
84
  constructor(message = 'AI is not configured') {
50
85
  super(message);
51
86
  this.name = 'AINotConfiguredError';
52
87
  }
53
88
  }
54
89
  exports.AINotConfiguredError = AINotConfiguredError;
55
- class AIToolUnprocessableError extends AIUnprocessableError {
90
+ class AIToolUnprocessableError extends datasource_toolkit_1.UnprocessableError {
56
91
  constructor(message) {
57
92
  super(message);
58
93
  this.name = 'AIToolUnprocessableError';
@@ -66,7 +101,7 @@ class AIToolNotFoundError extends AINotFoundError {
66
101
  }
67
102
  }
68
103
  exports.AIToolNotFoundError = AIToolNotFoundError;
69
- class McpError extends AIError {
104
+ class McpError extends datasource_toolkit_1.UnprocessableError {
70
105
  constructor(message) {
71
106
  super(message);
72
107
  this.name = 'McpError';
@@ -94,4 +129,4 @@ class McpConfigError extends McpError {
94
129
  }
95
130
  }
96
131
  exports.McpConfigError = McpConfigError;
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsZ0RBQWdEO0FBQ2hELHdFQUl5QztBQUV6QyxNQUFhLE9BQVEsU0FBUSx1Q0FBa0I7SUFDN0MsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUxELDBCQUtDO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxvQ0FBZTtJQUNwRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0NBQ0Y7QUFMRCw4Q0FLQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsaUJBQWlCO0lBQzdELFlBQVksS0FBYTtRQUN2QixLQUFLLENBQ0gsVUFBVSxLQUFLLDhFQUE4RSxDQUM5RixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRywwQkFBMEIsQ0FBQztJQUN6QyxDQUFDO0NBQ0Y7QUFQRCw0REFPQztBQUVELE1BQWEsZUFBZ0IsU0FBUSxrQ0FBYTtJQUNoRCxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0NBQ0Y7QUFMRCwwQ0FLQztBQUVELE1BQWEsb0JBQXFCLFNBQVEsdUNBQWtCO0lBRzFELFlBQVksT0FBZSxFQUFFLE9BQTJCO1FBQ3RELEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7UUFDbkMsSUFBSSxPQUFPLEVBQUUsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFSRCxvREFRQztBQUVELE1BQWEsb0JBQXFCLFNBQVEsT0FBTztJQUMvQyxZQUFZLE9BQU8sR0FBRyxzQkFBc0I7UUFDMUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFMRCxvREFLQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsb0JBQW9CO0lBQ2hFLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLDBCQUEwQixDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQUxELDREQUtDO0FBRUQsTUFBYSxtQkFBb0IsU0FBUSxlQUFlO0lBQ3RELFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUxELGtEQUtDO0FBRUQsTUFBYSxRQUFTLFNBQVEsT0FBTztJQUNuQyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBTEQsNEJBS0M7QUFFRCxNQUFhLGtCQUFtQixTQUFRLFFBQVE7SUFDOUMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsZ0RBS0M7QUFFRCxNQUFhLGdCQUFpQixTQUFRLFFBQVE7SUFDNUMsWUFBWSxVQUFrQjtRQUM1QixLQUFLLENBQUMsSUFBSSxVQUFVLG1DQUFtQyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFMRCw0Q0FLQztBQUVELE1BQWEsY0FBZSxTQUFRLFFBQVE7SUFDMUMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBTEQsd0NBS0MifQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxnREFBZ0Q7QUFDaEQsd0VBUXlDO0FBRXpDLE1BQWEsaUJBQWtCLFNBQVEsb0NBQWU7SUFDcEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBTEQsOENBS0M7QUFFRCxNQUFhLHdCQUF5QixTQUFRLGlCQUFpQjtJQUM3RCxZQUFZLEtBQWE7UUFDdkIsS0FBSyxDQUNILFVBQVUsS0FBSyw4RUFBOEUsQ0FDOUYsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsMEJBQTBCLENBQUM7SUFDekMsQ0FBQztDQUNGO0FBUEQsNERBT0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsa0NBQWE7SUFDaEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBTEQsMENBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBSXJELFlBQVksUUFBZ0IsRUFBRSxPQUEyQjtRQUN2RCxLQUFLLENBQUMsdUJBQXVCLFFBQVEsS0FBSyxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLElBQUksQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUM7UUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxPQUFPLEVBQUUsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNqRCxDQUFDO0NBQ0Y7QUFWRCwwQ0FVQztBQUVELE1BQWEsMEJBQTJC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
@@ -12,17 +12,6 @@ export default class ProviderDispatcher {
12
12
  dispatch(body: DispatchBody): Promise<ChatCompletionResponse>;
13
13
  private dispatchOpenAI;
14
14
  private dispatchAnthropic;
15
- /**
16
- * Wraps provider errors into AI-specific error types.
17
- *
18
- * TODO: Currently all provider errors are wrapped as AIUnprocessableError,
19
- * losing the original HTTP semantics (429 rate limit, 401 auth failure).
20
- * To fix this properly we need to:
21
- * 1. Add UnauthorizedError and TooManyRequestsError to datasource-toolkit
22
- * 2. Add corresponding cases in the agent's error-handling middleware
23
- * 3. Create AIProviderError, AIRateLimitError, AIAuthenticationError in ai-proxy
24
- * with baseBusinessErrorName overrides for correct HTTP status mapping
25
- */
26
15
  private static wrapProviderError;
27
16
  private enrichToolDefinitions;
28
17
  }
@@ -3,6 +3,7 @@ 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
+ const datasource_toolkit_1 = require("@forestadmin/datasource-toolkit");
6
7
  const anthropic_1 = require("@langchain/anthropic");
7
8
  const function_calling_1 = require("@langchain/core/utils/function_calling");
8
9
  const openai_1 = require("@langchain/openai");
@@ -64,7 +65,7 @@ class ProviderDispatcher {
64
65
  // eslint-disable-next-line no-underscore-dangle
65
66
  const rawResponse = response.additional_kwargs.__raw_response;
66
67
  if (!rawResponse) {
67
- throw new errors_1.AIUnprocessableError('OpenAI response missing raw response data. This may indicate an API change.');
68
+ throw new datasource_toolkit_1.UnprocessableError('OpenAI response missing raw response data. This may indicate an API change.');
68
69
  }
69
70
  return rawResponse;
70
71
  }
@@ -88,39 +89,32 @@ class ProviderDispatcher {
88
89
  }
89
90
  return langchain_adapter_1.LangChainAdapter.convertResponse(response, this.modelName);
90
91
  }
91
- /**
92
- * Wraps provider errors into AI-specific error types.
93
- *
94
- * TODO: Currently all provider errors are wrapped as AIUnprocessableError,
95
- * losing the original HTTP semantics (429 rate limit, 401 auth failure).
96
- * To fix this properly we need to:
97
- * 1. Add UnauthorizedError and TooManyRequestsError to datasource-toolkit
98
- * 2. Add corresponding cases in the agent's error-handling middleware
99
- * 3. Create AIProviderError, AIRateLimitError, AIAuthenticationError in ai-proxy
100
- * with baseBusinessErrorName overrides for correct HTTP status mapping
101
- */
102
92
  static wrapProviderError(error, providerName) {
103
- if (error instanceof errors_1.AIUnprocessableError)
104
- return error;
105
- if (error instanceof errors_1.AIBadRequestError)
93
+ if (error instanceof datasource_toolkit_1.BusinessError)
106
94
  return error;
107
95
  if (!(error instanceof Error)) {
108
- return new errors_1.AIUnprocessableError(`Error while calling ${providerName}: ${String(error)}`);
96
+ let message;
97
+ try {
98
+ message = JSON.stringify(error);
99
+ }
100
+ catch {
101
+ message = String(error);
102
+ }
103
+ return new errors_1.AIProviderError(providerName, { cause: new Error(message) });
109
104
  }
110
105
  const { status } = error;
111
- if (status === 429) {
112
- return new errors_1.AIUnprocessableError(`${providerName} rate limit exceeded: ${error.message}`, {
113
- cause: error,
114
- });
106
+ if (status === 400)
107
+ return new errors_1.AIBadRequestError(`${providerName}: ${error.message}`);
108
+ if (status === 401)
109
+ return new errors_1.AIUnauthorizedError(providerName, { cause: error });
110
+ if (status === 403)
111
+ return new errors_1.AIForbiddenError(providerName, { cause: error });
112
+ if (status === 429)
113
+ return new errors_1.AITooManyRequestsError(providerName, { cause: error });
114
+ if (status && status >= 500) {
115
+ return new errors_1.AIProviderUnavailableError(providerName, { cause: error, status });
115
116
  }
116
- if (status === 401) {
117
- return new errors_1.AIUnprocessableError(`${providerName} authentication failed: ${error.message}`, {
118
- cause: error,
119
- });
120
- }
121
- return new errors_1.AIUnprocessableError(`Error while calling ${providerName}: ${error.message}`, {
122
- cause: error,
123
- });
117
+ return new errors_1.AIProviderError(providerName, { cause: error });
124
118
  }
125
119
  enrichToolDefinitions(tools) {
126
120
  if (!tools)
@@ -137,4 +131,4 @@ class ProviderDispatcher {
137
131
  }
138
132
  }
139
133
  exports.default = ProviderDispatcher;
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsb0RBQXFEO0FBQ3JELDZFQUFpRjtBQUNqRiw4Q0FBK0M7QUFFL0MsNEVBQW1EO0FBQ25ELHFDQUF5RjtBQUN6RiwyREFBdUQ7QUFnQnZELE1BQXFCLGtCQUFrQjtJQVNyQyxZQUFZLGFBQXFDLEVBQUUsV0FBd0I7UUFSMUQsZ0JBQVcsR0FBc0IsSUFBSSxDQUFDO1FBRXRDLG1CQUFjLEdBQXlCLElBQUksQ0FBQztRQUU1QyxjQUFTLEdBQWtCLElBQUksQ0FBQztRQUsvQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUUvQixJQUFJLGFBQWEsRUFBRSxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUMvRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksbUJBQVUsQ0FBQztnQkFDaEMsVUFBVSxFQUFFLENBQUMsRUFBRSxvREFBb0Q7Z0JBQ25FLEdBQUcsaUJBQWlCO2dCQUNwQixvQkFBb0IsRUFBRSxJQUFJO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLGFBQWEsRUFBRSxRQUFRLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDbkQsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsYUFBYSxFQUFFLEdBQUcsYUFBYSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx5QkFBYSxDQUFDO2dCQUN0QyxVQUFVLEVBQUUsQ0FBQyxFQUFFLG9EQUFvRDtnQkFDbkUsR0FBRyxhQUFhO2dCQUNoQixLQUFLO2FBQ04sQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsR0FB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
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItZGlzcGF0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm92aWRlci1kaXNwYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBTUEsd0VBQW9GO0FBQ3BGLG9EQUFxRDtBQUNyRCw2RUFBaUY7QUFDakYsOENBQStDO0FBRS9DLDRFQUFtRDtBQUNuRCxxQ0FRa0I7QUFDbEIsMkRBQXVEO0FBZ0J2RCxNQUFxQixrQkFBa0I7SUFTckMsWUFBWSxhQUFxQyxFQUFFLFdBQXdCO1FBUjFELGdCQUFXLEdBQXNCLElBQUksQ0FBQztRQUV0QyxtQkFBYyxHQUF5QixJQUFJLENBQUM7UUFFNUMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFLL0MsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFFL0IsSUFBSSxhQUFhLEVBQUUsUUFBUSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxhQUFhLENBQUM7WUFDL0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLG1CQUFVLENBQUM7Z0JBQ2hDLFVBQVUsRUFBRSxDQUFDLEVBQUUsb0RBQW9EO2dCQUNuRSxHQUFHLGlCQUFpQjtnQkFDcEIsb0JBQW9CLEVBQUUsSUFBSTthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sSUFBSSxhQUFhLEVBQUUsUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ25ELE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLGFBQWEsRUFBRSxHQUFHLGFBQWEsQ0FBQztZQUNsRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUkseUJBQWEsQ0FBQztnQkFDdEMsVUFBVSxFQUFFLENBQUMsRUFBRSxvREFBb0Q7Z0JBQ25FLEdBQUcsYUFBYTtnQkFDaEIsS0FBSzthQUNOLENBQUMsQ0FBQztZQUNILElBQUks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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/ai-proxy",
3
- "version": "1.5.2",
3
+ "version": "1.6.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -12,8 +12,8 @@
12
12
  "directory": "packages/ai-proxy"
13
13
  },
14
14
  "dependencies": {
15
- "@forestadmin/agent-toolkit": "1.0.1",
16
- "@forestadmin/datasource-toolkit": "1.51.1",
15
+ "@forestadmin/agent-toolkit": "1.1.0",
16
+ "@forestadmin/datasource-toolkit": "1.52.0",
17
17
  "@langchain/anthropic": "1.3.17",
18
18
  "@langchain/community": "1.1.4",
19
19
  "@langchain/core": "1.1.15",