@forestadmin/ai-proxy 1.0.1 → 1.2.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.
@@ -0,0 +1,13 @@
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
+ const remote_tool_1 = __importDefault(require("./remote-tool"));
7
+ class McpServerRemoteTool extends remote_tool_1.default {
8
+ constructor(options) {
9
+ super({ ...options, sourceType: 'mcp-server' });
10
+ }
11
+ }
12
+ exports.default = McpServerRemoteTool;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLXNlcnZlci1yZW1vdGUtdG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tY3Atc2VydmVyLXJlbW90ZS10b29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsZ0VBQXVDO0FBRXZDLE1BQXFCLG1CQUF3QyxTQUFRLHFCQUFVO0lBQzdFLFlBQVksT0FBdUU7UUFDakYsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBSkQsc0NBSUMifQ==
@@ -1,15 +1,13 @@
1
1
  import type { StructuredToolInterface } from '@langchain/core/tools';
2
- export type SourceType = 'server' | 'mcp-server';
3
- export default class RemoteTool<ToolType = unknown> {
2
+ export default abstract class RemoteTool<ToolType = unknown> {
4
3
  base: StructuredToolInterface<ToolType>;
5
4
  sourceId: string;
6
- sourceType: SourceType;
5
+ sourceType: string;
7
6
  constructor(options: {
8
7
  tool: StructuredToolInterface<ToolType>;
9
8
  sourceId?: string;
10
- sourceType?: SourceType;
9
+ sourceType?: string;
11
10
  });
12
11
  get sanitizedName(): string;
13
- private sanitizeName;
14
12
  }
15
13
  //# sourceMappingURL=remote-tool.d.ts.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class RemoteTool {
4
+ constructor(options) {
5
+ this.base = options.tool;
6
+ this.sourceId = options.sourceId;
7
+ this.sourceType = options.sourceType;
8
+ }
9
+ get sanitizedName() {
10
+ // OpenAI function names must be alphanumeric and can contain underscores
11
+ // This function replaces non-alphanumeric characters with underscores
12
+ return this.base.name.replace(/[^a-zA-Z0-9_-]/g, '_');
13
+ }
14
+ }
15
+ exports.default = RemoteTool;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLXRvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVtb3RlLXRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUE4QixVQUFVO0lBS3RDLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZix5RUFBeUU7UUFDekUsc0VBQXNFO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRjtBQXBCRCw2QkFvQkMifQ==
@@ -0,0 +1,9 @@
1
+ import type { StructuredToolInterface } from '@langchain/core/tools';
2
+ import RemoteTool from './remote-tool';
3
+ export default class ServerRemoteTool<ToolType = unknown> extends RemoteTool {
4
+ constructor(options: {
5
+ tool: StructuredToolInterface<ToolType>;
6
+ sourceId?: string;
7
+ });
8
+ }
9
+ //# sourceMappingURL=server-remote-tool.d.ts.map
@@ -0,0 +1,13 @@
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
+ const remote_tool_1 = __importDefault(require("./remote-tool"));
7
+ class ServerRemoteTool extends remote_tool_1.default {
8
+ constructor(options) {
9
+ super({ ...options, sourceType: 'server' });
10
+ }
11
+ }
12
+ exports.default = ServerRemoteTool;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXJlbW90ZS10b29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL3NlcnZlci1yZW1vdGUtdG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGdFQUF1QztBQUV2QyxNQUFxQixnQkFBcUMsU0FBUSxxQkFBVTtJQUMxRSxZQUFZLE9BQXVFO1FBQ2pGLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUpELG1DQUlDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/ai-proxy",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "GPL-3.0",
6
6
  "publishConfig": {
@@ -12,17 +12,18 @@
12
12
  "directory": "packages/ai-proxy"
13
13
  },
14
14
  "dependencies": {
15
- "openai": "4.95.0",
16
15
  "@forestadmin/datasource-toolkit": "1.50.1",
17
- "@langchain/community": "0.3.57",
18
- "@langchain/core": "1.1.4",
19
- "@langchain/langgraph": "1.0.4",
20
- "@langchain/mcp-adapters": "1.0.3"
16
+ "@langchain/community": "1.1.4",
17
+ "@langchain/core": "1.1.15",
18
+ "@langchain/langgraph": "^1.1.0",
19
+ "@langchain/mcp-adapters": "1.1.1",
20
+ "@langchain/openai": "1.2.2",
21
+ "zod": "^4.3.5"
21
22
  },
22
23
  "devDependencies": {
23
- "@modelcontextprotocol/sdk": "1.20.0",
24
- "express": "5.1.0",
24
+ "@modelcontextprotocol/sdk": "1.25.3",
25
25
  "@types/express": "5.0.1",
26
+ "express": "5.1.0",
26
27
  "node-zendesk": "6.0.1"
27
28
  },
