@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.
- package/LICENSE +674 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/mcp-client.d.ts +3 -3
- package/dist/mcp-client.js +4 -8
- package/dist/provider-dispatcher.d.ts +32 -10
- package/dist/provider-dispatcher.js +71 -31
- package/dist/remote-tools.d.ts +2 -2
- package/dist/remote-tools.js +4 -5
- package/dist/router.d.ts +8 -11
- package/dist/router.js +34 -15
- package/dist/{errors.d.ts → types/errors.d.ts} +8 -1
- package/dist/types/errors.js +104 -0
- package/dist/{mcp-config-checker.d.ts → types/mcp-config-checker.d.ts} +1 -1
- package/dist/{mcp-config-checker.js → types/mcp-config-checker.js} +2 -2
- package/dist/types/mcp-server-remote-tool.d.ts +9 -0
- package/dist/types/mcp-server-remote-tool.js +13 -0
- package/dist/{remote-tool.d.ts → types/remote-tool.d.ts} +3 -5
- package/dist/types/remote-tool.js +16 -0
- package/dist/types/server-remote-tool.d.ts +9 -0
- package/dist/types/server-remote-tool.js +13 -0
- package/package.json +9 -8
- package/dist/errors.js +0 -86
- package/dist/remote-tool.js +0 -19
|
@@ -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
|
|
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:
|
|
5
|
+
sourceType: string;
|
|
7
6
|
constructor(options: {
|
|
8
7
|
tool: StructuredToolInterface<ToolType>;
|
|
9
8
|
sourceId?: string;
|
|
10
|
-
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
|
|
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": "
|
|
18
|
-
"@langchain/core": "1.1.
|
|
19
|
-
"@langchain/langgraph": "1.0
|
|
20
|
-
"@langchain/mcp-adapters": "1.
|
|
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.
|
|
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=
|
package/dist/remote-tool.js
DELETED
|
@@ -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
|