28
29
  "files": [
package/dist/errors.js DELETED
@@ -1,86 +0,0 @@
1
- "use strict";
2
- /**
3
- * -------------------------------------
4
- * -------------------------------------
5
- * -------------------------------------
6
- * All custom errors must extend the AIError class.
7
- * This inheritance is crucial for proper error translation
8
- * and consistent handling throughout the system.
9
- * -------------------------------------
10
- * -------------------------------------
11
- * -------------------------------------
12
- */
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.McpConfigError = exports.McpConflictError = exports.McpConnectionError = exports.McpError = exports.AIToolNotFoundError = exports.AIToolUnprocessableError = exports.OpenAIUnprocessableError = exports.AINotConfiguredError = exports.AIUnprocessableError = exports.AIError = void 0;
15
- // eslint-disable-next-line max-classes-per-file
16
- class AIError extends Error {
17
- constructor(message) {
18
- super(message);
19
- this.name = 'AIError';
20
- }
21
- }
22
- exports.AIError = AIError;
23
- class AIUnprocessableError extends AIError {
24
- constructor(message) {
25
- super(message);
26
- this.name = 'AIUnprocessableError';
27
- }
28
- }
29
- exports.AIUnprocessableError = AIUnprocessableError;
30
- class AINotConfiguredError extends AIError {
31
- constructor() {
32
- super('AI is not configured. Please call addAI() on your agent.');
33
- this.name = 'AINotConfiguredError';
34
- }
35
- }
36
- exports.AINotConfiguredError = AINotConfiguredError;
37
- class OpenAIUnprocessableError extends AIUnprocessableError {
38
- constructor(message) {
39
- super(message);
40
- this.name = 'OpenAIError';
41
- }
42
- }
43
- exports.OpenAIUnprocessableError = OpenAIUnprocessableError;
44
- class AIToolUnprocessableError extends AIUnprocessableError {
45
- constructor(message) {
46
- super(message);
47
- this.name = 'AIToolError';
48
- }
49
- }
50
- exports.AIToolUnprocessableError = AIToolUnprocessableError;
51
- class AIToolNotFoundError extends AIError {
52
- constructor(message) {
53
- super(message);
54
- this.name = 'AIToolNotFoundError';
55
- }
56
- }
57
- exports.AIToolNotFoundError = AIToolNotFoundError;
58
- class McpError extends AIError {
59
- constructor(message) {
60
- super(message);
61
- this.name = 'McpError';
62
- }
63
- }
64
- exports.McpError = McpError;
65
- class McpConnectionError extends McpError {
66
- constructor(message) {
67
- super(message);
68
- this.name = 'McpConnectionError';
69
- }
70
- }
71
- exports.McpConnectionError = McpConnectionError;
72
- class McpConflictError extends McpError {
73
- constructor(entityName) {
74
- super(`"${entityName}" already exists for your project`);
75
- this.name = 'McpConflictError';
76
- }
77
- }
78
- exports.McpConflictError = McpConflictError;
79
- class McpConfigError extends McpError {
80
- constructor(message) {
81
- super(message);
82
- this.name = 'McpConfigError';
83
- }
84
- }
85
- exports.McpConfigError = McpConfigError;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7R0FVRzs7O0FBRUgsZ0RBQWdEO0FBQ2hELE1BQWEsT0FBUSxTQUFRLEtBQUs7SUFDaEMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQUxELDBCQUtDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSxPQUFPO0lBQy9DLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQUxELG9EQUtDO0FBRUQsTUFBYSxvQkFBcUIsU0FBUSxPQUFPO0lBQy9DO1FBQ0UsS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFMRCxvREFLQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsb0JBQW9CO0lBQ2hFLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFMRCw0REFLQztBQUVELE1BQWEsd0JBQXlCLFNBQVEsb0JBQW9CO0lBQ2hFLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFMRCw0REFLQztBQUVELE1BQWEsbUJBQW9CLFNBQVEsT0FBTztJQUM5QyxZQUFZLE9BQWU7UUFDekIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFMRCxrREFLQztBQUVELE1BQWEsUUFBUyxTQUFRLE9BQU87SUFDbkMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUxELDRCQUtDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxRQUFRO0lBQzlDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUxELGdEQUtDO0FBRUQsTUFBYSxnQkFBaUIsU0FBUSxRQUFRO0lBQzVDLFlBQVksVUFBa0I7UUFDNUIsS0FBSyxDQUFDLElBQUksVUFBVSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBTEQsNENBS0M7QUFFRCxNQUFhLGNBQWUsU0FBUSxRQUFRO0lBQzFDLFlBQVksT0FBZTtRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQUxELHdDQUtDIn0=
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- class RemoteTool {
4
- constructor(options) {
5
- this.base = options.tool;
6
- this.sourceId = options.sourceId;
7
- this.sourceType = options.sourceType;
8
- }
9
- get sanitizedName() {
10
- return this.sanitizeName(this.base.name);
11
- }
12
- sanitizeName(name) {
13
- // OpenAI function names must be alphanumeric and can contain underscores
14
- // This function replaces non-alphanumeric characters with underscores
15
- return name.replace(/[^a-zA-Z0-9_-]/g, '_');
16
- }
17
- }
18
- exports.default = RemoteTool;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3RlLXRvb2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVtb3RlLXRvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxNQUFxQixVQUFVO0lBSzdCLFlBQVksT0FJWDtRQUNDLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sWUFBWSxDQUFDLElBQVk7UUFDL0IseUVBQXlFO1FBQ3pFLHNFQUFzRTtRQUN0RSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBeEJELDZCQXdCQyJ9